import { z } from "zod" const ecoLabelsSchema = z.object({ euEcoLabel: z.boolean(), greenGlobeLabel: z.boolean(), nordicEcoLabel: z.boolean(), svanenEcoLabelCertificateNumber: z.string().optional(), }) export const checkinSchema = z.object({ checkInTime: z.string(), checkOutTime: z.string(), onlineCheckout: z.boolean(), onlineCheckOutAvailableFrom: z.string().nullable().optional(), }) const hotelFacilityDetailSchema = z .object({ description: z.string(), heading: z.string(), }) .optional() /** Possibly more values */ const hotelFacilityDetailsSchema = z.object({ breakfast: hotelFacilityDetailSchema, checkout: hotelFacilityDetailSchema, gym: hotelFacilityDetailSchema, internet: hotelFacilityDetailSchema, laundry: hotelFacilityDetailSchema, luggage: hotelFacilityDetailSchema, shop: hotelFacilityDetailSchema, telephone: hotelFacilityDetailSchema, }) const hotelInformationSchema = z .object({ description: z.string(), heading: z.string(), link: z.string().optional(), }) .optional() const hotelInformationsSchema = z.object({ accessibility: hotelInformationSchema, safety: hotelInformationSchema, sustainability: hotelInformationSchema, }) const interiorSchema = z.object({ numberOfBeds: z.number(), numberOfCribs: z.number(), numberOfFloors: z.number(), numberOfRooms: z.object({ connected: z.number(), forAllergics: z.number().optional(), forDisabled: z.number(), nonSmoking: z.number(), pet: z.number(), withExtraBeds: z.number(), total: z.number(), }), }) const receptionHoursSchema = z.object({ alwaysOpen: z.boolean(), isClosed: z.boolean(), openingTime: z.string().optional(), closingTime: z.string().optional(), }) export const hotelFactsSchema = z.object({ checkin: checkinSchema, ecoLabels: ecoLabelsSchema, hotelFacilityDetail: hotelFacilityDetailsSchema.default({}), hotelInformation: hotelInformationsSchema.default({}), interior: interiorSchema, receptionHours: receptionHoursSchema, yearBuilt: z.string(), })