import { IMessageHead } from '@/services/socket/trade/protobuf/proto'

declare global {
    namespace Proto {
        /** 用户登录请求 */
        interface LoginReq {
            Header?: IMessageHead;
            LoginID: string; // 登录ID
            LoginPWD: string; // 登录密码
            LoginType: number; // 登陆类型
            ClientType: number; // 终端软件类型
            Version: string; // 终端软件版本号
            MobilePhone?: string; // 移动电话
            GUID: string; // 唯一标识码
            LoginIp?: string; // 登录IP地址
            LoginPort?: number; // 登陆通信端口
            DeviceID: string; // 设备标识
            EnvironmentInfo?: string; // 软件环境信息
            LoginCode?: string; // 登陆码
            ClientSystemInfo?: number; // 终端系统信息
            ClientAppID?: string; // 终端AppID
        }

        /** 用户登录应答 */
        interface LoginRsp {
            Header?: IMessageHead; // 消息头
            RetCode?: number; // 返回码
            RetDesc?: string; // 描述信息
            LoginID: number; // 登录ID
            LoginUserType: number; // 登陆用户类型
            AccountStatus: number; // 用户状态
            UserID: number; // 用户ID
            MemberUserID: number; // 用户所属会员用户ID
            AccountIDs: number[]; // 账户ID列表(有权限的)
            Token: string; // 用户令牌
            SystemTime?: number; // 系统时间
            HasUpdatedPwd?: number; // 是否已更改密码
            PwdWrongCnt?: number; // 当前密码输入错误次数
            PwdWrongLockCnt?: number; // 登陆账号锁定密码输入错误次数
            LoginLockHourNum?: number; // 登陆账号锁定时长(小时)
            LoginCode: string; // 登陆码
            ClientSystemInfo?: number; // 终端系统信息
            ClientID: number; // 终端ID(登陆服务分配，用于通道交易关联链路)
        }

        /** 用户令牌校验请求 */
        interface TokenCheckReq {
            Header?: IMessageHead; // 消息头
            LoginID: number; // 登陆账户ID
            Token: string; // 用户令牌
            SystemTime?: number; // 校验时的系统时间
            CheckType?: number; // 校验类型
        }

        /** 用户令牌校验响应 */
        interface TokenCheckRsp {
            Header?: IMessageHead; // 消息头
            RetCode: number; // 返回码
            RetDesc: string; // 描述信息
            LoginID: number; // 登陆账户ID
            TokenStatus: number; // 令牌状态
            LoginUserType: number; // 登陆用户类型
            UserID: number; // 用户ID
            MemberUserID: number; // 用户所属会员用户ID
            AccountIDs: number; // 账户ID列表(有权限的)
            SystemTime: number; // 返回服务器最新时间
        }

        /** 用户登出应答 */
        interface LogoutRsp {
            Header?: IMessageHead; // 消息头
            RetCode: number; // 返回码
            RetDesc?: string; // 描述信息
        }

        // 修改账户密码请求
        interface ModifyPwdReq {
            Header?: IMessageHead; // 消息头
            ModifyPwdType: number; // 修改密码类型1：登陆密码2：资金账户密码
            ModifyPwdID: number; // 被修改的ID(ModifyType=1:LoginIDModifyType=2:AccountID)
            OldPwd: string; // 旧资金密码
            NewPwd: string; // 新资金密码
        }

        // 修改账户密码应答
        interface ModifyPwdRsp {
            Header?: IMessageHead; // 消息头
            RetCode: number; // 返回码
            RetDesc: string; // 描述信息
        }

        // 投资者销户申请请求
        interface InvestorDelReq {
            Header?: IMessageHead;
            UserID: number; // 用户ID
            ImageUrl?: string; // 图片地址
        }

        // 投资者销户申请请求响应
        interface InvestorDelRsp {
            Header?: IMessageHead;
            RetCode: number; // 返回码
            RetDesc: string; // 描述信息
        }
    }
}