import type { MaskInput } from '../kaleidoscope/types'; import type { KaleidoscopePresetBook } from '../kaleidoscope.preset-book.types'; /** One layer's stored uniform overrides (the wire shape `onPatch` emits). */ export type StoredLayerUniforms = Readonly>; /** A preset's stored overrides, keyed by layer id. */ export type StoredPatchMap = Readonly>; /** Every preset's stored overrides, keyed by preset id. */ export type StoredPatches = Readonly>; /** The single live-patch shape, identical to `KaleidoscopeControls['onPatch']`'s argument. */ export type StoredPatch = { readonly id: string; readonly uniforms: StoredLayerUniforms; }; export type StoredKaleidoscopeState = { readonly version: 1; /** The last-applied preset id, or null when nothing was selected. */ readonly presetId: string | null; /** The shared segmentation edge. */ readonly mask: MaskInput; /** Per-preset, per-layer uniform overrides from the control panels. */ readonly patches: StoredPatches; }; /** * The backing store. `load` resolves null when nothing (or nothing readable) is * stored; `save` swallows its own failures (persistence is a convenience, never * a crash). */ export interface KaleidoscopeStateStore { load(): Promise; save(state: StoredKaleidoscopeState): Promise; } export declare const KALEIDOSCOPE_STATE_KEY = "kaleidoscope.state.v1"; export declare const DEFAULT_MASK: MaskInput; export declare const serializeKaleidoscopeState: (state: StoredKaleidoscopeState) => string; /** * Tolerant parse: any malformed or wrong-version payload reads as null, and a * malformed `patches` subtree degrades to the valid subset rather than killing * the whole state. Mask values clamp to 0..1 (the verbs' documented range). */ export declare const parseStoredKaleidoscopeState: (raw: string | null) => StoredKaleidoscopeState | null; /** * Reconcile stored state against the consumer's current book: a preset that no * longer exists reads as "none", a patch for a vanished preset or layer is * dropped. Stale state degrades silently; it never crashes the picker. */ export declare const pruneStoredState: (state: StoredKaleidoscopeState, book: KaleidoscopePresetBook) => StoredKaleidoscopeState; /** Merge one live patch into a preset's stored overrides (immutably). */ export declare const mergePatch: (patches: StoredPatches, presetId: string, patch: StoredPatch) => StoredPatches; /** * Project a preset's stored overrides into the array shape the `kaleidoscope` * verb takes as `patches`. */ export declare const patchListFor: (patches: StoredPatches, presetId: string) => ReadonlyArray; //# sourceMappingURL=state.d.ts.map