export type Side = 'top' | 'right' | 'bottom' | 'left'; export type Alignment = 'start' | 'end'; export type Placement = Side | `${Side}-${Alignment}`; export type Strategy = 'absolute' | 'fixed'; export interface Middleware { name: string; fn(state: MiddlewareState): MiddlewareReturn; } export interface MiddlewareState { x: number; y: number; placement: Placement; initialPlacement: Placement; rects: { reference: DOMRect; floating: { width: number; height: number; }; }; elements: { reference: HTMLElement; floating: HTMLElement; }; middlewareData: Record; strategy: Strategy; } export interface MiddlewareReturn { x?: number; y?: number; data?: Record; reset?: boolean | { placement?: Placement; }; } export interface ComputePositionReturn { x: number; y: number; placement: Placement; strategy: Strategy; middlewareData: Record; } export declare function computePosition(reference: HTMLElement, floating: HTMLElement, options?: { placement?: Placement; strategy?: Strategy; middleware?: Middleware[]; }): Promise; export declare function offset(value: number | { mainAxis?: number; crossAxis?: number; }): Middleware; export declare function flip(options?: { padding?: number; }): Middleware; export declare function shift(options?: { padding?: number; }): Middleware; export declare function arrow(options: { element: HTMLElement; padding?: number; }): Middleware; export declare function size(options: { apply: (args: MiddlewareState & { availableWidth: number; availableHeight: number; }) => void; }): Middleware; export declare function autoUpdate(reference: HTMLElement, floating: HTMLElement, callback: () => void): () => void;