export interface TooltipPosition {
    x: number;
    y: number;
}
export interface TooltipBounds {
    width: number;
    height: number;
    containerRect: DOMRect;
}
export interface UseTooltipPositionOptions {
    /** Container element ref for boundary detection */
    containerRef: React.RefObject<HTMLElement | HTMLDivElement | null>;
    /** Padding from container edges (default: 10px) */
    padding?: number;
    /** Offset from cursor/element (default: 15px) */
    offset?: number;
    /** Whether to use mobile-optimized positioning */
    isMobile?: boolean;
    /** Animation configuration for smooth movement */
    animation?: {
        /** Animation duration in seconds (default: 0.08) */
        duration?: number;
        /** Animation easing (default: "easeOut") */
        ease?: string | number[];
        /** Whether to enable smooth animation (default: true) */
        enabled?: boolean;
    };
}
export interface TooltipData<T = any> {
    x: number;
    y: number;
    content: T;
}
export declare function useTooltipPosition({ containerRef, padding, offset, isMobile, animation, }: UseTooltipPositionOptions): {
    tooltipData: TooltipData<any> | null;
    tooltipRef: import("react").RefObject<HTMLDivElement | null>;
    showTooltip: <T>(content: T, position: TooltipPosition) => void;
    hideTooltip: () => void;
    updateTooltipPosition: (position: TooltipPosition) => void;
    handleMouseEnter: <T>(event: React.MouseEvent, content: T, svgCoordinates?: {
        x: number;
        y: number;
        dimensions: {
            width: number;
            height: number;
        };
    }) => void;
    handleMouseMove: (event: React.MouseEvent, svgCoordinates?: {
        x: number;
        y: number;
        dimensions: {
            width: number;
            height: number;
        };
    }) => void;
    handleMouseLeave: () => void;
    getMouseTooltipPosition: (event: React.MouseEvent) => TooltipPosition;
    getSVGTooltipPosition: (event: React.MouseEvent, svgX: number, svgY: number, actualDimensions: {
        width: number;
        height: number;
    }) => TooltipPosition;
    animationConfig: {
        animate: {
            x: number;
            y: number;
            opacity: number;
        } | {
            opacity: number;
            x?: undefined;
            y?: undefined;
        };
        transition: {
            duration: number | undefined;
            ease: string | number[] | undefined;
            type: string;
        } | {
            duration: number;
            ease?: undefined;
            type?: undefined;
        };
        initial: {
            opacity: number;
        };
        style: {
            position: "fixed";
            left: number;
            top: number;
            transform: string;
            willChange: string;
        } | {
            position?: undefined;
            left?: undefined;
            top?: undefined;
            transform?: undefined;
            willChange?: undefined;
        };
    };
};
