use crate::error::{AfterburnerError, Result};
use crate::types::{FuelGauge, ScriptId, ScriptInvocation, ScriptOutcome};
use serde_json::Value;
pub trait Combustor: Send + Sync {
fn ignite(&self, source: &str) -> Result<ScriptId>;
fn thrust(&self, id: &ScriptId, input: &Value, limits: &FuelGauge) -> Result<Value>;
fn extinguish(&self, id: &ScriptId);
fn run_script(
&self,
source: &str,
invocation: &ScriptInvocation,
limits: &FuelGauge,
) -> Result<ScriptOutcome> {
let _ = (source, invocation, limits);
Err(AfterburnerError::Engine(
"script mode not supported by this backend".into(),
))
}
}