use crate::serde::Serialize;
use crate::serde::de::DeserializeOwned;
use crate::{InventoryItemProvider, TypeInfo, async_trait};
#[async_trait]
pub trait MessageHandler: InventoryItemProvider + Send + Sync {
type Input: TypeInfo + DeserializeOwned + Serialize + Send + Sync;
type Output: TypeInfo + DeserializeOwned + Serialize + Send + Sync;
async fn handle(data: Self::Input) -> Result<Self::Output, String>;
}