import { KeyboardEvent, 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]: Array<{
        code: string | string[];
        modifiers?: IModifier[];
    }>;
}>(actionKeysMap: ActionKeysMap) => <T extends KeyboardEvent | KeyboardEvent = KeyboardEvent>(handlers: { [action in keyof ActionKeysMap | "onUnhandledKeyDown"]?: (event: T) => void; }, options?: IHandleActionOptions) => (event: T) => void;
/**
 * @internal
 */
export declare const makeMenuKeyboardNavigation: <T extends KeyboardEvent | KeyboardEvent = KeyboardEvent<Element>>(handlers: {
    onSelect?: (event: T) => void;
    onClose?: (event: T) => void;
    onFocusPrevious?: (event: T) => void;
    onFocusNext?: (event: T) => void;
    onFocusFirst?: (event: T) => void;
    onFocusLast?: (event: T) => void;
    onEnterLevel?: (event: T) => void;
    onLeaveLevel?: (event: T) => void;
    onUnhandledKeyDown?: (event: T) => void;
}, options?: IHandleActionOptions) => (event: T) => void;
/**
 * @internal
 */
export declare const makeGridKeyboardNavigation: <T extends KeyboardEvent | KeyboardEvent = KeyboardEvent<Element>>(handlers: {
    onSelect?: (event: T) => void;
    onFocusFirst?: (event: T) => void;
    onFocusLast?: (event: T) => void;
    onUnhandledKeyDown?: (event: T) => void;
    onFocusUp?: (event: T) => void;
    onFocusDown?: (event: T) => void;
    onFocusRight?: (event: T) => void;
    onFocusLeft?: (event: T) => void;
}, options?: IHandleActionOptions) => (event: T) => void;
/**
 * @internal
 */
export declare const makeLinearKeyboardNavigation: <T extends KeyboardEvent | KeyboardEvent = KeyboardEvent<Element>>(handlers: {
    onSelect?: (event: T) => void;
    onClose?: (event: T) => void;
    onFocusPrevious?: (event: T) => void;
    onFocusNext?: (event: T) => void;
    onFocusFirst?: (event: T) => void;
    onFocusLast?: (event: T) => void;
    onUnhandledKeyDown?: (event: T) => void;
}, options?: IHandleActionOptions) => (event: T) => void;
/**
 * @internal
 */
export declare const makeDialogKeyboardNavigation: <T extends KeyboardEvent | KeyboardEvent = KeyboardEvent<Element>>(handlers: {
    onClose?: (event: T) => void;
    onFocusPrevious?: (event: T) => void;
    onFocusNext?: (event: T) => void;
    onUnhandledKeyDown?: (event: T) => void;
}, options?: IHandleActionOptions) => (event: T) => void;
/**
 * @internal
 */
export declare const makeTabsKeyboardNavigation: <T extends KeyboardEvent | KeyboardEvent = KeyboardEvent<Element>>(handlers: {
    onSelect?: (event: T) => void;
    onFocusPrevious?: (event: T) => void;
    onFocusNext?: (event: T) => void;
    onFocusFirst?: (event: T) => void;
    onFocusLast?: (event: T) => void;
    onUnhandledKeyDown?: (event: T) => void;
}, options?: IHandleActionOptions) => (event: T) => void;
/**
 * @internal
 */
export declare const makeHorizontalKeyboardNavigation: <T extends KeyboardEvent | KeyboardEvent = KeyboardEvent<Element>>(handlers: {
    onFocusPrevious?: (event: T) => void;
    onFocusNext?: (event: T) => void;
    onFocusFirst?: (event: T) => void;
    onFocusLast?: (event: T) => void;
    onUnhandledKeyDown?: (event: T) => void;
}, options?: IHandleActionOptions) => (event: T) => void;
//# sourceMappingURL=keyboardNavigation.d.ts.map