const API_BASE = process.env.NEXT_PUBLIC_API_URL ?? ""; export interface RateData { symbol: string; markPrice: number; indexPrice: number; lastFundingRate: number; nextFundingTime: number; timestamp: number; } export interface RatesResponse { BTC: RateData; ETH: RateData; } export interface HistoryPoint { fundingTime: number; fundingRate: number; timestamp: string; } export interface HistoryResponse { BTC: HistoryPoint[]; ETH: HistoryPoint[]; } export interface AssetStats { mean7d: number; annualized: number; count: number; } export interface StatsResponse { BTC: AssetStats; ETH: AssetStats; combo: { mean7d: number; annualized: number }; } async function fetchAPI(path: string): Promise { const res = await fetch(`${API_BASE}${path}`, { cache: "no-store" }); if (!res.ok) throw new Error(`API error ${res.status}`); return res.json(); } export const api = { rates: () => fetchAPI("/api/rates"), history: () => fetchAPI("/api/history"), stats: () => fetchAPI("/api/stats"), health: () => fetchAPI<{ status: string }>("/api/health"), };