import { ActiveLessSymfonyModel, SymfonyModel } from './api.models';
import { CustomerType } from './api-shipments.enums';
import { Supply } from './api-supplies.interfaces';
export interface ShipmentComposition extends SymfonyModel {
    currencyCode: string;
    extraCharges: ExtraChargeComposition[];
    globalProductCode: string;
    globalProductName: string;
    localProductCode: string;
    localProductName: string;
    trackingNumber: string;
    contentDescription: string;
    realWeight: number;
    piecesNumber: number;
    productSubtotal: number;
    productTax: number;
    productTotal: number;
    declaredValue: number;
    insuredValue: number;
    accountNumber: string;
    userId: number;
    installationId: number;
    companyCountryId: number;
    productId: number;
    countryReferenceCurrencyId: number;
    commercialExchangeRate: number;
    ibsExchangeRate: number;
    shipmentStatusId: number;
    shipmentAddresses: ShipmentAddresses[];
    shipmentPieces: ShipmentPieces[];
    shipmentCompanyCountryExtraCharges: ShipmentCompanyCountryExtraCharges[];
    shipmentGsop: ShipmentGsop;
    additionalData: AdditionalData;
    transactionId: string;
    requiresPayment: boolean;
    originServiceAreaCode: string;
    originFacilityCode: string;
    destinationServiceAreaCode: string;
    destinationFacilityCode: string;
    productTaxes: string[];
    isInspected: boolean;
    extraFields: {
        [key: string]: string | number | boolean;
    };
    shipmentContentTypeId: number;
    commercialInvoice: CommercialInvoice;
    shipmentScopeId: number;
    shipmentGroupId: number;
    product: string[];
    declaredCurrency: string;
    insuredCurrency: string;
    deliveryDateTime: string;
    date: string;
    promotionCode: string;
    priceOverrideApproverId: number;
    priceOverrideReasonId: number;
    customs: Customs;
    exportReasonId: number;
    exportReason: string[];
    shipmentBookPickup: ShipmentBookPickup;
    questionId: number;
    isInsured: boolean;
    itnNumber: string;
    einNumber: string;
    otherAccountNumber: string;
    dutiesAndTaxesAccountNumber: string;
    discountId: string;
    discountReference: string;
    totalPublishedValue: number;
    totalPartnerAccountValue: number;
    isMarketingConsent: boolean;
    isTermCondition: boolean;
    isDocument: boolean;
    isCash: boolean;
    isPriceOverride: boolean;
    isProforma: boolean;
    isPromotionCode: boolean;
    isRetailRate: boolean;
    isOtherOrigin: boolean;
    isOccurs: boolean;
    isDutiesAndTaxes: boolean;
}
export interface ExtraChargeComposition {
    globalServiceCode: string;
    localServiceCode: string;
    globalServiceName: string;
    localServiceName: string;
    subtotal: number;
    tax: number;
    total: number;
    taxes: Tax[];
}
export interface Tax {
    code: string;
    percent: number;
    baseAmount: number;
    amount: number;
}
export interface ShipmentAddresses extends SymfonyModel {
    index: number;
    identificationTypeId: number;
    identificationNumber: string;
    companyName: string;
    fullName: string;
    email: string;
    phoneCode: string;
    phoneNumber: string;
    postalCode: string;
    stateCode: string;
    countyName: string;
    cityName: string;
    addressLine1: string;
    addressLine2: string;
    addressLine3: string;
    countryId: number;
    identificationType: IdentificationTypeComposition;
    roleType: CustomerType;
}
export interface IdentificationTypeComposition extends SymfonyModel {
    name: string;
    companyCountryId: number;
}
export interface ShipmentPieces extends ActiveLessSymfonyModel {
    number: number;
    height: number;
    length: number;
    width: number;
    realWeight: number;
    volumetricWeight: number;
    dataIdentifier: string;
    trackingNumber: string;
    licensePlateBarCode: string;
    shipmentPieceCompanyCountrySupplies: ShipmentPieceCompanyCountrySupplies[];
}
export interface ShipmentPieceCompanyCountrySupplies extends ActiveLessSymfonyModel {
    supplyId: number;
    quantity: number;
    subtotal: number;
    taxBase: number;
    taxPercent: number;
    tax: number;
    total: number;
    description: string;
    supply: Supply;
}
export interface CommercialInvoice extends ActiveLessSymfonyModel {
    documentTypeId: number;
    tradingTransactionTypeId: number;
    documentFunctionId: number;
    number: string;
    remarks: string;
    items: Item[];
    documentType: DocumentTypeComposition;
    tradingTransactionType: TradingTransactionType;
    documentFunction: DocumentFunction;
}
export interface Item extends ActiveLessSymfonyModel {
    description: string;
    quantity: number;
    quantityUnitId: number;
    subtotal: number;
    manufactureCountryCode: string;
    realWeight: number;
    commodityId: number;
    quantityUnit: QuantityUnit;
    manufactureCountry: ManufactureCountry;
    commodity: Commodity;
}
export interface QuantityUnit extends SymfonyModel {
    code: string;
    name: string;
}
export interface ManufactureCountry {
    id: string;
    code: string;
    name: string;
    locationType: string[];
    unit: string[];
    timezone: string;
    hasImportService: boolean;
    isActive: boolean;
    regions: string[];
    zones: string[];
    isoCode: string;
}
export interface Commodity extends SymfonyModel {
    code: string;
    name: string;
    countryId: number;
}
export interface DocumentTypeComposition extends SymfonyModel {
    code: string;
    name: string;
    description: string;
}
export interface TradingTransactionType extends SymfonyModel {
    code: string;
    name: string;
    description: string;
}
export interface DocumentFunction extends SymfonyModel {
    code: string;
    name: string;
}
export interface ShipmentGsop extends ActiveLessSymfonyModel {
    productContentCode: string;
    originServiceAreaCode: string;
    destinationServiceAreaCode: string;
    internalServiceCode: string;
    awbBarCode: string;
    dhlRoutingBarCode: string;
}
export interface ShipmentCompanyCountryExtraCharges extends ActiveLessSymfonyModel {
    subtotal: number;
    tax: number;
    total: number;
    extraChargeId: number;
    extraChargeCode: string;
}
export interface AdditionalData {
    awbTypeCode: string;
    countryCode: string;
    shipmentTypeCode: string;
    productGlobalCode: string;
    productLocalCode: string;
    currencyCode: string;
    userUsername: string;
    locationFacilityCode: string;
}
export interface Customs {
    criteria: Criteria;
    rules: Rules[];
}
export interface Criteria {
    origin: string;
    destination: string;
    dutiable: boolean;
    declaredValue: number;
}
export interface Rules {
    id: number;
    level: string;
    attributes: Attributes[];
}
export interface Attributes {
    id: number;
    field: string;
    dhlCode: string;
    values: Values;
}
export interface Values {
    shipment: string;
    customer: CustomerComposition;
    invoiceHeader: string;
    invoiceItem: string[];
}
export interface CustomerComposition {
    SP: string;
    RV: string;
}
export interface ShipmentBookPickup extends ActiveLessSymfonyModel {
    pickupDate: string;
    readyByTime: string;
    closeTime: string;
    confirmationNumber: string;
    packageLocationId: number;
    remarks: string;
    packageLocation: PackageLocation;
}
export interface PackageLocation extends SymfonyModel {
    name: string;
}
