import type { Tool } from '../types';
import type { IChatClient } from '../core/chatClient';
export type AgentRole = 'planner' | 'researcher' | 'coder' | 'debugger' | 'reviewer' | 'critic' | 'summariser' | 'tool_executor' | 'service_operator' | 'safety_checker' | 'context_compressor';
export interface AgentBudget {
    maxTurns: number;
    maxTimeMs: number;
}
export interface WorkstreamTask {
    id: string;
    role: AgentRole;
    prompt: string;
    /** Override budget for this task. */
    budget?: Partial<AgentBudget>;
    /** Dependencies: task ids that must complete first. */
    dependsOn?: string[];
}
export interface WorkstreamResult {
    id: string;
    role: AgentRole;
    output: string;
    success: boolean;
    duration_ms: number;
    error?: string;
}
export interface OrchestrationResult {
    results: WorkstreamResult[];
    merged_output?: string;
    total_duration_ms: number;
    tasks_succeeded: number;
    tasks_failed: number;
}
export declare function getAgentRoleDefaults(role: AgentRole): {
    systemPrompt: string;
    budget: AgentBudget;
};
/**
 * Execute multiple subagent tasks with dependency ordering and parallelism.
 * Tasks with no dependencies run in parallel. Tasks with dependencies wait
 * for their prerequisites to complete.
 */
export declare function orchestrate(tasks: WorkstreamTask[], parentClient: IChatClient, availableTools: Tool[], projectDir?: string): Promise<OrchestrationResult>;
/** Merge outputs from multiple workstream results into a single summary. */
export declare function mergeResults(results: WorkstreamResult[]): string;
//# sourceMappingURL=orchestrator.d.ts.map