/** A single task's freshness relative to the reference `now`. */ export interface TaskFreshness { /** The task id (e.g. `T1`) as recorded in `PROGRESS.json`. */ taskId: string; /** The task's raw `updatedAt` ISO timestamp, unmodified. */ updatedAt: string; /** `now - updatedAt` in milliseconds. Negative if `updatedAt` is in the future (clock skew). */ ageMs: number; } export interface FreshnessResult { /** True when the freshest task's age is within `thresholdMs` (inclusive). */ isFresh: boolean; /** * The least-stale task among all parseable entries, regardless of whether it * is within the threshold — `null` only when `tasks` is empty or every * `updatedAt` is unparseable. Callers decide what to do with a non-fresh * `freshest`; this function only reports facts. */ freshest: TaskFreshness | null; } /** * Assess whether any task in `tasks` (task id → `updatedAt` ISO string) was * touched within `thresholdMs` of `now`. Entries with an unparseable * `updatedAt` are skipped rather than corrupting the result — this is a pure * fact-reporting function, not a validator, so it degrades quietly rather * than throwing on bad input. */ export declare function assessProgressFreshness(tasks: Readonly>, now: Date, thresholdMs: number): FreshnessResult; //# sourceMappingURL=liveness.d.ts.map