import type { ActionCodes, ActionCodesMap } from "./actionBindings.js"; /** * Player-rebound keys, keyed by action name. Values mirror an `ActionCodes` * entry so hold/toggle/repeat semantics survive a rebind — the settings menu * only swaps which physical codes drive the action. */ export type BindingOverrides = Record; export declare const BINDING_OVERRIDES_STORAGE_PREFIX = "jgengine:keybinds:"; interface WebStorageLike { getItem(key: string): string | null; setItem(key: string, value: string): void; removeItem(key: string): void; } export declare function bindingOverridesStorageKey(gameId: string): string; export declare function loadBindingOverrides(gameId: string, storage?: Pick | null | undefined): BindingOverrides; export declare function saveBindingOverride(gameId: string, action: string, codes: ActionCodes, storage?: Pick | null | undefined): BindingOverrides; export declare function clearBindingOverride(gameId: string, action: string, storage?: Pick | null | undefined): BindingOverrides; export declare function clearAllBindingOverrides(gameId: string, storage?: Pick | null | undefined): void; /** * Merge player rebinds over a game's authored `input` map. Only actions the * game already declares can be overridden; unknown override keys are ignored so * a stale localStorage entry can't inject phantom actions. */ export declare function applyBindingOverrides(input: ActionCodesMap, overrides: BindingOverrides): ActionCodesMap; export {};