lichess_api/model/tablebase/
mod.rs

1pub 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}