/**
 * State management for GraphQL token popovers
 *
 * Handles hover delays, pinning, and multiple popover coordination
 */
export interface PopoverState {
    /** Currently visible popover (via hover) */
    hoveredId: string | null;
    /** Set of pinned popover 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 UsePopoverStateOptions {
    /** Delay before showing popover on hover (ms) */
    showDelay?: number;
    /** Delay before hiding popover on mouse leave (ms) */
    hideDelay?: number;
    /** Whether to allow multiple pinned popovers */
    allowMultiplePins?: boolean;
}
export interface UsePopoverStateReturn {
    /** Check if a popover should be visible */
    isOpen: (id: string) => boolean;
    /** Check if a popover 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 popover content hover (cancels hide) */
    onPopoverHover: (id: string) => void;
    /** Handle popover content leave (starts hide timer) */
    onPopoverLeave: (id: string) => void;
    /** Unpin a specific popover */
    unpin: (id: string) => void;
    /** Unpin all popovers */
    unpinAll: () => void;
}
export declare const usePopoverState: (options?: UsePopoverStateOptions) => UsePopoverStateReturn;
//# sourceMappingURL=use-popover-state.d.ts.map