import { PackageInstructionSectionTypes } from './package-instruction-section-types';
import { PackagingGroupTypes } from './packaging-group-types';
import { RegulationLevelTypes } from './regulation-level-types';
import { TransportMeanTypes } from './transport-mean-types';
import { DangerousAmountDetails } from './weight-details';
import { AccessibilityTypes } from '../accessibility-types';

/** @description Basic structure for a dangerous goods */
export class DangerousGoods {
  /** @description UN number to identify the dangerous goods */
  id_number?: string;
  /** @description Trade description of the dangerous goods */
  shipping_name?: string;
  /** @description Recognized Technical or chemical name of dangerous goods */
  technical_name?: string;
  /** @description Dangerous goods product class based on regulation */
  product_class?: string;
  /** @description A secondary of product class for substances presenting more than one particular hazard */
  product_class_subsidiary?: string;
  /** @description This indicates the packaging group based on the degree of danger */
  packaging_group?: PackagingGroupTypes;
  /** @description The amount of the dangerous goods */
  dangerous_amount?: DangerousAmountDetails;
  /** @description Quantity of dangerous goods */
  quantity?: number;
  /** @description The specific standardized packaging instructions from the relevant regulatory agency that have been applied to the parcel/container */
  packaging_instruction?: string;
  /** @description Complementary information to specify the exact 'Section of Packaging' instructions */
  packaging_instruction_section?: PackageInstructionSectionTypes;
  /** @description The type of exterior packaging used to contain the dangerous good */
  packaging_type?: string;
  /** @description Transportation means through which the dangerous goods are transported */
  transport_mean?: TransportMeanTypes;
  /** @description Transport category assign to dangerous goods for the transport purpose */
  transport_category?: string;
  /** @description Name of the regulatory authority */
  regulation_authority?: string;
  /** @description Regulation level of the dangerous goods */
  regulation_level?: RegulationLevelTypes;
  /** @description Indication if the substance is radioactive */
  radioactive?: boolean;
  /** @description Indication if the substance needs to be reported to regulatory authority based on the quantity */
  reportable_quantity?: boolean;
  /** @description Defines which types of tunnels the shipment is allowed to go through */
  tunnel_code?: string;
  /** @description Provider additonal description regarding the dangerous goods. This is used as a placed holder to provider additional context and varies by carrier */
  additional_description?: string;
  /** @description Identifies whatever the product being shipped is accessible or inaccessible during delivery.*/
  accessibility?: AccessibilityTypes;
}
