mod call_data;
mod impls;
pub mod test_api;
mod types;
#[cfg(test)]
mod tests;
use super::OnInstance;
use crate::Error;
use derive_more::From;
use ink_engine::ext::Engine;
pub struct EnvInstance {
engine: Engine,
}
impl OnInstance for EnvInstance {
fn on_instance<F, R>(f: F) -> R
where
F: FnOnce(&mut Self) -> R,
{
use core::cell::RefCell;
thread_local!(
static INSTANCE: RefCell<EnvInstance> = RefCell::new(
EnvInstance {
engine: Engine::new()
}
)
);
INSTANCE.with(|instance| f(&mut instance.borrow_mut()))
}
}
#[derive(Debug, From, PartialEq, Eq)]
pub enum OffChainError {
Account(AccountError),
#[from(ignore)]
UninitializedBlocks,
#[from(ignore)]
UninitializedExecutionContext,
#[from(ignore)]
UnregisteredChainExtension,
}
#[derive(Debug, From, PartialEq, Eq)]
pub enum AccountError {
Decoding(scale::Error),
#[from(ignore)]
UnexpectedUserAccount,
#[from(ignore)]
NoAccountForId(Vec<u8>),
}