import { ViewContainerRef } from '@angular/core';
import { DialogService, WindowService } from '@progress/kendo-angular-dialog';
import { Observable } from 'rxjs';
import { ActionEntity, AIAgentEntityExtended, AIAgentPromptEntity, AIPromptEntityExtended } from '@memberjunction/core-entities';
import { PromptSelectorResult } from './prompt-selector-dialog.component';
import { AgentPromptAdvancedSettingsFormData } from './agent-prompt-advanced-settings-dialog.component';
import { SubAgentAdvancedSettingsFormData } from './sub-agent-advanced-settings-dialog.component';
import { SubAgentSelectorResult } from './sub-agent-selector-dialog.component';
import { CreatePromptResult } from './create-prompt-dialog.component';
import { CreateSubAgentResult } from './create-sub-agent-dialog.component';
import * as i0 from "@angular/core";
/**
 * Consolidated service for managing AI Agent operations including:
 * - Adding/removing actions
 * - Advanced settings configuration
 * - Agent creation (future)
 * - Agent editing operations
 *
 * This service centralizes all agent-related dialog and management functionality
 * to provide a consistent interface for both editing existing agents and creating new ones.
 */
export declare class AIAgentManagementService {
    private dialogService;
    private windowService;
    constructor(dialogService: DialogService, windowService: WindowService);
    /**
     * Opens the Add Action dialog for selecting actions to link to an agent
     *
     * @param config Configuration for the action selection dialog
     * @returns Observable that emits the selected actions when dialog is closed
     */
    openAddActionDialog(config: {
        agentId: string;
        agentName: string;
        existingActionIds: string[];
        viewContainerRef?: ViewContainerRef;
    }): Observable<ActionEntity[]>;
    /**
     * Opens the prompt selector dialog for selecting general prompts to add to an agent
     *
     * @param config Configuration for the prompt selection dialog
     * @returns Observable that emits the selected prompts when dialog is closed
     */
    openPromptSelectorDialog(config: {
        title?: string;
        multiSelect?: boolean;
        selectedPromptIds?: string[];
        showCreateNew?: boolean;
        extraFilter?: string;
        linkedPromptIds?: string[];
        viewContainerRef?: ViewContainerRef;
    }): Observable<PromptSelectorResult | null>;
    /**
     * Opens the prompt selector for selecting a context compression prompt (single select)
     *
     * @param config Configuration for the context compression prompt selection
     * @returns Observable that emits the selected prompt when dialog is closed
     */
    openContextCompressionPromptSelector(config: {
        currentPromptId?: string;
        viewContainerRef?: ViewContainerRef;
    }): Observable<AIPromptEntityExtended | null>;
    /**
     * Opens the sub-agent selector dialog for selecting agents to convert to sub-agents
     *
     * @param config Configuration for the sub-agent selection dialog
     * @returns Observable that emits the selected agents when dialog is closed
     */
    openSubAgentSelectorDialog(config: {
        title?: string;
        multiSelect?: boolean;
        selectedAgentIds?: string[];
        showCreateNew?: boolean;
        parentAgentId: string;
        viewContainerRef?: ViewContainerRef;
    }): Observable<SubAgentSelectorResult | null>;
    /**
     * Opens the advanced settings dialog for an AI Agent Prompt
     *
     * @param config Configuration for the agent prompt advanced settings dialog
     * @returns Observable that emits the form data when dialog is closed, or null if cancelled
     */
    openAgentPromptAdvancedSettingsDialog(config: {
        agentPrompt: AIAgentPromptEntity;
        allAgentPrompts: AIAgentPromptEntity[];
        viewContainerRef?: ViewContainerRef;
    }): Observable<AgentPromptAdvancedSettingsFormData | null>;
    /**
     * Opens the advanced settings dialog for a Sub-Agent
     *
     * @param config Configuration for the sub-agent advanced settings dialog
     * @returns Observable that emits the form data when dialog is closed, or null if cancelled
     */
    openSubAgentAdvancedSettingsDialog(config: {
        subAgent: AIAgentEntityExtended;
        allSubAgents: AIAgentEntityExtended[];
        viewContainerRef?: ViewContainerRef;
    }): Observable<SubAgentAdvancedSettingsFormData | null>;
    /**
     * Opens the create prompt dialog for creating new prompts from within the AI Agent form
     * Returns the created entities (not saved to database) for parent to add to PendingRecords
     *
     * @param config Configuration for prompt creation
     * @returns Observable that emits the created prompt and related entities when dialog is closed
     */
    openCreatePromptDialog(config: {
        title?: string;
        initialName?: string;
        initialTypeID?: string;
        viewContainerRef?: ViewContainerRef;
    }): Observable<CreatePromptResult | null>;
    /**
     * Opens the create sub-agent dialog for creating new sub-agents from within the AI Agent form
     * Returns the created entities (not saved to database) for parent to add to PendingRecords
     *
     * @param config Configuration for sub-agent creation
     * @returns Observable that emits the created sub-agent and related entities when dialog is closed
     */
    openCreateSubAgentDialog(config: {
        title?: string;
        initialName?: string;
        initialTypeID?: string;
        parentAgentId: string;
        parentAgentName?: string;
        viewContainerRef?: ViewContainerRef;
    }): Observable<CreateSubAgentResult | null>;
    /**
     * Opens the agent creation dialog (to be implemented)
     * This will reuse existing components and provide a streamlined agent creation experience
     *
     * @param config Configuration for agent creation
     * @returns Observable that emits the created agent when dialog is closed
     */
    openCreateAgentDialog(config: {
        parentAgentId?: string;
        initialData?: Partial<AIAgentEntityExtended>;
        viewContainerRef?: ViewContainerRef;
    }): Observable<AIAgentEntityExtended | null>;
    /**
     * Validates agent configuration and relationships
     * Used by both creation and editing workflows
     */
    validateAgentConfiguration(agent: AIAgentEntityExtended): {
        isValid: boolean;
        errors: string[];
    };
    /**
     * Future method for managing sub-agent relationships
     * This will handle ParentID, ExecutionOrder, and ExecutionMode
     * in the context of the parent agent's sub-agents section
     */
    openSubAgentManagementDialog(config: {
        parentAgent: AIAgentEntityExtended;
        subAgent?: AIAgentEntityExtended;
        viewContainerRef?: ViewContainerRef;
    }): Observable<any>;
    static ɵfac: i0.ɵɵFactoryDeclaration<AIAgentManagementService, never>;
    static ɵprov: i0.ɵɵInjectableDeclaration<AIAgentManagementService>;
}
//# sourceMappingURL=ai-agent-management.service.d.ts.map