fuel_vm/
lib.rs

1//! FuelVM implementation
2
3#![cfg_attr(not(feature = "std"), no_std)]
4#![warn(missing_docs)]
5#![deny(unsafe_code)]
6#![deny(unused_must_use)]
7#![deny(unused_crate_dependencies)]
8#![deny(
9    clippy::arithmetic_side_effects,
10    clippy::cast_sign_loss,
11    clippy::cast_possible_truncation,
12    clippy::cast_possible_wrap,
13    clippy::string_slice
14)]
15
16#[doc(hidden)] // Needed by some of the exported macros
17pub extern crate alloc;
18
19extern crate core;
20#[cfg(feature = "std")]
21extern crate libm as _; // Not needed with stdlib
22
23#[cfg(test)]
24use criterion as _;
25
26pub mod backtrace;
27pub mod call;
28pub mod checked_transaction;
29pub mod constraints;
30pub mod consts;
31pub mod context;
32mod convert;
33pub mod crypto;
34pub mod error;
35pub mod interpreter;
36#[cfg(feature = "test-helpers")]
37pub mod memory_client;
38pub mod pool;
39pub mod predicate;
40pub mod state;
41pub mod storage;
42pub mod transactor;
43pub mod util;
44pub mod verification;
45
46#[cfg(test)]
47mod tests;
48
49// Fully re-export fuel dependencies
50#[doc(no_inline)]
51pub use fuel_asm;
52#[doc(no_inline)]
53#[cfg(feature = "da-compression")]
54pub use fuel_compression;
55#[doc(no_inline)]
56pub use fuel_crypto;
57#[doc(no_inline)]
58pub use fuel_merkle;
59#[doc(no_inline)]
60pub use fuel_storage;
61#[doc(no_inline)]
62pub use fuel_tx;
63#[doc(no_inline)]
64pub use fuel_types;
65
66pub mod prelude {
67    //! Required implementations for full functionality
68    #[doc(no_inline)]
69    pub use fuel_asm::{
70        GMArgs,
71        GTFArgs,
72        Instruction,
73        Opcode,
74        PanicReason,
75        RegId,
76    };
77    #[doc(no_inline)]
78    pub use fuel_crypto::{
79        Hasher,
80        Message,
81        PublicKey,
82        SecretKey,
83        Signature,
84    };
85    #[doc(no_inline)]
86    pub use fuel_storage::{
87        MerkleRoot,
88        MerkleRootStorage,
89        StorageAsMut,
90        StorageAsRef,
91        StorageInspect,
92        StorageMutate,
93    };
94    #[doc(no_inline)]
95    pub use fuel_tx::*;
96    #[doc(no_inline)]
97    pub use fuel_types::{
98        Address,
99        AssetId,
100        BlobId,
101        Bytes32,
102        Bytes4,
103        Bytes64,
104        Bytes8,
105        ContractId,
106        Immediate06,
107        Immediate12,
108        Immediate18,
109        Immediate24,
110        RegisterId,
111        Salt,
112        Word,
113    };
114
115    pub use crate::{
116        backtrace::Backtrace,
117        call::{
118            Call,
119            CallFrame,
120        },
121        context::Context,
122        error::{
123            Bug,
124            BugVariant,
125            InterpreterError,
126            RuntimeError,
127        },
128        interpreter::{
129            predicates,
130            ExecutableTransaction,
131            Interpreter,
132            Memory,
133            MemoryInstance,
134            MemoryRange,
135        },
136        pool::VmMemoryPool,
137        predicate::RuntimePredicate,
138        state::{
139            Debugger,
140            ProgramState,
141            StateTransition,
142            StateTransitionRef,
143        },
144        storage::{
145            predicate::PredicateStorage,
146            InterpreterStorage,
147        },
148        transactor::Transactor,
149    };
150
151    pub use crate::state::{
152        Breakpoint,
153        DebugEval,
154    };
155
156    #[cfg(any(test, feature = "test-helpers"))]
157    pub use crate::{
158        checked_transaction::{
159            builder::TransactionBuilderExt,
160            IntoChecked,
161        },
162        memory_client::MemoryClient,
163        storage::MemoryStorage,
164        util::test_helpers::TestBuilder,
165    };
166}