import { z } from "zod" import { Lang } from "@scandic-hotels/common/constants/language" import { signUpSchema } from "./schemas" // Query export const staysInput = z .object({ cursor: z .number() .optional() .transform((num) => (num ? String(num) : undefined)), limit: z.number().min(0).default(6), lang: z.nativeEnum(Lang).optional(), includeFirstStay: z.boolean().optional(), }) .default({}) export const friendTransactionsInput = z .object({ cursor: z.number().optional(), limit: z.number().min(0).default(10), lang: z.nativeEnum(Lang).optional(), }) .default({}) // Mutation export const addCreditCardInput = z.object({ language: z.string(), }) export const deleteCreditCardInput = z.object({ creditCardId: z.string(), }) export const saveCreditCardInput = z.object({ transactionId: z.string(), merchantId: z.string().optional(), }) export const signupInput = signUpSchema .extend({ language: z.nativeEnum(Lang), }) .omit({ termsAccepted: true }) .transform(({ profilingConsent, ...data }) => ({ ...data, phoneNumber: data.phoneNumber.replace(/\s+/g, ""), address: { ...data.address, city: "", country: "", streetAddress: "", }, ...(profilingConsent ? { profilingConsent } : {}), })) export const profilingConsentInput = z.object({ profilingConsent: z.boolean(), }) export const profilingConsentPromptDateInput = z.object({ profilingConsentPromptDate: z.string(), }) export const getSavedPaymentCardsInput = z.object({ supportedCards: z.array(z.string()), }) export type GetSavedPaymentCardsInput = z.input< typeof getSavedPaymentCardsInput > export const addPromoCampaignInput = z.object({ promotionId: z.string(), language: z.nativeEnum(Lang), })