use bevy_brp_mcp_macros::ParamStruct;
use bevy_brp_mcp_macros::ResultStruct;
use schemars::JsonSchema;
use serde::Deserialize;
use serde::Serialize;
use serde_json::Value;
use crate::brp_tools::Port;
#[derive(Clone, Deserialize, Serialize, JsonSchema, ParamStruct)]
pub struct RegistrySchemaParams {
#[serde(skip_serializing_if = "Option::is_none")]
pub with_crates: Option<Vec<String>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub with_types: Option<Vec<String>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub without_crates: Option<Vec<String>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub without_types: Option<Vec<String>>,
#[serde(default)]
pub port: Port,
}
#[derive(Serialize, ResultStruct)]
#[brp_result]
pub struct RegistrySchemaResult {
#[serde(skip_serializing_if = "Option::is_none")]
#[to_result(skip_if_none)]
pub result: Option<Value>,
#[to_metadata(result_operation = "count")]
pub type_count: usize,
#[to_message(message_template = "Retrieved {type_count} schemas")]
pub message_template: String,
}