use crate::module::traits::ModuleError;
use async_trait::async_trait;
use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ModuleApiRequest {
pub method: String,
pub params: Vec<u8>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ModuleApiResponse {
pub data: Vec<u8>,
pub error: Option<String>,
}
#[async_trait]
pub trait ModuleAPI: Send + Sync {
async fn handle_request(
&self,
method: &str,
params: &[u8],
caller_module_id: &str,
) -> Result<Vec<u8>, ModuleError>;
fn list_methods(&self) -> Vec<String>;
fn api_version(&self) -> u32;
}