lichess_api/model/tablebase/
mod.rs1pub mod antichess;
2pub mod atomic;
3pub mod standard;
4
5use serde::{Deserialize, Serialize};
6
7#[serde_with::skip_serializing_none]
8#[derive(Clone, Debug, Serialize, Deserialize)]
9pub struct TablebaseJson {
10 pub category: Category,
11 pub dtz: Option<i32>,
12 pub precise_dtz: Option<i32>,
13 pub dtm: Option<i32>,
14 pub checkmate: bool,
15 pub stalemate: bool,
16 pub variant_win: bool,
17 pub variant_loss: bool,
18 pub insufficient_material: bool,
19 pub moves: Vec<Move>,
20}
21
22#[serde_with::skip_serializing_none]
23#[derive(Clone, Debug, Serialize, Deserialize)]
24pub struct Move {
25 pub uci: String,
26 pub san: String,
27 pub category: Category,
28 pub dtz: Option<i32>,
29 pub precise_dtz: Option<i32>,
30 pub dtm: Option<i32>,
31 pub zeroing: bool,
32 pub checkmate: bool,
33 pub stalemate: bool,
34 pub variant_win: bool,
35 pub variant_loss: bool,
36 pub insufficient_material: bool,
37}
38
39#[derive(Clone, Debug, Serialize, Deserialize)]
40pub enum Category {
41 #[serde(rename = "win")]
42 Win,
43 #[serde(rename = "maybe-win")]
44 MaybeWin,
45 #[serde(rename = "cursed-win")]
46 CursedWin,
47 #[serde(rename = "loss")]
48 Loss,
49 #[serde(rename = "blessed-loss")]
50 BlessedLoss,
51 #[serde(rename = "maybe-loss")]
52 MaybeLoss,
53 #[serde(rename = "draw")]
54 Draw,
55 #[serde(rename = "unknown")]
56 Unknown,
57}