Skip to main content

manabrew_protocol/prompts/
dice_rolled.rs

1use serde::{Deserialize, Serialize};
2use ts_rs::TS;
3
4#[derive(Debug, Clone, Serialize, Deserialize, TS)]
5#[serde(rename_all = "camelCase")]
6#[ts(export, export_to = "prompts/diceRolled.ts")]
7pub struct DiceRollEntry {
8    #[serde(default, skip_serializing_if = "Option::is_none")]
9    #[ts(optional)]
10    pub label: Option<String>,
11    #[serde(default, skip_serializing_if = "Option::is_none")]
12    #[ts(optional)]
13    pub player_id: Option<String>,
14    pub natural_results: Vec<i32>,
15    pub final_results: Vec<i32>,
16    pub ignored_rolls: Vec<i32>,
17    #[serde(default)]
18    pub highlighted: bool,
19}
20
21#[derive(Debug, Clone, Serialize, Deserialize, TS)]
22#[serde(rename_all = "camelCase")]
23#[ts(export, export_to = "prompts/diceRolled.ts")]
24pub struct DiceRolledInput {
25    pub sides: i32,
26    pub rolls: Vec<DiceRollEntry>,
27    #[serde(default, skip_serializing_if = "Option::is_none")]
28    #[ts(optional)]
29    pub title: Option<String>,
30    #[serde(default, skip_serializing_if = "Option::is_none")]
31    #[ts(optional)]
32    pub source_card_name: Option<String>,
33}
34
35#[derive(Debug, Clone, Serialize, Deserialize, TS)]
36#[serde(
37    tag = "type",
38    rename_all = "camelCase",
39    rename_all_fields = "camelCase"
40)]
41#[ts(export, export_to = "prompts/diceRolled.ts")]
42pub enum DiceRolledOutput {
43    DiceRolledAcknowledged,
44}