use schemars::JsonSchema;
use serde::{Deserialize, Serialize};
#[derive(Debug, Deserialize, JsonSchema)]
pub struct SearchAgentsInput {
#[schemars(description = "List of capability tags to search for (AND semantics). Supports fuzzy prefix matching.")]
pub capabilities: Vec<String>,
#[schemars(description = "NIP-90 job kind offset to filter by (e.g. 100 for kind:5100)")]
pub job_kind: Option<u16>,
#[schemars(description = "Free-text search query to match against agent name, description, and capabilities (case-insensitive substring)")]
pub query: Option<String>,
#[schemars(description = "Maximum price in lamports to filter agents by. Agents more expensive than this are excluded. 1 SOL = 1,000,000,000 lamports.")]
pub max_price_lamports: Option<u64>,
}
#[derive(Debug, Deserialize, JsonSchema)]
pub struct ListCapabilitiesInput {}
#[derive(Debug, Serialize)]
pub struct CardSummary {
pub name: String,
pub description: String,
pub capabilities: Vec<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub job_price_lamports: Option<u64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub chain: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub network: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub version: Option<String>,
}
#[derive(Debug, Serialize)]
pub struct AgentInfo {
pub npub: String,
pub supported_kinds: Vec<u16>,
pub cards: Vec<CardSummary>,
}