use serde::{Deserialize, Serialize};
use serde_json::{Map, Value};
use crate::Cancellation;
pub type Error = crate::Error;
pub mod local;
pub use local::Local;
#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
pub struct Request {
pub operation: String,
#[serde(default)]
pub input: Value,
#[serde(default)]
pub metadata: Map<String, Value>,
}
#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
pub struct Response {
pub data: Value,
#[serde(default)]
pub metadata: Map<String, Value>,
}
pub trait Sandbox: Send + Sync {
fn execute(
&self,
request: Request,
cancellation: &Cancellation,
) -> impl std::future::Future<Output = Result<Response, Error>> + Send;
}