use serde::{Deserialize, Serialize};
use ts_rs::TS;
use crate::prompts::common::PromptPresentation;
#[derive(Debug, Clone, Serialize, Deserialize, TS)]
#[serde(rename_all = "camelCase")]
#[ts(export, export_to = "prompts/chooseFromSelection.ts")]
pub struct SelectionOption {
pub label: String,
pub weight: usize,
pub can_repeat: bool,
}
#[derive(Debug, Clone, Serialize, Deserialize, TS)]
#[serde(rename_all = "camelCase")]
#[ts(export, export_to = "prompts/chooseFromSelection.ts")]
pub struct ChooseFromSelectionInput {
pub presentation: PromptPresentation,
pub options: Vec<SelectionOption>,
pub min_total: usize,
pub max_total: usize,
}
#[derive(Debug, Clone, Serialize, Deserialize, TS)]
#[serde(
tag = "type",
rename_all = "camelCase",
rename_all_fields = "camelCase"
)]
#[ts(export, export_to = "prompts/chooseFromSelection.ts")]
pub enum ChooseFromSelectionOutput {
SelectionDecision { chosen_indices: Vec<usize> },
}