import type {
    AutoUpdateOptions,
    ComputePositionConfig,
    ComputePositionReturn,
    Middleware,
} from "@floating-ui/dom";

export interface FloatingUIModules {
    autoUpdate: (
        reference: Element,
        floating: HTMLElement,
        update: () => void,
        options?: AutoUpdateOptions
    ) => () => void;
    flip: (options?: any) => Middleware;
    computePosition: (
        reference: Element,
        floating: HTMLElement,
        options?: Partial<ComputePositionConfig>
    ) => Promise<ComputePositionReturn>;
    shift: (options?: any) => Middleware;
    offset: (options?: any) => Middleware;
    arrow: (options?: any) => Middleware;
    inline: (options?: any) => Middleware;
}

export function load(): Promise<FloatingUIModules>;
