import type { ApprovedMissionModelSnapshot, StoredSnapshot } from "./types.js"; /** Current snapshot schema version. Only this version exists today. */ export declare const SNAPSHOT_SCHEMA_VERSION = "1.0.0"; /** * Deterministic serialization of a snapshot value. Object keys are * sorted, Maps are encoded as tagged entry lists sorted by key, and * undefined values are dropped (matching JSON storage semantics). */ export declare function canonicalizeSnapshot(value: unknown): string; /** * Compute the content signature of a snapshot. * * The signature input is the snapshot's deterministic planning * content: identity, schema version, session binding, world model, * proposals, and the structural lineage fields (version, parentId, * approvedBy). Wall-clock approval metadata (timestamp, lineage * approvedAt, and the lineageId derived from them) is excluded so * that approving the same session twice yields the same signature. * * Lineage chaining: when the snapshot has a lineage parent, the * parent's signature must be supplied and is mixed into the * signature input, so a tampered ancestor invalidates descendants. */ export declare function signSnapshot(snapshot: ApprovedMissionModelSnapshot, parentSignature?: string): string; /** * Certify a stored snapshot. Returns a list of violations; * an empty list means the snapshot is certified. * * Checks: * - known schema version * - required fields present and well-formed * - stored session bound to the snapshot * - proposal graph validity (EXP-HARDEN-001) * - lineage structure consistent with the parent (when provided) * - signature recomputation match (with lineage chaining) * * A snapshot with a lineage parent can only be certified when the * parent snapshot is supplied: the chain input is unverifiable * without it. */ export declare function certifySnapshot(stored: StoredSnapshot, parent?: ApprovedMissionModelSnapshot): string[]; /** * Load a stored snapshot record at a known schema version. * * Only version "1.0.0" exists today, so loading is the identity. * When a future version is introduced, this is the seam where * conversions from older versions are applied. Unknown or future * versions are rejected loudly. */ export declare function migrateStoredSnapshot(raw: StoredSnapshot): StoredSnapshot;