/** Content digest of a value (canonical, order-independent). */ export declare function digest(v: unknown): string; export interface RecordedRun { id: string; inputs: unknown; outputDigest: string; recordedAt?: number; } /** Re-executable unit: given inputs, produce outputs. Must be pure for determinism. */ export type RunFn = (inputs: unknown) => unknown; /** Capture a run: execute once and record the output digest. */ export declare function recordRun(id: string, inputs: unknown, run: RunFn, ts?: number): RecordedRun; export interface ReplayResult { deterministic: boolean; expectedDigest: string; actualDigest: string; } /** Replay a recorded run and check it reproduces the recorded output digest. */ export declare function verifyReplay(recorded: RecordedRun, run: RunFn): ReplayResult; /** Batch predicate for accept(): all recorded runs replay deterministically. */ export declare function allDeterministic(recorded: RecordedRun[], run: RunFn): boolean; /** * File-backed store of recorded runs (JSONL). Append-only with a bounded cap: * once it exceeds `maxEntries` it rotates to the newest `maxEntries` — so the * store can never grow unbounded (runaway-storage guard). `get` returns the * latest for an id. */ export declare class ReplayStore { private readonly filePath; private readonly maxEntries; constructor(filePath: string, maxEntries?: number); private load; record(r: RecordedRun): void; get(id: string): RecordedRun | undefined; all(): RecordedRun[]; } //# sourceMappingURL=harness-replay.d.ts.map