/**
 * CorrectionAnalyzer — the recurrence layer (spec §3.5).
 *
 * Deterministic core: for each open correction record, decides whether it
 * crosses the THREE-PRONGED AND recurrence gate:
 *
 *   minSupport         AND
 *   minDistinctDays    AND   (restart-proof — calendar days, NOT sessions)
 *   second orthogonal prong:
 *     - user-preference → minDistinctTopics ≥ 2
 *     - infra-gap       → cross-agent Rising Tide consensus (delegated to the
 *                         existing /feedback clustering — single-agent never
 *                         auto-propagates to the fleet; that is the second
 *                         consensus layer)
 *
 * Code-determined provenance filter (poison resistance, spec §3.5): a record
 * counts toward the gate ONLY when its qualifying occurrences (those with
 * deterministicWeight ≥ DETERMINISTIC_THRESHOLD) satisfy the prongs.
 * `llm_confidence` is ADVISORY and never alone admits a record — the gate keys
 * on a CODE-determined field an injected prompt cannot steer.
 *
 * Signal-only: this module decides gate-crossing + returns the verdicts. It does
 * NOT route, write preferences, POST feedback, or mutate authority — that is the
 * CorrectionLoopDriver's job (which is itself by-construction authority-bounded).
 */
import type { CorrectionLedger, CorrectionRecord } from './CorrectionLedger.js';
export interface CorrectionGates {
    minSupport: number;
    minDistinctDaysInfraGap: number;
    minDistinctDaysPreference: number;
    minDistinctTopicsPreference: number;
    /** Only consider records within this many days (0/undefined = all). */
    windowDays?: number;
    /** Layer-0 weight a record's occurrences must reach to COUNT toward the gate. */
    deterministicThreshold?: number;
}
export declare const DEFAULT_CORRECTION_GATES: CorrectionGates;
/** Per-record gate verdict — the analyzer's output. */
export interface GateVerdict {
    record: CorrectionRecord;
    crosses: boolean;
    /** Why it did/didn't cross — for audit + the Tier-1 supervisor. */
    reason: string;
    qualifyingOccurrences: number;
    distinctDays: number;
    distinctTopics: number;
}
export interface CorrectionAnalyzeResult {
    verdicts: GateVerdict[];
    crossed: GateVerdict[];
    considered: number;
    belowThreshold: number;
}
export declare class CorrectionAnalyzer {
    private readonly ledger;
    private readonly gates;
    constructor(ledger: CorrectionLedger, gates?: CorrectionGates);
    /**
     * Evaluate the recurrence gate against every `open` record. Returns a verdict
     * per record. Pure read — never mutates the ledger (the driver acts on these).
     * `noise`-kind records are never gate-considered.
     */
    analyze(): CorrectionAnalyzeResult;
}
//# sourceMappingURL=CorrectionAnalyzer.d.ts.map