1#![cfg_attr(not(feature = "std"), no_std)]
2#![allow(clippy::too_many_arguments)]
3#![allow(clippy::try_err)]
4#![allow(clippy::wrong_self_convention)]
7#![deny(
8 clippy::arithmetic_side_effects,
9 clippy::cast_sign_loss,
10 clippy::cast_possible_truncation,
11 clippy::cast_possible_wrap,
12 clippy::string_slice
13)]
14#![deny(unused_crate_dependencies)]
15#![deny(unsafe_code)]
16
17#[cfg(feature = "alloc")]
20extern crate alloc;
21extern crate core;
22
23pub mod consts;
24mod tx_pointer;
25
26pub use fuel_asm::{
27 PanicInstruction,
28 PanicReason,
29};
30pub use fuel_types::{
31 Address,
32 AssetId,
33 BlobId,
34 Bytes4,
35 Bytes8,
36 Bytes32,
37 Bytes64,
38 ContractId,
39 MessageId,
40 Salt,
41 SubAssetId,
42 Word,
43};
44pub use tx_pointer::TxPointer;
45
46#[cfg(feature = "test-helpers")]
47mod builder;
48
49#[cfg(feature = "alloc")]
50mod contract;
51
52#[cfg(feature = "alloc")]
53mod receipt;
54
55#[cfg(feature = "alloc")]
56mod transaction;
57
58#[cfg(test)]
59mod tests;
60
61#[cfg(feature = "test-helpers")]
62pub mod test_helper;
63
64#[cfg(feature = "test-helpers")]
65pub use builder::{
66 Buildable,
67 Finalizable,
68 TransactionBuilder,
69};
70
71#[cfg(feature = "alloc")]
72pub use receipt::{
73 Receipt,
74 ScriptExecutionResult,
75};
76
77#[cfg(feature = "alloc")]
78pub use transaction::{
79 Blob,
80 BlobBody,
81 BlobIdExt,
82 BlobMetadata,
83 Cacheable,
84 Chargeable,
85 ChargeableMetadata,
86 ChargeableTransaction,
87 ConsensusParameters,
88 ContractParameters,
89 Create,
90 CreateMetadata,
91 DependentCost,
92 Executable,
93 FeeParameters,
94 FormatValidityChecks,
95 GasCosts,
96 GasCostsValues,
97 Mint,
98 PredicateParameters,
99 Script,
100 ScriptCode,
101 ScriptParameters,
102 StorageSlot,
103 Transaction,
104 TransactionFee,
105 TransactionRepr,
106 TxId,
107 TxParameters,
108 Upgrade,
109 UpgradeBody,
110 UpgradeMetadata,
111 UpgradePurpose,
112 Upload,
113 UploadBody,
114 UploadMetadata,
115 UploadSubsection,
116 UtxoId,
117 ValidityError,
118 Witness,
119 consensus_parameters,
120 field,
121 input,
122 input::Input,
123 input::InputRepr,
124 output,
125 output::Output,
126 output::OutputRepr,
127 policies,
128};
129
130#[cfg(feature = "da-compression")]
131pub use transaction::{
132 CompressedMint,
133 CompressedTransaction,
134 CompressedUtxoId,
135};
136
137pub use transaction::{
138 PrepareSign,
139 Signable,
140 UniqueIdentifier,
141};
142
143#[cfg(feature = "alloc")]
144pub use contract::Contract;
145
146pub trait ContractIdExt {
148 fn asset_id(&self, sub_id: &SubAssetId) -> AssetId;
150
151 fn default_asset(&self) -> AssetId;
153}
154
155impl ContractIdExt for ContractId {
156 fn asset_id(&self, sub_id: &SubAssetId) -> AssetId {
157 let hasher = fuel_crypto::Hasher::default();
158 AssetId::new(
159 *hasher
160 .chain(self.as_slice())
161 .chain(sub_id.as_slice())
162 .finalize(),
163 )
164 }
165
166 fn default_asset(&self) -> AssetId {
167 self.asset_id(&SubAssetId::zeroed())
168 }
169}