import { type StoreOps } from "@vendoai/core"; import type { Db } from "./db.js"; /** * 01 ยง12 `StoreOps.retention` โ€” ageing rows out of a collection in the two * moves a RECOVERABLE sweep takes. `quarantine` lifts rows past the window out * of the live collection into `vendo_quarantine` (schema.ts v9); `purge` * destroys what was lifted before its own cutoff. The gap between them is the * feature: a window that turns out to be wrong is recoverable right up until * the purge, which is the whole difference between this and a DELETE. * * The lift is ONE statement โ€” a data-modifying CTE โ€” so a row is never in both * places and never in neither, without a transaction to hold open across * however many million rows a first sweep moves. * * The lifted row is stored VERBATIM (`to_jsonb` of the live row, whatever its * table's shape), not as the door's `VendoRecord` projection: the projection is * lossy for several tables, and a quarantine that cannot put back exactly what * it took is a delete with a longer name. */ export declare function storeRetention(db: Db): NonNullable; //# sourceMappingURL=retention.d.ts.map