use async_trait::async_trait;
use serde::{Deserialize, Serialize};
use crate::error::SdkResult;
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ToolDefinition {
pub name: String,
pub description: String,
pub parameters: serde_json::Value,
}
#[async_trait]
pub trait Tool: Send + Sync {
fn definition(&self) -> ToolDefinition;
async fn execute(&self, arguments: serde_json::Value) -> SdkResult<serde_json::Value>;
}