import { DimensionDetails } from './units/dimension-details';
import { WeightDetails } from './units/weight-details';
import { Currency } from './currency';
import { LabelMessage } from './labels/label-message';
import { Customs } from './customs';
import { Products } from './products';

/** @description Basic structure for a package */
export class Package {
  /** @description Package code defined for the carrier in ShipEngine. */
  package_code?: string;
  /** @description A summary of the content of a given package. Required to ship to and from Mexico. Maximum length of 35 characters. */
  content_description?: string;
  /** @description Details about the dimensions of the package */
  dimension_details?: DimensionDetails;
  /** @description Details about the weight of the package */
  weight_details?: WeightDetails;
  /** @description The insured value of this package. */
  insured_value!: Currency;
  /** @description The message the seller requested to have on their label */
  label_messages?: LabelMessage;
  /** @deprecated For shipment-level information, the shipment `customs` object should be used, and for parcel-level items, the `packages.products` array should be used. */
  customs?: Customs;
  /** @description List of products goods model associated with this package passed to the carrier. */
  products?: Products[];
}
