"use client"; import { useCallback, useEffect, useMemo, useState } from "react"; import { getFlowLedger } from "@/lib/api/client"; import type { FlowLedgerApiResponse } from "@/lib/api/types"; import { buildFlowLedger } from "@/lib/flow-ledger/build"; import type { FlowLedger } from "@/lib/flow-ledger/types"; export function useFlowLedger(runId: string) { const [input, setInput] = useState(null); const [loading, setLoading] = useState(true); const [error, setError] = useState(null); const load = useCallback(async () => { setLoading(true); setError(null); try { setInput(await getFlowLedger(runId, new URLSearchParams(window.location.search).get("debug") === "1")); } catch (err) { setError(err instanceof Error ? err.message : String(err)); } finally { setLoading(false); } }, [runId]); useEffect(() => { void load(); }, [load]); const ledger: FlowLedger | null = useMemo(() => (input ? buildFlowLedger(input) : null), [input]); return { input, ledger, loading, error, reload: load }; }