mod include;
mod state;
mod value;
use std::sync::Arc;
pub use async_trait::async_trait;
pub use include::IncludeAdaptor;
pub use state::WildDocState;
pub use value::{Vars, VarsStack, WildDocValue};
pub use anyhow;
pub use serde_json;
use anyhow::Result;
#[async_trait(?Send)]
pub trait WildDocScript {
    fn new(state: Arc<WildDocState>) -> Result<Self>
    where
        Self: Sized;
    async fn evaluate_module(&self, file_name: &str, src: &[u8]) -> Result<()>;
    async fn eval(&self, code: &[u8]) -> Result<WildDocValue>;
}