207 lines
4.7 KiB
TypeScript
207 lines
4.7 KiB
TypeScript
// ============ Commands ============
|
|
export class AutoCreateAccountCommand {
|
|
constructor(
|
|
public readonly deviceId: string,
|
|
public readonly deviceName?: string,
|
|
public readonly inviterReferralCode?: string,
|
|
public readonly provinceCode?: string,
|
|
public readonly cityCode?: string,
|
|
) {}
|
|
}
|
|
|
|
export class RecoverByMnemonicCommand {
|
|
constructor(
|
|
public readonly accountSequence: number,
|
|
public readonly mnemonic: string,
|
|
public readonly newDeviceId: string,
|
|
public readonly deviceName?: string,
|
|
) {}
|
|
}
|
|
|
|
export class RecoverByPhoneCommand {
|
|
constructor(
|
|
public readonly accountSequence: number,
|
|
public readonly phoneNumber: string,
|
|
public readonly smsCode: string,
|
|
public readonly newDeviceId: string,
|
|
public readonly deviceName?: string,
|
|
) {}
|
|
}
|
|
|
|
export class AutoLoginCommand {
|
|
constructor(
|
|
public readonly refreshToken: string,
|
|
public readonly deviceId: string,
|
|
) {}
|
|
}
|
|
|
|
export class RegisterCommand {
|
|
constructor(
|
|
public readonly phoneNumber: string,
|
|
public readonly smsCode: string,
|
|
public readonly deviceId: string,
|
|
public readonly provinceCode: string,
|
|
public readonly cityCode: string,
|
|
public readonly deviceName?: string,
|
|
public readonly inviterReferralCode?: string,
|
|
) {}
|
|
}
|
|
|
|
export class LoginCommand {
|
|
constructor(
|
|
public readonly phoneNumber: string,
|
|
public readonly smsCode: string,
|
|
public readonly deviceId: string,
|
|
) {}
|
|
}
|
|
|
|
export class BindPhoneNumberCommand {
|
|
constructor(
|
|
public readonly userId: string,
|
|
public readonly phoneNumber: string,
|
|
public readonly smsCode: string,
|
|
) {}
|
|
}
|
|
|
|
export class UpdateProfileCommand {
|
|
constructor(
|
|
public readonly userId: string,
|
|
public readonly nickname?: string,
|
|
public readonly avatarUrl?: string,
|
|
public readonly address?: string,
|
|
) {}
|
|
}
|
|
|
|
export class BindWalletAddressCommand {
|
|
constructor(
|
|
public readonly userId: string,
|
|
public readonly chainType: string,
|
|
public readonly address: string,
|
|
) {}
|
|
}
|
|
|
|
export class SubmitKYCCommand {
|
|
constructor(
|
|
public readonly userId: string,
|
|
public readonly realName: string,
|
|
public readonly idCardNumber: string,
|
|
public readonly idCardFrontUrl: string,
|
|
public readonly idCardBackUrl: string,
|
|
) {}
|
|
}
|
|
|
|
export class ReviewKYCCommand {
|
|
constructor(
|
|
public readonly userId: string,
|
|
public readonly approved: boolean,
|
|
public readonly reason?: string,
|
|
) {}
|
|
}
|
|
|
|
export class RemoveDeviceCommand {
|
|
constructor(
|
|
public readonly userId: string,
|
|
public readonly currentDeviceId: string,
|
|
public readonly deviceIdToRemove: string,
|
|
) {}
|
|
}
|
|
|
|
export class SendSmsCodeCommand {
|
|
constructor(
|
|
public readonly phoneNumber: string,
|
|
public readonly type: 'REGISTER' | 'LOGIN' | 'BIND' | 'RECOVER',
|
|
) {}
|
|
}
|
|
|
|
// ============ Queries ============
|
|
export class GetMyProfileQuery {
|
|
constructor(public readonly userId: string) {}
|
|
}
|
|
|
|
export class GetMyDevicesQuery {
|
|
constructor(
|
|
public readonly userId: string,
|
|
public readonly currentDeviceId: string,
|
|
) {}
|
|
}
|
|
|
|
export class GetUserByReferralCodeQuery {
|
|
constructor(public readonly referralCode: string) {}
|
|
}
|
|
|
|
// ============ Results ============
|
|
export interface AutoCreateAccountResult {
|
|
userId: string;
|
|
accountSequence: number;
|
|
referralCode: string;
|
|
mnemonic: string;
|
|
walletAddresses: { kava: string; dst: string; bsc: string };
|
|
accessToken: string;
|
|
refreshToken: string;
|
|
}
|
|
|
|
export interface RecoverAccountResult {
|
|
userId: string;
|
|
accountSequence: number;
|
|
nickname: string;
|
|
avatarUrl: string | null;
|
|
referralCode: string;
|
|
accessToken: string;
|
|
refreshToken: string;
|
|
}
|
|
|
|
export interface AutoLoginResult {
|
|
userId: string;
|
|
accountSequence: number;
|
|
accessToken: string;
|
|
refreshToken: string;
|
|
}
|
|
|
|
export interface RegisterResult {
|
|
userId: string;
|
|
accountSequence: number;
|
|
referralCode: string;
|
|
accessToken: string;
|
|
refreshToken: string;
|
|
}
|
|
|
|
export interface LoginResult {
|
|
userId: string;
|
|
accountSequence: number;
|
|
accessToken: string;
|
|
refreshToken: string;
|
|
}
|
|
|
|
export interface UserProfileDTO {
|
|
userId: string;
|
|
accountSequence: number;
|
|
phoneNumber: string | null;
|
|
nickname: string;
|
|
avatarUrl: string | null;
|
|
referralCode: string;
|
|
province: string;
|
|
city: string;
|
|
address: string | null;
|
|
walletAddresses: Array<{ chainType: string; address: string }>;
|
|
kycStatus: string;
|
|
kycInfo: { realName: string; idCardNumber: string } | null;
|
|
status: string;
|
|
registeredAt: Date;
|
|
lastLoginAt: Date | null;
|
|
}
|
|
|
|
export interface DeviceDTO {
|
|
deviceId: string;
|
|
deviceName: string;
|
|
addedAt: Date;
|
|
lastActiveAt: Date;
|
|
isCurrent: boolean;
|
|
}
|
|
|
|
export interface UserBriefDTO {
|
|
userId: string;
|
|
accountSequence: number;
|
|
nickname: string;
|
|
avatarUrl: string | null;
|
|
}
|