// Auto-generated by AutoCRUD Web Generator

export enum CharacterClass {
  "⚔️ 戰士" = "⚔️ 戰士",
  "🏹 弓箭手" = "🏹 弓箭手",
  "💾 數據守護者" = "💾 數據守護者",
  "🔮 法師" = "🔮 法師"
}

export enum ItemRarity {
  "傳奇" = "傳奇",
  "史詩" = "史詩",
  "普通" = "普通",
  "稀有" = "稀有",
  "🚀 AutoCRUD 神器" = "🚀 AutoCRUD 神器"
}

export enum TaskStatus {
  "completed" = "completed",
  "failed" = "failed",
  "pending" = "pending",
  "processing" = "processing"
}

export enum GameEventType {
  "daily_login" = "daily_login",
  "equipment_enhance" = "equipment_enhance",
  "guild_reward" = "guild_reward",
  "level_up" = "level_up",
  "quest_complete" = "quest_complete",
  "raid_boss" = "raid_boss",
  "server_maintenance" = "server_maintenance"
}

export interface ActiveSkillData {
  type: string;
  mp_cost?: number;
  cooldown_seconds?: number;
  damage?: number;
}

export interface Body_create_new_character4_character_create_new_character4_post {
  name: string;
  z: string;
  f: Record<string, any>;
}

export interface HTTPValidationError {
  detail?: object[];
}

export interface PassiveSkillData {
  type: string;
  buff_percentage?: number;
}

export interface Skill {
  skname: string;
  detail: ActiveSkillData | PassiveSkillData | UltimateSkillData;
  description?: string;
  required_level?: number;
  required_class?: string | null;
}

export interface UltimateSkillData {
  type: string;
  mp_cost?: number;
  cooldown_seconds?: number;
  damage?: number;
  area_of_effect?: boolean;
}

export interface ValidationError {
  loc: (string | number)[];
  msg: string;
  type: string;
}

export interface Character {
  name: string;
  character_class: string;
  valueAD__x?: number | string;
  level?: number;
  hp?: number;
  mp?: number;
  attack?: number;
  defense?: number;
  experience?: number;
  gold?: number;
  guild_id?: string | null;
  guild_name?: string | null;
  special_ability?: string | null;
  skill_ids?: string[];
  equipments?: (Equipment | Item)[];
  created_at?: string;
}

export interface Equipment {
  type: string;
  name: string;
  rarity: string;
  owner_id?: string | null;
  character_class_req?: string | null;
  attack_bonus?: number;
  defense_bonus?: number;
  special_effects?: string[];
  price?: number;
  icon?: Binary | null;
}

export interface Binary {
  file_id?: string;
  size?: number;
  content_type?: string;
  data?: Binary;
}

export interface Item {
  type: string;
  name: string;
  description?: string;
  price?: number;
  icon?: Binary | null;
}

export interface Guild {
  name: string;
  description: string;
  leader: string;
  member_count?: number;
  level?: number;
  treasury?: number;
  founded_at?: string;
}

export interface Mount {
  type: string;
  name: string;
  species: string;
  speed?: number;
  stamina?: number;
  owner_id: string;
}

export interface Dog {
  type: string;
  name: string;
  breed: string;
  level?: number;
  hp?: number;
  mp?: number;
  attack?: number;
  defense?: number;
  owner_id: string;
}

export interface Job___main___Mount_____main___Dog_ {
  payload: Mount | Dog;
  status?: string;
  errmsg?: string | null;
  retries?: number;
  periodic_interval_seconds?: number | null;
  periodic_max_runs?: number | null;
  periodic_runs?: number;
  periodic_initial_delay_seconds?: number | null;
}

export interface GameEvent {
  payload: Record<string, any>;
  status?: string;
  errmsg?: string | null;
  retries?: number;
  periodic_interval_seconds?: number | null;
  periodic_max_runs?: number | null;
  periodic_runs?: number;
  periodic_initial_delay_seconds?: number | null;
}

export interface GameEventPayload {
  event_type: string;
  character_name: string;
  character_id: string | null;
  description: string;
  reward_gold?: number;
  reward_exp?: number;
  extra_data?: Record<string, any>;
  event_body?: EventBodyA | EventBodyB | null;
  event_x?: Record<string, any> | null;
}

export interface EventBodyA {
  type: string;
  extra_info_a: string;
  extra_value_a: number;
}

export interface EventBodyB {
  type: string;
  some_field: string;
  cooldown_seconds: number;
}

export interface EventBodyX {
  type: string;
  good: string;
  great: number;
}

export interface FullResourceResponse_Character_ {
  data?: Record<string, any>;
  revision_info?: Record<string, any>;
  meta?: Record<string, any>;
}

export interface FullResourceResponse_Guild_ {
  data?: Record<string, any>;
  revision_info?: Record<string, any>;
  meta?: Record<string, any>;
}

export interface FullResourceResponse_Skill_ {
  data?: Record<string, any>;
  revision_info?: Record<string, any>;
  meta?: Record<string, any>;
}

export interface FullResourceResponse_Equipment_ {
  data?: Record<string, any>;
  revision_info?: Record<string, any>;
  meta?: Record<string, any>;
}

export interface FullResourceResponse___main___Mount_____main___Dog_ {
  data?: Mount | Dog;
  revision_info?: Record<string, any>;
  meta?: Record<string, any>;
}

export interface FullResourceResponse_autocrud_types_Job___main___Mount_____main___Dog__ {
  data?: Record<string, any>;
  revision_info?: Record<string, any>;
  meta?: Record<string, any>;
}

export interface FullResourceResponse_GameEvent_ {
  data?: Record<string, any>;
  revision_info?: Record<string, any>;
  meta?: Record<string, any>;
}

export interface RFC6902_Add {
  op: string;
  path: string;
  value: string;
}

export interface RFC6902_Remove {
  op: string;
  path: string;
}

export interface RFC6902_Replace {
  op: string;
  path: string;
  value: string;
}

export interface RFC6902_Move {
  op: string;
  from: string;
  path: string;
}

export interface RFC6902_Test {
  op: string;
  path: string;
  value: string;
}

export interface RFC6902_Copy {
  op: string;
  from: string;
  path: string;
}

export type Pet = Mount | Dog;
