export type CipherType = 'login' | 'secureNote' | 'card' | 'identity'; export type UriMatchStrategy = 'domain' | 'host' | 'startsWith' | 'exact' | 'regex' | 'never'; export interface LoginUri { uri: string; match?: UriMatchStrategy; } export type CustomFieldType = 'text' | 'hidden' | 'boolean' | 'linked'; export interface CustomField { name: string; value: string; type: CustomFieldType; } export interface PasswordHistoryEntry { password: string; lastUsedDate: string; } export interface LoginPayload { username?: string; password?: string; totp?: string; uris?: LoginUri[]; passwordHistory?: PasswordHistoryEntry[]; } export interface SecureNotePayload { notes?: string; } export interface CardPayload { cardholderName?: string; brand?: string; number?: string; expMonth?: string; expYear?: string; code?: string; } export interface IdentityPayload { title?: string; firstName?: string; middleName?: string; lastName?: string; address1?: string; address2?: string; city?: string; state?: string; postalCode?: string; country?: string; company?: string; email?: string; phone?: string; ssn?: string; username?: string; passportNumber?: string; licenseNumber?: string; } export interface VaultFolder { id: string; name: string; createdAt: string; updatedAt?: string; } export interface VaultItem { id: string; type: CipherType; name: string; notes?: string; favorite?: boolean; folderId?: string; fields?: CustomField[]; login?: LoginPayload; secureNote?: SecureNotePayload; card?: CardPayload; identity?: IdentityPayload; createdAt: string; updatedAt: string; }