import * as React from 'react'; import { type FocusOutsideEvent, type InteractOutsideEvent } from './dismissal.js'; export type { FocusOutsideEvent, InteractOutsideEvent } from './dismissal.js'; interface UseDismissOptions { /** Whether dismiss listeners are active (usually the open state). */ enabled: boolean; /** Called on Escape keydown. */ onEscapeKeyDown?: ((event: KeyboardEvent) => void) | undefined; /** Called on pointerdown outside every element in `insideRefs`. */ onPointerDownOutside?: ((event: PointerEvent) => void) | undefined; /** Called when focus moves to an element outside every element in `insideRefs`. */ onFocusOutside?: ((event: FocusOutsideEvent) => void) | undefined; /** * Called for either kind of outside interaction, immediately before the * specific handler above, with the same event object — so a single * `preventDefault()` here vetoes the dismissal either way. */ onInteractOutside?: ((event: InteractOutsideEvent) => void) | undefined; /** * Extra "inside" region, as a selector matched against the target with * `closest()` — for elements `insideRefs` can't reach, like a submenu panel * portalled out of the menu it belongs to. */ insideSelector?: string | undefined; } /** Layer dismissal behavior shared by every dismissible overlay; only reports, since the caller decides dismissal meaning by checking `event.defaultPrevented`. */ export declare function useDismiss({ enabled, onEscapeKeyDown, onPointerDownOutside, onFocusOutside, onInteractOutside, insideSelector, }: UseDismissOptions, insideRefs: Array>): void;