import type { RunState, NextAction } from "../contracts/orchestration.js";
import type { GoalSpec, GoalEvidence, IntentFrame } from "../contracts/goal.js";
export interface DecisionCandidate {
    id: string;
    perspective: string;
    weight: number;
}
export interface EnsembleDecisionPolicy {
    enabled?: boolean;
    maxCandidates?: number;
    quorumRatio?: number;
    candidates?: DecisionCandidate[];
    extraVotes?: EnsembleDecisionCandidateVote[];
    intentFrame?: IntentFrame;
}
export interface EnsembleDecisionResult {
    action: NextAction;
    confidence: number;
    rationale: string;
    candidateVotes: Array<{
        id: string;
        action: NextAction;
        weight: number;
        reason: string;
    }>;
    shouldContinue: boolean;
    nextPrompt?: string;
    divergence?: boolean;
}
export interface EnsembleDecisionCandidateVote {
    id: string;
    action: NextAction;
    weight: number;
    reason: string;
}
export declare function buildEnsembleCandidates(intentFrame: IntentFrame | undefined, runState: RunState): DecisionCandidate[];
type CandidateVote = EnsembleDecisionCandidateVote;
export declare function detectEnsembleDivergence(votes: CandidateVote[]): boolean;
export declare function evaluateEnsembleDecision(goal: GoalSpec, runState: RunState, evidence: GoalEvidence[], policy?: EnsembleDecisionPolicy): EnsembleDecisionResult;
export {};
