/**
 * State management for GraphQL document tooltips
 *
 * Handles hover delays, pinning, and multiple tooltip coordination
 */
export interface TooltipState {
    /** Currently visible tooltip (via hover) */
    hoveredId: string | null;
    /** Set of pinned tooltip IDs */
    pinnedIds: Set<string>;
    /** ID pending show (waiting for delay) */
    pendingShowId: string | null;
    /** ID pending hide (waiting for grace period) */
    pendingHideId: string | null;
}
export interface UseTooltipStateOptions {
    /** Delay before showing tooltip on hover (ms) */
    showDelay?: number;
    /** Delay before hiding tooltip on mouse leave (ms) */
    hideDelay?: number;
    /** Whether to allow multiple pinned tooltips */
    allowMultiplePins?: boolean;
}
export interface UseTooltipStateReturn {
    /** Check if a tooltip should be visible */
    isOpen: (id: string) => boolean;
    /** Check if a tooltip is pinned */
    isPinned: (id: string) => boolean;
    /** Handle hover start */
    onHoverStart: (id: string) => void;
    /** Handle hover end */
    onHoverEnd: (id: string) => void;
    /** Handle click (toggle pin) */
    onTogglePin: (id: string) => void;
    /** Handle tooltip content hover (cancels hide) */
    onTooltipHover: (id: string) => void;
    /** Unpin a specific tooltip */
    unpin: (id: string) => void;
    /** Unpin all tooltips */
    unpinAll: () => void;
}
export declare const useTooltipState: (options?: UseTooltipStateOptions) => UseTooltipStateReturn;
//# sourceMappingURL=use-tooltip-state.d.ts.map