import { type Ref, type ComputedRef } from 'vue'; export declare function useSelectKeyboard(opts: { isOpen: Ref; search: Ref; activeIndex: Ref; flatFilteredItems: ComputedRef; multiple: Ref; disabled: Ref; selected: Ref; tagging: Ref any)>; taggingTokens: Ref; disableChoice: Ref<((item: any) => boolean) | undefined>; clearable?: Ref; /** Locked items refuse removal, so Backspace must step past them. */ lockChoice?: Ref<((item: any) => boolean) | undefined>; /** At the limit the unselected rows are disabled, so navigation skips them. */ isAtLimit?: Ref; /** Reported with `limit-reached`; see reportTagLimit(). */ limit?: Ref; /** Decides where Tab has to resume from — see the Tab case. */ appendToBody?: Ref; open: () => void; close: () => void; selectItem: (item: any) => void; removeItem: (item: any) => void; isItemSelected: (item: any) => boolean; createTag: (search: string) => any; /** Whether the "(new)" row is on offer for the current term. */ shouldShowTagRow?: () => boolean; /** The visible option whose text equals a term, ignoring case. */ findExistingByTerm?: (term: string) => any; focus: () => void; /** * Focuses the root element. In single mode the search input lives inside the * dropdown, so closing unmounts it and a plain focus() has nothing left to * target — keyboard focus would fall to . */ focusHost: () => void; /** Moves focus past the whole widget; see the Tab case. */ focusSibling?: (backwards: boolean) => boolean; clearSelection?: () => void; dropdownRef: Ref; inputRef: Ref; emit: (event: string, ...args: any[]) => void; }): { handleKeyDown: (e: KeyboardEvent) => void; handlePaste: (e: ClipboardEvent) => void; handleSearchInput: () => void; scrollActiveIntoView: () => void; };