import * as PropTypes from "prop-types";
import * as React from "react";
import KeyCode from "../utils/KeyCode";
import { Values } from "../utils/types";
export interface Props {
    backKeys?: Values<typeof KeyCode>[];
    children?: React.ReactNode;
    currentID?: string;
    forceTabKey?: boolean;
    forwardKeys?: Values<typeof KeyCode>[];
    itemIDs: string[];
    noWrap?: boolean;
    onChange: (itemIDs: string) => void;
}
/**
 * Wrapper component that enables keyboard navigation through a specified ordered list of items.
 * Emits navigation events with the ID of the next item to focus on - it's up to the client to move
 * focus as needed and update the currentID prop accordingly.
 */
export default class WithKeyboardNav extends React.PureComponent<Props> {
    static propTypes: {
        backKeys: PropTypes.Requireable<Values<{
            readonly ARROW_DOWN_IE: "Down";
            readonly ARROW_DOWN: "ArrowDown";
            readonly ARROW_LEFT_IE: "Left";
            readonly ARROW_LEFT: "ArrowLeft";
            readonly ARROW_RIGHT_IE: "Right";
            readonly ARROW_RIGHT: "ArrowRight";
            readonly ARROW_UP_IE: "Up";
            readonly ARROW_UP: "ArrowUp";
            readonly ENTER: "Enter";
            readonly J: "j";
            readonly K: "k";
            readonly TAB: "Tab";
        }>[]>;
        children: PropTypes.Requireable<PropTypes.ReactNodeLike>;
        currentID: PropTypes.Requireable<string>;
        forceTabKey: PropTypes.Requireable<boolean>;
        forwardKeys: PropTypes.Requireable<Values<{
            readonly ARROW_DOWN_IE: "Down";
            readonly ARROW_DOWN: "ArrowDown";
            readonly ARROW_LEFT_IE: "Left";
            readonly ARROW_LEFT: "ArrowLeft";
            readonly ARROW_RIGHT_IE: "Right";
            readonly ARROW_RIGHT: "ArrowRight";
            readonly ARROW_UP_IE: "Up";
            readonly ARROW_UP: "ArrowUp";
            readonly ENTER: "Enter";
            readonly J: "j";
            readonly K: "k";
            readonly TAB: "Tab";
        }>[]>;
        itemIDs: PropTypes.Validator<string[]>;
        noWrap: PropTypes.Requireable<boolean>;
        onChange: PropTypes.Validator<(...args: any[]) => any>;
    };
    static defaultProps: {
        backKeys: ("Left" | "ArrowLeft" | "Up" | "ArrowUp")[];
        forwardKeys: ("Down" | "ArrowDown" | "Right" | "ArrowRight")[];
    };
    _element: any;
    componentDidMount(): void;
    componentWillUnmount(): void;
    render(): React.ReactNode;
    _handleKeyDown: (event: any) => void;
    _move(amount: any, event: any): void;
}
