manabrew_protocol/prompts/
dice_rolled.rs1use 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}