import { type AccountStorageV3 } from "codex-multi-auth/storage"; import type { CodexServiceClient } from "./client.js"; import { type LocalCodexCredentialStatus } from "./credentials.js"; import type { CodexAccountSummary, CodexQuotaSnapshotView } from "./protocol.js"; import { loadCodexQuotaUploads, type CodexQuotaUpload } from "./quota-cache.js"; import { type CodexSelection } from "./selection.js"; import type { CodexDesktopAppStatus } from "./types.js"; export interface LocalCodexPoolAccount { id: string; accountId?: string; label: string; email?: string; enabled: boolean; selected: boolean; accessExpiresAt?: number; quota?: CodexQuotaUpload; } export interface CodexLocalStatus { status: "READY"; readAt: number; total: number; available: number; accounts: LocalCodexPoolAccount[]; configured: boolean; officialAuthMatchesSelection: boolean; officialAuth: LocalCodexCredentialStatus; desktopApp?: CodexDesktopAppStatus; selection?: CodexSelection; } export interface CodexRemoteStatus { status: "SUCCESS" | "FAILED"; serviceUrl: string; syncedAt: number; accounts: Array; defaultAccountId?: string | null; error?: { code: string; message: string; }; } export interface CodexConsoleStatus { local: CodexLocalStatus; remote: CodexRemoteStatus; } export interface CodexStatusLoader { loadLocal(): Promise; loadRemote(): Promise; load(): Promise; } export interface CodexStatusDependencies { loadStorage?: () => Promise<{ storage: AccountStorageV3 | null; storagePath: string; }>; loadQuota?: typeof loadCodexQuotaUploads; inspectDesktopApp?: () => Promise; now?: () => number; } export declare function createCodexStatusLoader(configDirectory: string, client: CodexServiceClient, env?: NodeJS.ProcessEnv, dependencies?: CodexStatusDependencies): CodexStatusLoader;