export type ValueRef = string;
export type SectionRef = string;
export interface Mapping {
    meta: MappingMetaInformation;
    'ubl:Invoice': {
        'cbc:CustomizationID'?: ValueRef;
        'cbc:ProfileID'?: ValueRef;
        'cbc:ID': ValueRef;
        'cbc:IssueDate': ValueRef;
        'cbc:DueDate'?: ValueRef;
        'cbc:InvoiceTypeCode': ValueRef;
        'cbc:Note'?: ValueRef;
        'cbc:TaxPointDate'?: ValueRef;
        'cbc:DocumentCurrencyCode': ValueRef;
        'cbc:TaxCurrencyCode'?: ValueRef;
        'cbc:AccountingCost'?: ValueRef;
        'cbc:BuyerReference'?: ValueRef;
        'cac:InvoicePeriod'?: DELIVERYORINVOICEPERIOD;
        'cac:OrderReference'?: ORDERANDSALESORDERREFERENCE;
        'cac:BillingReference'?: {
            section?: SectionRef;
            'cac:InvoiceDocumentReference': INVOICEDOCUMENTREFERENCE;
        };
        'cac:DespatchDocumentReference'?: DESPATCHADVICEREFERENCE;
        'cac:ReceiptDocumentReference'?: RECEIPTADVICEREFERENCE;
        'cac:OriginatorDocumentReference'?: TENDERORLOTREFERENCE;
        'cac:ContractDocumentReference'?: CONTRACTREFERENCE;
        'cac:AdditionalDocumentReference'?: {
            section?: SectionRef;
            'cbc:ID': ValueRef;
            'cbc:ID@schemeID'?: ValueRef;
            'cbc:DocumentTypeCode'?: ValueRef;
            'cbc:DocumentDescription'?: ValueRef;
            'cac:Attachment'?: ATTACHMENT;
        };
        'cac:ProjectReference'?: PROJECTREFERENCE;
        'cac:AccountingSupplierParty': SELLER;
        'cac:AccountingCustomerParty': BUYER;
        'cac:PayeeParty'?: PAYEE;
        'cac:TaxRepresentativeParty'?: SELLERTAXREPRESENTATIVEPARTY;
        'cac:Delivery'?: DELIVERYINFORMATION;
        'cac:PaymentMeans'?: {
            section?: SectionRef;
            'cbc:PaymentMeansCode': ValueRef;
            'cbc:PaymentMeansCode@name'?: ValueRef;
            'cbc:PaymentID'?: ValueRef;
            'cac:CardAccount'?: PAYMENTCARDINFORMATION;
            'cac:PayeeFinancialAccount'?: CREDITTRANSFER;
            'cac:PaymentMandate'?: DIRECTDEBIT;
        };
        'cac:PaymentTerms'?: PAYMENTTERMS;
        'cac:AllowanceCharge'?: {
            section?: SectionRef;
            'cbc:ChargeIndicator': ValueRef;
            'cbc:AllowanceChargeReasonCode'?: ValueRef;
            'cbc:AllowanceChargeReason'?: ValueRef;
            'cbc:MultiplierFactorNumeric'?: ValueRef;
            'cbc:Amount': ValueRef;
            'cbc:Amount@currencyID'?: ValueRef;
            'cbc:BaseAmount'?: ValueRef;
            'cbc:BaseAmount@currencyID'?: ValueRef;
            'cac:TaxCategory': TAXCATEGORY;
        };
        'cac:TaxTotal': {
            section?: SectionRef;
            'cbc:TaxAmount': ValueRef;
            'cbc:TaxAmount@currencyID'?: ValueRef;
            'cac:TaxSubtotal'?: {
                section?: SectionRef;
                'cbc:TaxableAmount': ValueRef;
                'cbc:TaxableAmount@currencyID'?: ValueRef;
                'cbc:TaxAmount': ValueRef;
                'cbc:TaxAmount@currencyID'?: ValueRef;
                'cac:TaxCategory': VATCATEGORY;
            };
        };
        'cac:LegalMonetaryTotal': DOCUMENTTOTALS;
        'cac:InvoiceLine': {
            section?: SectionRef;
            'cbc:ID': ValueRef;
            'cbc:Note'?: ValueRef;
            'cbc:InvoicedQuantity': ValueRef;
            'cbc:InvoicedQuantity@unitCode'?: ValueRef;
            'cbc:LineExtensionAmount': ValueRef;
            'cbc:LineExtensionAmount@currencyID'?: ValueRef;
            'cbc:AccountingCost'?: ValueRef;
            'cac:InvoicePeriod'?: INVOICELINEPERIOD;
            'cac:OrderLineReference'?: ORDERLINEREFERENCE;
            'cac:DocumentReference'?: LINEOBJECTIDENTIFIER;
            'cac:AllowanceCharge'?: {
                section?: SectionRef;
                'cbc:ChargeIndicator': ValueRef;
                'cbc:AllowanceChargeReasonCode'?: ValueRef;
                'cbc:AllowanceChargeReason'?: ValueRef;
                'cbc:MultiplierFactorNumeric'?: ValueRef;
                'cbc:Amount': ValueRef;
                'cbc:Amount@currencyID'?: ValueRef;
                'cbc:BaseAmount'?: ValueRef;
                'cbc:BaseAmount@currencyID'?: ValueRef;
            };
            'cac:Item': ITEMINFORMATION;
            'cac:Price': PRICEDETAILS;
        };
    };
    [k: string]: unknown;
}
export interface MappingMetaInformation {
    sectionColumn: {
        [k: string]: string;
    };
    empty?: string[];
}
export interface DELIVERYORINVOICEPERIOD {
    'cbc:StartDate'?: ValueRef;
    'cbc:EndDate'?: ValueRef;
    'cbc:DescriptionCode'?: ValueRef;
}
export interface ORDERANDSALESORDERREFERENCE {
    'cbc:ID'?: ValueRef;
    'cbc:SalesOrderID'?: ValueRef;
}
export interface INVOICEDOCUMENTREFERENCE {
    'cbc:ID': ValueRef;
    'cbc:IssueDate'?: ValueRef;
}
export interface DESPATCHADVICEREFERENCE {
    'cbc:ID': ValueRef;
}
export interface RECEIPTADVICEREFERENCE {
    'cbc:ID': ValueRef;
}
export interface TENDERORLOTREFERENCE {
    'cbc:ID': ValueRef;
}
export interface CONTRACTREFERENCE {
    'cbc:ID': ValueRef;
}
export interface ATTACHMENT {
    'cbc:EmbeddedDocumentBinaryObject'?: ValueRef;
    'cbc:EmbeddedDocumentBinaryObject@mimeCode'?: ValueRef;
    'cbc:EmbeddedDocumentBinaryObject@filename'?: ValueRef;
    'cac:ExternalReference'?: EXTERNALREFERENCE;
}
export interface EXTERNALREFERENCE {
    'cbc:URI': ValueRef;
}
export interface PROJECTREFERENCE {
    'cbc:ID': ValueRef;
}
export interface SELLER {
    'cac:Party': PARTY;
}
export interface PARTY {
    'cbc:EndpointID': ValueRef;
    'cbc:EndpointID@schemeID'?: ValueRef;
    'cac:PartyIdentification'?: {
        section?: SectionRef;
        'cbc:ID': ValueRef;
        'cbc:ID@schemeID'?: ValueRef;
    };
    'cac:PartyName'?: PARTYNAME;
    'cac:PostalAddress': SELLERPOSTALADDRESS;
    'cac:PartyTaxScheme'?: {
        section?: SectionRef;
        'cbc:CompanyID': ValueRef;
        'cac:TaxScheme': TAXSCHEME;
    };
    'cac:PartyLegalEntity': PARTYLEGALENTITY;
    'cac:Contact'?: SELLERCONTACT;
}
export interface PARTYNAME {
    'cbc:Name': ValueRef;
}
export interface SELLERPOSTALADDRESS {
    'cbc:StreetName'?: ValueRef;
    'cbc:AdditionalStreetName'?: ValueRef;
    'cbc:CityName'?: ValueRef;
    'cbc:PostalZone'?: ValueRef;
    'cbc:CountrySubentity'?: ValueRef;
    'cac:AddressLine'?: ADDRESSLINE;
    'cac:Country': COUNTRY;
}
export interface ADDRESSLINE {
    'cbc:Line': ValueRef;
}
export interface COUNTRY {
    'cbc:IdentificationCode': ValueRef;
}
export interface TAXSCHEME {
    'cbc:ID': ValueRef;
}
export interface PARTYLEGALENTITY {
    'cbc:RegistrationName': ValueRef;
    'cbc:CompanyID'?: ValueRef;
    'cbc:CompanyID@schemeID'?: ValueRef;
    'cbc:CompanyLegalForm'?: ValueRef;
}
export interface SELLERCONTACT {
    'cbc:Name'?: ValueRef;
    'cbc:Telephone'?: ValueRef;
    'cbc:ElectronicMail'?: ValueRef;
}
export interface BUYER {
    'cac:Party': PARTY1;
}
export interface PARTY1 {
    'cbc:EndpointID': ValueRef;
    'cbc:EndpointID@schemeID'?: ValueRef;
    'cac:PartyIdentification'?: PARTYIDENTIFICATION;
    'cac:PartyName'?: PARTYNAME1;
    'cac:PostalAddress': BUYERPOSTALADDRESS;
    'cac:PartyTaxScheme'?: PARTYVATIDENTIFIER;
    'cac:PartyLegalEntity': PARTYLEGALENTITY1;
    'cac:Contact'?: BUYERCONTACT;
}
export interface PARTYIDENTIFICATION {
    'cbc:ID': ValueRef;
    'cbc:ID@schemeID'?: ValueRef;
}
export interface PARTYNAME1 {
    'cbc:Name': ValueRef;
}
export interface BUYERPOSTALADDRESS {
    'cbc:StreetName'?: ValueRef;
    'cbc:AdditionalStreetName'?: ValueRef;
    'cbc:CityName'?: ValueRef;
    'cbc:PostalZone'?: ValueRef;
    'cbc:CountrySubentity'?: ValueRef;
    'cac:AddressLine'?: ADDRESSLINE1;
    'cac:Country': COUNTRY1;
}
export interface ADDRESSLINE1 {
    'cbc:Line': ValueRef;
}
export interface COUNTRY1 {
    'cbc:IdentificationCode': ValueRef;
}
export interface PARTYVATIDENTIFIER {
    'cbc:CompanyID': ValueRef;
    'cac:TaxScheme': TAXSCHEME1;
}
export interface TAXSCHEME1 {
    'cbc:ID': ValueRef;
}
export interface PARTYLEGALENTITY1 {
    'cbc:RegistrationName': ValueRef;
    'cbc:CompanyID'?: ValueRef;
    'cbc:CompanyID@schemeID'?: ValueRef;
}
export interface BUYERCONTACT {
    'cbc:Name'?: ValueRef;
    'cbc:Telephone'?: ValueRef;
    'cbc:ElectronicMail'?: ValueRef;
}
export interface PAYEE {
    'cac:PartyIdentification'?: PARTYIDENTIFICATION1;
    'cac:PartyName': PARTYNAME2;
    'cac:PartyLegalEntity'?: PARTYLEGALENTITY2;
}
export interface PARTYIDENTIFICATION1 {
    'cbc:ID': ValueRef;
    'cbc:ID@schemeID'?: ValueRef;
}
export interface PARTYNAME2 {
    'cbc:Name': ValueRef;
}
export interface PARTYLEGALENTITY2 {
    'cbc:CompanyID': ValueRef;
    'cbc:CompanyID@schemeID'?: ValueRef;
}
export interface SELLERTAXREPRESENTATIVEPARTY {
    'cac:PartyName': PARTYNAME3;
    'cac:PostalAddress': SELLERTAXREPRESENTATIVEPOSTALADDRESS;
    'cac:PartyTaxScheme': PARTYVATIDENTIFIER1;
}
export interface PARTYNAME3 {
    'cbc:Name': ValueRef;
}
export interface SELLERTAXREPRESENTATIVEPOSTALADDRESS {
    'cbc:StreetName'?: ValueRef;
    'cbc:AdditionalStreetName'?: ValueRef;
    'cbc:CityName'?: ValueRef;
    'cbc:PostalZone'?: ValueRef;
    'cbc:CountrySubentity'?: ValueRef;
    'cac:AddressLine'?: ADDRESSLINE2;
    'cac:Country': COUNTRY2;
}
export interface ADDRESSLINE2 {
    'cbc:Line': ValueRef;
}
export interface COUNTRY2 {
    'cbc:IdentificationCode': ValueRef;
}
export interface PARTYVATIDENTIFIER1 {
    'cbc:CompanyID': ValueRef;
    'cac:TaxScheme': TAXSCHEME2;
}
export interface TAXSCHEME2 {
    'cbc:ID': ValueRef;
}
export interface DELIVERYINFORMATION {
    'cbc:ActualDeliveryDate'?: ValueRef;
    'cac:DeliveryLocation'?: {
        'cbc:ID'?: ValueRef;
        'cbc:ID@schemeID'?: ValueRef;
        'cac:Address'?: DELIVERTOADDRESS;
    };
    'cac:DeliveryParty'?: DELIVERPARTY;
}
export interface DELIVERTOADDRESS {
    'cbc:StreetName'?: ValueRef;
    'cbc:AdditionalStreetName'?: ValueRef;
    'cbc:CityName'?: ValueRef;
    'cbc:PostalZone'?: ValueRef;
    'cbc:CountrySubentity'?: ValueRef;
    'cac:AddressLine'?: ADDRESSLINE3;
    'cac:Country': COUNTRY3;
}
export interface ADDRESSLINE3 {
    'cbc:Line': ValueRef;
}
export interface COUNTRY3 {
    'cbc:IdentificationCode': ValueRef;
}
export interface DELIVERPARTY {
    'cac:PartyName': PARTYNAME4;
}
export interface PARTYNAME4 {
    'cbc:Name': ValueRef;
}
export interface PAYMENTCARDINFORMATION {
    'cbc:PrimaryAccountNumberID': ValueRef;
    'cbc:NetworkID': ValueRef;
    'cbc:HolderName'?: ValueRef;
}
export interface CREDITTRANSFER {
    'cbc:ID': ValueRef;
    'cbc:Name'?: ValueRef;
    'cac:FinancialInstitutionBranch'?: FINANCIALINSTITUTIONBRANCH;
}
export interface FINANCIALINSTITUTIONBRANCH {
    'cbc:ID': ValueRef;
}
export interface DIRECTDEBIT {
    'cbc:ID'?: ValueRef;
    'cac:PayerFinancialAccount'?: PAYERFINANCIALACCOUNT;
}
export interface PAYERFINANCIALACCOUNT {
    'cbc:ID': ValueRef;
}
export interface PAYMENTTERMS {
    'cbc:Note': ValueRef;
}
export interface TAXCATEGORY {
    'cbc:ID': ValueRef;
    'cbc:Percent'?: ValueRef;
    'cac:TaxScheme': TAXSCHEME3;
}
export interface TAXSCHEME3 {
    'cbc:ID': ValueRef;
}
export interface VATCATEGORY {
    'cbc:ID': ValueRef;
    'cbc:Percent'?: ValueRef;
    'cbc:TaxExemptionReasonCode'?: ValueRef;
    'cbc:TaxExemptionReason'?: ValueRef;
    'cac:TaxScheme': TAXSCHEME4;
}
export interface TAXSCHEME4 {
    'cbc:ID': ValueRef;
}
export interface DOCUMENTTOTALS {
    'cbc:LineExtensionAmount': ValueRef;
    'cbc:LineExtensionAmount@currencyID'?: ValueRef;
    'cbc:TaxExclusiveAmount': ValueRef;
    'cbc:TaxExclusiveAmount@currencyID'?: ValueRef;
    'cbc:TaxInclusiveAmount': ValueRef;
    'cbc:TaxInclusiveAmount@currencyID'?: ValueRef;
    'cbc:AllowanceTotalAmount'?: ValueRef;
    'cbc:AllowanceTotalAmount@currencyID'?: ValueRef;
    'cbc:ChargeTotalAmount'?: ValueRef;
    'cbc:ChargeTotalAmount@currencyID'?: ValueRef;
    'cbc:PrepaidAmount'?: ValueRef;
    'cbc:PrepaidAmount@currencyID'?: ValueRef;
    'cbc:PayableRoundingAmount'?: ValueRef;
    'cbc:PayableRoundingAmount@currencyID'?: ValueRef;
    'cbc:PayableAmount': ValueRef;
    'cbc:PayableAmount@currencyID'?: ValueRef;
}
export interface INVOICELINEPERIOD {
    'cbc:StartDate'?: ValueRef;
    'cbc:EndDate'?: ValueRef;
}
export interface ORDERLINEREFERENCE {
    'cbc:LineID': ValueRef;
}
export interface LINEOBJECTIDENTIFIER {
    'cbc:ID': ValueRef;
    'cbc:ID@schemeID'?: ValueRef;
    'cbc:DocumentTypeCode': ValueRef;
}
export interface ITEMINFORMATION {
    'cbc:Description'?: ValueRef;
    'cbc:Name': ValueRef;
    'cac:BuyersItemIdentification'?: BUYERSITEMIDENTIFICATION;
    'cac:SellersItemIdentification'?: SELLERSITEMIDENTIFICATION;
    'cac:StandardItemIdentification'?: STANDARDITEMIDENTIFICATION;
    'cac:OriginCountry'?: ORIGINCOUNTRY;
    'cac:CommodityClassification'?: {
        section?: SectionRef;
        'cbc:ItemClassificationCode': ValueRef;
        'cbc:ItemClassificationCode@listID'?: ValueRef;
        'cbc:ItemClassificationCode@listVersionID'?: ValueRef;
    };
    'cac:ClassifiedTaxCategory': LINEVATINFORMATION;
    'cac:AdditionalItemProperty'?: {
        section?: SectionRef;
        'cbc:Name': ValueRef;
        'cbc:Value': ValueRef;
    };
}
export interface BUYERSITEMIDENTIFICATION {
    'cbc:ID': ValueRef;
}
export interface SELLERSITEMIDENTIFICATION {
    'cbc:ID': ValueRef;
}
export interface STANDARDITEMIDENTIFICATION {
    'cbc:ID': ValueRef;
    'cbc:ID@schemeID'?: ValueRef;
}
export interface ORIGINCOUNTRY {
    'cbc:IdentificationCode': ValueRef;
}
export interface LINEVATINFORMATION {
    'cbc:ID': ValueRef;
    'cbc:Percent'?: ValueRef;
    'cac:TaxScheme': TAXSCHEME5;
}
export interface TAXSCHEME5 {
    'cbc:ID': ValueRef;
}
export interface PRICEDETAILS {
    'cbc:PriceAmount': ValueRef;
    'cbc:PriceAmount@currencyID'?: ValueRef;
    'cbc:BaseQuantity'?: ValueRef;
    'cbc:BaseQuantity@unitCode'?: ValueRef;
    'cac:AllowanceCharge'?: ALLOWANCE;
}
export interface ALLOWANCE {
    'cbc:ChargeIndicator': ValueRef;
    'cbc:Amount': ValueRef;
    'cbc:Amount@currencyID'?: ValueRef;
    'cbc:BaseAmount'?: ValueRef;
    'cbc:BaseAmount@currencyID'?: ValueRef;
}
