type Position = 'auto' | 'top' | 'bottom' | 'left' | 'right';
type Point = {
    x: number;
    y: number;
};
interface TooltipOptions {
    position: Position;
    defaultOpen?: boolean;
    gap?: number;
    enterDelay?: number;
    exitDelay?: number;
    hoverOnly?: boolean;
    animate?: boolean;
    pointer?: boolean;
}
declare class Tooltip {
    #private;
    container: HTMLElement;
    anchor: HTMLElement;
    tooltip: HTMLElement;
    options: TooltipOptions;
    resizeObserver: ResizeObserver | null;
    throttleUpdate: () => void;
    rafId: number | null;
    offset: number;
    isSticky: boolean;
    edgePadding: number;
    constructor(container: HTMLElement | null);
    processOptionsFromAttributes(): TooltipOptions;
    update(): void;
    bindEvents(): void;
    updatePosition(): void;
    updatePointer(position: Position | 'overlap', anchorCenter: Point, tooltipPosition: Point, tooltipWidth: number, tooltipHeight: number): void;
    determinePosition(anchorRect: DOMRect, tooltipWidth: number, tooltipHeight: number): Position | 'overlap';
    isAnchorInViewport(anchorRect: DOMRect): boolean;
    applyViewportConstraints(x: number, y: number, width: number, height: number): Point;
    throttle(fn: (...args: unknown[]) => void, delay: number): () => void;
    show(): void;
    hide(): void;
    getAnchor(): HTMLElement;
    isHoverOnly(): boolean;
    setSticky(sticky: boolean): void;
    isDefaultOpen(): boolean;
    destroy(): void;
}
declare function loadTooltips(): void;
