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