use schemars::JsonSchema;
use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Serialize, Deserialize, JsonSchema)]
pub struct FunctionDeclaration {
pub name: String,
pub description: String,
pub parameters: Vec<Parameter>,
}
#[derive(Debug, Clone, Serialize, Deserialize, JsonSchema)]
pub struct Parameter {
pub name: String,
pub param_type: ParameterType,
pub description: String,
pub required: bool,
pub default: Option<serde_json::Value>,
}
#[derive(Debug, Clone, Serialize, Deserialize, JsonSchema)]
#[serde(rename_all = "lowercase")]
pub enum ParameterType {
String,
Integer,
Number,
Boolean,
Array,
Object,
#[serde(rename = "enum")]
Enum(Vec<String>),
}