export interface SnapshotSlice { capture(): T; restore(state: T): void; } export type Snapshot = Record; export interface SnapshotStore { register(id: string, slice: SnapshotSlice): void; unregister(id: string): void; capture(): Snapshot; restore(snapshot: Snapshot): void; push(): Snapshot; pop(): boolean; peek(): Snapshot | null; depth(): number; clear(): void; } /** @internal */ export declare function deepClone(value: T): T; /** @internal */ export declare function createSnapshotStore(): SnapshotStore;