import { z } from "zod" import { imageSchema } from "@scandic-hotels/trpc/routers/hotels/schemas/image" // 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: imageSchema, }), hotelName: z.string(), cityName: z.string().nullable(), }), confirmationNumber: z.string(), checkinDate: z.string(), checkoutDate: z.string(), isWebAppOrigin: z.boolean(), bookingUrl: z.string().default(""), }), relationships: z.object({ hotel: z.object({ links: z.object({ related: z.string().nullable().optional(), }), 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(), }) .optional() .nullable(), }) type GetStaysData = z.infer export type Stay = GetStaysData["data"][number] export const getFriendTransactionsSchema = z.object({ data: z.array( z.object({ attributes: z.object({ awardPoints: z.number().default(0), checkinDate: z.string().default(""), checkoutDate: z.string().default(""), confirmationNumber: z.string().default(""), hotelOperaId: z.string().default(""), nights: z.number().default(1), pointsCalculated: z.boolean().default(true), transactionDate: z.string().default(""), bookingUrl: z.string().default(""), hotelInformation: z .object({ city: z.string().default(""), name: z.string().default(""), hotelContent: z.object({ images: imageSchema, }), }) .optional(), }), relationships: z.object({ booking: z.object({ data: z.object({ id: z.string().default(""), type: z.string().default(""), }), links: z.object({ related: z.string().default(""), }), }), hotel: z .object({ data: z.object({ id: z.string().default(""), type: z.string().default(""), }), links: z.object({ related: z.string().default(""), }), }) .optional(), }), type: z.string().default(""), }) ), links: z .object({ self: z.string(), }) .nullable(), }) type GetFriendTransactionsData = z.infer export type FriendTransaction = GetFriendTransactionsData["data"][number] export const initiateSaveCardSchema = z.object({ data: z.object({ attribute: z.object({ transactionId: z.string(), link: z.string(), mobileToken: z.string().optional(), }), type: z.string(), }), }) export const subscriberIdSchema = z.object({ subscriberId: z.string(), })