/**
 * ADR-PIPELINE-071: Consensus Tier Classifier
 *
 * Classifies an engagement's analytical consensus into one of three tiers:
 *
 *   - aligned     — agreement ≥70% AND precision ≥70% → footnote OK
 *   - directional — partial agreement (40–69 / 50–69) → opening-paragraph
 *                   acknowledgement + ranges instead of point estimates
 *   - contested   — agreement <40 AND precision <50    → headline-level
 *                   treatment, drives document structure, "Why we are not
 *                   more confident" section, Week-4 consensus gate, etc.
 *
 * Pure functions over a `ConsensusSnapshot`. The snapshot is populated from
 * agent results by `populateConsensusSnapshot`.
 */
import type { AgentResult } from './simulation-renderers.js';
export type ConsensusTier = 'aligned' | 'directional' | 'contested';
export type ConsensusDimension = 'financial' | 'operational' | 'compliance' | 'workforce' | 'technical';
export interface DissentingAgent {
    readonly domain: string;
    readonly agent: string;
    readonly dimension: ConsensusDimension;
    readonly summary: string;
}
export interface ConsensusSnapshot {
    /** Cross-agent agreement level, 0–100. */
    readonly agreementLevelPct: number;
    /** Precision confidence — how tight the magnitude estimate is, 0–100. */
    readonly precisionConfidencePct: number;
    /** Directional confidence — how confident the answer is, 0–100. */
    readonly directionalConfidencePct: number;
    /** Tier derived from the two confidence numbers. */
    readonly tier: ConsensusTier;
    readonly dissentingAgents: readonly DissentingAgent[];
    /** Top-3 variables the result depends on most. */
    readonly loadBearingAssumptions: readonly string[];
    /** Per-dimension agreement breakdown (0..1). Used by the SVG generator. */
    readonly perDimension: Readonly<Record<ConsensusDimension, number>>;
}
/**
 * ADR-PIPELINE-071 §1: tier thresholds.
 *
 * The classifier intentionally biases toward `contested` for ambiguous cases —
 * a low-consensus run rendered as if it were aligned is the failure mode the
 * ADR is trying to eliminate.
 */
export declare function classifyConsensus(agreementLevelPct: number, precisionConfidencePct: number): ConsensusTier;
interface ConsensusInputs {
    readonly agreementLevelPct?: number;
    readonly precisionConfidencePct?: number;
    readonly directionalConfidencePct?: number;
    readonly dissentingAgents?: readonly DissentingAgent[];
    readonly loadBearingAssumptions?: readonly string[];
    readonly perDimension?: Partial<Record<ConsensusDimension, number>>;
}
/**
 * Build a ConsensusSnapshot from explicit inputs. All fields default to a
 * conservative middle-ground when omitted, except `tier` which is always
 * recomputed from the two confidence numbers.
 */
export declare function buildConsensusSnapshot(inputs?: ConsensusInputs): ConsensusSnapshot;
/**
 * ADR-PIPELINE-071 §3: populate the snapshot from raw agent results.
 *
 * Reads:
 *   - `analytics-hub/consensus`     → agreement, precision, dissenting agents
 *   - `simulator/enterprise`        → success_probability fallback for direction
 *   - all `*` agent error responses → dissent dimension
 *
 * Returns a snapshot that's safe for renderers to consume — never throws.
 */
export declare function populateConsensusSnapshot(simulationResult: unknown, platformResults: readonly AgentResult[]): ConsensusSnapshot;
/** Used by renderers as a top-of-document banner. */
export declare function consensusBanner(snapshot: ConsensusSnapshot): string | null;
/** Required opening paragraph for the executive summary on directional / contested tiers. */
export declare function consensusOpeningParagraph(snapshot: ConsensusSnapshot): string | null;
/** "Why we are not more confident" section body for the decision memo. */
export declare function whyNotMoreConfidentSection(snapshot: ConsensusSnapshot): string[];
/** Week-4 consensus gate for the roadmap on contested runs. */
export declare function consensusGate(snapshot: ConsensusSnapshot): {
    readonly week: number;
    readonly threshold_pct: number;
    readonly default_action: 'STOP' | 'PROCEED';
    readonly description: string;
} | null;
/**
 * Risk-register row injected on contested runs so analytical uncertainty is
 * a named, owned risk rather than a tone-of-voice.
 */
export declare function analyticalUncertaintyRisk(snapshot: ConsensusSnapshot): {
    readonly risk: string;
    readonly category: 'Analytical';
    readonly likelihood: 'High';
    readonly impact: 'High';
    readonly score: number;
    readonly mitigation: string;
} | null;
export {};
//# sourceMappingURL=consensus-tiers.d.ts.map