/**
 * Council Decision System -- 4-voice adversarial review for high-stakes decisions.
 *
 * Each voice runs independently (anti-anchoring) and produces a verdict.
 * Verdicts are merged: 4 APPROVE = proceed, any REJECT = escalate to human.
 *
 * Voices:
 *   Architect  - Long-term design, scalability, maintainability
 *   Skeptic    - Questions assumptions, finds failure modes, identifies risk
 *   Pragmatist - Time-to-value, simplicity, "good enough" solutions
 *   Critic     - Code quality, security, edge cases, testing gaps
 *
 * @connexum/ai-governance
 */
export type VoiceName = 'architect' | 'skeptic' | 'pragmatist' | 'critic';
export type Verdict = 'APPROVE' | 'REJECT' | 'CONDITIONAL';
export interface VoiceOpinion {
    voice: VoiceName;
    verdict: Verdict;
    reasoning: string;
    conditions?: string[];
    risks?: string[];
    timestamp: string;
}
export interface CouncilDecision {
    id: string;
    proposal: string;
    category: string;
    requestedBy: string;
    opinions: VoiceOpinion[];
    finalVerdict: Verdict | 'ESCALATE';
    conditions: string[];
    risks: string[];
    timestamp: string;
    durationMs: number;
}
export interface CouncilConfig {
    /** Directory for council deliberation logs */
    logDir: string;
    /** Require unanimous APPROVE (default: true) */
    requireUnanimous?: boolean;
    /** Minimum APPROVE votes to proceed when not unanimous (default: 3) */
    minApproveVotes?: number;
}
export interface DecisionCategory {
    name: string;
    description: string;
    triggers: string[];
}
export declare class Council {
    private config;
    private logDir;
    constructor(config: CouncilConfig);
    /**
     * Submit a proposal for council deliberation.
     * Returns the structure for collecting opinions.
     * In production, each voice would run in a separate LLM context.
     */
    createDeliberation(proposal: string, requestedBy: string, category?: string): {
        id: string;
        category: string;
        voicePrompts: Record<VoiceName, string>;
    };
    /**
     * Record a voice's opinion.
     */
    recordOpinion(deliberationId: string, opinion: VoiceOpinion): void;
    /**
     * Parse a voice response into a structured opinion.
     */
    static parseVoiceResponse(voice: VoiceName, response: string): VoiceOpinion;
    /**
     * Merge all opinions into a final decision.
     */
    mergeDecision(deliberationId: string, proposal: string, requestedBy: string, opinions: VoiceOpinion[], startTime: number): CouncilDecision;
    /**
     * Check if a proposal should trigger council review.
     */
    shouldReview(proposal: string): {
        shouldReview: boolean;
        category: string;
        reason: string;
    };
    /**
     * Get all past decisions.
     */
    getHistory(limit?: number): CouncilDecision[];
    /**
     * Get voice prompt templates (for customization).
     */
    static getVoicePrompts(): Record<VoiceName, string>;
    /**
     * Get decision categories.
     */
    static getCategories(): DecisionCategory[];
    private detectCategory;
    private saveLog;
}
//# sourceMappingURL=council.d.ts.map