/**
 * time-claim.ts — deterministic detector for elapsed/remaining/percent time
 * claims that contradict the live session clock of the sending topic's active
 * time-boxed (autonomous) session.
 *
 * Founding incident (2026-06-12, topic 13481): an autonomous progress report
 * claimed "~7h elapsed / 24h total" when the run's real clock read 1h 35m —
 * the operator mandated structurally-enforced accurate time reporting
 * ("MANDATE accurate time reporting and NOT allow guessing"). The session
 * clock API exists precisely so no time is ever estimated
 * (docs/specs/ROBUST-SESSION-TIME-AWARENESS-SPEC.md); this detector closes the
 * loop on the OUTBOUND side: a report that contradicts the clock is flagged
 * BEFORE it reaches the user.
 *
 * Pure + total (no I/O, no LLM): the caller passes the already-computed
 * clock(s); every malformed input degrades to "not detected" (fail-open, the
 * advisory layer's contract). Signal-only — it feeds the inform-only outbound
 * advisory surface (src/messaging/OutboundAdvisory.ts) and never blocks.
 *
 * Deliberately CONSERVATIVE extraction: only claims with an explicit
 * elapsed/remaining/percent anchor are parsed ("7h elapsed", "7.5 hours in:",
 * "2h 40m left", "8% elapsed"). Unanchored durations ("the test took 3h",
 * "in 2 hours I'll check") are never matched — a missed claim is an accepted
 * under-block; a false fire on conversational text is the failure mode this
 * conservatism exists to avoid.
 */
/** The clock fields the detector compares against (subset of SessionClock). */
export interface TimeClaimClock {
    elapsedSeconds: number;
    /** null for an unbounded run — remaining/percent claims are then skipped. */
    remainingSeconds: number | null;
    /** null for an unbounded run. */
    percentElapsed: number | null;
}
export interface TimeClaimResult {
    detected: boolean;
    /** Bounded inert summary: `claimed <X>; live clock: <Y>` (≤120 chars). */
    match?: string;
}
interface ExtractedClaim {
    kind: 'elapsed' | 'remaining' | 'percent';
    /** Claimed value in seconds (elapsed/remaining) or percent points. */
    value: number;
    /** The matched claim text, for the inert match summary. */
    text: string;
}
/** Extract every anchored time claim from `text` (bounded input expected). */
export declare function extractTimeClaims(text: string): ExtractedClaim[];
/**
 * Compare every anchored claim in `text` against the active clock(s).
 * A claim passes if it is consistent with ANY provided clock (lenient by
 * design — multiple active clocks for a topic should not cross-fire).
 * No clocks → never detected (nothing to contradict).
 */
export declare function detectTimeClaimContradiction(text: string, clocks: ReadonlyArray<TimeClaimClock>): TimeClaimResult;
export {};
//# sourceMappingURL=time-claim.d.ts.map