use crate::method::InvokeResult;
use arora_types::value::Value;
use std::collections::HashMap;
use std::future::Future;
use std::pin::Pin;
use std::sync::Arc;
pub type WriteValuesResult = Result<(), String>;
pub type WriteValuesHandler =
Arc<dyn Fn(HashMap<String, Value>) -> WriteValuesResult + Send + Sync>;
pub type ReadValuesHandler = Arc<
dyn Fn(Vec<String>) -> Pin<Box<dyn Future<Output = HashMap<String, Value>> + Send>>
+ Send
+ Sync,
>;
pub type MethodHandler = Arc<dyn Fn(HashMap<String, Value>) -> InvokeResult + Send + Sync>;
pub type OnClientConnectedHandler = Arc<dyn Fn(String) + Send + Sync>;