Skip to main content

manabrew_protocol/prompts/
choose_combat_damage_assignment.rs

1use serde::{Deserialize, Serialize};
2use ts_rs::TS;
3
4use crate::prompts::common::CombatDamageAssignmentEntry;
5
6#[derive(Debug, Clone, Serialize, Deserialize, TS)]
7#[serde(rename_all = "camelCase")]
8#[ts(export, export_to = "prompts/chooseCombatDamageAssignment.ts")]
9pub struct ChooseCombatDamageAssignmentInput {
10    pub attacker_id: String,
11    pub blocker_ids: Vec<String>,
12    #[serde(default, skip_serializing_if = "Option::is_none")]
13    #[ts(optional)]
14    pub defender_id: Option<String>,
15    pub total_damage: i32,
16    pub attacker_has_deathtouch: bool,
17}
18
19#[derive(Debug, Clone, Serialize, Deserialize, TS)]
20#[serde(
21    tag = "type",
22    rename_all = "camelCase",
23    rename_all_fields = "camelCase"
24)]
25#[ts(export, export_to = "prompts/chooseCombatDamageAssignment.ts")]
26pub enum ChooseCombatDamageAssignmentOutput {
27    CombatDamageAssignmentDecision {
28        assignments: Vec<CombatDamageAssignmentEntry>,
29    },
30}