/** * Token storage cho 1 OAuth account. * * Lưu vào `~/.redai/oauth//.json` (chmod 600). * Đa số provider (Claude/Codex/Gemini) chỉ có 1 account → file `default.json`. * Multi-account (M4) thêm folder con + tên account. */ export interface OAuthTokenStorage { /** Provider type: claude | codex | gemini | ... */ type: string; /** Account identifier mặc định 'default'. */ account: string; /** OAuth access_token. */ accessToken: string; /** OAuth refresh_token (long-lived). */ refreshToken: string; /** Optional JWT id_token (Anthropic không trả nhưng Google CLI có). */ idToken?: string; /** Email account (informational, hiển thị trong status). */ email?: string; /** Unix ms khi access_token hết hạn. */ expiresAt: number; /** Unix ms lần cuối refresh. */ lastRefresh: number; /** Free-form metadata (provider-specific). */ metadata?: Record; } export declare function oauthDir(provider: string): string; export declare function oauthFilePath(provider: string, account?: string): string; export declare function saveToken(provider: string, token: OAuthTokenStorage): void; export declare function loadToken(provider: string, account?: string): OAuthTokenStorage | null; export declare function listAccounts(provider: string): string[]; export declare function deleteToken(provider: string, account?: string): void; export declare function listProvidersWithLogin(): string[];