import type { TaskResult, TaskRunner } from "../contracts/orchestration.js";
export interface EnsembleCandidate {
    id: string;
    perspective: string;
    weight?: number;
    role?: string;
}
export interface EnsemblePolicy {
    enabled?: boolean;
    maxCandidatesPerNode?: number;
    maxParallel?: number;
    quorumRatio?: number;
    candidatesByRole?: Record<string, EnsembleCandidate[]>;
}
export interface EnsembleCandidateResult {
    candidate: EnsembleCandidate;
    result: TaskResult;
    score: number;
    worktree?: string;
}
export declare function createEnsembleTaskRunner(baseRunner: TaskRunner, policy?: EnsemblePolicy): TaskRunner;
export declare function selectCandidates(role: string, policy: Required<EnsemblePolicy>): EnsembleCandidate[];
