import { Placement as FloatingUIPlacement, Middleware } from '@floating-ui/react';
import { RefObject } from 'react';

export type Placement = FloatingUIPlacement;
export type Modifiers = Middleware[];
export type ReferenceProp = ReferenceObject | HTMLElement | RefObject<HTMLElement>;
export interface ReferenceObject {
    top: number;
    left: number;
    height: number;
    width: number;
}
export interface PositionOptions {
    reference?: Element | ReferenceObject;
    floating?: HTMLElement;
    placement?: Placement;
    modifiers?: Modifiers;
    followCursor?: boolean;
}
/**
 * Hook for positioning an element relative to another.
 */
export declare const usePosition: ({ reference, floating, followCursor, placement, modifiers }?: PositionOptions) => {
    refs: {
        reference: import('react').MutableRefObject<import("@floating-ui/react-dom").ReferenceType>;
        floating: import('react').MutableRefObject<HTMLElement>;
        setReference: (node: import('@floating-ui/react-dom').ReferenceType) => void;
        setFloating: (node: HTMLElement) => void;
    } & import('@floating-ui/react').ExtendedRefs<import("@floating-ui/react").ReferenceType>;
    anchorRef: import('react').MutableRefObject<import("@floating-ui/react-dom").ReferenceType> & import('react').MutableRefObject<import("@floating-ui/react").ReferenceType>;
    floatingRef: import('react').MutableRefObject<HTMLElement>;
    floatingStyles: import('react').CSSProperties;
    update: () => void;
};
