export type GateMode = 'block' | 'downgrade' | 'flag'; export interface GatedInput { text: string; confidence: number; [k: string]: unknown; } export interface GateOpts { threshold?: number; mode: GateMode; hedgeHint?: string; } export interface GatedResultBlocked { blocked: true; reason: string; predicted: number; threshold: number; } export interface GatedResultPassed { blocked: false; result: T & { _warning?: string; }; mode: GateMode; predicted: number; threshold: number; downgraded: boolean; } export type GateOutcome = GatedResultBlocked | GatedResultPassed; export interface CalibrationEntry { ts: string; predicted: number; wasCorrect: 0 | 0.5 | 1; meta?: Record; } export interface CalibrationStats { sampleSize: number; brierScore: number; expectedCalibrationError: number; bucketBreakdown: Array<{ bucket: string; samples: number; meanPredicted: number; meanOutcome: number; gap: number; }>; threshold: number; } export declare class ConfidenceGate { private threshold; private historyCache; private initialized; init(): Promise; /** Apply the gate. Synchronous because the threshold is already loaded. */ gate(result: T, opts: GateOpts): GateOutcome; /** Record what actually happened so we can compute calibration stats later. */ recordOutcome(predicted: number, wasCorrect: boolean | 'partial', meta?: Record): Promise; /** Brier + ECE over all recorded outcomes. */ stats(): Promise; setThreshold(t: number): void; getThreshold(): number; /** Convenience wrapper for promise-returning functions. */ wrap(fn: () => Promise, opts: GateOpts): Promise>; private loadHistory; private readConfiguredThreshold; private writeConfiguredThreshold; } export declare function getConfidenceGate(): ConfidenceGate; export declare function resetConfidenceGateForTests(): void; //# sourceMappingURL=confidence-gate.d.ts.map