import { type MaybeRefOrGetter, type Ref } from 'vue';
export type ComboboxDropdownEventSource = 'keyboard' | 'mouse' | 'unknown';
export interface UseComboboxOptions {
    defaultOpened?: boolean;
    opened?: MaybeRefOrGetter<boolean | undefined>;
    onOpenedChange?: (opened: boolean) => void;
    onDropdownClose?: (source: ComboboxDropdownEventSource) => void;
    onDropdownOpen?: (source: ComboboxDropdownEventSource) => void;
    loop?: boolean;
    scrollBehavior?: ScrollBehavior;
}
export interface ComboboxStore {
    readonly dropdownOpened: boolean;
    openDropdown: (source?: ComboboxDropdownEventSource) => void;
    closeDropdown: (source?: ComboboxDropdownEventSource) => void;
    toggleDropdown: (source?: ComboboxDropdownEventSource) => void;
    readonly selectedOptionIndex: number;
    getSelectedOptionIndex: () => number;
    selectOption: (index: number) => string | null;
    selectActiveOption: () => string | null;
    selectFirstOption: () => string | null;
    selectNextOption: () => string | null;
    selectPreviousOption: () => string | null;
    resetSelectedOption: () => void;
    clickSelectedOption: () => void;
    updateSelectedOptionIndex: (target?: 'active' | 'selected' | number, options?: {
        scrollIntoView?: boolean;
    }) => void;
    readonly listId: string | null;
    setListId: (id: string) => void;
    searchRef: Ref<HTMLInputElement | null>;
    focusSearchInput: () => void;
    targetRef: Ref<HTMLElement | null>;
    focusTarget: () => void;
}
export declare function useCombobox(options?: UseComboboxOptions): ComboboxStore;
