import type { BindingEventService } from '@slickgrid-universal/binding';
/**
 * Configuration options for keyboard navigation
 */
export interface KeyboardNavigationOptions {
    /** CSS selector to find currently focused item (e.g., '[role="menuitem"]:focus' or '.list-item:focus') */
    focusedItemSelector: string;
    /** CSS selector to find all focusable items (e.g., '[role="menuitem"]' or '.list-item') */
    allItemsSelector: string;
    /** Optional filter function to exclude items (disabled, hidden, etc.) */
    filterFn?: (item: HTMLElement) => boolean;
    /** Callback when Enter/Space is pressed on focused item */
    onActivate?: (focusedItem: HTMLElement) => void;
    /** Callback when Escape is pressed */
    onEscape?: () => void;
    /** Callback when Tab or Shift+Tab is pressed */
    onTab?: (evt: KeyboardEvent, focusedItem: HTMLElement) => void;
    /** Callback when ArrowRight is pressed on a submenu item (for dropright submenus) */
    onOpenSubMenu?: (focusedItem: HTMLElement) => void;
    /** Callback when ArrowLeft is pressed in a submenu (for dropleft submenus or to close dropright) */
    onCloseSubMenu?: (focusedItem: HTMLElement) => void;
    /** Key for binding event service (default: 'keyboard-navigation') */
    eventServiceKey?: string;
}
/**
 * Generic keyboard navigation handler for list-like components
 * Supports arrow key navigation, Enter/Space activation, and Escape to close
 * Can be used for menus, lists, pickers, or any focusable item collections
 */
export declare function bindKeyboardNavigation(containerElm: HTMLElement, bindEventService: BindingEventService, options: KeyboardNavigationOptions): void;
/**
 * Wire up keyboard navigation for the menu container using bindKeyboardNavigation.
 * Should be called after menu DOM is created for all non-GridMenu plugins.
 */
export declare function wireMenuKeyboardNavigation(menuElm: HTMLElement, bindEventService: any, options?: {
    onActivate?: (focusedItem: HTMLElement) => void;
    onEscape?: () => void;
    onTab?: (evt: KeyboardEvent, focusedItem: HTMLElement) => void;
    onOpenSubMenu?: (focusedItem: HTMLElement) => void;
    onCloseSubMenu?: (focusedItem: HTMLElement) => void;
    eventServiceKey?: string;
    allItemsSelector?: string;
    focusedItemSelector?: string;
}): void;
//# sourceMappingURL=keyboardNavigation.d.ts.map