Skip to main content

manabrew_protocol/prompts/
choose_attackers.rs

1use serde::{Deserialize, Serialize};
2use ts_rs::TS;
3
4use crate::prompts::common::{AttackAssignment, AttackTargetDto};
5
6#[derive(Debug, Clone, Serialize, Deserialize, TS)]
7#[serde(rename_all = "camelCase")]
8#[ts(export, export_to = "prompts/chooseAttackers.ts")]
9pub struct AttackerOptionDto {
10    pub attacker_id: String,
11    pub valid_target_ids: Vec<String>,
12    pub must_attack: bool,
13}
14
15#[derive(Debug, Clone, Serialize, Deserialize, TS)]
16#[serde(rename_all = "camelCase")]
17#[ts(export, export_to = "prompts/chooseAttackers.ts")]
18pub struct ChooseAttackersInput {
19    pub attackers: Vec<AttackerOptionDto>,
20    pub attack_targets: Vec<AttackTargetDto>,
21}
22
23#[derive(Debug, Clone, Serialize, Deserialize, TS)]
24#[serde(
25    tag = "type",
26    rename_all = "camelCase",
27    rename_all_fields = "camelCase"
28)]
29#[ts(export, export_to = "prompts/chooseAttackers.ts")]
30pub enum ChooseAttackersOutput {
31    DeclareAttackers { assignments: Vec<AttackAssignment> },
32}