import { DeepMaybeObservable, ReadonlyObservable } from '@usels/core'; import { ConfigurableWindow } from '../../shared/configurable.mjs'; import '@legendapp/state'; interface UseMagicKeysOptions extends ConfigurableWindow { /** Custom alias map for key names */ aliasMap?: Record; /** Event handler called on every keydown/keyup. Return false to skip tracking. */ onEventFired?: (e: KeyboardEvent) => boolean | void; /** Options passed to the underlying addEventListener calls. @default { passive: true } */ eventListenerOptions?: AddEventListenerOptions; } type UseMagicKeysReturn = { /** Set of currently pressed key names (lowercase) */ current$: ReadonlyObservable>; } & { /** Access any key as a reactive boolean. e.g., keys["a"], keys["shift"], keys["ctrl+a"] */ [key: string]: ReadonlyObservable; }; /** * Framework-agnostic magic keys tracker. * * Tracks keyboard state via `keydown`/`keyup`/`blur` events on window. * Returns a Proxy that exposes any key as a reactive boolean observable, * and supports combo keys (e.g. `ctrl+a`). */ declare function createMagicKeys(options?: DeepMaybeObservable): UseMagicKeysReturn; export { type UseMagicKeysOptions, type UseMagicKeysReturn, createMagicKeys };