export interface UseMenuHoverOptions {
    show: (options?: {
        skipAutoFocus?: boolean;
    }) => void;
    hide: () => void;
    isOpen: boolean;
    isEnabled: boolean;
    /** Delay before a hover opens the menu (ms). @default 150 */
    showDelay?: number;
    /** Delay before leaving the trigger or menu closes it (ms). @default 200 */
    hideDelay?: number;
    /**
     * Window after a hover-open in which a click confirms the menu instead of
     * closing it. 0 opts out, making every click toggle. @default 500
     */
    clickGuardMs?: number;
    /**
     * Selector for the menu's focusable items, forwarded to `useListFocus`. A
     * panel of links (a mega menu) needs an override; `role="menuitem"` rows do
     * not. @default '[role="menuitem"]'
     */
    itemSelector?: string;
    /**
     * The popup's DOM id (`usePopover().id`). Supply it when the popup is a
     * native `popover="auto"` and the trigger sits outside it; omit it for
     * `popover="manual"` popups and triggers inside the panel.
     */
    popoverId?: string;
    /**
     * Whether the hook moves focus on a click or keyboard open. False for
     * consumers that wire the pointer half only and leave focus to the popover's
     * own trap — a panel that is a dialog rather than a menu (`SideNavItem`'s
     * collapsed flyout) has no items for the hook to focus. @default true
     */
    ownsFocus?: boolean;
}
export interface UseMenuHoverReturn<T extends HTMLElement = HTMLElement> {
    triggerProps: {
        onClick: (event?: React.MouseEvent) => void;
        onMouseEnter: () => void;
        onMouseLeave: () => void;
        /** Present only when `popoverId` is supplied. */
        popoverTarget?: string;
    };
    contentProps: {
        onMouseEnter: () => void;
        onMouseLeave: () => void;
        onKeyDown: (e: React.KeyboardEvent) => void;
    };
    menuRef: React.RefObject<T | null>;
    /** Focus the first enabled item. Returns false when there was none. */
    focusFirst: () => boolean;
    /**
     * Focus the first enabled item, falling back to the menu container when the
     * menu is empty or still loading.
     */
    focusMenu: () => void;
    /**
     * For consumers with their own click handler: call this in the open branch.
     * Returns `true` when the click was the one following a hover-open — the menu
     * is now pinned and the click must NOT be treated as a dismissal.
     */
    confirmHoverOpen: () => boolean;
    /**
     * Close, restoring focus to the trigger. For dismiss affordances rendered
     * inside the popup, which are close buttons rather than the trigger and so
     * must not carry its toggle and keyboard-activation semantics.
     */
    close: () => void;
    setTriggerEl: (el: HTMLElement | null) => void;
}
export declare function useMenuHover<T extends HTMLElement = HTMLElement>(options: UseMenuHoverOptions): UseMenuHoverReturn<T>;
//# sourceMappingURL=useMenuHover.d.ts.map