import { CollectOnDelivery } from './collect-on-delivery';
import { Currency } from './currency';
import { DangerousGoodsContact } from './dangerous-good/dangerous-goods-contact';
import { WindsorFrameworkDetails } from './windsor-framework/windsor_framework_details';
import { AccessibilityTypes } from './accessibility-types';
import { Signatory } from './signatory';
import { RegulationLevelTypes } from './dangerous-good/regulation-level-types';

/** @description Basic structure for shipping options */
export class AdvancedOptions {
  /** @description Whether the shipment contains alcohol */
  contains_alcohol?: boolean;
  /** @description Whether the shipment does not require postage */
  no_postage?: boolean;
  /** @description Whether the shipment can be processed by machine */
  nonmachineable?: boolean;
  /** @description Whether the shipment duties should be billed to the sender */
  bill_duties_to_sender?: boolean;
  /** @description Whether Saturday delivery is permissible  */
  saturday_delivery?: boolean;
  /** @description Amount to be paid to the driver, used for local delivery and courier services */
  tip?: Currency;
  /** @description Describes whether Additional Handling is requested for the shipment  */
  additional_handling?: boolean;
  /** @description Describes details for Collect on Delivery (COD) if requested for the shipment */
  collect_on_delivery?: CollectOnDelivery;
  /** @description Whether client is requesting the ability to upload documents like commercial invoice after the shipment has been processed */
  own_document_upload?: boolean;
  /** @description Indicates if the Dangerous goods are present in the shipment. */
  dangerous_goods?: boolean;
  /** @description Contact information for Dangerous goods */
  dangerous_goods_contact?: DangerousGoodsContact;
  /** @description Describes the transport of dangerous goods that is restricted to Limited Quantities of Dangerous Goods only */
  limited_quantity?: boolean;
  /** @description Any other custom shipping options */
  event_notification?: boolean;
  /** @description Any other custom shipping options */
  windsor_framework_details?: WindsorFrameworkDetails;
  /** @description Identifies whatever the product being shipped is accessible or inaccessible during delivery.*/
  accessibility?: AccessibilityTypes;
  /** @description Specify the name, title and place of the signatory responsible for the dangerous goods shipment. */
  signatory?: Signatory;
  /** @description Types of regulation level defined for dangerous good */
  regulation_level?: RegulationLevelTypes;
  /** @description Indicates whether the recipient should be notified of events related to the shipment. */
  [key: string]: any;
}
