Files
gemini-nexus/src/types/account.ts
T
2025-12-23 01:38:53 +08:00

53 lines
1.2 KiB
TypeScript

import { z } from 'zod';
export interface Account {
id: string; // UUID
name: string;
email: string;
backup_file?: string;
avatar_url?: string;
created_at: string;
last_used: string;
}
export interface AccountBackupData {
version: string; // Backup format version
account: Account;
data: {
// Key-value pairs from Antigravity database
antigravityAuthStatus?: string;
'jetskiStateSync.agentManagerInitState'?: string;
[key: string]: unknown;
};
}
export interface AccountInfo {
email: string;
name?: string;
isAuthenticated: boolean;
}
// Zod Schemas for validation
export const AccountSchema = z.object({
id: z.string(), // Relaxed from .uuid()
name: z.string(), // Relaxed from .min(1)
email: z.string(), // Relaxed from .email()
backup_file: z.string().optional(),
avatar_url: z.string().optional(),
created_at: z.string(),
last_used: z.string(),
});
export const AccountBackupDataSchema = z.object({
version: z.string(),
account: AccountSchema,
data: z.record(z.string(), z.any()),
});
export const AccountInfoSchema = z.object({
email: z.string(), // Allow empty string for unauthenticated state
name: z.string().optional(),
isAuthenticated: z.boolean(),
});