import { z } from "zod" import { countriesMap } from "@/components/TempDesignSystem/Form/Country/countries" export const getUserSchema = z.object({ address: z.object({ city: z.string().optional(), country: z.nativeEnum(countriesMap).optional(), streetAddress: z.string().optional(), zipCode: z.string(), }), dateOfBirth: z.string().optional().default("N/A"), email: z.string().email(), firstName: z.string(), language: z.string(), lastName: z.string(), membership: z .object({ currentPoints: z.number(), expirationDate: z.string(), membershipNumber: z.string(), memberSince: z.string(), }) .optional(), phoneNumber: z.string(), profileId: z.string(), }) // Schema is the same for upcoming and previous stays endpoints export const getStaysSchema = z.object({ data: z.array( z.object({ attributes: z.object({ hotelOperaId: z.string(), hotelInformation: z.object({ hotelContent: z.object({ images: z.object({ metaData: z.object({ title: z.string(), altText: z.string(), altText_En: z.string(), copyRight: z.string(), }), imageSizes: z.object({ tiny: z.string(), small: z.string(), medium: z.string(), large: z.string(), }), }), }), hotelName: z.string(), cityName: z.string().nullable(), }), confirmationNumber: z.string(), checkinDate: z.string(), checkoutDate: z.string(), isWebAppOrigin: z.boolean(), }), relationships: z.object({ hotel: z.object({ links: z.object({ related: z.string(), }), data: z.object({ id: z.string(), type: z.string(), }), }), }), type: z.string(), id: z.string(), links: z.object({ self: z.object({ href: z.string(), meta: z.object({ method: z.string(), }), }), }), }) ), links: z .object({ self: z.string(), offset: z.number(), limit: z.number(), totalCount: z.number(), }) .nullable(), }) type GetStaysData = z.infer export type Stay = GetStaysData["data"][number] export const getFriendTransactionsSchema = z.object({ data: z.array( z.object({ attributes: z.object({ hotelOperaId: z.string(), confirmationNumber: z.string(), checkinDate: z.string(), checkoutDate: z.string(), nights: z.number(), awardPoints: z.number(), pointsCalculated: z.boolean(), hotelInformation: z .object({ hotelName: z.string(), city: z.string(), hotelContent: z.object({ images: z.object({ metaData: z.object({ title: z.string(), altText: z.string(), altText_En: z.string(), copyRight: z.string(), }), imageSizes: z.object({ tiny: z.string(), small: z.string(), medium: z.string(), large: z.string(), }), }), }), }) .optional(), }), relationships: z.object({ hotel: z .object({ links: z.object({ related: z.string(), }), data: z.object({ id: z.string(), type: z.string(), }), }) .optional(), booking: z.object({ links: z.object({ related: z.string(), }), data: z.object({ id: z.string(), type: z.string(), }), }), }), type: z.string(), }) ), links: z .object({ self: z.string(), offset: z.number(), limit: z.number(), totalCount: z.number(), }) .nullable(), }) type GetFriendTransactionsData = z.infer export type Transaction = GetFriendTransactionsData["data"][number]