namespace Download_Faturas
{
    using System.Text.Json.Serialization;

#pragma warning disable CS8618, SA1300, SA1402
    public class Rootobject
    {
        public string version { get; set; }

        public string md5 { get; set; }

        public string provider { get; set; }

        public Providerdata providerData { get; set; }

        public string locationNumber { get; set; }

        public string subclass { get; set; }

        public string subgroup { get; set; }

        public Customer customer { get; set; }

        public float losses { get; set; }

        public float totalCharges { get; set; }

        public string tariffModality { get; set; }

        public Dates dates { get; set; }

        public Measureditem[] measuredItems { get; set; }

        public Item[] items { get; set; }
    }

    public class Providerdata
    {
        public Name name { get; set; }

        public Cnpj cnpj { get; set; }
    }

    public class Name
    {
        public string value { get; set; }

        public string confidence { get; set; }
    }

    public class Cnpj
    {
        public string value { get; set; }

        public string confidence { get; set; }
    }

    public class Customer
    {
        public string cnpj { get; set; }

        public string name { get; set; }

        public Address address { get; set; }
    }

    public class Address
    {
        public string streetAndNumber { get; set; }

        public string city { get; set; }

        public string state { get; set; }

        public string zipCode { get; set; }

        public string district { get; set; }
    }

    public class Dates
    {
        public DateTime due { get; set; }

        public DateTime month { get; set; }

        public Reading reading { get; set; }
    }

    public class Reading
    {
        public DateTime periodFrom { get; set; }

        public DateTime periodUntil { get; set; }
    }

    public class Measureditem
    {
        public string type { get; set; }

        public string kind { get; set; }

        public string period { get; set; }

        public string[] texts { get; set; }

        [JsonConverter(typeof(FloatArrayOrSingleConverter))]
        public float[] measured { get; set; }
    }

    public class Item
    {
        public string type { get; set; }

        public string kind { get; set; }

        public string period { get; set; }

        public float billed { get; set; }

        public float? rate { get; set; }

        public float charge { get; set; }

        public float tusdRate { get; set; }

        public float teRate { get; set; }

        public string[] texts { get; set; }

        public float basicRate { get; set; }

        public float contract { get; set; }

        public string name { get; set; }

        public float? taxable { get; set; }

        public bool summable { get; set; }
    }
#pragma warning restore CS8618, SA1300, SA1402
}