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