/// <reference types="react" />
type DropdownOptions<ItemType> = {
    label: string;
    onInputChange?: (value: string) => void;
    getOptionId: (item: ItemType) => string;
    onSelect?: (item: ItemType) => void;
};
export declare const useDropdown: <ItemType>(items: ItemType[] | undefined, { label, onInputChange, getOptionId, onSelect }: DropdownOptions<ItemType>) => {
    highlightedIndex: number;
    isExpanded: boolean;
    getInputProps: () => {
        onChange: (event: React.ChangeEvent) => void;
        role: string;
        "aria-expanded": boolean;
        "aria-activedescendant": string | undefined;
        "aria-label": string;
        value: string;
        onKeyDown: (event: React.KeyboardEvent<HTMLInputElement>) => void;
        ref: (element: HTMLElement | null) => void;
        onFocus: (event: import("react").SyntheticEvent<Element, Event>) => void;
        onBlur: (event: import("react").SyntheticEvent<Element, Event>) => void;
    };
    getListboxProps: () => {
        role: string;
        "aria-label": string;
        onMouseOver: () => void;
    };
    getOptionProps: (index: number) => {
        onClick: () => void;
        "aria-selected": boolean;
        id: string | undefined;
        ref: (element: HTMLElement | null) => void;
        onFocus: (event: import("react").SyntheticEvent<Element, Event>) => void;
        onBlur: (event: import("react").SyntheticEvent<Element, Event>) => void;
        role: string;
    };
    focus: () => void;
    clear: () => void;
};
export {};
