/** * Type definitions for OpenCode usage stats */ export type TokenUsage = { input: number; output: number; reasoning: number; cache: { read: number; write: number; }; }; export type MessageJson = { id: string; sessionID: string; role: "user" | "assistant"; model?: { providerID: string; modelID: string; }; modelID?: string; providerID?: string; tokens?: TokenUsage; cost?: number; time?: { created?: number; completed?: number; }; }; export type ProviderStats = { input: number; output: number; cacheWrite: number; cacheRead: number; reasoning: number; cost: number; models: Set; }; export type DailyStats = { date: string; models: Set; providers: Set; providerStats: Map; input: number; output: number; cacheWrite: number; cacheRead: number; reasoning: number; cost: number; }; export type ModelPricing = { input: number; output: number; cacheWrite: number; cacheRead: number; }; /** Unified quota snapshot for display */ export type QuotaSnapshot = { source: "anthropic" | "antigravity" | "codex"; label: string; used: number; resetAt?: number; error?: string; }; /** Cursor state for incremental message loading (SQLite-backed) */ export type CursorState = { lastTimestamp: number; }; /** Anthropic multi-account state file structure */ export type MultiAccountState = { currentAccount?: string; requestCount?: number; config?: { threshold?: number | { session5h?: number; weekly7d?: number; weekly7dSonnet?: number; }; }; usage?: Record; }; export type MultiAccountThresholds = { session5h: number; weekly7d: number; weekly7dSonnet: number; }; export type CodexThresholds = { fiveHour: number; weekly: number; }; /** Antigravity quota group */ export type AntigravityQuotaGroup = { remainingFraction: number; resetTime?: string; }; /** Antigravity accounts file structure */ export type AntigravityAccount = { email?: string; disabled?: boolean; cachedQuota?: { claude?: AntigravityQuotaGroup; "gemini-pro"?: AntigravityQuotaGroup; "gemini-flash"?: AntigravityQuotaGroup; }; cachedQuotaUpdatedAt?: number; }; export type AntigravityAccountsFile = { accounts: AntigravityAccount[]; }; /** Codex API response structure */ export type CodexUsageResponse = { user_id?: string; account_id?: string; plan_type?: string; rate_limit?: { primary_window?: { used_percent: number; reset_at: number; }; secondary_window?: { used_percent: number; reset_at: number; }; }; code_review_rate_limit?: { primary_window?: { used_percent: number; reset_at: number; }; }; };