/** State for a single tab's data, loading, and error. */
export interface TabState<T = unknown> {
    data: T | null;
    loading: boolean;
    error: string | null;
}
/** A function that fetches data for a tab given a feature ID. */
export type TabFetcher<T = unknown> = (featureId: string) => Promise<T>;
/** Map of tab keys to their fetcher functions. */
export type TabFetchers<K extends string> = Record<K, TabFetcher>;
/** Return type of the useTabDataFetch hook. */
export interface UseTabDataFetchResult<K extends string> {
    /** Per-tab state (data, loading, error). */
    tabs: Record<K, TabState>;
    /** Fetch data for a tab. Uses cache if already fetched. */
    fetchTab: (tab: K) => Promise<void>;
    /** Force re-fetch for a tab, bypassing cache. */
    refreshTab: (tab: K) => Promise<void>;
}
/**
 * Custom hook for lazy-loading tab data with per-tab caching.
 *
 * - Fetches data only when a tab is explicitly activated via fetchTab().
 * - Caches results so revisiting a loaded tab is instant.
 * - Clears all cached data when featureId changes.
 * - Supports force re-fetch via refreshTab() for SSE-driven updates.
 * - Uses ref-based callbacks to avoid stale closures (matches useArtifactFetch pattern).
 */
export declare function useTabDataFetch<K extends string>(featureId: string, fetchers: TabFetchers<K>): UseTabDataFetchResult<K>;
//# sourceMappingURL=use-tab-data-fetch.d.ts.map