Skip to main content

simplicity/jet/elements/
mod.rs

1// SPDX-License-Identifier: CC0-1.0
2
3mod c_env;
4mod environment;
5#[cfg(test)]
6mod tests;
7
8pub use environment::{ElementsEnv, ElementsUtxo};
9
10use super::init::elements::Elements;
11use super::JetEnvironment;
12use simplicity_sys::c_jets::frame_ffi::CFrameItem;
13use simplicity_sys::CElementsTxEnv;
14
15/// Type alias for the Elements transaction environment.
16pub type ElementsTxEnv = ElementsEnv<std::sync::Arc<elements::Transaction>>;
17
18impl JetEnvironment for ElementsTxEnv {
19    type Jet = Elements;
20    type CJetEnvironment = CElementsTxEnv;
21
22    fn c_jet_env(&self) -> &Self::CJetEnvironment {
23        self.c_tx_env()
24    }
25
26    fn c_jet_ptr(
27        jet: &Self::Jet,
28    ) -> fn(&mut CFrameItem, CFrameItem, &Self::CJetEnvironment) -> bool {
29        super::init::elements::c_jet_ptr(jet)
30    }
31}