import { z } from "zod" import { MembershipLevelEnum } from "@/constants/membershipLevels" export const validateApiRewardSchema = z .object({ data: z.array( z.object({ title: z.string().optional(), id: z.string().optional(), type: z.string().optional(), status: z.string().optional(), rewardId: z.string().optional(), redeemLocation: z.string().optional(), autoApplyReward: z.boolean().default(false), rewardType: z.string().optional(), rewardTierLevel: z.string().optional(), }) ), }) .transform((data) => data.data) enum TierKey { tier1 = MembershipLevelEnum.L1, tier2 = MembershipLevelEnum.L2, tier3 = MembershipLevelEnum.L3, tier4 = MembershipLevelEnum.L4, tier5 = MembershipLevelEnum.L5, tier6 = MembershipLevelEnum.L6, tier7 = MembershipLevelEnum.L7, } type Key = keyof typeof TierKey export const validateApiTierRewardsSchema = z.record( z.nativeEnum(TierKey).transform((data) => { return TierKey[data as unknown as Key] }), z.array( z.object({ title: z.string().optional(), id: z.string().optional(), type: z.string().optional(), status: z.string().optional(), rewardId: z.string().optional(), redeemLocation: z.string().optional(), autoApplyReward: z.boolean().default(false), rewardType: z.string().optional(), rewardTierLevel: z.string().optional(), }) ) ) export const validateCmsRewardsSchema = z .object({ data: z.object({ all_reward: z.object({ items: z.array( z.object({ taxonomies: z.array( z.object({ term_uid: z.string().optional(), }) ), label: z.string().optional(), reward_id: z.string(), grouped_label: z.string().optional(), description: z.string().optional(), grouped_description: z.string().optional(), value: z.string().optional(), }) ), }), }), }) .transform((data) => data.data.all_reward.items) export type ApiReward = z.output[0] export type CmsRewardsResponse = z.input export type Reward = z.output[0]