/**
 * PostNL Ecommerce APIsLib
 *
 * This file was automatically generated by APIMATIC v3.0 ( https://www.apimatic.io ).
 */

import { array, object, optional, Schema, string } from '../schema';

export interface HazardousMaterial {
  /** Toxic substance code as stated in the ADR agreement */
  toxicSubstanceCode: string;
  /** Array of additional toxic substance codes as stated in the ADR agreement */
  additionalToxicSubstanceCode?: string[];
  /** The amount of ADR points */
  aDRPoints?: string;
  /** The code indicating for which category of tunnels passage is prohibited with these goods. */
  tunnelCode?: string;
  /** Code identifying the category of the packaging material. */
  packagingGroupCode?: string;
  /** Description of the packaging material */
  packagingGroupDescription?: string;
  /** Gross weight of the goods in grams. */
  grossWeight?: string;
  /** The UNDG number */
  uNDGNumber?: string;
  /** The transport category code */
  transportCategoryCode?: string;
  /** The chemical technical description of the goods. */
  chemicalTechnicalDescription?: string;
}

export const hazardousMaterialSchema: Schema<HazardousMaterial> = object({
  toxicSubstanceCode: ['ToxicSubstanceCode', string()],
  additionalToxicSubstanceCode: [
    'AdditionalToxicSubstanceCode',
    optional(array(string())),
  ],
  aDRPoints: ['ADRPoints', optional(string())],
  tunnelCode: ['TunnelCode', optional(string())],
  packagingGroupCode: ['PackagingGroupCode', optional(string())],
  packagingGroupDescription: ['PackagingGroupDescription', optional(string())],
  grossWeight: ['GrossWeight', optional(string())],
  uNDGNumber: ['UNDGNumber', optional(string())],
  transportCategoryCode: ['TransportCategoryCode', optional(string())],
  chemicalTechnicalDescription: [
    'ChemicalTechnicalDescription',
    optional(string()),
  ],
});
