import * as React from 'react'; import { type OpenChangeReason, type FloatingRootContext } from '@floating-ui/react'; import type { GenericHTMLProps } from '../../utils/types'; import type { TransitionStatus } from '../../utils/useTransitionStatus'; export declare function usePopoverRoot(params: usePopoverRoot.Parameters): usePopoverRoot.ReturnValue; export declare namespace usePopoverRoot { interface Parameters { /** * Whether the popover popup is open by default. Use when uncontrolled. * @default false */ defaultOpen?: boolean; /** * Whether the popover popup is open. Use when controlled. * @default false */ open?: boolean; /** * Callback fired when the popover popup is requested to be opened or closed. Use when * controlled. */ onOpenChange?: (isOpen: boolean, event?: Event, reason?: OpenChangeReason) => void; /** * Whether the popover popup opens when the trigger is hovered after the provided `delay`. * @default false */ openOnHover?: boolean; /** * The delay in milliseconds until the popover popup is opened when `openOnHover` is `true`. * @default 300 */ delay?: number; /** * The delay in milliseconds until the popover popup is closed when `openOnHover` is `true`. * @default 0 */ closeDelay?: number; /** * The delay type to use when `openOnHover` is `true`. `rest` means the `delay` represents how * long the user's cursor must rest on the trigger before the popover popup is opened. `hover` * means the `delay` represents how long to wait as soon as the user's cursor has entered the * trigger. * @default 'rest' */ delayType?: 'rest' | 'hover'; /** * Whether the popover popup element stays mounted in the DOM when closed. * @default false */ keepMounted?: boolean; /** * Whether the popover can animate, adding animation-related attributes and allowing for exit * animations to play. Useful to disable in tests to remove async behavior. * @default true */ animated?: boolean; } interface ReturnValue { open: boolean; setOpen: (open: boolean, event?: Event, reason?: OpenChangeReason) => void; mounted: boolean; setMounted: React.Dispatch>; transitionStatus: TransitionStatus; titleId: string | undefined; setTitleId: React.Dispatch>; descriptionId: string | undefined; setDescriptionId: React.Dispatch>; floatingRootContext: FloatingRootContext; getRootTriggerProps: (externalProps?: GenericHTMLProps) => GenericHTMLProps; getRootPopupProps: (externalProps?: GenericHTMLProps) => GenericHTMLProps; instantType: 'dismiss' | 'click' | undefined; triggerElement: Element | null; setTriggerElement: React.Dispatch>; positionerElement: HTMLElement | null; setPositionerElement: React.Dispatch>; popupRef: React.RefObject; } }