/**
 * Type definitions for the Hierarchical Agent Orchestration System
 */
export interface OrchestratorResult {
    success: boolean;
    summary: string;
    findings?: {
        critical: Finding[];
        warnings: Finding[];
        info: Finding[];
    };
    suggestions?: Suggestion[];
    nextSteps?: string[];
    metadata?: {
        duration: number;
        agentsUsed: string[];
        confidence: number;
        [key: string]: any;
    };
}
export interface SubAgentProtocol {
    request: SubAgentRequest;
    response: SubAgentResponse;
}
export interface SubAgentRequest {
    task: string;
    context: any;
    constraints?: string[];
    expectedOutput?: string;
    timeout?: number;
    tools?: string[];
}
export interface SubAgentResponse {
    success: boolean;
    summary: string;
    data: any;
    nextSteps?: string[];
    subAgentCalls?: SubAgentCall[];
    tokensUsed?: number;
    duration?: number;
}
export interface SubAgentCall {
    agent: string;
    action: string;
    timestamp: number;
    duration: number;
    success: boolean;
}
export interface Finding {
    id: string;
    type: string;
    severity: 'critical' | 'warning' | 'info';
    title: string;
    description: string;
    location?: {
        file?: string;
        line?: number;
        column?: number;
        url?: string;
    };
    evidence?: any;
    impact?: string;
}
export interface Suggestion {
    id: string;
    title: string;
    description: string;
    priority: 'high' | 'medium' | 'low';
    effort: 'trivial' | 'small' | 'medium' | 'large';
    implementation?: string;
    automatable?: boolean;
}
export interface IOrchestrator {
    name: string;
    description: string;
    orchestrate(task: any): Promise<OrchestratorResult>;
}
export interface ISubAgent {
    name: string;
    capabilities: string[];
    tools: string[];
    execute(request: SubAgentRequest): Promise<SubAgentResponse>;
}
export interface HierarchicalAgentConfig {
    orchestrators: OrchestratorConfig[];
    subAgents: SubAgentConfig[];
    routing: RoutingConfig;
}
export interface OrchestratorConfig {
    name: string;
    description: string;
    subAgents: string[];
    maxConcurrency?: number;
    timeout?: number;
}
export interface SubAgentConfig {
    name: string;
    type: 'debug' | 'test' | 'performance' | 'architecture' | 'fix';
    tools: string[];
    capabilities: string[];
    maxTokens?: number;
}
export interface RoutingConfig {
    rules: RoutingRule[];
    defaultOrchestrator: string;
}
export interface RoutingRule {
    pattern: string | RegExp;
    orchestrator: string;
    priority: number;
}
//# sourceMappingURL=orchestrator-types.d.ts.map