use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Deserialize)]
pub struct DeckStats {
pub name: String,
#[serde(default, alias = "newCount", alias = "new_count")]
pub new_count: i64,
#[serde(default, alias = "learnCount", alias = "learn_count")]
pub learn_count: i64,
#[serde(default, alias = "reviewCount", alias = "review_count")]
pub review_count: i64,
#[serde(default, alias = "totalInDeck", alias = "total_in_deck")]
pub total_in_deck: i64,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct DeckConfig {
pub id: i64,
pub name: String,
#[serde(default)]
pub max_taken: i64,
#[serde(default)]
pub replayq: bool,
#[serde(default)]
pub autoplay: bool,
#[serde(default)]
pub timer: i64,
pub new: NewCardConfig,
pub rev: ReviewConfig,
pub lapse: LapseConfig,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct NewCardConfig {
#[serde(default)]
pub delays: Vec<f64>,
#[serde(default)]
pub order: i64,
#[serde(default)]
pub initial_factor: i64,
#[serde(default)]
pub separate: bool,
#[serde(default)]
pub ints: Vec<i64>,
#[serde(default)]
pub per_day: i64,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct ReviewConfig {
#[serde(default)]
pub per_day: i64,
#[serde(default)]
pub ease4: f64,
#[serde(default)]
pub fuzz: f64,
#[serde(default)]
pub min_space: i64,
#[serde(default)]
pub max_ivl: i64,
#[serde(default)]
pub bury: bool,
#[serde(default)]
pub hard_factor: f64,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct LapseConfig {
#[serde(default)]
pub delays: Vec<f64>,
#[serde(default)]
pub leech_fails: i64,
#[serde(default)]
pub leech_action: i64,
#[serde(default)]
pub min_int: i64,
#[serde(default)]
pub mult: f64,
}