/** Colorblind simulation/daltonization modes the engine ships matrices for. */ export type ColorblindMode = "none" | "protanopia" | "deuteranopia" | "tritanopia" | "grayscale"; /** Serializable accessibility preferences a game reads to adapt its presentation. */ export interface AccessibilityState { /** Suppress non-essential motion/animation. */ reducedMotion: boolean; /** Boost contrast (stronger borders/backgrounds, less transparency). */ highContrast: boolean; /** UI text scale multiplier (`1` = default). See {@link clampTextScale} for bounds. */ textScale: number; /** Colorblind filter applied to the presentation. */ colorblind: ColorblindMode; /** Show subtitles/captions for dialogue and important audio. */ captions: boolean; } /** The out-of-the-box accessibility state (all assistance off, `textScale` 1). */ export declare const DEFAULT_ACCESSIBILITY: AccessibilityState; /** Minimum UI text scale. */ export declare const TEXT_SCALE_MIN = 0.75; /** Maximum UI text scale. */ export declare const TEXT_SCALE_MAX = 2; /** Clamp a text-scale multiplier into the supported `[TEXT_SCALE_MIN, TEXT_SCALE_MAX]` range. */ export declare function clampTextScale(scale: number): number; /** Return `ms` when motion is allowed, or `reduced` (default 0) when `reducedMotion` is set — the animation-duration gate. */ export declare function reducedMotionDuration(state: AccessibilityState, ms: number, reduced?: number): number; /** * `feColorMatrix` `values` strings for each colorblind mode — simulate how a * viewer with that condition perceives color (and a grayscale mode). `"none"` * maps to `null` (no filter). Consumed by the React `ColorblindFilters` defs. */ export declare const COLORBLIND_MATRICES: Record; /** * The CSS filter that applies `mode` to one rendered frame — a `url(#jg-cb-)` reference to the * `feColorMatrix` defs {@link COLORBLIND_MATRICES} drives. `"none"` maps to `null` (no filter), so a * caller can spread it onto the canvas alone and leave HUD and menu text at its own contrast. * * @capability colorblind-frame-filter resolve a colorblind mode to the CSS filter for the 3D frame alone */ export declare function colorblindFrameFilter(mode: ColorblindMode): string | null; /** Observable, serializable accessibility-preferences store. */ export interface AccessibilityStore { get(): AccessibilityState; /** Merge a partial update (text scale is clamped); notifies on an actual change. */ set(patch: Partial): void; /** Restore defaults. */ reset(): void; subscribe(listener: () => void): () => void; snapshot(): AccessibilityState; restore(snapshot: Partial): void; } /** * Serializable, observable store of accessibility preferences (reduced motion, * high contrast, text scale, colorblind mode, captions). Genre-agnostic plumbing * like input rebinding — a game binds these to its settings UI and adapts its * presentation; `snapshot`/`restore` round-trip through a save or settings blob. * * @capability accessibility-store serializable, observable accessibility preferences (reduced motion, high contrast, text scale, colorblind mode, captions) a game binds to its settings and presentation */ export declare function createAccessibilityStore(initial?: Partial): AccessibilityStore;