1pub mod create;
2pub mod created_by_user;
3pub mod current;
4pub mod games;
5pub mod join;
6pub mod played_by_user;
7pub mod results;
8pub mod show;
9pub mod team_battle;
10pub mod teams;
11pub mod terminate;
12pub mod update;
13pub mod withdraw;
14
15use crate::model::{
16 ArenaMinRatedGames, ArenaRatingObj, ArenaSchedule, ArenaTournament, LightUser, PerfType, Title,
17 Verdicts,
18};
19use serde::{Deserialize, Serialize};
20use serde_with::skip_serializing_none;
21
22#[skip_serializing_none]
23#[derive(Clone, Debug, Deserialize, Serialize)]
24pub struct ArenaTournaments {
25 pub created: Vec<ArenaTournament>,
26 pub started: Vec<ArenaTournament>,
27 pub finished: Vec<ArenaTournament>,
28}
29
30#[skip_serializing_none]
31#[derive(Clone, Debug, Deserialize, Serialize)]
32#[serde(rename_all = "camelCase")]
33pub struct ArenaTournamentFull {
34 pub id: String,
35 pub full_name: String,
36 pub rated: Option<bool>,
37 pub spotlight: Option<ArenaSpotlight>,
38 pub berserkable: Option<bool>,
39 pub only_titled: Option<bool>,
40 pub clock: crate::model::ArenaClock,
41 pub minutes: u32,
42 pub created_by: Option<String>,
43 pub system: Option<String>,
44 pub seconds_to_start: Option<i32>,
45 pub seconds_to_finish: Option<i32>,
46 pub is_finished: Option<bool>,
47 pub is_recently_finished: Option<bool>,
48 pub pairings_closed: Option<bool>,
49 pub starts_at: Option<String>,
50 pub nb_players: u32,
51 pub verdicts: Option<Verdicts>,
52 pub quote: Option<ArenaQuote>,
53 pub great_player: Option<ArenaGreatPlayer>,
54 pub allow_list: Option<Vec<String>>,
55 pub has_max_rating: Option<bool>,
56 pub max_rating: Option<ArenaRatingObj>,
57 pub min_rating: Option<ArenaRatingObj>,
58 pub min_rated_games: Option<ArenaMinRatedGames>,
59 pub bots_allowed: Option<bool>,
60 pub min_account_age_in_days: Option<i32>,
61 pub perf: Option<ArenaFullPerf>,
62 pub schedule: Option<ArenaSchedule>,
63 pub description: Option<String>,
64 pub variant: Option<String>,
65 pub duels: Option<Vec<ArenaDuel>>,
66 pub standing: Option<ArenaStanding>,
67 pub featured: Option<ArenaFeaturedGame>,
68 pub podium: Option<Vec<ArenaPodiumPlayer>>,
69 pub stats: Option<ArenaStats>,
70 pub my_username: Option<String>,
71}
72
73#[derive(Clone, Debug, Deserialize, Serialize)]
74pub struct ArenaSpotlight {
75 pub headline: Option<String>,
76}
77
78#[derive(Clone, Debug, Deserialize, Serialize)]
79pub struct ArenaQuote {
80 pub text: Option<String>,
81 pub author: Option<String>,
82}
83
84#[derive(Clone, Debug, Deserialize, Serialize)]
85pub struct ArenaGreatPlayer {
86 pub name: Option<String>,
87 pub url: Option<String>,
88}
89
90#[skip_serializing_none]
91#[derive(Clone, Debug, Deserialize, Serialize)]
92pub struct ArenaFullPerf {
93 pub icon: Option<String>,
94 pub key: PerfType,
95 pub name: String,
96}
97
98#[skip_serializing_none]
99#[derive(Clone, Debug, Deserialize, Serialize)]
100pub struct ArenaDuel {
101 pub id: Option<String>,
102 pub p: Option<Vec<ArenaDuelPlayer>>,
103}
104
105#[skip_serializing_none]
106#[derive(Clone, Debug, Deserialize, Serialize)]
107pub struct ArenaDuelPlayer {
108 pub n: Option<String>,
109 pub r: Option<i32>,
110 pub k: Option<i32>,
111}
112
113#[skip_serializing_none]
114#[derive(Clone, Debug, Deserialize, Serialize)]
115pub struct ArenaStanding {
116 pub page: Option<i32>,
117 pub players: Vec<ArenaStandingPlayer>,
118}
119
120#[skip_serializing_none]
121#[derive(Clone, Debug, Deserialize, Serialize)]
122pub struct ArenaStandingPlayer {
123 pub name: String,
124 pub title: Option<Title>,
125 pub patron: Option<bool>,
126 #[serde(rename = "patronColor")]
127 pub patron_color: Option<u8>,
128 pub flair: Option<String>,
129 pub rank: Option<i32>,
130 pub rating: Option<i32>,
131 pub score: Option<i32>,
132 pub sheet: Option<ArenaSheet>,
133}
134
135#[skip_serializing_none]
136#[derive(Clone, Debug, Deserialize, Serialize)]
137pub struct ArenaSheet {
138 pub scores: String,
139 pub fire: Option<bool>,
140}
141
142#[skip_serializing_none]
143#[derive(Clone, Debug, Deserialize, Serialize)]
144pub struct ArenaFeaturedGame {
145 pub id: Option<String>,
146 pub fen: Option<String>,
147 pub orientation: Option<String>,
148 pub color: Option<String>,
149 #[serde(rename = "lastMove")]
150 pub last_move: Option<String>,
151 pub white: Option<ArenaFeaturedPlayer>,
152 pub black: Option<ArenaFeaturedPlayer>,
153 pub c: Option<ArenaFeaturedClock>,
154}
155
156#[skip_serializing_none]
157#[derive(Clone, Debug, Deserialize, Serialize)]
158pub struct ArenaFeaturedPlayer {
159 pub name: Option<String>,
160 pub id: Option<String>,
161 pub rank: Option<i32>,
162 pub rating: Option<i32>,
163}
164
165#[skip_serializing_none]
166#[derive(Clone, Debug, Deserialize, Serialize)]
167pub struct ArenaFeaturedClock {
168 pub white: Option<i32>,
169 pub black: Option<i32>,
170}
171
172#[skip_serializing_none]
173#[derive(Clone, Debug, Deserialize, Serialize)]
174pub struct ArenaPodiumPlayer {
175 pub name: String,
176 pub title: Option<Title>,
177 pub patron: Option<bool>,
178 #[serde(rename = "patronColor")]
179 pub patron_color: Option<u8>,
180 pub flair: Option<String>,
181 pub rank: Option<i32>,
182 pub rating: Option<i32>,
183 pub score: Option<i32>,
184 pub nb: Option<ArenaPodiumNb>,
185 pub performance: Option<i32>,
186}
187
188#[derive(Clone, Debug, Deserialize, Serialize)]
189pub struct ArenaPodiumNb {
190 pub game: Option<i32>,
191 pub berserk: Option<i32>,
192 pub win: Option<i32>,
193}
194
195#[derive(Clone, Debug, Deserialize, Serialize)]
196#[serde(rename_all = "camelCase")]
197pub struct ArenaStats {
198 pub games: i32,
199 pub moves: i32,
200 pub white_wins: i32,
201 pub black_wins: i32,
202 pub draws: i32,
203 pub berserks: i32,
204 pub average_rating: i32,
205}
206
207#[skip_serializing_none]
208#[derive(Clone, Debug, Deserialize, Serialize)]
209pub struct ArenaResult {
210 pub rank: i32,
211 pub score: i32,
212 pub rating: i32,
213 pub username: String,
214 pub performance: i32,
215 pub title: Option<Title>,
216 pub team: Option<String>,
217 pub flair: Option<String>,
218 #[serde(rename = "patronColor")]
219 pub patron_color: Option<u8>,
220 pub sheet: Option<ArenaSheet>,
221}
222
223#[derive(Clone, Debug, Deserialize, Serialize)]
224pub struct ArenaTeamStanding {
225 pub id: String,
226 pub teams: Vec<ArenaTeamStandingEntry>,
227}
228
229#[derive(Clone, Debug, Deserialize, Serialize)]
230pub struct ArenaTeamStandingEntry {
231 pub rank: i32,
232 pub id: String,
233 pub score: i32,
234 pub players: Vec<ArenaTeamStandingPlayer>,
235}
236
237#[skip_serializing_none]
238#[derive(Clone, Debug, Deserialize, Serialize)]
239pub struct ArenaTeamStandingPlayer {
240 pub user: LightUser,
241 pub score: Option<i32>,
242}
243
244#[derive(Clone, Debug, Deserialize, Serialize)]
245pub struct ArenaTournamentPlayed {
246 pub tournament: ArenaTournament,
247 pub player: ArenaTournamentPlayer,
248}
249
250#[skip_serializing_none]
251#[derive(Clone, Debug, Deserialize, Serialize)]
252pub struct ArenaTournamentPlayer {
253 pub games: i32,
254 pub score: i32,
255 pub rank: i32,
256 pub performance: Option<i32>,
257}