import type { IndicatorProviderInfo, IndicatorData, IndicatorMap } from "./types";
/**
 * Normalize item ID to lowercase without braces for consistent matching.
 * Backend returns IDs like {GUID} but frontend uses lowercase without braces.
 */
export declare function normalizeItemId(id: string): string;
export interface UseNodeIndicatorsOptions {
    /** Item IDs to fetch indicators for (only new/unfetched IDs) */
    nodeIds: string[];
    /** Provider IDs to fetch (empty means all) */
    visibleProviders: string[];
    /** Language code */
    language: string;
    /** Version number (actual resolved version) - used to clear cache on version change */
    version?: number;
    /** Whether to enable fetching */
    enabled?: boolean;
    /** Existing indicators to preserve (for incremental fetching) */
    existingIndicators?: IndicatorMap;
    /** Callback when fetch completes with the fetched node IDs */
    onFetchComplete?: (fetchedIds: string[]) => void;
    /** Session ID to exclude from presence indicators (shows other sessions including own tabs) */
    sessionId?: string;
}
export interface UseNodeIndicatorsResult {
    /** Map of indicators: { [itemId]: { [providerId]: IndicatorData } } */
    indicators: IndicatorMap;
    /** Provider metadata from backend */
    providers: IndicatorProviderInfo[];
    /** Whether any data is still loading */
    isLoading: boolean;
    /** Error message if fetch failed */
    error: string | null;
    /** Trigger a refresh of specific node IDs (or all if not specified) */
    refresh: (nodeIdsToRefresh?: string[]) => void;
    /** Clear all cached indicators */
    clearCache: () => void;
}
/**
 * Hook for fetching and streaming indicator data with caching support.
 *
 * Streams indicators from the backend as they become available,
 * updating the UI progressively. Supports incremental fetching
 * where only new node IDs are fetched and merged with existing data.
 */
export declare function useNodeIndicators(options: UseNodeIndicatorsOptions): UseNodeIndicatorsResult;
/**
 * Get a single indicator for a specific item and provider.
 */
export declare function getIndicator(indicators: IndicatorMap, itemId: string, providerId: string): IndicatorData | undefined;
