import { useMemo } from 'react'; import { useQuery } from '@tanstack/react-query'; import { getBtcUsdRate, getBtcRates } from '@/lib/exchangeRateService'; /** * Hook to fetch and cache BTC/USD exchange rate */ export function useExchangeRate() { return useQuery({ queryKey: ['btc-usd-rate'], queryFn: getBtcUsdRate, staleTime: 60000, // Consider stale after 1 minute refetchInterval: 120000, // Refetch every 2 minutes retry: 2, retryDelay: 1000, }); } /** All BTC → fiat rates (Coinbase) + `sats`. For multi-currency conversion. */ export function useBtcRates() { return useQuery({ queryKey: ['btc-rates'], queryFn: getBtcRates, staleTime: 60000, refetchInterval: 120000, retry: 2, retryDelay: 1000, }); } /** * Hook to convert sats to USD with current exchange rate */ export function useSatsToUsd(sats: number | null | undefined) { const { data: rate } = useExchangeRate(); return useMemo(() => { if (!sats || !rate) return null; return (sats / 100000000) * rate; }, [sats, rate]); } /** * Hook to convert USD to sats with current exchange rate */ export function useUsdToSats(usd: number | null | undefined) { const { data: rate } = useExchangeRate(); return useMemo(() => { if (!usd || !rate) return null; return Math.floor((usd / rate) * 100000000); }, [usd, rate]); }