///
import { autoUpdate, type Placement, shift as shiftMw } from '@floating-ui/react';
export type PopperLikePlacement = Placement | 'auto' | 'auto-start' | 'auto-end';
export type OffsetOpt = number | {
mainAxis?: number;
crossAxis?: number;
alignmentAxis?: number;
} | [crossAxis: number, mainAxis: number];
export type UsePopoverParams = {
placement?: PopperLikePlacement;
/** Add flip() when placement is not 'auto*' */
allowFlip?: boolean;
/** Keep in viewport; default true to match common popper setups */
allowShift?: boolean;
/** Extra options for Floating UI shift() middleware (merged with default padding: 8) */
shiftOptions?: Parameters[0];
/** The floating UI is fitted to the available space (by constraining its max size) instead of letting it overflow; default false */
fitAvailableSpace?: boolean;
/** Offset (number, object, or [crossAxis, mainAxis] tuple) */
offset?: OffsetOpt;
/**
* Freeze behavior like Popper's eventListeners: { scroll:false, resize:false }.
* If true → no autoUpdate (you can call `update()` manually).
*/
freeze?: boolean;
/**
* Fine-grained control of autoUpdate triggers (only if freeze=false).
* Defaults match Popper's "disabled" example when all set to false.
*/
autoUpdateOptions?: Partial[3]>;
};
export declare function usePopoverPosition({ allowFlip, allowShift, autoUpdateOptions, fitAvailableSpace, freeze, offset, placement, shiftOptions, }: UsePopoverParams): {
placement: Placement;
strategy: import("@floating-ui/utils").Strategy;
middlewareData: import("@floating-ui/core").MiddlewareData;
x: number;
y: number;
isPositioned: boolean;
update: () => void;
floatingStyles: import("react").CSSProperties;
refs: {
reference: import("react").MutableRefObject;
floating: import("react").MutableRefObject;
setReference: (node: import("@floating-ui/react-dom").ReferenceType | null) => void;
setFloating: (node: HTMLElement | null) => void;
} & import("@floating-ui/react").ExtendedRefs;
elements: {
reference: import("@floating-ui/react-dom").ReferenceType | null;
floating: HTMLElement | null;
} & import("@floating-ui/react").ExtendedElements;
context: {
x: number;
y: number;
placement: Placement;
strategy: import("@floating-ui/utils").Strategy;
middlewareData: import("@floating-ui/core").MiddlewareData;
isPositioned: boolean;
update: () => void;
floatingStyles: import("react").CSSProperties;
open: boolean;
onOpenChange: (open: boolean, event?: Event | undefined, reason?: import("@floating-ui/react").OpenChangeReason | undefined) => void;
events: import("@floating-ui/react").FloatingEvents;
dataRef: import("react").MutableRefObject;
nodeId: string | undefined;
floatingId: string | undefined;
refs: import("@floating-ui/react").ExtendedRefs;
elements: import("@floating-ui/react").ExtendedElements;
};
};
//# sourceMappingURL=usePopoverPosition.d.ts.map