import Joi from 'joi';
import { CurrencySchema } from '@shipengine/connect-carrier-api';
import { WeightDetailsSchema } from '../units/weight-details-schema';
import { ManufacturerProductIdentifierType } from '../manufacturer-product-identifier-type';
import { CpscCertificateSchema } from '../cpsc-certificate-schema';

export const ShippedProductsSchema = Joi.object({
  description: Joi.string().optional(),
  quantity: Joi.number().optional(),
  value: CurrencySchema.optional(),
  country_of_origin: Joi.string().optional(),
  harmonized_tariff_code: Joi.string().optional(),
  sku: Joi.string().optional(),
  sku_description: Joi.string().optional(),
  item_weight: WeightDetailsSchema.optional(),
  product_url: Joi.string().optional(),
  vat_rate: Joi.number().optional(),
  mid_code: Joi.string().optional(),
  manufacturer_product_id_type: Joi.string()
    .valid(...Object.values(ManufacturerProductIdentifierType))
    .optional(),
  manufacturer_product_id: Joi.string().optional(),
  manufacturer_ns_product_id: Joi.string().optional(),
  dangerous_goods: Joi.object().optional(),
  cpsc_certificates: Joi.array().items(CpscCertificateSchema).optional(),
});
