// Generated by ts-to-zod
import { z } from "zod";

export const buffDetailSchema = z.object({
  Name: z.string().nullable(),
  Desc: z.string().nullable(),
  Param: z.array(z.number()),
});

export const optionDetailSchema = z.object({
  Name: z.string(),
  Desc: z.string(),
  Param: z.array(z.number()),
});

export const infiniteWaveSchema = z.object({
  InfiniteWaveID: z.number(),
  MonsterGroupIDList: z.array(z.number()),
  MaxMonsterCount: z.number(),
  MaxTeammateCount: z.number(),
  Ability: z.string(),
  ParamList: z.array(z.number()),
  ClearPreviousAbility: z.boolean(),
  EliteGroup: z.number(),
});

const challengeDetailSchema = z.any();

const eventStageDetailSchema = z.any();

export const pFLevelSchema = z.object({
  Id: z.number(),
  Name: z.string(),
  Challenge: z.array(challengeDetailSchema),
  DamageType1: z.array(z.string()),
  DamageType2: z.array(z.string()),
  MazeGroupID1: z.number(),
  MazeGroupID2: z.number(),
  NpcMonsterIDList1: z.array(z.number()),
  NpcMonsterIDList2: z.array(z.number()),
  EventIDList1: z.array(eventStageDetailSchema),
  EventIDList2: z.array(eventStageDetailSchema),
  InfiniteList1: z.record(infiniteWaveSchema),
  InfiniteList2: z.record(infiniteWaveSchema),
});

export const pFDetailSchema = z.object({
  Id: z.number(),
  Name: z.string(),
  Buff: buffDetailSchema,
  Option: z.array(optionDetailSchema),
  SubOption: z.array(optionDetailSchema),
  BeginTime: z.string(),
  EndTime: z.string(),
  Level: z.array(pFLevelSchema),
});
