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

declare global {
    namespace Proto {
        /** 货物明细列表 */
        interface GZCJCategoryDetail {
            OrderIndex: number; // 顺序,必填
            GZNo: string; // 货物编号,必填
            GZCJShapeType: number; // 形状,必填
            Weight: number; // 重量(CT),3位小数,必填
            Amount: number; // 参考货值(USD),2位小数,必填
            ColorInfo: string; // 彩钻信息
            Remark: string; // 备注
            GZCJMarkType: number; // 刻印服务,必填
            GZCJPublishType: number; // 是否披露处理,必填
            GZCJServiceType: number; // 服务类别,必填
            OriginCertNo: string; // 原证书号
        }

        /** 文件列表 */
        interface FileDetail {
            FileName: string; // 文件名
            FilePath: string; // 文件地址
        }

        /** 出境检测申请请求 */
        interface CJJCApplyReq {
            Header?: IMessageHead;
            UserID: number; // 用户ID,必填
            AccountID: number; // 资金账户ID,必填
            OperateID: number; // 操作人ID，LoginAccount的LoginID,必填
            OperateAccount: string; // 操作人账户，LoginAccount的LoginCode,LoginCode为空则填LoginID,必填
            GZCJAccountType: number; // 检测账户类型，枚举"GZCJAccountType"NUMBER(2),必填
            GZCJAccount: string; // 送检账户，GZCJAccountType=1:GIA自有账户
            CompanyNameCN: string; // 公司名称(中文)
            CompanyNameEn: string; // 公司名称(英文)
            AddressCN: string; // 地址(中文)
            AddressEN: string; // 地址(英文)
            ContactName: string; // 联系人姓名
            ContactPosition: string; // 联系人职位
            ContactPhoneNo: string; // 联系人电话
            Email: string; // 邮箱
            GZCJCategoryType: number; // 货物品类,必填
            ProcessingCountry: string; // 成品钻石加工国
            ZSOrigin: string; // 天然钻石毛坯原产地
            GZCJDeliveryType: number; // 收货方式,必填
            GZCJCategoryDetails: GZCJCategoryDetail[]; // 货物明细列表
            ApplyType: number; // 申请类型1：保存草稿2：修改草稿
            OrderID: Long; // 单据ID，ApplyType=2，3时，有则填
            ClientType: number; // 终端类型
            ClientSerialNo: string; // 客户端流水号
        }

        /** 出境检测申请响应 */
        interface CJJCApplyRsp {
            Header?: IMessageHead;
            RetCode: number; // 返回码
            RetDesc: string; // 描述信息
            UserID: number; // 用户ID
            AccountID: number; // 资金账号
            OrderID: number; // 单据ID
            ClientSerialNo: string; // 客户端流水号
        }

        /** 出境检测会员操作请求 */
        interface CJJCMemberOperateReq {
            Header?: IMessageHead;
            UserID: number; // 用户ID,必填
            OperateID: number; // 操作人ID,必填，LoginAccount的LoginID
            OperateAccount: string; // 操作人账户，LoginAccount的LoginCode,LoginCode为空则填LoginID,必
            OrderID: Long; // 单据ID,必填
            OperateType: number; // 操作类型,必填,1：撤回2:确认发货3:确认检测结果
            Remark?: string; // 备注
            ClientType: number; // 终端类型
            ClientSerialNo: string; // 客户端流水号
        }

        /** 出境检测会员操作响应 */
        interface CJJCMemberOperateRsp {
            Header?: IMessageHead;
            RetCode: number; // 返回码
            RetDesc: string; // 描述信息
            UserID: number; // 用户ID
            AccountID: number; // 资金账号
            ClientSerialNo: string; // 客户端流水号
        }

        /** 出境检测确认预付款生成文件接口请求 */
        interface CJJCConfirmMarginBuildFileReq {
            Header?: IMessageHead;
            OrderID: Long; // 单据ID,必填
        }

        /** 出境检测确认预付款生成文件接口响应 */
        interface CJJCConfirmMarginBuildFileRsp {
            Header?: IMessageHead;
            RetCode: number; // 返回码
            RetDesc: string; // 描述信息
            OrderID: number; // 单据ID,必填
            IsSuccess: number; // 返回码
        }

        /** 保税服务会员操作请求 */
        interface BSFWMemberOperateReq {
            Header?: IMessageHead;
            UserID: number; // 用户ID,必填
            OperateID: number; // 操作人ID,必填，LoginAccount的LoginID
            OperateAccount: string; // 操作人账户，LoginAccount的LoginCode,LoginCode为空则填LoginID,必
            OrderID: Long; // 单据ID,必填
            OperateType: number; // 操作类型,必填,1:上传发货单2：上传盖章单据3：确认预付款
            FileDetails: FileDetail[]; // 文件列表
            Remark: string; // 备注
            GZBSDeliveryType?: number; // 收货方式，OperateType=1:上传发货单时必填，枚举“GZBSDeliveryType”
            OtherLogistics: string; // 指定其它物流，OperateType=1:上传发货单时填写
            ClientType: number; // 终端类型
            ClientSerialNo: string; // 客户端流水号
        }

        /** 保税服务会员操作响应 */
        interface BSFWMemberOperateRsp {
            Header?: IMessageHead;
            RetCode: number; // 返回码
            RetDesc: string; // 描述信息
            UserID: number; // 用户ID
            AccountID: number; // 资金账号
            ClientSerialNo: string; // 客户端流水号
        }
    }
}