import type { Message, GrawkusConfig } from './types.js';
export interface SubAgent {
    id: string;
    name: string;
    model: string;
    task: string;
    status: 'pending' | 'running' | 'done' | 'error';
    result?: string;
    startedAt?: number;
    finishedAt?: number;
    tokenCount?: number;
}
export interface OrchestrationPlan {
    mainTask: string;
    agents: SubAgent[];
    strategy: 'parallel' | 'sequential' | 'cascade';
}
declare function createSubAgent(name: string, task: string, model: string): SubAgent;
/**
 * Run multiple sub-agents in parallel.
 */
export declare function runParallel(agents: SubAgent[], config: GrawkusConfig, contextMessages: Message[]): Promise<SubAgent[]>;
/**
 * Run sub-agents sequentially, each seeing prior results.
 */
export declare function runSequential(agents: SubAgent[], config: GrawkusConfig, contextMessages: Message[]): Promise<SubAgent[]>;
/**
 * Cascade: run fast model first, escalate to powerful if needed.
 */
export declare function runCascade(task: string, config: GrawkusConfig, contextMessages: Message[], fastModel: string, powerModel: string): Promise<SubAgent[]>;
/**
 * Build an orchestration prompt for the AI to decompose a task.
 */
export declare function buildOrchestrationPrompt(task: string): string;
export declare function mergeResults(agents: SubAgent[]): string;
export declare function printOrchestrationStatus(agents: SubAgent[]): void;
export { createSubAgent };
