/** * Hybrid stack status from the local indexer. */ const INDEXER = process.env.NEXT_PUBLIC_INDEXER_URL?.trim() || "http://127.0.0.1:4091"; export type RpcProbe = { url: string; ok: boolean; chainId?: number; blockNumber?: number; error?: string; }; export type HybridStatus = { ok: boolean; offline?: boolean; service?: string; mode?: string; privateLayer?: RpcProbe; publicLayer?: RpcProbe; sim?: { privateHeight: number; txCount: number; blockCount: number; pendingAnchors: number; postedAnchors: number; }; note?: string; }; export async function fetchHybridStatus(): Promise { try { const res = await fetch(`${INDEXER}/v1/hybrid`, { next: { revalidate: 0 }, signal: AbortSignal.timeout(2000), }); if (!res.ok) return { ok: false, offline: true, note: "Indexer returned an error." }; return (await res.json()) as HybridStatus; } catch { return { ok: false, offline: true, note: "Indexer is not running. Start with: bun run dev:indexer", }; } }