export interface AgentCapability {
    agentName: string;
    runner: string;
    capabilities: string[];
    maxConcurrentTasks: number;
    currentLoad: number;
    estimatedCompletionTime?: number;
}
export interface SwarmTask {
    id: string;
    type: string;
    prompt: string;
    priority: number;
    estimatedDuration?: number;
    requiresCapabilities: string[];
    agentName?: string;
    model?: string;
    path?: string;
}
export interface SwarmConfig {
    agents: AgentCapability[];
    tasks: SwarmTask[];
    maxParallelTasks: number;
    enableLoadBalancing: boolean;
    enableTaskPriority: boolean;
}
export interface SwarmAllocation {
    taskId: string;
    agentName: string;
    runner: string;
    estimatedStart: number;
    estimatedCompletion: number;
}
export interface SwarmResult {
    taskId: string;
    status: 'pending' | 'assigned' | 'running' | 'completed' | 'failed';
    agentName?: string;
    result?: unknown;
    error?: string;
    startedAt?: number;
    completedAt?: number;
}
export declare class SwarmOrchestrator {
    private agents;
    private taskQueue;
    private allocations;
    private results;
    private maxParallelTasks;
    private enableLoadBalancing;
    private enableTaskPriority;
    private roundRobinIndex;
    constructor(config: SwarmConfig);
    private findBestAgent;
    private canAgentHandleTask;
    private selectByLoadBalancing;
    private selectByRoundRobin;
    private calculateAgentScore;
    allocateTasks(): Promise<SwarmAllocation[]>;
    executeTask(task: SwarmTask, allocation: SwarmAllocation): Promise<SwarmResult>;
    getTaskStatus(taskId: string): SwarmResult | undefined;
    getAllResults(): SwarmResult[];
    getPendingTasks(): SwarmTask[];
    getAgentStatus(agentName: string): AgentCapability | undefined;
    getAllAgents(): AgentCapability[];
    getStatistics(): {
        totalTasks: number;
        completed: number;
        failed: number;
        running: number;
        pending: number;
        totalAgents: number;
        averageLoad: number;
    };
}
export declare function createSwarmOrchestrator(config: SwarmConfig): SwarmOrchestrator;
//# sourceMappingURL=swarm.d.ts.map