essences/
arena.rs

1use crate::characters;
2use crate::opponents;
3use crate::users;
4
5use crate::prelude::*;
6
7#[declare]
8pub type ArenaMatchId = uuid::Uuid;
9
10#[derive(Clone, Debug, Serialize, Deserialize, PartialEq, Eq, JsonSchema, Tsify, CustomType)]
11#[tsify(into_wasm_abi, from_wasm_abi)]
12pub struct Match {
13    pub id: ArenaMatchId,
14    pub opponent: opponents::OpponentPreview,
15    pub is_win: bool,
16    pub rating_change: i64,
17    pub duration_secs: u64,
18    pub is_rematch_available: bool,
19    pub created_at: chrono::DateTime<chrono::Utc>,
20}
21
22#[derive(Debug, Clone, Serialize, Deserialize, Eq, PartialEq, JsonSchema, Tsify)]
23#[tsify(into_wasm_abi, from_wasm_abi)]
24pub struct ArenaMatchesHistoryRequest {
25    pub character_id: uuid::Uuid,
26}
27
28#[derive(Debug, Clone, Serialize, Deserialize, Eq, PartialEq, JsonSchema, Tsify)]
29#[tsify(into_wasm_abi, from_wasm_abi)]
30pub enum ArenaMatchesHistoryResponse {
31    Ok { matches: Vec<Match> },
32    Error { code: String, message: String },
33}
34
35#[derive(Clone, Debug, Serialize, Deserialize, PartialEq, Eq, JsonSchema, Tsify, CustomType)]
36pub struct League {
37    pub id: uuid::Uuid,
38    pub name: i18n::I18nString,
39}
40
41#[derive(Clone, Debug, Serialize, Deserialize, PartialEq, Eq, JsonSchema, Tsify, CustomType)]
42pub struct RankingItem {
43    pub user: users::User,
44    pub character: characters::Character,
45    pub place: u64,
46}
47
48#[derive(Debug, Clone, Serialize, Deserialize, Eq, PartialEq, JsonSchema, Tsify)]
49#[tsify(into_wasm_abi, from_wasm_abi)]
50pub struct ArenaLeaderboardRequest {
51    pub character_id: uuid::Uuid,
52}
53
54#[derive(Debug, Clone, Serialize, Deserialize, Eq, PartialEq, JsonSchema, Tsify)]
55#[tsify(into_wasm_abi, from_wasm_abi)]
56pub enum ArenaLeaderboardResponse {
57    Ok {
58        league: League,
59        leaderboard: Vec<RankingItem>,
60        character_ranking: Box<RankingItem>,
61    },
62    Error {
63        code: String,
64        message: String,
65    },
66}
67
68#[derive(
69    Clone, Debug, Serialize, Deserialize, Default, PartialEq, Eq, JsonSchema, Tsify, CustomType,
70)]
71pub struct ArenaTickets {
72    pub current_count: u64,
73    pub max_count: u64,
74    pub last_restore_at: chrono::DateTime<chrono::Utc>,
75}
76
77#[derive(Debug, Clone, Serialize, Deserialize, Eq, PartialEq, JsonSchema, Tsify)]
78#[tsify(into_wasm_abi, from_wasm_abi)]
79pub struct ArenaPvpPlayersRequest {
80    pub character_id: uuid::Uuid,
81}
82
83#[derive(Debug, Clone, Serialize, Deserialize, Eq, PartialEq, JsonSchema, Tsify)]
84#[tsify(into_wasm_abi, from_wasm_abi)]
85pub enum ArenaPvpPlayersResponse {
86    Ok {
87        opponents: Vec<crate::pvp::MatchmakingOpponent>,
88    },
89    Error {
90        code: String,
91        message: String,
92    },
93}
94
95#[derive(
96    Clone, Debug, Serialize, Deserialize, PartialEq, Eq, JsonSchema, Tsify, CustomType, Default,
97)]
98pub struct Arena {
99    pub matchmaking_opponents: Vec<crate::pvp::MatchmakingOpponent>,
100    pub is_free_refresh_available: bool,
101}
102
103#[derive(
104    Clone, Debug, Serialize, Deserialize, PartialEq, Eq, JsonSchema, Tsify, CustomType, Default,
105)]
106pub struct ArenaStars {
107    pub arena_stars_daily_claims: i64,
108}