Skip to main content

manabrew_protocol/prompts/
dice_rolled.rs

1use serde::{Deserialize, Serialize};
2use ts_rs::TS;
3
4use crate::prompts::common::PromptPresentation;
5
6#[derive(Debug, Clone, Serialize, Deserialize, TS)]
7#[serde(rename_all = "camelCase")]
8#[ts(export, export_to = "prompts/diceRolled.ts")]
9pub struct DiceRollEntry {
10    #[serde(default, skip_serializing_if = "Option::is_none")]
11    #[ts(optional)]
12    pub label: Option<String>,
13    #[serde(default, skip_serializing_if = "Option::is_none")]
14    #[ts(optional)]
15    pub player_id: Option<String>,
16    pub natural_results: Vec<i32>,
17    pub final_results: Vec<i32>,
18    pub ignored_rolls: Vec<i32>,
19    #[serde(default)]
20    pub highlighted: bool,
21}
22
23#[derive(Debug, Clone, Serialize, Deserialize, TS)]
24#[serde(rename_all = "camelCase")]
25#[ts(export, export_to = "prompts/diceRolled.ts")]
26pub struct DiceRolledInput {
27    pub presentation: PromptPresentation,
28    pub sides: i32,
29    pub rolls: Vec<DiceRollEntry>,
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}