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

declare global {
    namespace Proto {
        /** 签约请求 */
        interface t2bBankSignReq {
            Header?: IMessageHead;
            ExtOperatorID: number; // 外部操作流水号
            ExchId: string; // 交易所编号
            TradeDate: string; // 交易所业务日期
            ExchTicket: string; // 交易所流水号
            AccountCode: string; // 账户
            AccountName: string; // 客户名称
            CusBankID: string; // 托管银行编号
            OperateType: number; // 变更类型[1-增加;2-修改;4-绑卡;
            IsForce: number; // 是否强制[0-否;1-是]强制，只更新中心签约信息，不发送银行。用于银行信息不一致的情况
            Currency: string; // 币种
            AccountType: number; // 账户类型[1-对私;2-对公]
            OpenBankAccId: string; // 银行卡行号
            ForceSignBankAccountNo: string; // 银行账户[强制签约时填写]
            ForceSignBankAccountName: string; // 银行账户名称[强制签约时填写]
            BankAccountNo: string; // 银行账户
            BankAccountName: string; // 银行账户名称
            ExBankName: string; // 开户行名称
            OpenBankNo: string; // 开户支行编号
            OpenBankName: string; // 开户支行名称
            CertType: string; // 证件类型
            CertID: string; // 证件号码
            BankAccountPWD: string; // 银行账户密码
            AgentName: string; // 授权代理人姓名
            AgentCertType: number; // 授权代理人证件类型
            AgentCertID: string; // 授权代理人证件号
            BankAccountType: number; // 银行账户类型
            BankProvince: string; // 开户银行所在省份
            BankCity: string; // 开户银行所在市
            BankCardType: number; // 银行卡类型
            MobilePhone: string; // 移动电话
            IdentifyCode: string; // 验证码
            email: string; // 电子邮箱
            extend_info: string; // 扩展信息（JSON串，参考配置要求进行填充）
        }

        /** 签约应答 */
        interface t2bBankSignRsp {
            Header?: IMessageHead;
            RetCode: number; // 返回码
            RetDesc: string; // 描述信息
            ExtOperatorID: number; // 外部操作流水号
            AccountCode: string; // 账户
            NetAddr: string; // 网络地址（当这里有网址时，应自动跳转网页）
            Status: number; // 状态（0成功,其他数值参考银行服务的错误码）
            ExchTicket: string; // 交易所流水号
            ExchId: string; // 交易所编号
            TradeDate: string; // 交易所业务日期
            CenterTicket: string; // 中心流水号
            CenterErrCode: string; // 返回码
            CenterErrMsg: string; // 返回结果说明
            bankChildAcc: string; // 银行账号
            bankChildAccName: string; // 银行账户名
            BankId: string; // 银行卡行号
            BankAccNum: string; // 银行卡号
            BankAccName: string; // 银行卡户名
        }

        /** 解约请求 */
        interface t2bBankCancelSignReq {
            Header?: IMessageHead;
            ExtOperatorID: number; // 外部操作流水号
            ExchId?: string; // 交易所编号
            AccountCode: string; // 账户
            CusBankID: string; // 托管银行编号
            IsForce: number; // 是否强制
            Currency: string; // 币种
            TradeDate?: string; // 交易所业务日期
            ExchTicket?: string; // 交易所流水号
            BankChildAcc?: string; // 银行子账号
            BankChildAccName?: string; // 银行子账号名
        }

        /** 解约应答 */
        interface t2bBankCancelSignRsp {
            Header?: IMessageHead;
            RetCode: number; // 返回码
            RetDesc: string; // 描述信息
            ExtOperatorID: number; // 外部操作流水号
            AccountCode: string; // 账户
            NetAddr: string; // 网络地址（当这里有网址时，应自动跳转网页）
            Status: number; // 状态（0成功,其他数值参考银行服务的错误码）
            ExchTicket: string; // 交易所流水号
            ExchId: string; // 交易所编号
            TradeDate: string; // 交易所业务日期
            CenterTicket: string; // 中心流水号
            CenterErrCode: string; // 返回码
            CenterErrMsg: string; // 返回结果说明
        }

        /** 出金请求 */
        interface t2bBankWithdrawReq {
            Header?: IMessageHead;
            ExtOperatorID: number; // 外部操作流水号
            ExchId: string; // 交易所编号
            AccountCode: string; // 资金账户
            CusBankID: string; // 托管银行编号
            Currency: string; // 币种
            AccountType: number; // 账户类型
            BankChildAccount: string; // 银行子账号
            BankChildAccountName: string; // 银行子账号名
            OpenCardBankId: string; // 银行卡行号
            BankAccoutNum: string; // 银行卡号
            BankAccoutName: string; // 银行卡户名
            Amount: number; // 出金金额
            AppDateTime: string; // 申请日期和时间
            OldTaPWD: string; // 资金密码
            Desc: string; // 备注
            IdentifyCode: string; // 验证码
            BranchBankName: string; // 收款支行名称
            extend_info: string; // 扩展信息（JSON串，参考配置要求进行填充）
            Remark: string; // 备注
            ExchTicket: string; // 交易所流水号
        }

        /** 出金应答 */
        interface t2bBankWithdrawRsp {
            Header?: IMessageHead;
            RetCode: number; // 返回码
            RetDesc: string; // 描述信息
            ExtOperatorID: number; // 外部操作流水号
            Status: number; // 状态（0成功,其他数值参考银行服务的错误码）
            ExchTicket: string; // 交易所流水号
            ExchId: string; // 交易所编号
            TradeDate: string; // 交易日
            CenterTicket: string; // 中心流水号
            CenterErrCode: string; // 中心返回码
            CenterErrMsg: string; // 中心返回结果说明
            CerterCheckDate: string; // 中心对账日期
            NetAddr: string; // 网络地址（当这里有网址时，应自动跳转网页）
        }

        /** 入金请求 */
        interface t2bBankDepositReq {
            Header?: IMessageHead;
            ExtOperatorID: number; // 外部操作流水号
            CusBankID: string; // 托管银行编号
            ExchId: string; // 交易所编号
            TradeDate: string; // 交易日
            ExchTicket: string; // 交易所流水号
            AccountCode: string; // 资金账户
            BusinessNo: string; // 银行业务编号
            BankChildAccount: string; // 银行子账号
            BankChildAccountName: string; // 银行子账号名
            OldTaPWD: string; // 资金密码
            Amount: number; // 金额
            Currency: string; // 币种
            Remark: string; // 备注
            OpenCardBankId: string; // 银行卡行号
            BankAccoutNum: string; // 银行卡号
            BankAccoutName: string; // 银行卡户名
            extend_info: string; // 扩展信息（JSON串，参考配置要求进行填充）
        }

        /** 入金应答 */
        interface t2bBankDepositRsp {
            Header?: IMessageHead;
            RetCode: number; // 返回码
            RetDesc: string; // 描述信息
            ExtOperatorID: number; // 外部操作流水号
            Status: number; // 状态（0成功,其他数值参考银行服务的错误码）
            ExchTicket: string; // 交易所流水号
            ExchId: string; // 交易所编号
            TradeDate: string; // 交易日
            CenterTicket: string; // 中心流水号
            CenterErrCode: string; // 中心返回码
            CenterErrMsg: string; // 中心返回结果说明
            CerterCheckDate: string; // 中心对账日期
            NetAddr: string; // 网络地址（当这里有网址时，应自动跳转网页）
        }
    }
}