import { useState, useEffect, useCallback } from 'react'; type Fetcher = (...args: any[]) => Promise; interface UseHybridBackendReturn { data: T | null; isLoading: boolean; error: Error | null; refresh: () => void; } export function useHybridBackend( fetcher: Fetcher, deps: any[] = [] ): UseHybridBackendReturn { const [data, setData] = useState(null); const [isLoading, setIsLoading] = useState(true); const [error, setError] = useState(null); const [refreshCount, setRefreshCount] = useState(0); const fetchData = useCallback(async () => { setIsLoading(true); setError(null); try { const result = await fetcher(); setData(result); } catch (e) { setError(e instanceof Error ? e : new Error('An unknown error occurred')); } finally { setIsLoading(false); } // eslint-disable-next-line react-hooks/exhaustive-deps }, [...deps, refreshCount]); useEffect(() => { fetchData(); }, [fetchData]); const refresh = () => { setRefreshCount(prev => prev + 1); }; return { data, isLoading, error, refresh }; }