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

export const challengeDetailSchema = z.object({
  Name: z.string(),
  Param: z.number().optional(),
});

export const stageConfigSchema = z.record(z.string()).and(
  z.object({
    $type: z.string(),
  }),
);

export const eventStageDetailSchema = z.object({
  StageID: z.number(),
  StageType: z.string(),
  StageName: z.number(),
  HardLevelGroup: z.number(),
  Level: z.number(),
  EliteGroup: z.number().optional(),
  LevelGraphPath: z.string(),
  StageAbilityConfig: z.array(z.any()),
  BattleScoringGroup: z.number().optional(),
  SubLevelGraphs: z.array(z.any()),
  StageConfigData: z.array(stageConfigSchema),
  MonsterList: z.array(z.record(z.number())),
  LevelLoseCondition: z.array(z.string()),
  LevelWinCondition: z.array(z.string()),
  Release: z.boolean(),
  ForbidExitBattle: z.boolean(),
  MonsterWarningRatio: z.number().optional(),
  TrialAvatarList: z.array(z.any()),
});

export const mocDetailSchema = z.object({
  Id: z.number(),
  Name: z.string(),
  GroupName: z.string(),
  Desc: z.string(),
  Param: z.array(z.number()),
  Challenge: z.array(challengeDetailSchema),
  Countdown: z.number(),
  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),
  BeginTime: z.string(),
  EndTime: z.string(),
});
