import { type DeepInterviewStateEnvelope } from "./deep-interview-state"; export interface AmbiguityFloorBreakdown { floor: number; disputed_fact_count: number; unscored_active_component_count: number; auto_answer_ratio: number; } export interface AmbiguityClampResult { effective: number; clamped: boolean; } /** Compute the deterministic floor from the inner deep-interview `state` object. */ export declare function computeAmbiguityFloor(inner: unknown): AmbiguityFloorBreakdown; /** Clamp an LLM-reported ambiguity to the deterministic floor: `max(reported, floor)`. */ export declare function clampReportedAmbiguity(reported: number, floor: number): AmbiguityClampResult; /** * Mark every established fact recorded in `retractedRound` as disputed. This is the * mechanical contradiction signal for answer retraction: when the user replaces an * already-scored answer (A -> B pivot), the facts that answer established can no * longer be trusted, so they raise the floor until re-confirmed or superseded. * Returns new arrays/objects; never mutates the input. */ export declare function disputeFactsFromRetractedRound(facts: readonly unknown[], retractedRound: number): { facts: Record[]; disputedIds: string[]; }; export interface AppliedAmbiguityFloor { envelope: DeepInterviewStateEnvelope; breakdown: AmbiguityFloorBreakdown; clamped: boolean; } /** * Enforce the floor invariant on a full deep-interview envelope: recompute the floor * from persisted evidence, clamp `state.current_ambiguity`, and clamp the latest * scored round (preserving the original value as `reported_ambiguity` for audit). * Historical rounds are never rewritten. Idempotent and non-mutating; every writer * (state CLI write/reconcile, recorder) applies this immediately before persisting. */ export declare function applyAmbiguityFloorToEnvelope(value: unknown): AppliedAmbiguityFloor;