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

declare global {
    namespace Proto {
        /** 钻石买挂牌接口请求 */
        interface ZSBuyOrderListingReq {
            Header?: IMessageHead;
            UserID: number; // 用户ID，必填
            AccountID: number; // 资金账号，必填
            GZ_BuyOrderDetailExInfo: GZBuyOrderDetailExInfo; // 钻石买摘牌属性
            PerformanceTemplateID?: number; // 履约计划模板ID
            MarketID: number; // 市场ID,必填
            OrderSrc: number; // 委托来源
            ClientOrderTime?: string; // 客户端委托时间
            ClientType?: number; // 终端类型
            ClientSerialNo: string; // 客户端流水号
        }

        /** 钻石买挂牌接口应答 */
        interface ZSBuyOrderListingRsp {
            Header?: IMessageHead; // 消息头
            RetCode?: number; // 返回码
            RetDesc?: string; // 描述信息
            UserID: number; // 用户ID
            AccountID: number; // 资金账户ID
            WRTradeOrderID: number; // 仓单贸易委托单ID
            OrderTime: string; // 接收委托交易的时间
            ClientSerialNo: string; // 客户端流水号
        }

        /** 钻石买摘牌属性 */
        interface GZBuyOrderDetailExInfo {
            UserID: number; // 用户ID
            AccountID: number; // 资金账户ID
            ZSCategory: number; // 钻石分类
            ZSCurrencyType: number[]; // 货币类型
            ZSShapeType: number[]; // 形状
            ZSColorType: number[]; // 颜色
            ZSClarityType: number[]; // 净度
            ZSCutType: number[]; // 切工
            ZSSymmetryType: number[]; // 对称度
            ZSPolishType: number[]; // 抛光度
            ZSFluorescenceType: number[]; // 荧光
            Size: number[]; // 尺寸
            ZSCrystalType: number[]; // 晶型
            Origin: string; // 原产地
            ZSStyleType: number[]; // 款式
            ZSCZColor1Type: number[]; // 彩钻颜色1
            ZSCZColor2Type?: number[]; // 彩钻颜色2
            ZSCZColor3Type?: number[]; // 彩钻颜色3
            Remark?: string; // 备注
            WarehouseIDs?: number[]; // 仓库ID
        }

        /** 钻石卖挂牌接口请求 */
        interface ZSSellOrderListingReq {
            Header?: IMessageHead;
            UserID: number; // 用户ID，必填
            AccountID: number; // 资金账户ID，必填
            WRStandardID: number; // 现货商品ID，必填
            WRFactorTypeID?: number; // 仓单要素类型ID，必填
            OrderQty: number; // 挂牌数量,必填2位小数，为WeigthAvg的整数倍
            LadingBillID: Long; // 提单ID,必填
            SubNum: number; // 提单子单号,必填
            PerformanceTemplateID?: number; // 履约计划模板ID
            TimevalidType: number; // 时间有效类型
            ValidTime?: string; // 有效期限
            OrderSrc: number; // 委托来源
            ClientSerialNo: string; // 客户端流水号
            ClientOrderTime: string; // 客户端委托时间
            ClientType: number; // 终端类型
            MarketID: number; // 市场ID,必填
        }

        /** 钻石卖挂牌接口响应 */
        interface ZSSellOrderListingRsp {
            Header?: IMessageHead; // 消息头
            RetCode?: number; // 返回码
            RetDesc?: string; // 描述信息
            UserID: number; // 用户ID
            AccountID: number; // 资金账户ID
            WRTradeOrderID: number; // 仓单贸易委托单ID
            FreezeQty: number; // 冻结数量
            OrderTime: string; // 接收委托交易的时间
            ClientSerialNo: string; // 客户端流水号
        }

        /** 钻石买摘牌接口请求 */
        interface ZSBuyOrderDestingReq {
            Header?: IMessageHead; // 消息头
            UserID: number; // 用户ID，必填
            AccountID: number; // 资金账号，必填
            RelatedWRTradeOrderID: Long; // 卖委托单号，必填
            OrderQty: number; // 委托数量,必填2位小数，为WeigthAvg的整数倍
            OrderSrc: number; // 委托来源
            ClientSerialNo: string; // 客户端流水号
            ClientOrderTime: string; // 客户端委托时间
            ClientType: number; // 终端类型
            OperatorID: number; // 操作员账号ID
            MarketID: number; // 市场ID,必填
        }

        /** 钻石买摘牌接口响应 */
        interface ZSBuyOrderDestingRsp {
            Header?: IMessageHead; // 消息头
            RetCode: number; // 返回码
            RetDesc: string; // 描述信息
            UserID: number; // 用户ID
            AccountID: number; // 资金账号
            WRTradeOrderID: number; // 仓单贸易委托单ID
            RelatedWRTradeOrderID: number; // 关联委托单号(摘牌委托关联挂牌委托单ID)
            FreezeAmount: number; // 冻结货款
            OrderTime: string; // 接收委托交易的时间
            ClientSerialNo: string; // 客户端流水号
        }

        /** 买摘牌询价接口请求 */
        interface ZSBuyOrderDestingNegPriceReq {
            Header?: IMessageHead; // 消息头
            UserID: number; // 用户ID，必填
            AccountID: number; // 资金账号，必填
            RelatedOrderID: Long; // 卖委托单号，必填
            OrderQty: number; // 议价数量，2位小数，必填
            ApplyPrice?: number; // 协议价格，2位小数，必填
            OrderSrc: number; // 委托来源
            ClientSerialNo?: string; // 客户端流水号
            ClientOrderTime?: string; // 客户端委托时间
            ClientType: number; // 终端类型
            OperatorID: number; // 操作员账号ID
            MarketID: number; // 市场ID,必填
            ApplyRemark: string; // 申请备注
        }

        /** 买摘牌询价接口应答 */
        interface ZSBuyOrderDestingNegPriceRsp {
            Header?: IMessageHead; // 消息头
            RetCode: number; // 返回码
            RetDesc: string; // 描述信息
            UserID: number; // 用户ID
            AccountID: number; // 资金账号
            WRTradeOrderID: number; // 摘牌委托单ID
            WRBargainID: number; // 议价申请单ID
            OrderTime: string; // 接收委托交易的时间
            ClientSerialNo: string; // 客户端流水号
        }

        /** 钻石买询价操作接口请求 */
        interface ZSBuyOrderDestingNegPriceOperateReq {
            Header?: IMessageHead; // 消息头
            UserID: number; // 用户ID，必填
            AccountID: number; // 资金账号，必填
            WRBargainID: Long; // 议价申请单ID，必填
            AuditRemark?: string; // 备注
            OperateType: number; // 操作类型，1：撤销2:拒绝
            MarketID: number; // 市场ID,必填
            ClientType: number; // 终端类型
            OrderSrc: number; // 委托来源
            ClientSerialNo: string; // 客户端流水号
        }

        /** 钻石买询价操作接口应答 */
        interface ZSBuyOrderDestingNegPriceOperateRsp {
            Header?: IMessageHead; // 消息头
            RetCode: number; // 返回码
            RetDesc: string; // 描述信息
            UserID: number; // 用户ID
            AccountID: number; // 资金账号
            WRBargainID: number; // 卖委托单号
            ClientSerialNo: string; // 客户端流水号
        }

        /** 钻石卖摘牌申请接口请求 */
        interface ZSSellOrderDestingApplyReq {
            Header?: IMessageHead; // 消息头
            UserID: number; // 用户ID，必填
            AccountID: number; // 资金账户ID，必填
            BuyWRTradeOrderID: Long; // 买挂牌委托单ID,必填
            WRStandardID: number; // 现货商品ID，必填
            WRFactorTypeID?: number; // 仓单要素类型ID，必填
            ApplyQty: number; // 申请数量,必填，2位小数
            ApplyPrice?: number; // 申请价格，必填，2位小数
            LadingBillID: Long; // 提单ID,必填
            SubNum: number; // 提单子单号,必填
            ApplyRemark?: string; // 备注
            ClientType: number; // 终端类型
            ClientSerialNo: string; // 客户端流水号
            MarketID: number; // 市场ID,必填
        }

        /** 钻石卖摘牌申请接口响应 */
        interface ZSSellOrderDestingApplyRsp {
            Header?: IMessageHead; // 消息头
            RetCode: number; // 返回码
            RetDesc: string; // 描述信息
            UserID: number; // 用户ID
            AccountID: number; // 资金账号
            ApplyID: number; // 仓单贸易委托单ID
            ClientSerialNo: string; // 客户端流水号
        }

        /** 钻石卖询价操作接口请求 */
        interface ZSSellOrderDestingApplyOperateReq {
            Header?: IMessageHead; // 消息头
            UserID: number; // 用户ID，必填
            AccountID: number; // 资金账号
            SellDelistingApplyID: Long; // 卖摘牌申请ID，必填
            AuditRemark?: string; // 备注
            OperateType: number; // 操作类型，1：撤销2:拒绝
            MarketID: number; // 市场ID,必填
            ClientType: number; // 终端类型
            OrderSrc: number; // 委托来源
            ClientSerialNo: string; // 客户端流水号
        }

        /** 钻石卖询价操作接口应答 */
        interface ZSSellOrderDestingApplyOperateRsp {
            Header?: IMessageHead; // 消息头
            RetCode: number; // 返回码
            RetDesc: string; // 描述信息
            UserID: number; // 用户ID
            AccountID: number; // 资金账号
            SellDelistingApplyID: number; // 卖摘牌申请ID
            WRTradeOrderID: number; // 仓单贸易委托单ID
            FreezeAmount: number; // 冻结货款
            OrderTime: string; // 接收委托交易的时间
            ClientSerialNo: string; // 客户端流水号
        }

        /** 钻石挂牌撤单请求 */
        interface WRListingCancelOrderReq {
            Header?: IMessageHead; // 消息头
            UserID: number; // 用户ID
            AccountID: number; // 资金账号
            OldWRTradeOrderID: Long; // 目标仓单贸易委托单ID
            OrderSrc: number; // 委托来源
            ClientSerialNo: string; // 客户端流水号
            ClientOrderTime: string; // 客户端委托时间
            ClientType: number; // 终端类型
            OperatorID: number; // 操作员账号ID
            BuyOrSell: number; // 买卖方向
            WRID?: number; // 仓单ID,卖的时候填写
        }

        /** 钻石挂牌撤单应答 */
        interface WRListingCancelOrderRsp {
            Header?: IMessageHead; // 消息头
            RetCode: number; // 返回码
            RetDesc: string; // 描述信息
            WRTradeCancelID: number; // 仓单贸易撤单号
            OldWRTradeOrderID: number; // 目标仓单贸易委托单ID
            UserID: number; // 用户ID
            AccountID: number; // 资金账号
            CancelQty: number; // 撤单数量
            OrderTime: string; // 接受撤单的时间
            ClientSerialNo: string; // 客户端流水号
        }
    }
}