import { mixed, number, object, string } from 'yup'; // @ts-ignore TODO: fix types export const shippingDetailSchema = object().when('isFreeShipping', { is: false, then: object() .shape({ shipFrom: object().shape({ name: string().required(), type: mixed() .transform((o) => (typeof o === 'object' ? o.value : o)) .required(), address: string().required(), city: string().required(), state: string().required(), zip: string().min(4).max(10).required(), country: string().required(), phone: string().required(), }), weight: number().required(), length: number().required(), width: number().required(), height: number().required(), unitOfMeasurement: string().required(), handlingFee: number().required(), packagingType: string().required(), }) .required('Shipping Details are required'), }); export interface ShippingTokenDetail { weight: number; length: number; width: number; height: number; unitOfMeasurement: string; handlingFee: number; packagingType: string; } export interface SellTokenShippingForm { isFreeShipping: boolean; shippingDetail: ShippingTokenDetail; }