import type { ReactiveController } from 'lit';
import type IgcComboListComponent from '../combo-list.js';
import type { ComboHost, ComboRecord } from '../types.js';
import type { DataController } from './data.js';
declare enum DIRECTION {
    Up = -1,
    Down = 1
}
export declare class NavigationController<T extends object> implements ReactiveController {
    protected host: ComboHost<T>;
    protected state: DataController<T>;
    protected hostHandlers: Map<string, () => void>;
    protected mainInputHandlers: Map<string, (() => void) | (() => void) | ((container: IgcComboListComponent) => Promise<void>) | (() => void) | (() => void)>;
    protected searchInputHandlers: Map<string, (() => void) | ((container: IgcComboListComponent) => void)>;
    protected listHandlers: Map<string, (() => void) | (() => void) | (() => void) | ((container: IgcComboListComponent) => void) | ((container: IgcComboListComponent) => void) | (() => void) | ((container: IgcComboListComponent) => void) | ((container: IgcComboListComponent) => void)>;
    protected _active: number;
    get input(): import("../../input/input.js").default;
    get dataState(): ComboRecord<T>[];
    show(): void;
    hide(): void;
    toggleSelect(index: number): void;
    select(index: number): void;
    protected get currentItem(): number;
    protected get firstItem(): number;
    protected get lastItem(): number;
    protected scrollToActive(container: IgcComboListComponent, behavior?: ScrollBehavior): void;
    get active(): number;
    set active(node: number);
    constructor(host: ComboHost<T>, state: DataController<T>);
    protected home(container: IgcComboListComponent): void;
    protected end(container: IgcComboListComponent): void;
    protected space(): void;
    protected escape(): void;
    protected enter(): void;
    protected inputArrowDown(container: IgcComboListComponent): void;
    protected mainInputArrowDown(container: IgcComboListComponent): Promise<void>;
    protected tab(): void;
    protected arrowDown(container: IgcComboListComponent): void;
    protected arrowUp(container: IgcComboListComponent): void;
    protected getNextItem(direction: DIRECTION): void;
    protected getNearestItem(startIndex: number, direction: number): number;
    hostConnected(): void;
    hostDisconnected(): void;
    navigateTo(item: T, container: IgcComboListComponent): void;
    navigateHost(event: KeyboardEvent): void;
    navigateMainInput(event: KeyboardEvent, container: IgcComboListComponent): void;
    navigateSearchInput(event: KeyboardEvent, container: IgcComboListComponent): void;
    navigateList(event: KeyboardEvent, container: IgcComboListComponent): void;
}
export {};
