pub use avm_interface::CallSeDeErrors;
use avm_interface::ErrorAVMOutcome;
use marine::IValue;
use marine::MarineError;
use serde_json::Error as SerdeError;
use thiserror::Error as ThisError;
use std::io::Error as IOError;
use std::path::PathBuf;
#[derive(Debug, ThisError)]
pub enum AVMError<E> {
#[error("interpreter failed with: {0:?}")]
InterpreterFailed(ErrorAVMOutcome),
#[error(transparent)]
RunnerError(RunnerError),
#[error(transparent)]
DataStoreError(#[from] E),
#[error(transparent)]
AnomalyDataSeError(SerdeError),
}
#[derive(Debug, ThisError)]
pub enum RunnerError {
#[error(transparent)]
MarineError(#[from] MarineError),
#[error("path to AIR interpreter .wasm ({invalid_path:?}) is invalid: {reason}; IO Error: {io_error:?}")]
InvalidAIRPath {
invalid_path: PathBuf,
io_error: Option<IOError>,
reason: &'static str,
},
#[error("{0}")]
InterpreterResultDeError(String),
#[error("result `{0:?}` returned from Marine should contain only one element")]
IncorrectInterpreterResult(Vec<IValue>),
#[error(transparent)]
CallSeDeErrors(#[from] CallSeDeErrors),
#[error(transparent)]
KeyError(eyre::Error),
#[error("{0}")]
Aux(String),
}