mod banks_client;
mod program_test;
mod recorded;
pub use banks_client::BanksClientBackend;
pub use program_test::ProgramTestBackend;
pub use recorded::RecordedLogsBackend;
use crate::Result;
use crate::metadata::BackendKind;
use crate::scenario::Scenario;
#[derive(Debug, Clone, PartialEq, Eq)]
pub struct SimulationOutput {
pub logs: Vec<String>,
pub success: bool,
}
impl SimulationOutput {
#[must_use]
pub fn success(logs: Vec<String>) -> Self {
Self {
logs,
success: true,
}
}
}
pub trait ExecutionBackend {
fn kind(&self) -> BackendKind;
fn run(&self, scenario: &Scenario) -> Result<SimulationOutput>;
fn is_deterministic(&self) -> bool {
false
}
}