use serde::{Deserialize, Serialize};
use crate::macros::with_meta;
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ArgumentInfo {
pub name: String,
pub value: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(tag = "type")]
pub enum Reference {
#[serde(rename = "ref/resource")]
Resource(ResourceTemplateReference),
#[serde(rename = "ref/prompt")]
Prompt(PromptReference),
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ResourceTemplateReference {
pub uri: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct PromptReference {
pub name: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub title: Option<String>,
}
#[with_meta]
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct CompleteResult {
pub completion: CompletionInfo,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct CompletionInfo {
pub values: Vec<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub total: Option<i64>,
#[serde(rename = "hasMore", skip_serializing_if = "Option::is_none")]
pub has_more: Option<bool>,
}