/**
 * Supervisor Agent
 *
 * Coordinates multiple sub-agents in parallel, with multiple execution strategies.
 */
import { EventEmitter } from 'events';
export type MergeStrategy = 'sequential' | 'parallel' | 'race' | 'all';
export interface OrchestrationPlan {
    mainGoal: string;
    subAgents: SubAgentTask[];
    mergeStrategy: MergeStrategy;
}
export interface SubAgentTask {
    id: string;
    agent: string;
    task: string;
    dependencies: string[];
    timeout?: number;
}
export interface OrchestrationResult {
    success: boolean;
    results: Map<string, SubAgentResult>;
    strategy: MergeStrategy;
    totalDuration: number;
    mergedOutput: string;
}
export interface SubAgentResult {
    success: boolean;
    output: string;
    duration: number;
    error?: string;
}
export declare class SupervisorAgent extends EventEmitter {
    private executor;
    /**
     * Set the sub-agent executor function
     */
    setExecutor(exec: (agent: string, task: string, context: string) => Promise<SubAgentResult>): void;
    /**
     * Orchestrate a plan
     */
    orchestrate(plan: OrchestrationPlan): Promise<OrchestrationResult>;
    /**
     * Execute tasks sequentially
     */
    private executeSequential;
    /**
     * Execute tasks in parallel (respecting dependencies)
     */
    private executeParallel;
    /**
     * Race: first successful result wins
     */
    private executeRace;
    /**
     * All: execute all regardless of failures
     */
    private executeAll;
    /**
     * Execute a single task
     */
    private executeTask;
    /**
     * Merge results into a single output
     */
    private mergeResults;
}
