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

declare global {
    namespace Proto {
        /** 新增钻石商品接口请求 */
        interface AddZSGoodsReq {
            Header?: IMessageHead;
            UserID: number; // 用户ID，必填
            AccountID?: number; // 资金账户ID
            GZ_WRStandardExInfo: Partial<GZWRStandardExInfo>; // 钻石属性，对象中前4个字段必填
            AddType: number; // 类型1：新增商品2：新增并上架，必填
            PerformanceTemplateID?: number; // 履约模板ID,如果AddType=2时必填
            MarketID: number; // 市场ID必填
            ClientType: number; // 终端类型
            OrderSrc: number; // 委托来源
            ClientSerialNo: string; // 客户端流水号
        }

        /** 新增钻石商品接口响应 */
        interface AddZSGoodsRsp {
            Header?: IMessageHead; // 消息头
            RetCode?: number; // 返回码
            RetDesc?: string; // 描述信息
            UserID: number; // 用户ID
            AccountID: number; // 资金账户ID
            WRStandardID: number; // 现货商品ID
            WRFactorTypeID: number; // 仓单要素类型ID
            LadingBillID: number; // 提单ID
            SubNum: number; // 提单子单号
            ClientSerialNo: string; // 客户端流水号
        }

        /** 钻石属性 */
        interface GZWRStandardExInfo {
            ZSCategory: number; // 钻石分类,必填
            ZSCurrencyType: number; // 货币类型,必填
            GoodsNo: string; // 商品编号,必填
            WarehouseID: number; // 仓库ID,必填
            MarketPrice: number; // 市场价，两位小数
            ImagePath: string; // 商品照片
            WRPath: string; // 仓单扫描件
            Remark: string; // 备注
            Price: number; // 总价(价格)，两位小数
            Weight: number; // 总重量(克拉重量)，两位小数
            WeightAvg: number; // 平均单颗重量
            ZSShapeType: number[]; // 形状,1个或多个形状
            ZSColorType1: number; // 颜色1
            ZSColorType2: number; // 颜色2
            ZSClarityType1: number; // 净度1
            ZSClarityType2: number; // 净度2
            ZSCutType1: number; // 切工1
            ZSCutType2: number; // 切工2
            ZSSymmetryType1: number; // 对称度1
            ZSSymmetryType2: number; // 对称度2
            ZSPolishType1: number; // 抛光度1
            ZSPolishType2: number; // 抛光度2
            ZSFluorescenceType1: number; // 荧光1
            ZSFluorescenceType2: number; // 荧光2
            Size1: number; // 尺寸1
            Size2: number; // 尺寸2
            Size3: number; // 尺寸3
            ZSCertType: number; // 证书类型
            CerNo: string; // 证书编号
            ZSCrystalType: number[]; // 晶型范围
            CPCertNo: string; // 金伯利证书编号
            Origin: string; // 原产地
            KPWeight: string; // 金伯利证书重量
            KPPath: string; // 金伯利证书图片
            ZSStyleType: number; // 款式
            StoneDesc: string; // 配石描述
            SettingMaterial: string; // 镶嵌材料
            ZSCZColor1Type: number; // 彩钻颜色1
            ZSCZColor2Type: number; // 彩钻颜色2
            ZSCZColor3Type: number; // 彩钻颜色3
        }

        // 商品收藏操作接口请求
        interface GoodsFavoriteOperateReq {
            Header?: IMessageHead; // 消息头
            UserID: number; // 用户ID，必填
            WRTradeOrderID: Long; // 委托单ID，必填
            OperateType: number; // 操作类型，1:添加2:删除,必填
            ClientType: number; // 终端类型
            MarketID: number; // 市场ID,必填
            ClientSerialNo: string; // 客户端流水号
        }

        // 商品收藏操作接口应答
        interface GoodsFavoriteOperateRsp {
            Header?: IMessageHead; // 消息头
            RetCode: number; // 返回码
            RetDesc: string; // 描述信息
            UserID: number; // 用户ID
            WRTradeOrderID: number; // 委托单ID
            ClientSerialNo: string; // 客户端流水号
        }

        // 仓单服务公共协议结构
        interface WRCommon {
            UserID: number; // 用户ID
            RelatedOrderID: number; // 关联ID
            BusinessID?: number; // 业务ID
            TradeID: number; // 成交ID
            AccountID: number; // 账号ID
        }

        // 钻石出库申请接口请求
        interface ReceiptZSOutApplyReq {
            Header?: IMessageHead; // 消息头
            Common?: WRCommon; // 
            UserID: number; // 用户ID，必填
            AccountID: number; // 用户帐户ID
            WRStandardID?: number; // 现货品种ID
            WarehouseID?: number; // 仓库ID
            Mobile?: string; // 申请人手机号
            AppointmentDate?: string; // 预约日期
            AppointmentModel?: number; // 预约方式:1-物流3-自提
            CountryID?: number; // 国家
            ProvinceID?: number; // 省
            DistrictID?: number; // 区
            CityID?: number; // 市
            Address?: string; // 详细地址
            ContactName?: string; // 收货人提货人
            ContactNum?: string; // 收货人提货人手机
            AppointmentRemark?: string; // 预约备注
            LadingBillID: Long; // 提单ID，必填
            SubNum: number; // 提单子单号，必填
            Qty: number; // 出库数量，两位小数，必填
            Remark?: string; // 备注
            ApplyType: number; // 申请类型1:会员申请2：平台申请
            ClientType: number; // 终端类型
            ClientTicket: string; // 客户端流水号
        }

        // 钻石出库申请接口响应
        interface ReceiptZSOutApplyRsp {
            Header?: IMessageHead; // 消息头
            RetCode: number; // 返回码
            RetDesc: string; // 描述信息
            Common: WRCommon; // 
            ApplyID: number; // 申请ID
            ClientTicket: string; // 客户端流水号
        }
    }
}