using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace XYY.Service.Standard.ChannelApi.MIQ
{

    public class Surcharges
    {
        /// <summary>
        /// 
        /// </summary>
        public double surchargeAmount { get; set; }
        /// <summary>
        /// 
        /// </summary>
        public string surchargeCode { get; set; }
    }

    public class CreateLabelResult
    {
        /// <summary>
        /// 
        /// </summary>
        public string courierCode { get; set; }
        /// <summary>
        /// 
        /// </summary>
        public string currencyType { get; set; }
        /// <summary>
        /// 
        /// </summary>
        public double dimWeight { get; set; }
        /// <summary>
        /// 
        /// </summary>
        public string labelBase64 { get; set; }
        /// <summary>
        /// 
        /// </summary>
        public string labelFormat { get; set; }
        /// <summary>
        /// 
        /// </summary>
        public string portOfEntry { get; set; }
        /// <summary>
        /// 
        /// </summary>
        public double postage { get; set; }
        /// <summary>
        /// 
        /// </summary>
        public List<Surcharges> surcharges { get; set; }
        /// <summary>
        /// 
        /// </summary>
        public string trackingNumber { get; set; }
        /// <summary>
        /// 
        /// </summary>
        public string trackingNumberShort { get; set; }
        /// <summary>
        /// 
        /// </summary>
        public double weight { get; set; }
        /// <summary>
        /// 
        /// </summary>
        public string weightUom { get; set; }
        /// <summary>
        /// 
        /// </summary>
        public int zone { get; set; }
    }

    public class CreateLabelReponse: MIQApiResponse<CreateLabelResult>
    { }

    public class SubmitManifestReponse:MIQApiResponse<PushManifestResult>
    {

    }

    public class VoidLableReponse : MIQApiResponse<Object>
    { }

    public class MIQApiResponse<T>
    {
        /// <summary>
        /// 
        /// </summary>
        public int code { get; set; }
        /// <summary>
        /// 
        /// </summary>
        public string message { get; set; }
        /// <summary>
        /// 
        /// </summary>
        public T payload { get; set; }
        /// <summary>
        /// 
        /// </summary>
        public bool success { get; set; }
    }


    public class GetLabelResult
    {
        public string labelBase64 { get; set; }
    }

    public class GetLabelResponse : MIQApiResponse<GetLabelResult>
    { 
    
    }
}
