import { RefObject } from 'react';
/**
 * Closes a popover when Escape is pressed while the document has
 * focus inside it. Safer than blanket window-level Escape because it
 * only fires when the popover is open AND focus is somewhere within
 * its anchor / panel.
 *
 * @param isOpen - whether the popover is currently open
 * @param onClose - called when Escape is detected
 * @param scopeRef - optional ref to constrain to. When provided,
 *   Escape only closes if focus is inside this element. When omitted,
 *   any document-wide Escape closes (matches the legacy Popover
 *   component's behavior).
 */
export declare function useEscape(isOpen: boolean, onClose: () => void, scopeRef?: RefObject<HTMLElement | null>): void;
export interface ArrowKeyNavOptions {
    /** Number of options in the listbox. */
    count: number;
    /** Currently active option index, or -1 when nothing is highlighted. */
    activeIndex: number;
    /** Setter for the active index. */
    onActiveIndexChange: (next: number) => void;
    /**
     * Called when Enter or Space activates the current option. Receives
     * the active index. Components decide what "activate" means
     * (selecting a value, expanding a sub-menu, etc.).
     */
    onActivate?: (index: number) => void;
    /**
     * Optional roving tabindex orientation. `'vertical'` (default)
     * binds Up/Down, `'horizontal'` binds Left/Right, `'both'` binds all.
     */
    orientation?: 'vertical' | 'horizontal' | 'both';
}
/**
 * Roving-tabindex keyboard navigation for listboxes / menus / option
 * lists. Returns an `onKeyDown` handler the consumer attaches to the
 * trigger button (so the popover doesn't have to be focused for
 * navigation to work — this is the WAI-ARIA combobox 1.2 pattern).
 *
 * Bindings:
 *   - ArrowDown / ArrowRight → next option, wraps to first
 *   - ArrowUp / ArrowLeft → prev option, wraps to last
 *   - Home → first option
 *   - End → last option
 *   - Enter / Space → onActivate(activeIndex)
 */
export declare function useArrowKeyNav(opts: ArrowKeyNavOptions): (event: React.KeyboardEvent<HTMLElement>) => void;
//# sourceMappingURL=keyboard.d.ts.map