import { Ref } from 'vue'; export interface UseDropdownStateOptions { closeOnOutsideClick?: boolean; closeOnEscape?: boolean; /** Close the panel when the page scrolls or the viewport resizes. Default `false`. */ closeOnScroll?: boolean; insideRefs?: Array>; /** * Element that counts as "inside" for outside-click closing, typically a * `useTemplateRef()`. Without one, bind the returned `rootRef` instead. */ rootRef?: Ref; /** * Element focus returns to when the panel closes with `close(true)` (Escape). * Pass one when the trigger lives outside `rootRef`; otherwise bind the * returned `triggerRef` to the trigger element. */ triggerRef?: Ref; onOpen?: () => void; onClose?: () => void; } export interface UseDropdownStateReturn { isOpen: Ref; rootRef: Ref; /** Bind to the trigger element so Escape can return focus to it. */ triggerRef: Ref; open: () => void; /** Closes the panel; `returnFocus` moves focus back to `triggerRef`. */ close: (returnFocus?: boolean) => void; toggle: () => void; handleClickOutside: (event: MouseEvent) => void; handleKeydown: (event: KeyboardEvent) => void; } /** * Shared disclosure state for dropdown-style SDK components: open/close state, * outside-click and Escape closing, optional scroll/resize closing, and focus * return to the trigger. `close(returnFocus)` mirrors `useMenuKeyboard`'s * contract, so the two compose directly. */ export declare function useDropdownState(options?: UseDropdownStateOptions): UseDropdownStateReturn;