import type { CSSProperties, MaybeRefOrGetter, Ref } from "vue"; export type XyOverlayPlacement = "bottom" | "bottomLeft" | "bottomRight" | "left" | "leftBottom" | "leftTop" | "right" | "rightBottom" | "rightTop" | "top" | "topLeft" | "topRight"; export type XyOverlayStrategy = "absolute" | "fixed"; export interface XyOverlayRect { bottom: number; height: number; left: number; right: number; top: number; width: number; } export interface XyOverlayBoundary { height: number; width: number; } export interface XyOverlayPositionOptions { boundary?: XyOverlayBoundary; offset?: number; placement?: XyOverlayPlacement; strategy?: XyOverlayStrategy; viewportPadding?: number; } export interface XyOverlayPosition { left: number; placement: XyOverlayPlacement; strategy: XyOverlayStrategy; top: number; transformOrigin: string; } export interface XyUseOverlayPositionOptions { anchorRect?: MaybeRefOrGetter; autoAdjust?: MaybeRefOrGetter; boundary?: MaybeRefOrGetter; offset?: MaybeRefOrGetter; open?: MaybeRefOrGetter; overlayRef: Ref; placement?: MaybeRefOrGetter; strategy?: MaybeRefOrGetter; triggerRef: Ref; viewportPadding?: MaybeRefOrGetter; } export declare function createOverlayStack(base?: number): { current(): number; next(): number; reset(nextBase?: number): void; }; export declare const xyOverlayStack: { current(): number; next(): number; reset(nextBase?: number): void; }; export declare function getOverlayTransformOrigin(placement: XyOverlayPlacement): "bottom center" | "top center" | "right center" | "left center"; export declare function getOverlayPosition(triggerRect: XyOverlayRect, overlayRect: Pick, options?: XyOverlayPositionOptions): XyOverlayPosition; export declare function useOverlayPosition(options: XyUseOverlayPositionOptions): { cleanup: () => void; overlayStyle: import("vue").ComputedRef; position: Ref; updatePosition: () => void; updatePositionAfterRender: () => Promise; };