Skip to main content

manabrew_protocol/prompts/
scry.rs

1use serde::{Deserialize, Serialize};
2use ts_rs::TS;
3
4use crate::game::CardDto;
5use crate::prompts::common::PromptPresentation;
6
7#[derive(Debug, Clone, Serialize, Deserialize, TS)]
8#[serde(rename_all = "camelCase")]
9#[ts(export, export_to = "prompts/scry.ts")]
10pub enum ScryDestination {
11    LibraryTop,
12    LibraryBottom,
13    Graveyard,
14    Exile,
15    Hand,
16}
17
18#[derive(Debug, Clone, Serialize, Deserialize, TS)]
19#[serde(rename_all = "camelCase")]
20#[ts(export, export_to = "prompts/scry.ts")]
21pub struct ScryInput {
22    pub presentation: PromptPresentation,
23    pub cards: Vec<CardDto>,
24    pub zones: Vec<ScryDestination>,
25}
26
27#[derive(Debug, Clone, Serialize, Deserialize, TS)]
28#[serde(
29    tag = "type",
30    rename_all = "camelCase",
31    rename_all_fields = "camelCase"
32)]
33#[ts(export, export_to = "prompts/scry.ts")]
34pub enum ScryOutput {
35    ScryDecision { zone_card_ids: Vec<Vec<String>> },
36}