type UserRegisterInfo { username: string; name: string; gender: string; mail: string; password: string; salt: string; } type Token { id: string; special: boolean; ip: string; browser: string; isthis: boolean; } enum Gender { None = 0, Male = 1, Female = 2, Other = 3 } type Account { id: string; name: string; username: string; birthday: int; gender: Gender; } type Mail { mail: string; verified: boolean; primary: boolean; } type Phone { phone: string; verified: boolean; primary: boolean; } type ContactInfo { mail: Mail[]; phone: Phone[]; } enum TFAType { TOTP = 0, BACKUP_CODE = 1, WEBAUTHN = 2, APP_ALLOW = 3 } type TwoFactor { id: string; name?: string; expires?: int; tfatype: TFAType; } service AccountService { Register(regcode: string, info: UserRegisterInfo): void; GetProfile(): Account; UpdateProfile(info: Account): void; GetContactInfos(): ContactInfo; } service SecurityService { GetTokens(): Token[]; RevokeToken(id: string): void; GetTwofactorOptions(): TwoFactor[]; }