import type { DashboardSnapshot } from './render.js'; /** * Pure mapping from the tool's own data (registry + health probe + ledger + * active pointer) into a dashboard snapshot. Kept separate from the live loop * so the mapping is fully testable without any I/O. */ export interface SnapshotInput { accounts: Array<{ name: string; email?: string; plan?: string; enabled: boolean; priority: number; }>; /** Names currently logged in (from the health probe). */ loggedIn: Set; /** Live email/plan from the health probe, overriding the cached registry values. */ liveEmail?: Map; livePlan?: Map; /** Account name -> epoch ms it is capped until. */ cappedUntil: Map; /** Account name -> subscription usage (0..1 utilization per window). */ usage?: Map | null; }>; active: string | null; events: string[]; now: number; refreshMs: number; /** The model in use, when anything pins one. */ model?: string; /** Which ccx is drawing this. */ version?: string; /** Where rotation would go next, in words. See dashboard/next-up.ts. */ nextUp?: string; } export declare function toSnapshot(input: SnapshotInput): DashboardSnapshot;