import type { AgentRunRow, BondDetail, BondInvestigationResponse, BondSummary, DashboardSummary, HistoryResponse, InvestigationRow, IssuerDetail, ManagerDashboard, } from "@/types/api"; const BASE = "/api"; async function req(path: string, init?: RequestInit): Promise { const r = await fetch(`${BASE}${path}`, { headers: { "content-type": "application/json" }, ...init, }); if (!r.ok) throw new Error(`${r.status} ${r.statusText} — ${path}`); return r.json() as Promise; } export const api = { health: () => req<{ status: string; version: string }>("/health"), dashboardSummary: () => req("/dashboard/summary"), listBonds: (params: Record = {}) => { const q = new URLSearchParams( Object.entries(params).map(([k, v]) => [k, String(v)]), ).toString(); return req(`/bonds${q ? `?${q}` : ""}`); }, bondDetail: (id: string) => req(`/bonds/${encodeURIComponent(id)}`), bondHistory: (id: string, windowDays = 60) => req(`/bonds/${encodeURIComponent(id)}/history?window_days=${windowDays}`), listInvestigations: (status?: string) => req(`/investigations${status ? `?status=${status}` : ""}`), caseAgentRuns: (caseId: number) => req(`/investigations/${caseId}/agent-runs`), issuerDetail: (id: string) => req(`/issuers/${encodeURIComponent(id)}`), methodology: () => req>(`/methodology`), bondInvestigation: (id: string) => req(`/bonds/${encodeURIComponent(id)}/investigation`), runInvestigation: (id: string) => req<{ case_id: number; status: string; recommended_action: string | null }>( `/bonds/${encodeURIComponent(id)}/investigate`, { method: "POST" }, ), managerKpis: () => req("/manager/kpis"), };