import type { BaseCheckpointSaver } from "@langchain/langgraph-checkpoint"; /** * The contract every checkpointer must satisfy. Run against Dawn's SQLite saver * (in-process, always) and any other backend (e.g. Postgres, gated) so they * cannot drift. Pass vitest's `describe`; `makeSaver` returns a FRESH empty * saver per call. * * Asserted through the PUBLIC saver API only — never the tables. The backends * genuinely differ underneath (SQLite stores the whole Checkpoint as one BLOB; * another saver may split payloads across columns or externalize channel values * keyed by version), and none of that is contract. * * Two behaviors are CAPABILITY FLAGS rather than assertions, because SQLite * deliberately does less than a backend legitimately can: * - `listPendingWrites` — SQLite's `list()` yields lightweight tuples with * `pendingWrites: []` and expects callers needing writes to re-fetch via * `getTuple`. * - `listFilter` — SQLite ignores `options.filter` entirely. * Asserting SQLite's shortcuts as contract would fail a richer backend for * being better, so each backend declares what it actually promises instead. * * The two hostile round-trips (a NUL byte and a lone surrogate, in metadata AND * in a channel name and value) are not edge-case trivia: they are exactly where * a jsonb-backed store diverges from the BLOB-backed incumbent, and Dawn * produces such payloads for real — sandbox stdout flows unmodified into tool * results and from there into checkpoint metadata. They are deliberately NOT * asserted for a pending write's channel column, which is plain text in every * backend (SQLite transcodes a lone surrogate there to U+FFFD) and is fed by * the graph definition rather than by model or tool output. */ export declare function runCheckpointerConformance(opts: { readonly name: string; readonly makeSaver: () => Promise | BaseCheckpointSaver; readonly describe: (name: string, fn: () => void) => void; readonly close?: (saver: BaseCheckpointSaver) => Promise | void; readonly supports?: { /** `list()` hydrates `pendingWrites` (SQLite: no). */ readonly listPendingWrites?: boolean; /** `list({ filter })` narrows by metadata (SQLite: no). */ readonly listFilter?: boolean; }; }): void; //# sourceMappingURL=checkpointer-conformance.d.ts.map