import type { AccountProfile } from '../generated/api'; export interface InvitationKeyPair { publicKey: JsonWebKey; privateKey: JsonWebKey } export interface SigningKeyPair { publicKey: JsonWebKey; privateKey: JsonWebKey } /** Account vault v2: credentials and cached metadata, encrypted before transport. */ /** avatar 只在加密线程里有(发消息要带头像快照);界面这边通过 hasAvatar 判断,头像另取 */ export type PersonalProfile = Pick & { avatar?: string; hasAvatar?: boolean }; export interface ResourceDelete { id: string; modifiedAt: number } export interface VaultResource { domainKeys?: Record; id: string; kind: 'channel' | 'share'; mode: 'enc' | 'raw'; role: 'owner' | 'member'; link: string; ownerLink?: string; modifiedAt?: number; createdAt: number; expiresAt: number; creatorAccount?: string; name?: string; maxMembers: number; ttlSeconds?: number; maxDownloads?: number | null; maxVisitors?: number; mine?: boolean; state?: 'draft' | 'sealed'; } export interface VaultProfile { v: 3; keys: InvitationKeyPair & { signing: SigningKeyPair }; resources: VaultResource[]; deletes: ResourceDelete[] } /** 资料里头像的修改:换成新的(原图 + 缩略图)、保持不变、或移除(不传) */ export type AvatarChange = { avatar: string; thumb: string } | 'keep' | undefined;