export default DOMNavigator;
/**
 * Adds the ability to navigate the DOM with the arrow keys
 */
declare class DOMNavigator {
    /**
     * @typedef {import('./types').DOMNavigatorOptions} DOMNavigatorOptions
     * @typedef {import('./types').DOMNavigatorDirection} DOMNavigatorDirection
     */
    /**
     * @returns {DOMNavigatorDirection}
     */
    static get DIRECTION(): import("./types").DOMNavigatorDirection;
    /**
     * @returns {DOMNavigatorOptions}
     */
    static get DEFAULTS(): import("./types").DOMNavigatorOptions;
    /**
     * Gets the closest element based on the provided distance function.
     * @param {HTMLElement[]} els - The elements to evaluate.
     * @param {function(HTMLElement): number} getDistance - The function to calculate distance.
     * @returns {HTMLElement} The closest element.
     */
    static getClosestElement(els: HTMLElement[], getDistance: (arg0: HTMLElement) => number): HTMLElement;
    /**
     * Create a new DOM Navigator.
     * @param {HTMLElement} container The container of the element to navigate.
     * @param {DOMNavigatorOptions} options The options to configure the DOM navigator.
     */
    constructor(container: HTMLElement, options: import("./types").DOMNavigatorOptions);
    container: HTMLElement;
    scroll_container: HTMLElement;
    /** @type {DOMNavigatorOptions} */
    options: import("./types").DOMNavigatorOptions;
    init(): void;
    selected: any;
    keydownHandler: (ev: KeyboardEvent) => void;
    elements: {};
    keys: {};
    enable(): void;
    enabled: boolean;
    disable(): void;
    destroy(): void;
    /**
     * @param {'down'|'right'|'left'|'up'} direction
     * @returns {HTMLElement}
     */
    getNextElement(direction: "down" | "right" | "left" | "up"): HTMLElement;
    /**
     * Select the given element.
     * @param {HTMLElement} el The DOM element to select.
     * @param {string} [direction] The direction.
     */
    select(el: HTMLElement, direction?: string): void;
    /**
     * Remove the current selection
     */
    unselect(): void;
    /**
     * Scroll the container to an element.
     * @param {HTMLElement} el The destination element.
     * @param {String} direction The direction of the current navigation.
     * @return void.
     */
    scrollTo(el: HTMLElement, direction: string): void;
    /**
     * Indicate if an element is in the container viewport.
     * @param {HTMLElement} el The element to check.
     * @return {Boolean} true if the given element is in the container viewport, otherwise false.
     */
    inScrollContainerViewport(el: HTMLElement): boolean;
    /**
     * Finds and stores the navigable elements.
     * @param {string} [direction] - The navigation direction.
     * @returns {HTMLElement[]} The navigable elements.
     */
    getElements(direction?: string): HTMLElement[];
    /**
     * Gets navigable elements after a specified offset.
     * @param {number} left - The left offset.
     * @param {number} top - The top offset.
     * @returns {HTMLElement[]} An array of elements.
     */
    elementsAfter(left: number, top: number): HTMLElement[];
    /**
     * Gets navigable elements before a specified offset.
     * @param {number} left - The left offset.
     * @param {number} top - The top offset.
     * @returns {HTMLElement[]} An array of elements.
     */
    elementsBefore(left: number, top: number): HTMLElement[];
    /**
     * Handle the key down event.
     * @param {KeyboardEvent} ev - The event object.
     */
    handleKeydown(ev: KeyboardEvent): void;
}
//# sourceMappingURL=dom-navigator.d.ts.map