/**
 * Verdict — turn a finished report into a one-line ship/no-ship recommendation.
 *
 * Why this exists
 * ---------------
 * v0.21 makes the data trustworthy.  closes the last mile: senior
 * engineers' #1 complaint is "the report has all the right numbers but I
 * still need 30 minutes to read it before I can decide". This module
 * aggregates the four data sources omk already produces — Bootstrap CI on
 * the pairwise diff, three-layer CI gate, saturation curve, and (when
 * available) Krippendorff α against gold — and emits one of four verdicts:
 *
 *  - **PROGRESS**     diff CI shows real positive shift, no layer regressed
 *  - **CAUTIOUS**     positive shift but at least one layer broke its gate,
 *                     or saturation says we're not powered yet
 *  - **REGRESS**      diff CI clearly negative, or a layer dropped a gate
 *  - **NOISE**        diff CI contains 0 — can't separate from noise
 *  - **UNDERPOWERED** N too small / saturation low confidence and no signal
 *  - **SOLO**         single-variant report; nothing to compare against
 *
 * The output is intentionally text-template-driven so the same rule engine
 * powers both `omk eval` (CLI, terse) and the HTML report's
 * top-of-page "verdict pill" ("verdict pill" surface). Both surfaces must agree.
 *
 * Subjectivity caveat: the ship recommendation is rule-based, not statistically
 * proven optimal. Each rule's source (NIST AI 800-3 / Krippendorff thresholds /
 * empirical) is documented inline so users can audit and override.
 */
import type { Report } from '../types/index.js';
export type VerdictLevel = 'PROGRESS' | 'CAUTIOUS' | 'REGRESS' | 'NOISE' | 'UNDERPOWERED' | 'SOLO';
export interface VerdictResult {
    level: VerdictLevel;
    /** One-line headline shown in CLI / pill. */
    headline: string;
    /** Per-pair verdict if multi-treatment; same shape as level for each. */
    perPair?: Array<{
        control: string;
        treatment: string;
        level: VerdictLevel;
        headline: string;
    }>;
    /** Detail bullets shown by `omk eval` verbose output. */
    rationale: {
        significance?: string;
        layerWinners?: string;
        sampleSize?: string;
        /** Stability claim:CV / variance summary if --repeat ≥ 2, 否则显式说"未测量"
         *  让用户感受到 single-run 的盲区,而不是默默不提。 */
        stability?: string;
        judgeAgreement?: string;
        shipRecommendation?: string;
    };
    /** Variants present in the report (best-vs-control framing). */
    variants: string[];
}
export interface VerdictOptions {
    /** Three-layer ci-gate threshold; defaults to 3.5 (matches `omk eval`). */
    gateThreshold?: number;
    /**
     * Magnitude (in raw score points) below which a "significant" diff is treated
     * as practically negligible (statistically real but too small to matter).
     * Defaults to 0.1 — about 2% of the 1-5 scale, the floor of practical signal.
     */
    triviallySmallDiff?: number;
}
/**
 * Compute a verdict for a finished report. Pure function — no I/O.
 */
export declare function computeVerdict(report: Report, options?: VerdictOptions): VerdictResult;
/**
 * Plain-text formatter for the `omk eval` verdict. Stays under 6 lines per the
 *  spec — one verdict + four rationale bullets + one ship recommendation.
 */
export declare function formatVerdictText(result: VerdictResult, options?: {
    verbose?: boolean;
}): string;
//# sourceMappingURL=verdict.d.ts.map