import { IAgent } from '../../agents/IAgent.js';
import { CoordinationStrategy } from '../CoordinationStrategy.js';
/**
 * Implements a parallel strategy for agent coordination.
 * All agents process the input simultaneously.
 */
export declare class ParallelStrategy implements CoordinationStrategy {
    private pendingAgents;
    private completionFunction;
    /**
     * Create a new ParallelStrategy
     */
    constructor();
    /**
     * Get the next agent in the parallel execution.
     * For parallel strategy, this returns each agent once until all have been returned.
     *
     * @param agents - Array of available agents
     * @param currentAgentId - ID of the currently active agent (if any)
     * @param outputs - Map of agent IDs to their outputs so far
     * @param isDone - Optional function to check if an agent's output indicates completion
     * @returns The next agent to run, or null if all agents have been processed
     */
    nextAgent(agents: IAgent[], currentAgentId: string | null, outputs: Map<string, string[]>, isDone?: (output: string) => boolean): IAgent | null;
    /**
     * Combine the outputs from multiple agents into a final result.
     * For parallel strategy, we merge all the outputs.
     *
     * @param outputs - Map of agent IDs to their outputs
     * @returns The combined output
     */
    combine(outputs: Map<string, string[]>): string;
    /**
     * Check whether the orchestration is complete based on the current state.
     * For parallel strategy, we're done when:
     * 1. Any agent's output satisfies the completion function, if provided
     * 2. All agents have been processed (pendingAgents is empty)
     *
     * @param agents - Array of available agents
     * @param outputs - Map of agent IDs to their outputs so far
     * @returns True if orchestration should be considered complete, false otherwise
     */
    isDone(agents: IAgent[], outputs: Map<string, string[]>): boolean;
}
//# sourceMappingURL=ParallelStrategy.d.ts.map