use std::collections::HashMap;
use serde::{Deserialize, Serialize};
use serde_json::Value;
use crate::models::common::JsonObject;
#[derive(Debug, Clone, Default, Deserialize, Serialize)]
pub struct MemberLeveling {
#[serde(default)]
pub experience: f64,
#[serde(flatten)]
pub extra: JsonObject,
}
#[derive(Debug, Clone, Default, Deserialize, Serialize)]
pub struct PlayerData {
#[serde(default)]
pub experience: HashMap<String, f64>,
#[serde(default)]
pub unlocked_coll_tiers: Vec<String>,
#[serde(default)]
pub crafted_generators: Vec<String>,
#[serde(flatten)]
pub extra: JsonObject,
}
#[derive(Debug, Clone, Default, Deserialize, Serialize)]
pub struct MemberCurrencies {
#[serde(default)]
pub coin_purse: f64,
#[serde(default)]
pub motes_purse: f64,
#[serde(default)]
pub essence: HashMap<String, Essence>,
#[serde(flatten)]
pub extra: JsonObject,
}
#[derive(Debug, Clone, Default, Deserialize, Serialize)]
pub struct Essence {
#[serde(default)]
pub current: f64,
#[serde(flatten)]
pub extra: JsonObject,
}
#[derive(Debug, Clone, Default, Deserialize, Serialize)]
pub struct SlayerData {
#[serde(default)]
pub slayer_bosses: HashMap<String, SlayerBossProgress>,
#[serde(flatten)]
pub extra: JsonObject,
}
#[derive(Debug, Clone, Default, Deserialize, Serialize)]
pub struct SlayerBossProgress {
#[serde(default)]
pub xp: f64,
#[serde(default)]
pub claimed_levels: HashMap<String, bool>,
#[serde(flatten)]
pub extra: JsonObject,
}
#[derive(Debug, Clone, Default, Deserialize, Serialize)]
pub struct Dungeons {
#[serde(default)]
pub dungeon_types: HashMap<String, DungeonProgress>,
#[serde(default)]
pub player_classes: HashMap<String, DungeonClassProgress>,
#[serde(default)]
pub selected_dungeon_class: Option<String>,
#[serde(default)]
pub secrets: Option<f64>,
#[serde(flatten)]
pub extra: JsonObject,
}
#[derive(Debug, Clone, Default, Deserialize, Serialize)]
pub struct DungeonProgress {
#[serde(default)]
pub experience: f64,
#[serde(default)]
pub tier_completions: HashMap<String, f64>,
#[serde(default)]
pub highest_tier_completed: Option<i64>,
#[serde(flatten)]
pub extra: JsonObject,
}
#[derive(Debug, Clone, Default, Deserialize, Serialize)]
pub struct DungeonClassProgress {
#[serde(default)]
pub experience: f64,
#[serde(flatten)]
pub extra: JsonObject,
}
#[derive(Debug, Clone, Default, Deserialize, Serialize)]
pub struct PetsData {
#[serde(default)]
pub pets: Vec<Pet>,
#[serde(flatten)]
pub extra: JsonObject,
}
#[derive(Debug, Clone, Default, Deserialize, Serialize)]
pub struct Pet {
#[serde(default)]
pub uuid: Option<String>,
#[serde(rename = "type", default)]
pub pet_type: String,
#[serde(default)]
pub exp: f64,
#[serde(default)]
pub tier: String,
#[serde(default)]
pub active: bool,
#[serde(default)]
pub held_item: Option<String>,
#[serde(default)]
pub skin: Option<String>,
#[serde(default)]
pub candy_used: i64,
#[serde(flatten)]
pub extra: JsonObject,
}
#[derive(Debug, Clone, Default, Deserialize, Serialize)]
pub struct MiningCore {
#[serde(default)]
pub experience: f64,
#[serde(default)]
pub powder_mithril: f64,
#[serde(default)]
pub powder_gemstone: f64,
#[serde(default)]
pub powder_glacite: f64,
#[serde(default)]
pub nodes: HashMap<String, Value>,
#[serde(flatten)]
pub extra: JsonObject,
}