1use std::collections::HashMap;
2
3use serde::{Deserialize, Serialize};
4use serde_json::Value;
5
6use crate::models::common::JsonObject;
7
8#[derive(Debug, Clone, Default, Deserialize, Serialize)]
12pub struct MemberLeveling {
13 #[serde(default)]
14 pub experience: f64,
15 #[serde(flatten)]
16 pub extra: JsonObject,
17}
18
19#[derive(Debug, Clone, Default, Deserialize, Serialize)]
21pub struct PlayerData {
22 #[serde(default)]
24 pub experience: HashMap<String, f64>,
25 #[serde(default)]
26 pub unlocked_coll_tiers: Vec<String>,
27 #[serde(default)]
28 pub crafted_generators: Vec<String>,
29 #[serde(flatten)]
30 pub extra: JsonObject,
31}
32
33#[derive(Debug, Clone, Default, Deserialize, Serialize)]
35pub struct MemberCurrencies {
36 #[serde(default)]
37 pub coin_purse: f64,
38 #[serde(default)]
39 pub motes_purse: f64,
40 #[serde(default)]
42 pub essence: HashMap<String, Essence>,
43 #[serde(flatten)]
44 pub extra: JsonObject,
45}
46
47#[derive(Debug, Clone, Default, Deserialize, Serialize)]
49pub struct Essence {
50 #[serde(default)]
51 pub current: f64,
52 #[serde(flatten)]
53 pub extra: JsonObject,
54}
55
56#[derive(Debug, Clone, Default, Deserialize, Serialize)]
58pub struct SlayerData {
59 #[serde(default)]
62 pub slayer_bosses: HashMap<String, SlayerBossProgress>,
63 #[serde(flatten)]
64 pub extra: JsonObject,
65}
66
67#[derive(Debug, Clone, Default, Deserialize, Serialize)]
69pub struct SlayerBossProgress {
70 #[serde(default)]
71 pub xp: f64,
72 #[serde(default)]
74 pub claimed_levels: HashMap<String, bool>,
75 #[serde(flatten)]
76 pub extra: JsonObject,
77}
78
79#[derive(Debug, Clone, Default, Deserialize, Serialize)]
81pub struct Dungeons {
82 #[serde(default)]
85 pub dungeon_types: HashMap<String, DungeonProgress>,
86 #[serde(default)]
89 pub player_classes: HashMap<String, DungeonClassProgress>,
90 #[serde(default)]
91 pub selected_dungeon_class: Option<String>,
92 #[serde(default)]
93 pub secrets: Option<f64>,
94 #[serde(flatten)]
95 pub extra: JsonObject,
96}
97
98#[derive(Debug, Clone, Default, Deserialize, Serialize)]
100pub struct DungeonProgress {
101 #[serde(default)]
102 pub experience: f64,
103 #[serde(default)]
105 pub tier_completions: HashMap<String, f64>,
106 #[serde(default)]
107 pub highest_tier_completed: Option<i64>,
108 #[serde(flatten)]
109 pub extra: JsonObject,
110}
111
112#[derive(Debug, Clone, Default, Deserialize, Serialize)]
114pub struct DungeonClassProgress {
115 #[serde(default)]
116 pub experience: f64,
117 #[serde(flatten)]
118 pub extra: JsonObject,
119}
120
121#[derive(Debug, Clone, Default, Deserialize, Serialize)]
123pub struct PetsData {
124 #[serde(default)]
125 pub pets: Vec<Pet>,
126 #[serde(flatten)]
127 pub extra: JsonObject,
128}
129
130#[derive(Debug, Clone, Default, Deserialize, Serialize)]
132pub struct Pet {
133 #[serde(default)]
134 pub uuid: Option<String>,
135 #[serde(rename = "type", default)]
137 pub pet_type: String,
138 #[serde(default)]
139 pub exp: f64,
140 #[serde(default)]
142 pub tier: String,
143 #[serde(default)]
144 pub active: bool,
145 #[serde(default)]
146 pub held_item: Option<String>,
147 #[serde(default)]
148 pub skin: Option<String>,
149 #[serde(default)]
150 pub candy_used: i64,
151 #[serde(flatten)]
152 pub extra: JsonObject,
153}
154
155#[derive(Debug, Clone, Default, Deserialize, Serialize)]
157pub struct MiningCore {
158 #[serde(default)]
160 pub experience: f64,
161 #[serde(default)]
162 pub powder_mithril: f64,
163 #[serde(default)]
164 pub powder_gemstone: f64,
165 #[serde(default)]
166 pub powder_glacite: f64,
167 #[serde(default)]
169 pub nodes: HashMap<String, Value>,
170 #[serde(flatten)]
171 pub extra: JsonObject,
172}