import { type KeyboardEvent, type ModifierKey } from "react";
/**
 * @internal
 */
export interface IHandleActionOptions {
    shouldPreventDefault?: boolean;
    shouldStopPropagation?: boolean;
}
/**
 * @internal
 */
export declare const modifierNegator: "!";
/**
 * @internal
 */
export type IModifier = ModifierKey | `${typeof modifierNegator}${ModifierKey}`;
/**
 * @internal
 */
export declare const makeKeyboardNavigation: <ActionKeysMap extends {
    [action: string]: {
        code: string | string[];
        modifiers?: IModifier[] | undefined;
    }[];
}>(actionKeysMap: ActionKeysMap) => <T extends KeyboardEvent<Element> = KeyboardEvent<Element>>(handlers: { [action in "onUnhandledKeyDown" | keyof ActionKeysMap]?: ((event: T) => void) | undefined; }, options?: IHandleActionOptions) => (event: T) => void;
/**
 * @internal
 */
export declare const makeMenuKeyboardNavigation: <T extends KeyboardEvent<Element> = KeyboardEvent<Element>>(handlers: {
    onClose?: ((event: T) => void) | undefined;
    onEnterLevel?: ((event: T) => void) | undefined;
    onFocusFirst?: ((event: T) => void) | undefined;
    onFocusLast?: ((event: T) => void) | undefined;
    onFocusNext?: ((event: T) => void) | undefined;
    onFocusPrevious?: ((event: T) => void) | undefined;
    onLeaveLevel?: ((event: T) => void) | undefined;
    onSelect?: ((event: T) => void) | undefined;
    onUnhandledKeyDown?: ((event: T) => void) | undefined;
}, options?: IHandleActionOptions) => (event: T) => void;
/**
 * @internal
 */
export declare const makeGridKeyboardNavigation: <T extends KeyboardEvent<Element> = KeyboardEvent<Element>>(handlers: {
    onFocusDown?: ((event: T) => void) | undefined;
    onFocusFirst?: ((event: T) => void) | undefined;
    onFocusLast?: ((event: T) => void) | undefined;
    onFocusLeft?: ((event: T) => void) | undefined;
    onFocusRight?: ((event: T) => void) | undefined;
    onFocusUp?: ((event: T) => void) | undefined;
    onSelect?: ((event: T) => void) | undefined;
    onUnhandledKeyDown?: ((event: T) => void) | undefined;
}, options?: IHandleActionOptions) => (event: T) => void;
/**
 * @internal
 */
export declare const makeLinearKeyboardNavigation: <T extends KeyboardEvent<Element> = KeyboardEvent<Element>>(handlers: {
    onClose?: ((event: T) => void) | undefined;
    onFocusFirst?: ((event: T) => void) | undefined;
    onFocusLast?: ((event: T) => void) | undefined;
    onFocusNext?: ((event: T) => void) | undefined;
    onFocusPrevious?: ((event: T) => void) | undefined;
    onSelect?: ((event: T) => void) | undefined;
    onUnhandledKeyDown?: ((event: T) => void) | undefined;
}, options?: IHandleActionOptions) => (event: T) => void;
/**
 * @internal
 */
export declare const makeDialogKeyboardNavigation: <T extends KeyboardEvent<Element> = KeyboardEvent<Element>>(handlers: {
    onClose?: ((event: T) => void) | undefined;
    onFocusNext?: ((event: T) => void) | undefined;
    onFocusPrevious?: ((event: T) => void) | undefined;
    onUnhandledKeyDown?: ((event: T) => void) | undefined;
}, options?: IHandleActionOptions) => (event: T) => void;
/**
 * @internal
 */
export declare const makeTabsKeyboardNavigation: <T extends KeyboardEvent<Element> = KeyboardEvent<Element>>(handlers: {
    onFocusFirst?: ((event: T) => void) | undefined;
    onFocusLast?: ((event: T) => void) | undefined;
    onFocusNext?: ((event: T) => void) | undefined;
    onFocusPrevious?: ((event: T) => void) | undefined;
    onSelect?: ((event: T) => void) | undefined;
    onUnhandledKeyDown?: ((event: T) => void) | undefined;
}, options?: IHandleActionOptions) => (event: T) => void;
/**
 * @internal
 */
export declare const makeHorizontalKeyboardNavigation: <T extends KeyboardEvent<Element> = KeyboardEvent<Element>>(handlers: {
    onFocusFirst?: ((event: T) => void) | undefined;
    onFocusLast?: ((event: T) => void) | undefined;
    onFocusNext?: ((event: T) => void) | undefined;
    onFocusPrevious?: ((event: T) => void) | undefined;
    onUnhandledKeyDown?: ((event: T) => void) | undefined;
}, options?: IHandleActionOptions) => (event: T) => void;
/**
 * @internal
 */
export declare const makeLinearKeyboardNavigationWithConfirm: <T extends KeyboardEvent<Element> = KeyboardEvent<Element>>(handlers: {
    onClose?: ((event: T) => void) | undefined;
    onConfirm?: ((event: T) => void) | undefined;
    onFocusFirst?: ((event: T) => void) | undefined;
    onFocusLast?: ((event: T) => void) | undefined;
    onFocusNext?: ((event: T) => void) | undefined;
    onFocusPrevious?: ((event: T) => void) | undefined;
    onSelect?: ((event: T) => void) | undefined;
    onUnhandledKeyDown?: ((event: T) => void) | undefined;
}, options?: IHandleActionOptions) => (event: T) => void;
//# sourceMappingURL=keyboardNavigation.d.ts.map