import { type InteractiveStateDef } from './interactiveStates.js'; import type { PageModel } from './store.js'; export type InteractiveStateSelections = Record; export interface InteractiveStatePreset { id: string; name: string; selections: InteractiveStateSelections; } export declare function cloneStateValue(value: T): T; /** Reads old documents without changing their serialized representation. */ export declare function selectedInteractiveStates(page: PageModel): InteractiveStateSelections; /** Validates first, then composes every selected axis in declaration order. */ export declare function composeInteractiveStateSelections(page: PageModel, defs: readonly InteractiveStateDef[], input: Readonly>): Partial | null; /** * True when the frame's selections change its recipe or boot condition and every such * difference is what the selected options compose: the gestures, boot environment and * desired state equal the composition exactly. That frame can boot a fresh document * under the composed recipe, the same reproduction a capture makes, and is shown only * once the frame's own assertions hold on it. Selections that only change desired state * keep applying to the document already booted. */ export declare function selectionsComposeFreshRecipe(page: PageModel, defs: readonly InteractiveStateDef[]): boolean;