/**
 * A single keyboard shortcut registration.
 */
export interface Hotkey {
    /**
     * Key combo, e.g. 'mod+k', 'shift+/', 'c', 'escape'.
     * 'mod' = ⌘ on macOS, Ctrl elsewhere.
     *
     * Format: '+'-separated modifiers (mod, ctrl, meta, shift, alt) followed
     * by a final key compared case-insensitively against event.key.
     * Named keys: 'escape', 'enter', 'space', 'up', 'down', 'left', 'right'
     * (arrow names map to ArrowUp/ArrowDown/ArrowLeft/ArrowRight).
     * Use 'plus' for a literal '+' key.
     *
     * Shift semantics: when 'shift' is not specified, shift state is ignored,
     * so single letters match regardless of shift. When 'shift' is specified,
     * shiftKey must be pressed and the final key is still compared against
     * event.key — for punctuation that shift transforms (e.g. shift+/ produces
     * '?' on US layouts), prefer registering the produced character instead.
     */
    keys: string;
    /** Called when the combo matches. The event has preventDefault() applied. */
    onPress: (event: KeyboardEvent) => void;
    /**
     * Fire even when focus is in an input/textarea/select/contenteditable.
     * @default false
     */
    allowInInputs?: boolean;
    /** Temporarily disable this hotkey without unregistering it. */
    isDisabled?: boolean;
}
/**
 * Registers global keyboard shortcuts on window.
 *
 * A single keydown listener is attached per hook instance; the hotkey
 * definitions live in a ref, so re-renders update behavior without
 * re-subscribing. First matching hotkey wins per event.
 *
 * Accessibility (WCAG 2.1.4 — Character Key Shortcuts): a shortcut whose
 * combo is a single unmodified character (letter, digit, punctuation or
 * symbol — e.g. 'c' or '/') is easily triggered by accident by speech-input
 * users and keyboard users with motor impairments. If you register one, you
 * MUST also provide at least one of: (a) a way to turn the shortcut off,
 * (b) a way to remap it to include a modifier, or (c) scope it so it is only
 * active while the relevant component has focus. Prefer `mod`-based combos
 * where possible; the `isDisabled` flag can back a user-facing off switch.
 *
 * @param hotkeys - Shortcut registrations to listen for.
 *
 * @example
 * ```
 * useHotkeys([
 *   { keys: 'mod+k', onPress: () => openCommandPalette() },
 *   { keys: 'escape', onPress: () => closePanel(), allowInInputs: true },
 *   { keys: 'c', onPress: () => compose(), isDisabled: isModalOpen },
 * ]);
 * ```
 */
export declare function useHotkeys(hotkeys: Hotkey[]): void;
//# sourceMappingURL=useHotkeys.d.ts.map