/**
 * Orchestrator Agent
 *
 * The central coordinator that plans, delegates, and manages the multi-agent workflow.
 * Responsible for:
 * - Breaking down complex tasks into subtasks
 * - Assigning tasks to appropriate specialist agents
 * - Monitoring progress and handling failures
 * - Synthesizing results from multiple agents
 */
import { CodeBuddyTool } from "../../../codebuddy/client.js";
import { BaseAgent } from "../base-agent.js";
import { AgentTask, ExecutionPlan, PlanPhase, SharedContext, AgentExecutionResult, ToolExecutor } from "../types.js";
export declare class OrchestratorAgent extends BaseAgent {
    private executionPlan;
    constructor(apiKey: string, baseURL?: string);
    getSpecializedPrompt(): string;
    /**
     * Create an execution plan for a given goal
     */
    createPlan(goal: string, context: SharedContext, tools: CodeBuddyTool[], executeTool: ToolExecutor): Promise<ExecutionPlan>;
    /**
     * Parse execution plan from agent output
     */
    private parsePlan;
    /**
     * Get the next tasks to execute based on dependencies
     */
    getNextTasks(plan: ExecutionPlan): AgentTask[];
    /**
     * Update task status in the plan
     */
    updateTaskStatus(plan: ExecutionPlan, taskId: string, status: AgentTask["status"], result?: AgentExecutionResult): void;
    /**
     * Check if all tasks in a phase are complete
     */
    isPhaseComplete(phase: PlanPhase): boolean;
    /**
     * Check if the entire plan is complete
     */
    isPlanComplete(plan: ExecutionPlan): boolean;
    /**
     * Synthesize results from all agents into a final summary
     */
    synthesizeResults(plan: ExecutionPlan, results: Map<string, AgentExecutionResult>, context: SharedContext, tools: CodeBuddyTool[], executeTool: ToolExecutor): Promise<string>;
    /**
     * Handle task failure and determine recovery strategy
     */
    determineRecoveryStrategy(task: AgentTask, error: string): "retry" | "delegate" | "skip" | "abort";
    /**
     * Get current execution plan
     */
    getExecutionPlan(): ExecutionPlan | null;
}
export declare function createOrchestratorAgent(apiKey: string, baseURL?: string): OrchestratorAgent;
