use serde::{Deserialize, Serialize};
use ts_rs::TS;
use crate::prompts::common::PromptPresentation;
#[derive(Debug, Clone, Serialize, Deserialize, TS)]
#[serde(rename_all = "camelCase")]
#[ts(export, export_to = "prompts/diceRolled.ts")]
pub struct DiceRollEntry {
#[serde(default, skip_serializing_if = "Option::is_none")]
#[ts(optional)]
pub label: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
#[ts(optional)]
pub player_id: Option<String>,
pub natural_results: Vec<i32>,
pub final_results: Vec<i32>,
pub ignored_rolls: Vec<i32>,
#[serde(default)]
pub highlighted: bool,
}
#[derive(Debug, Clone, Serialize, Deserialize, TS)]
#[serde(rename_all = "camelCase")]
#[ts(export, export_to = "prompts/diceRolled.ts")]
pub struct DiceRolledInput {
pub presentation: PromptPresentation,
pub sides: i32,
pub rolls: Vec<DiceRollEntry>,
#[serde(default, skip_serializing_if = "Option::is_none")]
#[ts(optional)]
pub source_card_name: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize, TS)]
#[serde(
tag = "type",
rename_all = "camelCase",
rename_all_fields = "camelCase"
)]
#[ts(export, export_to = "prompts/diceRolled.ts")]
pub enum DiceRolledOutput {
DiceRolledAcknowledged,
}