export type CouncilMode = 'vote' | 'debate' | 'arbiter';
export interface CouncilMember {
    model: string;
    /** Optional weight (1.0 default). Higher weight breaks ties first. */
    weight?: number;
}
export interface CouncilOptions {
    members: CouncilMember[];
    mode: CouncilMode;
    /** For debate / arbiter modes. */
    arbiter?: string;
    /** Per-member timeout. */
    perMemberTimeoutMs?: number;
}
export interface CouncilAnswer {
    model: string;
    text: string;
    latencyMs: number;
    error?: string;
}
export interface CouncilResult {
    mode: CouncilMode;
    answers: CouncilAnswer[];
    chosen: CouncilAnswer;
    rationale: string;
    arbiterText?: string;
}
export type Invoke = (model: string, prompt: string) => Promise<string>;
export declare function runCouncil(prompt: string, options: CouncilOptions, invoke: Invoke): Promise<CouncilResult>;
//# sourceMappingURL=modelCouncil.d.ts.map