import { type RefObject } from "react";
import { type GenericEventCallback } from "../../types/events";
declare enum Modifier {
    ALT = "altKey",
    META = "metaKey",
    CTRL = "ctrlKey",
    SHIFT = "shiftKey",
    CTRL_OR_META = "ctrlOrMetaKey"
}
export interface UseKeyEventArgs {
    /**
     * The list of keys that should trigger the event.
     */
    keys: KeyboardEvent["key"][];
    /**
     * Callback fired when a specified key is pressed.
     */
    callback: GenericEventCallback;
    /**
     * Modifier key that must be pressed along with the specified key.
     */
    modifier?: Modifier;
    /**
     * The keyboard event type to listen for (e.g., "keydown", "keyup").
     */
    keyEventName?: string;
    /**
     * If true, ensures no modifier keys are pressed when handling the event.
     */
    withoutAnyModifier?: boolean;
    /**
     * The element reference to listen for key events on.
     */
    ref?: RefObject<HTMLElement | Document>;
    /**
     * If true, prevents fallback to listening on the document when no ref is provided.
     */
    ignoreDocumentFallback?: boolean;
    /**
     * If true, uses capture phase instead of bubbling phase for event listening.
     */
    capture?: boolean;
    /**
     * If true, calls `preventDefault` on the key event.
     */
    preventDefault?: boolean;
    /**
     * If true, calls `stopPropagation` on the key event.
     */
    stopPropagation?: boolean;
}
declare function useKeyEvent({ keys, callback, modifier, withoutAnyModifier, ref, ignoreDocumentFallback, capture, preventDefault, stopPropagation, keyEventName }: UseKeyEventArgs): void;
declare namespace useKeyEvent {
    var modifiers: typeof Modifier;
}
export default useKeyEvent;
