Full Code of FuelLabs/fuels-rs for AI

master 137fa28aa630 cached
641 files
1.7 MB
452.3k tokens
2300 symbols
1 requests
Download .txt
Showing preview only (1,920K chars total). Download the full file or copy to clipboard to get everything.
Repository: FuelLabs/fuels-rs
Branch: master
Commit: 137fa28aa630
Files: 641
Total size: 1.7 MB

Directory structure:
gitextract_yk9mjvhk/

├── .editorconfig
├── .github/
│   ├── CODEOWNERS
│   ├── PULL_REQUEST_TEMPLATE.md
│   └── workflows/
│       ├── ci.yml
│       ├── docs.yml
│       ├── gh-pages.yml
│       ├── repo-plan.toml
│       └── scripts/
│           └── verify_tag.sh
├── .gitignore
├── .markdownlint.yaml
├── .markdownlintignore
├── Cargo.toml
├── LICENSE
├── README.md
├── SECURITY.md
├── _typos.toml
├── ci_checks.sh
├── docs/
│   ├── .spellcheck.yml
│   ├── book.toml
│   ├── spell-check-custom-words.txt
│   ├── src/
│   │   ├── SUMMARY.md
│   │   ├── abigen/
│   │   │   ├── index.md
│   │   │   ├── the-abigen-macro.md
│   │   │   └── the-json-abi-file.md
│   │   ├── accounts.md
│   │   ├── calling-contracts/
│   │   │   ├── call-params.md
│   │   │   ├── call-response.md
│   │   │   ├── calls-with-different-wallets.md
│   │   │   ├── cost-estimation.md
│   │   │   ├── custom-asset-transfer.md
│   │   │   ├── custom-inputs-outputs.md
│   │   │   ├── index.md
│   │   │   ├── logs.md
│   │   │   ├── low-level-calls.md
│   │   │   ├── multicalls.md
│   │   │   ├── other-contracts.md
│   │   │   ├── simulation.md
│   │   │   ├── tx-dependency-estimation.md
│   │   │   ├── tx-policies.md
│   │   │   └── variable-outputs.md
│   │   ├── cli/
│   │   │   ├── fuels-abi-cli.md
│   │   │   └── index.md
│   │   ├── codec/
│   │   │   ├── decoding.md
│   │   │   ├── encoding.md
│   │   │   └── index.md
│   │   ├── connecting/
│   │   │   ├── external-node.md
│   │   │   ├── index.md
│   │   │   ├── querying.md
│   │   │   ├── retrying.md
│   │   │   ├── rocksdb.md
│   │   │   └── short-lived.md
│   │   ├── contributing/
│   │   │   ├── CONTRIBUTING.md
│   │   │   └── tests-structure.md
│   │   ├── cookbook/
│   │   │   ├── custom-chain.md
│   │   │   ├── deposit-and-withdraw.md
│   │   │   ├── index.md
│   │   │   └── transfer-all-assets.md
│   │   ├── custom-transactions/
│   │   │   ├── custom-calls.md
│   │   │   ├── index.md
│   │   │   └── transaction-builders.md
│   │   ├── debugging/
│   │   │   ├── decoding-script-transactions.md
│   │   │   ├── function-selector.md
│   │   │   └── index.md
│   │   ├── deploying/
│   │   │   ├── configurable-constants.md
│   │   │   ├── index.md
│   │   │   ├── interacting-with-contracts.md
│   │   │   ├── large_contracts.md
│   │   │   ├── storage-slots.md
│   │   │   └── the-fuelvm-binary-file.md
│   │   ├── getting-started.md
│   │   ├── glossary.md
│   │   ├── index.md
│   │   ├── predicates/
│   │   │   ├── index.md
│   │   │   └── send-spend-predicate.md
│   │   ├── preuploading-code.md
│   │   ├── reference.md
│   │   ├── running-scripts.md
│   │   ├── testing/
│   │   │   ├── basics.md
│   │   │   ├── chains.md
│   │   │   ├── index.md
│   │   │   └── the-setup-program-test-macro.md
│   │   ├── types/
│   │   │   ├── B512.md
│   │   │   ├── address.md
│   │   │   ├── asset-id.md
│   │   │   ├── bits256.md
│   │   │   ├── bytes.md
│   │   │   ├── bytes32.md
│   │   │   ├── contract-id.md
│   │   │   ├── conversion.md
│   │   │   ├── custom_types.md
│   │   │   ├── evm_address.md
│   │   │   ├── index.md
│   │   │   ├── string.md
│   │   │   └── vectors.md
│   │   └── wallets/
│   │       ├── access.md
│   │       ├── checking-balances-and-coins.md
│   │       ├── fake_signer.md
│   │       ├── index.md
│   │       ├── keystore.md
│   │       ├── kms.md
│   │       ├── private_key_signer.md
│   │       ├── signing.md
│   │       └── test-wallets.md
│   └── theme/
│       └── highlight.js
├── e2e/
│   ├── Cargo.toml
│   ├── Forc.toml
│   ├── build.rs
│   ├── src/
│   │   ├── aws_kms.rs
│   │   ├── e2e_helpers.rs
│   │   └── lib.rs
│   ├── sway/
│   │   ├── abi/
│   │   │   ├── simple_contract/
│   │   │   │   ├── Forc.toml
│   │   │   │   └── src/
│   │   │   │       └── main.sw
│   │   │   ├── wasm_contract/
│   │   │   │   ├── Forc.toml
│   │   │   │   └── src/
│   │   │   │       └── main.sw
│   │   │   └── wasm_predicate/
│   │   │       ├── Forc.toml
│   │   │       └── src/
│   │   │           └── main.sw
│   │   ├── bindings/
│   │   │   ├── sharing_types/
│   │   │   │   ├── contract_a/
│   │   │   │   │   ├── Forc.toml
│   │   │   │   │   └── src/
│   │   │   │   │       └── main.sw
│   │   │   │   ├── contract_b/
│   │   │   │   │   ├── Forc.toml
│   │   │   │   │   └── src/
│   │   │   │   │       └── main.sw
│   │   │   │   └── shared_lib/
│   │   │   │       ├── Forc.toml
│   │   │   │       └── src/
│   │   │   │           └── lib.sw
│   │   │   ├── simple_contract/
│   │   │   │   ├── Forc.toml
│   │   │   │   └── src/
│   │   │   │       └── main.sw
│   │   │   └── type_paths/
│   │   │       ├── Forc.toml
│   │   │       └── src/
│   │   │           ├── another_lib.sw
│   │   │           ├── contract_a_types.sw
│   │   │           └── main.sw
│   │   ├── contracts/
│   │   │   ├── asserts/
│   │   │   │   ├── Forc.toml
│   │   │   │   └── src/
│   │   │   │       └── main.sw
│   │   │   ├── auth_testing_abi/
│   │   │   │   ├── Forc.toml
│   │   │   │   └── src/
│   │   │   │       └── main.sw
│   │   │   ├── auth_testing_contract/
│   │   │   │   ├── Forc.toml
│   │   │   │   └── src/
│   │   │   │       └── main.sw
│   │   │   ├── block_timestamp/
│   │   │   │   ├── Forc.toml
│   │   │   │   └── src/
│   │   │   │       └── main.sw
│   │   │   ├── configurables/
│   │   │   │   ├── Forc.toml
│   │   │   │   └── src/
│   │   │   │       └── main.sw
│   │   │   ├── contract_test/
│   │   │   │   ├── Forc.toml
│   │   │   │   └── src/
│   │   │   │       └── main.sw
│   │   │   ├── huge_contract/
│   │   │   │   ├── Forc.toml
│   │   │   │   └── src/
│   │   │   │       └── main.sw
│   │   │   ├── large_return_data/
│   │   │   │   ├── Forc.toml
│   │   │   │   └── src/
│   │   │   │       └── main.sw
│   │   │   ├── lib_contract/
│   │   │   │   ├── Forc.toml
│   │   │   │   └── src/
│   │   │   │       └── main.sw
│   │   │   ├── lib_contract_abi/
│   │   │   │   ├── Forc.toml
│   │   │   │   └── src/
│   │   │   │       └── main.sw
│   │   │   ├── lib_contract_caller/
│   │   │   │   ├── Forc.toml
│   │   │   │   └── src/
│   │   │   │       └── main.sw
│   │   │   ├── library_test/
│   │   │   │   ├── Forc.toml
│   │   │   │   └── src/
│   │   │   │       └── main.sw
│   │   │   ├── liquidity_pool/
│   │   │   │   ├── Forc.toml
│   │   │   │   └── src/
│   │   │   │       └── main.sw
│   │   │   ├── low_level_caller/
│   │   │   │   ├── Forc.toml
│   │   │   │   └── src/
│   │   │   │       └── main.sw
│   │   │   ├── msg_methods/
│   │   │   │   ├── Forc.toml
│   │   │   │   └── src/
│   │   │   │       └── main.sw
│   │   │   ├── multiple_read_calls/
│   │   │   │   ├── Forc.toml
│   │   │   │   └── src/
│   │   │   │       └── main.sw
│   │   │   ├── needs_custom_decoder/
│   │   │   │   ├── Forc.toml
│   │   │   │   └── src/
│   │   │   │       └── main.sw
│   │   │   ├── payable_annotation/
│   │   │   │   ├── Forc.toml
│   │   │   │   └── src/
│   │   │   │       └── main.sw
│   │   │   ├── proxy/
│   │   │   │   ├── Forc.toml
│   │   │   │   └── src/
│   │   │   │       └── main.sw
│   │   │   ├── revert_transaction_error/
│   │   │   │   ├── Forc.toml
│   │   │   │   └── src/
│   │   │   │       └── main.sw
│   │   │   ├── storage/
│   │   │   │   ├── Forc.toml
│   │   │   │   └── src/
│   │   │   │       └── main.sw
│   │   │   ├── token_ops/
│   │   │   │   ├── Forc.toml
│   │   │   │   └── src/
│   │   │   │       └── main.sw
│   │   │   ├── transaction_block_height/
│   │   │   │   ├── Forc.toml
│   │   │   │   └── src/
│   │   │   │       └── main.sw
│   │   │   ├── tx_input_output/
│   │   │   │   ├── Forc.toml
│   │   │   │   └── src/
│   │   │   │       └── main.sw
│   │   │   └── var_outputs/
│   │   │       ├── Forc.toml
│   │   │       └── src/
│   │   │           └── main.sw
│   │   ├── logs/
│   │   │   ├── contract_logs/
│   │   │   │   ├── Forc.toml
│   │   │   │   └── src/
│   │   │   │       └── main.sw
│   │   │   ├── contract_logs_abi/
│   │   │   │   ├── Forc.toml
│   │   │   │   └── src/
│   │   │   │       └── main.sw
│   │   │   ├── contract_revert_logs/
│   │   │   │   ├── Forc.toml
│   │   │   │   └── src/
│   │   │   │       └── main.sw
│   │   │   ├── contract_with_contract_logs/
│   │   │   │   ├── Forc.toml
│   │   │   │   └── src/
│   │   │   │       └── main.sw
│   │   │   ├── script_heap_logs/
│   │   │   │   ├── Forc.toml
│   │   │   │   └── src/
│   │   │   │       └── main.sw
│   │   │   ├── script_logs/
│   │   │   │   ├── Forc.toml
│   │   │   │   └── src/
│   │   │   │       └── main.sw
│   │   │   ├── script_revert_logs/
│   │   │   │   ├── Forc.toml
│   │   │   │   └── src/
│   │   │   │       └── main.sw
│   │   │   └── script_with_contract_logs/
│   │   │       ├── Forc.toml
│   │   │       └── src/
│   │   │           └── main.sw
│   │   ├── predicates/
│   │   │   ├── basic_predicate/
│   │   │   │   ├── Forc.toml
│   │   │   │   └── src/
│   │   │   │       └── main.sw
│   │   │   ├── predicate_blobs/
│   │   │   │   ├── Forc.toml
│   │   │   │   └── src/
│   │   │   │       └── main.sw
│   │   │   ├── predicate_configurables/
│   │   │   │   ├── Forc.toml
│   │   │   │   └── src/
│   │   │   │       └── main.sw
│   │   │   ├── predicate_tx_input_output/
│   │   │   │   ├── Forc.toml
│   │   │   │   └── src/
│   │   │   │       └── main.sw
│   │   │   ├── predicate_witnesses/
│   │   │   │   ├── Forc.toml
│   │   │   │   └── src/
│   │   │   │       └── main.sw
│   │   │   ├── signatures/
│   │   │   │   ├── Forc.toml
│   │   │   │   └── src/
│   │   │   │       └── main.sw
│   │   │   └── swap/
│   │   │       ├── Forc.toml
│   │   │       └── src/
│   │   │           └── main.sw
│   │   ├── scripts/
│   │   │   ├── arguments/
│   │   │   │   ├── Forc.toml
│   │   │   │   └── src/
│   │   │   │       └── main.sw
│   │   │   ├── basic_script/
│   │   │   │   ├── Forc.toml
│   │   │   │   └── src/
│   │   │   │       └── main.sw
│   │   │   ├── empty/
│   │   │   │   ├── Forc.toml
│   │   │   │   └── src/
│   │   │   │       └── main.sw
│   │   │   ├── require_from_contract/
│   │   │   │   ├── Forc.toml
│   │   │   │   └── src/
│   │   │   │       └── main.sw
│   │   │   ├── reverting/
│   │   │   │   ├── Forc.toml
│   │   │   │   └── src/
│   │   │   │       └── main.sw
│   │   │   ├── script_array/
│   │   │   │   ├── Forc.toml
│   │   │   │   └── src/
│   │   │   │       └── main.sw
│   │   │   ├── script_asserts/
│   │   │   │   ├── Forc.toml
│   │   │   │   └── src/
│   │   │   │       └── main.sw
│   │   │   ├── script_blobs/
│   │   │   │   ├── Forc.toml
│   │   │   │   └── src/
│   │   │   │       └── main.sw
│   │   │   ├── script_configurables/
│   │   │   │   ├── Forc.toml
│   │   │   │   └── src/
│   │   │   │       └── main.sw
│   │   │   ├── script_enum/
│   │   │   │   ├── Forc.toml
│   │   │   │   └── src/
│   │   │   │       └── main.sw
│   │   │   ├── script_needs_custom_decoder/
│   │   │   │   ├── Forc.toml
│   │   │   │   └── src/
│   │   │   │       └── main.sw
│   │   │   ├── script_proxy/
│   │   │   │   ├── Forc.toml
│   │   │   │   └── src/
│   │   │   │       └── main.sw
│   │   │   ├── script_struct/
│   │   │   │   ├── Forc.toml
│   │   │   │   └── src/
│   │   │   │       └── main.sw
│   │   │   ├── script_tx_input_output/
│   │   │   │   ├── Forc.toml
│   │   │   │   └── src/
│   │   │   │       └── main.sw
│   │   │   └── transfer_script/
│   │   │       ├── Forc.toml
│   │   │       └── src/
│   │   │           └── main.sw
│   │   └── types/
│   │       ├── contracts/
│   │       │   ├── b256/
│   │       │   │   ├── Forc.toml
│   │       │   │   └── src/
│   │       │   │       └── main.sw
│   │       │   ├── b512/
│   │       │   │   ├── Forc.toml
│   │       │   │   └── src/
│   │       │   │       └── main.sw
│   │       │   ├── bytes/
│   │       │   │   ├── Forc.toml
│   │       │   │   └── src/
│   │       │   │       └── main.sw
│   │       │   ├── call_empty_return/
│   │       │   │   ├── Forc.toml
│   │       │   │   └── src/
│   │       │   │       └── main.sw
│   │       │   ├── complex_types_contract/
│   │       │   │   ├── Forc.toml
│   │       │   │   └── src/
│   │       │   │       └── main.sw
│   │       │   ├── contract_output_test/
│   │       │   │   ├── Forc.toml
│   │       │   │   └── src/
│   │       │   │       └── main.sw
│   │       │   ├── empty_arguments/
│   │       │   │   ├── Forc.toml
│   │       │   │   └── src/
│   │       │   │       └── main.sw
│   │       │   ├── enum_as_input/
│   │       │   │   ├── Forc.toml
│   │       │   │   └── src/
│   │       │   │       └── main.sw
│   │       │   ├── enum_encoding/
│   │       │   │   ├── Forc.toml
│   │       │   │   └── src/
│   │       │   │       └── main.sw
│   │       │   ├── enum_inside_struct/
│   │       │   │   ├── Forc.toml
│   │       │   │   └── src/
│   │       │   │       └── main.sw
│   │       │   ├── evm_address/
│   │       │   │   ├── Forc.toml
│   │       │   │   └── src/
│   │       │   │       └── main.sw
│   │       │   ├── generics/
│   │       │   │   ├── Forc.toml
│   │       │   │   └── src/
│   │       │   │       └── main.sw
│   │       │   ├── heap_type_in_enums/
│   │       │   │   ├── Forc.toml
│   │       │   │   └── src/
│   │       │   │       └── main.sw
│   │       │   ├── heap_types/
│   │       │   │   ├── Forc.toml
│   │       │   │   └── src/
│   │       │   │       └── main.sw
│   │       │   ├── identity/
│   │       │   │   ├── Forc.toml
│   │       │   │   └── src/
│   │       │   │       └── main.sw
│   │       │   ├── native_types/
│   │       │   │   ├── Forc.toml
│   │       │   │   └── src/
│   │       │   │       └── main.sw
│   │       │   ├── nested_structs/
│   │       │   │   ├── Forc.toml
│   │       │   │   └── src/
│   │       │   │       └── main.sw
│   │       │   ├── options/
│   │       │   │   ├── Forc.toml
│   │       │   │   └── src/
│   │       │   │       └── main.sw
│   │       │   ├── raw_slice/
│   │       │   │   ├── Forc.toml
│   │       │   │   └── src/
│   │       │   │       └── main.sw
│   │       │   ├── results/
│   │       │   │   ├── Forc.toml
│   │       │   │   └── src/
│   │       │   │       └── main.sw
│   │       │   ├── std_lib_string/
│   │       │   │   ├── Forc.toml
│   │       │   │   └── src/
│   │       │   │       └── main.sw
│   │       │   ├── str_in_array/
│   │       │   │   ├── Forc.toml
│   │       │   │   └── src/
│   │       │   │       └── main.sw
│   │       │   ├── string_slice/
│   │       │   │   ├── Forc.toml
│   │       │   │   └── src/
│   │       │   │       └── main.sw
│   │       │   ├── tuples/
│   │       │   │   ├── Forc.toml
│   │       │   │   └── src/
│   │       │   │       └── main.sw
│   │       │   ├── two_structs/
│   │       │   │   ├── Forc.toml
│   │       │   │   └── src/
│   │       │   │       └── main.sw
│   │       │   ├── type_inside_enum/
│   │       │   │   ├── Forc.toml
│   │       │   │   └── src/
│   │       │   │       └── main.sw
│   │       │   ├── u128/
│   │       │   │   ├── Forc.toml
│   │       │   │   └── src/
│   │       │   │       └── main.sw
│   │       │   ├── u256/
│   │       │   │   ├── Forc.toml
│   │       │   │   └── src/
│   │       │   │       └── main.sw
│   │       │   ├── vector_output/
│   │       │   │   ├── Forc.toml
│   │       │   │   └── src/
│   │       │   │       └── main.sw
│   │       │   └── vectors/
│   │       │       ├── Forc.toml
│   │       │       └── src/
│   │       │           ├── data_structures.sw
│   │       │           ├── eq_impls.sw
│   │       │           ├── main.sw
│   │       │           └── utils.sw
│   │       ├── predicates/
│   │       │   ├── address/
│   │       │   │   ├── Forc.toml
│   │       │   │   └── src/
│   │       │   │       └── main.sw
│   │       │   ├── enums/
│   │       │   │   ├── Forc.toml
│   │       │   │   └── src/
│   │       │   │       └── main.sw
│   │       │   ├── predicate_b256/
│   │       │   │   ├── Forc.toml
│   │       │   │   └── src/
│   │       │   │       └── main.sw
│   │       │   ├── predicate_bytes/
│   │       │   │   ├── Forc.toml
│   │       │   │   └── src/
│   │       │   │       └── main.sw
│   │       │   ├── predicate_bytes_hash/
│   │       │   │   ├── Forc.toml
│   │       │   │   └── src/
│   │       │   │       └── main.sw
│   │       │   ├── predicate_generics/
│   │       │   │   ├── Forc.toml
│   │       │   │   └── src/
│   │       │   │       └── main.sw
│   │       │   ├── predicate_raw_slice/
│   │       │   │   ├── Forc.toml
│   │       │   │   └── src/
│   │       │   │       └── main.sw
│   │       │   ├── predicate_std_lib_string/
│   │       │   │   ├── Forc.toml
│   │       │   │   └── src/
│   │       │   │       └── main.sw
│   │       │   ├── predicate_string_slice/
│   │       │   │   ├── Forc.toml
│   │       │   │   └── src/
│   │       │   │       └── main.sw
│   │       │   ├── predicate_tuples/
│   │       │   │   ├── Forc.toml
│   │       │   │   └── src/
│   │       │   │       └── main.sw
│   │       │   ├── predicate_u128/
│   │       │   │   ├── Forc.toml
│   │       │   │   └── src/
│   │       │   │       └── main.sw
│   │       │   ├── predicate_u256/
│   │       │   │   ├── Forc.toml
│   │       │   │   └── src/
│   │       │   │       └── main.sw
│   │       │   ├── predicate_vector/
│   │       │   │   ├── Forc.toml
│   │       │   │   └── src/
│   │       │   │       └── main.sw
│   │       │   ├── predicate_vectors/
│   │       │   │   ├── Forc.toml
│   │       │   │   └── src/
│   │       │   │       └── main.sw
│   │       │   ├── structs/
│   │       │   │   ├── Forc.toml
│   │       │   │   └── src/
│   │       │   │       └── main.sw
│   │       │   └── u64/
│   │       │       ├── Forc.toml
│   │       │       └── src/
│   │       │           └── main.sw
│   │       └── scripts/
│   │           ├── options_results/
│   │           │   ├── Forc.toml
│   │           │   └── src/
│   │           │       └── main.sw
│   │           ├── script_b256/
│   │           │   ├── Forc.toml
│   │           │   └── src/
│   │           │       └── main.sw
│   │           ├── script_bytes/
│   │           │   ├── Forc.toml
│   │           │   └── src/
│   │           │       └── main.sw
│   │           ├── script_generics/
│   │           │   ├── Forc.toml
│   │           │   └── src/
│   │           │       └── main.sw
│   │           ├── script_heap_types/
│   │           │   ├── Forc.toml
│   │           │   └── src/
│   │           │       └── main.sw
│   │           ├── script_raw_slice/
│   │           │   ├── Forc.toml
│   │           │   └── src/
│   │           │       └── main.sw
│   │           ├── script_std_lib_string/
│   │           │   ├── Forc.toml
│   │           │   └── src/
│   │           │       └── main.sw
│   │           ├── script_string_slice/
│   │           │   ├── Forc.toml
│   │           │   └── src/
│   │           │       └── main.sw
│   │           ├── script_tuples/
│   │           │   ├── Forc.toml
│   │           │   └── src/
│   │           │       └── main.sw
│   │           ├── script_u128/
│   │           │   ├── Forc.toml
│   │           │   └── src/
│   │           │       └── main.sw
│   │           ├── script_u256/
│   │           │   ├── Forc.toml
│   │           │   └── src/
│   │           │       └── main.sw
│   │           └── script_vectors/
│   │               ├── Forc.toml
│   │               └── src/
│   │                   ├── data_structures.sw
│   │                   ├── eq_impls.sw
│   │                   ├── main.sw
│   │                   └── utils.sw
│   └── tests/
│       ├── aws.rs
│       ├── binary_format.rs
│       ├── bindings.rs
│       ├── configurables.rs
│       ├── contracts.rs
│       ├── debug_utils.rs
│       ├── from_token.rs
│       ├── imports.rs
│       ├── logs.rs
│       ├── predicates.rs
│       ├── providers.rs
│       ├── scripts.rs
│       ├── storage.rs
│       ├── types_contracts.rs
│       ├── types_predicates.rs
│       ├── types_scripts.rs
│       └── wallets.rs
├── examples/
│   ├── codec/
│   │   ├── Cargo.toml
│   │   └── src/
│   │       └── lib.rs
│   ├── contracts/
│   │   ├── Cargo.toml
│   │   └── src/
│   │       └── lib.rs
│   ├── cookbook/
│   │   ├── Cargo.toml
│   │   └── src/
│   │       └── lib.rs
│   ├── debugging/
│   │   ├── Cargo.toml
│   │   └── src/
│   │       └── lib.rs
│   ├── macros/
│   │   ├── Cargo.toml
│   │   └── src/
│   │       └── lib.rs
│   ├── predicates/
│   │   ├── Cargo.toml
│   │   └── src/
│   │       └── lib.rs
│   ├── providers/
│   │   ├── Cargo.toml
│   │   └── src/
│   │       └── lib.rs
│   ├── rust_bindings/
│   │   ├── Cargo.toml
│   │   └── src/
│   │       ├── abi.json
│   │       ├── lib.rs
│   │       └── rust_bindings_formatted.rs
│   ├── types/
│   │   ├── Cargo.toml
│   │   └── src/
│   │       └── lib.rs
│   └── wallets/
│       ├── Cargo.toml
│       └── src/
│           └── lib.rs
├── packages/
│   ├── fuels/
│   │   ├── Cargo.toml
│   │   └── src/
│   │       └── lib.rs
│   ├── fuels-accounts/
│   │   ├── Cargo.toml
│   │   └── src/
│   │       ├── account.rs
│   │       ├── accounts_utils.rs
│   │       ├── coin_cache.rs
│   │       ├── keystore.rs
│   │       ├── lib.rs
│   │       ├── predicate.rs
│   │       ├── provider/
│   │       │   ├── cache.rs
│   │       │   ├── retry_util.rs
│   │       │   ├── retryable_client.rs
│   │       │   ├── supported_fuel_core_version.rs
│   │       │   └── supported_versions.rs
│   │       ├── provider.rs
│   │       ├── schema/
│   │       │   └── schema.sdl
│   │       ├── signers/
│   │       │   ├── fake.rs
│   │       │   ├── kms/
│   │       │   │   ├── aws.rs
│   │       │   │   └── google.rs
│   │       │   ├── kms.rs
│   │       │   └── private_key.rs
│   │       ├── signers.rs
│   │       └── wallet.rs
│   ├── fuels-code-gen/
│   │   ├── Cargo.toml
│   │   └── src/
│   │       ├── error.rs
│   │       ├── lib.rs
│   │       ├── program_bindings/
│   │       │   ├── abigen/
│   │       │   │   ├── abigen_target.rs
│   │       │   │   ├── bindings/
│   │       │   │   │   ├── contract.rs
│   │       │   │   │   ├── function_generator.rs
│   │       │   │   │   ├── predicate.rs
│   │       │   │   │   ├── script.rs
│   │       │   │   │   └── utils.rs
│   │       │   │   ├── bindings.rs
│   │       │   │   ├── configurables.rs
│   │       │   │   └── logs.rs
│   │       │   ├── abigen.rs
│   │       │   ├── custom_types/
│   │       │   │   ├── enums.rs
│   │       │   │   ├── structs.rs
│   │       │   │   └── utils.rs
│   │       │   ├── custom_types.rs
│   │       │   ├── generated_code.rs
│   │       │   ├── resolved_type.rs
│   │       │   └── utils.rs
│   │       ├── program_bindings.rs
│   │       └── utils.rs
│   ├── fuels-core/
│   │   ├── Cargo.toml
│   │   └── src/
│   │       ├── codec/
│   │       │   ├── abi_decoder/
│   │       │   │   ├── bounded_decoder.rs
│   │       │   │   └── decode_as_debug_str.rs
│   │       │   ├── abi_decoder.rs
│   │       │   ├── abi_encoder/
│   │       │   │   └── bounded_encoder.rs
│   │       │   ├── abi_encoder.rs
│   │       │   ├── abi_formatter.rs
│   │       │   ├── function_selector.rs
│   │       │   ├── logs.rs
│   │       │   └── utils.rs
│   │       ├── codec.rs
│   │       ├── lib.rs
│   │       ├── traits/
│   │       │   ├── parameterize.rs
│   │       │   ├── signer.rs
│   │       │   └── tokenizable.rs
│   │       ├── traits.rs
│   │       ├── types/
│   │       │   ├── checksum_address.rs
│   │       │   ├── core/
│   │       │   │   ├── bits.rs
│   │       │   │   ├── bytes.rs
│   │       │   │   ├── identity.rs
│   │       │   │   ├── raw_slice.rs
│   │       │   │   ├── sized_ascii_string.rs
│   │       │   │   └── u256.rs
│   │       │   ├── core.rs
│   │       │   ├── dry_runner.rs
│   │       │   ├── errors.rs
│   │       │   ├── method_descriptor.rs
│   │       │   ├── param_types/
│   │       │   │   ├── from_type_application.rs
│   │       │   │   └── param_type.rs
│   │       │   ├── param_types.rs
│   │       │   ├── token.rs
│   │       │   ├── transaction_builders/
│   │       │   │   ├── blob.rs
│   │       │   │   └── script_tx_estimator.rs
│   │       │   ├── transaction_builders.rs
│   │       │   ├── tx_response.rs
│   │       │   ├── tx_status.rs
│   │       │   ├── wrappers/
│   │       │   │   ├── block.rs
│   │       │   │   ├── chain_info.rs
│   │       │   │   ├── coin.rs
│   │       │   │   ├── coin_type.rs
│   │       │   │   ├── coin_type_id.rs
│   │       │   │   ├── input.rs
│   │       │   │   ├── message.rs
│   │       │   │   ├── message_proof.rs
│   │       │   │   ├── node_info.rs
│   │       │   │   ├── transaction.rs
│   │       │   │   └── transaction_response.rs
│   │       │   └── wrappers.rs
│   │       ├── types.rs
│   │       ├── utils/
│   │       │   ├── constants.rs
│   │       │   └── offsets.rs
│   │       └── utils.rs
│   ├── fuels-macros/
│   │   ├── .gitignore
│   │   ├── Cargo.toml
│   │   ├── src/
│   │   │   ├── abigen/
│   │   │   │   └── parsing.rs
│   │   │   ├── abigen.rs
│   │   │   ├── derive/
│   │   │   │   ├── parameterize.rs
│   │   │   │   ├── tokenizable.rs
│   │   │   │   ├── try_from.rs
│   │   │   │   └── utils.rs
│   │   │   ├── derive.rs
│   │   │   ├── lib.rs
│   │   │   ├── parse_utils/
│   │   │   │   ├── command.rs
│   │   │   │   ├── unique_lit_strs.rs
│   │   │   │   └── unique_name_values.rs
│   │   │   ├── parse_utils.rs
│   │   │   ├── setup_program_test/
│   │   │   │   ├── code_gen.rs
│   │   │   │   ├── parsing/
│   │   │   │   │   ├── command_parser.rs
│   │   │   │   │   ├── commands/
│   │   │   │   │   │   ├── abigen.rs
│   │   │   │   │   │   ├── deploy_contract.rs
│   │   │   │   │   │   ├── initialize_wallet.rs
│   │   │   │   │   │   ├── load_script.rs
│   │   │   │   │   │   └── set_options.rs
│   │   │   │   │   ├── commands.rs
│   │   │   │   │   └── validations.rs
│   │   │   │   └── parsing.rs
│   │   │   └── setup_program_test.rs
│   │   └── tests/
│   │       ├── macro_usage.rs
│   │       └── ui/
│   │           ├── abigen/
│   │           │   ├── duplicate_attribute.rs
│   │           │   ├── duplicate_attribute.stderr
│   │           │   ├── invalid_abi_path.rs
│   │           │   ├── invalid_abi_path.stderr
│   │           │   ├── invalid_abi_value.rs
│   │           │   ├── invalid_abi_value.stderr
│   │           │   ├── invalid_name_value.rs
│   │           │   ├── invalid_name_value.stderr
│   │           │   ├── invalid_program_type.rs
│   │           │   ├── invalid_program_type.stderr
│   │           │   ├── malformed_abi.rs
│   │           │   ├── malformed_abi.stderr
│   │           │   ├── missing_abi_attribute.rs
│   │           │   ├── missing_abi_attribute.stderr
│   │           │   ├── missing_name_attr.rs
│   │           │   ├── missing_name_attr.stderr
│   │           │   ├── unrecognized_attribute.rs
│   │           │   └── unrecognized_attribute.stderr
│   │           ├── derive/
│   │           │   ├── parameterize/
│   │           │   │   ├── attribute_must_be_named_value.rs
│   │           │   │   ├── attribute_must_be_named_value.stderr
│   │           │   │   ├── only_generic_types_are_supported.rs
│   │           │   │   ├── only_generic_types_are_supported.stderr
│   │           │   │   ├── only_one_variant_element_supported.rs
│   │           │   │   ├── only_one_variant_element_supported.stderr
│   │           │   │   ├── struct_like_enum_variants_not_supported.rs
│   │           │   │   ├── struct_like_enum_variants_not_supported.stderr
│   │           │   │   ├── tuple_like_structs_not_supported.rs
│   │           │   │   └── tuple_like_structs_not_supported.stderr
│   │           │   └── tokenizable/
│   │           │       ├── attribute_must_be_named_value.stderr
│   │           │       ├── only_generic_types_are_supported.rs
│   │           │       ├── only_generic_types_are_supported.stderr
│   │           │       ├── only_one_variant_element_supported.rs
│   │           │       ├── only_one_variant_element_supported.stderr
│   │           │       ├── struct_like_enum_variants_not_supported.rs
│   │           │       ├── struct_like_enum_variants_not_supported.stderr
│   │           │       ├── tuple_like_structs_not_supported.rs
│   │           │       └── tuple_like_structs_not_supported.stderr
│   │           └── setup_program_test/
│   │               ├── abigen_command_is_missing.rs
│   │               ├── abigen_command_is_missing.stderr
│   │               ├── duplicate_wallet_command.rs
│   │               ├── duplicate_wallet_command.stderr
│   │               ├── duplicate_wallet_names.rs
│   │               ├── duplicate_wallet_names.stderr
│   │               ├── invalid_path.rs
│   │               ├── invalid_path.stderr
│   │               ├── invalid_project_path.rs
│   │               ├── invalid_project_path.stderr
│   │               ├── unknown_command.rs
│   │               ├── unknown_command.stderr
│   │               ├── unknown_contract.rs
│   │               ├── unknown_contract.stderr
│   │               ├── unknown_options_key.rs
│   │               ├── unknown_options_key.stderr
│   │               ├── unknown_options_value.rs
│   │               └── unknown_options_value.stderr
│   ├── fuels-programs/
│   │   ├── Cargo.toml
│   │   └── src/
│   │       ├── assembly/
│   │       │   ├── contract_call.rs
│   │       │   ├── cursor.rs
│   │       │   └── script_and_predicate_loader.rs
│   │       ├── assembly.rs
│   │       ├── calls/
│   │       │   ├── call_handler.rs
│   │       │   ├── contract_call.rs
│   │       │   ├── receipt_parser.rs
│   │       │   ├── script_call.rs
│   │       │   ├── traits/
│   │       │   │   ├── contract_dep_configurator.rs
│   │       │   │   ├── response_parser.rs
│   │       │   │   └── transaction_tuner.rs
│   │       │   ├── traits.rs
│   │       │   └── utils.rs
│   │       ├── calls.rs
│   │       ├── contract/
│   │       │   ├── loader.rs
│   │       │   ├── regular.rs
│   │       │   └── storage.rs
│   │       ├── contract.rs
│   │       ├── debug.rs
│   │       ├── executable.rs
│   │       ├── lib.rs
│   │       ├── responses/
│   │       │   ├── call.rs
│   │       │   └── submit.rs
│   │       ├── responses.rs
│   │       └── utils.rs
│   └── fuels-test-helpers/
│       ├── Cargo.toml
│       └── src/
│           ├── accounts.rs
│           ├── fuel_bin_service.rs
│           ├── lib.rs
│           ├── node_types.rs
│           ├── service.rs
│           ├── utils.rs
│           └── wallets_config.rs
├── rustfmt.toml
├── scripts/
│   ├── change-log/
│   │   ├── Cargo.toml
│   │   └── src/
│   │       ├── adapters/
│   │       │   └── octocrab.rs
│   │       ├── adapters.rs
│   │       ├── domain/
│   │       │   ├── changelog.rs
│   │       │   └── models.rs
│   │       ├── domain.rs
│   │       ├── lib.rs
│   │       ├── main.rs
│   │       ├── ports/
│   │       │   └── github.rs
│   │       └── ports.rs
│   ├── check-docs/
│   │   ├── Cargo.toml
│   │   ├── src/
│   │   │   ├── lib.rs
│   │   │   └── main.rs
│   │   └── tests/
│   │       ├── harness.rs
│   │       └── test_data/
│   │           ├── docs/
│   │           │   └── src/
│   │           │       ├── SUMMARY.md
│   │           │       ├── test-not-there.md
│   │           │       └── test.md
│   │           ├── test_anchor_data.rs
│   │           └── test_include_data.md
│   ├── fuel-core-version/
│   │   ├── Cargo.toml
│   │   └── src/
│   │       └── main.rs
│   └── versions-replacer/
│       ├── Cargo.toml
│       └── src/
│           ├── lib.rs
│           ├── main.rs
│           ├── metadata.rs
│           └── replace.rs
└── wasm-tests/
    ├── .cargo/
    │   └── config.toml
    ├── Cargo.toml
    └── src/
        └── lib.rs

================================================
FILE CONTENTS
================================================

================================================
FILE: .editorconfig
================================================
[*.toml]
indent_style = space
indent_size = 2


================================================
FILE: .github/CODEOWNERS
================================================
* @FuelLabs/client 


================================================
FILE: .github/PULL_REQUEST_TEMPLATE.md
================================================
<!--
List the issues this PR closes (if any) in a bullet list format, e.g.:
- Closes #ABCD
- Closes #EFGH
-->

# Release notes

<!--
Use this only if this PR requires a mention in the Release
Notes Summary. Valuable features and critical fixes are good
examples. For everything else, please delete the whole section.
-->

In this release, we:

- Did this and that <!-- edit this text only -->

# Summary

<!--
Please write a summary of your changes and why you made them.
Not all PRs will be complex or substantial enough to require this
section, so you can remove it if you think it's unnecessary.
-->

# Breaking Changes

<!--
If the PR has breaking changes, please detail them in this section
and remove this comment.

Remove this section if there are no breaking changes.
-->

# Checklist

- [ ] All **changes** are **covered** by **tests** (or not applicable)
- [ ] All **changes** are **documented** (or not applicable)
- [ ] I **reviewed** the **entire PR** myself (preferably, on GH UI)
- [ ] I **described** all **Breaking Changes** (or there's none)


================================================
FILE: .github/workflows/ci.yml
================================================
name: CI

on:
  push:
    branches:
      - master
  pull_request:
  release:
    types: [ published ]

concurrency:
  group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
  cancel-in-progress: true

env:
  CARGO_TERM_COLOR: always
  DASEL_VERSION: https://github.com/TomWright/dasel/releases/download/v2.3.6/dasel_linux_amd64
  RUSTFLAGS: "-D warnings"
  FUEL_CORE_VERSION: 0.47.1
  FUEL_CORE_PATCH_BRANCH: ""
  FUEL_CORE_PATCH_REVISION: ""
  RUST_VERSION: 1.93.0
  FORC_VERSION: 0.69.1
  FORC_PATCH_BRANCH: ""
  FORC_PATCH_REVISION: ""
  NEXTEST_HIDE_PROGRESS_BAR: "true"
  NEXTEST_STATUS_LEVEL: "fail"

jobs:
  setup-test-projects:
    runs-on: buildjet-4vcpu-ubuntu-2204
    steps:
      - uses: actions/checkout@v3
      - name: Install toolchain
        uses: dtolnay/rust-toolchain@master
        with:
          toolchain: ${{ env.RUST_VERSION }}
        # selecting a toolchain either by action or manual `rustup` calls should happen
        # before the cache plugin, as it uses the current rustc version as its cache key
      - uses: buildjet/cache@v3
        with:
          prefix-key: "v1-rust"

      - name: Set git config
        run: |
          git config --global core.bigfilethreshold 100m

      - name: Install forc and forc-fmt
        run: |
          if [[ -n $FORC_PATCH_BRANCH ]]; then
            cargo install --locked forc forc-fmt --git https://github.com/FuelLabs/sway --branch $FORC_PATCH_BRANCH
          elif [[ -n $FORC_PATCH_REVISION ]]; then
            cargo install --locked forc forc-fmt --git https://github.com/FuelLabs/sway --rev $FORC_PATCH_REVISION
          else
            curl -sSLf https://github.com/FuelLabs/sway/releases/download/v${{ env.FORC_VERSION }}/forc-binaries-linux_amd64.tar.gz -L -o forc.tar.gz
            tar -xvf forc.tar.gz
            chmod +x forc-binaries/forc
            mv forc-binaries/forc /usr/local/bin/forc
            mv forc-binaries/forc-fmt /usr/local/bin/forc-fmt
          fi

      - name: Check format of Sway test projects
        run: forc fmt --check --path e2e

      - name: Build Sway test projects
        run: forc build --release --terse --error-on-warnings --path e2e

      - uses: actions/upload-artifact@v4
        with:
          retention-days: 2
          name: sway-examples
          path: |
            e2e/sway/**/out/*

  get-workspace-members:
    runs-on: buildjet-4vcpu-ubuntu-2204
    outputs:
      members: ${{ steps.set-members.outputs.members }}
    steps:
      - name: Checkout repository
        uses: actions/checkout@v3
      - id: set-members
        run: |
          # install dasel
          curl -sSLf "$DASEL_VERSION" -L -o dasel && chmod +x dasel
          mv ./dasel /usr/local/bin/dasel
          members=$(cat Cargo.toml | dasel -r toml -w json 'workspace.members' | jq -r ".[]" | xargs -I '{}' dasel -f {}/Cargo.toml 'package.name' | jq -R '[.]' | jq -s -c 'add')
          echo "members=$members" >> $GITHUB_OUTPUT

  verify-rust-version:
    runs-on: buildjet-4vcpu-ubuntu-2204
    steps:
      - uses: actions/checkout@v3
      # Ensure CI is using the same minimum toolchain specified in fuels Cargo.toml
      - run: |
          curl -sSLf "$DASEL_VERSION" -L -o dasel && chmod +x dasel
          mv ./dasel /usr/local/bin/dasel
          MIN_VERSION=$(cat Cargo.toml | dasel -r toml 'workspace.package.rust-version' -w plain)
          RUST_VERSION="${{ env.RUST_VERSION }}"
          echo "Comparing minimum supported toolchain ($MIN_VERSION) with ci toolchain (RUST_VERSION)"
          test "$MIN_VERSION" == "$RUST_VERSION"

  # Fetch Fuel Core and upload as artifact, useful when we build the core from a
  # revision so that we can repeat flaky tests without rebuilding the core.
  fetch-fuel-core:
    runs-on: buildjet-4vcpu-ubuntu-2204
    steps:
      - uses: dtolnay/rust-toolchain@master
        with:
          toolchain: ${{ env.RUST_VERSION }}
          targets: wasm32-unknown-unknown

        # selecting a toolchain either by action or manual `rustup` calls should happen
        # before the cache plugin, as it uses the current rustc version as its cache key
      - uses: buildjet/cache@v3
        continue-on-error: true
        with:
          key: "fuel-core-build"
      - name: Install Fuel Core
        run: |
          if [[ -n $FUEL_CORE_PATCH_BRANCH ]]; then
            cargo install --locked fuel-core-bin --git https://github.com/FuelLabs/fuel-core --branch "$FUEL_CORE_PATCH_BRANCH" --root fuel-core-install
          elif [[ -n $FUEL_CORE_PATCH_REVISION ]]; then
            cargo install --locked fuel-core-bin --git https://github.com/FuelLabs/fuel-core --rev "$FUEL_CORE_PATCH_REVISION" --root fuel-core-install

          else
            curl -sSLf https://github.com/FuelLabs/fuel-core/releases/download/v${{ env.FUEL_CORE_VERSION }}/fuel-core-${{ env.FUEL_CORE_VERSION }}-x86_64-unknown-linux-gnu.tar.gz -L -o fuel-core.tar.gz
            tar -xvf fuel-core.tar.gz
            chmod +x fuel-core-${{ env.FUEL_CORE_VERSION }}-x86_64-unknown-linux-gnu/fuel-core
            mkdir -p fuel-core-install/bin
            mv fuel-core-${{ env.FUEL_CORE_VERSION }}-x86_64-unknown-linux-gnu/fuel-core fuel-core-install/bin/fuel-core
          fi

      - uses: actions/upload-artifact@v4
        with:
          name: fuel-core
          path: fuel-core-install/bin/fuel-core

  # Ensure workspace is publishable
  publish-crates-check:
    runs-on: buildjet-4vcpu-ubuntu-2204
    steps:
      - name: Checkout repository
        uses: actions/checkout@v3

      - uses: dtolnay/rust-toolchain@master
        with:
          toolchain: ${{ env.RUST_VERSION }}

      - name: Publish crate check
        uses: FuelLabs/publish-crates@v1
        with:
          dry-run: true
          check-repo: false
          ignore-unpublished-changes: true

  cargo-verifications:
    needs:
      - setup-test-projects
      - verify-rust-version
      - get-workspace-members
      - publish-crates-check
      - fetch-fuel-core
    runs-on: buildjet-4vcpu-ubuntu-2204
    strategy:
      matrix:
        cargo_command: [ check ]
        args: [ --all-features ]
        package: ${{fromJSON(needs.get-workspace-members.outputs.members)}}
        include:
          - cargo_command: fmt
            args: --all --verbose -- --check
          - cargo_command: clippy
            args: --all-targets
            download_sway_artifacts: sway-examples
          - cargo_command: nextest
            args: run --all-targets --features "default fuel-core-lib coin-cache" --workspace --cargo-quiet --no-fail-fast
            download_sway_artifacts: sway-examples
            install_fuel_core: true
          - cargo_command: nextest
            args: run --all-targets --workspace --cargo-quiet --no-fail-fast
            download_sway_artifacts: sway-examples
            install_fuel_core: true
          - cargo_command: test
            args: --doc --workspace
          - cargo_command: machete
            args: --skip-target-dir
          - command: test_wasm
            args:
          - command: check_fuel_core_version
            args:
          - command: check_doc_anchors_valid
            args:
          - command: check_doc_unresolved_links
            args:
          - command: check_typos
            args:
    steps:
      - name: Checkout repository
        uses: actions/checkout@v3
        with:
          ref: ${{ github.event.pull_request.head.sha }}
      - uses: dtolnay/rust-toolchain@master
        with:
          toolchain: ${{ env.RUST_VERSION }}
          components: clippy,rustfmt
          targets: wasm32-unknown-unknown

        # selecting a toolchain either by action or manual `rustup` calls should happen
        # before the cache plugin, as it uses the current rustc version as its cache key
      - uses: buildjet/cache@v3
        continue-on-error: true
        with:
          path: |
            ~/.cargo/registry
            ~/.cargo/git
            target
          key: "${{ matrix.cargo_command }} ${{ matrix.args }} ${{ matrix.package }}"

      - name: Download Fuel Core
        if: ${{ matrix.install_fuel_core }}
        uses: actions/download-artifact@v4
        with:
          name: fuel-core
      - name: Install Fuel Core
        if: ${{ matrix.install_fuel_core }}
        run: |
          chmod +x fuel-core
          mv fuel-core /usr/local/bin/fuel-core

      - name: Download sway example artifacts
        if: ${{ matrix.download_sway_artifacts }}
        uses: actions/download-artifact@v4
        with:
          name: ${{ matrix.download_sway_artifacts }}
          # Needed because `upload-artifact` will remove 'e2e/sway' because it is shared between all matched files
          path: e2e/sway/

      - name: Install nextest
        if: ${{ matrix.cargo_command == 'nextest' }}
        uses: taiki-e/install-action@nextest

      - name: Install cargo-machete
        if: ${{ matrix.cargo_command == 'machete' }}
        uses: taiki-e/install-action@cargo-machete

      - name: Cargo (workspace-level)
        if: ${{ matrix.cargo_command && !matrix.package }}
        run: cargo ${{ matrix.cargo_command }} ${{ matrix.args }}

      - name: Cargo (package-level)
        if: ${{ matrix.cargo_command && matrix.package }}
        run: cargo ${{ matrix.cargo_command }} -p ${{ matrix.package }} ${{ matrix.args }}

      - name: Install NodeJS for WASM testing
        if: ${{ matrix.command == 'test_wasm' }}
        uses: actions/setup-node@v3
        with:
          node-version: 22.8.0

      # Until we fix the "missing env error"
      # - name: Test WASM
      #   if: ${{ matrix.command == 'test_wasm' }}
      #   run: |
      #     curl https://rustwasm.github.io/wasm-pack/installer/init.sh -sSf | sh
      #     cd wasm-tests
      #     wasm-pack test --node

      - name: Check that fuel_core version.rs file is up to date
        if: ${{ matrix.command == 'check_fuel_core_version' }}
        run: cargo run --bin fuel-core-version -- --manifest-path ./Cargo.toml verify

      - name: Check for invalid documentation anchors
        if: ${{ matrix.command == 'check_doc_anchors_valid' }}
        run: cargo run --bin check-docs

      - name: Check for unresolved documentation links
        if: ${{ matrix.command == 'check_doc_unresolved_links' }}
        run: |
          ! cargo doc --document-private-items |& grep -A 6  "warning: unresolved link to"

      - name: Check for typos
        if: ${{ matrix.command == 'check_typos' }}
        uses: crate-ci/typos@v1.29.5

  publish:
    needs:
      - cargo-verifications
      - publish-crates-check
    # Only do this job if publishing a release
    if: github.event_name == 'release' && github.event.action == 'published'
    runs-on: buildjet-4vcpu-ubuntu-2204

    steps:
      - name: Checkout repository
        uses: actions/checkout@v3

      - uses: dtolnay/rust-toolchain@master
        with:
          toolchain: ${{ env.RUST_VERSION }}

      - name: Verify tag version
        run: |
          curl -sSLf "$DASEL_VERSION" -L -o dasel && chmod +x dasel
          mv ./dasel /usr/local/bin/dasel
          ./.github/workflows/scripts/verify_tag.sh ${{ github.ref_name }} Cargo.toml
      - name: Publish crate
        uses: FuelLabs/publish-crates@v1
        with:
          publish-delay: 30000
          registry-token: ${{ secrets.CARGO_REGISTRY_TOKEN }}


================================================
FILE: .github/workflows/docs.yml
================================================
name: Docs

on:
  push:
    branches:
      - master
  pull_request:
  release:
    types: [published]

jobs:
  test:
    uses: FuelLabs/github-actions/.github/workflows/mdbook-docs.yml@master
    with:
      docs-src-path: "docs/src"
      pre-command: 'cargo run --package versions-replacer -- ./docs --manifest-path ./Cargo.toml --filename-regex "\.md$"'
      spellcheck-config-path: 'docs/.spellcheck.yml'


================================================
FILE: .github/workflows/gh-pages.yml
================================================
name: github pages

on:
  push:
    branches:
      - master
    tags:
      - v*

jobs:
  deploy:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3

      - name: Setup mdBook
        uses: peaceiris/actions-mdbook@v1
        with:
          mdbook-version: "0.4.15"

      - run: mdbook build docs

      - name: Deploy master
        uses: peaceiris/actions-gh-pages@v3
        with:
          github_token: ${{ secrets.GITHUB_TOKEN }}
          publish_dir: ./docs/book
          destination_dir: master
          cname: rust.fuel.network
        if: github.ref == 'refs/heads/master'

      - name: Get tag
        id: branch_name
        run: |
          echo ::set-output name=BRANCH_NAME::${GITHUB_REF#refs/tags/}
        if: startsWith(github.ref, 'refs/tags')

      - name: Deploy tag
        uses: peaceiris/actions-gh-pages@v3
        with:
          github_token: ${{ secrets.GITHUB_TOKEN }}
          publish_dir: ./docs/book
          destination_dir: ${{ steps.branch_name.outputs.BRANCH_NAME }}
          cname: rust.fuel.network
        if: startsWith(github.ref, 'refs/tags')

      - name: Create latest HTML redirect file
        if: startsWith(github.ref, 'refs/tags')
        run: |
          mkdir ./latest
          cat > ./latest/index.html <<EOF
          <!DOCTYPE html>
          <meta charset="utf-8">
          <meta http-equiv="refresh" content="0; URL=../${{ steps.branch_name.outputs.BRANCH_NAME }}/">
          <link rel="canonical" href="../${{ steps.branch_name.outputs.BRANCH_NAME }}/">
          EOF

      - name: Set latest to point to tag
        uses: peaceiris/actions-gh-pages@v3
        with:
          github_token: ${{ secrets.GITHUB_TOKEN }}
          publish_dir: ./latest/
          destination_dir: ./latest/
          cname: rust.fuel.network
        if: startsWith(github.ref, 'refs/tags')


================================================
FILE: .github/workflows/repo-plan.toml
================================================
[current-repo]
name = "fuels-rs"
owner = "FuelLabs"

[repo.fuels-rs.details]
name = "fuels-rs"
owner = "FuelLabs"

[repo.fuel-core.details]
name = "fuel-core"
owner = "FuelLabs"

[repo.fuels-rs]
dependencies = ["fuel-core"]


================================================
FILE: .github/workflows/scripts/verify_tag.sh
================================================
#!/usr/bin/env bash
set -e

err() {
    echo -e "\e[31m\e[1merror:\e[0m $@" 1>&2;
}

status() {
    WIDTH=12
    printf "\e[32m\e[1m%${WIDTH}s\e[0m %s\n" "$1" "$2"
}

REF=$1
MANIFEST=$2

if [ -z "$REF" ]; then
    err "Expected ref to be set"
    exit 1
fi

if [ -z "$MANIFEST" ]; then
    err "Expected manifest to be set"
    exit 1
fi

# strip preceding 'v' if it exists on tag
REF=${REF/#v}
TOML_VERSION=$(cat $MANIFEST | dasel -r toml -w plain 'workspace.package.version')

if [ "$TOML_VERSION" != "$REF" ]; then
    err "Crate version $TOML_VERSION, doesn't match tag version $REF"
    exit 1
else
  status "Crate version matches tag $TOML_VERSION"
fi


================================================
FILE: .gitignore
================================================
# Generated by Cargo
# will have compiled files and executables
target/

# Remove Cargo.lock from gitignore if creating an executable, leave it for libraries
# More information here https://doc.rust-lang.org/cargo/guide/cargo-toml-vs-cargo-lock.html
Cargo.lock

# These are backup files generated by rustfmt
**/*.rs.bk

# Don't add the generated MDBook artifacts
docs/book/

# Don't add Forc lock files
**/Forc.lock

# Don't add out/ files from test Sway projects.
e2e/sway/**/out/
e2e/sway/**/.gitignore

.env

output_changelog.md


================================================
FILE: .markdownlint.yaml
================================================
"default": true # Default state for all rules
"MD013": false # Disable rule for line length
"MD033": false # Disable rule banning inline HTML

================================================
FILE: .markdownlintignore
================================================
README.md
scripts/check-docs

================================================
FILE: Cargo.toml
================================================
[workspace]
# Use the new resolver to prevent dev-deps and build-deps from enabling debugging or test features in production.
#
# > If you are using a virtual workspace, you will still need to explicitly set the resolver field in the [workspace]
#   definition if you want to opt-in to the new resolver.
# https://doc.rust-lang.org/edition-guide/rust-2021/default-cargo-resolver.html#details
resolver = "2"
members = [
  "e2e",
  "examples/codec",
  "examples/contracts",
  "examples/cookbook",
  "examples/debugging",
  "examples/macros",
  "examples/predicates",
  "examples/providers",
  "examples/rust_bindings",
  "examples/types",
  "examples/wallets",
  "packages/fuels",
  "packages/fuels-accounts",
  "packages/fuels-code-gen",
  "packages/fuels-core",
  "packages/fuels-macros",
  "packages/fuels-programs",
  "packages/fuels-test-helpers",
  "scripts/change-log",
  "scripts/check-docs",
  "scripts/fuel-core-version",
  "scripts/versions-replacer",
  "wasm-tests",
]

[workspace.package]
authors = ["Fuel Labs <contact@fuel.sh>"]
edition = "2024"
homepage = "https://fuel.network/"
readme = "README.md"
license = "Apache-2.0"
repository = "https://github.com/FuelLabs/fuels-rs"
rust-version = "1.93.0"
version = "0.76.0"

[workspace.dependencies]
Inflector = "0.11.4"
anyhow = { version = "1.0", default-features = false }
dialoguer = { version = "0.11", default-features = false }
async-trait = { version = "0.1.74", default-features = false }
bytes = { version = "1.5.0", default-features = false }
chrono = "0.4.31"
cynic = { version = ">=3.1.0, <3.13.0", default-features = false }
test-case = { version = "3.3", default-features = false }
eth-keystore = "0.5.0"
flate2 = { version = "1.0", default-features = false }
fuel-abi-types = "0.15.3"
futures = "0.3.29"
hex = { version = "0.4.3", default-features = false }
itertools = "0.12.0"
portpicker = "0.1.1"
pretty_assertions = { version = "1.4", default-features = false }
proc-macro2 = "1.0.70"
quote = "1.0.33"
rand = { version = "0.8.5", default-features = false, features = [
  "std_rng",
  "getrandom",
] }
regex = "1.10.2"
reqwest = { version = "0.12", default-features = false }
semver = "1.0.20"
serde = { version = "1.0.193", default-features = false }
serde_json = "1.0.108"
serde_with = { version = "3.4.0", default-features = false }
auto_impl = { version = "1.0", default-features = false }
sha2 = { version = "0.10.8", default-features = false }
syn = "2.0.39"
tai64 = { version = "4.0.0", default-features = false }
tar = { version = "0.4", default-features = false }
tempfile = { version = "3.8.1", default-features = false }
thiserror = { version = "1.0.50", default-features = false }
tokio = { version = "1.34.0", default-features = false }
tracing = "0.1.40"
trybuild = "1.0.85"
uint = { version = "0.9.5", default-features = false }
which = { version = "6.0.0", default-features = false }
zeroize = "1.7.0"
octocrab = { version = "0.43", default-features = false }
dotenv = { version = "0.15", default-features = false }
toml = { version = "0.8", default-features = false }
mockall = { version = "0.13", default-features = false }
google-cloud-kms = { version = "0.6", default-features = false }
aws-config = { version = "1", default-features = false }
aws-sdk-kms = { version = "1", default-features = false }
testcontainers = { version = "0.23", default-features = false }
k256 = { version = "0.13", default-features = false }

# Dependencies from the `fuel-core` repository:
fuel-core = { version = "0.47.1", default-features = false, features = [
  "wasm-executor",
] }
fuel-core-chain-config = { version = "0.47.1", default-features = false }
fuel-core-client = { version = "0.47.1", default-features = false }
fuel-core-poa = { version = "0.47.1", default-features = false }
fuel-core-services = { version = "0.47.1", default-features = false }
fuel-core-types = { version = "0.47.1", default-features = false }

# Dependencies from the `fuel-vm` repository:
fuel-asm = { version = "0.65.0" }
fuel-crypto = { version = "0.65.0" }
fuel-merkle = { version = "0.65.0" }
fuel-storage = { version = "0.65.0" }
fuel-tx = { version = "0.65.0" }
fuel-types = { version = "0.65.0" }
fuel-vm = { version = "0.65.0" }

# Workspace projects
fuels = { version = "0.76.0", path = "./packages/fuels", default-features = false }
fuels-accounts = { version = "0.76.0", path = "./packages/fuels-accounts", default-features = false }
fuels-code-gen = { version = "0.76.0", path = "./packages/fuels-code-gen", default-features = false }
fuels-core = { version = "0.76.0", path = "./packages/fuels-core", default-features = false }
fuels-macros = { version = "0.76.0", path = "./packages/fuels-macros", default-features = false }
fuels-programs = { version = "0.76.0", path = "./packages/fuels-programs", default-features = false }
fuels-test-helpers = { version = "0.76.0", path = "./packages/fuels-test-helpers", default-features = false }
versions-replacer = { version = "0.76.0", path = "./scripts/versions-replacer", default-features = false }


================================================
FILE: LICENSE
================================================
                                 Apache License
                           Version 2.0, January 2004
                        http://www.apache.org/licenses/

   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION

   1. Definitions.

      "License" shall mean the terms and conditions for use, reproduction,
      and distribution as defined by Sections 1 through 9 of this document.

      "Licensor" shall mean the copyright owner or entity authorized by
      the copyright owner that is granting the License.

      "Legal Entity" shall mean the union of the acting entity and all
      other entities that control, are controlled by, or are under common
      control with that entity. For the purposes of this definition,
      "control" means (i) the power, direct or indirect, to cause the
      direction or management of such entity, whether by contract or
      otherwise, or (ii) ownership of fifty percent (50%) or more of the
      outstanding shares, or (iii) beneficial ownership of such entity.

      "You" (or "Your") shall mean an individual or Legal Entity
      exercising permissions granted by this License.

      "Source" form shall mean the preferred form for making modifications,
      including but not limited to software source code, documentation
      source, and configuration files.

      "Object" form shall mean any form resulting from mechanical
      transformation or translation of a Source form, including but
      not limited to compiled object code, generated documentation,
      and conversions to other media types.

      "Work" shall mean the work of authorship, whether in Source or
      Object form, made available under the License, as indicated by a
      copyright notice that is included in or attached to the work
      (an example is provided in the Appendix below).

      "Derivative Works" shall mean any work, whether in Source or Object
      form, that is based on (or derived from) the Work and for which the
      editorial revisions, annotations, elaborations, or other modifications
      represent, as a whole, an original work of authorship. For the purposes
      of this License, Derivative Works shall not include works that remain
      separable from, or merely link (or bind by name) to the interfaces of,
      the Work and Derivative Works thereof.

      "Contribution" shall mean any work of authorship, including
      the original version of the Work and any modifications or additions
      to that Work or Derivative Works thereof, that is intentionally
      submitted to Licensor for inclusion in the Work by the copyright owner
      or by an individual or Legal Entity authorized to submit on behalf of
      the copyright owner. For the purposes of this definition, "submitted"
      means any form of electronic, verbal, or written communication sent
      to the Licensor or its representatives, including but not limited to
      communication on electronic mailing lists, source code control systems,
      and issue tracking systems that are managed by, or on behalf of, the
      Licensor for the purpose of discussing and improving the Work, but
      excluding communication that is conspicuously marked or otherwise
      designated in writing by the copyright owner as "Not a Contribution."

      "Contributor" shall mean Licensor and any individual or Legal Entity
      on behalf of whom a Contribution has been received by Licensor and
      subsequently incorporated within the Work.

   2. Grant of Copyright License. Subject to the terms and conditions of
      this License, each Contributor hereby grants to You a perpetual,
      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
      copyright license to reproduce, prepare Derivative Works of,
      publicly display, publicly perform, sublicense, and distribute the
      Work and such Derivative Works in Source or Object form.

   3. Grant of Patent License. Subject to the terms and conditions of
      this License, each Contributor hereby grants to You a perpetual,
      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
      (except as stated in this section) patent license to make, have made,
      use, offer to sell, sell, import, and otherwise transfer the Work,
      where such license applies only to those patent claims licensable
      by such Contributor that are necessarily infringed by their
      Contribution(s) alone or by combination of their Contribution(s)
      with the Work to which such Contribution(s) was submitted. If You
      institute patent litigation against any entity (including a
      cross-claim or counterclaim in a lawsuit) alleging that the Work
      or a Contribution incorporated within the Work constitutes direct
      or contributory patent infringement, then any patent licenses
      granted to You under this License for that Work shall terminate
      as of the date such litigation is filed.

   4. Redistribution. You may reproduce and distribute copies of the
      Work or Derivative Works thereof in any medium, with or without
      modifications, and in Source or Object form, provided that You
      meet the following conditions:

      (a) You must give any other recipients of the Work or
          Derivative Works a copy of this License; and

      (b) You must cause any modified files to carry prominent notices
          stating that You changed the files; and

      (c) You must retain, in the Source form of any Derivative Works
          that You distribute, all copyright, patent, trademark, and
          attribution notices from the Source form of the Work,
          excluding those notices that do not pertain to any part of
          the Derivative Works; and

      (d) If the Work includes a "NOTICE" text file as part of its
          distribution, then any Derivative Works that You distribute must
          include a readable copy of the attribution notices contained
          within such NOTICE file, excluding those notices that do not
          pertain to any part of the Derivative Works, in at least one
          of the following places: within a NOTICE text file distributed
          as part of the Derivative Works; within the Source form or
          documentation, if provided along with the Derivative Works; or,
          within a display generated by the Derivative Works, if and
          wherever such third-party notices normally appear. The contents
          of the NOTICE file are for informational purposes only and
          do not modify the License. You may add Your own attribution
          notices within Derivative Works that You distribute, alongside
          or as an addendum to the NOTICE text from the Work, provided
          that such additional attribution notices cannot be construed
          as modifying the License.

      You may add Your own copyright statement to Your modifications and
      may provide additional or different license terms and conditions
      for use, reproduction, or distribution of Your modifications, or
      for any such Derivative Works as a whole, provided Your use,
      reproduction, and distribution of the Work otherwise complies with
      the conditions stated in this License.

   5. Submission of Contributions. Unless You explicitly state otherwise,
      any Contribution intentionally submitted for inclusion in the Work
      by You to the Licensor shall be under the terms and conditions of
      this License, without any additional terms or conditions.
      Notwithstanding the above, nothing herein shall supersede or modify
      the terms of any separate license agreement you may have executed
      with Licensor regarding such Contributions.

   6. Trademarks. This License does not grant permission to use the trade
      names, trademarks, service marks, or product names of the Licensor,
      except as required for reasonable and customary use in describing the
      origin of the Work and reproducing the content of the NOTICE file.

   7. Disclaimer of Warranty. Unless required by applicable law or
      agreed to in writing, Licensor provides the Work (and each
      Contributor provides its Contributions) on an "AS IS" BASIS,
      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
      implied, including, without limitation, any warranties or conditions
      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
      PARTICULAR PURPOSE. You are solely responsible for determining the
      appropriateness of using or redistributing the Work and assume any
      risks associated with Your exercise of permissions under this License.

   8. Limitation of Liability. In no event and under no legal theory,
      whether in tort (including negligence), contract, or otherwise,
      unless required by applicable law (such as deliberate and grossly
      negligent acts) or agreed to in writing, shall any Contributor be
      liable to You for damages, including any direct, indirect, special,
      incidental, or consequential damages of any character arising as a
      result of this License or out of the use or inability to use the
      Work (including but not limited to damages for loss of goodwill,
      work stoppage, computer failure or malfunction, or any and all
      other commercial damages or losses), even if such Contributor
      has been advised of the possibility of such damages.

   9. Accepting Warranty or Additional Liability. While redistributing
      the Work or Derivative Works thereof, You may choose to offer,
      and charge a fee for, acceptance of support, warranty, indemnity,
      or other liability obligations and/or rights consistent with this
      License. However, in accepting such obligations, You may act only
      on Your own behalf and on Your sole responsibility, not on behalf
      of any other Contributor, and only if You agree to indemnify,
      defend, and hold each Contributor harmless for any liability
      incurred by, or claims asserted against, such Contributor by reason
      of your accepting any such warranty or additional liability.

   END OF TERMS AND CONDITIONS

   APPENDIX: How to apply the Apache License to your work.

      To apply the Apache License to your work, attach the following
      boilerplate notice, with the fields enclosed by brackets "[]"
      replaced with your own identifying information. (Don't include
      the brackets!)  The text should be enclosed in the appropriate
      comment syntax for the file format. We also recommend that a
      file or class name and description of purpose be included on the
      same "printed page" as the copyright notice for easier
      identification within third-party archives.

   Copyright [yyyy] [name of copyright owner]

   Licensed under the Apache License, Version 2.0 (the "License");
   you may not use this file except in compliance with the License.
   You may obtain a copy of the License at

       http://www.apache.org/licenses/LICENSE-2.0

   Unless required by applicable law or agreed to in writing, software
   distributed under the License is distributed on an "AS IS" BASIS,
   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   See the License for the specific language governing permissions and
   limitations under the License.


================================================
FILE: README.md
================================================
# fuels-rs

[![build](https://github.com/FuelLabs/fuels-rs/actions/workflows/ci.yml/badge.svg)](https://github.com/FuelLabs/fuels-rs/actions/workflows/ci.yml)
[![crates.io](https://img.shields.io/crates/v/fuels?label=latest)](https://crates.io/crates/fuels)
[![docs](https://docs.rs/fuels/badge.svg)](https://docs.rs/fuels)
[![discord](https://img.shields.io/badge/chat%20on-discord-orange?&logo=discord&logoColor=ffffff&color=7389D8&labelColor=6A7EC2)](https://discord.gg/xfpK4Pe)

Rust SDK for Fuel. It can be used for a variety of things, including but not limited to:

- Compiling, deploying, and testing [Sway](https://github.com/FuelLabs/sway) contracts;
- Launching a local Fuel network;
- Crafting and signing transactions with hand-crafted scripts or contract calls;
- Generating type-safe Rust bindings of contract methods;
- And more, `fuels-rs` is still in active development.

## Documentation

See [the `fuels-rs` book](https://fuellabs.github.io/fuels-rs/latest/)

## Features

- [x] Launch Fuel nodes
- [x] Deploy contracts
- [x] Interact with deployed contracts
- [x] Type-safe Sway contracts bindings code generation
- [x] Run Sway scripts
- [x] CLI for common operations
- [x] Local test wallets
- [ ] Wallet integration
- [ ] Events querying/monitoring

## FAQ

### What dependencies do I need?

- [The latest `stable` Rust toolchain](https://docs.fuel.network/guides/installation/#installing-rust);
- [`forc` and `fuel-core` binaries](https://docs.fuel.network/guides/installation/#installing-the-fuel-toolchain-using-fuelup).

### How can I run the SDK tests?

First, build the test projects using `forc`:

```shell
forc build --release --path e2e
```

Then you can run the SDK tests with:

```shell
cargo test
```

You can also run specific tests. The following example will run all integration tests in `types.rs` whose names contain `in_vector` and show their outputs:

```shell
cargo test --test types in_vector -- --show-output
```

### How to run WASM tests?

You need to have wasm32 as a target, if you don't already:

```shell
 rustup target add wasm32-unknown-unknown
```

You also need `wasm-pack`, if you don't already:

```shell
cargo install wasm-pack
```

Navigate to `packages/wasm-tests` and run `wasm-pack test`.

### What to do if my tests are failing on `master`

Before doing anything else, try all these commands:

```shell
cargo clean
rm Cargo.lock
forc build --release --path e2e
cargo test
```

### Why is the prefix `fuels` and not `fuel`?

In order to make the SDK for Fuel feel familiar with those coming from the [ethers.js](https://github.com/ethers-io/ethers.js) ecosystem, this project opted for an `s` at the end. The `fuels-*` family of SDKs is inspired by The Ethers Project.

### How can I run the docs locally?

Install `mdbook` by running:

```shell
cargo install mdbook
```

Next, navigate to the `docs` folder and run the command below to start a local server and open a new tab in your browser.

```shell
mdbook serve --open
```

You can build the book by running:

```shell
mdbook build
```


================================================
FILE: SECURITY.md
================================================
# Fuel Security Policy

Thank you for helping make the Fuel ecosystem safe for everyone. The Fuel team take security bugs very seriously. We appreciate your efforts to responsibly disclose your findings, and will make every effort to acknowledge your contributions.

## Reporting Security Issues

If you believe you have found a security vulnerability in any Fuel-owned repository, please report it to us through coordinated disclosure.

**Please do not report security vulnerabilities through public GitHub issues, discussions, or pull requests.**

Instead, please use the GitHub Security Advisory ["Report a Vulnerability"](https://github.com/FuelLabs/fuels-rs/security/advisories/new) tab.

The Fuel team will send a response indicating the next steps in handling your report. After the initial reply to your report, the team will keep you informed of the progress towards a fix and full announcement, and may ask for additional information or guidance.

Please include as much of the information listed below as you can to help us better understand and resolve the issue:

* The type of issue (e.g., buffer overflow, SQL injection, or cross-site scripting)
* Full paths of source file(s) related to the manifestation of the issue
* The location of the affected source code (tag/branch/commit or direct URL)
* Any special configuration required to reproduce the issue
* Step-by-step instructions to reproduce the issue
* Proof-of-concept or exploit code (if possible)
* Impact of the issue, including how an attacker might exploit the issue

This information will help us triage your report more quickly.

Report security bugs in third-party modules to the person or team maintaining the module.

## Non-Security Issues

If the issue is not security-related, please report it publicly by opening a [GitHub Issue](https://github.com/FuelLabs/fuels-rs/issues/new).


================================================
FILE: _typos.toml
================================================
[files]
extend-exclude = ["packages/fuels-accounts/src/schema/schema.sdl"]

================================================
FILE: ci_checks.sh
================================================
#!/usr/bin/env bash

# Requires installed:
# The latest version of the `forc`,`forc-fmt` and `fuel-core`.
# `cargo install fuel-core-bin --git https://github.com/FuelLabs/fuel-core --tag v0.18.1 --locked`
# `cargo install forc --git https://github.com/FuelLabs/sway --tag v0.38.0 --locked`
# `cargo install forc-fmt --git https://github.com/FuelLabs/sway --tag v0.38.0 --locked`
# Note, if you need a custom branch, you can replace `--tag {RELEASE}` with the `--branch {BRANCH_NAME}`.

cargo fmt --all -- --check &&
	forc fmt --check --path e2e &&
	forc build --release --terse --path e2e &&
	cargo clippy --all-targets &&
	forc build --release --terse --path e2e &&
	cargo clippy --all-targets --all-features &&
	cargo test --all-targets --all-features &&
	cargo test --all-targets --all-features --workspace &&
	cargo test --all-targets --workspace &&
	cargo run --bin check-docs &&
	$(cargo doc |& grep -A 6 "warning: unresolved link to")


================================================
FILE: docs/.spellcheck.yml
================================================
matrix:
    - name: SPCheck
      aspell:
        lang: en
      dictionary:
        encoding: utf-8
        wordlists:
          - docs/spell-check-custom-words.txt
      pipeline:
        - pyspelling.filters.context:
            context_visible_first: true
            escapes: \\[\\`~]
            delimiters:
            # Ignore all code blocks
            - open: '(?s)^(?P<open> *`{3,}\s*(\w+\s*,?\s*)+.*?)$'
              close: '^( *`{3,})$'
        - pyspelling.filters.markdown:
            markdown_extensions:
              - pymdownx.superfences:
        - pyspelling.filters.html:
            comments: false
            ignores:
              - code
              - pre
      sources:
        - 'docs/*.md'
        - 'docs/src/*.md'
        - 'docs/src/**/*.md'
      default_encoding: utf-8
  

================================================
FILE: docs/book.toml
================================================
[book]
authors = ["Fuel Labs <contact@fuel.sh>"]
language = "en"
multilingual = false
src = "src"
title = "The Fuel Rust SDK"

[output.html]
git-repository-url = "https://github.com/FuelLabs/fuels-rs"

[rust]
edition = "2021"


================================================
FILE: docs/spell-check-custom-words.txt
================================================
ABI
ABIs
ALU
APIs
ASM
AST
AssemblyScript
Bitwise
Booleans
BrowserStack
CEI
CLI
Cardinality
Changelog
Codec
Collateralized
DApp
DCA
DEX
DOT
DSL
Deserialization
Dockerized
EOA
ERC
ETH
EVM
EVM's
Ethereum
Ethereum's
FVM
FuelLabs
FuelVM
FuelVM's
Fuelup
GitHub
Github
GraphQL
GraphViz
HD
Homebrew
IDE
IDEs
IPFS
IaaS
Infura
Intrinsics
JSON
JWT
KMS
Keystore
Kms
LSP
MacOS
Macbook
Merkle
MiB
Orchestrator
PRs
PoA
PoS
PoW
PostgreSQL
Postgres
RPC
RocksDB
SDK
SDK's
SDKs
SHA
SQLx
SRC
SauceLabs
Schemas
Sepolia
Structs
Subcommands
Subcurrency
SuperABIs
Supertraits
Sway
TAI
TLDR
TODO
TOML
TypeChain
TypeScript
UI
UTF
UTXO
UTXOs
Updatable
Utils
VM
VMs
VS
VSCode
WASM
WebAssembly
Workspaces
YAML
abigen
args
arity
async
backend
backends
backtrace
backtraces
blockchain
blockchain's
blockchains
boolean
bytecode
calldata
codebase
codec
codespace
codespaces
collateralized
compositional
config
configurables
cryptographic
cryptographically
customizable
customizations
dApp
dApps
dapp
decrypt
deployable
dereference
dereferenced
dereferencing
deserializing
destructuring
deterministically
dev
dropdown
entrancy
enum
enums
env
forc
formatter
frontend
fuelup
fullstack
graphQL
graphql
growable
hoc
http
https
incrementor
indexable
initializer
initializers
inlines
inlining
instantiation
interoperable
intrinsics
js
keccak
kms
localhost
lookups
macOS
mainnet
mempool
merkle
monomorphization
monorepo
monorepos
namespace
namespaces
natively
neovim
npm
nvm
onboarding
orchestrator
params
pnpm
pre
prerelease
queryable
quickstart
relayer
relayers
repo
repos
roadmap
runnable
runtime
runtimes
schemas
semver
stateful
struct
struct's
structs
subcommand
subcommands
subcurrency
submodule
superABI
superABIs
superset
supertrait
supertraits
testnet
testnets
toolchain
toolchains
tuple's
turbofish
typeclass
unary
urql
validator
validators
workspace
workspaces


================================================
FILE: docs/src/SUMMARY.md
================================================
# Summary

[The Fuel Rust SDK](./index.md)

- [Getting Started](./getting-started.md)
- [Connecting to a Fuel node](./connecting/index.md)
  - [Connecting to the Testnet or an external node](./connecting/external-node.md)
  - [Running a short-lived Fuel node with the SDK](./connecting/short-lived.md)
  - [RocksDB](./connecting/rocksdb.md)
  - [Querying the blockchain](./connecting/querying.md)
  - [Retrying upon errors](./connecting/retrying.md)
- [Accounts](./accounts.md)
- [Managing wallets](./wallets/index.md)
  - [Using private keys](./wallets/private_key_signer.md)
  - [Keystore](./wallets/keystore.md)
  - [Using KMS](./wallets/kms.md)
  - [Using a fake signer/impersonating an account](./wallets/fake_signer.md)
  - [Querying](./wallets/checking-balances-and-coins.md)
  - [Testing](./wallets/test-wallets.md)
  - [Locking](./wallets/access.md)
  - [Signing](./wallets/signing.md)
- [Generating bindings with `abigen!`](./abigen/index.md)
  - [The JSON ABI file](abigen/the-json-abi-file.md)
  - [The `abigen!` macro](abigen/the-abigen-macro.md)
- [Deploying contracts](./deploying/index.md)
  - [Configurable constants](./deploying/configurable-constants.md)
  - [Storage slots](./deploying/storage-slots.md)
  - [Interacting with contracts](./deploying/interacting-with-contracts.md)
  - [The FuelVM Binary file](./deploying/the-fuelvm-binary-file.md)
  - [Large contracts](./deploying/large_contracts.md)
- [Calling contracts](./calling-contracts/index.md)
  - [Connecting wallets](./calling-contracts/calls-with-different-wallets.md)
  - [Transaction policies](./calling-contracts/tx-policies.md)
  - [Call parameters](./calling-contracts/call-params.md)
  - [Custom asset transfer](./calling-contracts/custom-asset-transfer.md)
  - [Custom inputs and outputs](./calling-contracts/custom-inputs-outputs.md)
  - [Call response](./calling-contracts/call-response.md)
  - [Logs](./calling-contracts/logs.md)
  - [Variable outputs and messages](./calling-contracts/variable-outputs.md)
  - [Simulating calls](./calling-contracts/simulation.md)
  - [Calling other contracts](./calling-contracts/other-contracts.md)
  - [Multiple contract calls](./calling-contracts/multicalls.md)
  - [Transaction dependency estimation](./calling-contracts/tx-dependency-estimation.md)
  - [Estimating cost](./calling-contracts/cost-estimation.md)
  - [Low-level calls](./calling-contracts/low-level-calls.md)
- [Running scripts](./running-scripts.md)
- [Predicates](./predicates/index.md)
  - [Signatures example](./predicates/send-spend-predicate.md)
- [Pre-uploading code](./preuploading-code.md)
- [Custom transactions](./custom-transactions/index.md)
  - [Transaction builders](./custom-transactions/transaction-builders.md)
  - [Custom contract and script calls](./custom-transactions/custom-calls.md)
- [Types](./types/index.md)
  - [`Bytes32`](./types/bytes32.md)
  - [`Address`](./types/address.md)
  - [`ContractId`](./types/contract-id.md)
  - [`AssetId`](./types/asset-id.md)
  - [Structs and enums](./types/custom_types.md)
  - [`String`](./types/string.md)
  - [`Bits256`](./types/bits256.md)
  - [`Bytes`](./types/bytes.md)
  - [`B512`](./types/B512.md)
  - [`EvmAddress`](./types/evm_address.md)
  - [Vectors](./types/vectors.md)
  - [Converting types](./types/conversion.md)
- [Codec](./codec/index.md)
  - [Encoding](./codec/encoding.md)
  - [Decoding](./codec/decoding.md)
- [API Reference](./reference.md)
- [Testing](./testing/index.md)
  - [Testing basics](./testing/basics.md)
  - [The `setup_program_test!` macro](testing/the-setup-program-test-macro.md)
  - [Tweaking the blockchain](./testing/chains.md)
- [Cookbook](./cookbook/index.md)
  - [Custom consensus parameters](./cookbook/custom-chain.md)
  - [Deposit and Withdraw](./cookbook/deposit-and-withdraw.md)
  - [Transfer all assets](./cookbook/transfer-all-assets.md)
- [Debugging](./debugging/index.md)
  - [The Function selector](./debugging/function-selector.md)
  - [Decoding script transactions](./debugging/decoding-script-transactions.md)
- [Glossary](./glossary.md)
- [Contributing](./contributing/CONTRIBUTING.md)
  - [Integration tests structure](./contributing/tests-structure.md)
- [Command Line Interfaces](./cli/index.md)
  - [`fuels-abi-cli`](./cli/fuels-abi-cli.md)


================================================
FILE: docs/src/abigen/index.md
================================================
# Generating bindings with abigen

You might have noticed this snippet in the previous sections:

```rust,ignore
{{#include ../../../examples/contracts/src/lib.rs:abigen_example}}
```

<!-- This section should explain the purpose of the abigen -->
<!-- abigen:example:start -->
The SDK lets you transform ABI methods of a smart contract, specified as JSON objects (which you can get from [Forc](https://github.com/FuelLabs/sway/tree/master/forc)), into Rust structs and methods that are type-checked at compile time.
In order to call your contracts, scripts or predicates, you first need to generate the Rust bindings for them.
<!-- abigen:example:end -->

The following subsections contain more details about the `abigen!` syntax and the code generated from it.


================================================
FILE: docs/src/abigen/the-abigen-macro.md
================================================
# abigen

<!-- This section explain the `abigen!` macro -->
<!-- abigen:example:start -->
`abigen!` is a procedural macro -- it generates code. It accepts inputs in the format of:

```text
ProgramType(name="MyProgramType", abi="my_program-abi.json")...
```

where:

- `ProgramType` is one of: `Contract`, `Script` or `Predicate`,

- `name` is the name that will be given to the generated bindings,

- `abi` is either a path to the JSON ABI file or its actual contents.
<!-- abigen:example:end -->

---
So, an `abigen!` which generates bindings for two contracts and one script looks like this:

```rust,ignore
{{#include ../../../examples/macros/src/lib.rs:multiple_abigen_program_types}}
```

## How does the generated code look?

A rough overview:

```rust,ignore
pub mod abigen_bindings {
    pub mod contract_a_mod {
        struct SomeCustomStruct{/*...*/};
        // other custom types used in the contract

        struct ContractA {/*...*/};
        impl ContractA {/*...*/};
        // ...
    }
    pub mod contract_b_mod {
        // ...
    }
    pub mod my_script_mod {
        // ...
    }
    pub mod my_predicate_mod{
        // ...
    }
    pub mod shared_types{
        // ...
    }
}

pub use contract_a_mod::{/*..*/};
pub use contract_b_mod::{/*..*/};
pub use my_predicate_mod::{/*..*/};
pub use shared_types::{/*..*/};
```

Each `ProgramType` gets its own `mod` based on the `name` given in the `abigen!`. Inside the respective mods, the custom types used by that program are generated, and the bindings through which the actual calls can be made.

One extra `mod` called `shared_types` is generated if `abigen!` detects that the given programs share types. Instead of each `mod` regenerating the type for itself, the type is lifted out into the `shared_types` module, generated only once, and then shared between all program bindings that use it. Reexports are added to each mod so that even if a type is deemed shared, you can still access it as though each `mod` had generated the type for itself (i.e. `my_contract_mod::SharedType`).

A type is deemed shared if its name and definition match up. This can happen either because you've used the same library (a custom one or a type from the `stdlib`) or because you've happened to define the exact same type.

Finally, `pub use` statements are inserted, so you don't have to fully qualify the generated types. To avoid conflict, only types that have unique names will get a `pub use` statement. If you find `rustc` can't find your type, it might just be that there is another generated type with the same name. To fix the issue just qualify the path by doing `abigen_bindings::whatever_contract_mod::TheType`.

> **Note:**
> It is **highly** encouraged that you generate all your bindings in one `abigen!` call. Doing it in this manner will allow type sharing and avoid name collisions you'd normally get when calling `abigen!` multiple times inside the same namespace. If you choose to proceed otherwise, keep in mind the generated code overview presented above and appropriately separate the `abigen!` calls into different modules to resolve the collision.

## Using the bindings

Let's look at a contract with two methods: `initialize_counter(arg: u64) -> u64` and `increment_counter(arg: u64) -> u64`, with the following JSON ABI:

```json,ignore
{{#include ../../../examples/rust_bindings/src/abi.json}}
```

By doing this:

```rust,ignore
{{#include ../../../examples/rust_bindings/src/lib.rs:use_abigen}}
```

or this:

```rust,ignore
{{#include ../../../examples/rust_bindings/src/lib.rs:abigen_with_string}}
```

you'll generate this (shortened for brevity's sake):

```rust,ignore
{{#include ../../../examples/rust_bindings/src/rust_bindings_formatted.rs}}
```

> **Note:** that is all **generated** code. No need to write any of that. Ever. The generated code might look different from one version to another, this is just an example to give you an idea of what it looks like.

Then, you're able to use it to call the actual methods on the deployed contract:

```rust,ignore
{{#include ../../../examples/contracts/src/lib.rs:use_deployed_contract}}
```


================================================
FILE: docs/src/abigen/the-json-abi-file.md
================================================
# The JSON ABI file

<!-- This section should talk about the importance of the ABI -->
<!-- abi:example:start -->
Whether you want to deploy or connect to a pre-existing smart contract, the JSON ABI file is extremely important: it's what tells the SDK about the [ABI methods](https://docs.fuel.network/guides/quickstart/building-a-smart-contract/#abi) in your smart contracts.
<!-- abi:example:end -->

For the same example Sway code as above:

```Rust
contract;

abi MyContract {
    fn test_function() -> bool;
}

impl MyContract for Contract {
    fn test_function() -> bool {
        true
    }
}
```

The JSON ABI file looks like this:

```json
$ cat out/release/my-test-abi.json
[
  {
    "type": "function",
    "inputs": [],
    "name": "test_function",
    "outputs": [
      {
        "name": "",
        "type": "bool",
        "components": null
      }
    ]
  }
]
```

The Fuel Rust SDK will take this file as input and generate equivalent methods (and custom types if applicable) that you can call from your Rust code.


================================================
FILE: docs/src/accounts.md
================================================
# Accounts

The `ViewOnlyAccount` trait provides a common interface to query balances.

The `Account` trait, in addition to the above, also provides a way to transfer assets. When performing actions in the SDK that lead to a transaction, you will typically need to provide an account that will be used to allocate resources required by the transaction, including transaction fees.

The traits are implemented by the following types:

- [`Wallet`](./wallets/index.md)
- [`Predicate`](./predicates/index.md)

## Transferring assets

An account implements the following methods for transferring assets:

- `transfer`
- `force_transfer_to_contract`
- `withdraw_to_base_layer`

The following examples are provided for a `Wallet` account. A `Predicate` account would work similarly, but you might need to set its predicate data before attempting to spend resources owned by it.

With `wallet.transfer` you can initiate a transaction to transfer an asset from your account to a target address.

```rust,ignore
{{#include ../../examples/wallets/src/lib.rs:wallet_transfer}}
```

You can transfer assets to a contract via `wallet.force_transfer_to_contract`.

```rust,ignore
{{#include ../../examples/wallets/src/lib.rs:wallet_contract_transfer}}
```

For transferring assets to the base layer chain, you can use `wallet.withdraw_to_base_layer`.

```rust,ignore
{{#include ../../examples/wallets/src/lib.rs:wallet_withdraw_to_base}}
```

The above example creates an `Address` from a string. Next, it calls `wallet.withdraw_to_base_layer` by providing the address, the amount to be transferred, and the transaction policies. Lastly, to verify that the transfer succeeded, the relevant message proof is retrieved with `provider.get_message_proof,` and the amount and the recipient are verified.


================================================
FILE: docs/src/calling-contracts/call-params.md
================================================
# Call parameters

<!-- This section should explain what the call params are and how to configure them -->
<!-- call_params:example:start -->
The parameters for a contract call are:

1. Amount
2. Asset ID
3. Gas forwarded
<!-- call_params:example:end -->

You can use these to forward coins to a contract. You can configure these parameters by creating an instance of [`CallParameters`](https://docs.rs/fuels/latest/fuels/programs/calls/struct.CallParameters.html) and passing it to a chain method called `call_params`.
<!-- use_call_params:example:end -->

For instance, suppose the following contract that uses Sway's `msg_amount()` to return the amount sent in that transaction.

```rust,ignore
{{#include ../../../e2e/sway/contracts/contract_test/src/main.sw:msg_amount}}
```

Then, in Rust, after setting up and deploying the above contract, you can configure the amount being sent in the transaction like this:

```rust,ignore
{{#include ../../../examples/contracts/src/lib.rs:call_parameters}}
```

<!-- This section should explain why `call_params` returns a result -->
<!-- payable:example:start -->
`call_params` returns a result to ensure you don't forward assets to a contract method that isn't payable.
<!-- payable:example:end -->
In the following example, we try to forward an amount of `100` of the base asset to `non_payable`. As its name suggests, `non_payable` isn't annotated with `#[payable]` in the contract code. Passing `CallParameters` with an amount other than `0` leads to an error:

```rust,ignore
{{#include ../../../e2e/tests/contracts.rs:non_payable_params}}
```

> **Note:** forwarding gas to a contract call is always possible, regardless of the contract method being non-payable.

You can also use `CallParameters::default()` to use the default values:

```rust,ignore
{{#include ../../../packages/fuels-core/src/utils/constants.rs:default_call_parameters}}
```

This way:

```rust,ignore
{{#include ../../../examples/contracts/src/lib.rs:call_parameters_default}}
```

<!-- This section should explain what the `gas_forwarded` parameter does -->
<!-- gas:example:start -->
The `gas_forwarded` parameter defines the limit for the actual contract call as opposed to the gas limit for the whole transaction. This means that it is constrained by the transaction limit. If it is set to an amount greater than the available gas, all available gas will be forwarded.
<!-- gas:example:end -->

```rust,ignore
{{#include ../../../examples/contracts/src/lib.rs:call_params_gas}}
```

<!-- This section should explain the default forwarding behavior for a call -->
<!-- forwarding:example:start -->
If you don't set the call parameters or use `CallParameters::default()`, the transaction gas limit will be forwarded instead.
<!-- forwarding:example:end -->


================================================
FILE: docs/src/calling-contracts/call-response.md
================================================
# Call response

<!-- This section should why you have to chain `.call().await.unwrap()` so often -->
<!-- chaining:example:start -->
You've probably noticed that you're often chaining `.call().await.unwrap()`. That's because:

1. You have to choose between `.call()` and `.simulate()` (more on this in the next section).
2. Contract calls are asynchronous, so you can choose to either `.await` it or perform concurrent tasks, making full use of Rust's async.
3. `.unwrap()` the `Result<CallResponse, Error>` returned by the contract call.
<!-- chaining:example:end -->

<!-- This section should preface what the `CallResponse` is -->
<!-- call_resp:example:start -->
Once you unwrap the `CallResponse`, you have access to this struct:
<!-- call_resp:example:end -->

```rust,ignore
{{#include ../../../packages/fuels-programs/src/responses/call.rs:call_response}}
```

<!-- This section should explain the fields of the `CallResponse` struct -->
<!-- call_resp_fields:example:start -->
Where `value` will hold the value returned by its respective contract method, represented by the exact type returned by the FuelVM, E.g., if your contract returns a FuelVM's `u64`, `value`'s `D` will be a `u64`. If it's a FuelVM's tuple `(u8,bool)`, then `D` will be a `(u8,bool)`. If it's a custom type, for instance, a Sway struct `MyStruct` containing two components, a `u64`, and a `b256`, `D` will be a struct generated at compile-time, called `MyStruct` with `u64` and a `[u8; 32]` (the equivalent of `b256` in Rust).

- `receipts` will hold all [receipts](https://docs.fuel.network/docs/specs/abi/receipts/) generated by that specific contract call.
- `gas_used` is the amount of gas consumed by the contract call.
- `tx_id` will hold the ID of the corresponding submitted transaction.
<!-- call_resp_fields:example:end -->

## Error handling

<!-- This section should explain how to use the `is_ok` and `is_err` methods for a call response -->
<!-- call_resp_ok:example:start -->
You can use the `is_ok` and `is_err` methods to check if a contract call `Result` is `Ok` or contains an error. These methods will return either `true` or `false`.
<!-- call_resp_ok:example:end -->

<!-- This section should show an example of how to use the `is_ok` and `is_err` methods for a call response -->
<!-- call_resp_ok_code:example:start -->
```rust, ignore
let is_ok = response.is_ok();
let is_error = response.is_err();
```
<!-- call_resp_ok_code:example:end -->

<!-- This section should explain how to use the `unwrap_err` method for a call response -->
<!-- call_resp_error:example:start -->
If `is_err` returns `true`, you can use the `unwrap_err` method to unwrap the error message.
<!-- call_resp_error:example:end -->

<!-- This section should show an example of how to unwrap a call response error -->
<!-- call_resp_error_code:example:start -->
```rust, ignore
if response.is_err() {
    let err = response.unwrap_err();
    println!("ERROR: {:?}", err);
};
```
<!-- call_resp_error_code:example:end -->


================================================
FILE: docs/src/calling-contracts/calls-with-different-wallets.md
================================================
# Calls with different wallets

<!-- This section should explain how to call a contract with a certain wallet -->
<!-- wallet:example:start -->
You can use the `with_account()` method on an existing contract instance as a shorthand for creating a new instance connected to the provided wallet. This lets you make contracts calls with different wallets in a chain like fashion.
<!-- wallet:example:end-->

```rust,ignore
{{#include ../../../examples/contracts/src/lib.rs:connect_wallet}}
```

> **Note:** connecting a different wallet to an existing instance ignores its set provider in favor of the provider used to deploy the contract. If you have two wallets connected to separate providers (each communicating with a separate fuel-core), the one assigned to the deploying wallet will also be used for contract calls. This behavior is only relevant if multiple providers (i.e. fuel-core instances) are present and can otherwise be ignored.


================================================
FILE: docs/src/calling-contracts/cost-estimation.md
================================================
# Estimating contract call cost

With the function `estimate_transaction_cost(tolerance: Option<f64>, block_horizon: Option<u32>)` provided by `CallHandler`, you can get a cost estimation for a specific call. The return type, `TransactionCost`, is a struct that contains relevant information for the estimation:

```rust,ignore
{{#include ../../../packages/fuels-accounts/src/provider.rs:transaction_cost}}
```

> **Note** `script_gas` refers to the part of the gas spent on the script execution.

Below are examples that show how to get the estimated transaction cost from single and multi call transactions.

```rust,ignore
{{#include ../../../examples/contracts/src/lib.rs:contract_call_cost_estimation}}
```

```rust,ignore
{{#include ../../../examples/contracts/src/lib.rs:multi_call_cost_estimation}}
```

The transaction cost estimation can be used to set the gas limit for an actual call, or to show the user the estimated cost.

> **Note** The same estimation interface is available for scripts.


================================================
FILE: docs/src/calling-contracts/custom-asset-transfer.md
================================================
# Custom asset transfer

<!-- This section should explain the `add_custom_asset()` method -->
<!-- transfer:example:start -->
The SDK provides the option to transfer assets within the same transaction, when making a contract call. By using `add_custom_asset()` you specify the asset ID, the amount, and the destination address:
<!-- transfer:example:end -->

```rust,ignore
{{#include ../../../examples/contracts/src/lib.rs:add_custom_assets}}
```


================================================
FILE: docs/src/calling-contracts/custom-inputs-outputs.md
================================================
# Custom inputs and outputs

If you need to add specific inputs and outputs to contract calls, you can use the `with_inputs` and `with_outputs` methods.

```rust,ignore
{{#include ../../../examples/contracts/src/lib.rs:add_custom_inputs_outputs}}
```

> **Note:** if custom inputs include coins that need to be signed, use the `add_signer` method to add the appropriate signer.


================================================
FILE: docs/src/calling-contracts/index.md
================================================
# Calling contracts

Once you've deployed your contract, as seen in the previous sections, you'll likely want to:

1. Call contract methods;
2. Configure call parameters and transaction policies;
3. Forward coins and gas in your contract calls;
4. Read and interpret returned values and logs.

Here's an example. Suppose your Sway contract has two ABI methods called `initialize_counter(u64)` and `increment_counter(u64)`. Once you've deployed it the contract, you can call these methods like this:

```rust,ignore
{{#include ../../../examples/contracts/src/lib.rs:use_deployed_contract}}
```

The example above uses all the default configurations and performs a simple contract call.

Furthermore, if you need to separate submission from value retrieval for any reason, you can do so as follows:

```rust,ignore
{{#include ../../../examples/contracts/src/lib.rs:submit_response_contract}}
```

Next, we'll see how we can further configure the many different parameters in a contract call.


================================================
FILE: docs/src/calling-contracts/logs.md
================================================
# Logs

Whenever you log a value within a contract method, the resulting log entry is added to the log receipt and the variable type is recorded in the contract's ABI. The SDK lets you parse those values into Rust types.

Consider the following contract method:

```rust,ignore
{{#include ../../../e2e/sway/logs/contract_logs/src/main.sw:produce_logs}}
```

You can access the logged values in Rust by calling `decode_logs_with_type::<T>` from a `CallResponse`, where `T` is the type of the logged variables you want to retrieve. The result will be a `Vec<T>`:

```rust,ignore
{{#include ../../../e2e/tests/logs.rs:produce_logs}}
```

You can use the `decode_logs()` function to retrieve a `LogResult` struct containing a `results` field that is a vector of `Result<String>` values representing the success or failure of decoding each log.

```rust, ignore
{{#include ../../../e2e/tests/logs.rs:decode_logs}}
```

Due to possible performance hits, it is not recommended to use `decode_logs()` outside of a debugging scenario.

> **Note:** String slices cannot be logged directly. Use the `__to_str_array()` function to convert it to a `str[N]` first.


================================================
FILE: docs/src/calling-contracts/low-level-calls.md
================================================
# Low-level calls

<!-- This section should explain what low-level calls are and how to do them -->
With low-level calls, you can specify the parameters of your calls at runtime and make indirect calls through other contracts.

Your caller contract should call `std::low_level_call::call_with_function_selector`, providing:

- target contract ID
- function selector encoded as `Bytes`
- calldata encoded as `Bytes`
- whether the calldata contains only a single value argument (e.g. a `u64`)
- `std::low_level_call::CallParams`

```rust,ignore
{{#include ../../../e2e/sway/contracts/low_level_caller/src/main.sw:low_level_call_contract}}
```

On the SDK side, you can construct an encoded function selector using `fuels::core::encode_fn_selector`, and encoded calldata using the `fuels::core::calldata!` macro.

E.g. to call the following function on the target contract:

```rust,ignore
{{#include ../../../e2e/sway/contracts/contract_test/src/main.sw:low_level_call}}
```

you would construct the function selector and the calldata as such, and provide them to the caller contract (like the one above):

```rust,ignore
{{#include ../../../examples/contracts/src/lib.rs:low_level_call}}
```

> Note: the `calldata!` macro uses the default `EncoderConfig` configuration under the hood.


================================================
FILE: docs/src/calling-contracts/multicalls.md
================================================
# Multiple contract calls

With `CallHandler`, you can execute multiple contract calls within a single transaction. To achieve this, you first prepare all the contract calls that you want to bundle:

```rust,ignore
{{#include ../../../examples/contracts/src/lib.rs:multi_call_prepare}}
```

You can also set call parameters, variable outputs, or external contracts for every contract call, as long as you don't execute it with `call()` or `simulate()`.

> **Note:** if custom inputs or outputs have been added to the separate calls, the input and output order will follow the order how the calls are added to the multi-call.

Next, you provide the prepared calls to your `CallHandler` and optionally configure transaction policies:

```rust,ignore
{{#include ../../../examples/contracts/src/lib.rs:multi_call_build}}
```

> **Note:** any transaction policies configured on separate contract calls are disregarded in favor of the parameters provided to the multi-call `CallHandler`.

Furthermore, if you need to separate submission from value retrieval for any reason, you can do so as follows:

```rust,ignore
{{#include ../../../examples/contracts/src/lib.rs:submit_response_multicontract}}
```

## Output values

To get the output values of the bundled calls, you need to provide explicit type annotations when saving the result of `call()` or `simulate()` to a variable:

```rust,ignore
{{#include ../../../examples/contracts/src/lib.rs:multi_call_values}}
```

You can also interact with the `CallResponse` by moving the type annotation to the invoked method:

```rust,ignore
{{#include ../../../examples/contracts/src/lib.rs:multi_contract_call_response}}
```


================================================
FILE: docs/src/calling-contracts/other-contracts.md
================================================
# Calling other contracts

If your contract method is calling other contracts you will have to add the appropriate `Inputs` and `Outputs` to your transaction. For your convenience, the `CallHandler` provides methods that prepare those inputs and outputs for you. You have two methods that you can use: `with_contracts(&[&contract_instance, ...])` and `with_contract_ids(&[&contract_id, ...])`.

`with_contracts(&[&contract_instance, ...])` requires contract instances that were created using the `abigen` macro. When setting the external contracts with this method, logs and require revert errors originating from the external contract can be propagated and decoded by the calling contract.

```rust,ignore
{{#include ../../../e2e/tests/contracts.rs:external_contract}}
```

 If however, you do not need to decode logs or you do not have a contract instance that was generated using the `abigen` macro you can use `with_contract_ids(&[&contract_id, ...])` and provide the required contract ids.

```rust,ignore
{{#include ../../../e2e/tests/contracts.rs:external_contract_ids}}
```


================================================
FILE: docs/src/calling-contracts/simulation.md
================================================
# Simulating calls

Sometimes you want to simulate a call to a contract without changing the state of the blockchain. This can be achieved by calling `.simulate` instead of `.call` and passing in the desired execution context:

* `.simulate(Execution::realistic())` simulates the transaction in a manner that closely resembles a real call. You need a wallet with base assets to cover the transaction cost, even though no funds will be consumed. This is useful for validating that a real call would succeed if made at that moment. It allows you to debug issues with your contract without spending gas.

```rust,ignore
{{#include ../../../examples/contracts/src/lib.rs:simulate}}
```

* `.simulate(Execution::state_read_only())` disables many validations, adds fake gas, extra variable outputs, blank witnesses, etc., enabling you to read state even with an account that has no funds.

```rust,ignore
{{#include ../../../examples/contracts/src/lib.rs:simulate_read_state}}
```

If the node supports historical execution (the node is using `rocksdb` and the `historical_execution` flag has been set), then both execution types can be chained with `at_height` to simulate the call at a specific block height.

```rust,ignore
{{#include ../../../examples/contracts/src/lib.rs:simulate_read_state_at_height}}
```


================================================
FILE: docs/src/calling-contracts/tx-dependency-estimation.md
================================================
# Transaction dependency estimation

Previously, we mentioned that a contract call might require you to manually specify external contracts, variable outputs, or output messages. The SDK can also attempt to estimate and set these dependencies for you at the cost of running multiple simulated calls in the background.

The following example uses a contract call that calls an external contract and later mints assets to a specified address. Calling it without including the dependencies will result in a revert:

```rust,ignore
{{#include ../../../examples/contracts/src/lib.rs:dependency_estimation_fail}}
```

As mentioned in previous chapters, you can specify the external contract and add an output variable to resolve this:

```rust,ignore
{{#include ../../../examples/contracts/src/lib.rs:dependency_estimation_manual}}
```

But this requires you to know the contract ID of the external contract and the needed number of output variables. Alternatively, by chaining

- `.with_variable_output_policy(VariableOutputPolicy::EstimateMinimum)` and
- `.determine_missing_contracts()`

the dependencies will be estimated by the SDK and set automatically.

```rust,ignore
{{#include ../../../examples/contracts/src/lib.rs:dependency_estimation}}
```

> **Note:** Both `with_variable_output_policy` and `determine_missing_contracts` can also be used when working with script calls or multi calls. `determine_missing_contracts()` will not enable logging from an external contract. For more information, see [here](./other-contracts.md).


================================================
FILE: docs/src/calling-contracts/tx-policies.md
================================================
# Transaction policies

<!-- This section should explain what tx policies are and how to configure them -->
<!-- tx_policies:example:start -->
Transaction policies are defined as follows:

```rust,ignore
{{#include ../../../packages/fuels-core/src/types/wrappers/transaction.rs:tx_policies_struct}}
```

Where:

1. **Tip** - amount to pay the block producer to prioritize the transaction.
2. **Witness Limit** - The maximum amount of witness data allowed for the transaction.
3. **Maturity** - Block until which the transaction cannot be included.
4. **Expiration** - Block after which the transaction cannot be included.
5. **Max Fee** - The maximum fee payable by this transaction.
6. **Script Gas Limit** - The maximum amount of gas the transaction may consume for executing its script code.

When the **Script Gas Limit** is not set, the Rust SDK will estimate the consumed gas in the background and set it as the limit.

If the **Witness Limit** is not set, the SDK will set it to the size of all witnesses and signatures defined in the transaction builder.

You can configure these parameters by creating an instance of `TxPolicies` and passing it to a chain method called `with_tx_policies`:
<!-- tx_policies:example:end-->

```rust,ignore
{{#include ../../../examples/contracts/src/lib.rs:tx_policies}}
```

<!-- This section should explain how to use the default tx policy -->
<!-- tx_policies_default:example:start -->
You can also use `TxPolicies::default()` to use the default values.
<!-- tx_policies_default:example:end -->

This way:

```rust,ignore
{{#include ../../../examples/contracts/src/lib.rs:tx_policies_default}}
```

As you might have noticed, `TxPolicies` can also be specified when deploying contracts or transferring assets by passing it to the respective methods.


================================================
FILE: docs/src/calling-contracts/variable-outputs.md
================================================
# Output variables

<!-- This section should explain variable outputs  -->
<!-- variable_outputs:example:start -->
Sometimes, the contract you call might transfer funds to a specific address, depending on its execution. The underlying transaction for such a contract call has to have the appropriate number of [variable outputs](https://docs.fuel.network/docs/specs/tx-format/output/#outputvariable) to succeed.
<!-- variable_outputs:example:end -->

Let's say you deployed a contract with the following method:

```rust,ignore
{{#include ../../../e2e/sway/contracts/token_ops/src/main.sw:variable_outputs}}
```

When calling `transfer_coins_to_output` with the SDK, you can specify the number of variable outputs:

```rust,ignore
{{#include ../../../examples/contracts/src/lib.rs:variable_outputs}}
```

<!-- This section should explain what the `with_variable_output_policy` method does -->
<!-- with_variable_output_policy:example:start -->
`with_variable_output_policy` sets the policy regarding variable outputs. You can either set the number of variable outputs yourself by providing `VariableOutputPolicy::Exactly(n)` or let the SDK estimate it for you with `VariableOutputPolicy::EstimateMinimum`. A variable output indicates that the amount and the owner may vary based on transaction execution.
<!-- with_variable_output_policy:example:end -->

> **Note:** that the Sway `lib-std` function `mint_to_address` calls `transfer_to_address` under the hood, so you need to call `with_variable_output_policy` in the Rust SDK tests like you would for `transfer_to_address`.


================================================
FILE: docs/src/cli/fuels-abi-cli.md
================================================
# `fuels-abi-cli`

Simple CLI program to encode Sway function calls and decode their output. The ABI being encoded and decoded is specified [here](https://docs.fuel.network/docs/specs/abi/).

## Usage

```plaintext
sway-abi-cli 0.1.0
FuelVM ABI coder

USAGE:
    sway-abi-cli <SUBCOMMAND>

FLAGS:
    -h, --help       Prints help information
    -V, --version    Prints version information

SUBCOMMANDS:
    codegen   Output Rust types file
    decode    Decode ABI call result
    encode    Encode ABI call
    help      Prints this message or the help of the given subcommand(s)
```

## Examples

You can choose to encode only the given params or you can go a step further and have a full JSON ABI file and encode the whole input to a certain function call defined in the JSON file.

### Encoding params only

```console
$ cargo run -- encode params -v bool true
0000000000000001
```

```console
$ cargo run -- encode params -v bool true -v u32 42 -v u32 100
0000000000000001000000000000002a0000000000000064
```

Note that for every parameter you want to encode, you must pass a `-v` flag followed by the type, and then the value: `-v <type_1> <value_1> -v <type_2> <value_2> -v <type_n> <value_n>`

### Encoding function call

`example/simple.json`:

```json
[
  {
    "type":"function",
    "inputs":[
      {
        "name":"arg",
        "type":"u32"
      }
    ],
    "name":"takes_u32_returns_bool",
    "outputs":[
      {
        "name":"",
        "type":"bool"
      }
    ]
  }
]
```

```console
$ cargo run -- encode function examples/simple.json takes_u32_returns_bool -p 4
000000006355e6ee0000000000000004
```

`example/array.json`

```json
[
  {
    "type":"function",
    "inputs":[
      {
        "name":"arg",
        "type":"u16[3]"
      }
    ],
    "name":"takes_array",
    "outputs":[
      {
        "name":"",
        "type":"u16[2]"
      }
    ]
  }
]
```

```console
$ cargo run -- encode function examples/array.json takes_array -p '[1,2]'
00000000f0b8786400000000000000010000000000000002
```

Note that the first word (8 bytes) of the output is reserved for the function selector, which is captured in the last 4 bytes, which is simply the 256hash of the function signature.

Example with nested struct:

```json
[
  {
    "type":"contract",
    "inputs":[
      {
        "name":"MyNestedStruct",
        "type":"struct",
        "components":[
          {
            "name":"x",
            "type":"u16"
          },
          {
            "name":"y",
            "type":"struct",
            "components":[
              {
                "name":"a",
                "type":"bool"
              },
              {
                "name":"b",
                "type":"u8[2]"
              }
            ]
          }
        ]
      }
    ],
    "name":"takes_nested_struct",
    "outputs":[

    ]
  }
]
```

```console
$ cargo run -- encode function examples/nested_struct.json takes_nested_struct -p '(10, (true, [1,2]))'
00000000e8a04d9c000000000000000a000000000000000100000000000000010000000000000002
```

### Decoding params only

Similar to encoding parameters only:

```console
$ cargo run -- decode params -t bool -t u32 -t u32 0000000000000001000000000000002a0000000000000064
Bool(true)
U32(42)
U32(100)
```

### Decoding function output

```console
$ cargo run -- decode function examples/simple.json takes_u32_returns_bool 0000000000000001
Bool(true)
```


================================================
FILE: docs/src/cli/index.md
================================================
# `fuels-rs` Rust Workspaces

This section gives you a little overview of the role and function of every workspace in the `fuels-rs` repository.

- [`fuels-abi-cli`](./fuels-abi-cli.md)


================================================
FILE: docs/src/codec/decoding.md
================================================
# Decoding

Be sure to read the [prerequisites](./index.md#prerequisites-for-decodingencoding) to decoding.

Decoding is done via the [`ABIDecoder`](https://docs.rs/fuels/latest/fuels/core/codec/struct.ABIDecoder.html):

```rust,ignore
{{#include ../../../examples/codec/src/lib.rs:decoding_example}}
```

First into a [`Token`](https://docs.rs/fuels/latest/fuels/types/enum.Token.html), then via the [`Tokenizable`](https://docs.rs/fuels/latest/fuels/core/traits/trait.Tokenizable.html) trait, into the desired type.

If the type came from [`abigen!`](../abigen/index.md) (or uses the [`::fuels::macros::TryFrom`](https://docs.rs/fuels/latest/fuels/macros/derive.TryFrom.html) derivation) then you can also use `try_into` to convert bytes into a type that implements both [`Parameterize`](https://docs.rs/fuels/latest/fuels/core/traits/trait.Parameterize.html) and [`Tokenizable`](https://docs.rs/fuels/latest/fuels/core/traits/trait.Tokenizable.html):

```rust,ignore
{{#include ../../../examples/codec/src/lib.rs:decoding_example_try_into}}
```

Under the hood, [`try_from_bytes`](https://docs.rs/fuels/latest/fuels/core/codec/fn.try_from_bytes.html) is being called, which does what the preceding example did.

## Configuring the decoder

The decoder can be configured to limit its resource expenditure:

```rust,ignore
{{#include ../../../examples/codec/src/lib.rs:configuring_the_decoder}}
```

<!-- TODO: Add a link once a release is made -->
<!-- https://docs.rs/fuels/latest/fuels/core/codec/struct.DecoderConfig.html -->
For an explanation of each configuration value visit the `DecoderConfig`.

<!-- TODO: add a link once a release is made -->
<!-- https://docs.rs/fuels/latest/fuels/core/codec/struct.DecoderConfig.html -->
The default values for the `DecoderConfig` are:

```rust,ignore
{{#include ../../../packages/fuels-core/src/codec/abi_decoder.rs:default_decoder_config}}
```

## Configuring the decoder for contract/script calls

You can also configure the decoder used to decode the return value of the contract method:

```rust,ignore
{{#include ../../../examples/contracts/src/lib.rs:contract_decoder_config}}
```

The same method is available for script calls.


================================================
FILE: docs/src/codec/encoding.md
================================================
# Encoding

Be sure to read the [prerequisites](./index.md#prerequisites-for-decodingencoding) to encoding.

Encoding is done via the [`ABIEncoder`](https://docs.rs/fuels/latest/fuels/core/codec/struct.ABIEncoder.html):

```rust,ignore
{{#include ../../../examples/codec/src/lib.rs:encoding_example}}
```

There is also a shortcut-macro that can encode multiple types which implement [`Tokenizable`](https://docs.rs/fuels/latest/fuels/core/traits/trait.Tokenizable.html):

```rust,ignore
{{#include ../../../examples/codec/src/lib.rs:encoding_example_w_macro}}
```

## Configuring the encoder

The encoder can be configured to limit its resource expenditure:

```rust,ignore
{{#include ../../../examples/codec/src/lib.rs:configuring_the_encoder}}
```

The default values for the `EncoderConfig` are:

```rust,ignore
{{#include ../../../packages/fuels-core/src/codec/abi_encoder.rs:default_encoder_config}}
```

## Configuring the encoder for contract/script calls

You can also configure the encoder used to encode the arguments of the contract method:

```rust,ignore
{{#include ../../../examples/contracts/src/lib.rs:contract_encoder_config}}
```

The same method is available for script calls.


================================================
FILE: docs/src/codec/index.md
================================================
# Codec

Encoding and decoding are done as per [the fuel spec](https://docs.fuel.network/docs/specs/abi/argument-encoding/). To this end, `fuels` makes use of the [`ABIEncoder`](https://docs.rs/fuels/latest/fuels/core/codec/struct.ABIEncoder.html) and the [`ABIDecoder`](https://docs.rs/fuels/latest/fuels/core/codec/struct.ABIDecoder.html).

## Prerequisites for decoding/encoding

To encode a type, you must first convert it into a [`Token`](https://docs.rs/fuels/latest/fuels/types/enum.Token.html). This is commonly done by implementing the [`Tokenizable`](https://docs.rs/fuels/latest/fuels/core/traits/trait.Tokenizable.html) trait.

To decode, you also need to provide a [`ParamType`](https://docs.rs/fuels/latest/fuels/types/param_types/enum.ParamType.html) describing the schema of the type in question. This is commonly done by implementing the [Parameterize](https://docs.rs/fuels/latest/fuels/core/traits/trait.Parameterize.html) trait.

All types generated by the [`abigen!`](../abigen/index.md) macro implement both the [`Tokenizable`](https://docs.rs/fuels/latest/fuels/core/traits/trait.Tokenizable.html) and [`Parameterize`](https://docs.rs/fuels/latest/fuels/core/traits/trait.Parameterize.html) traits.

`fuels` also contains implementations for:

- [`Tokenizable`](https://docs.rs/fuels/latest/fuels/core/traits/trait.Tokenizable.html) for the `fuels`-owned types listed [here](https://docs.rs/fuels/latest/fuels/core/traits/trait.Tokenizable.html#implementers) as well as [for some foreign types](https://docs.rs/fuels/latest/fuels/core/traits/trait.Tokenizable.html#foreign-impls) (such as `u8`, `u16`, `std::vec::Vec<T: Tokenizable>`, etc.).
- [`Parameterize`](https://docs.rs/fuels/latest/fuels/core/traits/trait.Parameterize.html) for the `fuels`-owned types listed [here](https://docs.rs/fuels/latest/fuels/core/traits/trait.Parameterize.html#implementers) as well as [for some foreign types](https://docs.rs/fuels/latest/fuels/core/traits/trait.Parameterize.html#foreign-impls) (such as `u8`, `u16`, `std::vec::Vec<T: Parameterize>`, etc.).

## Deriving the traits

Both [`Tokenizable`](https://docs.rs/fuels/latest/fuels/core/traits/trait.Tokenizable.html) and [`Parameterize`](https://docs.rs/fuels/latest/fuels/core/traits/trait.Parameterize.html) can be derived for `struct`s and `enum`s if all inner types implement the derived traits:

```rust,ignore
{{#include ../../../examples/macros/src/lib.rs:deriving_traits}}
```

> Note:
> Deriving [`Tokenizable`](https://docs.rs/fuels/latest/fuels/core/traits/trait.Tokenizable.html) on `enum`s requires that all variants also implement [`Parameterize`](https://docs.rs/fuels/latest/fuels/core/traits/trait.Parameterize.html).

### Tweaking the derivation

#### Changing the location of imports

The derived code expects that the `fuels` package is accessible through `::fuels`. If this is not the case then the derivation macro needs to be given the locations of `fuels::types` and `fuels::core`.

```rust,ignore
{{#include ../../../examples/macros/src/lib.rs:deriving_traits_paths}}
```

#### Generating no-std code

If you want `no-std` generated code:

```rust,ignore
{{#include ../../../examples/macros/src/lib.rs:deriving_traits_nostd}}
```


================================================
FILE: docs/src/connecting/external-node.md
================================================
# Connecting to the Testnet or an external node

We can interact with the `Testnet` node by using the following example.

```rust,ignore
{{#include ../../../examples/providers/src/lib.rs:connect_to_testnet}}
```
>
> For detailed information about various testnet networks and their optimal toolchain configurations for your project, please visit the following link:
>
> [networks](https://fuelbook.fuel.network/master/networks/networks.html)

In the code example, we connected a new provider to the Testnet node and created a new wallet from a private key.

> **Note:** New wallets on the Testnet will not have any assets! They can be obtained by providing the wallet address to the faucet at
>
>[faucet-testnet.fuel.network](https://faucet-testnet.fuel.network)
>
> Once the assets have been transferred to the wallet, you can reuse it in other tests by providing the private key!
>
> In addition to the faucet, there is a block explorer for the Testnet at
>
> [block-explorer](https://fuellabs.github.io/block-explorer-v2)

If you want to connect to another node just change the URL or IP and port. For example, to connect to a local node that was created with `fuel-core` you can use:

```rust,ignore
{{#include ../../../examples/providers/src/lib.rs:local_node_address}}
```


================================================
FILE: docs/src/connecting/index.md
================================================
# Connecting to a Fuel node

<!-- This section should explain at a high level the main ways to connect to a node with the Rust SDK and when they are appropriate to use-->
<!-- rs_node:example:start -->
At a high level, you can use the Fuel Rust SDK to build Rust-based applications that can run computations on the Fuel Virtual Machine through interactions with smart contracts written in Sway.

For this interaction to work, the SDK must be able to communicate with a `fuel-core` node; you have two options at your disposal:

1. Use the testnet or run a Fuel node (using `fuel-core`) and instantiate a provider that points to that node's IP and port.
2. Use the SDK's native `launch_provider_and_get_wallet()` that runs a short-lived test Fuel node;

The second option is ideal for smart contract testing, as you can quickly spin up and tear down nodes between specific test cases.

For application building, you should use the first option.
<!-- rs_node:example:end -->


================================================
FILE: docs/src/connecting/querying.md
================================================
# Querying the blockchain

Once you set up a provider, you can interact with the Fuel blockchain. Here are a few examples of what you can do with a provider; for a more in-depth overview of the API, check the [official provider API documentation](https://docs.rs/fuels/latest/fuels/accounts/provider/struct.Provider.html).

- [Set up](#set-up)
- [Get all coins from an address](#get-all-coins-from-an-address)
- [Get spendable resources owned by an address](#get-spendable-resources-owned-by-an-address)
- [Get balances from an address](#get-balances-from-an-address)

## Set up

You might need to set up a test blockchain first. You can skip this step if you're connecting to an external blockchain.

```rust,ignore
{{#include ../../../examples/providers/src/lib.rs:setup_test_blockchain}}
```

## Get all coins from an address

This method returns all unspent coins (of a given asset ID) from a wallet.

```rust,ignore
{{#include ../../../examples/providers/src/lib.rs:get_coins}}
```

## Get spendable resources owned by an address

The following example shows how to fetch resources owned by an address. First, you create a  `ResourceFilter` which specifies the target address, asset ID, and amount. You can also define UTXO IDs and message IDs that should be excluded when retrieving the resources:

```rust,ignore
{{#include ../../../packages/fuels-accounts/src/provider.rs:resource_filter}}
```

The example uses default values for the asset ID and the exclusion lists. This resolves to the base asset ID and empty vectors for the ID lists respectively:

```rust,ignore
{{#include ../../../examples/providers/src/lib.rs:get_spendable_resources}}
```

## Get balances from an address

Get all the spendable balances of all assets for an address. This is different from getting the coins because we only return the numbers (the sum of UTXOs coins amount for each asset ID) and not the UTXOs coins themselves.

```rust,ignore
{{#include ../../../examples/providers/src/lib.rs:get_balances}}
```


================================================
FILE: docs/src/connecting/retrying.md
================================================
# Retrying requests

The [`Provider`](https://docs.rs/fuels/0.62.0/fuels/accounts/provider/struct.Provider.html) can be configured to retry a request upon receiving a `io::Error`.

> Note: Currently all node errors are received as `io::Error`s. So, if configured, a retry will happen even if, for example, a transaction failed to verify.

We can configure the number of retry attempts and the retry strategy as detailed below.

## `RetryConfig`

The retry behavior can be altered by giving a custom `RetryConfig`. It allows for configuring the maximum number of attempts and the interval strategy used.

```rust, ignore
{{#include ../../../packages/fuels-accounts/src/provider/retry_util.rs:retry_config}}
```

```rust, ignore
{{#include ../../../examples/providers/src/lib.rs:configure_retry}}
```

## Interval strategy - `Backoff`

`Backoff` defines different strategies for managing intervals between retry attempts.
Each strategy allows you to customize the waiting time before a new attempt based on the number of attempts made.

### Variants

- `Linear(Duration)`: `Default` Increases the waiting time linearly with each attempt.
- `Exponential(Duration)`: Doubles the waiting time with each attempt.
- `Fixed(Duration)`: Uses a constant waiting time between attempts.

```rust, ignore
{{#include ../../../packages/fuels-accounts/src/provider/retry_util.rs:backoff}}
```


================================================
FILE: docs/src/connecting/rocksdb.md
================================================
# RocksDB

RocksDB enables the preservation of the blockchain's state locally, facilitating its future utilization.

To create or use a local database, follow these instructions:

```rust,ignore
{{#include ../../../examples/cookbook/src/lib.rs:create_or_use_rocksdb}}
```

> Note: If the specified database does not exist, a new database will be created at that path. To utilize the code snippets above, either the `fuel-core` binary must be present, or both the `fuel-core-lib` and `rocksdb` features need to be enabled.


================================================
FILE: docs/src/connecting/short-lived.md
================================================
# Running a short-lived Fuel node with the SDK

You can use the SDK to spin up a local, ideally short-lived Fuel node. Then, you can instantiate a Fuel client, pointing to this node.

```rust,ignore
{{#include ../../../examples/contracts/src/lib.rs:instantiate_client}}
```

This approach is ideal for contract testing.

You can also use the test helper `setup_test_provider()` for this:

```rust,ignore
{{#include ../../../examples/wallets/src/lib.rs:create_random_wallet}}
```

You can also use `launch_provider_and_get_wallet()`, which abstracts away the `setup_test_provider()` and the wallet creation, all in one single method:

```rust,ignore
let wallet = launch_provider_and_get_wallet().await?;
```

## Features

### Fuel-core lib

The `fuel-core-lib` feature allows us to run a `fuel-core` node without installing the `fuel-core` binary on the local machine. Using the `fuel-core-lib` feature flag entails downloading all the dependencies needed to run the fuel-core node.

```rust,ignore
fuels = { version = "0.76.0", features = ["fuel-core-lib"] }
```

### RocksDB

The `rocksdb` is an additional feature that, when combined with `fuel-core-lib`, provides persistent storage capabilities while using `fuel-core` as a library.

```rust,ignore
fuels = { version = "0.76.0", features = ["rocksdb"] }
```


================================================
FILE: docs/src/contributing/CONTRIBUTING.md
================================================
# Contributing to the Fuel Rust SDK

Thanks for your interest in contributing to the Fuel Rust SDK!

This document outlines the process for installing dependencies, setting up for development, and conventions for contributing.`

If you run into any difficulties getting started, you can always ask questions on our [Discourse](https://forum.fuel.network/).

## Finding something to work on

You may contribute to the project in many ways, some of which involve coding knowledge and some which do not. A few examples include:

- Reporting bugs
- Adding new features or bug fixes for which there is already an open issue
- Making feature requests

Check out our [Help Wanted](https://github.com/FuelLabs/fuels-rs/labels/help%20wanted) or [Good First Issues](https://github.com/FuelLabs/fuels-rs/labels/good%20first%20issue) to find a suitable task.

If you are planning something big, for example, changes related to multiple components or changes to current behaviors, make sure to [open an issue](https://github.com/FuelLabs/fuels-rs/issues/new) to discuss with us before starting on the implementation.

## Contribution flow

This is a rough outline of what a contributor's workflow looks like:

- Make sure what you want to contribute is already tracked as an issue.
  - We may discuss the problem and solution in the issue.
- Create a Git branch from where you want to base your work. This is usually master.
- Write code, add test cases, and commit your work.
- Run tests and make sure all tests pass.
- Add the breaking label to your PR if the PR contains any breaking changes.
- Push your changes to a branch in your fork of the repository and submit a pull request.
  - Make sure to mention the issue created in step 1 in the commit message.
- Your PR will be reviewed, and some changes may be requested.
  - Your PR must be re-reviewed and approved once you've made changes.
  - Use GitHub's 'update branch' button if the PR becomes outdated.
  - If there are conflicts, you can merge and resolve them locally. Then push to your PR branch. Any changes to the branch will require a re-review.
- Our CI system (Github Actions) automatically tests all authorized pull requests.
- Use GitHub to merge the PR once approved.

Thanks for your contributions!

## Linking issues

Pull requests should be linked to at least one issue in the same repo.

If the pull request resolves the relevant issues, and you want GitHub to close these issues automatically after it merged into the default branch, you can use the syntax (`KEYWORD #ISSUE-NUMBER`) like this:

```sh
close #123
```

If the pull request links an issue but does not close it, you can use the keyword `ref` like this:

```sh
ref #456
```

Multiple issues should use full syntax for each issue and be separated by a comma, like:

```sh
close #123, ref #456
```


================================================
FILE: docs/src/contributing/tests-structure.md
================================================
# Integration tests structure in `fuels-rs`

The integration tests of `fuels-rs` cover almost all aspects of the SDK and have grown significantly as more functionality was added. To make the tests and associated `Sway` projects more manageable they were split into several categories. A category consist of a `.rs` file for the tests and, if needed, a separate directory for the `Sway` projects.

Currently have the following structure:

```shell
  .
  ├─  bindings/
  ├─  contracts/
  ├─  logs/
  ├─  predicates/
  ├─  storage/
  ├─  types/
  ├─  bindings.rs
  ├─  contracts.rs
  ├─  from_token.rs
  ├─  logs.rs
  ├─  predicates.rs
  ├─  providers.rs
  ├─  scripts.rs
  ├─  storage.rs
  ├─  types.rs
  └─  wallets.rs
```

Even though test organization is subjective, please consider these guidelines before adding a new category:

- Add a new category when creating a new section in the `Fuels Rust SDK` book - e.g. `Types`
- Add a new category if there are more than 3 test and more than 100 lines of code and they form a group of tests - e.g. `storage.rs`

 Otherwise, we recommend putting the integration test inside the existing categories above.


================================================
FILE: docs/src/cookbook/custom-chain.md
================================================
# Custom chain

This example demonstrates how to start a short-lived Fuel node with custom consensus parameters for the underlying chain.

First, we have to import `ConsensusParameters` and `ChainConfig`:

```rust,ignore
{{#include ../../../examples/cookbook/src/lib.rs:custom_chain_import}}
```

Next, we can define some values for the consensus parameters:

```rust,ignore
{{#include ../../../examples/cookbook/src/lib.rs:custom_chain_consensus}}
```

Before we can start a node, we probably also want to define some genesis coins and assign them to an address:

```rust,ignore
{{#include ../../../examples/cookbook/src/lib.rs:custom_chain_coins}}
```

Finally, we call `setup_test_provider()`, which starts a node with the given configurations and returns a
provider attached to that node:

```rust,ignore
{{#include ../../../examples/cookbook/src/lib.rs:custom_chain_provider}}
```


================================================
FILE: docs/src/cookbook/deposit-and-withdraw.md
================================================
# Deposit and withdraw

Consider the following contract:

```rust,ignore
{{#include ../../../e2e/sway/contracts/liquidity_pool/src/main.sw}}
```

As its name suggests, it represents a simplified example of a liquidity pool contract. The method `deposit()` expects you to supply an arbitrary amount of the `BASE_TOKEN`. As a result, it mints double the amount of the liquidity asset to the calling address. Analogously, if you call `withdraw()` supplying it with the liquidity asset, it will transfer half that amount of the `BASE_TOKEN` back to the calling address except for deducting it from the contract balance instead of minting it.

The first step towards interacting with any contract in the Rust SDK is calling the `abigen!` macro to generate type-safe Rust bindings for the contract methods:

```rust,ignore
{{#include ../../../examples/cookbook/src/lib.rs:liquidity_abigen}}
```

Next, we set up a wallet with custom-defined assets. We give our wallet some of the contracts `BASE_TOKEN` and the default asset (required for contract deployment):

```rust,ignore
{{#include ../../../examples/cookbook/src/lib.rs:liquidity_wallet}}
```

Having launched a provider and created the wallet, we can deploy our contract and create an instance of its methods:

```rust,ignore
{{#include ../../../examples/cookbook/src/lib.rs:liquidity_deploy}}
```

With the preparations out of the way, we can finally deposit to the liquidity pool by calling `deposit()` via the contract instance. Since we have to transfer assets to the contract, we create the appropriate `CallParameters` and chain them to the method call. To receive the minted liquidity pool asset, we have to append a variable output to our contract call.

```rust,ignore
{{#include ../../../examples/cookbook/src/lib.rs:liquidity_deposit}}
```

As a final demonstration, let's use all our liquidity asset balance to withdraw from the pool and confirm we retrieved the initial amount. For this, we get our liquidity asset balance and supply it to the `withdraw()` call via `CallParameters`.

```rust,ignore
{{#include ../../../examples/cookbook/src/lib.rs:liquidity_withdraw}}
```


================================================
FILE: docs/src/cookbook/index.md
================================================
# Cookbook

This section covers more advanced use cases that can be satisfied by combining various features of the Rust SDK. As such, it assumes that you have already made yourself familiar with the previous chapters of this book.

> **Note** This section is still a work in progress and more recipes may be added in the future.


================================================
FILE: docs/src/cookbook/transfer-all-assets.md
================================================
# Transfer all assets

The `transfer()` method lets you transfer a single asset, but what if you needed to move all of your assets to a different wallet? You could repeatably call `transfer()`, initiating a transaction each time, or you bundle all the transfers into a single transaction. This chapter guides you through crafting your custom transaction for transferring all assets owned by a wallet.

Lets quickly go over the setup:

```rust,ignore
{{#include ../../../examples/cookbook/src/lib.rs:transfer_multiple_setup}}
```

We prepare two wallets with randomized addresses. Next, we want one of our wallets to have some random assets, so we set them up with `setup_multiple_assets_coins()`.

Transactions require us to define input and output coins. Let's assume we do not know the assets owned by `wallet_1`. We retrieve its balances, i.e. tuples consisting of a string representing the asset ID and the respective amount. This lets us use the helpers `get_asset_inputs_for_amount()`, `get_asset_outputs_for_amount()` to create the appropriate inputs and outputs.

We transfer only a part of the base asset balance so that the rest can cover transaction fees:

```rust,ignore
{{#include ../../../examples/cookbook/src/lib.rs:transfer_multiple_input}}
```

All that is left is to build the transaction via `ScriptTransactionBuilder`, have `wallet_1` add a witness to it and we can send it. We confirm this by checking the number of balances present in the receiving wallet and their amount:

```rust,ignore
{{#include ../../../examples/cookbook/src/lib.rs:transfer_multiple_transaction}}
```


================================================
FILE: docs/src/custom-transactions/custom-calls.md
================================================
# Custom contract and script calls

When preparing a contract call via `CallHandler`, the Rust SDK uses a transaction builder in the background. You can fetch this builder and customize it before submitting it to the network. After the transaction is executed successfully, you can use the corresponding `CallHandler` to generate a [call response](../calling-contracts/call-response.md). The call response can be used to decode return values and logs. Below are examples for both contract and script calls.

## Custom contract call

```rust,ignore
{{#include ../../../examples/contracts/src/lib.rs:contract_call_tb}}
```

## Custom script call

```rust,ignore
{{#include ../../../e2e/tests/scripts.rs:script_call_tb}}
```


================================================
FILE: docs/src/custom-transactions/index.md
================================================
# Custom transactions

Until now, we have used helpers to create transactions, send them with a provider, and parse the results. However, sometimes we must make custom transactions with specific inputs, outputs, witnesses, etc. In the next chapter, we will show how to use the Rust SDKs transaction builders to accomplish this.


================================================
FILE: docs/src/custom-transactions/transaction-builders.md
================================================
# Transaction Builders

The Rust SDK simplifies the creation of **Create** and **Script** transactions through two handy builder structs `CreateTransactionBuilder`, `ScriptTransactionBuilder`, and the `TransactionBuilder` trait.

Calling `build(&provider)` on a builder will result in the corresponding `CreateTransaction` or `ScriptTransaction` that can be submitted to the network.

## Role of the transaction builders

> **Note** This section contains additional information about the inner workings of the builders. If you are just interested in how to use them, you can skip to the next section.

The builders take on the heavy lifting behind the scenes, offering two standout advantages: handling predicate data offsets and managing witness indexing.

When your transaction involves predicates with dynamic data as inputs, like vectors, the dynamic data contains a pointer pointing to the beginning of the raw data. This pointer's validity hinges on the order of transaction inputs, and any shifting could render it invalid. However, the transaction builders conveniently postpone the resolution of these pointers until you finalize the build process.

Similarly, adding signatures for signed coins requires the signed coin input to hold an index corresponding to the signature in the witnesses array. These indexes can also become invalid if the witness order changes. The Rust SDK again defers the resolution of these indexes until the transaction is finalized. It handles the assignment of correct index witnesses behind the scenes, sparing you the hassle of dealing with indexing intricacies during input definition.

Another added benefit of the builder pattern is that it guards against changes once the transaction is finalized. The transactions resulting from a builder don't permit any changes to the struct that could cause the transaction ID to be modified. This eliminates the headache of calculating and storing a transaction ID for future use, only to accidentally modify the transaction later, resulting in a different transaction ID.

## Creating a custom transaction

Here is an example outlining some of the features of the transaction builders.

In this scenario, we have a predicate that holds some bridged asset with ID **bridged_asset_id**. It releases it's locked assets if the transaction sends **ask_amount** of the base asset to the **receiver** address:

```rust,ignore
{{#include ../../../examples/cookbook/src/lib.rs:custom_tx_receiver}}
```

Our goal is to create a transaction that will use our hot wallet to transfer the **ask_amount** to the **receiver** and then send the unlocked predicate assets to a second wallet that acts as our cold storage.

Let's start by instantiating a builder. Since we don't plan to deploy a contract, the `ScriptTransactionBuilder` is the appropriate choice:

```rust,ignore
{{#include ../../../examples/cookbook/src/lib.rs:custom_tx}}
```

Next, we need to define transaction inputs of the base asset that sum up to **ask_amount**. We also need transaction outputs that will assign those assets to the predicate address and thereby unlock it. The methods `get_asset_inputs_for_amount` and `get_asset_outputs_for_amount` can help with that. We need to specify the asset ID, the target amount, and the target address:

```rust,ignore
{{#include ../../../examples/cookbook/src/lib.rs:custom_tx_io_base}}
```

Let's repeat the same process but this time for transferring the assets held by the predicate to our cold storage:

```rust,ignore
{{#include ../../../examples/cookbook/src/lib.rs:custom_tx_io_other}}
```

We combine all of the inputs and outputs and set them on the builder:

```rust,ignore
{{#include ../../../examples/cookbook/src/lib.rs:custom_tx_io}}
```

As we have used coins that require a signature, we have to add the signer to the transaction builder with:

```rust,ignore
{{#include ../../../examples/cookbook/src/lib.rs:custom_tx_add_signer}}
```

> **Note** The signature is not created until the transaction is finalized with `build(&provider)`

We need to do one more thing before we stop thinking about transaction inputs. Executing the transaction also incurs a fee that is paid with the base asset. Our base asset inputs need to be large enough so that the total amount covers the transaction fee and any other operations we are doing. The `ViewOnlyAccount` trait lets us use `adjust_for_fee()` for adjusting the transaction inputs if needed to cover the fee. The second argument to `adjust_for_fee()` is the total amount of the base asset that we expect our transaction to spend regardless of fees. In our case, this is the **ask_amount** we are transferring to the predicate.

```rust,ignore
{{#include ../../../examples/cookbook/src/lib.rs:custom_tx_adjust}}
```

> **Note** It is recommended to add signers before calling `adjust_for_fee()` as the estimation will include the size of the witnesses.

We can also define transaction policies. For example, we can set the maturity and expiration with:

```rust,ignore
{{#include ../../../examples/cookbook/src/lib.rs:custom_tx_policies}}
```

Our builder needs a signature from the hot wallet to unlock its coins before we call `build()` and submit the resulting transaction through the provider:

```rust,ignore
{{#include ../../../examples/cookbook/src/lib.rs:custom_tx_build}}
```

Finally, we verify the transaction succeeded and that the cold storage indeed holds the bridged asset now:

```rust,ignore
{{#include ../../../examples/cookbook/src/lib.rs:custom_tx_verify}}
```

## Building a transaction without signatures

If you need to build the transaction without signatures, which is useful when estimating transaction costs or simulations, you can change the build strategy used:

```rust,ignore
{{#include ../../../e2e/tests/contracts.rs:tb_no_signatures_strategy}}
```

> **Note** In contrast to adding signers to a transaction builder, when signing a built transaction, you must ensure that the order of signatures matches the order of signed inputs. Multiple signed inputs with the same owner will have the same witness index.


================================================
FILE: docs/src/debugging/decoding-script-transactions.md
================================================
# Decoding script transactions

The SDK offers some tools that can help you make fuel script transactions more
human readable. You can determine whether the script transaction is:

* calling a contract method(s),
* is a loader script and you can see the blob id
* is neither of the above

In the case of contract call(s), if you have the ABI file, you can also decode
the arguments to the function by making use of the `AbiFormatter`:

```rust,ignore
{{#include ../../../examples/contracts/src/lib.rs:decoding_script_transactions}}
```

prints:

```text
The script called: initialize_counter(42)
```

The `AbiFormatter` can also decode configurables, refer to the rust docs for
more information.


================================================
FILE: docs/src/debugging/function-selector.md
================================================
# Function selector

Whenever you call a contract method the SDK will generate a function selector according to the fuel specs which will be
used by the node to identify which method we wish to execute.

If, for whatever reason, you wish to generate the function selector yourself you can do so:

```rust,ignore
{{#include ../../../examples/debugging/src/lib.rs:example_fn_selector}}
```


================================================
FILE: docs/src/debugging/index.md
================================================
# Debugging

> **note** This section is still a work in progress.

- [The Function Selector](./function-selector.md)


================================================
FILE: docs/src/deploying/configurable-constants.md
================================================
# Configurable constants

In Sway, you can define `configurable` constants which can be changed during the contract deployment in the SDK. Here is an example how the constants are defined.

```rust,ignore
{{#include ../../../e2e/sway/contracts/configurables/src/main.sw}}
```

Each of the configurable constants will get a dedicated `with` method in the SDK. For example, the constant `STR_4` will get the `with_STR_4` method which accepts the same type as defined in the contract code. Below is an example where we chain several `with` methods and deploy the contract with the new constants.

```rust,ignore
{{#include ../../../e2e/tests/configurables.rs:contract_configurables}}
```


================================================
FILE: docs/src/deploying/index.md
================================================
# Deploying contracts

There are two main ways of working with contracts in the SDK: deploying a contract with SDK or using the SDK to interact with existing contracts.

## Deploying a contract binary

<!-- This section should explain the artifacts produced by `forc build`  -->
<!-- build:example:start -->
Once you've written a contract in Sway and compiled it with `forc build`, you'll have in your hands two important artifacts: the compiled binary file and the JSON ABI file.
<!-- build:example:end -->
> Note: Read [here](https://docs.fuel.network/guides/quickstart/) for more on how to work with Sway.

Below is how you can deploy your contracts using the SDK. For more details about each component in this process, read [The abigen macro](../abigen/the-abigen-macro.md), [The FuelVM binary file](./the-fuelvm-binary-file.md), and [The JSON ABI file](../abigen/the-json-abi-file.md).

<!-- This section should explain how to load and deploy a contract  -->
<!-- deploy:example:start -->
First, the `Contract::load_from` function is used to load a contract binary with a `LoadConfiguration`. If you are only interested in a single instance of your contract, use the default configuration: `LoadConfiguration::default()`. After the contract binary is loaded, you can use the `deploy()` method to deploy the contract to the blockchain.
<!-- deploy:example:end -->

```rust,ignore
{{#include ../../../examples/contracts/src/lib.rs:deploy_contract}}
```

Alternatively, you can use `LoadConfiguration` to configure how the contract is loaded. `LoadConfiguration` let's you:

- Load the same contract binary with `Salt` to get a new `contract_id`
- Change the contract's storage slots
- Update the contract's configurables

> Note: The next section will give more information on how `configurables` can be used.

Additionally, you can set custom `TxParameters` when deploying the loaded contract.

```rust,ignore
{{#include ../../../examples/contracts/src/lib.rs:deploy_with_parameters}}
```

After the contract is deployed, you can use the contract's methods like this:

```rust,ignore
{{#include ../../../examples/contracts/src/lib.rs:use_deployed_contract}}
```

> Note: When redeploying an existing `Contract`, ensure that you initialize it with a unique salt to prevent deployment failures caused by a contract ID collision. To accomplish this, utilize the `with_salt` method to clone the existing `Contract` with a new salt.


================================================
FILE: docs/src/deploying/interacting-with-contracts.md
================================================
# Interacting with contracts

If you already have a deployed contract and want to call its methods using the SDK, but without deploying it again, all you need is the contract ID of your deployed contract. You can skip the whole deployment setup and call `::new(contract_id, wallet)` directly. For example:

```rust,ignore
{{#include ../../../examples/contracts/src/lib.rs:deployed_contracts}}
```


================================================
FILE: docs/src/deploying/large_contracts.md
================================================
# Deploying Large Contracts

If your contract exceeds the size limit for a single deployment:

```rust,ignore
{{#include ../../../examples/contracts/src/lib.rs:show_contract_is_too_big}}
```

you can deploy it in segments using a partitioned approach:

```rust,ignore
{{#include ../../../examples/contracts/src/lib.rs:deploy_via_loader}}
```

When you convert a standard contract into a loader contract, the following changes occur:

* The original contract code is replaced with the loader contract code.
* The original contract code is split into blobs, which will be deployed via blob transactions before deploying the contract itself.
* The new loader code, when invoked, loads these blobs into memory and executes your original contract.

After deploying the loader contract, you can interact with it just as you would with a standard contract:

```rust,ignore
{{#include ../../../examples/contracts/src/lib.rs:use_loader}}
```

A helper function is available to deploy your contract normally if it is within the size limit, or as a loader contract if it exceeds the limit:

```rust,ignore
{{#include ../../../examples/contracts/src/lib.rs:auto_convert_to_loader}}
```

You also have the option to separate the blob upload from the contract deployment for more granular control:

```rust,ignore
{{#include ../../../examples/contracts/src/lib.rs:upload_blobs_then_deploy}}
```

Alternatively, you can manually split your contract code into blobs and then create and deploy a loader:

```rust,ignore
{{#include ../../../examples/contracts/src/lib.rs:manual_blobs_then_deploy}}
```

Or you can upload the blobs yourself and proceed with just the loader deployment:

```rust,ignore
{{#include ../../../examples/contracts/src/lib.rs:manual_blob_upload_then_deploy}}
```

## Blob Size Considerations

The size of a Blob transaction is constrained by three factors:

<!--Needed to disable lints because the multiline ordered list is messing with the linter. It keeps suggesting that each item is a start of a new list.-->
<!-- markdownlint-disable -->
1. The maximum size of a single transaction:

```rust,ignore
{{#include ../../../examples/contracts/src/lib.rs:show_max_tx_size}}
```

2. The maximum gas usage for a single transaction:

```rust,ignore
{{#include ../../../examples/contracts/src/lib.rs:show_max_tx_gas}}
```

3. The maximum HTTP body size accepted by the Fuel node.

To estimate an appropriate size for your blobs, you can run:

```rust,ignore
{{#include ../../../examples/contracts/src/lib.rs:estimate_max_blob_size}}
```
<!-- markdownlint-restore -->

However, keep in mind the following limitations:

* The estimation only considers the maximum transaction size, not the max gas usage or HTTP body limit.
* It does not account for any size increase that may occur after the transaction is funded.

Therefore, it is advisable to make your blobs a few percent smaller than the estimated maximum size.


================================================
FILE: docs/src/deploying/storage-slots.md
================================================
# Overriding storage slots

If you use storage in your contract, the default storage values will be generated in a JSON file (e.g. `my_contract-storage_slots.json`) by the Sway compiler. These are loaded automatically for you when you load a contract binary. If you wish to override some of the defaults, you need to provide the corresponding storage slots manually:

```rust,ignore
{{#include ../../../examples/contracts/src/lib.rs:storage_slots_override}}
```

If you don't have the slot storage file (`my_contract-storage_slots.json` example from above) for some reason, or you don't wish to load any of the default values, you can disable the auto-loading of storage slots:

```rust,ignore
{{#include ../../../examples/contracts/src/lib.rs:storage_slots_disable_autoload}}
```


================================================
FILE: docs/src/deploying/the-fuelvm-binary-file.md
================================================
# The FuelVM binary file

The command `forc build` compiles your Sway code and generates the bytecode: the binary code that the Fuel Virtual Machine will interpret. For instance, the smart contract below:

```Rust
contract;

abi MyContract {
    fn test_function() -> bool;
}

impl MyContract for Contract {
    fn test_function() -> bool {
        true
    }
}
```

After `forc build`, will have a binary file that contains:

```terminal
$ cat out/release/my-test.bin
G4]�]D`I]C�As@
           6]C�$@!QK%
```

This seems very unreadable! But, `forc` has a nice interpreter for this bytecode: `forc parse-bytecode`, which will interpret that binary data and output the equivalent FuelVM assembly:

```terminal
$ forc parse-bytecode out/release/my-test.bin
half-word   byte   op                raw           notes
        0   0      JI(4)             90 00 00 04   jump to byte 16
        1   4      NOOP              47 00 00 00
        2   8      Undefined         00 00 00 00   data section offset lo (0)
        3   12     Undefined         00 00 00 34   data section offset hi (52)
        4   16     LW(63, 12, 1)     5d fc c0 01
        5   20     ADD(63, 63, 12)   10 ff f3 00
        6   24     LW(17, 6, 73)     5d 44 60 49
        7   28     LW(16, 63, 1)     5d 43 f0 01
        8   32     EQ(16, 17, 16)    13 41 14 00
        9   36     JNZI(16, 11)      73 40 00 0b   conditionally jump to byte 44
       10   40     RVRT(0)           36 00 00 00
       11   44     LW(16, 63, 0)     5d 43 f0 00
       12   48     RET(16)           24 40 00 00
       13   52     Undefined         00 00 00 00
       14   56     Undefined         00 00 00 01
       15   60     Undefined         00 00 00 00
       16   64     XOR(20, 27, 53)   21 51 bd 4b
```

If you want to deploy your smart contract using the SDK, this binary file is important; it's what we'll be sending to the FuelVM in a transaction.


================================================
FILE: docs/src/getting-started.md
================================================
# Getting Started

## Installation Guide

Please visit the Fuel [installation guide](https://docs.fuel.network/guides/installation) to install the Fuel toolchain binaries and prerequisites.

`forc` is Sway equivalent of Rust's `cargo`. `fuel-core` is a Fuel full node implementation.

There are two main ways you can use the Fuel Rust SDK:

1. Creating a new Sway project with `forc` and running the tests
2. Creating a standalone project and importing the `fuels-rs` crate

## Creating a new project with Forc

You can create a new Sway project with

```shell
forc new <Project name>
```

Or you can initialize a project within an existing folder with

```shell
forc init
```

### Adding a Rust integration test to the Sway project

Now that we have a new project, we can add a Rust integration test using a `cargo generate` template.
If `cargo generate` is not already installed, you can install it with:

<!-- This section should have the command to install cargo generate -->
<!-- cargo_gen_install:example:start -->
```shell
cargo install cargo-generate
```
<!-- cargo_gen_install:example:end -->

> **Note** You can learn more about cargo generate by visiting its [repository](https://github.com/cargo-generate/cargo-generate).

Let's generate the default test harness with the following command:

<!-- This section should have the command to cargo generate a test harness -->
<!-- cargo_gen:example:start -->
```shell
cargo generate --init fuellabs/sway templates/sway-test-rs --name <Project name> --force
```
<!-- cargo_gen:example:end -->

<!-- This section should explain the `--force` flag -->
<!-- force_flag:example:start -->
`--force` forces your `--name` input to retain your desired casing for the `{{project-name}}` placeholder in the template. Otherwise, `cargo-generate` automatically converts it to kebab-case. With `--force`, this means that both `my_fuel_project` and `my-fuel-project` are valid project names, depending on your needs.
<!-- force_flag:example:end -->

Before running test, we need to build the Sway project with:

```shell
forc build
```

Afterwards, we can run the test with:

<!-- This section should have the command to run a test -->
<!-- run_test:example:start -->
```shell
cargo test
```
<!-- run_test:example:end -->

> **Note** If you need to capture output from the tests, use one of the following commands:

<!-- This section should have the command to run a test with no capture -->
<!-- run_test_nocap:example:start -->
```shell
cargo test -- --nocapture
```
<!-- run_test_nocap:example:end -->

## Importing the Fuel Rust SDK

Add these dependencies on your `Cargo.toml`:

```toml
fuels = "0.66.0"
```

> **Note** We're using version `0.66.0` of the SDK, which is the latest version at the time of this writing.

And then, in your Rust file that's going to make use of the SDK:

```rust,ignore
use fuels::prelude::*;
```

## The Fuel Rust SDK source code

Another way to experience the SDK is to look at the source code. The `e2e/tests/` folder is full of integration tests that go through almost all aspects of the SDK.

> **Note** Before running the tests, we need to build all the Sway test projects. The file `packages/fuels/Forc.toml` contains a `[workspace], which members are the paths to all integration tests.
> To build these tests, run the following command:

```shell
forc build --release --path e2e
```

> `forc` can also be used to clean and format the test projects. Check the `help` output for more info.

After building the projects, we can run the tests with

```shell
cargo test
```

If you need all targets and all features, you can run

```shell
cargo test --all-targets --all-features
```

> **Note** If you need to capture output from the tests, you can run

```shell
cargo test -- --nocapture
```

## More in-depth Fuel and Sway knowledge

Read [The Sway Book](https://docs.fuel.network/docs/sway/) for more in-depth knowledge about Sway, the official smart contract language for the Fuel Virtual Machine.


================================================
FILE: docs/src/glossary.md
================================================
# Glossary

## Contract

<!-- This section should define a contract -->
<!-- rs_contract:example:start -->

A contract, in the SDK, is an abstraction that represents a connection to a specific smart contract deployed on the Fuel Network. This contract instance can be used as a regular Rust object, with methods attached to it that reflect those in its smart contract equivalent.

<!-- rs_contract:example:end -->

## Provider

<!-- This section should define a provider -->
<!-- rs_provider:example:start -->

A Provider is a struct that provides an abstraction for a connection to a Fuel node. It provides read-only access to the node. You can use this provider as-is or through the wallet.

<!-- rs_provider:example:end -->


================================================
FILE: docs/src/index.md
================================================
# The Fuel Rust SDK

<!-- This section should explain what the Fuel Rust SDK can be used for -->
<!-- fuels_rs:example:start -->
The Fuel Rust SDK can be used for a variety of things, including:

- Compiling, deploying, and testing [Sway](https://github.com/FuelLabs/sway) contracts
- Using the testnet or running a local Fuel node
- Crafting and signing transactions with hand-crafted scripts or contract calls
- Generating type-safe Rust bindings of contract ABI methods
<!-- fuels_rs:example:end -->

This book is an overview of the different things one can achieve using the Rust SDK, and how to implement them. Keep in mind that both the SDK and the documentation are works-in-progress!


================================================
FILE: docs/src/predicates/index.md
================================================
# Predicates

Predicates, in Sway, are programs that return a Boolean value and do not have any side effects (they are pure). A predicate address can own assets. The predicate address is generated from the compiled byte code and is the same as the `P2SH` address used in Bitcoin. Users can seamlessly send assets to the predicate address as they do for any other address. To spend the predicate funds, the user has to provide the original `byte code` of the predicate together with the `predicate data`. The `predicate data` will be used when executing the `byte code`, and the funds can be transferred if the predicate is validated successfully.

## Instantiating predicates

Let's consider the following predicate example:

```rust,ignore
{{#include ../../../e2e/sway/predicates/basic_predicate/src/main.sw}}
```

We will look at a complete example of using the SDK to send and receive funds from a predicate.

First, we set up the wallets and a node instance. The call to the `abigen!` macro will generate all the types specified in the predicate plus two custom structs:

- an encoder with an `encode_data`  function that will conveniently encode all the arguments of the main function for us.
- a configurables struct which holds methods for setting all the configurables mentioned in the predicate

> Note: The `abigen!` macro will append `Encoder` and `Configurables` to the predicate's `name` field. Fox example, `name="MyPredicate"` will result in two structs called `MyPredicateEncoder` and `MyPredicateConfigurables`.

```rust,ignore
{{#include ../../../examples/predicates/src/lib.rs:predicate_data_setup}}
```

Once we've compiled our predicate with `forc build`, we can create a `Predicate` instance via `Predicate::load_from`. The resulting data from `encode_data` can then be set on the loaded predicate.

```rust,ignore
{{#include ../../../examples/predicates/src/lib.rs:with_predicate_data}}
```

Next, we lock some assets in this predicate using the first wallet:

```rust,ignore
{{#include ../../../examples/predicates/src/lib.rs:predicate_data_lock_amount}}
```

Then we can transfer assets owned by the predicate via the [Account](../accounts.md) trait:

```rust,ignore
{{#include ../../../examples/predicates/src/lib.rs:predicate_data_unlock}}
```

## Configurable constants

Same as contracts and scripts, you can define configurable constants in `predicates`, which can be changed during the predicate execution. Here is an example of how the constants are defined.

```rust,ignore
{{#include ../../../e2e/sway/predicates/predicate_configurables/src/main.sw:predicate_configurables}}
```

Each configurable constant will get a dedicated `with` method in the SDK. For example, the constant `U8` will get the `with_U8` method which accepts the same type defined in sway. Below is an example where we chain several `with` methods and update the predicate with the new constants.

```rust,ignore
{{#include ../../../e2e/tests/predicates.rs:predicate_configurables}}
```


================================================
FILE: docs/src/predicates/send-spend-predicate.md
================================================
# Signatures in predicates example

This is a more involved example where the predicate accepts three signatures and matches them to three predefined public keys. The `ec_recover_address` function is used to recover the public key from the signatures. If two of the three extracted public keys match the predefined public keys, the funds can be spent. Note that the signature order has to match the order of the predefined public keys.

```rust,ignore
{{#include ../../../e2e/sway/predicates/signatures/src/main.sw}}
```

Let's use the SDK to interact with the predicate. First, let's create three signers with specific keys. Their hashed public keys are already hard-coded in the predicate. Then we create the receiver signer, which we will use to spend the predicate funds.

```rust,ignore
{{#include ../../../examples/predicates/src/lib.rs:predicate_signers}}
```

Next, let's add some coins, start a provider and create the wallets.

```rust,ignore
{{#include ../../../examples/predicates/src/lib.rs:predicate_coins}}
```

Now we can use the predicate abigen to create a predicate encoder instance for us. To spend the funds now locked in the predicate, we must provide two out of three signatures whose public keys match the ones we defined in the predicate. In this example, the signatures are generated from an array of zeros.

```rust,ignore
{{#include ../../../examples/predicates/src/lib.rs:predicate_load}}
```

Next, we transfer some assets from a wallet to the created predicate. We also confirm that the funds are indeed transferred.

```rust,ignore
{{#include ../../../examples/predicates/src/lib.rs:predicate_receive}}
```

We can use the `transfer` method from the [Account](../accounts.md) trait to transfer the assets. If the predicate data is correct, the `receiver` wallet will get the funds, and we will verify that the amount is correct.

```rust,ignore
{{#include ../../../examples/predicates/src/lib.rs:predicate_spend}}
```


================================================
FILE: docs/src/preuploading-code.md
================================================
# Pre-uploading code

If you have a script or predicate that is larger than normal or which you plan
on calling often, you can pre-upload its code as a blob to the network and run a
loader script/predicate instead. The loader can be configured with the
script/predicate configurables, so you can change how the script/predicate is
configured on each run without having large transactions due to the code
duplication.

## Scripts

A high level pre-upload:

```rust,ignore
{{#include ../../e2e/tests/scripts.rs:preload_high_level}}
```

The upload of the blob is handled inside of the `convert_into_loader` method. If you
want more fine-grained control over it, you can create the script transaction
manually:

```rust,ignore
{{#include ../../e2e/tests/scripts.rs:preload_low_level}}
```

## Predicates

You can prepare a predicate for pre-uploading without doing network requests:

```rust,ignore
{{#include ../../e2e/tests/predicates.rs:preparing_the_predicate}}
```

Once you want to execute the predicate, you must beforehand upload the blob
containing its code:

```rust,ignore
{{#include ../../e2e/tests/predicates.rs:uploading_the_blob}}
```

By pre-uploading the predicate code, you allow for cheaper calls to the predicate
from subsequent callers.


================================================
FILE: docs/src/reference.md
================================================
# API Reference

For a more in-depth look at the APIs provided by the Fuel Rust SDK, head over to the [official documentation](https://docs.rs/fuels/latest/fuels/). In the actual Rust docs, you can see the most up-to-date information about the API, which is synced with the code as it changes.


================================================
FILE: docs/src/running-scripts.md
================================================
# Running scripts

You can run a script using its JSON-ABI and the path to its binary file. You can run the scripts with arguments. For this, you have to use the `abigen!` macro seen [previously](./abigen/the-abigen-macro.md).

```rust,ignore
{{#include ../../e2e/tests/scripts.rs:script_with_arguments}}
```

Furthermore, if you need to separate submission from value retrieval for any reason, you can do so as follows:

```rust,ignore
{{#include ../../e2e/tests/scripts.rs:submit_response_script}}
```

## Running scripts with transaction policies

The method for passing transaction policies is the same as [with contracts](./calling-contracts/tx-policies.md). As a reminder, the workflow would look like this:

```rust,ignore
{{#include ../../e2e/tests/scripts.rs:script_with_tx_policies}}
```

## Custom inputs and outputs

If you need to add specific inputs and outputs to script calls, you can use the `with_inputs` and `with_outputs` methods.

```rust,ignore
{{#include ../../e2e/tests/scripts.rs:script_custom_inputs_outputs}}
```

> **Note:** if custom inputs include coins that need to be signed, use the `add_signer` method to add the appropriate signer.

## Logs

Script calls provide the same logging functions, `decode_logs()` and `decode_logs_with_type<T>()`, as contract calls. As a reminder, the workflow looks like this:

```rust,ignore
{{#include ../../e2e/tests/logs.rs:script_logs}}
```

## Calling contracts from scripts

Scripts use the same interfaces for setting external contracts as [contract methods](./calling-contracts/other-contracts.md).

Below is an example that uses `with_contracts(&[&contract_instance, ...])`.

```rust,ignore
{{#include ../../e2e/tests/logs.rs:external_contract}}
```

And this is an example that uses `with_contract_ids(&[&contract_id, ...])`.

```rust,ignore
{{#include ../../e2e/tests/logs.rs:external_contract_ids}}
```

## Configurable constants

Same as contracts, you can define `configurable` constants in `scripts` which can be changed during the script execution. Here is an example how the constants are defined.

```rust,ignore
{{#include ../../e2e/sway/scripts/script_configurables/src/main.sw}}
```

Each configurable constant will get a dedicated `with` method in the SDK. For example, the constant `STR_4` will get the `with_STR_4` method which accepts the same type defined in sway. Below is an example where we chain several `with` methods and execute the script with the new constants.

```rust,ignore
{{#include ../../e2e/tests/configurables.rs:script_configurables}}
```


================================================
FILE: docs/src/testing/basics.md
================================================
# Testing Basics

If you're new to Rust, you'll want to review these important tools to help you build tests.

## The `assert!` macro

<!-- This section should explain the `assert!` macro -->
<!-- assert:example:start -->

You can use the `assert!` macro to assert certain conditions in your test. This macro invokes `panic!()` and fails the test if the expression inside evaluates to `false`.

<!-- assert:example:end -->

<!-- This section should show an example of the `assert!` macro -->
<!-- assert_code:example:start -->

```rust, ignore
assert!(value == 5);
```

<!-- assert_code:example:end -->

## The `assert_eq!` macro

<!-- This section should show an example of the `assert_eq!` macro -->
<!-- assert_eq:example:start -->

The `assert_eq!` macro works a lot like the `assert` macro, however instead it accepts two values, and panics if those values are not equal.

<!-- assert_eq:example:end -->

<!-- This section should show an example of the `assert_eq!` macro -->
<!-- assert_eq_code:example:start -->

```rust, ignore
assert_eq!(balance, 100);
```

<!-- assert_eq_code:example:end -->

## The `assert_ne!` macro

<!-- This section should show an example of the `assert_ne!` macro -->
<!-- assert_ne:example:start -->

The `assert_ne!` macro works just like the `assert_eq!` macro, but it will panic if the two values are equal.

<!-- assert_ne:example:end -->

<!-- This section should show an example of the `assert_ne!` macro -->
<!-- assert_ne_code:example:start -->

```rust, ignore
assert_ne!(address, 0);
```

<!-- assert_ne_code:example:end -->

## The `println!` macro

<!-- This section should explain how the `println!` macro can be used in tests -->
<!--print_ln:example:start -->

You can use the `println!` macro to print values to the console.

<!--print_ln:example:end -->

<!-- This section should show an example of the `println!` macro -->
<!--print_ln_code:example:start -->

```rust, ignore
println!("WALLET 1 ADDRESS {}", wallet_1.address());
println!("WALLET 1 ADDRESS {:?}", wallet_1.address());
```

<!--print_ln_code:example:end -->

<!-- This section should explain how `{}` and `{:?}` are used in the `println!` macro -->
<!--print_ln_2:example:start -->

Using `{}` will print the value, and using `{:?}` will print the value plus its type.

Using `{:?}` will also allow you to print values that do not have the `Display` trait implemented but do have the `Debug` trait. Alternatively you can use the `dbg!` macro to print these types of variables.

<!--print_ln_2:example:end -->

<!-- This section should show an example of the `println!` and `dbg` macros -->
<!--print_ln_dbg_code:example:start -->

```rust, ignore
println!("WALLET 1 PROVIDER {:?}", wallet_1.provider());
dbg!("WALLET 1 PROVIDER {}", wallet_1.provider());
```

<!--print_ln_dbg_code:example:end -->

<!-- This section should explain how implement custom fmt -->
<!--fmt:example:start -->

To print more complex types that don't have it already, you can implement your own formatted display method with the `fmt` module from the Rust standard library.

<!--fmt:example:end -->

<!-- This section should show a code example of how implement custom fmt -->
<!--fmt_code:example:start -->

```rust, ignore
use std::fmt;

struct Point {
    x: u64,
    y: u64,
}

// add print functionality with the fmt module
impl fmt::Display for Point {
    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
        write!(f, "value of x: {}, value of y: {}", self.x, self.y)
    }
}

let p = Point {x: 1, y: 2};
println!("POINT: {}", p);
```

<!--fmt_code:example:end -->

## Run Commands

You can run your tests to see if they pass or fail with

```shell
cargo test
```

<!-- This section should when outputs are hidden and what the `nocapture` flag does -->
<!--outputs:example:start -->

Outputs will be hidden if the test passes. If you want to see outputs printed from your tests regardless of whether they pass or fail, use the `nocapture` flag.

<!--outputs:example:end -->

```shell
cargo test -- --nocapture
```


================================================
FILE: docs/src/testing/chains.md
================================================
# Increasing the block height

You can use `produce_blocks` to help achieve an arbitrary block height; this is useful when you want to do any testing regarding transaction maturity.

> **Note**: For the `produce_blocks` API to work, it is imperative to have `manual_blocks_enabled = true` in the config for the running node. See example below.

```rust,ignore
{{#include ../../../e2e/tests/providers.rs:use_produce_blocks_to_increase_block_height}}
```

You can also set a custom block time as the second, optional argument. Here is an example:

```rust,ignore
{{#include ../../../e2e/tests/providers.rs:use_produce_blocks_custom_time}}
```


================================================
FILE: docs/src/testing/index.md
================================================
# `fuels-rs` Testing

> **note** This section is still a work in progress.

- [Testing Basics](./basics.md)
- [`setup_program_test!` Macro](./the-setup-program-test-macro.md)
- [Tweaking the Blockchain](./chains.md)


================================================
FILE: docs/src/testing/the-setup-program-test-macro.md
================================================
# The setup_program_test! macro

When deploying contracts with the `abigen!` macro, as shown in the previous sections, the user can:

- change the default configuration parameters
- launch several providers
- create multiple wallets
- create specific assets, etc.

However, it is often the case that we want to quickly set up a test with default values and work directly with contract or script instances. The `setup_program_test!` can do exactly that.

---

Used to reduce boilerplate in integration tests. Accepts input in the form
of `COMMAND(ARG...)...`

`COMMAND` is either `Wallets`, `Abigen`, `LoadScript` or `Deploy`.

`ARG` is either a:

- name-value (e.g. `name="MyContract"`), or,
- a literal (e.g. `"some_str_literal"`, `true`, `5`, ...)
- a sub-command (e.g. `Abigen(Contract(name="MyContract", project="some_project"))`)

Available `COMMAND`s:

## Options

Example: `Options(profile="debug")`

Description: Sets options from `ARG`s to be used by other `COMMAND`s.

Available options:

- `profile`: sets the `cargo` build profile. Variants: `"release"` (default),  `"debug"`

Cardinality: 0 or 1.

## Wallets

Example: `Wallets("a_wallet", "another_wallet"...)`

Description: Launches a local provider and generates wallets with names taken from the provided `ARG`s.

Cardinality: 0 or 1.

## Abigen

Example:

```rust,ignore
Abigen(
    Contract(
        name = "MyContract",
        project = "some_folder"
    ),
    Script(
        name = "MyScript",
        project = "some_folder"
    ),
    Predicate(
        name = "MyPredicate",
        project = "some_folder"
    ),
)
```

Description: Generates the program bindings under the name `name`. `project` should point to root of the `forc` project. The project must be compiled in `release` mode (`--release` flag) for `Abigen` command to work.

Cardinality: 0 or N.

## Deploy

Example: `Deploy(name="instance_name", contract="MyContract", wallet="a_wallet")`

Description: Deploys the `contract` (with salt) using `wallet`. Will create a contract instance accessible via `name`. Due to salt usage, the same contract can be deployed multiple times. Requires that an `Abigen` command be present with `name` equal to `contract`. `wallet` can either be one of the wallets in the `Wallets` `COMMAND` or the name of a wallet you've previously generated yourself.

Cardinality: 0 or N.

## `LoadScript`

Example: `LoadScript(name = "script_instance", script = "MyScript", wallet = "wallet")`

Description: Creates a script instance of `script` under `name` using `wallet`.

Cardinality: 0 or N.

---

The setup code that you have seen in previous sections gets reduced to:

```rust,ignore
{{#include ../../../examples/contracts/src/lib.rs:deploy_contract_setup_macro_short}}
```

> **Note** The same contract can be deployed several times as the macro deploys the contracts with salt. You can also deploy different contracts to the same provider by referencing the same wallet in the `Deploy` command.

```rust,ignore
{{#include ../../../e2e/tests/contracts.rs:contract_setup_macro_multi}}
```

In this example, three contracts are deployed on the same provider using the `wallet` generated by the `Wallets` command. The second and third macros use the same contract but have different IDs because of the deployment with salt. Both of them can call the first contract by using their ID.

In addition, you can manually create the `wallet` variable and then use it inside the macro. This is useful if you want to create custom wallets or providers but still want to use the macro to reduce boilerplate code. Below is an example of this approach.

```rust,ignore
{{#include ../../../e2e/tests/contracts.rs:contract_setup_macro_manual_wallet}}
```


================================================
FILE: docs/src/types/B512.md
================================================
# `B512`

In the Rust SDK, the `B512` definition matches the Sway standard library type with the same name and will be converted accordingly when interacting with contracts:

```rust,ignore
{{#include ../../../packages/fuels-core/src/types/core/bits.rs:b512}}
```

Here's an example:

```rust,ignore
{{#include ../../../e2e/tests/types_contracts.rs:b512_example}}
```


================================================
FILE: docs/src/types/address.md
================================================
# `Address`

Like `Bytes32`, `Address` is a wrapper on `[u8; 32]` with similar methods and implements the same traits (see [fuel-types documentation](https://docs.rs/fuel-types/latest/fuel_types/struct.Address.html)).

These are the main ways of creating an `Address`:

```rust,ignore
{{#include ../../../examples/types/src/lib.rs:address}}
```


================================================
FILE: docs/src/types/asset-id.md
================================================
# `AssetId`

Like `Bytes32`, `AssetId` is a wrapper on `[u8; 32]` with similar methods and implements the same traits (see [fuel-types documentation](https://docs.rs/fuel-types/0.49.0/fuel_types/struct.AssetId.html)).

These are the main ways of creating an `AssetId`:

```rust,ignore
{{#include ../../../examples/types/src/lib.rs:asset_id}}
```


================================================
FILE: docs/src/types/bits256.md
================================================
# `Bits256`

In Fuel, a type called `b256` represents hashes and holds a 256-bit value. The Rust SDK represents `b256` as `Bits256(value)` where `value` is a `[u8; 32]`. If your contract method takes a `b256` as input, you must pass a `Bits256([u8; 32])` when calling it from the SDK.

Here's an example:

```rust,ignore
{{#include ../../../e2e/tests/types_contracts.rs:256_arg}}
```

If you have a hexadecimal value as a string and wish to convert it to `Bits256`, you may do so with `from_hex_str`:

```rust,ignore
{{#include ../../../packages/fuels-core/src/types/core/bits.rs:from_hex_str}}
```


================================================
FILE: docs/src/types/bytes.md
================================================
# `Bytes`

In Fuel, a type called `Bytes` represents a collection of tightly-packed bytes. The Rust SDK represents `Bytes` as `Bytes(Vec<u8>)`. Here's an example of using `Bytes` in a contract call:

```rust,ignore
{{#include ../../../e2e/tests/types_contracts.rs:bytes_arg}}
```

If you have a hexadecimal value as a string and wish to convert it to `Bytes`, you may do so with `from_hex_str`:

```rust,ignore
{{#include ../../../packages/fuels-core/src/types/core/bytes.rs:bytes_from_hex_str}}
```


================================================
FILE: docs/src/types/bytes32.md
================================================
# `Bytes32`

In Sway and the FuelVM, `Bytes32` represents hashes. They hold a 256-bit (32-byte) value. `Bytes32` is a wrapper on a 32-sized slice of `u8`: `pub struct Bytes32([u8; 32]);`.

These are the main ways of creating a `Bytes32`:

```rust,ignore
{{#include ../../../examples/types/src/lib.rs:bytes32}}
```

`Bytes32` also implements the `fmt` module's `Debug`, `Display`, `LowerHex` and `UpperHex` traits. For example, you can get the display and hex representations with:

```rust,ignore
{{#include ../../../examples/types/src/lib.rs:bytes32_format}}
```

For a full list of implemented methods and traits, see the [fuel-types documentation](https://docs.rs/fuel-types/latest/fuel_types/struct.Bytes32.html).

> **Note:** In Fuel, there's a special type called `b256`, which is similar to `Bytes32`; also used to represent hashes, and it holds a 256-bit value. In Rust, through the SDK, this is represented as `Bits256(value)` where `value` is a `[u8; 32]`. If your contract method takes a `b256` as input, all you need to do is pass a `Bits256([u8; 32])` when calling it from the SDK.


================================================
FILE: docs/src/types/contract-id.md
================================================
# `ContractId`

Like `Bytes32`, `ContractId` is a wrapper on `[u8; 32]` with similar methods and implements the same traits (see [fuel-types documentation](https://docs.rs/fuel-types/0.49.0/fuel_types/struct.ContractId.html)).

These are the main ways of creating a `ContractId`:

```rust,ignore
{{#include ../../../examples/types/src/lib.rs:contract_id}}
```


================================================
FILE: docs/src/types/conversion.md
================================================
# Converting Types

Below you can find examples for common type conversions:

- [Convert Between Native Types](#convert-between-native-types)
- [Convert to `Bytes32`](#convert-to-bytes32)
- [Convert to `Address`](#convert-to-address)
- [Convert to `ContractId`](#convert-to-contractid)
- [Convert to `Identity`](#convert-to-identity)
- [Convert to `AssetId`](#convert-to-assetid)
- [Convert to `str`](#convert-to-str)
- [Convert to `Bits256`](#convert-to-bits256)
- [Convert to `Bytes`](#convert-to-bytes)
- [Convert to `B512`](#convert-to-b512)
- [Convert to `EvmAddress`](#convert-to-evmaddress)

## Convert Between Native Types

You might want to convert between the native types (`Bytes32`, `Address`, `ContractId`, and `AssetId`). Because these types are wrappers on `[u8; 32]`, converting is a matter of dereferencing one and instantiating the other using the dereferenced value. Here's an example:

```rust,ignore
{{#include ../../../examples/types/src/lib.rs:type_conversion}}
```

## Convert to `Bytes32`

Convert a `[u8; 32]` array to `Bytes32`:

```rust,ignore
{{#include ../../../examples/types/src/lib.rs:array_to_bytes32}}
```

Convert a hex string to `Bytes32`:

```rust,ignore
{{#include ../../../examples/types/src/lib.rs:hex_string_to_bytes32}}
```

## Convert to `Address`

Convert a `[u8; 32]` array to an `Address`:

```rust,ignore
{{#include ../../../examples/types/src/lib.rs:array_to_address}}
```

Convert a wallet to an `Address`:

```rust,ignore
{{#include ../../../examples/wallets/src/lib.rs:wallet_to_address}}
```

Convert a hex string to an `Address`:

```rust,ignore
{{#include ../../../examples/types/src/lib.rs:hex_string_to_address}}
```

## Convert to `ContractId`

Convert a `[u8; 32]` array to `ContractId`:

```rust,ignore
{{#include ../../../examples/types/src/lib.rs:array_to_contract_id}}
```

Convert a hex string to a `ContractId`:

```rust,ignore
{{#include ../../../examples/types/src/lib.rs:string_to_contract_id}}
```

Convert a contract instance to a `ContractId`:

```rust,ignore
{{#include ../../../e2e/tests/logs.rs:instance_to_contract_id}}
```

## Convert to `Identity`

Convert an `Address` to an `Identity`:

```rust,ignore
{{#include ../../../examples/types/src/lib.rs:address_to_identity}}
```

Convert a `ContractId` to an `Identity`:

```rust,ignore
{{#include ../../../examples/types/src/lib.rs:contract_id_to_identity}}
```

## Convert to `AssetId`

Convert a `[u8; 32]` array to an `AssetId`:

```rust,ignore
{{#include ../../../examples/types/src/lib.rs:array_to_asset_id}}
```

Convert a hex string to an `AssetId`:

```rust,ignore
{{#include ../../../examples/types/src/lib.rs:string_to_asset_id}}
```

## Convert to `str`

Convert a `ContractId` to a `str`:

```rust,ignore
{{#include ../../../examples/types/src/lib.rs:contract_id_to_str}}
```

Convert an `Address` to a `str`:

```rust,ignore
{{#include ../../../examples/types/src/lib.rs:address_to_str}}
```

Convert an `AssetId` to a `str`:

```rust,ignore
{{#include ../../../examples/types/src/lib.rs:asset_id_to_str}}
```

Convert `Bytes32` to a `str`:

```rust,ignore
{{#include ../../../examples/types/src/lib.rs:bytes32_to_str}}
```

## Convert to `Bits256`

Convert a hex string to `Bits256`:

```rust,ignore
{{#include ../../../packages/fuels-core/src/types/core/bits.rs:hex_str_to_bits256}}
```

Convert a `ContractId` to `Bits256`:

```rust,ignore
{{#include ../../../examples/types/src/lib.rs:contract_id_to_bits256}}
```

Convert an `Address` to `Bits256`:

```rust,ignore
{{#include ../../../examples/types/src/lib.rs:address_to_bits256}}
```

Convert an `AssetId` to `Bits256`:

```rust,ignore
{{#include ../../../examples/types/src/lib.rs:asset_id_to_bits256}}
```

## Convert to `Bytes`

Convert a string to `Bytes`:

```rust,ignore
{{#include ../../../packages/fuels-core/src/types/core/bytes.rs:hex_string_to_bytes32}}
```

## Convert to `B512`

Convert two hex strings to `B512`:

```rust,ignore
{{#include ../../../e2e/tests/types_contracts.rs:b512_example}}
```

## Convert to `EvmAddress`

Convert a `Bits256` address to an `EvmAddress`:

```rust,ignore
{{#include ../../../examples/types/src/lib.rs:b256_to_evm_address}}
```


================================================
FILE: docs/src/types/custom_types.md
================================================
# Structs and enums

<!-- This section should explain how to get the custom types from a Sway program -->
<!-- custom_types:example:start -->
The structs and enums you define in your Sway code have equivalents automatically generated by the SDK's `abigen!` macro.
<!-- custom_types:example:end -->

For instance, if in your Sway code you have a struct called `CounterConfig` that looks like this:

```rust,ignore
struct CounterConfig {
  dummy: bool,
  initial_value: u64,
}
```

After using the `abigen!` macro, `CounterConfig` will be accessible in your Rust file! Here's an example:

```rust,ignore
{{#include ../../../e2e/tests/types_contracts.rs:struct_generation}}
```

You can freely use your custom types (structs or enums) within this scope. That also means passing custom types to functions and receiving custom types from function calls.

## Generics

The Fuel Rust SDK supports both generic enums and generic structs. If you're already familiar with Rust, it's your typical `struct MyStruct<T>` type of generics support.

For instance, your Sway contract could look like this:

```Rust
contract;

use std::hash::sha256;

struct SimpleGeneric<T> {
    single_generic_param: T,
}

abi MyContract {
  fn struct_w_generic(arg1: SimpleGeneric<u64>) -> SimpleGeneric<u64>;
}

impl MyContract for Contract {
    fn struct_w_generic(arg1: SimpleGeneric<u64>) -> SimpleGeneric<u64> {
        let expected = SimpleGeneric {
            single_generic_param: 123u64,
        };

        assert(arg1.single_generic_param == expected.single_generic_param);

        expected
    }
}
```

Your Rust code would look like this:

```rust,ignore
{{#include ../../../e2e/tests/types_contracts.rs:generic}}
```

### Unused generic type parameters

Sway supports unused generic type parameters when declaring structs/enums:

```Rust
struct SomeStruct<T, K> {
  field: u64
}

enum SomeEnum<T, K> {
  One: u64
}

```

If you tried the same in Rust you'd get complaints that `T` and `K` must be used or removed. When generating Rust bindings for such types we make use of the [`PhantomData`](https://doc.rust-lang.org/std/marker/struct.PhantomData.html#unused-type-parameters) type. The generated bindings for the above example would look something like this:

```Rust
struct SomeStruct<T, K> {
   pub field: u64,
   pub _unused_generic_0: PhantomData<T>
   pub _unused_generic_1: PhantomData<K>
}

enum SomeEnum<T, K> {
  One(u64),
  IgnoreMe(PhantomData<T>, PhantomData<K>)
}
```

To lessen the impact to developer experience you may use the `new` method to initialize a structure without bothering with the `PhantomData`s.:

```rust,ignore
{{#include ../../../examples/types/src/lib.rs:unused_generics_struct}}
```

If your struct doesn't have any fields we'll also derive `Default`. As for enums all `PhantomData`s are placed inside a new variant called `IgnoreMe` which you'll need to ignore in your matches:

```rust,ignore
{{#include ../../../examples/types/src/lib.rs:unused_generics_enum}}
```


================================================
FILE: docs/src/types/evm_address.md
================================================
# `EvmAddress`

In the Rust SDK, Ethereum Virtual Machine (EVM) addresses can be represented with the `EvmAddress` type. Its definition matches with the Sway standard library type with the same name and will be converted accordingly when interacting with contracts:

```rust,ignore
{{#include ../../../packages/fuels-core/src/types/core/bits.rs:evm_address}}
```

Here's an example:

```rust,ignore
{{#include ../../../e2e/tests/types_contracts.rs:evm_address_arg}}
```

> **Note:** when creating an `EvmAddress` from `Bits256`, the first 12 bytes will be cleared because an EVM address is only 20 bytes long.


================================================
FILE: docs/src/types/index.md
================================================
# Types

The FuelVM and Sway have many internal types. These types have equivalents in the SDK. This section discusses these types, how to use them, and how to convert them.


================================================
FILE: docs/src/types/string.md
================================================
# `String`

The Rust SDK represents Fuel's `String`s as `SizedAsciiString<LEN>`, where the generic parameter `LEN` is the length of a given string. This abstraction is necessary because all strings in Fuel and Sway are statically-sized, i.e., you must know the size of the string beforehand.

Here's how you can create a simple string using `SizedAsciiString`:

```rust,ignore
{{#include ../../../packages/fuels-core/src/types/core/sized_ascii_string.rs:string_simple_example}}
```

To make working with `SizedAsciiString`s easier, you can use `try_into()` to convert from Rust's `String` to `SizedAsciiString`, and you can use `into()` to convert from `SizedAsciiString` to Rust's `String`. Here are a few examples:

```rust,ignore
{{#include ../../../packages/fuels-core/src/types/core/sized_ascii_string.rs:conversion}}
```

If your contract's method takes and returns, for instance, a Sway's `str[23]`. When using the SDK, this method will take and return a `SizedAsciiString<23>`.


================================================
FILE: docs/src/types/vectors.md
================================================
# Vectors

## Passing in vectors

You can pass a Rust `std::vec::Vec` into your contract method transparently. The following code calls a Sway contract method which accepts a `Vec<SomeStruct<u32>>`.

```rust,ignore
{{#include ../../../e2e/tests/types_contracts.rs:passing_in_vec}}
```

You can use a vector just like you would use any other type -- e.g. a `[Vec<u32>; 2]` or a `SomeStruct<Vec<Bits256>>` etc.

## Returning vectors

Returning vectors from contract methods is supported transparently, with the caveat that you cannot have them nested inside another type. This limitation is temporary.

```rust,ignore
{{#include ../../../e2e/tests/types_contracts.rs:returning_vec}}
```

> **Note: you can still interact with contracts containing methods that return vectors nested inside another type, just not interact with the methods themselves**


================================================
FILE: docs/src/wallets/access.md
================================================
# Wallet Access

The kinds of operations we can perform with a `Wallet` instance depend on
whether or not the wallet has a signer attached to it.

In order to differentiate between `Wallet` instances that have a signer
and those that do not, we use the `Wallet<Unlocked<S>>` and `Wallet<Locked>` types
respectively.

## Wallet States

The `Wallet<Unlocked<S>>` type represents a wallet that has a signer. A wallet must be of type `Wallet<Unlocked<S>>` in order to perform operations that involve signing messages or transactions.

You can learn more about signing [here](./signing.md).

The `Wallet<Locked>` type represents a wallet without a signer. Instead, `Wallet<Locked>` only knows its public address. A `Wallet<Locked>` cannot be used to sign transactions, however it may still perform a whole suite of useful operations including listing transactions, assets, querying balances, and so on.

## Transitioning States

A `Wallet<Unlocked<S>>` instance can be locked using the `lock` method:

```rust,ignore
let wallet_locked = wallet_unlocked.lock();
```

## Design Guidelines

When designing APIs that accept a wallet as an input, we should think carefully
about the kind of access that we require. API developers should aim to minimise
their usage of `Wallet<Unlocked<S>>` in order to ensure signers are stored in
memory no longer than necessary to reduce the surface area for attacks and
vulnerabilities in downstream libraries and applications.


================================================
FILE: docs/src/wallets/checking-balances-and-coins.md
================================================
# Checking balances and coins

<!-- This section should explain getting the balance of a wallet -->
<!-- balance:example:start -->
In the Fuel network, each UTXO corresponds to a unique _coin_, and said _coin_ has a corresponding _amount_ (the same way a dollar bill has either 10$ or 5$ face value). So, when you want to query the balance for a given asset ID, you want to query the sum of the amount in each unspent coin. This querying is done very easily with a wallet:
<!-- balance:example:end -->

```rust,ignore
{{#include ../../../examples/wallets/src/lib.rs:get_asset_balance}}
```

<!-- This section should explain getting all of the balances of a wallet -->
<!-- balances:example:start -->
If you want to query all the balances (i.e., get the balance for each asset ID in that wallet), you can use the `get_balances` method:
<!-- balances:example:end -->

```rust,ignore
{{#include ../../../examples/wallets/src/lib.rs:get_balances}}
```

<!-- This section should explain the return type for `get_balances` -->
<!-- balances_return:example:start -->
The return type is a `HashMap`, where the key is the _asset ID's_ hex string, and the value is the corresponding balance. For example, we can get the base asset balance with:
<!-- balances_return:example:end -->

```rust,ignore
{{#include ../../../examples/wallets/src/lib.rs:get_balance_hashmap}}
```


================================================
FILE: docs/src/wallets/fake_signer.md
================================================
# Fake signer (impersonating another account)

To facilitate account impersonation, the Rust SDK provides the `FakeSigner`. We can use it to simulate ownership of assets held by an account with a given address. This also implies that we can impersonate contract calls from that address. A wallet with a `FakeSigner` will only succeed in unlocking assets if the network is set up with `utxo_validation = false`.

```rust,ignore
{{#include ../../../examples/contracts/src/lib.rs:utxo_validation_off}}
```

```rust,ignore
{{#include ../../../examples/contracts/src/lib.rs:utxo_validation_off_node_start}}
```

```rust,ignore
{{#include ../../../examples/contracts/src/lib.rs:contract_call_impersonation}}
```


================================================
FILE: docs/src/wallets/index.md
================================================
# Wallets

Wallets serve as a centralized interface for all account-related behaviors. They allow you to:

- **Inspect UTXOs:** Check available coins for spending.
- **Prepare and send transactions:** Build, sign, and submit transfers.
- **Manage network fees:** Pay for transaction execution and contract deployment.

Every wallet requires a **provider** to communicate with the network.

---

## Types of Wallets

There are two primary types of wallets available in the SDK:

### [Locked Wallets](./access.md)

- **Purpose:** Used for read-only operations.
- **Interface:** Implements the [`ViewOnlyAccount`](../accounts.md) trait.
- **Use Cases:** Checking balances, viewing UTXOs, and monitoring transactions without the ability to sign or submit transactions.

### [Unlocked Wallets](./access.md)

- **Purpose:** Supports full account functionality.
- **Interface:** Implements the [`ViewOnlyAccount`](../accounts.md) and [`Account`](../accounts.md) traits.
- **Additional Requirement:** In addition to a provider, an unlocked wallet must include a **signer**.
- **Use Cases:** Transferring funds, signing messages, submitting transactions, and performing state-changing operations.

---

## Signer Options

The SDK offers multiple signing methods to suit different scenarios:

- [**Private Key Signer:**](./private_key_signer.md)  
  Use when you have direct access to your account’s private key.
- [**AWS KMS Signer:**](./kms.md)
  Delegate signing operations to AWS Key Management Service, enhancing key security by offloading cryptographic operations.

- [**Google KMS Signer:**](./kms.md)  
  Similar to AWS KMS, this option delegates signing to Google’s Key Management Service.

- [**Fake Signer:**](./fake_signer.md)  
  Generates dummy signatures, which is useful for impersonation while testing. Only possible when using a network that does not enforce signature validation.

---


================================================
FILE: docs/src/wallets/keystore.md
================================================
# Encrypting and Storing Keys

The code below shows how to:

- Encrypt and store your key using a master password.
- Ensure that the key can be retrieved later with the proper credentials.

```rust,ignore
{{#include ../../../examples/wallets/src/lib.rs:create_and_store_mnemonic_key}}
```


================================================
FILE: docs/src/wallets/kms.md
================================================
# Using KMS Wallets

Key Management Service (KMS) is a robust and secure solution for managing cryptographic keys for your Fuel wallets. Instead of keeping private keys on your local system, KMS Wallets leverage secure infrastructure to handle both key storage and signing operations.

The SDK provides signers for AWS and Google KMS.

Below is an example of how to initialize a wallet with a AWS KMS signer:

```rust,ignore
{{#include ../../../e2e/tests/aws.rs:use_kms_wallet}}
```


================================================
FILE: docs/src/wallets/private_key_signer.md
================================================
# Using private keys to create wallets

## Directly from a private key

An example of how to create a wallet that uses a private key signer:

```rust,ignore
{{#include ../../../examples/wallets/src/lib.rs:create_wallet_from_secret_key}}
```

There is also a helper for generating a wallet with a random private key signer:

```rust,ignore
{{#include ../../../examples/wallets/src/lib.rs:create_random_wallet}}
```

## From a mnemonic phrase

A mnemonic phrase is a cryptographically generated sequence of words used to create a master seed. This master seed, when combined with a [derivation path](https://thebitcoinmanual.com/articles/btc-derivation-path/), enables the generation of one or more specific private keys. The derivation path acts as a roadmap within the [hierarchical deterministic (HD) wallet structure](https://www.ledger.com/academy/crypto/what-are-hierarchical-deterministic-hd-wallets), determining which branch of the key tree produces the desired private key.

```rust,ignore
{{#include ../../../examples/wallets/src/lib.rs:create_wallet_from_mnemonic}}
```

## Security Best Practices

- **Never Share Sensitive Information:**
  Do not disclose your private key or mnemonic phrase to anyone.

- **Secure Storage:**
  When storing keys on disk, **always encrypt** them (the SDK provides a [`Keystore`](./keystore.md). This applies to both plain private/secret keys and mnemonic phrases.


================================================
FILE: docs/src/wallets/signing.md
================================================
# Signing

An example of how you might sign a message using any of the SDK signers (or your
own, custom ones, that implement `Signer`):

```rust,ignore
{{#include ../../../packages/fuels-accounts/src/signers/private_key.rs:sign_message}}
```

## Adding `Signers` to a transaction builder

Every signed resource in the inputs needs to have a witness index that points to a valid witness. Changing the witness index inside an input will change the transaction ID. This means that we need to set all witness indexes before finally signing the transaction. We have to make sure that the witness indexes and the order of the witnesses are correct. To automate this process, the SDK will keep track of the signers in the transaction builder and resolve the final transaction automatically. This is done by storing signers until the final transaction is built.

Below is a full example of how to create a transaction builder and add signers to it.

> Note: When you add a `Signer` to a transaction builder, the signer is stored inside it and the transaction will not be resolved until you call `build()`!

```rust,ignore
{{#include ../../../packages/fuels-accounts/src/account.rs:sign_tb}}
```

## Signing a built transaction

If you have a built transaction and want to add a signature, you can use the `sign_with` method.

```rust,ignore
{{#include ../../../e2e/tests/contracts.rs:tx_sign_with}}
```


================================================
FILE: docs/src/wallets/test-wallets.md
================================================
# Setting up test wallets

You'll often want to create one or more test wallets when testing your contracts. Here's how to do it.

## Setting up multiple test wallets

<!-- This section should explain setting up multiple test wallets -->
<!-- test_wallets:example:start -->
If you need multiple test wallets, they can be set up using the `launch_custom_provider_and_get_wallets` method.
<!-- test_wallets:example:end -->

```rust,ignore
{{#include ../../../examples/wallets/src/lib.rs:multiple_wallets_helper}}
```

<!-- This section should explain how to customize test wallets -->
<!-- custom_test_wallets:example:start -->
You can customize your test wallets via `WalletsConfig`.
<!-- custom_test_wallets:example:end -->

```rust,ignore
{{#include ../../../examples/wallets/src/lib.rs:setup_5_wallets}}
```

<!-- This section should explain that test wallets are deterministic -->
<!-- deterministic:example:start -->
>**Note** Wallets generated with `launch_provider_and_get_wallet` or `launch_custom_provider_and_get_wallets`
will have deterministic addresses.
<!-- deterministic:example:end -->

## Setting up a test wallet with multiple random assets

You can create a test wallet containing multiple assets (including the base asset to pay for gas).

```rust,ignore
{{#include ../../../examples/wallets/src/lib.rs:multiple_assets_wallet}}
```

- coins: `Vec<(UtxoId, Coin)>` has `num_assets` * `coins_per_assets` coins (UTXOs)
- asset_ids: `Vec<AssetId>` contains the `num_assets` randomly generated `AssetId`s (always includes the base asset)

## Setting up a test wallet with multiple custom assets

You can also create assets with specific `AssetId`s, coin amounts, and number of coins.

```rust,ignore
{{#include ../../../examples/wallets/src/lib.rs:custom_assets_wallet}}
```

This can also be achieved directly with the `WalletsConfig`.

```rust,ignore
{{#include ../../../examples/wallets/src/lib.rs:custom_assets_wallet_short}}
```

>**Note** In this case, you need to manually add the base asset and the corresponding number of
>coins and coin amount

## Setting up assets

The Fuel blockchain holds many different assets; you can create your asset with its unique `AssetId` or create random assets for testing purposes.

You can use only one asset to pay for transaction fees and gas: the base asset, whose `AssetId` is `0x000...0`, a 32-byte zeroed value.

For testing purposes, you can configure coins and amounts for assets. You can use `setup_multiple_assets_coins`:

```rust,ignore
{{#include ../../../examples/wallets/src/lib.rs:multiple_assets_coins}}
```

>**Note** If setting up multiple assets, one of these assets will always be the base asset.

If you want to create coins only with the base asset, then you can use:

```rust,ignore
{{#include ../../../examples/providers/src/lib.rs:setup_single_asset}}
```

>**Note** Choosing a large number of coins and assets for `setup_multiple_assets_coins` or `setup_single_asset_coins` can lead to considerable runtime for these methods. This will be improved in the future but for now, we recommend using up to **1_000_000** coins, or **1000** coins and assets simultaneously.


================================================
FILE: docs/theme/highlight.js
================================================
/*!
  Highlight.js v11.3.1 (git: 2a972d8658)
  (c) 2006-2022 Ivan Sagalaev and other contributors
  License: BSD-3-Clause
 */
var hljs=function(){"use strict";var e={exports:{}};function t(e){
return e instanceof Map?e.clear=e.delete=e.set=()=>{
throw Error("map is read-only")}:e instanceof Set&&(e.add=e.clear=e.delete=()=>{
throw Error("set is read-only")
}),Object.freeze(e),Object.getOwnPropertyNames(e).forEach((n=>{var s=e[n]
;"object"!=typeof s||Object.isFrozen(s)||t(s)})),e}
e.exports=t,e.exports.default=t;var n=e.exports;class s{constructor(e){
void 0===e.data&&(e.data={}),this.data=e.data,this.isMatchIgnored=!1}
ignoreMatch(){this.isMatchIgnored=!0}}function i(e){
return e.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&#x27;")
}function a(e,...t){const n=Object.create(null);for(const t in e)n[t]=e[t]
;return t.forEach((e=>{for(const t in e)n[t]=e[t]})),n}const r=e=>!!e.kind
;class o{constructor(e,t){
this.buffer="",this.classPrefix=t.classPrefix,e.walk(this)}addText(e){
this.buffer+=i(e)}openNode(e){if(!r(e))return;let t=e.kind
;t=e.sublanguage?"language-"+t:((e,{prefix:t})=>{if(e.includes(".")){
const n=e.split(".")
;return[`${t}${n.shift()}`,...n.map(((e,t)=>`${e}${"_".repeat(t+1)}`))].join(" ")
}return`${t}${e}`})(t,{prefix:this.classPrefix}),this.span(t)}closeNode(e){
r(e)&&(this.buffer+="</span>")}value(){return this.buffer}span(e){
this.buffer+=`<span class="${e}">`}}class l{constructor(){this.rootNode={
children:[]},this.stack=[this.rootNode]}get top(){
return this.stack[this.stack.length-1]}get root(){return this.rootNode}add(e){
this.top.children.push(e)}openNode(e){const t={kind:e,children:[]}
;this.add(t),this.stack.push(t)}closeNode(){
if(this.stack.length>1)return this.stack.pop()}closeAllNodes(){
for(;this.closeNode(););}toJSON(){return JSON.stringify(this.rootNode,null,4)}
walk(e){return this.constructor._walk(e,this.rootNode)}static _walk(e,t){
return"string"==typeof t?e.addText(t):t.children&&(e.openNode(t),
t.children.forEach((t=>this._walk(e,t))),e.closeNode(t)),e}static _collapse(e){
"string"!=typeof e&&e.children&&(e.children.every((e=>"string"==typeof e))?e.children=[e.children.join("")]:e.children.forEach((e=>{
l._collapse(e)})))}}class c extends l{constructor(e){super(),this.options=e}
addKeyword(e,t){""!==e&&(this.openNode(t),this.addText(e),this.closeNode())}
addText(e){""!==e&&this.add(e)}addSublanguage(e,t){const n=e.root
;n.kind=t,n.sublanguage=!0,this.add(n)}toHTML(){
return new o(this,this.options).value()}finalize(){return!0}}function d(e){
return e?"string"==typeof e?e:e.source:null}function u(e){return b("(?=",e,")")}
function g(e){return b("(?:",e,")*")}function h(e){return b("(?:",e,")?")}
function b(...e){return e.map((e=>d(e))).join("")}function p(...e){const t=(e=>{
const t=e[e.length-1]
;return"object"==typeof t&&t.constructor===Object?(e.splice(e.length-1,1),t):{}
})(e);return"("+(t.capture?"":"?:")+e.map((e=>d(e))).join("|")+")"}
function f(e){return RegExp(e.toString()+"|").exec("").length-1}
const m=/\[(?:[^\\\]]|\\.)*\]|\(\??|\\([1-9][0-9]*)|\\./
;function E(e,{joinWith:t}){let n=0;return e.map((e=>{n+=1;const t=n
;let s=d(e),i="";for(;s.length>0;){const e=m.exec(s);if(!e){i+=s;break}
i+=s.substring(0,e.index),
s=s.substring(e.index+e[0].length),"\\"===e[0][0]&&e[1]?i+="\\"+(Number(e[1])+t):(i+=e[0],
"("===e[0]&&n++)}return i})).map((e=>`(${e})`)).join(t)}
const _="[a-zA-Z]\\w*",w="[a-zA-Z_]\\w*",y="\\b\\d+(\\.\\d+)?",N="(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)",x="\\b(0b[01]+)",k={
begin:"\\\\[\\s\\S]",relevance:0},v={scope:"string",begin:"'",end:"'",
illegal:"\\n",contains:[k]},O={scope:"string",begin:'"',end:'"',illegal:"\\n",
contains:[k]},S=(e,t,n={})=>{const s=a({scope:"comment",begin:e,end:t,
contains:[]},n);s.contains.push({scope:"doctag",
begin:"[ ]*(?=(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):)",
end:/(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):/,excludeBegin:!0,relevance:0})
;const i=p("I","a","is","so","us","to","at","if","in","it","on",/[A-Za-z]+['](d|ve|re|ll|t|s|n)/,/[A-Za-z]+[-][a-z]+/,/[A-Za-z][a-z]{2,}/)
;return s.contains.push({begin:b(/[ ]+/,"(",i,/[.]?[:]?([.][ ]|[ ])/,"){3}")}),s
},R=S("//","$"),M=S("/\\*","\\*/"),I=S("#","$");var A=Object.freeze({
__proto__:null,MATCH_NOTHING_RE:/\b\B/,IDENT_RE:_,UNDERSCORE_IDENT_RE:w,
NUMBER_RE:y,C_NUMBER_RE:N,BINARY_NUMBER_RE:x,
RE_STARTERS_RE:"!|!=|!==|%|%=|&|&&|&=|\\*|\\*=|\\+|\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\?|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~",
SHEBANG:(e={})=>{const t=/^#![ ]*\//
;return e.binary&&(e.begin=b(t,/.*\b/,e.binary,/\b.*/)),a({scope:"meta",begin:t,
end:/$/,relevance:0,"on:begin":(e,t)=>{0!==e.index&&t.ignoreMatch()}},e)},
BACKSLASH_ESCAPE:k,APOS_STRING_MODE:v,QUOTE_STRING_MODE:O,PHRASAL_WORDS_MODE:{
begin:/\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\b/
},COMMENT:S,C_LINE_COMMENT_MODE:R,C_BLOCK_COMMENT_MODE:M,HASH_COMMENT_MODE:I,
NUMBER_MODE:{scope:"number",begin:y,relevance:0},C_NUMBER_MODE:{scope:"number",
begin:N,relevance:0},BINARY_NUMBER_MODE:{scope:"number",begin:x,relevance:0},
REGEXP_MODE:{begin:/(?=\/[^/\n]*\/)/,contains:[{scope:"regexp",begin:/\//,
end:/\/[gimuy]*/,illegal:/\n/,contains:[k,{begin:/\[/,end:/\]/,relevance:0,
contains:[k]}]}]},TITLE_MODE:{scope:"title",begin:_,relevance:0},
UNDERSCORE_TITLE_MODE:{scope:"title",begin:w,relevance:0},METHOD_GUARD:{
begin:"\\.\\s*[a-zA-Z_]\\w*",relevance:0},END_SAME_AS_BEGIN:e=>Object.assign(e,{
"on:begin":(e,t)=>{t.data._beginMatch=e[1]},"on:end":(e,t)=>{
t.data._beginMatch!==e[1]&&t.ignoreMatch()}})});function T(e,t){
"."===e.input[e.index-1]&&t.ignoreMatch()}function D(e,t){
void 0!==e.className&&(e.scope=e.className,delete e.className)}function j(e,t){
t&&e.beginKeywords&&(e.begin="\\b("+e.beginKeywords.split(" ").join("|")+")(?!\\.)(?=\\b|\\s)",
e.__beforeBegin=T,e.keywords=e.keywords||e.beginKeywords,delete e.beginKeywords,
void 0===e.relevance&&(e.relevance=0))}function C(e,t){
Array.isArray(e.illegal)&&(e.illegal=p(...e.illegal))}function B(e,t){
if(e.match){
if(e.begin||e.end)throw Error("begin & end are not supported with match")
;e.begin=e.match,delete e.match}}function L(e,t){
void 0===e.relevance&&(e.relevance=1)}const z=(e,t)=>{if(!e.beforeMatch)return
;if(e.starts)throw Error("beforeMatch cannot be used with starts")
;const n=Object.assign({},e);Object.keys(e).forEach((t=>{delete e[t]
})),e.keywords=n.keywords,e.begin=b(n.beforeMatch,u(n.begin)),e.starts={
relevance:0,contains:[Object.assign(n,{endsParent:!0})]
},e.relevance=0,delete n.beforeMatch
},$=["of","and","for","in","not","or","if","then","parent","list","value"]
;function U(e,t,n="keyword"){const s=Object.create(null)
;return"string"==typeof e?i(n,e.split(" ")):Array.isArray(e)?i(n,e):Object.keys(e).forEach((n=>{
Object.assign(s,U(e[n],t,n))})),s;function i(e,n){
t&&(n=n.map((e=>e.toLowerCase()))),n.forEach((t=>{const n=t.split("|")
;s[n[0]]=[e,H(n[0],n[1])]}))}}function H(e,t){
return t?Number(t):(e=>$.includes(e.toLowerCase()))(e)?0:1}const P={},K=e=>{
console.error(e)},G=(e,...t)=>{console.log("WARN: "+e,...t)},F=(e,t)=>{
P[`${e}/${t}`]||(console.log(`Deprecated as of ${e}. ${t}`),P[`${e}/${t}`]=!0)
},Z=Error();function W(e,t,{key:n}){let s=0;const i=e[n],a={},r={}
;for(let e=1;e<=t.length;e++)r[e+s]=i[e],a[e+s]=!0,s+=f(t[e-1])
;e[n]=r,e[n]._emit=a,e[n]._multi=!0}function X(e){(e=>{
e.scope&&"object"==typeof e.scope&&null!==e.scope&&(e.beginScope=e.scope,
delete e.scope)})(e),"string"==typeof e.beginScope&&(e.beginScope={
_wrap:e.beginScope}),"string"==typeof e.endScope&&(e.endScope={_wrap:e.endScope
}),(e=>{if(Array.isArray(e.begin)){
if(e.skip||e.excludeBegin||e.returnBegin)throw K("skip, excludeBegin, returnBegin not compatible with beginScope: {}"),
Z
;if("object"!=typeof e.beginScope||null===e.beginScope)throw K("beginScope must be object"),
Z;W(e,e.begin,{key:"beginScope"}),e.begin=E(e.begin,{joinWith:""})}})(e),(e=>{
if(Array.isArray(e.end)){
if(e.skip||e.excludeEnd||e.returnEnd)throw K("skip, excludeEnd, returnEnd not compatible with endScope: {}"),
Z
;if("object"!=typeof e.endScope||null===e.endScope)throw K("endScope must be object"),
Z;W(e,e.end,{key:"endScope"}),e.end=E(e.end,{joinWith:""})}})(e)}function q(e){
function t(t,n){
return RegExp(d(t),"m"+(e.case_insensitive?"i":"")+(e.unicodeRegex?"u":"")+(n?"g":""))
}class n{constructor(){
this.matchIndexes={},this.regexes=[],this.matchAt=1,this.position=0}
addRule(e,t){
t.position=this.position++,this.matchIndexes[this.matchAt]=t,this.regexes.push([t,e]),
this.matchAt+=f(e)+1}compile(){0===this.regexes.length&&(this.exec=()=>null)
;const e=this.regexes.map((e=>e[1]));this.matcherRe=t(E(e,{joinWith:"|"
}),!0),this.lastIndex=0}exec(e){this.matcherRe.lastIndex=this.lastIndex
;const t=this.matcherRe.exec(e);if(!t)return null
;const n=t.findIndex(((e,t)=>t>0&&void 0!==e)),s=this.matchIndexes[n]
;return t.splice(0,n),Object.assign(t,s)}}class s{constructor(){
this.rules=[],this.multiRegexes=[],
this.count=0,this.lastIndex=0,this.regexIndex=0}getMatcher(e){
if(this.multiRegexes[e])return this.multiRegexes[e];const t=new n
;return this.rules.slice(e).forEach((([e,n])=>t.addRule(e,n))),
t.compile(),this.multiRegexes[e]=t,t}resumingScanAtSamePosition(){
return 0!==this.regexIndex}considerAll(){this.regexIndex=0}addRule(e,t){
this.rules.push([e,t]),"begin"===t.type&&this.count++}exec(e){
const t=this.getMatcher(this.regexIndex);t.lastIndex=this.lastIndex
;let n=t.exec(e)
;if(this.resumingScanAtSamePosition())if(n&&n.index===this.lastIndex);else{
const t=this.getMatcher(0);t.lastIndex=this.lastIndex+1,n=t.exec(e)}
return n&&(this.regexIndex+=n.position+1,
this.regexIndex===this.count&&this.considerAll()),n}}
if(e.compilerExtensions||(e.compilerExtensions=[]),
e.contains&&e.contains.includes("self"))throw Error("ERR: contains `self` is not supported at the top-level of a language.  See documentation.")
;return e.classNameAliases=a(e.classNameAliases||{}),function n(i,r){const o=i
;if(i.isCompiled)return o
;[D,B,X,z].forEach((e=>e(i,r))),e.compilerExtensions.forEach((e=>e(i,r))),
i.__beforeBegin=null,[j,C,L].forEach((e=>e(i,r))),i.isCompiled=!0;let l=null
;return"object"==typeof i.keywords&&i.keywords.$pattern&&(i.keywords=Object.assign({},i.keywords),
l=i.keywords.$pattern,
delete i.keywords.$pattern),l=l||/\w+/,i.keywords&&(i.keywords=U(i.keywords,e.case_insensitive)),
o.keywordPatternRe=t(l,!0),
r&&(i.begin||(i.begin=/\B|\b/),o.beginRe=t(o.begin),i.end||i.endsWithParent||(i.end=/\B|\b/),
i.end&&(o.endRe=t(o.end)),
o.terminatorEnd=d(o.end)||"",i.endsWithParent&&r.terminatorEnd&&(o.terminatorEnd+=(i.end?"|":"")+r.terminatorEnd)),
i.illegal&&(o.illegalRe=t(i.illegal)),
i.contains||(i.contains=[]),i.contains=[].concat(...i.contains.map((e=>(e=>(e.variants&&!e.cachedVariants&&(e.cachedVariants=e.variants.map((t=>a(e,{
variants:null},t)))),e.cachedVariants?e.cachedVariants:V(e)?a(e,{
starts:e.starts?a(e.starts):null
}):Object.isFrozen(e)?a(e):e))("self"===e?i:e)))),i.contains.forEach((e=>{n(e,o)
})),i.starts&&n(i.starts,r),o.matcher=(e=>{const t=new s
;return e.contains.forEach((e=>t.addRule(e.begin,{rule:e,type:"begin"
}))),e.terminatorEnd&&t.addRule(e.terminatorEnd,{type:"end"
}),e.illegal&&t.addRule(e.illegal,{type:"illegal"}),t})(o),o}(e)}function V(e){
return!!e&&(e.endsWithParent||V(e.starts))}class Q extends Error{
constructor(e,t){super(e),this.name="HTMLInjectionError",this.html=t}}
const J=i,Y=a,ee=Symbol("nomatch");var te=(e=>{
const t=Object.create(null),i=Object.create(null),a=[];let r=!0
;const o="Could not find the language '{}', did you forget to load/include a language module?",l={
disableAutodetect:!0,name:"Plain text",contains:[]};let d={
ignoreUnescapedHTML:!1,throwUnescapedHTML:!1,noHighlightRe:/^(no-?highlight)$/i,
languageDetectRe:/\blang(?:uage)?-([\w-]+)\b/i,classPrefix:"hljs-",
cssSelector:"pre code",languages:null,__emitter:c};function f(e){
return d.noHighlightRe.test(e)}function m(e,t,n){let s="",i=""
;"object"==typeof t?(s=e,
n=t.ignoreIllegals,i=t.language):(F("10.7.0","highlight(lang, code, ...args) has been deprecated."),
F("10.7.0","Please use highlight(code, options) instead.\nhttps://github.com/highlightjs/highlight.js/issues/2277"),
i=e,s=t),void 0===n&&(n=!0);const a={code:s,language:i};O("before:highlight",a)
;const r=a.result?a.result:E(a.language,a.code,n)
;return r.code=a.code,O("after:highlight",r),r}function E(e,n,i,a){
const l=Object.create(null);function c(){if(!v.keywords)return void S.addText(R)
;let e=0;v.keywordPatternRe.lastIndex=0;let t=v.keywordPatternRe.exec(R),n=""
;for(;t;){n+=R.substring(e,t.index)
;const i=y.case_insensitive?t[0].toLowerCase():t[0],a=(s=i,v.keywords[s]);if(a){
const[e,s]=a
;if(S.addText(n),n="",l[i]=(l[i]||0)+1,l[i]<=7&&(M+=s),e.startsWith("_"))n+=t[0];else{
const n=y.classNameAliases[e]||e;S.addKeyword(t[0],n)}}else n+=t[0]
;e=v.keywordPatternRe.lastIndex,t=v.keywordPatternRe.exec(R)}var s
;n+=R.substr(e),S.addText(n)}function u(){null!=v.subLanguage?(()=>{
if(""===R)return;let e=null;if("string"==typeof v.subLanguage){
if(!t[v.subLanguage])return void S.addText(R)
;e=E(v.subLanguage,R,!0,O[v.subLanguage]),O[v.subLanguage]=e._top
}else e=_(R,v.subLanguage.length?v.subLanguage:null)
;v.relevance>0&&(M+=e.relevance),S.addSublanguage(e._emitter,e.language)
})():c(),R=""}function g(e,t){let n=1;for(;void 0!==t[n];){if(!e._emit[n]){n++
;continue}const s=y.classNameAliases[e[n]]||e[n],i=t[n]
;s?S.addKeyword(i,s):(R=i,c(),R=""),n++}}function h(e,t){
return e.scope&&"string"==typeof e.scope&&S.openNode(y.classNameAliases[e.scope]||e.scope),
e.beginScope&&(e.beginScope._wrap?(S.addKeyword(R,y.classNameAliases[e.beginScope._wrap]||e.beginScope._wrap),
R=""):e.beginScope._multi&&(g(e.beginScope,t),R="")),v=Object.create(e,{parent:{
value:v}}),v}function b(e,t,n){let i=((e,t)=>{const n=e&&e.exec(t)
;return n&&0===n.index})(e.endRe,n);if(i){if(e["on:end"]){const n=new s(e)
;e["on:end"](t,n),n.isMatchIgnored&&(i=!1)}if(i){
for(;e.endsParent&&e.parent;)e=e.parent;return e}}
if(e.endsWithParent)return b(e.parent,t,n)}function p(e){
return 0===v.matcher.regexIndex?(R+=e[0],1):(T=!0,0)}function f(e){
const t=e[0],s=n.substr(e.index),i=b(v,e,s);if(!i)return ee;const a=v
;v.endScope&&v.endScope._wrap?(u(),
S.addKeyword(t,v.endScope._wrap)):v.endScope&&v.endScope._multi?(u(),
g(v.endScope,e)):a.skip?R+=t:(a.returnEnd||a.excludeEnd||(R+=t),
u(),a.excludeEnd&&(R=t));do{
v.scope&&S.closeNode(),v.skip||v.subLanguage||(M+=v.relevance),v=v.parent
}while(v!==i.parent);return i.starts&&h(i.starts,e),a.returnEnd?0:t.length}
let m={};function w(t,a){const o=a&&a[0];if(R+=t,null==o)return u(),0
;if("begin"===m.type&&"end"===a.type&&m.index===a.index&&""===o){
if(R+=n.slice(a.index,a.index+1),!r){const t=Error(`0 width match regex (${e})`)
;throw t.languageName=e,t.badRule=m.rule,t}return 1}
if(m=a,"begin"===a.type)return(e=>{
const t=e[0],n=e.rule,i=new s(n),a=[n.__beforeBegin,n["on:begin"]]
;for(const n of a)if(n&&(n(e,i),i.isMatchIgnored))return p(t)
;return n.skip?R+=t:(n.excludeBegin&&(R+=t),
u(),n.returnBegin||n.excludeBegin||(R=t)),h(n,e),n.returnBegin?0:t.length})(a)
;if("illegal"===a.type&&!i){
const e=Error('Illegal lexeme "'+o+'" for mode "'+(v.scope||"<unnamed>")+'"')
;throw e.mode=v,e}if("end"===a.type){const e=f(a);if(e!==ee)return e}
if("illegal"===a.type&&""===o)return 1
;if(A>1e5&&A>3*a.index)throw Error("potential infinite loop, way more iterations than matches")
;return R+=o,o.length}const y=x(e)
;if(!y)throw K(o.replace("{}",e)),Error('Unknown language: "'+e+'"')
;const N=q(y);let k="",v=a||N;const O={},S=new d.__emitter(d);(()=>{const e=[]
;for(let t=v;t!==y;t=t.parent)t.scope&&e.unshift(t.scope)
;e.forEach((e=>S.openNode(e)))})();let R="",M=0,I=0,A=0,T=!1;try{
for(v.matcher.considerAll();;){
A++,T?T=!1:v.matcher.considerAll(),v.matcher.lastIndex=I
;const e=v.matcher.exec(n);if(!e)break;const t=w(n.substring(I,e.index),e)
;I=e.index+t}return w(n.substr(I)),S.closeAllNodes(),S.finalize(),k=S.toHTML(),{
language:e,value:k,relevance:M,illegal:!1,_emitter:S,_top:v}}catch(t){
if(t.message&&t.message.includes("Illegal"))return{language:e,value:J(n),
illegal:!0,relevance:0,_illegalBy:{message:t.message,index:I,
context:n.slice(I-100,I+100),mode:t.mode,resultSoFar:k},_emitter:S};if(r)return{
language:e,value:J(n),illegal:!1,relevance:0,errorRaised:t,_emitter:S,_top:v}
;throw t}}function _(e,n){n=n||d.languages||Object.keys(t);const s=(e=>{
const t={value:J(e),illegal:!1,relevance:0,_top:l,_emitter:new d.__emitter(d)}
;return t._emitter.addText(e),t})(e),i=n.filter(x).filter(v).map((t=>E(t,e,!1)))
;i.unshift(s);const a=i.sort(((e,t)=>{
if(e.relevance!==t.relevance)return t.relevance-e.relevance
;if(e.language&&t.language){if(x(e.language).supersetOf===t.language)return 1
;if(x(t.language).supersetOf===e.language)return-1}return 0})),[r,o]=a,c=r
;return c.secondBest=o,c}function w(e){let t=null;const n=(e=>{
let t=e.className+" ";t+=e.parentNode?e.parentNode.className:""
;const n=d.languageDetectRe.exec(t);if(n){const t=x(n[1])
;return t||(G(o.replace("{}",n[1])),
G("Falling back to no-highlight mode for this block.",e)),t?n[1]:"no-highlight"}
return t.split(/\s+/).find((e=>f(e)||x(e)))})(e);if(f(n))return
;if(O("before:highlightElement",{el:e,language:n
}),e.children.length>0&&(d.ignoreUnescapedHTML||(console.warn("One of your code blocks includes unescaped HTML. This is a potentially serious security risk."),
console.warn("https://github.com/highlightjs/highlight.js/issues/2886"),
console.warn(e)),
d.throwUnescapedHTML))throw new Q("One of your code blocks includes unescaped HTML.",e.innerHTML)
;t=e;const s=t.textContent,a=n?m(s,{language:n,ignoreIllegals:!0}):_(s)
;e.innerHTML=a.value,((e,t,n)=>{const s=t&&i[t]||n
;e.classList.add("hljs"),e.classList.add("language-"+s)
})(e,n,a.language),e.result={language:a.language,re:a.relevance,
relevance:a.relevance},a.secondBest&&(e.secondBest={
language:a.secondBest.language,relevance:a.secondBest.relevance
}),O("after:highlightElement",{el:e,result:a,text:s})}let y=!1;function N(){
"loading"!==document.readyState?document.querySelectorAll(d.cssSelector).forEach(w):y=!0
}function x(e){return e=(e||"").toLowerCase(),t[e]||t[i[e]]}
function k(e,{languageName:t}){"string"==typeof e&&(e=[e]),e.forEach((e=>{
i[e.toLowerCase()]=t}))}function v(e){const t=x(e)
;return t&&!t.disableAutodetect}function O(e,t){const n=e;a.forEach((e=>{
e[n]&&e[n](t)}))}
"undefined"!=typeof window&&window.addEventListener&&window.addEventListener("DOMContentLoaded
Download .txt
gitextract_yk9mjvhk/

├── .editorconfig
├── .github/
│   ├── CODEOWNERS
│   ├── PULL_REQUEST_TEMPLATE.md
│   └── workflows/
│       ├── ci.yml
│       ├── docs.yml
│       ├── gh-pages.yml
│       ├── repo-plan.toml
│       └── scripts/
│           └── verify_tag.sh
├── .gitignore
├── .markdownlint.yaml
├── .markdownlintignore
├── Cargo.toml
├── LICENSE
├── README.md
├── SECURITY.md
├── _typos.toml
├── ci_checks.sh
├── docs/
│   ├── .spellcheck.yml
│   ├── book.toml
│   ├── spell-check-custom-words.txt
│   ├── src/
│   │   ├── SUMMARY.md
│   │   ├── abigen/
│   │   │   ├── index.md
│   │   │   ├── the-abigen-macro.md
│   │   │   └── the-json-abi-file.md
│   │   ├── accounts.md
│   │   ├── calling-contracts/
│   │   │   ├── call-params.md
│   │   │   ├── call-response.md
│   │   │   ├── calls-with-different-wallets.md
│   │   │   ├── cost-estimation.md
│   │   │   ├── custom-asset-transfer.md
│   │   │   ├── custom-inputs-outputs.md
│   │   │   ├── index.md
│   │   │   ├── logs.md
│   │   │   ├── low-level-calls.md
│   │   │   ├── multicalls.md
│   │   │   ├── other-contracts.md
│   │   │   ├── simulation.md
│   │   │   ├── tx-dependency-estimation.md
│   │   │   ├── tx-policies.md
│   │   │   └── variable-outputs.md
│   │   ├── cli/
│   │   │   ├── fuels-abi-cli.md
│   │   │   └── index.md
│   │   ├── codec/
│   │   │   ├── decoding.md
│   │   │   ├── encoding.md
│   │   │   └── index.md
│   │   ├── connecting/
│   │   │   ├── external-node.md
│   │   │   ├── index.md
│   │   │   ├── querying.md
│   │   │   ├── retrying.md
│   │   │   ├── rocksdb.md
│   │   │   └── short-lived.md
│   │   ├── contributing/
│   │   │   ├── CONTRIBUTING.md
│   │   │   └── tests-structure.md
│   │   ├── cookbook/
│   │   │   ├── custom-chain.md
│   │   │   ├── deposit-and-withdraw.md
│   │   │   ├── index.md
│   │   │   └── transfer-all-assets.md
│   │   ├── custom-transactions/
│   │   │   ├── custom-calls.md
│   │   │   ├── index.md
│   │   │   └── transaction-builders.md
│   │   ├── debugging/
│   │   │   ├── decoding-script-transactions.md
│   │   │   ├── function-selector.md
│   │   │   └── index.md
│   │   ├── deploying/
│   │   │   ├── configurable-constants.md
│   │   │   ├── index.md
│   │   │   ├── interacting-with-contracts.md
│   │   │   ├── large_contracts.md
│   │   │   ├── storage-slots.md
│   │   │   └── the-fuelvm-binary-file.md
│   │   ├── getting-started.md
│   │   ├── glossary.md
│   │   ├── index.md
│   │   ├── predicates/
│   │   │   ├── index.md
│   │   │   └── send-spend-predicate.md
│   │   ├── preuploading-code.md
│   │   ├── reference.md
│   │   ├── running-scripts.md
│   │   ├── testing/
│   │   │   ├── basics.md
│   │   │   ├── chains.md
│   │   │   ├── index.md
│   │   │   └── the-setup-program-test-macro.md
│   │   ├── types/
│   │   │   ├── B512.md
│   │   │   ├── address.md
│   │   │   ├── asset-id.md
│   │   │   ├── bits256.md
│   │   │   ├── bytes.md
│   │   │   ├── bytes32.md
│   │   │   ├── contract-id.md
│   │   │   ├── conversion.md
│   │   │   ├── custom_types.md
│   │   │   ├── evm_address.md
│   │   │   ├── index.md
│   │   │   ├── string.md
│   │   │   └── vectors.md
│   │   └── wallets/
│   │       ├── access.md
│   │       ├── checking-balances-and-coins.md
│   │       ├── fake_signer.md
│   │       ├── index.md
│   │       ├── keystore.md
│   │       ├── kms.md
│   │       ├── private_key_signer.md
│   │       ├── signing.md
│   │       └── test-wallets.md
│   └── theme/
│       └── highlight.js
├── e2e/
│   ├── Cargo.toml
│   ├── Forc.toml
│   ├── build.rs
│   ├── src/
│   │   ├── aws_kms.rs
│   │   ├── e2e_helpers.rs
│   │   └── lib.rs
│   ├── sway/
│   │   ├── abi/
│   │   │   ├── simple_contract/
│   │   │   │   ├── Forc.toml
│   │   │   │   └── src/
│   │   │   │       └── main.sw
│   │   │   ├── wasm_contract/
│   │   │   │   ├── Forc.toml
│   │   │   │   └── src/
│   │   │   │       └── main.sw
│   │   │   └── wasm_predicate/
│   │   │       ├── Forc.toml
│   │   │       └── src/
│   │   │           └── main.sw
│   │   ├── bindings/
│   │   │   ├── sharing_types/
│   │   │   │   ├── contract_a/
│   │   │   │   │   ├── Forc.toml
│   │   │   │   │   └── src/
│   │   │   │   │       └── main.sw
│   │   │   │   ├── contract_b/
│   │   │   │   │   ├── Forc.toml
│   │   │   │   │   └── src/
│   │   │   │   │       └── main.sw
│   │   │   │   └── shared_lib/
│   │   │   │       ├── Forc.toml
│   │   │   │       └── src/
│   │   │   │           └── lib.sw
│   │   │   ├── simple_contract/
│   │   │   │   ├── Forc.toml
│   │   │   │   └── src/
│   │   │   │       └── main.sw
│   │   │   └── type_paths/
│   │   │       ├── Forc.toml
│   │   │       └── src/
│   │   │           ├── another_lib.sw
│   │   │           ├── contract_a_types.sw
│   │   │           └── main.sw
│   │   ├── contracts/
│   │   │   ├── asserts/
│   │   │   │   ├── Forc.toml
│   │   │   │   └── src/
│   │   │   │       └── main.sw
│   │   │   ├── auth_testing_abi/
│   │   │   │   ├── Forc.toml
│   │   │   │   └── src/
│   │   │   │       └── main.sw
│   │   │   ├── auth_testing_contract/
│   │   │   │   ├── Forc.toml
│   │   │   │   └── src/
│   │   │   │       └── main.sw
│   │   │   ├── block_timestamp/
│   │   │   │   ├── Forc.toml
│   │   │   │   └── src/
│   │   │   │       └── main.sw
│   │   │   ├── configurables/
│   │   │   │   ├── Forc.toml
│   │   │   │   └── src/
│   │   │   │       └── main.sw
│   │   │   ├── contract_test/
│   │   │   │   ├── Forc.toml
│   │   │   │   └── src/
│   │   │   │       └── main.sw
│   │   │   ├── huge_contract/
│   │   │   │   ├── Forc.toml
│   │   │   │   └── src/
│   │   │   │       └── main.sw
│   │   │   ├── large_return_data/
│   │   │   │   ├── Forc.toml
│   │   │   │   └── src/
│   │   │   │       └── main.sw
│   │   │   ├── lib_contract/
│   │   │   │   ├── Forc.toml
│   │   │   │   └── src/
│   │   │   │       └── main.sw
│   │   │   ├── lib_contract_abi/
│   │   │   │   ├── Forc.toml
│   │   │   │   └── src/
│   │   │   │       └── main.sw
│   │   │   ├── lib_contract_caller/
│   │   │   │   ├── Forc.toml
│   │   │   │   └── src/
│   │   │   │       └── main.sw
│   │   │   ├── library_test/
│   │   │   │   ├── Forc.toml
│   │   │   │   └── src/
│   │   │   │       └── main.sw
│   │   │   ├── liquidity_pool/
│   │   │   │   ├── Forc.toml
│   │   │   │   └── src/
│   │   │   │       └── main.sw
│   │   │   ├── low_level_caller/
│   │   │   │   ├── Forc.toml
│   │   │   │   └── src/
│   │   │   │       └── main.sw
│   │   │   ├── msg_methods/
│   │   │   │   ├── Forc.toml
│   │   │   │   └── src/
│   │   │   │       └── main.sw
│   │   │   ├── multiple_read_calls/
│   │   │   │   ├── Forc.toml
│   │   │   │   └── src/
│   │   │   │       └── main.sw
│   │   │   ├── needs_custom_decoder/
│   │   │   │   ├── Forc.toml
│   │   │   │   └── src/
│   │   │   │       └── main.sw
│   │   │   ├── payable_annotation/
│   │   │   │   ├── Forc.toml
│   │   │   │   └── src/
│   │   │   │       └── main.sw
│   │   │   ├── proxy/
│   │   │   │   ├── Forc.toml
│   │   │   │   └── src/
│   │   │   │       └── main.sw
│   │   │   ├── revert_transaction_error/
│   │   │   │   ├── Forc.toml
│   │   │   │   └── src/
│   │   │   │       └── main.sw
│   │   │   ├── storage/
│   │   │   │   ├── Forc.toml
│   │   │   │   └── src/
│   │   │   │       └── main.sw
│   │   │   ├── token_ops/
│   │   │   │   ├── Forc.toml
│   │   │   │   └── src/
│   │   │   │       └── main.sw
│   │   │   ├── transaction_block_height/
│   │   │   │   ├── Forc.toml
│   │   │   │   └── src/
│   │   │   │       └── main.sw
│   │   │   ├── tx_input_output/
│   │   │   │   ├── Forc.toml
│   │   │   │   └── src/
│   │   │   │       └── main.sw
│   │   │   └── var_outputs/
│   │   │       ├── Forc.toml
│   │   │       └── src/
│   │   │           └── main.sw
│   │   ├── logs/
│   │   │   ├── contract_logs/
│   │   │   │   ├── Forc.toml
│   │   │   │   └── src/
│   │   │   │       └── main.sw
│   │   │   ├── contract_logs_abi/
│   │   │   │   ├── Forc.toml
│   │   │   │   └── src/
│   │   │   │       └── main.sw
│   │   │   ├── contract_revert_logs/
│   │   │   │   ├── Forc.toml
│   │   │   │   └── src/
│   │   │   │       └── main.sw
│   │   │   ├── contract_with_contract_logs/
│   │   │   │   ├── Forc.toml
│   │   │   │   └── src/
│   │   │   │       └── main.sw
│   │   │   ├── script_heap_logs/
│   │   │   │   ├── Forc.toml
│   │   │   │   └── src/
│   │   │   │       └── main.sw
│   │   │   ├── script_logs/
│   │   │   │   ├── Forc.toml
│   │   │   │   └── src/
│   │   │   │       └── main.sw
│   │   │   ├── script_revert_logs/
│   │   │   │   ├── Forc.toml
│   │   │   │   └── src/
│   │   │   │       └── main.sw
│   │   │   └── script_with_contract_logs/
│   │   │       ├── Forc.toml
│   │   │       └── src/
│   │   │           └── main.sw
│   │   ├── predicates/
│   │   │   ├── basic_predicate/
│   │   │   │   ├── Forc.toml
│   │   │   │   └── src/
│   │   │   │       └── main.sw
│   │   │   ├── predicate_blobs/
│   │   │   │   ├── Forc.toml
│   │   │   │   └── src/
│   │   │   │       └── main.sw
│   │   │   ├── predicate_configurables/
│   │   │   │   ├── Forc.toml
│   │   │   │   └── src/
│   │   │   │       └── main.sw
│   │   │   ├── predicate_tx_input_output/
│   │   │   │   ├── Forc.toml
│   │   │   │   └── src/
│   │   │   │       └── main.sw
│   │   │   ├── predicate_witnesses/
│   │   │   │   ├── Forc.toml
│   │   │   │   └── src/
│   │   │   │       └── main.sw
│   │   │   ├── signatures/
│   │   │   │   ├── Forc.toml
│   │   │   │   └── src/
│   │   │   │       └── main.sw
│   │   │   └── swap/
│   │   │       ├── Forc.toml
│   │   │       └── src/
│   │   │           └── main.sw
│   │   ├── scripts/
│   │   │   ├── arguments/
│   │   │   │   ├── Forc.toml
│   │   │   │   └── src/
│   │   │   │       └── main.sw
│   │   │   ├── basic_script/
│   │   │   │   ├── Forc.toml
│   │   │   │   └── src/
│   │   │   │       └── main.sw
│   │   │   ├── empty/
│   │   │   │   ├── Forc.toml
│   │   │   │   └── src/
│   │   │   │       └── main.sw
│   │   │   ├── require_from_contract/
│   │   │   │   ├── Forc.toml
│   │   │   │   └── src/
│   │   │   │       └── main.sw
│   │   │   ├── reverting/
│   │   │   │   ├── Forc.toml
│   │   │   │   └── src/
│   │   │   │       └── main.sw
│   │   │   ├── script_array/
│   │   │   │   ├── Forc.toml
│   │   │   │   └── src/
│   │   │   │       └── main.sw
│   │   │   ├── script_asserts/
│   │   │   │   ├── Forc.toml
│   │   │   │   └── src/
│   │   │   │       └── main.sw
│   │   │   ├── script_blobs/
│   │   │   │   ├── Forc.toml
│   │   │   │   └── src/
│   │   │   │       └── main.sw
│   │   │   ├── script_configurables/
│   │   │   │   ├── Forc.toml
│   │   │   │   └── src/
│   │   │   │       └── main.sw
│   │   │   ├── script_enum/
│   │   │   │   ├── Forc.toml
│   │   │   │   └── src/
│   │   │   │       └── main.sw
│   │   │   ├── script_needs_custom_decoder/
│   │   │   │   ├── Forc.toml
│   │   │   │   └── src/
│   │   │   │       └── main.sw
│   │   │   ├── script_proxy/
│   │   │   │   ├── Forc.toml
│   │   │   │   └── src/
│   │   │   │       └── main.sw
│   │   │   ├── script_struct/
│   │   │   │   ├── Forc.toml
│   │   │   │   └── src/
│   │   │   │       └── main.sw
│   │   │   ├── script_tx_input_output/
│   │   │   │   ├── Forc.toml
│   │   │   │   └── src/
│   │   │   │       └── main.sw
│   │   │   └── transfer_script/
│   │   │       ├── Forc.toml
│   │   │       └── src/
│   │   │           └── main.sw
│   │   └── types/
│   │       ├── contracts/
│   │       │   ├── b256/
│   │       │   │   ├── Forc.toml
│   │       │   │   └── src/
│   │       │   │       └── main.sw
│   │       │   ├── b512/
│   │       │   │   ├── Forc.toml
│   │       │   │   └── src/
│   │       │   │       └── main.sw
│   │       │   ├── bytes/
│   │       │   │   ├── Forc.toml
│   │       │   │   └── src/
│   │       │   │       └── main.sw
│   │       │   ├── call_empty_return/
│   │       │   │   ├── Forc.toml
│   │       │   │   └── src/
│   │       │   │       └── main.sw
│   │       │   ├── complex_types_contract/
│   │       │   │   ├── Forc.toml
│   │       │   │   └── src/
│   │       │   │       └── main.sw
│   │       │   ├── contract_output_test/
│   │       │   │   ├── Forc.toml
│   │       │   │   └── src/
│   │       │   │       └── main.sw
│   │       │   ├── empty_arguments/
│   │       │   │   ├── Forc.toml
│   │       │   │   └── src/
│   │       │   │       └── main.sw
│   │       │   ├── enum_as_input/
│   │       │   │   ├── Forc.toml
│   │       │   │   └── src/
│   │       │   │       └── main.sw
│   │       │   ├── enum_encoding/
│   │       │   │   ├── Forc.toml
│   │       │   │   └── src/
│   │       │   │       └── main.sw
│   │       │   ├── enum_inside_struct/
│   │       │   │   ├── Forc.toml
│   │       │   │   └── src/
│   │       │   │       └── main.sw
│   │       │   ├── evm_address/
│   │       │   │   ├── Forc.toml
│   │       │   │   └── src/
│   │       │   │       └── main.sw
│   │       │   ├── generics/
│   │       │   │   ├── Forc.toml
│   │       │   │   └── src/
│   │       │   │       └── main.sw
│   │       │   ├── heap_type_in_enums/
│   │       │   │   ├── Forc.toml
│   │       │   │   └── src/
│   │       │   │       └── main.sw
│   │       │   ├── heap_types/
│   │       │   │   ├── Forc.toml
│   │       │   │   └── src/
│   │       │   │       └── main.sw
│   │       │   ├── identity/
│   │       │   │   ├── Forc.toml
│   │       │   │   └── src/
│   │       │   │       └── main.sw
│   │       │   ├── native_types/
│   │       │   │   ├── Forc.toml
│   │       │   │   └── src/
│   │       │   │       └── main.sw
│   │       │   ├── nested_structs/
│   │       │   │   ├── Forc.toml
│   │       │   │   └── src/
│   │       │   │       └── main.sw
│   │       │   ├── options/
│   │       │   │   ├── Forc.toml
│   │       │   │   └── src/
│   │       │   │       └── main.sw
│   │       │   ├── raw_slice/
│   │       │   │   ├── Forc.toml
│   │       │   │   └── src/
│   │       │   │       └── main.sw
│   │       │   ├── results/
│   │       │   │   ├── Forc.toml
│   │       │   │   └── src/
│   │       │   │       └── main.sw
│   │       │   ├── std_lib_string/
│   │       │   │   ├── Forc.toml
│   │       │   │   └── src/
│   │       │   │       └── main.sw
│   │       │   ├── str_in_array/
│   │       │   │   ├── Forc.toml
│   │       │   │   └── src/
│   │       │   │       └── main.sw
│   │       │   ├── string_slice/
│   │       │   │   ├── Forc.toml
│   │       │   │   └── src/
│   │       │   │       └── main.sw
│   │       │   ├── tuples/
│   │       │   │   ├── Forc.toml
│   │       │   │   └── src/
│   │       │   │       └── main.sw
│   │       │   ├── two_structs/
│   │       │   │   ├── Forc.toml
│   │       │   │   └── src/
│   │       │   │       └── main.sw
│   │       │   ├── type_inside_enum/
│   │       │   │   ├── Forc.toml
│   │       │   │   └── src/
│   │       │   │       └── main.sw
│   │       │   ├── u128/
│   │       │   │   ├── Forc.toml
│   │       │   │   └── src/
│   │       │   │       └── main.sw
│   │       │   ├── u256/
│   │       │   │   ├── Forc.toml
│   │       │   │   └── src/
│   │       │   │       └── main.sw
│   │       │   ├── vector_output/
│   │       │   │   ├── Forc.toml
│   │       │   │   └── src/
│   │       │   │       └── main.sw
│   │       │   └── vectors/
│   │       │       ├── Forc.toml
│   │       │       └── src/
│   │       │           ├── data_structures.sw
│   │       │           ├── eq_impls.sw
│   │       │           ├── main.sw
│   │       │           └── utils.sw
│   │       ├── predicates/
│   │       │   ├── address/
│   │       │   │   ├── Forc.toml
│   │       │   │   └── src/
│   │       │   │       └── main.sw
│   │       │   ├── enums/
│   │       │   │   ├── Forc.toml
│   │       │   │   └── src/
│   │       │   │       └── main.sw
│   │       │   ├── predicate_b256/
│   │       │   │   ├── Forc.toml
│   │       │   │   └── src/
│   │       │   │       └── main.sw
│   │       │   ├── predicate_bytes/
│   │       │   │   ├── Forc.toml
│   │       │   │   └── src/
│   │       │   │       └── main.sw
│   │       │   ├── predicate_bytes_hash/
│   │       │   │   ├── Forc.toml
│   │       │   │   └── src/
│   │       │   │       └── main.sw
│   │       │   ├── predicate_generics/
│   │       │   │   ├── Forc.toml
│   │       │   │   └── src/
│   │       │   │       └── main.sw
│   │       │   ├── predicate_raw_slice/
│   │       │   │   ├── Forc.toml
│   │       │   │   └── src/
│   │       │   │       └── main.sw
│   │       │   ├── predicate_std_lib_string/
│   │       │   │   ├── Forc.toml
│   │       │   │   └── src/
│   │       │   │       └── main.sw
│   │       │   ├── predicate_string_slice/
│   │       │   │   ├── Forc.toml
│   │       │   │   └── src/
│   │       │   │       └── main.sw
│   │       │   ├── predicate_tuples/
│   │       │   │   ├── Forc.toml
│   │       │   │   └── src/
│   │       │   │       └── main.sw
│   │       │   ├── predicate_u128/
│   │       │   │   ├── Forc.toml
│   │       │   │   └── src/
│   │       │   │       └── main.sw
│   │       │   ├── predicate_u256/
│   │       │   │   ├── Forc.toml
│   │       │   │   └── src/
│   │       │   │       └── main.sw
│   │       │   ├── predicate_vector/
│   │       │   │   ├── Forc.toml
│   │       │   │   └── src/
│   │       │   │       └── main.sw
│   │       │   ├── predicate_vectors/
│   │       │   │   ├── Forc.toml
│   │       │   │   └── src/
│   │       │   │       └── main.sw
│   │       │   ├── structs/
│   │       │   │   ├── Forc.toml
│   │       │   │   └── src/
│   │       │   │       └── main.sw
│   │       │   └── u64/
│   │       │       ├── Forc.toml
│   │       │       └── src/
│   │       │           └── main.sw
│   │       └── scripts/
│   │           ├── options_results/
│   │           │   ├── Forc.toml
│   │           │   └── src/
│   │           │       └── main.sw
│   │           ├── script_b256/
│   │           │   ├── Forc.toml
│   │           │   └── src/
│   │           │       └── main.sw
│   │           ├── script_bytes/
│   │           │   ├── Forc.toml
│   │           │   └── src/
│   │           │       └── main.sw
│   │           ├── script_generics/
│   │           │   ├── Forc.toml
│   │           │   └── src/
│   │           │       └── main.sw
│   │           ├── script_heap_types/
│   │           │   ├── Forc.toml
│   │           │   └── src/
│   │           │       └── main.sw
│   │           ├── script_raw_slice/
│   │           │   ├── Forc.toml
│   │           │   └── src/
│   │           │       └── main.sw
│   │           ├── script_std_lib_string/
│   │           │   ├── Forc.toml
│   │           │   └── src/
│   │           │       └── main.sw
│   │           ├── script_string_slice/
│   │           │   ├── Forc.toml
│   │           │   └── src/
│   │           │       └── main.sw
│   │           ├── script_tuples/
│   │           │   ├── Forc.toml
│   │           │   └── src/
│   │           │       └── main.sw
│   │           ├── script_u128/
│   │           │   ├── Forc.toml
│   │           │   └── src/
│   │           │       └── main.sw
│   │           ├── script_u256/
│   │           │   ├── Forc.toml
│   │           │   └── src/
│   │           │       └── main.sw
│   │           └── script_vectors/
│   │               ├── Forc.toml
│   │               └── src/
│   │                   ├── data_structures.sw
│   │                   ├── eq_impls.sw
│   │                   ├── main.sw
│   │                   └── utils.sw
│   └── tests/
│       ├── aws.rs
│       ├── binary_format.rs
│       ├── bindings.rs
│       ├── configurables.rs
│       ├── contracts.rs
│       ├── debug_utils.rs
│       ├── from_token.rs
│       ├── imports.rs
│       ├── logs.rs
│       ├── predicates.rs
│       ├── providers.rs
│       ├── scripts.rs
│       ├── storage.rs
│       ├── types_contracts.rs
│       ├── types_predicates.rs
│       ├── types_scripts.rs
│       └── wallets.rs
├── examples/
│   ├── codec/
│   │   ├── Cargo.toml
│   │   └── src/
│   │       └── lib.rs
│   ├── contracts/
│   │   ├── Cargo.toml
│   │   └── src/
│   │       └── lib.rs
│   ├── cookbook/
│   │   ├── Cargo.toml
│   │   └── src/
│   │       └── lib.rs
│   ├── debugging/
│   │   ├── Cargo.toml
│   │   └── src/
│   │       └── lib.rs
│   ├── macros/
│   │   ├── Cargo.toml
│   │   └── src/
│   │       └── lib.rs
│   ├── predicates/
│   │   ├── Cargo.toml
│   │   └── src/
│   │       └── lib.rs
│   ├── providers/
│   │   ├── Cargo.toml
│   │   └── src/
│   │       └── lib.rs
│   ├── rust_bindings/
│   │   ├── Cargo.toml
│   │   └── src/
│   │       ├── abi.json
│   │       ├── lib.rs
│   │       └── rust_bindings_formatted.rs
│   ├── types/
│   │   ├── Cargo.toml
│   │   └── src/
│   │       └── lib.rs
│   └── wallets/
│       ├── Cargo.toml
│       └── src/
│           └── lib.rs
├── packages/
│   ├── fuels/
│   │   ├── Cargo.toml
│   │   └── src/
│   │       └── lib.rs
│   ├── fuels-accounts/
│   │   ├── Cargo.toml
│   │   └── src/
│   │       ├── account.rs
│   │       ├── accounts_utils.rs
│   │       ├── coin_cache.rs
│   │       ├── keystore.rs
│   │       ├── lib.rs
│   │       ├── predicate.rs
│   │       ├── provider/
│   │       │   ├── cache.rs
│   │       │   ├── retry_util.rs
│   │       │   ├── retryable_client.rs
│   │       │   ├── supported_fuel_core_version.rs
│   │       │   └── supported_versions.rs
│   │       ├── provider.rs
│   │       ├── schema/
│   │       │   └── schema.sdl
│   │       ├── signers/
│   │       │   ├── fake.rs
│   │       │   ├── kms/
│   │       │   │   ├── aws.rs
│   │       │   │   └── google.rs
│   │       │   ├── kms.rs
│   │       │   └── private_key.rs
│   │       ├── signers.rs
│   │       └── wallet.rs
│   ├── fuels-code-gen/
│   │   ├── Cargo.toml
│   │   └── src/
│   │       ├── error.rs
│   │       ├── lib.rs
│   │       ├── program_bindings/
│   │       │   ├── abigen/
│   │       │   │   ├── abigen_target.rs
│   │       │   │   ├── bindings/
│   │       │   │   │   ├── contract.rs
│   │       │   │   │   ├── function_generator.rs
│   │       │   │   │   ├── predicate.rs
│   │       │   │   │   ├── script.rs
│   │       │   │   │   └── utils.rs
│   │       │   │   ├── bindings.rs
│   │       │   │   ├── configurables.rs
│   │       │   │   └── logs.rs
│   │       │   ├── abigen.rs
│   │       │   ├── custom_types/
│   │       │   │   ├── enums.rs
│   │       │   │   ├── structs.rs
│   │       │   │   └── utils.rs
│   │       │   ├── custom_types.rs
│   │       │   ├── generated_code.rs
│   │       │   ├── resolved_type.rs
│   │       │   └── utils.rs
│   │       ├── program_bindings.rs
│   │       └── utils.rs
│   ├── fuels-core/
│   │   ├── Cargo.toml
│   │   └── src/
│   │       ├── codec/
│   │       │   ├── abi_decoder/
│   │       │   │   ├── bounded_decoder.rs
│   │       │   │   └── decode_as_debug_str.rs
│   │       │   ├── abi_decoder.rs
│   │       │   ├── abi_encoder/
│   │       │   │   └── bounded_encoder.rs
│   │       │   ├── abi_encoder.rs
│   │       │   ├── abi_formatter.rs
│   │       │   ├── function_selector.rs
│   │       │   ├── logs.rs
│   │       │   └── utils.rs
│   │       ├── codec.rs
│   │       ├── lib.rs
│   │       ├── traits/
│   │       │   ├── parameterize.rs
│   │       │   ├── signer.rs
│   │       │   └── tokenizable.rs
│   │       ├── traits.rs
│   │       ├── types/
│   │       │   ├── checksum_address.rs
│   │       │   ├── core/
│   │       │   │   ├── bits.rs
│   │       │   │   ├── bytes.rs
│   │       │   │   ├── identity.rs
│   │       │   │   ├── raw_slice.rs
│   │       │   │   ├── sized_ascii_string.rs
│   │       │   │   └── u256.rs
│   │       │   ├── core.rs
│   │       │   ├── dry_runner.rs
│   │       │   ├── errors.rs
│   │       │   ├── method_descriptor.rs
│   │       │   ├── param_types/
│   │       │   │   ├── from_type_application.rs
│   │       │   │   └── param_type.rs
│   │       │   ├── param_types.rs
│   │       │   ├── token.rs
│   │       │   ├── transaction_builders/
│   │       │   │   ├── blob.rs
│   │       │   │   └── script_tx_estimator.rs
│   │       │   ├── transaction_builders.rs
│   │       │   ├── tx_response.rs
│   │       │   ├── tx_status.rs
│   │       │   ├── wrappers/
│   │       │   │   ├── block.rs
│   │       │   │   ├── chain_info.rs
│   │       │   │   ├── coin.rs
│   │       │   │   ├── coin_type.rs
│   │       │   │   ├── coin_type_id.rs
│   │       │   │   ├── input.rs
│   │       │   │   ├── message.rs
│   │       │   │   ├── message_proof.rs
│   │       │   │   ├── node_info.rs
│   │       │   │   ├── transaction.rs
│   │       │   │   └── transaction_response.rs
│   │       │   └── wrappers.rs
│   │       ├── types.rs
│   │       ├── utils/
│   │       │   ├── constants.rs
│   │       │   └── offsets.rs
│   │       └── utils.rs
│   ├── fuels-macros/
│   │   ├── .gitignore
│   │   ├── Cargo.toml
│   │   ├── src/
│   │   │   ├── abigen/
│   │   │   │   └── parsing.rs
│   │   │   ├── abigen.rs
│   │   │   ├── derive/
│   │   │   │   ├── parameterize.rs
│   │   │   │   ├── tokenizable.rs
│   │   │   │   ├── try_from.rs
│   │   │   │   └── utils.rs
│   │   │   ├── derive.rs
│   │   │   ├── lib.rs
│   │   │   ├── parse_utils/
│   │   │   │   ├── command.rs
│   │   │   │   ├── unique_lit_strs.rs
│   │   │   │   └── unique_name_values.rs
│   │   │   ├── parse_utils.rs
│   │   │   ├── setup_program_test/
│   │   │   │   ├── code_gen.rs
│   │   │   │   ├── parsing/
│   │   │   │   │   ├── command_parser.rs
│   │   │   │   │   ├── commands/
│   │   │   │   │   │   ├── abigen.rs
│   │   │   │   │   │   ├── deploy_contract.rs
│   │   │   │   │   │   ├── initialize_wallet.rs
│   │   │   │   │   │   ├── load_script.rs
│   │   │   │   │   │   └── set_options.rs
│   │   │   │   │   ├── commands.rs
│   │   │   │   │   └── validations.rs
│   │   │   │   └── parsing.rs
│   │   │   └── setup_program_test.rs
│   │   └── tests/
│   │       ├── macro_usage.rs
│   │       └── ui/
│   │           ├── abigen/
│   │           │   ├── duplicate_attribute.rs
│   │           │   ├── duplicate_attribute.stderr
│   │           │   ├── invalid_abi_path.rs
│   │           │   ├── invalid_abi_path.stderr
│   │           │   ├── invalid_abi_value.rs
│   │           │   ├── invalid_abi_value.stderr
│   │           │   ├── invalid_name_value.rs
│   │           │   ├── invalid_name_value.stderr
│   │           │   ├── invalid_program_type.rs
│   │           │   ├── invalid_program_type.stderr
│   │           │   ├── malformed_abi.rs
│   │           │   ├── malformed_abi.stderr
│   │           │   ├── missing_abi_attribute.rs
│   │           │   ├── missing_abi_attribute.stderr
│   │           │   ├── missing_name_attr.rs
│   │           │   ├── missing_name_attr.stderr
│   │           │   ├── unrecognized_attribute.rs
│   │           │   └── unrecognized_attribute.stderr
│   │           ├── derive/
│   │           │   ├── parameterize/
│   │           │   │   ├── attribute_must_be_named_value.rs
│   │           │   │   ├── attribute_must_be_named_value.stderr
│   │           │   │   ├── only_generic_types_are_supported.rs
│   │           │   │   ├── only_generic_types_are_supported.stderr
│   │           │   │   ├── only_one_variant_element_supported.rs
│   │           │   │   ├── only_one_variant_element_supported.stderr
│   │           │   │   ├── struct_like_enum_variants_not_supported.rs
│   │           │   │   ├── struct_like_enum_variants_not_supported.stderr
│   │           │   │   ├── tuple_like_structs_not_supported.rs
│   │           │   │   └── tuple_like_structs_not_supported.stderr
│   │           │   └── tokenizable/
│   │           │       ├── attribute_must_be_named_value.stderr
│   │           │       ├── only_generic_types_are_supported.rs
│   │           │       ├── only_generic_types_are_supported.stderr
│   │           │       ├── only_one_variant_element_supported.rs
│   │           │       ├── only_one_variant_element_supported.stderr
│   │           │       ├── struct_like_enum_variants_not_supported.rs
│   │           │       ├── struct_like_enum_variants_not_supported.stderr
│   │           │       ├── tuple_like_structs_not_supported.rs
│   │           │       └── tuple_like_structs_not_supported.stderr
│   │           └── setup_program_test/
│   │               ├── abigen_command_is_missing.rs
│   │               ├── abigen_command_is_missing.stderr
│   │               ├── duplicate_wallet_command.rs
│   │               ├── duplicate_wallet_command.stderr
│   │               ├── duplicate_wallet_names.rs
│   │               ├── duplicate_wallet_names.stderr
│   │               ├── invalid_path.rs
│   │               ├── invalid_path.stderr
│   │               ├── invalid_project_path.rs
│   │               ├── invalid_project_path.stderr
│   │               ├── unknown_command.rs
│   │               ├── unknown_command.stderr
│   │               ├── unknown_contract.rs
│   │               ├── unknown_contract.stderr
│   │               ├── unknown_options_key.rs
│   │               ├── unknown_options_key.stderr
│   │               ├── unknown_options_value.rs
│   │               └── unknown_options_value.stderr
│   ├── fuels-programs/
│   │   ├── Cargo.toml
│   │   └── src/
│   │       ├── assembly/
│   │       │   ├── contract_call.rs
│   │       │   ├── cursor.rs
│   │       │   └── script_and_predicate_loader.rs
│   │       ├── assembly.rs
│   │       ├── calls/
│   │       │   ├── call_handler.rs
│   │       │   ├── contract_call.rs
│   │       │   ├── receipt_parser.rs
│   │       │   ├── script_call.rs
│   │       │   ├── traits/
│   │       │   │   ├── contract_dep_configurator.rs
│   │       │   │   ├── response_parser.rs
│   │       │   │   └── transaction_tuner.rs
│   │       │   ├── traits.rs
│   │       │   └── utils.rs
│   │       ├── calls.rs
│   │       ├── contract/
│   │       │   ├── loader.rs
│   │       │   ├── regular.rs
│   │       │   └── storage.rs
│   │       ├── contract.rs
│   │       ├── debug.rs
│   │       ├── executable.rs
│   │       ├── lib.rs
│   │       ├── responses/
│   │       │   ├── call.rs
│   │       │   └── submit.rs
│   │       ├── responses.rs
│   │       └── utils.rs
│   └── fuels-test-helpers/
│       ├── Cargo.toml
│       └── src/
│           ├── accounts.rs
│           ├── fuel_bin_service.rs
│           ├── lib.rs
│           ├── node_types.rs
│           ├── service.rs
│           ├── utils.rs
│           └── wallets_config.rs
├── rustfmt.toml
├── scripts/
│   ├── change-log/
│   │   ├── Cargo.toml
│   │   └── src/
│   │       ├── adapters/
│   │       │   └── octocrab.rs
│   │       ├── adapters.rs
│   │       ├── domain/
│   │       │   ├── changelog.rs
│   │       │   └── models.rs
│   │       ├── domain.rs
│   │       ├── lib.rs
│   │       ├── main.rs
│   │       ├── ports/
│   │       │   └── github.rs
│   │       └── ports.rs
│   ├── check-docs/
│   │   ├── Cargo.toml
│   │   ├── src/
│   │   │   ├── lib.rs
│   │   │   └── main.rs
│   │   └── tests/
│   │       ├── harness.rs
│   │       └── test_data/
│   │           ├── docs/
│   │           │   └── src/
│   │           │       ├── SUMMARY.md
│   │           │       ├── test-not-there.md
│   │           │       └── test.md
│   │           ├── test_anchor_data.rs
│   │           └── test_include_data.md
│   ├── fuel-core-version/
│   │   ├── Cargo.toml
│   │   └── src/
│   │       └── main.rs
│   └── versions-replacer/
│       ├── Cargo.toml
│       └── src/
│           ├── lib.rs
│           ├── main.rs
│           ├── metadata.rs
│           └── replace.rs
└── wasm-tests/
    ├── .cargo/
    │   └── config.toml
    ├── Cargo.toml
    └── src/
        └── lib.rs
Download .txt
Showing preview only (213K chars total). Download the full file or copy to clipboard to get everything.
SYMBOL INDEX (2300 symbols across 204 files)

FILE: docs/theme/highlight.js
  function t (line 6) | function t(e){
  class s (line 12) | class s{constructor(e){
    method constructor (line 12) | constructor(e){
    method ignoreMatch (line 14) | ignoreMatch(){this.isMatchIgnored=!0}
  function i (line 14) | function i(e){
  function a (line 16) | function a(e,...t){const n=Object.create(null);for(const t in e)n[t]=e[t]
  class o (line 18) | class o{constructor(e,t){
    method constructor (line 18) | constructor(e,t){
    method addText (line 19) | addText(e){
    method openNode (line 20) | openNode(e){if(!r(e))return;let t=e.kind
    method closeNode (line 24) | closeNode(e){
    method value (line 25) | value(){return this.buffer}
    method span (line 25) | span(e){
  class l (line 26) | class l{constructor(){this.rootNode={
    method constructor (line 26) | constructor(){this.rootNode={
    method top (line 27) | get top(){
    method root (line 28) | get root(){return this.rootNode}
    method add (line 28) | add(e){
    method openNode (line 29) | openNode(e){const t={kind:e,children:[]}
    method closeNode (line 30) | closeNode(){
    method closeAllNodes (line 31) | closeAllNodes(){
    method toJSON (line 32) | toJSON(){return JSON.stringify(this.rootNode,null,4)}
    method walk (line 33) | walk(e){return this.constructor._walk(e,this.rootNode)}
    method _walk (line 33) | static _walk(e,t){
    method _collapse (line 35) | static _collapse(e){
  class c (line 37) | class c extends l{constructor(e){super(),this.options=e}
    method constructor (line 37) | constructor(e){super(),this.options=e}
    method addKeyword (line 38) | addKeyword(e,t){""!==e&&(this.openNode(t),this.addText(e),this.closeNo...
    method addText (line 39) | addText(e){""!==e&&this.add(e)}
    method addSublanguage (line 39) | addSublanguage(e,t){const n=e.root
    method toHTML (line 40) | toHTML(){
    method finalize (line 41) | finalize(){return!0}
  function d (line 41) | function d(e){
  function u (line 42) | function u(e){return b("(?=",e,")")}
  function g (line 43) | function g(e){return b("(?:",e,")*")}
  function h (line 43) | function h(e){return b("(?:",e,")?")}
  function b (line 44) | function b(...e){return e.map((e=>d(e))).join("")}
  function p (line 44) | function p(...e){const t=(e=>{
  function f (line 48) | function f(e){return RegExp(e.toString()+"|").exec("").length-1}
  function E (line 50) | function E(e,{joinWith:t}){let n=0;return e.map((e=>{n+=1;const t=n
  function T (line 82) | function T(e,t){
  function D (line 83) | function D(e,t){
  function j (line 84) | function j(e,t){
  function C (line 87) | function C(e,t){
  function B (line 88) | function B(e,t){
  function L (line 91) | function L(e,t){
  function U (line 99) | function U(e,t,n="keyword"){const s=Object.create(null)
  function H (line 103) | function H(e,t){
  function W (line 107) | function W(e,t,{key:n}){let s=0;const i=e[n],a={},r={}
  function X (line 109) | function X(e){(e=>{
  function q (line 122) | function q(e){
  function V (line 169) | function V(e){
  class Q (line 170) | class Q extends Error{
    method constructor (line 171) | constructor(e,t){super(e),this.name="HTMLInjectionError",this.html=t}
  function f (line 178) | function f(e){
  function m (line 179) | function m(e,t,n){let s="",i=""
  function E (line 185) | function E(e,n,i,a){
  function _ (line 247) | function _(e,n){n=n||d.languages||Object.keys(t);const s=(e=>{
  function w (line 254) | function w(e){let t=null;const n=(e=>{
  function N (line 271) | function N(){
  function x (line 273) | function x(e){return e=(e||"").toLowerCase(),t[e]||t[i[e]]}
  function k (line 274) | function k(e,{languageName:t}){"string"==typeof e&&(e=[e]),e.forEach((e=>{
  function v (line 275) | function v(e){const t=x(e)
  function O (line 276) | function O(e,t){const n=e;a.forEach((e=>{

FILE: e2e/build.rs
  type Downloader (line 10) | struct Downloader {
    constant EXECUTOR_FILE_NAME (line 15) | const EXECUTOR_FILE_NAME: &'static str = "fuel-core-wasm-executor.wasm";
    method new (line 17) | pub fn new() -> Self {
    method should_download (line 25) | pub fn should_download(&self) -> anyhow::Result<bool> {
    method download (line 42) | pub fn download(&self) -> anyhow::Result<()> {
    method make_cargo_watch_downloaded_files (line 89) | fn make_cargo_watch_downloaded_files(&self) {
    method executor_path (line 97) | fn executor_path(&self) -> PathBuf {
    method version_path (line 101) | fn version_path(&self) -> PathBuf {
  function main (line 106) | fn main() {

FILE: e2e/src/aws_kms.rs
  type AwsKms (line 18) | pub struct AwsKms {
    method with_show_logs (line 43) | pub fn with_show_logs(mut self, show_logs: bool) -> Self {
    method start (line 48) | pub async fn start(self) -> Result<AwsKmsProcess> {
  type AwsKmsImage (line 22) | struct AwsKmsImage;
    method name (line 25) | fn name(&self) -> &str {
    method tag (line 29) | fn tag(&self) -> &str {
    method ready_conditions (line 33) | fn ready_conditions(&self) -> Vec<testcontainers::core::WaitFor> {
    method expose_ports (line 37) | fn expose_ports(&self) -> &[ContainerPort] {
  function spawn_log_printer (line 85) | fn spawn_log_printer(container: &testcontainers::ContainerAsync<AwsKmsIm...
  type AwsKmsProcess (line 124) | pub struct AwsKmsProcess {
    method create_signer (line 131) | pub async fn create_signer(&self) -> anyhow::Result<AwsKmsSigner> {
    method client (line 150) | pub fn client(&self) -> &Client {
    method url (line 154) | pub fn url(&self) -> &str {

FILE: e2e/src/e2e_helpers.rs
  function start_aws_kms (line 5) | pub async fn start_aws_kms(logs: bool) -> Result<AwsKmsProcess> {

FILE: e2e/tests/aws.rs
  function fund_aws_wallet (line 15) | async fn fund_aws_wallet() -> Result<()> {
  function deploy_contract (line 43) | async fn deploy_contract() -> Result<()> {

FILE: e2e/tests/binary_format.rs
  constant DATA_OFFSET_LOCATION (line 7) | const DATA_OFFSET_LOCATION: Range<usize> = 8..16;
  constant CONFIGURABLES_OFFSET_LOCATION (line 8) | const CONFIGURABLES_OFFSET_LOCATION: Range<usize> = 16..24;
  constant LEGACY_BINARY_PATH (line 10) | const LEGACY_BINARY_PATH: &str =
  constant NEW_BINARY_PATH (line 12) | const NEW_BINARY_PATH: &str =
  function no_configurables_offset_for_old_sway_binaries (line 16) | fn no_configurables_offset_for_old_sway_binaries() {
  function correct_data_offset_for_old_sway_binaries (line 28) | fn correct_data_offset_for_old_sway_binaries() {
  function correct_data_offset_for_new_sway_binaries (line 41) | fn correct_data_offset_for_new_sway_binaries() {
  function correct_configurables_offset_for_new_sway_binaries (line 54) | fn correct_configurables_offset_for_new_sway_binaries() {
  function read_offset (line 69) | pub fn read_offset(binary: &[u8], range: Range<usize>) -> usize {
  function load (line 75) | fn load(path: &str) -> (Vec<u8>, Executable<Regular>) {

FILE: e2e/tests/bindings.rs
  function setup_program_test_is_hygienic (line 5) | async fn setup_program_test_is_hygienic() {
  function compile_bindings_from_contract_file (line 23) | async fn compile_bindings_from_contract_file() {
  function compile_bindings_from_inline_contract (line 48) | async fn compile_bindings_from_inline_contract() -> Result<()> {
  function shared_types (line 101) | async fn shared_types() -> Result<()> {
  function type_paths_respected (line 220) | async fn type_paths_respected() -> Result<()> {

FILE: e2e/tests/configurables.rs
  function contract_default_configurables (line 8) | async fn contract_default_configurables() -> Result<()> {
  function script_default_configurables (line 56) | async fn script_default_configurables() -> Result<()> {
  function contract_configurables (line 99) | async fn contract_configurables() -> Result<()> {
  function contract_manual_configurables (line 167) | async fn contract_manual_configurables() -> Result<()> {
  function script_configurables (line 235) | async fn script_configurables() -> Result<()> {
  function configurable_encoder_config_is_applied (line 298) | async fn configurable_encoder_config_is_applied() {

FILE: e2e/tests/contracts.rs
  function test_multiple_args (line 22) | async fn test_multiple_args() -> Result<()> {
  function test_contract_calling_contract (line 53) | async fn test_contract_calling_contract() -> Result<()> {
  function test_reverting_transaction (line 129) | async fn test_reverting_transaction() -> Result<()> {
  function test_multiple_read_calls (line 159) | async fn test_multiple_read_calls() -> Result<()> {
  function test_multi_call_beginner (line 196) | async fn test_multi_call_beginner() -> Result<()> {
  function test_multi_call_pro (line 228) | async fn test_multi_call_pro() -> Result<()> {
  function test_contract_call_fee_estimation (line 282) | async fn test_contract_call_fee_estimation() -> Result<()> {
  function contract_call_has_same_estimated_and_used_gas (line 322) | async fn contract_call_has_same_estimated_and_used_gas() -> Result<()> {
  function mult_call_has_same_estimated_and_used_gas (line 359) | async fn mult_call_has_same_estimated_and_used_gas() -> Result<()> {
  function contract_method_call_respects_maturity_and_expiration (line 401) | async fn contract_method_call_respects_maturity_and_expiration() -> Resu...
  function test_auth_msg_sender_from_sdk (line 456) | async fn test_auth_msg_sender_from_sdk() -> Result<()> {
  function test_large_return_data (line 483) | async fn test_large_return_data() -> Result<()> {
  function can_handle_function_called_new (line 541) | async fn can_handle_function_called_new() -> Result<()> {
  function test_contract_setup_macro_deploy_with_salt (line 563) | async fn test_contract_setup_macro_deploy_with_salt() -> Result<()> {
  function test_wallet_getter (line 627) | async fn test_wallet_getter() -> Result<()> {
  function test_connect_wallet (line 649) | async fn test_connect_wallet() -> Result<()> {
  function setup_output_variable_estimation_test (line 705) | async fn setup_output_variable_estimation_test()
  function test_output_variable_estimation (line 730) | async fn test_output_variable_estimation() -> Result<()> {
  function test_output_variable_estimation_multicall (line 774) | async fn test_output_variable_estimation_multicall() -> Result<()> {
  function test_contract_instance_get_balances (line 823) | async fn test_contract_instance_get_balances() -> Result<()> {
  function contract_call_futures_implement_send (line 867) | async fn contract_call_futures_implement_send() -> Result<()> {
  function test_contract_set_estimation (line 902) | async fn test_contract_set_estimation() -> Result<()> {
  function test_output_variable_contract_id_estimation_multicall (line 960) | async fn test_output_variable_contract_id_estimation_multicall() -> Resu...
  function test_contract_call_with_non_default_max_input (line 1027) | async fn test_contract_call_with_non_default_max_input() -> Result<()> {
  function test_add_custom_assets (line 1080) | async fn test_add_custom_assets() -> Result<()> {
  function contract_load_error_messages (line 1149) | async fn contract_load_error_messages() {
  function test_payable_annotation (line 1171) | async fn test_payable_annotation() -> Result<()> {
  function multi_call_from_calls_with_different_account_types (line 1221) | async fn multi_call_from_calls_with_different_account_types() -> Result<...
  function low_level_call (line 1246) | async fn low_level_call() -> Result<()> {
  function db_rocksdb (line 1347) | fn db_rocksdb() {
  function can_configure_decoding_of_contract_return (line 1448) | async fn can_configure_decoding_of_contract_return() -> Result<()> {
  function test_contract_submit_and_response (line 1510) | async fn test_contract_submit_and_response() -> Result<()> {
  function test_heap_type_multicall (line 1552) | async fn test_heap_type_multicall() -> Result<()> {
  function heap_types_correctly_offset_in_create_transactions_w_storage_slots (line 1600) | async fn heap_types_correctly_offset_in_create_transactions_w_storage_sl...
  function test_arguments_with_gas_forwarded (line 1640) | async fn test_arguments_with_gas_forwarded() -> Result<()> {
  function contract_custom_call_no_signatures_strategy (line 1704) | async fn contract_custom_call_no_signatures_strategy() -> Result<()> {
  function contract_encoder_config_is_applied (line 1760) | async fn contract_encoder_config_is_applied() -> Result<()> {
  function test_reentrant_calls (line 1821) | async fn test_reentrant_calls() -> Result<()> {
  function msg_sender_gas_estimation_issue (line 1849) | async fn msg_sender_gas_estimation_issue() {
  function variable_output_estimation_is_optimized (line 1903) | async fn variable_output_estimation_is_optimized() -> Result<()> {
  function config_for_high_price_node (line 1942) | fn config_for_high_price_node() -> (WalletsConfig, NodeConfig, ChainConf...
  function setup_node_with_high_price (line 1966) | async fn setup_node_with_high_price() -> Result<Vec<Wallet>> {
  function setup_node_with_high_price_historical_execution (line 1980) | async fn setup_node_with_high_price_historical_execution()
  function simulations_can_be_made_without_coins (line 2001) | async fn simulations_can_be_made_without_coins() -> Result<()> {
  function simulations_can_be_made_at_specific_block_height (line 2033) | async fn simulations_can_be_made_at_specific_block_height() -> Result<()> {
  function simulations_can_be_made_without_coins_multicall (line 2084) | async fn simulations_can_be_made_without_coins_multicall() -> Result<()> {
  function contract_call_with_non_zero_base_asset_id_and_tip (line 2125) | async fn contract_call_with_non_zero_base_asset_id_and_tip() -> Result<(...
  function max_fee_estimation_respects_tolerance (line 2176) | async fn max_fee_estimation_respects_tolerance() -> Result<()> {
  function blob_contract_deployment (line 2301) | async fn blob_contract_deployment() -> Result<()> {
  function regular_contract_can_be_deployed (line 2349) | async fn regular_contract_can_be_deployed() -> Result<()> {
  function unuploaded_loader_can_be_deployed_directly (line 2383) | async fn unuploaded_loader_can_be_deployed_directly() -> Result<()> {
  function unuploaded_loader_can_upload_blobs_separately_then_deploy (line 2410) | async fn unuploaded_loader_can_upload_blobs_separately_then_deploy() -> ...
  function loader_blob_already_uploaded_not_an_issue (line 2449) | async fn loader_blob_already_uploaded_not_an_issue() -> Result<()> {
  function loader_works_via_proxy (line 2482) | async fn loader_works_via_proxy() -> Result<()> {
  function loader_storage_works_via_proxy (line 2534) | async fn loader_storage_works_via_proxy() -> Result<()> {
  function adjust_for_fee_errors (line 2608) | async fn adjust_for_fee_errors() -> Result<()> {
  function tx_input_output (line 2634) | async fn tx_input_output() -> Result<()> {
  function multicall_tx_input_output (line 2718) | async fn multicall_tx_input_output() -> Result<()> {
  function test_returned_method_descriptors_are_valid (line 2844) | async fn test_returned_method_descriptors_are_valid() -> Result<()> {

FILE: e2e/tests/debug_utils.rs
  function can_debug_single_call_tx (line 11) | async fn can_debug_single_call_tx() -> Result<()> {
  function can_debug_multi_call_tx (line 128) | async fn can_debug_multi_call_tx() -> Result<()> {
  function can_debug_sway_script (line 330) | async fn can_debug_sway_script() -> Result<()> {
  function debugs_sway_script_with_no_configurables (line 384) | async fn debugs_sway_script_with_no_configurables() -> Result<()> {
  function generate_modern_sway_binary (line 412) | fn generate_modern_sway_binary(len: usize) -> Vec<u8> {
  function data_section_offset_not_set_if_out_of_bounds (line 426) | async fn data_section_offset_not_set_if_out_of_bounds() -> Result<()> {
  function can_detect_a_loader_script_w_data_section (line 440) | async fn can_detect_a_loader_script_w_data_section() -> Result<()> {
  function can_detect_a_loader_script_wo_data_section (line 496) | async fn can_detect_a_loader_script_wo_data_section() -> Result<()> {

FILE: e2e/tests/from_token.rs
  function create_struct_from_decoded_tokens (line 4) | async fn create_struct_from_decoded_tokens() -> Result<()> {
  function create_nested_struct_from_decoded_tokens (line 21) | async fn create_nested_struct_from_decoded_tokens() -> Result<()> {

FILE: e2e/tests/imports.rs
  function provides_output_type (line 4) | fn provides_output_type() {

FILE: e2e/tests/logs.rs
  function parse_logged_variables (line 10) | async fn parse_logged_variables() -> Result<()> {
  function parse_logs_values (line 49) | async fn parse_logs_values() -> Result<()> {
  function parse_logs_custom_types (line 84) | async fn parse_logs_custom_types() -> Result<()> {
  function parse_logs_generic_types (line 125) | async fn parse_logs_generic_types() -> Result<()> {
  function decode_logs (line 178) | async fn decode_logs() -> Result<()> {
  function decode_logs_with_no_logs (line 233) | async fn decode_logs_with_no_logs() -> Result<()> {
  function multi_call_log_single_contract (line 261) | async fn multi_call_log_single_contract() -> Result<()> {
  function multi_call_log_multiple_contracts (line 310) | async fn multi_call_log_multiple_contracts() -> Result<()> {
  function multi_call_contract_with_contract_logs (line 363) | async fn multi_call_contract_with_contract_logs() -> Result<()> {
  function assert_revert_containing_msg (line 425) | fn assert_revert_containing_msg(msg: &str, error: Error) {
  function revert_logs (line 437) | async fn revert_logs() -> Result<()> {
  function multi_call_revert_logs_single_contract (line 511) | async fn multi_call_revert_logs_single_contract() -> Result<()> {
  function multi_call_revert_logs_multi_contract (line 579) | async fn multi_call_revert_logs_multi_contract() -> Result<()> {
  function script_decode_logs (line 655) | async fn script_decode_logs() -> Result<()> {
  function contract_with_contract_logs (line 722) | async fn contract_with_contract_logs() -> Result<()> {
  function script_logs_with_contract_logs (line 768) | async fn script_logs_with_contract_logs() -> Result<()> {
  function script_decode_logs_with_type (line 846) | async fn script_decode_logs_with_type() -> Result<()> {
  function script_require_log (line 923) | async fn script_require_log() -> Result<()> {
  function contract_require_from_contract (line 1000) | async fn contract_require_from_contract() -> Result<()> {
  function multi_call_contract_require_from_contract (line 1041) | async fn multi_call_contract_require_from_contract() -> Result<()> {
  function script_require_from_contract (line 1100) | async fn script_require_from_contract() -> Result<()> {
  function loader_script_require_from_loader_contract (line 1139) | async fn loader_script_require_from_loader_contract() -> Result<()> {
  function assert_assert_eq_containing_msg (line 1183) | fn assert_assert_eq_containing_msg<T: std::fmt::Debug>(left: T, right: T...
  function assert_assert_ne_containing_msg (line 1190) | fn assert_assert_ne_containing_msg<T: std::fmt::Debug>(left: T, right: T...
  function contract_asserts_log (line 1198) | async fn contract_asserts_log() -> Result<()> {
  function script_asserts_log (line 1354) | async fn script_asserts_log() -> Result<()> {
  function contract_token_ops_error_messages (line 1512) | async fn contract_token_ops_error_messages() -> Result<()> {
  function log_results (line 1553) | async fn log_results() -> Result<()> {
  function can_configure_decoder_for_contract_log_decoding (line 1592) | async fn can_configure_decoder_for_contract_log_decoding() -> Result<()> {
  function can_configure_decoder_for_script_log_decoding (line 1689) | async fn can_configure_decoder_for_script_log_decoding() -> Result<()> {
  function contract_heap_log (line 1743) | async fn contract_heap_log() -> Result<()> {
  function script_heap_log (line 1800) | async fn script_heap_log() -> Result<()> {
  function contract_panic (line 1851) | async fn contract_panic() -> Result<()> {
  function contract_with_contract_panic (line 1910) | async fn contract_with_contract_panic() -> Result<()> {
  function script_panic (line 1980) | async fn script_panic() -> Result<()> {
  function script_with_contract_panic (line 2035) | async fn script_with_contract_panic() -> Result<()> {

FILE: e2e/tests/predicates.rs
  function assert_address_balance (line 15) | async fn assert_address_balance(
  function get_test_coins_and_messages (line 28) | fn get_test_coins_and_messages(
  function get_test_message_w_data (line 52) | fn get_test_message_w_data(address: Address, amount: u64, nonce: u64) ->...
  function setup_predicate_test (line 64) | async fn setup_predicate_test(
  function transfer_coins_and_messages_to_predicate (line 117) | async fn transfer_coins_and_messages_to_predicate() -> Result<()> {
  function spend_predicate_coins_messages_basic (line 152) | async fn spend_predicate_coins_messages_basic() -> Result<()> {
  function pay_with_predicate (line 207) | async fn pay_with_predicate() -> Result<()> {
  function pay_with_predicate_vector_data (line 269) | async fn pay_with_predicate_vector_data() -> Result<()> {
  function predicate_contract_transfer (line 330) | async fn predicate_contract_transfer() -> Result<()> {
  function predicate_transfer_to_base_layer (line 385) | async fn predicate_transfer_to_base_layer() -> Result<()> {
  function predicate_transfer_with_signed_resources (line 436) | async fn predicate_transfer_with_signed_resources() -> Result<()> {
  function contract_tx_and_call_params_with_predicate (line 512) | async fn contract_tx_and_call_params_with_predicate() -> Result<()> {
  function diff_asset_predicate_payment (line 592) | async fn diff_asset_predicate_payment() -> Result<()> {
  function predicate_default_configurables (line 646) | async fn predicate_default_configurables() -> Result<()> {
  function predicate_configurables (line 706) | async fn predicate_configurables() -> Result<()> {
  function predicate_adjust_fee_persists_message_w_data (line 774) | async fn predicate_adjust_fee_persists_message_w_data() -> Result<()> {
  function predicate_transfer_non_base_asset (line 814) | async fn predicate_transfer_non_base_asset() -> Result<()> {
  function predicate_can_access_manually_added_witnesses (line 877) | async fn predicate_can_access_manually_added_witnesses() -> Result<()> {
  function tx_id_not_changed_after_adding_witnesses (line 944) | async fn tx_id_not_changed_after_adding_witnesses() -> Result<()> {
  function predicate_encoder_config_is_applied (line 1000) | async fn predicate_encoder_config_is_applied() -> Result<()> {
  function predicate_transfers_non_base_asset (line 1030) | async fn predicate_transfers_non_base_asset() -> Result<()> {
  function predicate_with_invalid_data_fails (line 1070) | async fn predicate_with_invalid_data_fails() -> Result<()> {
  function predicate_blobs (line 1110) | async fn predicate_blobs() -> Result<()> {
  function predicate_configurables_in_blobs (line 1177) | async fn predicate_configurables_in_blobs() -> Result<()> {
  function predicate_transfer_respects_maturity_and_expiration (line 1250) | async fn predicate_transfer_respects_maturity_and_expiration() -> Result...
  function transfer_to_predicate (line 1325) | async fn transfer_to_predicate(
  function predicate_tx_input_output (line 1339) | async fn predicate_tx_input_output() -> Result<()> {

FILE: e2e/tests/providers.rs
  function test_provider_launch_and_connect (line 25) | async fn test_provider_launch_and_connect() -> Result<()> {
  function test_network_error (line 71) | async fn test_network_error() -> Result<()> {
  function test_input_message (line 100) | async fn test_input_message() -> Result<()> {
  function test_input_message_pays_fee (line 157) | async fn test_input_message_pays_fee() -> Result<()> {
  function can_increase_block_height (line 207) | async fn can_increase_block_height() -> Result<()> {
  function can_set_custom_block_time (line 227) | async fn can_set_custom_block_time() -> Result<()> {
  function can_retrieve_latest_block_time (line 273) | async fn can_retrieve_latest_block_time() -> Result<()> {
  function contract_deployment_respects_maturity_and_expiration (line 289) | async fn contract_deployment_respects_maturity_and_expiration() -> Resul...
  function test_gas_forwarded_defaults_to_tx_limit (line 342) | async fn test_gas_forwarded_defaults_to_tx_limit() -> Result<()> {
  function test_amount_and_asset_forwarding (line 382) | async fn test_amount_and_asset_forwarding() -> Result<()> {
  function test_gas_errors (line 484) | async fn test_gas_errors() -> Result<()> {
  function test_call_param_gas_errors (line 549) | async fn test_call_param_gas_errors() -> Result<()> {
  function test_get_gas_used (line 591) | async fn test_get_gas_used() -> Result<()> {
  function test_parse_block_time (line 620) | async fn test_parse_block_time() -> Result<()> {
  function test_get_spendable_with_exclusion (line 651) | async fn test_get_spendable_with_exclusion() -> Result<()> {
  function given_a_message (line 712) | fn given_a_message(address: Address, message_amount: u64) -> Message {
  function convert_to_datetime (line 722) | fn convert_to_datetime(timestamp: u64) -> DateTime<Utc> {
  function test_sway_timestamp (line 731) | async fn test_sway_timestamp() -> Result<()> {
  function create_transfer (line 789) | async fn create_transfer(wallet: &Wallet, amount: u64, to: Address) -> R...
  function transactions_with_the_same_utxo (line 806) | async fn transactions_with_the_same_utxo() -> Result<()> {
  function coin_caching (line 835) | async fn coin_caching() -> Result<()> {
  function create_revert_tx (line 878) | async fn create_revert_tx(wallet: &Wallet) -> Result<ScriptTransaction> {
  function test_cache_invalidation_on_await (line 898) | async fn test_cache_invalidation_on_await() -> Result<()> {
  function can_fetch_mint_transactions (line 938) | async fn can_fetch_mint_transactions() -> Result<()> {
  function test_build_with_provider (line 978) | async fn test_build_with_provider() -> Result<()> {
  function send_transaction_and_await_status (line 1011) | async fn send_transaction_and_await_status() -> Result<()> {
  function send_transaction_and_subscribe_status (line 1048) | async fn send_transaction_and_subscribe_status() -> Result<()> {
  function can_produce_blocks_with_trig_never (line 1099) | async fn can_produce_blocks_with_trig_never() -> Result<()> {
  function can_upload_executor_and_trigger_upgrade (line 1136) | async fn can_upload_executor_and_trigger_upgrade() -> Result<()> {
  function tx_respects_policies (line 1185) | async fn tx_respects_policies() -> Result<()> {
  function can_setup_static_gas_price (line 1252) | async fn can_setup_static_gas_price() -> Result<()> {
  function tx_with_witness_data (line 1269) | async fn tx_with_witness_data() -> Result<()> {
  function contract_call_with_impersonation (line 1347) | async fn contract_call_with_impersonation() -> Result<()> {
  function is_account_query_test (line 1389) | async fn is_account_query_test() -> Result<()> {
  function script_tx_get_owner_returns_owner_when_policy_set_multiple_inputs (line 1457) | async fn script_tx_get_owner_returns_owner_when_policy_set_multiple_inpu...
  function script_tx_get_owner_panics_when_policy_unset_multiple_inputs (line 1534) | async fn script_tx_get_owner_panics_when_policy_unset_multiple_inputs() ...
  function script_tx_get_owner_returns_owner_when_policy_unset_all_inputs_same_owner (line 1595) | async fn script_tx_get_owner_returns_owner_when_policy_unset_all_inputs_...

FILE: e2e/tests/scripts.rs
  function main_function_arguments (line 19) | async fn main_function_arguments() -> Result<()> {
  function script_call_has_same_estimated_and_used_gas (line 45) | async fn script_call_has_same_estimated_and_used_gas() -> Result<()> {
  function test_basic_script_with_tx_policies (line 78) | async fn test_basic_script_with_tx_policies() -> Result<()> {
  function test_output_variable_estimation (line 111) | async fn test_output_variable_estimation() -> Result<()> {
  function test_script_struct (line 149) | async fn test_script_struct() -> Result<()> {
  function test_script_enum (line 174) | async fn test_script_enum() -> Result<()> {
  function test_script_array (line 196) | async fn test_script_array() -> Result<()> {
  function can_configure_decoder_on_script_call (line 218) | async fn can_configure_decoder_on_script_call() -> Result<()> {
  function test_script_submit_and_response (line 266) | async fn test_script_submit_and_response() -> Result<()> {
  function test_script_transaction_builder (line 296) | async fn test_script_transaction_builder() -> Result<()> {
  function script_encoder_config_is_applied (line 336) | async fn script_encoder_config_is_applied() {
  function simulations_can_be_made_without_coins (line 383) | async fn simulations_can_be_made_without_coins() -> Result<()> {
  function can_be_run_in_blobs_builder (line 413) | async fn can_be_run_in_blobs_builder() -> Result<()> {
  function can_be_run_in_blobs_high_level (line 461) | async fn can_be_run_in_blobs_high_level() -> Result<()> {
  function high_level_blob_upload_sets_max_fee_tolerance (line 492) | async fn high_level_blob_upload_sets_max_fee_tolerance() -> Result<()> {
  function no_data_section_blob_run (line 558) | async fn no_data_section_blob_run() -> Result<()> {
  function loader_script_calling_loader_proxy (line 578) | async fn loader_script_calling_loader_proxy() -> Result<()> {
  function loader_can_be_presented_as_a_normal_script_with_shifted_configurables (line 632) | async fn loader_can_be_presented_as_a_normal_script_with_shifted_configu...
  function script_call_respects_maturity_and_expiration (line 691) | async fn script_call_respects_maturity_and_expiration() -> Result<()> {
  function script_tx_input_output (line 738) | async fn script_tx_input_output() -> Result<()> {

FILE: e2e/tests/storage.rs
  function test_storage_initialization (line 8) | async fn test_storage_initialization() -> Result<()> {
  function test_init_storage_automatically (line 44) | async fn test_init_storage_automatically() -> Result<()> {
  function storage_load_error_messages (line 90) | async fn storage_load_error_messages() {

FILE: e2e/tests/types_contracts.rs
  function test_methods_typeless_argument (line 9) | async fn test_methods_typeless_argument() -> Result<()> {
  function call_with_empty_return (line 36) | async fn call_with_empty_return() -> Result<()> {
  function call_with_structs (line 56) | async fn call_with_structs() -> Result<()> {
  function abigen_different_structs_same_arg_name (line 100) | async fn abigen_different_structs_same_arg_name() -> Result<()> {
  function nested_structs (line 130) | async fn nested_structs() -> Result<()> {
  function calls_with_empty_struct (line 191) | async fn calls_with_empty_struct() -> Result<()> {
  function can_use_try_into_to_construct_struct_from_bytes (line 225) | async fn can_use_try_into_to_construct_struct_from_bytes() -> Result<()> {
  function test_tuples (line 255) | async fn test_tuples() -> Result<()> {
  function test_evm_address (line 330) | async fn test_evm_address() -> Result<()> {
  function test_array (line 398) | async fn test_array() -> Result<()> {
  function test_arrays_with_custom_types (line 426) | async fn test_arrays_with_custom_types() -> Result<()> {
  function str_in_array (line 469) | async fn str_in_array() -> Result<()> {
  function test_enum_inside_struct (line 510) | async fn test_enum_inside_struct() -> Result<()> {
  function native_types_support (line 553) | async fn native_types_support() -> Result<()> {
  function enum_coding_w_variable_width_variants (line 592) | async fn enum_coding_w_variable_width_variants() -> Result<()> {
  function enum_coding_w_unit_enums (line 634) | async fn enum_coding_w_unit_enums() -> Result<()> {
  function enum_as_input (line 674) | async fn enum_as_input() -> Result<()> {
  function can_use_try_into_to_construct_enum_from_bytes (line 726) | async fn can_use_try_into_to_construct_enum_from_bytes() -> Result<()> {
  function type_inside_enum (line 751) | async fn type_inside_enum() -> Result<()> {
  function test_rust_option_can_be_decoded (line 816) | async fn test_rust_option_can_be_decoded() -> Result<()> {
  function test_rust_option_can_be_encoded (line 869) | async fn test_rust_option_can_be_encoded() -> Result<()> {
  function test_rust_result_can_be_decoded (line 924) | async fn test_rust_result_can_be_decoded() -> Result<()> {
  function test_rust_result_can_be_encoded (line 977) | async fn test_rust_result_can_be_encoded() -> Result<()> {
  function test_identity_can_be_decoded (line 1013) | async fn test_identity_can_be_decoded() -> Result<()> {
  function test_identity_can_be_encoded (line 1059) | async fn test_identity_can_be_encoded() -> Result<()> {
  function test_identity_with_two_contracts (line 1108) | async fn test_identity_with_two_contracts() -> Result<()> {
  function generics_test (line 1155) | async fn generics_test() -> Result<()> {
  function contract_vectors (line 1313) | async fn contract_vectors() -> Result<()> {
  function test_b256 (line 1401) | async fn test_b256() -> Result<()> {
  function test_b512 (line 1440) | async fn test_b512() -> Result<()> {
  function u128_from (line 1480) | fn u128_from(parts: (u64, u64)) -> u128 {
  function test_u128 (line 1489) | async fn test_u128() -> Result<()> {
  function u256_from (line 1528) | fn u256_from(parts: (u64, u64, u64, u64)) -> U256 {
  function test_u256 (line 1542) | async fn test_u256() -> Result<()> {
  function test_base_type_in_vec_output (line 1580) | async fn test_base_type_in_vec_output() -> Result<()> {
  function test_composite_types_in_vec_output (line 1620) | async fn test_composite_types_in_vec_output() -> Result<()> {
  function test_bytes_output (line 1690) | async fn test_bytes_output() -> Result<()> {
  function test_bytes_as_input (line 1714) | async fn test_bytes_as_input() -> Result<()> {
  function contract_raw_slice (line 1751) | async fn contract_raw_slice() -> Result<()> {
  function contract_string_slice (line 1797) | async fn contract_string_slice() -> Result<()> {
  function contract_std_lib_string (line 1824) | async fn contract_std_lib_string() -> Result<()> {
  function test_heap_type_in_enums (line 1863) | async fn test_heap_type_in_enums() -> Result<()> {
  function nested_heap_types (line 1976) | async fn nested_heap_types() -> Result<()> {

FILE: e2e/tests/types_predicates.rs
  function assert_predicate_spendable (line 9) | async fn assert_predicate_spendable(data: Vec<u8>, project_path: impl As...
  function project_binary (line 54) | fn project_binary(project_root: impl AsRef<Path>) -> String {
  function assert_address_balance (line 69) | async fn assert_address_balance(
  function get_test_coins_and_messages (line 82) | fn get_test_coins_and_messages(
  function setup_predicate_test (line 99) | async fn setup_predicate_test(
  function spend_predicate_coins_messages_single_u64 (line 139) | async fn spend_predicate_coins_messages_single_u64() -> Result<()> {
  function spend_predicate_coins_messages_address (line 153) | async fn spend_predicate_coins_messages_address() -> Result<()> {
  function spend_predicate_coins_messages_enums (line 170) | async fn spend_predicate_coins_messages_enums() -> Result<()> {
  function spend_predicate_coins_messages_structs (line 185) | async fn spend_predicate_coins_messages_structs() -> Result<()> {
  function spend_predicate_coins_messages_tuple (line 205) | async fn spend_predicate_coins_messages_tuple() -> Result<()> {
  function spend_predicate_coins_messages_vector (line 220) | async fn spend_predicate_coins_messages_vector() -> Result<()> {
  function spend_predicate_coins_messages_vectors (line 234) | async fn spend_predicate_coins_messages_vectors() -> Result<()> {
  function spend_predicate_coins_messages_generics (line 282) | async fn spend_predicate_coins_messages_generics() -> Result<()> {
  function spend_predicate_coins_messages_bytes_hash (line 300) | async fn spend_predicate_coins_messages_bytes_hash() -> Result<()> {
  function spend_predicate_coins_messages_bytes (line 322) | async fn spend_predicate_coins_messages_bytes() -> Result<()> {
  function spend_predicate_coins_messages_raw_slice (line 342) | async fn spend_predicate_coins_messages_raw_slice() -> Result<()> {
  function u128_from (line 361) | fn u128_from(parts: (u64, u64)) -> u128 {
  function predicate_handles_u128 (line 370) | async fn predicate_handles_u128() -> Result<()> {
  function predicate_handles_b256 (line 383) | async fn predicate_handles_b256() -> Result<()> {
  function u256_from (line 395) | fn u256_from(parts: (u64, u64, u64, u64)) -> U256 {
  function predicate_handles_u256 (line 409) | async fn predicate_handles_u256() -> Result<()> {
  function predicate_handles_std_string (line 422) | async fn predicate_handles_std_string() -> Result<()> {
  function predicate_string_slice (line 435) | async fn predicate_string_slice() -> Result<()> {

FILE: e2e/tests/types_scripts.rs
  function script_b256 (line 7) | async fn script_b256() -> Result<()> {
  function main_function_generic_arguments (line 30) | async fn main_function_generic_arguments() -> Result<()> {
  function main_function_option_result (line 72) | async fn main_function_option_result() -> Result<()> {
  function main_function_tuple_types (line 106) | async fn main_function_tuple_types() -> Result<()> {
  function main_function_vector_arguments (line 151) | async fn main_function_vector_arguments() -> Result<()> {
  function script_raw_slice (line 210) | async fn script_raw_slice() -> Result<()> {
  function main_function_bytes_arguments (line 237) | async fn main_function_bytes_arguments() -> Result<()> {
  function u128_from (line 262) | fn u128_from(parts: (u64, u64)) -> u128 {
  function script_handles_u128 (line 271) | async fn script_handles_u128() -> Result<()> {
  function u256_from (line 294) | fn u256_from(parts: (u64, u64, u64, u64)) -> U256 {
  function script_handles_u256 (line 308) | async fn script_handles_u256() -> Result<()> {
  function script_std_string (line 332) | async fn script_std_string() -> Result<()> {
  function script_string_slice (line 358) | async fn script_string_slice() -> Result<()> {
  function nested_heap_types (line 382) | async fn nested_heap_types() -> Result<()> {

FILE: e2e/tests/wallets.rs
  function assert_address_balance (line 8) | async fn assert_address_balance(
  function test_wallet_balance_api_multi_asset (line 22) | async fn test_wallet_balance_api_multi_asset() -> Result<()> {
  function test_wallet_balance_api_single_asset (line 54) | async fn test_wallet_balance_api_single_asset() -> Result<()> {
  function base_asset_wallet_config (line 85) | fn base_asset_wallet_config(num_wallets: u64) -> WalletsConfig {
  function adjust_fee_empty_transaction (line 95) | async fn adjust_fee_empty_transaction() -> Result<()> {
  function adjust_for_fee_with_message_data_input (line 123) | async fn adjust_for_fee_with_message_data_input() -> Result<()> {
  function adjust_fee_resources_to_transfer_with_base_asset (line 192) | async fn adjust_fee_resources_to_transfer_with_base_asset() -> Result<()> {
  function test_transfer (line 224) | async fn test_transfer() -> Result<()> {
  function send_transfer_transactions (line 260) | async fn send_transfer_transactions() -> Result<()> {
  function transfer_coins_with_change (line 322) | async fn transfer_coins_with_change() -> Result<()> {
  function test_wallet_get_coins (line 357) | async fn test_wallet_get_coins() -> Result<()> {
  function setup_transfer_test (line 378) | async fn setup_transfer_test(amount: u64) -> Result<(Wallet, Wallet)> {
  function transfer_more_than_owned (line 392) | async fn transfer_more_than_owned() -> Result<()> {
  function transfer_coins_of_non_base_asset (line 415) | async fn transfer_coins_of_non_base_asset() -> Result<()> {
  function test_transfer_with_multiple_signatures (line 454) | async fn test_transfer_with_multiple_signatures() -> Result<()> {
  function wallet_transfer_respects_maturity_and_expiration (line 506) | async fn wallet_transfer_respects_maturity_and_expiration() -> Result<()> {

FILE: examples/codec/src/lib.rs
  function encoding_a_type (line 9) | fn encoding_a_type() -> Result<()> {
  function encoding_via_macro (line 28) | fn encoding_via_macro() -> Result<()> {
  function decoding_example (line 43) | fn decoding_example() -> Result<()> {
  function decoding_example_try_into (line 70) | fn decoding_example_try_into() -> Result<()> {
  function configuring_the_decoder (line 88) | fn configuring_the_decoder() -> Result<()> {
  function configuring_the_encoder (line 103) | fn configuring_the_encoder() -> Result<()> {

FILE: examples/contracts/src/lib.rs
  function instantiate_client (line 20) | async fn instantiate_client() -> Result<()> {
  function deploy_contract (line 40) | async fn deploy_contract() -> Result<()> {
  function setup_program_test_example (line 64) | async fn setup_program_test_example() -> Result<()> {
  function contract_call_cost_estimation (line 94) | async fn contract_call_cost_estimation() -> Result<()> {
  function deploy_with_parameters (line 134) | async fn deploy_with_parameters() -> std::result::Result<(), Box<dyn std...
  function deploy_with_multiple_wallets (line 231) | async fn deploy_with_multiple_wallets() -> Result<()> {
  function contract_tx_and_call_params (line 283) | async fn contract_tx_and_call_params() -> Result<()> {
  function token_ops_tests (line 354) | async fn token_ops_tests() -> Result<()> {
  function dependency_estimation (line 448) | async fn dependency_estimation() -> Result<()> {
  function get_contract_outputs (line 520) | async fn get_contract_outputs() -> Result<()> {
  function call_params_gas (line 543) | async fn call_params_gas() -> Result<()> {
  function multi_call_example (line 581) | async fn multi_call_example() -> Result<()> {
  function multi_call_cost_estimation (line 641) | async fn multi_call_cost_estimation() -> Result<()> {
  function connect_wallet (line 687) | async fn connect_wallet() -> Result<()> {
  function custom_assets_example (line 724) | async fn custom_assets_example() -> Result<()> {
  function low_level_call_example (line 769) | async fn low_level_call_example() -> Result<()> {
  function configure_the_return_value_decoder (line 851) | async fn configure_the_return_value_decoder() -> Result<()> {
  function storage_slots_override (line 883) | async fn storage_slots_override() -> Result<()> {
  function contract_custom_call (line 912) | async fn contract_custom_call() -> Result<()> {
  function configure_encoder_config (line 957) | async fn configure_encoder_config() -> Result<()> {
  function contract_call_impersonation (line 989) | async fn contract_call_impersonation() -> Result<()> {
  function deploying_via_loader (line 1045) | async fn deploying_via_loader() -> Result<()> {
  function decoding_script_transactions (line 1206) | async fn decoding_script_transactions() -> Result<()> {

FILE: examples/cookbook/src/lib.rs
  function liquidity (line 25) | async fn liquidity() -> Result<()> {
  function custom_chain (line 104) | async fn custom_chain() -> Result<()> {
  function transfer_multiple (line 147) | async fn transfer_multiple() -> Result<()> {
  function create_or_use_rocksdb (line 217) | async fn create_or_use_rocksdb() -> Result<()> {
  function custom_transaction (line 235) | async fn custom_transaction() -> Result<()> {

FILE: examples/debugging/src/lib.rs
  function encode_fn_selector (line 13) | fn encode_fn_selector() {
  function decoded_debug_matches_rust_debug (line 32) | fn decoded_debug_matches_rust_debug() -> Result<()> {

FILE: examples/macros/src/lib.rs
  function example_of_abigen_usage (line 8) | fn example_of_abigen_usage() {
  function macro_deriving (line 32) | fn macro_deriving() {
  function macro_deriving_extra (line 51) | fn macro_deriving_extra() {

FILE: examples/predicates/src/lib.rs
  function predicate_example (line 12) | async fn predicate_example() -> Result<()> {
  function predicate_data_example (line 123) | async fn predicate_data_example() -> Result<()> {

FILE: examples/providers/src/lib.rs
  function connect_to_fuel_node (line 9) | async fn connect_to_fuel_node() -> Result<()> {
  function query_the_blockchain (line 40) | async fn query_the_blockchain() -> Result<()> {

FILE: examples/rust_bindings/src/lib.rs
  function transform_json_to_bindings (line 7) | async fn transform_json_to_bindings() -> Result<()> {

FILE: examples/rust_bindings/src/rust_bindings_formatted.rs
  type MyContract (line 4) | pub struct MyContract<A: ::fuels::accounts::Account> {
  function new (line 11) | pub fn new(contract_id: ::fuels::types::ContractId, account: A) -> Self {
  function contract_id (line 23) | pub fn contract_id(&self) -> &::fuels::types::ContractId {
  function account (line 26) | pub fn account(&self) -> A {
  function with_account (line 29) | pub fn with_account<U: ::fuels::accounts::Account>(self, account: U) -> ...
  function with_encoder_config (line 37) | pub fn with_encoder_config(
  function get_balances (line 44) | pub async fn get_balances(
  function methods (line 54) | pub fn methods(&self) -> MyContractMethods<A> {
  type MyContractMethods (line 63) | pub struct MyContractMethods<A: ::fuels::accounts::Account> {
  function increment_counter (line 72) | pub fn increment_counter(
  function initialize_counter (line 90) | pub fn initialize_counter(
  function id (line 110) | fn id(&self) -> ::fuels::types::ContractId {
  function log_decoder (line 113) | fn log_decoder(&self) -> ::fuels::core::codec::LogDecoder {
  type MyContractConfigurables (line 118) | pub struct MyContractConfigurables {
    method new (line 123) | pub fn new(encoder_config: ::fuels::core::codec::EncoderConfig) -> Self {
  function from (line 131) | fn from(config: MyContractConfigurables) -> Self {

FILE: examples/types/src/lib.rs
  function bytes32 (line 9) | async fn bytes32() -> Result<()> {
  function address (line 52) | async fn address() -> Result<()> {
  function asset_id (line 100) | async fn asset_id() -> Result<()> {
  function contract_id (line 131) | async fn contract_id() -> Result<()> {
  function type_conversion (line 171) | async fn type_conversion() -> Result<()> {
  function unused_generics (line 198) | async fn unused_generics() -> Result<()> {

FILE: examples/wallets/src/lib.rs
  function create_random_wallet (line 14) | async fn create_random_wallet() -> Result<()> {
  function create_wallet_from_secret_key (line 29) | async fn create_wallet_from_secret_key() -> std::result::Result<(), Box<...
  function create_wallet_from_mnemonic (line 51) | async fn create_wallet_from_mnemonic() -> Result<()> {
  function create_and_store_mnemonic_key (line 80) | async fn create_and_store_mnemonic_key() -> Result<()> {
  function wallet_transfer (line 104) | async fn wallet_transfer() -> Result<()> {
  function wallet_contract_transfer (line 141) | async fn wallet_contract_transfer() -> Result<()> {
  function setup_multiple_wallets (line 205) | async fn setup_multiple_wallets() -> Result<()> {
  function setup_wallet_multiple_assets (line 231) | async fn setup_wallet_multiple_assets() -> Result<()> {
  function setup_wallet_custom_assets (line 255) | async fn setup_wallet_custom_assets() -> std::result::Result<(), Box<dyn...
  function get_balances (line 306) | async fn get_balances() -> Result<()> {
  function wallet_transfer_to_base_layer (line 337) | async fn wallet_transfer_to_base_layer() -> Result<()> {

FILE: packages/fuels-accounts/src/account.rs
  type WithdrawToBaseResponse (line 30) | pub struct WithdrawToBaseResponse {
  type ViewOnlyAccount (line 37) | pub trait ViewOnlyAccount: Send + Sync {
    method address (line 38) | fn address(&self) -> Address;
    method try_provider (line 40) | fn try_provider(&self) -> Result<&Provider>;
    method get_transactions (line 42) | async fn get_transactions(
    method get_coins (line 53) | async fn get_coins(&self, asset_id: AssetId) -> Result<Vec<Coin>> {
    method get_asset_balance (line 63) | async fn get_asset_balance(&self, asset_id: &AssetId) -> Result<u128> {
    method get_messages (line 70) | async fn get_messages(&self) -> Result<Vec<Message>> {
    method get_balances (line 77) | async fn get_balances(&self) -> Result<HashMap<String, u128>> {
    method get_spendable_resources (line 84) | async fn get_spendable_resources(
    method get_asset_outputs_for_amount (line 105) | fn get_asset_outputs_for_amount(
    method get_asset_inputs_for_amount (line 121) | async fn get_asset_inputs_for_amount(
    method adjust_for_fee (line 132) | async fn adjust_for_fee<Tb: TransactionBuilder + Sync>(
  type Account (line 166) | pub trait Account: ViewOnlyAccount {
    method add_witnesses (line 168) | fn add_witnesses<Tb: TransactionBuilder>(&self, _tb: &mut Tb) -> Resul...
    method transfer (line 175) | async fn transfer(
    method force_transfer_to_contract (line 224) | async fn force_transfer_to_contract(
    method withdraw_to_base_layer (line 291) | async fn withdraw_to_base_layer(
  type MockDryRunner (line 349) | struct MockDryRunner {
  method dry_run (line 355) | async fn dry_run(&self, _: FuelTransaction) -> Result<DryRun> {
  method consensus_parameters (line 363) | async fn consensus_parameters(&self) -> Result<ConsensusParameters> {
  method estimate_gas_price (line 367) | async fn estimate_gas_price(&self, _block_header: u32) -> Result<u64> {
  method estimate_predicates (line 371) | async fn estimate_predicates(
  function sign_tx_and_verify (line 381) | async fn sign_tx_and_verify() -> std::result::Result<(), Box<dyn std::er...

FILE: packages/fuels-accounts/src/accounts_utils.rs
  function extract_message_nonce (line 16) | pub fn extract_message_nonce(receipts: &[Receipt]) -> Option<Nonce> {
  function calculate_missing_base_amount (line 20) | pub async fn calculate_missing_base_amount(
  function available_base_assets_and_amount (line 42) | pub fn available_base_assets_and_amount(
  function split_into_utxo_ids_and_nonces (line 77) | pub fn split_into_utxo_ids_and_nonces(
  function is_consuming_utxos (line 92) | fn is_consuming_utxos(tb: &impl TransactionBuilder) -> bool {
  function add_base_change_if_needed (line 98) | pub fn add_base_change_if_needed(
  function try_provider_error (line 114) | pub(crate) fn try_provider_error() -> Error {

FILE: packages/fuels-accounts/src/coin_cache.rs
  type CoinCacheKey (line 10) | type CoinCacheKey = (Address, AssetId);
  type CoinsCache (line 13) | pub(crate) struct CoinsCache {
    method new (line 25) | pub fn new(ttl: Duration) -> Self {
    method insert_multiple (line 32) | pub fn insert_multiple(
    method get_active (line 44) | pub fn get_active(&mut self, key: &CoinCacheKey) -> HashSet<CoinTypeId> {
    method remove_items (line 56) | pub fn remove_items(
    method remove (line 67) | fn remove(&mut self, key: &CoinCacheKey, id: CoinTypeId) {
    method remove_expired_entries (line 74) | fn remove_expired_entries(&mut self, key: &CoinCacheKey) {
  method default (line 19) | fn default() -> Self {
  type CoinCacheItem (line 82) | struct CoinCacheItem {
    method new (line 100) | pub fn new(id: CoinTypeId) -> Self {
    method is_valid (line 107) | pub fn is_valid(&self, ttl: Duration) -> bool {
  method eq (line 88) | fn eq(&self, other: &Self) -> bool {
  method hash (line 94) | fn hash<H: Hasher>(&self, state: &mut H) {
  function get_items (line 119) | fn get_items() -> (CoinTypeId, CoinTypeId) {
  function test_insert_and_get_active (line 127) | fn test_insert_and_get_active() {
  function test_insert_and_expire_items (line 144) | async fn test_insert_and_expire_items() {
  function test_get_active_no_items (line 169) | fn test_get_active_no_items() {
  function test_remove_items (line 179) | fn test_remove_items() {

FILE: packages/fuels-accounts/src/keystore.rs
  type KeySaved (line 9) | pub struct KeySaved {
    method key (line 16) | pub fn key(&self) -> &SecretKey {
    method uuid (line 20) | pub fn uuid(&self) -> &str {
  type Keystore (line 27) | pub struct Keystore {
    method new (line 33) | pub fn new<P: AsRef<Path>>(dir: P) -> Self {
    method load_key (line 40) | pub fn load_key<S>(&self, uuid: &str, password: S) -> Result<SecretKey>
    method save_key (line 54) | pub fn save_key<R, S>(&self, key: SecretKey, password: S, mut rng: R) ...
  function wallet_from_mnemonic_phrase (line 74) | async fn wallet_from_mnemonic_phrase() -> Result<()> {
  function encrypt_and_store_keys_from_mnemonic (line 99) | async fn encrypt_and_store_keys_from_mnemonic() -> Result<()> {

FILE: packages/fuels-accounts/src/lib.rs
  function sdl_is_the_same_as_from_fuel (line 23) | fn sdl_is_the_same_as_from_fuel() {

FILE: packages/fuels-accounts/src/predicate.rs
  type Predicate (line 16) | pub struct Predicate {
    method address (line 25) | pub fn address(&self) -> Address {
    method code (line 29) | pub fn code(&self) -> &[u8] {
    method data (line 33) | pub fn data(&self) -> &[u8] {
    method calculate_address (line 37) | pub fn calculate_address(code: &[u8]) -> Address {
    method load_from (line 41) | pub fn load_from(file_path: &str) -> Result<Self> {
    method from_code (line 51) | pub fn from_code(code: Vec<u8>) -> Self {
    method with_data (line 61) | pub fn with_data(mut self, data: Vec<u8>) -> Self {
    method with_code (line 66) | pub fn with_code(self, code: Vec<u8>) -> Self {
    method with_configurables (line 75) | pub fn with_configurables(mut self, configurables: impl Into<Configura...
    method provider (line 86) | pub fn provider(&self) -> Option<&Provider> {
    method set_provider (line 90) | pub fn set_provider(&mut self, provider: Provider) {
    method with_provider (line 94) | pub fn with_provider(self, provider: Provider) -> Self {
  method address (line 105) | fn address(&self) -> Address {
  method try_provider (line 109) | fn try_provider(&self) -> Result<&Provider> {
  method get_asset_inputs_for_amount (line 113) | async fn get_asset_inputs_for_amount(

FILE: packages/fuels-accounts/src/provider.rs
  constant NUM_RESULTS_PER_REQUEST (line 59) | const NUM_RESULTS_PER_REQUEST: i32 = 100;
  type TransactionCost (line 63) | pub struct TransactionCost {
  type ResourceQueries (line 72) | pub(crate) struct ResourceQueries {
    method exclusion_query (line 80) | pub fn exclusion_query(&self) -> Option<(Vec<UtxoId>, Vec<Nonce>)> {
    method spend_query (line 88) | pub fn spend_query(&self, base_asset_id: AssetId) -> Vec<(AssetId, u12...
  type ResourceFilter (line 95) | pub struct ResourceFilter {
    method owner (line 105) | pub fn owner(&self) -> Address {
    method resource_queries (line 109) | pub(crate) fn resource_queries(&self) -> ResourceQueries {
  type Provider (line 123) | pub struct Provider {
    method from (line 130) | pub async fn from(addr: impl Into<SocketAddr>) -> Result<Self> {
    method client (line 136) | pub fn client(&self) -> &FuelClient {
    method set_cache_ttl (line 140) | pub fn set_cache_ttl(&mut self, ttl: TtlConfig) {
    method clear_cache (line 144) | pub async fn clear_cache(&self) {
    method healthy (line 148) | pub async fn healthy(&self) -> Result<bool> {
    method connect (line 153) | pub async fn connect(url: impl AsRef<str>) -> Result<Provider> {
    method url (line 167) | pub fn url(&self) -> &str {
    method blob (line 171) | pub async fn blob(&self, blob_id: BlobId) -> Result<Option<Blob>> {
    method blob_exists (line 179) | pub async fn blob_exists(&self, blob_id: BlobId) -> Result<bool> {
    method send_transaction_and_await_commit (line 184) | pub async fn send_transaction_and_await_commit<T: Transaction>(
    method send_transaction_and_await_status (line 218) | pub async fn send_transaction_and_await_status<T: Transaction>(
    method prepare_transaction_for_sending (line 266) | async fn prepare_transaction_for_sending<T: Transaction>(&self, mut tx...
    method send_transaction (line 287) | pub async fn send_transaction<T: Transaction>(&self, tx: T) -> Result<...
    method await_transaction_commit (line 292) | pub async fn await_transaction_commit<T: Transaction>(&self, id: TxId)...
    method submit (line 301) | async fn submit<T: Transaction>(&self, tx: T) -> Result<TxId> {
    method find_in_cache (line 306) | async fn find_in_cache<'a>(
    method check_inputs_already_in_cache (line 330) | async fn check_inputs_already_in_cache<'a>(
    method submit (line 352) | async fn submit<T: Transaction>(&self, tx: T) -> Result<TxId> {
    method tx_status (line 365) | pub async fn tx_status(&self, tx_id: &TxId) -> Result<TxStatus> {
    method subscribe_transaction_status (line 373) | pub async fn subscribe_transaction_status<'a>(
    method chain_info (line 386) | pub async fn chain_info(&self) -> Result<ChainInfo> {
    method consensus_parameters (line 390) | pub async fn consensus_parameters(&self) -> Result<ConsensusParameters> {
    method node_info (line 394) | pub async fn node_info(&self) -> Result<NodeInfo> {
    method latest_gas_price (line 398) | pub async fn latest_gas_price(&self) -> Result<LatestGasPrice> {
    method estimate_gas_price (line 402) | pub async fn estimate_gas_price(&self, block_horizon: u32) -> Result<E...
    method dry_run (line 409) | pub async fn dry_run(&self, tx: impl Transaction) -> Result<TxStatus> {
    method dry_run_multiple (line 423) | pub async fn dry_run_multiple(
    method dry_run_opt (line 436) | pub async fn dry_run_opt(
    method dry_run_opt_multiple (line 461) | pub async fn dry_run_opt_multiple(
    method get_coins (line 483) | pub async fn get_coins(&self, from: &Address, asset_id: AssetId) -> Re...
    method request_coins_to_spend (line 512) | async fn request_coins_to_spend(&self, filter: ResourceFilter) -> Resu...
    method get_spendable_resources (line 538) | pub async fn get_spendable_resources(&self, filter: ResourceFilter) ->...
    method get_spendable_resources (line 547) | pub async fn get_spendable_resources(
    method extend_filter_with_cached (line 557) | async fn extend_filter_with_cached(&self, filter: &mut ResourceFilter)...
    method get_asset_balance (line 594) | pub async fn get_asset_balance(&self, address: &Address, asset_id: &As...
    method get_contract_asset_balance (line 602) | pub async fn get_contract_asset_balance(
    method get_balances (line 616) | pub async fn get_balances(&self, address: &Address) -> Result<HashMap<...
    method get_contract_balances (line 663) | pub async fn get_contract_balances(
    method get_transaction_by_id (line 700) | pub async fn get_transaction_by_id(&self, tx_id: &TxId) -> Result<Opti...
    method get_transactions (line 708) | pub async fn get_transactions(
    method get_transactions_by_owner (line 723) | pub async fn get_transactions_by_owner(
    method latest_block_height (line 741) | pub async fn latest_block_height(&self) -> Result<u32> {
    method latest_block_time (line 745) | pub async fn latest_block_time(&self) -> Result<Option<DateTime<Utc>>> {
    method produce_blocks (line 749) | pub async fn produce_blocks(
    method block (line 763) | pub async fn block(&self, block_id: &Bytes32) -> Result<Option<Block>> {
    method block_by_height (line 771) | pub async fn block_by_height(&self, height: BlockHeight) -> Result<Opt...
    method get_blocks (line 780) | pub async fn get_blocks(
    method estimate_transaction_cost (line 794) | pub async fn estimate_transaction_cost<T: Transaction>(
    method apply_tolerance (line 820) | fn apply_tolerance(value: u64, tolerance: f64) -> u64 {
    method get_script_gas_used (line 824) | fn get_script_gas_used(receipts: &[Receipt]) -> u64 {
    method get_messages (line 836) | pub async fn get_messages(&self, from: &Address) -> Result<Vec<Message...
    method get_message_proof (line 864) | pub async fn get_message_proof(
    method is_user_account (line 883) | pub async fn is_user_account(&self, address: impl Into<Bytes32>) -> Re...
    method with_retry_config (line 889) | pub fn with_retry_config(mut self, retry_config: RetryConfig) -> Self {
    method contract_exists (line 895) | pub async fn contract_exists(&self, contract_id: &ContractId) -> Resul...
    method uncached_client (line 899) | fn uncached_client(&self) -> &RetryableClient {
    method uncached_client_mut (line 903) | fn uncached_client_mut(&mut self) -> &mut RetryableClient {
  method dry_run (line 910) | async fn dry_run(&self, tx: FuelTransaction) -> Result<DryRun> {
  method estimate_gas_price (line 942) | async fn estimate_gas_price(&self, block_horizon: u32) -> Result<u64> {
  method consensus_parameters (line 946) | async fn consensus_parameters(&self) -> Result<ConsensusParameters> {
  method estimate_predicates (line 950) | async fn estimate_predicates(

FILE: packages/fuels-accounts/src/provider/cache.rs
  type CacheableRpcs (line 12) | pub trait CacheableRpcs {
    method consensus_parameters (line 13) | async fn consensus_parameters(&self) -> Result<ConsensusParameters>;
    method node_info (line 14) | async fn node_info(&self) -> Result<NodeInfo>;
    method consensus_parameters (line 102) | async fn consensus_parameters(&self) -> Result<ConsensusParameters> {
    method node_info (line 130) | async fn node_info(&self) -> Result<NodeInfo> {
  type Clock (line 17) | trait Clock {
    method now (line 18) | fn now(&self) -> DateTime<Utc>;
    method now (line 49) | fn now(&self) -> DateTime<Utc> {
    method now (line 185) | fn now(&self) -> DateTime<Utc> {
  type TtlConfig (line 22) | pub struct TtlConfig {
  method default (line 27) | fn default() -> Self {
  type Dated (line 35) | struct Dated<T> {
  function is_stale (line 41) | fn is_stale(&self, now: DateTime<Utc>, ttl: Duration) -> bool {
  type SystemClock (line 47) | pub struct SystemClock;
  type CachedClient (line 55) | pub struct CachedClient<Client, Clock = SystemClock> {
  function new (line 64) | pub fn new(client: Client, ttl: TtlConfig, clock: Clock) -> Self {
  function set_ttl (line 74) | pub fn set_ttl(&mut self, ttl: TtlConfig) {
  function inner (line 78) | pub fn inner(&self) -> &Client {
  function inner_mut (line 82) | pub fn inner_mut(&mut self) -> &mut Client {
  function clear (line 91) | pub async fn clear(&self) {
  type TestClock (line 174) | struct TestClock {
    method update_time (line 179) | fn update_time(&self, time: DateTime<Utc>) {
  function initial_call_to_consensus_params_fwd_to_api (line 191) | async fn initial_call_to_consensus_params_fwd_to_api() {
  function new_call_to_consensus_params_cached (line 207) | async fn new_call_to_consensus_params_cached() {
  function if_ttl_expired_cache_is_updated (line 231) | async fn if_ttl_expired_cache_is_updated() {
  function clear_cache_clears_consensus_params_cache (line 278) | async fn clear_cache_clears_consensus_params_cache() {
  function dummy_node_info (line 316) | fn dummy_node_info() -> NodeInfo {
  function initial_call_to_node_info_fwd_to_api (line 339) | async fn initial_call_to_node_info_fwd_to_api() {
  function new_call_to_node_info_cached (line 355) | async fn new_call_to_node_info_cached() {
  function if_ttl_expired_node_info_cache_is_updated (line 378) | async fn if_ttl_expired_node_info_cache_is_updated() {

FILE: packages/fuels-accounts/src/provider/retry_util.rs
  type Backoff (line 29) | pub enum Backoff {
    method wait_duration (line 43) | pub fn wait_duration(&self, attempt: u32) -> Duration {
  method default (line 37) | fn default() -> Self {
  type RetryConfig (line 77) | pub struct RetryConfig {
    method new (line 84) | pub fn new(max_attempts: u32, interval: Backoff) -> Result<Self> {
  method default (line 96) | fn default() -> Self {
  function retry (line 125) | pub(crate) async fn retry<Fut, T, ShouldRetry>(
  function returns_last_received_response (line 162) | async fn returns_last_received_response() -> Result<()> {
  function stops_retrying_when_predicate_is_satisfied (line 189) | async fn stops_retrying_when_predicate_is_satisfied() -> Result<()> {
  function retry_respects_delay_between_attempts_fixed (line 210) | async fn retry_respects_delay_between_attempts_fixed() -> Result<()> {
  function retry_respects_delay_between_attempts_linear (line 251) | async fn retry_respects_delay_between_attempts_linear() -> Result<()> {
  function retry_respects_delay_between_attempts_exponential (line 293) | async fn retry_respects_delay_between_attempts_exponential() -> Result<(...

FILE: packages/fuels-accounts/src/provider/retryable_client.rs
  type RequestError (line 30) | pub(crate) enum RequestError {
  type RequestResult (line 35) | type RequestResult<T> = std::result::Result<T, RequestError>;
  method from (line 38) | fn from(e: RequestError) -> Self {
  type RetryableClient (line 44) | pub(crate) struct RetryableClient {
    method connect (line 63) | pub(crate) async fn connect(url: impl AsRef<str>, retry_config: RetryC...
    method version_compatibility_warning (line 78) | fn version_compatibility_warning(node_info: &NodeInfo) -> Result<Optio...
    method url (line 102) | pub(crate) fn url(&self) -> &str {
    method client (line 106) | pub fn client(&self) -> &FuelClient {
    method set_retry_config (line 110) | pub(crate) fn set_retry_config(&mut self, retry_config: RetryConfig) {
    method wrap (line 114) | async fn wrap<T, Fut>(&self, action: impl Fn() -> Fut) -> RequestResul...
    method health (line 131) | pub async fn health(&self) -> RequestResult<bool> {
    method transaction (line 135) | pub async fn transaction(&self, id: &TxId) -> RequestResult<Option<Tra...
    method chain_info (line 139) | pub(crate) async fn chain_info(&self) -> RequestResult<ChainInfo> {
    method await_transaction_commit (line 143) | pub async fn await_transaction_commit(&self, id: &TxId) -> RequestResu...
    method submit_and_await_commit (line 147) | pub async fn submit_and_await_commit(
    method submit_and_await_status (line 154) | pub async fn submit_and_await_status<'a>(
    method subscribe_transaction_status (line 166) | pub async fn subscribe_transaction_status<'a>(
    method submit (line 178) | pub async fn submit(&self, tx: &Transaction) -> RequestResult<Transact...
    method transaction_status (line 182) | pub async fn transaction_status(&self, id: &TxId) -> RequestResult<Tra...
    method node_info (line 186) | pub async fn node_info(&self) -> RequestResult<NodeInfo> {
    method blob (line 190) | pub async fn blob(&self, blob_id: BlobId) -> RequestResult<Option<Blob...
    method blob_exists (line 194) | pub async fn blob_exists(&self, blob_id: BlobId) -> RequestResult<bool> {
    method latest_gas_price (line 198) | pub async fn latest_gas_price(&self) -> RequestResult<LatestGasPrice> {
    method estimate_gas_price (line 202) | pub async fn estimate_gas_price(&self, block_horizon: u32) -> RequestR...
    method estimate_predicates (line 208) | pub async fn estimate_predicates(&self, tx: &Transaction) -> RequestRe...
    method dry_run (line 217) | pub async fn dry_run(
    method dry_run_opt (line 224) | pub async fn dry_run_opt(
    method coins (line 238) | pub async fn coins(
    method coins_to_spend (line 248) | pub async fn coins_to_spend(
    method balance (line 261) | pub async fn balance(
    method contract_balance (line 269) | pub async fn contract_balance(
    method contract_balances (line 277) | pub async fn contract_balances(
    method balances (line 286) | pub async fn balances(
    method transactions (line 295) | pub async fn transactions(
    method transactions_by_owner (line 303) | pub async fn transactions_by_owner(
    method produce_blocks (line 312) | pub async fn produce_blocks(
    method block (line 324) | pub async fn block(&self, id: &BlockId) -> RequestResult<Option<Block>> {
    method block_by_height (line 328) | pub async fn block_by_height(&self, height: BlockHeight) -> RequestRes...
    method blocks (line 332) | pub async fn blocks(
    method messages (line 339) | pub async fn messages(
    method message_proof (line 349) | pub async fn message_proof(
    method contract_exists (line 363) | pub async fn contract_exists(&self, contract_id: &ContractId) -> Reque...
    method is_user_account (line 380) | pub async fn is_user_account(&self, address: [u8; 32]) -> Result<bool> {
  method consensus_parameters (line 53) | async fn consensus_parameters(&self) -> Result<ConsensusParameters> {
  method node_info (line 57) | async fn node_info(&self) -> Result<NodeInfo> {
  type IsUserAccountVariables (line 411) | pub struct IsUserAccountVariables {
  type IsUserAccountQuery (line 423) | pub struct IsUserAccountQuery {
  type ContractExistsQuery (line 438) | pub struct ContractExistsQuery {

FILE: packages/fuels-accounts/src/provider/supported_fuel_core_version.rs
  constant SUPPORTED_FUEL_CORE_VERSION (line 1) | pub const SUPPORTED_FUEL_CORE_VERSION: semver::Version = semver::Version...

FILE: packages/fuels-accounts/src/provider/supported_versions.rs
  type VersionCompatibility (line 6) | pub(crate) struct VersionCompatibility {
  function compare_node_compatibility (line 13) | pub(crate) fn compare_node_compatibility(network_version: Version) -> Ve...
  function check_version_compatibility (line 17) | fn check_version_compatibility(
  function should_validate_all_possible_version_mismatches (line 38) | fn should_validate_all_possible_version_mismatches() {

FILE: packages/fuels-accounts/src/signers.rs
  constant BIP44_PURPOSE (line 2) | pub const BIP44_PURPOSE: &str = "44'";
  constant COIN_TYPE (line 3) | pub const COIN_TYPE: &str = "1179993420'";
  constant DEFAULT_DERIVATION_PATH (line 4) | pub const DEFAULT_DERIVATION_PATH: &str = "m/44'/1179993420'/0'/0/0";

FILE: packages/fuels-accounts/src/signers/fake.rs
  type FakeSigner (line 11) | pub struct FakeSigner {
    method from (line 16) | fn from(signer: PrivateKeySigner) -> Self {
    method new (line 24) | pub fn new(address: Address) -> Self {
  method sign (line 32) | async fn sign(&self, _message: Message) -> Result<Signature> {
  method address (line 36) | fn address(&self) -> Address {

FILE: packages/fuels-accounts/src/signers/kms.rs
  function normalize_signature (line 14) | pub fn normalize_signature(
  function determine_recovery_id (line 31) | pub fn determine_recovery_id(
  function convert_to_fuel_signature (line 62) | pub fn convert_to_fuel_signature(

FILE: packages/fuels-accounts/src/signers/kms/aws.rs
  constant AWS_KMS_ERROR_PREFIX (line 21) | const AWS_KMS_ERROR_PREFIX: &str = "AWS KMS Error";
  constant EXPECTED_KEY_SPEC (line 23) | const EXPECTED_KEY_SPEC: KeySpec = KeySpec::EccSecgP256K1;
  type AwsKmsSigner (line 26) | pub struct AwsKmsSigner {
    method new (line 34) | pub async fn new(key_id: impl Into<String>, client: &Client) -> Result...
    method validate_key_spec (line 48) | async fn validate_key_spec(client: &Client, key_id: &str) -> Result<()> {
    method retrieve_public_key (line 66) | async fn retrieve_public_key(client: &Client, key_id: &str) -> Result<...
    method derive_fuel_address (line 82) | fn derive_fuel_address(public_key: &[u8]) -> Result<Address> {
    method request_kms_signature (line 91) | async fn request_kms_signature(&self, message: Message) -> Result<Vec<...
    method key_id (line 113) | pub fn key_id(&self) -> &String {
    method public_key (line 117) | pub fn public_key(&self) -> &Vec<u8> {
  method sign (line 124) | async fn sign(&self, message: Message) -> Result<Signature> {
  method address (line 144) | fn address(&self) -> Address {
  function format_aws_error (line 149) | fn format_aws_error(err: impl std::fmt::Display) -> Error {

FILE: packages/fuels-accounts/src/signers/kms/google.rs
  constant GOOGLE_KMS_ERROR_PREFIX (line 23) | const GOOGLE_KMS_ERROR_PREFIX: &str = "Google KMS Error";
  type GoogleKmsSigner (line 26) | pub struct GoogleKmsSigner {
    method new (line 71) | pub async fn new(key_path: impl Into<String>, client: &Client) -> Resu...
    method retrieve_public_key (line 84) | async fn retrieve_public_key(client: &Client, key_path: &str) -> Resul...
    method derive_fuel_address (line 104) | fn derive_fuel_address(pem: &str) -> Result<Address> {
    method request_gcp_signature (line 114) | async fn request_gcp_signature(&self, message: Message) -> Result<Vec<...
    method key_path (line 141) | pub fn key_path(&self) -> &String {
    method public_key (line 145) | pub fn public_key(&self) -> &String {
  type CryptoKeyVersionName (line 34) | pub struct CryptoKeyVersionName {
    method new (line 43) | pub fn new(
    method fmt (line 61) | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
  method sign (line 152) | async fn sign(&self, message: Message) -> Result<Signature> {
  method address (line 174) | fn address(&self) -> Address {
  function format_gcp_error (line 179) | fn format_gcp_error(err: impl std::fmt::Display) -> Error {

FILE: packages/fuels-accounts/src/signers/private_key.rs
  function generate_mnemonic_phrase (line 12) | pub fn generate_mnemonic_phrase<R: Rng>(rng: &mut R, count: usize) -> Re...
  type PrivateKeySigner (line 17) | pub struct PrivateKeySigner {
    method fmt (line 24) | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
    method new (line 33) | pub fn new(private_key: SecretKey) -> Self {
    method random (line 43) | pub fn random(rng: &mut (impl CryptoRng + RngCore)) -> Self {
    method address (line 47) | pub fn address(&self) -> Address {
    method secret_key (line 51) | pub fn secret_key(&self) -> SecretKey {
  method sign (line 59) | async fn sign(&self, message: Message) -> Result<Signature> {
  method address (line 65) | fn address(&self) -> Address {
  function mnemonic_generation (line 80) | async fn mnemonic_generation() -> Result<()> {
  function sign_and_verify (line 91) | async fn sign_and_verify() -> Result<()> {

FILE: packages/fuels-accounts/src/wallet.rs
  type Wallet (line 4) | pub struct Wallet<S = Unlocked<PrivateKeySigner>> {
  function set_provider (line 10) | pub fn set_provider(&mut self, provider: Provider) {
  function provider (line 14) | pub fn provider(&self) -> &Provider {
  type Unlocked (line 36) | pub struct Unlocked<S> {
  function new (line 41) | fn new(signer: S) -> Self {
  function new (line 47) | pub fn new(signer: S, provider: Provider) -> Self {
  function signer (line 54) | pub fn signer(&self) -> &S {
  function random (line 60) | pub fn random(rng: &mut (impl CryptoRng + RngCore), provider: Provider) ...
  function lock (line 69) | pub fn lock(&self) -> Wallet<Locked> {
  method address (line 79) | fn address(&self) -> Address {
  method try_provider (line 83) | fn try_provider(&self) -> Result<&Provider> {
  method get_asset_inputs_for_amount (line 87) | async fn get_asset_inputs_for_amount(
  method add_witnesses (line 107) | fn add_witnesses<Tb: TransactionBuilder>(&self, tb: &mut Tb) -> Result<(...
  type Locked (line 126) | pub struct Locked {
    method new (line 131) | fn new(address: Address) -> Self {
  function new_locked (line 137) | pub fn new_locked(addr: Address, provider: Provider) -> Self {
  method address (line 147) | fn address(&self) -> Address {
  method try_provider (line 151) | fn try_provider(&self) -> Result<&Provider> {
  method get_asset_inputs_for_amount (line 155) | async fn get_asset_inputs_for_amount(

FILE: packages/fuels-code-gen/src/error.rs
  type Error (line 6) | pub struct Error(pub String);
    method combine (line 9) | pub fn combine<T: Into<Self>>(self, err: T) -> Self {
  type Result (line 21) | pub type Result<T> = std::result::Result<T, Error>;
  method fmt (line 24) | fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
  method fmt (line 30) | fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {

FILE: packages/fuels-code-gen/src/program_bindings/abigen.rs
  type Abigen (line 25) | pub struct Abigen;
    method generate (line 36) | pub fn generate(targets: Vec<AbigenTarget>, no_std: bool) -> Result<To...
    method wasm_paths_hotfix (line 52) | fn wasm_paths_hotfix(code: &TokenStream) -> TokenStream {
    method generate_code (line 68) | fn generate_code(no_std: bool, parsed_targets: Vec<AbigenTarget>) -> R...
    method generate_all_bindings (line 84) | fn generate_all_bindings(
    method generate_binding (line 97) | fn generate_binding(
    method generate_macro_recompile_trigger (line 122) | fn generate_macro_recompile_trigger(path: Option<&PathBuf>, no_std: bo...
    method generate_shared_types (line 135) | fn generate_shared_types(
    method filter_custom_types (line 150) | fn filter_custom_types(
    method filter_shared_types (line 166) | fn filter_shared_types<'a>(
  function correctly_determines_shared_types (line 178) | fn correctly_determines_shared_types() {

FILE: packages/fuels-code-gen/src/program_bindings/abigen/abigen_target.rs
  type AbigenTarget (line 14) | pub struct AbigenTarget {
    method new (line 21) | pub fn new(name: String, source: Abi, program_type: ProgramType) -> Se...
    method name (line 29) | pub fn name(&self) -> &str {
    method source (line 33) | pub fn source(&self) -> &Abi {
    method program_type (line 37) | pub fn program_type(&self) -> ProgramType {
  type Abi (line 43) | pub struct Abi {
    method load_from (line 49) | pub fn load_from(path: impl AsRef<Path>) -> Result<Abi> {
    method canonicalize_path (line 67) | fn canonicalize_path(path: &Path) -> Result<PathBuf> {
    method parse_from_json (line 97) | fn parse_from_json(json_abi: &str) -> Result<FullProgramABI> {
    method path (line 102) | pub fn path(&self) -> Option<&PathBuf> {
    method abi (line 106) | pub fn abi(&self) -> &FullProgramABI {
  type Err (line 112) | type Err = Error;
  method from_str (line 114) | fn from_str(json_abi: &str) -> Result<Self> {
  type ProgramType (line 122) | pub enum ProgramType {
    type Error (line 148) | type Error = syn::Error;
    method try_from (line 150) | fn try_from(ident: Ident) -> std::result::Result<Self, Self::Error> {
  type Err (line 129) | type Err = Error;
  method from_str (line 131) | fn from_str(string: &str) -> std::result::Result<Self, Self::Err> {

FILE: packages/fuels-code-gen/src/program_bindings/abigen/bindings.rs
  function generate_bindings (line 22) | pub(crate) fn generate_bindings(target: AbigenTarget, no_std: bool) -> R...

FILE: packages/fuels-code-gen/src/program_bindings/abigen/bindings/contract.rs
  function contract_bindings (line 19) | pub(crate) fn contract_bindings(
  function expand_functions (line 154) | fn expand_functions(functions: &[FullABIFunction]) -> Result<TokenStream> {
  function expand_fn (line 167) | pub(crate) fn expand_fn(abi_fun: &FullABIFunction) -> Result<TokenStream> {
  function generate_constant_methods_pattern (line 196) | fn generate_constant_methods_pattern(
  function expand_contract_method_simple (line 254) | fn expand_contract_method_simple() -> Result<()> {
  function expand_contract_method_complex (line 311) | fn expand_contract_method_complex() -> Result<()> {

FILE: packages/fuels-code-gen/src/program_bindings/abigen/bindings/function_generator.rs
  type FunctionGenerator (line 15) | pub(crate) struct FunctionGenerator {
    method new (line 24) | pub fn new(fun: &FullABIFunction) -> Result<Self> {
    method set_name (line 43) | pub fn set_name(&mut self, name: String) -> &mut Self {
    method set_body (line 48) | pub fn set_body(&mut self, body: TokenStream) -> &mut Self {
    method set_docs (line 53) | pub fn set_docs(&mut self, docs: Vec<String>) -> &mut Self {
    method fn_selector (line 58) | pub fn fn_selector(&self) -> TokenStream {
    method tokenized_args (line 63) | pub fn tokenized_args(&self) -> TokenStream {
    method set_output_type (line 71) | pub fn set_output_type(&mut self, output_type: TokenStream) -> &mut Se...
    method output_type (line 76) | pub fn output_type(&self) -> &TokenStream {
    method generate (line 80) | pub fn generate(&self) -> TokenStream {
  function correct_fn_selector_resolving_code (line 122) | fn correct_fn_selector_resolving_code() -> Result<()> {
  function correct_tokenized_args (line 137) | fn correct_tokenized_args() -> Result<()> {
  function tokenizes_correctly (line 152) | fn tokenizes_correctly() -> Result<()> {
  function given_a_fun (line 181) | fn given_a_fun() -> FullABIFunction {

FILE: packages/fuels-code-gen/src/program_bindings/abigen/bindings/predicate.rs
  function predicate_bindings (line 17) | pub(crate) fn predicate_bindings(
  function expand_fn (line 57) | fn expand_fn(fn_abi: &FullABIFunction) -> Result<TokenStream> {

FILE: packages/fuels-code-gen/src/program_bindings/abigen/bindings/script.rs
  function script_bindings (line 20) | pub(crate) fn script_bindings(
  function expand_fn (line 149) | fn expand_fn(fn_abi: &FullABIFunction) -> Result<TokenStream> {
  function expand_script_main_function (line 188) | fn expand_script_main_function() -> Result<()> {

FILE: packages/fuels-code-gen/src/program_bindings/abigen/bindings/utils.rs
  function extract_main_fn (line 5) | pub(crate) fn extract_main_fn(abi: &[FullABIFunction]) -> Result<&FullAB...
  function correctly_extracts_the_main_fn (line 32) | fn correctly_extracts_the_main_fn() {
  function fails_if_there_is_more_than_one_main_fn (line 41) | fn fails_if_there_is_more_than_one_main_fn() {
  function given_a_fun_named (line 52) | fn given_a_fun_named(fn_name: &str) -> FullABIFunction {

FILE: packages/fuels-code-gen/src/program_bindings/abigen/configurables.rs
  type ResolvedConfigurable (line 12) | pub(crate) struct ResolvedConfigurable {
    method new (line 19) | pub fn new(configurable: &FullConfigurable) -> Result<ResolvedConfigur...
  function generate_code_for_configurable_constants (line 29) | pub(crate) fn generate_code_for_configurable_constants(
  function generate_struct_decl (line 49) | fn generate_struct_decl(configurable_struct_name: &Ident) -> TokenStream {
  function generate_struct_impl (line 59) | fn generate_struct_impl(
  function generate_builder_methods (line 79) | fn generate_builder_methods(resolved_configurables: &[ResolvedConfigurab...
  function generate_encoder_code (line 107) | fn generate_encoder_code(ttype: &ResolvedType) -> TokenStream {
  function generate_from_impl (line 115) | fn generate_from_impl(configurable_struct_name: &Ident) -> TokenStream {

FILE: packages/fuels-code-gen/src/program_bindings/abigen/logs.rs
  function log_formatters_instantiation_code (line 7) | pub(crate) fn log_formatters_instantiation_code(
  type ResolvedLog (line 17) | struct ResolvedLog {
  function resolve_logs (line 23) | fn resolve_logs(logged_types: &[FullLoggedType]) -> Vec<ResolvedLog> {
  function generate_log_id_log_formatter_pairs (line 56) | fn generate_log_id_log_formatter_pairs(
  function generate_id_error_codes_pairs (line 69) | pub(crate) fn generate_id_error_codes_pairs(

FILE: packages/fuels-code-gen/src/program_bindings/custom_types.rs
  function generate_types (line 32) | pub(crate) fn generate_types<'a>(
  function reexport_the_shared_type (line 63) | fn reexport_the_shared_type(ttype: &FullTypeDeclaration, no_std: bool) -...
  function should_skip_codegen (line 94) | pub fn should_skip_codegen(type_decl: &FullTypeDeclaration) -> bool {
  function is_type_sdk_provided (line 104) | fn is_type_sdk_provided(type_path: &TypePath) -> bool {
  function is_type_unused (line 108) | fn is_type_unused(type_path: &TypePath) -> bool {
  function test_expand_custom_enum (line 135) | fn test_expand_custom_enum() -> Result<()> {
  function test_enum_with_no_variants_cannot_be_constructed (line 203) | fn test_enum_with_no_variants_cannot_be_constructed() -> Result<()> {
  function test_expand_struct_inside_enum (line 223) | fn test_expand_struct_inside_enum() -> Result<()> {
  function test_expand_array_inside_enum (line 295) | fn test_expand_array_inside_enum() -> Result<()> {
  function test_expand_custom_enum_with_enum (line 360) | fn test_expand_custom_enum_with_enum() -> Result<()> {
  function test_expand_custom_struct (line 444) | fn test_expand_custom_struct() -> Result<()> {
  function test_struct_with_no_fields_can_be_constructed (line 538) | fn test_struct_with_no_fields_can_be_constructed() -> Result<()> {
  function test_expand_custom_struct_with_struct (line 578) | fn test_expand_custom_struct_with_struct() -> Result<()> {
  function shared_types_are_just_reexported (line 660) | fn shared_types_are_just_reexported() {

FILE: packages/fuels-code-gen/src/program_bindings/custom_types/enums.rs
  function expand_custom_enum (line 20) | pub(crate) fn expand_custom_enum(
  function maybe_impl_error (line 41) | fn maybe_impl_error(enum_ident: &Ident, components: &Components) -> Opti...
  function enum_decl (line 69) | fn enum_decl(

FILE: packages/fuels-code-gen/src/program_bindings/custom_types/structs.rs
  function expand_custom_struct (line 20) | pub(crate) fn expand_custom_struct(
  function unzip_field_names_and_types (line 44) | fn unzip_field_names_and_types(components: &Components) -> (Vec<&Ident>,...
  function struct_decl (line 57) | fn struct_decl(

FILE: packages/fuels-code-gen/src/program_bindings/custom_types/utils.rs
  function extract_generic_parameters (line 9) | pub(crate) fn extract_generic_parameters(type_decl: &FullTypeDeclaration...
  function extracts_generic_types (line 33) | fn extracts_generic_types() -> Result<()> {
  function can_extract_struct_name (line 81) | fn can_extract_struct_name() {
  function can_extract_enum_name (line 96) | fn can_extract_enum_name() {

FILE: packages/fuels-code-gen/src/program_bindings/generated_code.rs
  type GeneratedCode (line 10) | pub(crate) struct GeneratedCode {
    method new (line 18) | pub fn new(code: TokenStream, usable_types: HashSet<TypePath>, no_std:...
    method prelude (line 27) | fn prelude(&self) -> TokenStream {
    method code (line 49) | pub fn code(&self) -> TokenStream {
    method is_empty (line 79) | pub fn is_empty(&self) -> bool {
    method merge (line 83) | pub fn merge(mut self, another: GeneratedCode) -> Self {
    method wrap_in_mod (line 95) | pub fn wrap_in_mod(mut self, mod_name: impl Into<TypePath>) -> Self {
    method wrap_in_single_mod (line 106) | fn wrap_in_single_mod(self, mod_name: Ident) -> Self {
    method use_statements_for_uniquely_named_types (line 113) | pub fn use_statements_for_uniquely_named_types(&self) -> TokenStream {
    method types_with_unique_names (line 124) | fn types_with_unique_names(&self) -> Vec<TypePath> {
  function can_merge_top_level_code (line 151) | fn can_merge_top_level_code() {
  function wrapping_in_mod_updates_code (line 169) | fn wrapping_in_mod_updates_code() {
  function wrapping_in_mod_updates_use_statements (line 201) | fn wrapping_in_mod_updates_use_statements() {
  function merging_code_will_merge_mods_as_well (line 218) | fn merging_code_will_merge_mods_as_well() {
  function use_statement_not_generated_for_top_level_type (line 292) | fn use_statement_not_generated_for_top_level_type() {
  function use_statements_only_for_uniquely_named_types (line 311) | fn use_statements_only_for_uniquely_named_types() {
  function given_some_struct_code (line 340) | fn given_some_struct_code(struct_name: &str) -> GeneratedCode {
  function given_type_path (line 350) | fn given_type_path(path: &str) -> TypePath {

FILE: packages/fuels-code-gen/src/program_bindings/resolved_type.rs
  type GenericType (line 17) | pub enum GenericType {
  method to_tokens (line 23) | fn to_tokens(&self, tokens: &mut TokenStream) {
  type ResolvedType (line 37) | pub enum ResolvedType {
    method generics (line 50) | pub fn generics(&self) -> Vec<GenericType> {
  method to_tokens (line 66) | fn to_tokens(&self, tokens: &mut TokenStream) {
  method fmt (line 92) | fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
  type TypeResolver (line 98) | pub(crate) struct TypeResolver {
    method new (line 110) | pub(crate) fn new(current_mod: TypePath) -> Self {
    method resolve (line 114) | pub(crate) fn resolve(&self, type_application: &FullTypeApplication) -...
    method resolve_multiple (line 137) | fn resolve_multiple(
    method try_as_generic (line 147) | fn try_as_generic(
    method try_as_array (line 159) | fn try_as_array(&self, type_application: &FullTypeApplication) -> Resu...
    method try_as_sized_ascii_string (line 181) | fn try_as_sized_ascii_string(
    method try_as_ascii_string (line 197) | fn try_as_ascii_string(
    method try_as_tuple (line 213) | fn try_as_tuple(&self, type_application: &FullTypeApplication) -> Resu...
    method try_as_primitive_type (line 223) | fn try_as_primitive_type(
    method try_as_bits256 (line 251) | fn try_as_bits256(
    method try_as_raw_slice (line 266) | fn try_as_raw_slice(
    method try_as_custom_type (line 281) | fn try_as_custom_type(
  method default (line 104) | fn default() -> Self {
  function correctly_extracts_used_generics (line 322) | fn correctly_extracts_used_generics() {
  function test_resolve_first_type (line 352) | fn test_resolve_first_type(
  function test_resolve_primitive_type (line 377) | fn test_resolve_primitive_type(type_field: &str, expected: &str) -> Resu...
  function test_resolve_u8 (line 389) | fn test_resolve_u8() -> Result<()> {
  function test_resolve_u16 (line 394) | fn test_resolve_u16() -> Result<()> {
  function test_resolve_u32 (line 399) | fn test_resolve_u32() -> Result<()> {
  function test_resolve_u64 (line 404) | fn test_resolve_u64() -> Result<()> {
  function test_resolve_bool (line 409) | fn test_resolve_bool() -> Result<()> {
  function test_resolve_b256 (line 414) | fn test_resolve_b256() -> Result<()> {
  function test_resolve_unit (line 419) | fn test_resolve_unit() -> Result<()> {
  function test_resolve_array (line 424) | fn test_resolve_array() -> Result<()> {
  function test_resolve_vector (line 447) | fn test_resolve_vector() -> Result<()> {
  function test_resolve_bytes (line 516) | fn test_resolve_bytes() -> Result<()> {
  function test_resolve_std_string (line 579) | fn test_resolve_std_string() -> Result<()> {
  function test_resolve_static_str (line 642) | fn test_resolve_static_str() -> Result<()> {
  function test_resolve_struct (line 647) | fn test_resolve_struct() -> Result<()> {
  function test_resolve_enum (line 684) | fn test_resolve_enum() -> Result<()> {
  function test_resolve_tuple (line 721) | fn test_resolve_tuple() -> Result<()> {
  function custom_types_uses_correct_path_for_sdk_provided_types (line 774) | fn custom_types_uses_correct_path_for_sdk_provided_types() {
  function given_fn_arg_of_custom_type (line 792) | fn given_fn_arg_of_custom_type(type_path: &TypePath) -> FullTypeApplicat...

FILE: packages/fuels-code-gen/src/program_bindings/utils.rs
  type Component (line 16) | pub(crate) struct Component {
  type Components (line 23) | pub(crate) struct Components {
    method new (line 28) | pub fn new(
    method has_error_messages (line 58) | pub fn has_error_messages(&self) -> bool {
    method iter (line 64) | pub fn iter(&self) -> impl Iterator<Item = &Component> {
    method is_empty (line 68) | pub fn is_empty(&self) -> bool {
    method as_enum_variants (line 72) | pub fn as_enum_variants(&self) -> impl Iterator<Item = TokenStream> + ...
    method generate_parameters_for_unused_generics (line 88) | pub fn generate_parameters_for_unused_generics(
    method generate_variant_for_unused_generics (line 102) | pub fn generate_variant_for_unused_generics(
    method named_generics (line 121) | fn named_generics(&self) -> HashSet<Ident> {
    method unused_named_generics (line 135) | fn unused_named_generics<'a>(
  function tokenize_generics (line 146) | pub(crate) fn tokenize_generics(generics: &[Ident]) -> (TokenStream, Tok...
  function sdk_provided_custom_types_lookup (line 157) | pub(crate) fn sdk_provided_custom_types_lookup() -> HashMap<TypePath, Ty...
  function respects_snake_case_flag (line 192) | fn respects_snake_case_flag() -> Result<()> {
  function avoids_collisions_with_reserved_keywords (line 206) | fn avoids_collisions_with_reserved_keywords() -> Result<()> {
  function type_application_named (line 226) | fn type_application_named(name: &str) -> FullTypeApplication {

FILE: packages/fuels-code-gen/src/utils.rs
  function encode_fn_selector (line 3) | pub fn encode_fn_selector(name: &str) -> Vec<u8> {

FILE: packages/fuels-core/src/codec.rs
  function try_from_bytes (line 22) | pub fn try_from_bytes<T>(bytes: impl Read, decoder_config: DecoderConfig...
  function convert_all_from_bool_to_u64 (line 40) | fn convert_all_from_bool_to_u64() -> Result<()> {
  function convert_bytes_into_tuple (line 63) | fn convert_bytes_into_tuple() -> Result<()> {
  function convert_native_types (line 75) | fn convert_native_types() -> Result<()> {
  function string_slice_is_read_in_total (line 93) | fn string_slice_is_read_in_total() {

FILE: packages/fuels-core/src/codec/abi_decoder.rs
  type DecoderConfig (line 14) | pub struct DecoderConfig {
  method default (line 25) | fn default() -> Self {
  type ABIDecoder (line 35) | pub struct ABIDecoder {
    method new (line 40) | pub fn new(config: DecoderConfig) -> Self {
    method decode (line 63) | pub fn decode(&self, param_type: &ParamType, mut bytes: impl Read) -> ...
    method decode_multiple (line 81) | pub fn decode_multiple(
    method decode_as_debug_str (line 109) | pub fn decode_as_debug_str(
    method decode_multiple_as_debug_str (line 118) | pub fn decode_multiple_as_debug_str(
  function decode_multiple_uint (line 147) | fn decode_multiple_uint() -> Result<()> {
  function decode_bool (line 184) | fn decode_bool() -> Result<()> {
  function decode_b256 (line 198) | fn decode_b256() -> Result<()> {
  function decode_string_array (line 212) | fn decode_string_array() -> Result<()> {
  function decode_string_slice (line 236) | fn decode_string_slice() -> Result<()> {
  function decode_string (line 256) | fn decode_string() -> Result<()> {
  function decode_tuple (line 273) | fn decode_tuple() -> Result<()> {
  function decode_array (line 290) | fn decode_array() -> Result<()> {
  function decode_struct (line 303) | fn decode_struct() -> Result<()> {
  function decode_bytes (line 327) | fn decode_bytes() -> Result<()> {
  function decode_raw_slice (line 340) | fn decode_raw_slice() -> Result<()> {
  function decode_enum (line 353) | fn decode_enum() -> Result<()> {
  function decode_nested_struct (line 381) | fn decode_nested_struct() -> Result<()> {
  function decode_comprehensive (line 427) | fn decode_comprehensive() -> Result<()> {
  function enums_with_all_unit_variants_are_decoded_from_one_word (line 498) | fn enums_with_all_unit_variants_are_decoded_from_one_word() -> Result<()> {
  function out_of_bounds_discriminant_is_detected (line 517) | fn out_of_bounds_discriminant_is_detected() -> Result<()> {
  function division_by_zero (line 538) | pub fn division_by_zero() {
  function multiply_overflow_enum (line 545) | pub fn multiply_overflow_enum() {
  function multiply_overflow_arith (line 572) | pub fn multiply_overflow_arith() {
  function capacity_overflow (line 589) | pub fn capacity_overflow() {
  function stack_overflow (line 598) | pub fn stack_overflow() {
  function capacity_malloc (line 608) | pub fn capacity_malloc() {
  function max_depth_surpassed (line 615) | fn max_depth_surpassed() {
  function depth_is_not_reached (line 634) | fn depth_is_not_reached() {
  function too_many_tokens (line 665) | fn too_many_tokens() {
  function token_count_is_being_reset_between_decodings (line 703) | fn token_count_is_being_reset_between_decodings() {
  function assert_decoding_failed_w_data (line 722) | fn assert_decoding_failed_w_data(
  function nested_struct (line 739) | fn nested_struct(depth: usize) -> ParamType {
  function nested_enum (line 753) | fn nested_enum(depth: usize) -> ParamType {
  function nested_array (line 767) | fn nested_array(depth: usize) -> ParamType {
  function nested_tuple (line 777) | fn nested_tuple(depth: usize) -> ParamType {

FILE: packages/fuels-core/src/codec/abi_decoder/bounded_decoder.rs
  type BoundedDecoder (line 17) | pub(crate) struct BoundedDecoder {
    method new (line 23) | pub(crate) fn new(config: DecoderConfig) -> Self {
    method decode (line 34) | pub(crate) fn decode<R: Read>(
    method decode_multiple (line 42) | pub(crate) fn decode_multiple<R: Read>(
    method run_w_depth_tracking (line 50) | fn run_w_depth_tracking(
    method decode_param (line 61) | fn decode_param<R: Read>(&mut self, param_type: &ParamType, bytes: &mu...
    method decode_std_string (line 97) | fn decode_std_string<R: Read>(bytes: &mut R) -> Result<Token> {
    method decode_string_array (line 103) | fn decode_string_array<R: Read>(bytes: &mut R, length: usize) -> Resul...
    method decode_string_slice (line 112) | fn decode_string_slice<R: Read>(bytes: &mut R) -> Result<Token> {
    method decode_tuple (line 118) | fn decode_tuple<R: Read>(&mut self, param_types: &[ParamType], bytes: ...
    method decode_array (line 122) | fn decode_array<R: Read>(
    method decode_vector (line 133) | fn decode_vector<R: Read>(&mut self, param_type: &ParamType, bytes: &m...
    method decode_struct (line 140) | fn decode_struct<R: Read>(
    method decode_enum (line 150) | fn decode_enum<R: Read>(
    method decode_params (line 167) | fn decode_params<'a, R: Read>(
  function decode (line 181) | fn decode<const SIZE: usize, R: Read, Out>(
  function decode_sized (line 191) | fn decode_sized<R: Read>(bytes: &mut R, len: usize) -> Result<Vec<u8>> {
  function decode_len (line 198) | fn decode_len<R: Read>(bytes: &mut R) -> Result<usize> {
  function decode_slice (line 207) | fn decode_slice<R: Read>(bytes: &mut R) -> Result<Vec<u8>> {

FILE: packages/fuels-core/src/codec/abi_decoder/decode_as_debug_str.rs
  function inner_types_debug (line 9) | fn inner_types_debug(tokens: &[Token], inner_type: &ParamType, join_str:...
  function decode_as_debug_str (line 19) | pub(crate) fn decode_as_debug_str(param_type: &ParamType, token: &Token)...
  function param_type_decode_debug (line 108) | fn param_type_decode_debug() -> Result<()> {

FILE: packages/fuels-core/src/codec/abi_encoder.rs
  type EncoderConfig (line 11) | pub struct EncoderConfig {
  method default (line 22) | fn default() -> Self {
  type ABIEncoder (line 32) | pub struct ABIEncoder {
    method new (line 37) | pub fn new(config: EncoderConfig) -> Self {
    method encode (line 43) | pub fn encode(&self, tokens: &[Token]) -> Result<Vec<u8>> {
  function encode_multiple_uint (line 63) | fn encode_multiple_uint() -> Result<()> {
  function encode_bool (line 92) | fn encode_bool() -> Result<()> {
  function encode_b256 (line 105) | fn encode_b256() -> Result<()> {
  function encode_bytes (line 120) | fn encode_bytes() -> Result<()> {
  function encode_string (line 136) | fn encode_string() -> Result<()> {
  function encode_raw_slice (line 153) | fn encode_raw_slice() -> Result<()> {
  function encode_string_array (line 169) | fn encode_string_array() -> Result<()> {
  function encode_string_slice (line 188) | fn encode_string_slice() -> Result<()> {
  function encode_tuple (line 208) | fn encode_tuple() -> Result<()> {
  function encode_array (line 224) | fn encode_array() -> Result<()> {
  function encode_enum_with_deeply_nested_types (line 240) | fn encode_enum_with_deeply_nested_types() -> Result<()> {
  function encode_nested_structs (line 306) | fn encode_nested_structs() -> Result<()> {
  function encode_comprehensive (line 329) | fn encode_comprehensive() -> Result<()> {
  function enums_with_only_unit_variants_are_encoded_in_one_word (line 368) | fn enums_with_only_unit_variants_are_encoded_in_one_word() -> Result<()> {
  function vec_in_enum (line 382) | fn vec_in_enum() -> Result<()> {
  function enum_in_vec (line 404) | fn enum_in_vec() -> Result<()> {
  function vec_in_struct (line 428) | fn vec_in_struct() -> Result<()> {
  function vec_in_vec (line 447) | fn vec_in_vec() -> Result<()> {
  function max_depth_surpassed (line 466) | fn max_depth_surpassed() {
  function assert_encoding_failed (line 482) | fn assert_encoding_failed(config: EncoderConfig, token: Token, msg: &str) {
  function nested_struct (line 493) | fn nested_struct(depth: usize) -> Token {
  function nested_enum (line 503) | fn nested_enum(depth: usize) -> Token {
  function nested_array (line 521) | fn nested_array(depth: usize) -> Token {
  function nested_tuple (line 529) | fn nested_tuple(depth: usize) -> Token {

FILE: packages/fuels-core/src/codec/abi_encoder/bounded_encoder.rs
  type BoundedEncoder (line 9) | pub(crate) struct BoundedEncoder {
    method new (line 15) | pub(crate) fn new(config: EncoderConfig) -> Self {
    method encode (line 26) | pub fn encode(&mut self, tokens: &[Token]) -> Result<Vec<u8>> {
    method run_w_depth_tracking (line 37) | fn run_w_depth_tracking(
    method encode_token (line 48) | fn encode_token(&mut self, arg: &Token) -> Result<Vec<u8>> {
    method encode_u256 (line 75) | fn encode_u256(arg_u256: U256) -> Vec<u8> {
    method encode_bytes (line 82) | fn encode_bytes(data: Vec<u8>) -> Result<Vec<u8>> {
    method encode_string_array (line 88) | fn encode_string_array(arg_string: &StaticStringToken) -> Result<Vec<u...
    method encode_string_slice (line 92) | fn encode_string_slice(arg_string: &StaticStringToken) -> Result<Vec<u...
    method encode_vector (line 96) | fn encode_vector(&mut self, data: &[Token]) -> Result<Vec<u8>> {
    method encode_enum (line 102) | fn encode_enum(&mut self, selector: &EnumSelector) -> Result<Vec<u8>> {
    method encode_length (line 110) | fn encode_length(len: u64) -> Vec<u8> {
    method encode_discriminant (line 114) | fn encode_discriminant(discriminant: u64) -> Vec<u8> {

FILE: packages/fuels-core/src/codec/abi_formatter.rs
  type ABIFormatter (line 9) | pub struct ABIFormatter {
    method has_fn (line 16) | pub fn has_fn(&self, fn_name: &str) -> bool {
    method with_decoder_config (line 20) | pub fn with_decoder_config(mut self, config: DecoderConfig) -> Self {
    method from_abi (line 25) | pub fn from_abi(abi: UnifiedProgramABI) -> Result<Self> {
    method from_json_abi (line 72) | pub fn from_json_abi(abi: impl AsRef<str>) -> Result<Self> {
    method decode_fn_args (line 77) | pub fn decode_fn_args<R: Read>(&self, fn_name: &str, data: R) -> Resul...
    method decode_configurables (line 86) | pub fn decode_configurables<R: Read>(
  function gracefully_handles_missing_fn (line 115) | fn gracefully_handles_missing_fn() {

FILE: packages/fuels-core/src/codec/logs.rs
  type Log (line 9) | pub trait Log {
    constant LOG_ID (line 11) | const LOG_ID: &'static str;
    constant LOG_ID_U64 (line 13) | const LOG_ID_U64: u64;
  type ErrorDetails (line 17) | pub struct ErrorDetails {
    method new (line 27) | pub fn new(
  type LogFormatter (line 55) | pub struct LogFormatter {
    method new_log (line 61) | pub fn new_log<T: Tokenizable + Parameterize + Debug + 'static>() -> S...
    method new_error (line 68) | pub fn new_error<T: Tokenizable + Parameterize + std::error::Error + '...
    method format_log (line 75) | fn format_log<T: Parameterize + Tokenizable + Debug>(
    method format_error (line 84) | fn format_error<T: Parameterize + Tokenizable + std::error::Error>(
    method can_handle_type (line 93) | pub fn can_handle_type<T: Tokenizable + Parameterize + 'static>(&self)...
    method format (line 97) | pub fn format(&self, decoder_config: DecoderConfig, bytes: &[u8]) -> R...
  method fmt (line 103) | fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
  type LogId (line 112) | pub struct LogId(ContractId, String);
  type LogDecoder (line 116) | pub struct LogDecoder {
    method new (line 145) | pub fn new(
    method get_error_codes (line 156) | pub fn get_error_codes(&self, id: &u64) -> Option<&ErrorDetails> {
    method set_decoder_config (line 160) | pub fn set_decoder_config(&mut self, decoder_config: DecoderConfig) ->...
    method decode_logs (line 166) | pub fn decode_logs(&self, receipts: &[Receipt]) -> LogResult {
    method format_log (line 176) | fn format_log(&self, log_id: &LogId, data: &[u8]) -> Result<String> {
    method decode_last_log (line 191) | pub(crate) fn decode_last_log(&self, receipts: &[Receipt]) -> Result<S...
    method decode_last_two_logs (line 201) | pub(crate) fn decode_last_two_logs(&self, receipts: &[Receipt]) -> Res...
    method decode_logs_with_type (line 223) | pub fn decode_logs_with_type<T: Tokenizable + Parameterize + 'static>(
    method decode_logs_lazy (line 249) | pub fn decode_logs_lazy<'a, T: Tokenizable + Parameterize + 'static>(
    method merge (line 263) | pub fn merge(&mut self, log_decoder: LogDecoder) {
  type LogResult (line 124) | pub struct LogResult {
    method filter_succeeded (line 129) | pub fn filter_succeeded(&self) -> Vec<&str> {
    method filter_failed (line 136) | pub fn filter_failed(&self) -> Vec<&Error> {
  type ExtractLogIdData (line 269) | trait ExtractLogIdData {
    method extract_log_id_and_data (line 271) | fn extract_log_id_and_data(self) -> Self::Output;
    type Output (line 283) | type Output = FilterMap<Self, fn(&Receipt) -> Option<(LogId, Vec<u8>)>>;
    method extract_log_id_and_data (line 284) | fn extract_log_id_and_data(self) -> Self::Output {
  type ExtractLogIdLazy (line 274) | trait ExtractLogIdLazy {
    method extract_matching_logs_lazy (line 275) | fn extract_matching_logs_lazy<T: Tokenizable + Parameterize + 'static>(
    method extract_matching_logs_lazy (line 301) | fn extract_matching_logs_lazy<T: Tokenizable + Parameterize + 'static>(
  function log_formatters_lookup (line 345) | pub fn log_formatters_lookup(

FILE: packages/fuels-core/src/codec/utils.rs
  type CounterWithLimit (line 3) | pub(crate) struct CounterWithLimit {
    method new (line 26) | pub(crate) fn new(max: usize, name: impl Into<String>, direction: Code...
    method increase (line 35) | pub(crate) fn increase(&mut self) -> Result<()> {
    method decrease (line 49) | pub(crate) fn decrease(&mut self) {
  type CodecDirection (line 11) | pub(crate) enum CodecDirection {
    method fmt (line 17) | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {

FILE: packages/fuels-core/src/lib.rs
  type Configurable (line 11) | pub struct Configurable {
  type Configurables (line 19) | pub struct Configurables {
    method new (line 24) | pub fn new(offsets_with_data: Vec<Configurable>) -> Self {
    method with_shifted_offsets (line 28) | pub fn with_shifted_offsets(self, shift: i64) -> Result<Self> {
    method update_constants_in (line 59) | pub fn update_constants_in(&self, binary: &mut [u8]) {
  function from (line 68) | fn from(config: Configurables) -> Vec<Configurable> {
  function test_with_shifted_offsets_positive_shift (line 78) | fn test_with_shifted_offsets_positive_shift() {
  function test_with_shifted_offsets_negative_shift (line 96) | fn test_with_shifted_offsets_negative_shift() {
  function test_with_shifted_offsets_zero_shift (line 114) | fn test_with_shifted_offsets_zero_shift() {
  function test_with_shifted_offsets_overflow (line 129) | fn test_with_shifted_offsets_overflow() {
  function test_with_shifted_offsets_underflow (line 146) | fn test_with_shifted_offsets_underflow() {

FILE: packages/fuels-core/src/traits/parameterize.rs
  type Parameterize (line 10) | pub trait Parameterize {
    method param_type (line 11) | fn param_type() -> ParamType;
    method param_type (line 15) | fn param_type() -> ParamType {
    method param_type (line 21) | fn param_type() -> ParamType {
    method param_type (line 27) | fn param_type() -> ParamType {
    method param_type (line 33) | fn param_type() -> ParamType {
    method param_type (line 39) | fn param_type() -> ParamType {
    method param_type (line 45) | fn param_type() -> ParamType {
    method param_type (line 51) | fn param_type() -> ParamType {
    method param_type (line 61) | fn param_type() -> ParamType {
    method param_type (line 71) | fn param_type() -> ParamType {
    method param_type (line 81) | fn param_type() -> ParamType {
    method param_type (line 87) | fn param_type() -> ParamType {
    method param_type (line 93) | fn param_type() -> ParamType {
    method param_type (line 99) | fn param_type() -> ParamType {
    method param_type (line 105) | fn param_type() -> ParamType {
    method param_type (line 111) | fn param_type() -> ParamType {
    method param_type (line 117) | fn param_type() -> ParamType {
    method param_type (line 126) | fn param_type() -> ParamType {
    method param_type (line 146) | fn param_type() -> ParamType {
    method param_type (line 162) | fn param_type() -> ParamType {
    method param_type (line 168) | fn param_type() -> ParamType {
  function sized_ascii_string_is_parameterized_correctly (line 218) | fn sized_ascii_string_is_parameterized_correctly() {
  function test_param_type_b256 (line 225) | fn test_param_type_b256() {
  function test_param_type_raw_slice (line 230) | fn test_param_type_raw_slice() {

FILE: packages/fuels-core/src/traits/signer.rs
  type Signer (line 13) | pub trait Signer {
    method sign (line 14) | async fn sign(&self, message: Message) -> Result<Signature>;
    method address (line 15) | fn address(&self) -> Address;

FILE: packages/fuels-core/src/traits/tokenizable.rs
  type Tokenizable (line 12) | pub trait Tokenizable {
    method from_token (line 14) | fn from_token(token: Token) -> Result<Self>
    method into_token (line 18) | fn into_token(self) -> Token;
    method from_token (line 22) | fn from_token(token: Token) -> Result<Self> {
    method into_token (line 25) | fn into_token(self) -> Token {
    method from_token (line 31) | fn from_token(token: Token) -> Result<Self>
    method into_token (line 44) | fn into_token(self) -> Token {
    method from_token (line 50) | fn from_token(token: Token) -> Result<Self>
    method into_token (line 64) | fn into_token(self) -> Token {
    method from_token (line 71) | fn from_token(token: Token) -> Result<Self> {
    method into_token (line 77) | fn into_token(self) -> Token {
    method from_token (line 83) | fn from_token(token: Token) -> Result<Self>
    method into_token (line 93) | fn into_token(self) -> Token {
    method from_token (line 99) | fn from_token(token: Token) -> Result<Self> {
    method into_token (line 105) | fn into_token(self) -> Token {
    method from_token (line 111) | fn from_token(token: Token) -> Result<Self> {
    method into_token (line 117) | fn into_token(self) -> Token {
    method from_token (line 123) | fn from_token(token: Token) -> Result<Self> {
    method into_token (line 129) | fn into_token(self) -> Token {
    method from_token (line 135) | fn from_token(token: Token) -> Result<Self> {
    method into_token (line 141) | fn into_token(self) -> Token {
    method from_token (line 147) | fn from_token(token: Token) -> Result<Self> {
    method into_token (line 153) | fn into_token(self) -> Token {
    method from_token (line 159) | fn from_token(token: Token) -> Result<Self>
    method into_token (line 172) | fn into_token(self) -> Token {
    method from_token (line 178) | fn from_token(token: Token) -> Result<Self>
    method into_token (line 191) | fn into_token(self) -> Token {
    method from_token (line 197) | fn from_token(token: Token) -> Result<Self>
    method into_token (line 210) | fn into_token(self) -> Token {
    method from_token (line 276) | fn from_token(token: Token) -> Result<Self>
    method into_token (line 297) | fn into_token(self) -> Token {
    method from_token (line 304) | fn from_token(token: Token) -> Result<Self>
    method into_token (line 325) | fn into_token(self) -> Token {
    method from_token (line 333) | fn from_token(token: Token) -> Result<Self>
    method into_token (line 354) | fn into_token(self) -> Token {
    method from_token (line 364) | fn from_token(token: Token) -> Result<Self> {
    method into_token (line 382) | fn into_token(self) -> Token {
    method from_token (line 401) | fn from_token(token: Token) -> Result<Self> {
    method into_token (line 419) | fn into_token(self) -> Token {
    method from_token (line 434) | fn from_token(token: Token) -> Result<Self>
    method into_token (line 465) | fn into_token(self) -> Token {
    method from_token (line 471) | fn from_token(token: Token) -> Result<Self>
    method into_token (line 494) | fn into_token(self) -> Token {
    method from_token (line 500) | fn from_token(token: Token) -> Result<Self>
    method into_token (line 513) | fn into_token(self) -> Token {
  function test_from_token_b256 (line 523) | fn test_from_token_b256() -> Result<()> {
  function test_into_token_b256 (line 535) | fn test_into_token_b256() {
  function test_from_token_raw_slice (line 545) | fn test_from_token_raw_slice() -> Result<()> {
  function test_into_token_raw_slice (line 557) | fn test_into_token_raw_slice() {
  function sized_ascii_string_is_tokenized_correctly (line 567) | fn sized_ascii_string_is_tokenized_correctly() -> Result<()> {
  function sized_ascii_string_is_detokenized_correctly (line 586) | fn sized_ascii_string_is_detokenized_correctly() -> Result<()> {
  function test_into_token_std_string (line 598) | fn test_into_token_std_string() -> Result<()> {

FILE: packages/fuels-core/src/types.rs
  type ByteArray (line 23) | pub type ByteArray = [u8; 8];
  type Selector (line 24) | pub type Selector = Vec<u8>;
  function pad_u16 (line 27) | pub fn pad_u16(value: u16) -> ByteArray {
  function pad_u32 (line 34) | pub fn pad_u32(value: u32) -> ByteArray {
  function pad_string (line 40) | pub fn pad_string(s: &str) -> Result<Vec<u8>> {

FILE: packages/fuels-core/src/types/checksum_address.rs
  function checksum_encode (line 5) | pub fn checksum_encode(address: &str) -> Result<String> {
  function pre_validate (line 35) | fn pre_validate(s: &str) -> Result<()> {
  function is_checksum_valid (line 49) | pub fn is_checksum_valid(address: &str) -> bool {
  constant VALID_CHECKSUM (line 71) | const VALID_CHECKSUM: [&str; 4] = [
  constant INVALID_CHECKSUM (line 77) | const INVALID_CHECKSUM: [&str; 8] = [
  constant INVALID_LEN (line 89) | const INVALID_LEN: [&str; 6] = [
  constant INVALID_CHARACTERS (line 101) | const INVALID_CHARACTERS: &str =
  function will_detect_valid_checksums (line 105) | fn will_detect_valid_checksums() {
  function will_detect_invalid_checksums (line 112) | fn will_detect_invalid_checksums() {
  function can_construct_address_from_checksum (line 119) | fn can_construct_address_from_checksum() {
  function will_detect_invalid_lengths (line 125) | fn will_detect_invalid_lengths() {
  function will_detect_invalid_characters (line 133) | fn will_detect_invalid_characters() {

FILE: packages/fuels-core/src/types/core/bits.rs
  type Bits256 (line 11) | pub struct Bits256(pub [u8; 32]);
    method zeroed (line 15) | pub fn zeroed() -> Self {
    method from_hex_str (line 21) | pub fn from_hex_str(hex: &str) -> Result<Self> {
    method from (line 36) | fn from(value: AssetId) -> Self {
    method from (line 42) | fn from(value: SubAssetId) -> Self {
  type B512 (line 52) | pub struct B512 {
    method from (line 58) | fn from(bits_tuple: (Bits256, Bits256)) -> Self {
  type EvmAddress (line 69) | pub struct EvmAddress {
    method new (line 75) | fn new(b256: Bits256) -> Self {
    method value (line 81) | pub fn value(&self) -> Bits256 {
    method clear_12_bytes (line 86) | fn clear_12_bytes(bytes: [u8; 32]) -> [u8; 32] {
    method from (line 95) | fn from(b256: Bits256) -> Self {
  function from_hex_str_b256 (line 109) | fn from_hex_str_b256() -> Result<()> {
  function test_param_type_evm_addr (line 131) | fn test_param_type_evm_addr() {
  function evm_address_clears_first_12_bytes (line 143) | fn evm_address_clears_first_12_bytes() -> Result<()> {
  function test_into_token_evm_addr (line 158) | fn test_into_token_evm_addr() {

FILE: packages/fuels-core/src/types/core/bytes.rs
  type Bytes (line 4) | pub struct Bytes(pub Vec<u8>);
    method from_hex_str (line 9) | pub fn from_hex_str(hex: &str) -> Result<Self> {
    method eq (line 28) | fn eq(&self, other: &Vec<u8>) -> bool {
  function from (line 22) | fn from(bytes: Bytes) -> Vec<u8> {
  function eq (line 34) | fn eq(&self, other: &Bytes) -> bool {
  function from_hex_str_b256 (line 44) | fn from_hex_str_b256() -> Result<()> {

FILE: packages/fuels-core/src/types/core/identity.rs
  type Identity (line 20) | pub enum Identity {
    method as_ref (line 32) | fn as_ref(&self) -> &[u8] {
    method from (line 41) | fn from(address: &Address) -> Self {
    method from (line 46) | fn from(address: Address) -> Self {
    method from (line 52) | fn from(contract_id: &ContractId) -> Self {
    method from (line 57) | fn from(contract_id: ContractId) -> Self {
  method default (line 26) | fn default() -> Self {

FILE: packages/fuels-core/src/types/core/raw_slice.rs
  type RawSlice (line 2) | pub struct RawSlice(pub Vec<u8>);
    method eq (line 11) | fn eq(&self, other: &Vec<u8>) -> bool {
  function from (line 5) | fn from(raw_slice: RawSlice) -> Vec<u8> {
  function eq (line 17) | fn eq(&self, other: &RawSlice) -> bool {

FILE: packages/fuels-core/src/types/core/sized_ascii_string.rs
  type AsciiString (line 10) | pub struct AsciiString {
    method new (line 15) | pub fn new(data: String) -> Result<Self> {
    method to_trimmed_str (line 25) | pub fn to_trimmed_str(&self) -> &str {
    method to_left_trimmed_str (line 28) | pub fn to_left_trimmed_str(&self) -> &str {
    method to_right_trimmed_str (line 31) | pub fn to_right_trimmed_str(&self) -> &str {
    type Error (line 37) | type Error = Error;
    method try_from (line 39) | fn try_from(value: &str) -> Result<Self> {
    type Error (line 45) | type Error = Error;
    method try_from (line 47) | fn try_from(value: String) -> Result<Self> {
    method eq (line 71) | fn eq(&self, other: &&str) -> bool {
  method from (line 53) | fn from(ascii_str: AsciiString) -> Self {
  function as_ref (line 59) | fn as_ref(&self) -> &str {
  method fmt (line 65) | fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
  function eq (line 76) | fn eq(&self, other: &AsciiString) -> bool {
  type SizedAsciiString (line 85) | pub struct SizedAsciiString<const LEN: usize> {
  function new (line 90) | pub fn new(data: String) -> Result<Self> {
  function to_trimmed_str (line 106) | pub fn to_trimmed_str(&self) -> &str {
  function to_left_trimmed_str (line 109) | pub fn to_left_trimmed_str(&self) -> &str {
  function to_right_trimmed_str (line 112) | pub fn to_right_trimmed_str(&self) -> &str {
  function new_with_right_whitespace_padding (line 117) | pub fn new_with_right_whitespace_padding(data: String) -> Result<Self> {
  type Error (line 133) | type Error = Error;
  function try_from (line 135) | fn try_from(value: &str) -> Result<Self> {
  type Error (line 141) | type Error = Error;
  function try_from (line 143) | fn try_from(value: String) -> Result<Self> {
  method from (line 149) | fn from(sized_ascii_str: SizedAsciiString<LEN>) -> Self {
  method fmt (line 155) | fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
  function eq (line 161) | fn eq(&self, other: &&str) -> bool {
  function eq (line 167) | fn eq(&self, other: &SizedAsciiString<LEN>) -> bool {
  method serialize (line 173) | fn serialize<S: serde::Serializer>(
  function deserialize (line 182) | fn deserialize<D: serde::Deserializer<'de>>(
  function accepts_ascii_of_correct_length (line 195) | fn accepts_ascii_of_correct_length() {
  function refuses_non_ascii (line 205) | fn refuses_non_ascii() {
  function refuses_invalid_len (line 216) | fn refuses_invalid_len() {
  function can_be_constructed_from_str_ref (line 229) | fn can_be_constructed_from_str_ref() {
  function can_be_constructed_from_string (line 234) | fn can_be_constructed_from_string() {
  function can_be_converted_into_string (line 239) | fn can_be_converted_into_string() {
  function can_be_printed (line 249) | fn can_be_printed() {
  function can_be_compared_w_str_ref (line 256) | fn can_be_compared_w_str_ref() {
  function trim (line 265) | fn trim() -> Result<()> {
  function test_can_serialize_sized_ascii (line 280) | fn test_can_serialize_sized_ascii() {
  function test_can_deserialize_sized_ascii (line 288) | fn test_can_deserialize_sized_ascii() {
  function test_can_convert_sized_ascii_to_bytes (line 299) | fn test_can_convert_sized_ascii_to_bytes() {

FILE: packages/fuels-core/src/types/core/u256.rs
  method param_type (line 21) | fn param_type() -> ParamType {
  method from_token (line 27) | fn from_token(token: Token) -> FuelsResult<Self>
  method into_token (line 40) | fn into_token(self) -> Token {
  method serialize (line 46) | fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
  method deserialize (line 55) | fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
  function u256_serialize_deserialize (line 68) | fn u256_serialize_deserialize() {

FILE: packages/fuels-core/src/types/dry_runner.rs
  type DryRun (line 9) | pub struct DryRun {
    method gas_with_tolerance (line 16) | pub fn gas_with_tolerance(&self, tolerance: f32) -> u64 {
  type DryRunner (line 25) | pub trait DryRunner: Send + Sync {
    method dry_run (line 26) | async fn dry_run(&self, tx: FuelTransaction) -> Result<DryRun>;
    method estimate_gas_price (line 27) | async fn estimate_gas_price(&self, block_horizon: u32) -> Result<u64>;
    method consensus_parameters (line 28) | async fn consensus_parameters(&self) -> Result<ConsensusParameters>;
    method estimate_predicates (line 29) | async fn estimate_predicates(
    method dry_run (line 39) | async fn dry_run(&self, tx: FuelTransaction) -> Result<DryRun> {
    method estimate_gas_price (line 43) | async fn estimate_gas_price(&self, block_horizon: u32) -> Result<u64> {
    method consensus_parameters (line 47) | async fn consensus_parameters(&self) -> Result<ConsensusParameters> {
    method estimate_predicates (line 51) | async fn estimate_predicates(

FILE: packages/fuels-core/src/types/errors.rs
  type Reason (line 9) | pub enum Reason {
    method context (line 27) | pub(crate) fn context(self, context: impl std::fmt::Display) -> Self {
  type Error (line 52) | pub enum Error {
    method from (line 66) | fn from(value: std::io::Error) -> Self {
    method context (line 72) | pub(crate) fn context(self, context: impl Display) -> Self {
    method from (line 151) | fn from(err: fuel_vm::checked_transaction::CheckError) -> Error {
    method from (line 157) | fn from(err: fuel_tx::ValidityError) -> Error {
  type Result (line 83) | pub type Result<T> = std::result::Result<T, Error>;
  type Context (line 97) | pub trait Context<T>: Sealed {
    method context (line 98) | fn context<C>(self, context: C) -> Result<T>
    method with_context (line 102) | fn with_context<C, F>(self, f: F) -> Result<T>
  function context (line 112) | fn context<C>(self, context: C) -> Result<T>
  function with_context (line 120) | fn with_context<C, F>(self, context: F) -> Result<T>
  function result_context (line 185) | fn result_context() {
  function result_with_context (line 207) | fn result_with_context() {

FILE: packages/fuels-core/src/types/method_descriptor.rs
  type MethodDescriptor (line 4) | pub struct MethodDescriptor {
    method fn_selector (line 13) | pub const fn fn_selector(&self) -> &'static [u8] {
    method name (line 18) | pub const fn name(&self) -> &'static str {

FILE: packages/fuels-core/src/types/param_types/from_type_application.rs
  method try_from_type_application (line 21) | pub fn try_from_type_application(
  type Type (line 30) | struct Type {
    method try_from (line 45) | pub fn try_from(
    method resolve (line 52) | fn resolve(
    method determine_generics_for_type (line 122) | fn determine_generics_for_type(
  type Error (line 170) | type Error = Error;
  method try_from (line 172) | fn try_from(value: Type) -> Result<Self> {
  type Error (line 178) | type Error = Error;
  method try_from (line 180) | fn try_from(the_type: &Type) -> Result<Self> {
  function convert_into_param_types (line 209) | fn convert_into_param_types(coll: &[Type]) -> Result<Vec<ParamType>> {
  function named_param_types (line 213) | fn named_param_types(coll: &[Type]) -> Result<Vec<NamedParamType>> {
  function try_struct (line 219) | fn try_struct(the_type: &Type) -> Result<Option<ParamType>> {
  function try_vector (line 239) | fn try_vector(the_type: &Type) -> Result<Option<ParamType>> {
  function try_u128 (line 257) | fn try_u128(the_type: &Type) -> Result<Option<ParamType>> {
  function try_bytes (line 263) | fn try_bytes(the_type: &Type) -> Result<Option<ParamType>> {
  function try_std_string (line 269) | fn try_std_string(the_type: &Type) -> Result<Option<ParamType>> {
  function try_raw_slice (line 275) | fn try_raw_slice(the_type: &Type) -> Result<Option<ParamType>> {
  function try_enum (line 279) | fn try_enum(the_type: &Type) -> Result<Option<ParamType>> {
  function try_tuple (line 296) | fn try_tuple(the_type: &Type) -> Result<Option<ParamType>> {
  function param_types (line 307) | fn param_types(coll: &[Type]) -> Result<Vec<ParamType>> {
  function try_str_array (line 311) | fn try_str_array(the_type: &Type) -> Result<Option<ParamType>> {
  function try_str_slice (line 315) | fn try_str_slice(the_type: &Type) -> Result<Option<ParamType>> {
  function try_array (line 323) | fn try_array(the_type: &Type) -> Result<Option<ParamType>> {
  function try_primitive (line 340) | fn try_primitive(the_type: &Type) -> Result<Option<ParamType>> {
  function handles_simple_types (line 362) | fn handles_simple_types() -> Result<()> {
  function handles_arrays (line 402) | fn handles_arrays() -> Result<()> {
  function handles_vectors (line 449) | fn handles_vectors() -> Result<()> {
  function handles_structs (line 554) | fn handles_structs() -> Result<()> {
  function handles_enums (line 619) | fn handles_enums() -> Result<()> {
  function handles_tuples (line 684) | fn handles_tuples() -> Result<()> {
  function ultimate_example (line 747) | fn ultimate_example() -> Result<()> {
  function try_vector_correctly_resolves_param_type (line 1198) | fn try_vector_correctly_resolves_param_type() {
  function try_bytes_correctly_resolves_param_type (line 1207) | fn try_bytes_correctly_resolves_param_type() {
  function try_raw_slice_correctly_resolves_param_type (line 1216) | fn try_raw_slice_correctly_resolves_param_type() {
  function try_std_string_correctly_resolves_param_type (line 1230) | fn try_std_string_correctly_resolves_param_type() {
  function given_type_with_path (line 1238) | fn given_type_with_path(path: &str) -> Type {
  function given_generic_type_with_path (line 1247) | fn given_generic_type_with_path(path: &str) -> Type {

FILE: packages/fuels-core/src/types/param_types/param_type.rs
  type NamedParamType (line 3) | pub type NamedParamType = (String, ParamType);
  type ParamType (line 6) | pub enum ParamType {
  type ReturnLocation (line 36) | pub enum ReturnLocation {
  type EnumVariants (line 42) | pub struct EnumVariants {
    method new (line 47) | pub fn new(variants: Vec<NamedParamType>) -> Result<EnumVariants> {
    method variants (line 55) | pub fn variants(&self) -> &Vec<NamedParamType> {
    method param_types (line 59) | pub fn param_types(&self) -> impl Iterator<Item = &ParamType> {
    method select_variant (line 63) | pub fn select_variant(&self, discriminant: u64) -> Result<&NamedParamT...

FILE: packages/fuels-core/src/types/token.rs
  type EnumSelector (line 9) | pub type EnumSelector = (u64, Token, EnumVariants);
  type StaticStringToken (line 12) | pub struct StaticStringToken {
    method new (line 18) | pub fn new(data: String, expected_len: Option<usize>) -> Self {
    method validate (line 22) | fn validate(&self) -> Result<()> {
    method get_encodable_str (line 41) | pub fn get_encodable_str(&self) -> Result<&str> {
  type Error (line 48) | type Error = Error;
  method try_from (line 49) | fn try_from(string_token: StaticStringToken) -> Result<String> {
  type Token (line 56) | pub enum Token {
    method fmt (line 81) | fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
  method default (line 87) | fn default() -> Self {

FILE: packages/fuels-core/src/types/transaction_builders.rs
  constant GAS_ESTIMATION_BLOCK_HORIZON (line 48) | const GAS_ESTIMATION_BLOCK_HORIZON: u32 = DEFAULT_GAS_ESTIMATION_BLOCK_H...
  type UnresolvedWitnessIndexes (line 51) | struct UnresolvedWitnessIndexes {
  type BuildableTransaction (line 56) | pub trait BuildableTransaction: sealed::Sealed {
    method with_build_strategy (line 60) | fn with_build_strategy(self, strategy: Self::Strategy) -> Self;
    method build (line 61) | async fn build(self, provider: impl DryRunner) -> Result<Self::TxType>;
    type TxType (line 96) | type TxType = ScriptTransaction;
    type Strategy (line 97) | type Strategy = ScriptBuildStrategy;
    method with_build_strategy (line 99) | fn with_build_strategy(mut self, strategy: Self::Strategy) -> Self {
    method build (line 104) | async fn build(self, provider: impl DryRunner) -> Result<Self::TxType> {
    type TxType (line 113) | type TxType = CreateTransaction;
    type Strategy (line 114) | type Strategy = Strategy;
    method with_build_strategy (line 116) | fn with_build_strategy(mut self, strategy: Self::Strategy) -> Self {
    method build (line 121) | async fn build(self, provider: impl DryRunner) -> Result<Self::TxType> {
    type TxType (line 130) | type TxType = UploadTransaction;
    type Strategy (line 131) | type Strategy = Strategy;
    method with_build_strategy (line 133) | fn with_build_strategy(mut self, strategy: Self::Strategy) -> Self {
    method build (line 138) | async fn build(self, provider: impl DryRunner) -> Result<Self::TxType> {
    type TxType (line 147) | type TxType = UpgradeTransaction;
    type Strategy (line 148) | type Strategy = Strategy;
    method with_build_strategy (line 150) | fn with_build_strategy(mut self, strategy: Self::Strategy) -> Self {
    method build (line 155) | async fn build(self, provider: impl DryRunner) -> Result<Self::TxType> {
  type ScriptBuildStrategy (line 67) | pub enum ScriptBuildStrategy {
  type Strategy (line 83) | pub enum Strategy {
  type TransactionBuilder (line 161) | pub trait TransactionBuilder: BuildableTransaction + Send + sealed::Seal...
    method add_signer (line 164) | fn add_signer(&mut self, signer: impl Signer + Send + Sync + 'static) ...
    method add_signers (line 165) | fn add_signers<'a>(
    method estimate_max_fee (line 169) | async fn estimate_max_fee(&self, provider: impl DryRunner) -> Result<u...
    method enable_burn (line 170) | fn enable_burn(self, enable: bool) -> Self;
    method with_tx_policies (line 171) | fn with_tx_policies(self, tx_policies: TxPolicies) -> Self;
    method with_inputs (line 172) | fn with_inputs(self, inputs: Vec<Input>) -> Self;
    method with_outputs (line 173) | fn with_outputs(self, outputs: Vec<Output>) -> Self;
    method with_witnesses (line 174) | fn with_witnesses(self, witnesses: Vec<Witness>) -> Self;
    method inputs (line 175) | fn inputs(&self) -> &Vec<Input>;
    method inputs_mut (line 176) | fn inputs_mut(&mut self) -> &mut Vec<Input>;
    method outputs (line 177) | fn outputs(&self) -> &Vec<Output>;
    method outputs_mut (line 178) | fn outputs_mut(&mut self) -> &mut Vec<Output>;
    method witnesses (line 179) | fn witnesses(&self) -> &Vec<Witness>;
    method witnesses_mut (line 180) | fn witnesses_mut(&mut self) -> &mut Vec<Witness>;
    method with_estimation_horizon (line 181) | fn with_estimation_horizon(self, block_horizon: u32) -> Self;
  function estimate_max_fee_w_tolerance (line 467) | pub(crate) fn estimate_max_fee_w_tolerance<T: Chargeable>(
  method fmt (line 490) | fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
  type VariableOutputPolicy (line 511) | pub enum VariableOutputPolicy {
  method default (line 520) | fn default() -> Self {
  type ScriptTransactionBuilder (line 526) | pub struct ScriptTransactionBuilder {
    method build (line 691) | async fn build(mut self, provider: impl DryRunner) -> Result<ScriptTra...
    method resolve_fuel_tx (line 716) | async fn resolve_fuel_tx(self, dry_runner: impl DryRunner) -> Result<S...
    method resolve_fuel_tx_for_state_reading (line 759) | async fn resolve_fuel_tx_for_state_reading(self, dry_runner: impl DryR...
    method set_witnesses (line 805) | async fn set_witnesses(self, tx: &mut fuel_tx::Script, provider: impl ...
    method set_script_gas_limit (line 815) | async fn set_script_gas_limit(
    method script_tx_estimator (line 846) | fn script_tx_estimator<D>(
    method add_variable_outputs (line 858) | async fn add_variable_outputs(
    method with_variable_output_policy (line 874) | pub fn with_variable_output_policy(mut self, variable_outputs: Variabl...
    method with_script (line 879) | pub fn with_script(mut self, script: Vec<u8>) -> Self {
    method with_script_data (line 884) | pub fn with_script_data(mut self, script_data: Vec<u8>) -> Self {
    method with_gas_estimation_tolerance (line 889) | pub fn with_gas_estimation_tolerance(mut self, tolerance: f32) -> Self {
    method with_max_fee_estimation_tolerance (line 894) | pub fn with_max_fee_estimation_tolerance(mut self, max_fee_estimation_...
    method prepare_transfer (line 899) | pub fn prepare_transfer(
    method prepare_contract_transfer (line 911) | pub fn prepare_contract_transfer(
    method prepare_message_to_output (line 954) | pub fn prepare_message_to_output(
  method default (line 544) | fn default() -> Self {
  type CreateTransactionBuilder (line 565) | pub struct CreateTransactionBuilder {
    method build (line 1004) | pub async fn build(mut self, provider: impl DryRunner) -> Result<Creat...
    method resolve_fuel_tx (line 1025) | async fn resolve_fuel_tx(self, provider: impl DryRunner) -> Result<Cre...
    method with_bytecode_length (line 1061) | pub fn with_bytecode_length(mut self, bytecode_length: u64) -> Self {
    method with_bytecode_witness_index (line 1066) | pub fn with_bytecode_witness_index(mut self, bytecode_witness_index: u...
    method with_storage_slots (line 1071) | pub fn with_storage_slots(mut self, mut storage_slots: Vec<StorageSlot...
    method with_salt (line 1079) | pub fn with_salt(mut self, salt: impl Into<Salt>) -> Self {
    method with_max_fee_estimation_tolerance (line 1084) | pub fn with_max_fee_estimation_tolerance(mut self, max_fee_estimation_...
    method prepare_contract_deployment (line 1089) | pub fn prepare_contract_deployment(
  method default (line 583) | fn default() -> Self {
  type UploadTransactionBuilder (line 604) | pub struct UploadTransactionBuilder {
    method build (line 1112) | pub async fn build(mut self, provider: impl DryRunner) -> Result<Uploa...
    method resolve_fuel_tx (line 1133) | async fn resolve_fuel_tx(self, provider: impl DryRunner) -> Result<Upl...
    method with_root (line 1173) | pub fn with_root(mut self, root: Bytes32) -> Self {
    method with_witness_index (line 1178) | pub fn with_witness_index(mut self, witness_index: u16) -> Self {
    method with_subsection_index (line 1183) | pub fn with_subsection_index(mut self, subsection_index: u16) -> Self {
    method with_subsections_number (line 1188) | pub fn with_subsections_number(mut self, subsections_number: u16) -> S...
    method with_proof_set (line 1193) | pub fn with_proof_set(mut self, proof_set: Vec<Bytes32>) -> Self {
    method with_max_fee_estimation_tolerance (line 1198) | pub fn with_max_fee_estimation_tolerance(mut self, max_fee_estimation_...
    method prepare_subsection_upload (line 1203) | pub fn prepare_subsection_upload(
  method default (line 628) | fn default() -> Self {
  type UpgradeTransactionBuilder (line 650) | pub struct UpgradeTransactionBuilder {
    method build (line 1231) | pub async fn build(mut self, provider: impl DryRunner) -> Result<Upgra...
    method resolve_fuel_tx (line 1250) | async fn resolve_fuel_tx(self, provider: impl DryRunner) -> Result<Upg...
    method with_purpose (line 1284) | pub fn with_purpose(mut self, upgrade_purpose: UpgradePurpose) -> Self {
    method with_max_fee_estimation_tolerance (line 1289) | pub fn with_max_fee_estimation_tolerance(mut self, max_fee_estimation_...
    method prepare_state_transition_upgrade (line 1294) | pub fn prepare_state_transition_upgrade(root: Bytes32, tx_policies: Tx...
    method prepare_consensus_parameters_upgrade (line 1300) | pub fn prepare_consensus_parameters_upgrade(
  method default (line 666) | fn default() -> Self {
  function add_variable_outputs (line 992) | fn add_variable_outputs(tx: &mut fuel_tx::Script, variable_outputs: usiz...
  function resolve_fuel_inputs (line 1324) | fn resolve_fuel_inputs(
  function resolve_signed_resource (line 1357) | fn resolve_signed_resource(
  function resolve_predicate_resource (line 1398) | fn resolve_predicate_resource(
  function create_coin_input (line 1413) | pub fn create_coin_input(coin: Coin, witness_index: u16) -> FuelInput {
  function create_coin_message_input (line 1424) | pub fn create_coin_message_input(message: Message, witness_index: u16) -...
  function create_coin_predicate (line 1445) | pub fn create_coin_predicate(
  function create_coin_message_predicate (line 1463) | pub fn create_coin_message_predicate(
  function generate_missing_witnesses (line 1492) | async fn generate_missing_witnesses(
  function storage_slots_are_sorted_when_set (line 1518) | fn storage_slots_are_sorted_when_set() {
  function given_a_storage_slot (line 1528) | fn given_a_storage_slot(key: u8) -> StorageSlot {
  function create_message_coin_signed_if_data_is_empty (line 1536) | fn create_message_coin_signed_if_data_is_empty() {
  function create_message_data_signed_if_data_is_not_empty (line 1544) | fn create_message_data_signed_if_data_is_not_empty() {
  function create_message_coin_predicate_if_data_is_empty (line 1552) | fn create_message_coin_predicate_if_data_is_empty() {
  function create_message_data_predicate_if_data_is_not_empty (line 1560) | fn create_message_data_predicate_if_data_is_not_empty() {
  function given_a_message (line 1567) | fn given_a_message(data: Vec<u8>) -> Message {
  function given_a_coin (line 1579) | fn given_a_coin(tx_id: [u8; 32], owner: [u8; 32], amount: u64) -> Coin {
  function given_inputs (line 1588) | fn given_inputs(num_inputs: u8) -> Vec<Input> {
  function given_witnesses (line 1597) | fn given_witnesses(num_witnesses: usize) -> Vec<Witness> {
  type MockDryRunner (line 1601) | struct MockDryRunner {
  method default (line 1606) | fn default() -> Self {
  method dry_run (line 1616) | async fn dry_run(&self, _: FuelTransaction) -> Result<DryRun> {
  method consensus_parameters (line 1624) | async fn consensus_parameters(&self) -> Result<ConsensusParameters> {
  method estimate_gas_price (line 1628) | async fn estimate_gas_price(&self, _block_horizon: u32) -> Result<u64> {
  method estimate_predicates (line 1632) | async fn estimate_predicates(
  function create_tx_builder_witness_indexes_set_correctly (line 1642) | async fn create_tx_builder_witness_indexes_set_correctly() -> Result<()> {
  function script_tx_builder_witness_indexes_set_correctly (line 1679) | async fn script_tx_builder_witness_indexes_set_correctly() -> Result<()> {
  function build_w_enable_burn (line 1716) | async fn build_w_enable_burn() -> Result<()> {
  function build_w_enable_burn_predicates (line 1722) | async fn build_w_enable_burn_predicates() -> Result<()> {
  function build_w_enable_burn_messages (line 1734) | async fn build_w_enable_burn_messages() -> Result<()> {
  function build_w_enable_burn_predicates_message (line 1741) | async fn build_w_enable_burn_predicates_message() -> Result<()> {
  function test_enable_burn (line 1752) | async fn test_enable_burn(input: Input) -> Result<()> {
  type MockSigner (line 1775) | struct MockSigner {
  method sign (line 1783) | async fn sign(&self, _message: fuel_crypto::Message) -> Result<Signature> {
  method address (line 1786) | fn address(&self) -> Address {
  function add_signer_called_multiple_times (line 1793) | async fn add_signer_called_multiple_times() {

FILE: packages/fuels-core/src/types/transaction_builders/blob.rs
  type Blob (line 31) | pub struct Blob {
    method from (line 38) | fn from(data: Vec<u8>) -> Self {
    method as_ref (line 44) | fn as_ref(&self) -> &[u8] {
    method new (line 50) | pub fn new(data: Vec<u8>) -> Self {
    method len (line 54) | pub fn len(&self) -> usize {
    method is_empty (line 58) | pub fn is_empty(&self) -> bool {
    method id (line 62) | pub fn id(&self) -> BlobId {
    method bytes (line 66) | pub fn bytes(&self) -> &[u8] {
    method as_blob_body (line 70) | fn as_blob_body(&self, witness_index: u16) -> fuel_tx::BlobBody {
  type BlobId (line 35) | pub type BlobId = [u8; 32];
  function from (line 79) | fn from(value: Blob) -> Self {
  function from (line 85) | fn from(blob: Blob) -> Self {
  type BlobTransactionBuilder (line 91) | pub struct BlobTransactionBuilder {
    method estimate_max_blob_size (line 127) | pub async fn estimate_max_blob_size(&self, provider: &impl DryRunner) ...
    method build (line 149) | pub async fn build(mut self, provider: impl DryRunner) -> Result<BlobT...
    method resolve_fuel_tx (line 170) | async fn resolve_fuel_tx(mut self, provider: &impl DryRunner) -> Resul...
    method with_blob (line 211) | pub fn with_blob(mut self, blob: Blob) -> Self {
    method with_max_fee_estimation_tolerance (line 216) | pub fn with_max_fee_estimation_tolerance(mut self, max_fee_estimation_...
  method default (line 106) | fn default() -> Self {
  type TxType (line 226) | type TxType = BlobTransaction;
  type Strategy (line 227) | type Strategy = Strategy;
  method with_build_strategy (line 229) | fn with_build_strategy(mut self, strategy: Self::Strategy) -> Self {
  method build (line 234) | async fn build(self, provider: impl DryRunner) -> Result<Self::TxType> {

FILE: packages/fuels-core/src/types/transaction_builders/script_tx_estimator.rs
  type ScriptTxEstimator (line 16) | pub(crate) struct ScriptTxEstimator<R> {
  function new (line 24) | pub fn new(
  function run (line 39) | pub async fn run(
  function prepare_for_estimation (line 50) | pub async fn prepare_for_estimation(
  function last_dry_run (line 66) | pub fn last_dry_run(&self) -> Option<DryRun> {
  function _run (line 70) | async fn _run(&mut self, tx: fuel_tx::Script) -> Result<DryRun> {
  function set_script_gas_limit_to_max (line 77) | fn set_script_gas_limit_to_max(
  function saturate_with_variable_outputs (line 86) | fn saturate_with_variable_outputs(
  function add_fake_witnesses (line 103) | fn add_fake_witnesses(&self, tx: &mut fuel_tx::Script) {
  function add_fake_coins (line 110) | fn add_fake_coins(&self, tx: &mut fuel_tx::Script, consensus_params: &Co...
  function needs_fake_base_input (line 122) | fn needs_fake_base_input(

FILE: packages/fuels-core/src/types/tx_response.rs
  type TxResponse (line 6) | pub struct TxResponse {

FILE: packages/fuels-core/src/types/tx_status.rs
  type Success (line 24) | pub struct Success {
  type SqueezedOut (line 31) | pub struct SqueezedOut {
  type Failure (line 36) | pub struct Failure {
  type TxStatus (line 45) | pub enum TxStatus {
    method check (line 55) | pub fn check(&self, log_decoder: Option<&LogDecoder>) -> Result<()> {
    method take_success_checked (line 75) | pub fn take_success_checked(self, log_decoder: Option<&LogDecoder>) ->...
    method total_gas (line 104) | pub fn total_gas(&self) -> u64 {
    method total_fee (line 112) | pub fn total_fee(&self) -> u64 {
    method map_revert_error (line 120) | fn map_revert_error(
    method take_receipts_checked (line 195) | pub fn take_receipts_checked(
    method take_receipts (line 203) | pub fn take_receipts(self) -> Arc<Vec<Receipt>> {
    method is_final (line 211) | pub fn is_final(&self) -> bool {
    method from (line 221) | fn from(client_status: ClientTransactionStatus) -> Self {
    method from (line 287) | fn from(value: TransactionExecutionStatus) -> Self {

FILE: packages/fuels-core/src/types/wrappers/block.rs
  type Header (line 10) | pub struct Header {
    method from (line 27) | fn from(client_header: ClientHeader) -> Self {
  type Block (line 49) | pub struct Block {
    method from (line 56) | fn from(client_block: ClientBlock) -> Self {

FILE: packages/fuels-core/src/types/wrappers/chain_info.rs
  type ChainInfo (line 9) | pub struct ChainInfo {
    method from (line 17) | fn from(client_chain_info: ClientChainInfo) -> Self {

FILE: packages/fuels-core/src/types/wrappers/coin.rs
  type Coin (line 12) | pub struct Coin {
    method from (line 20) | fn from(coin: ClientCoin) -> Self {
  method from (line 31) | fn from(coin: Coin) -> CoinConfig {

FILE: packages/fuels-core/src/types/wrappers/coin_type.rs
  type CoinType (line 8) | pub enum CoinType {
    method from (line 15) | fn from(client_resource: ClientCoinType) -> Self {
    method id (line 25) | pub fn id(&self) -> Option<CoinTypeId> {
    method amount (line 33) | pub fn amount(&self) -> u64 {
    method coin_asset_id (line 41) | pub fn coin_asset_id(&self) -> Option<AssetId> {
    method asset_id (line 49) | pub fn asset_id(&self, base_asset_id: AssetId) -> Option<AssetId> {
    method owner (line 57) | pub fn owner(&self) -> Option<&Address> {

FILE: packages/fuels-core/src/types/wrappers/coin_type_id.rs
  type CoinTypeId (line 5) | pub enum CoinTypeId {

FILE: packages/fuels-core/src/types/wrappers/input.rs
  type Input (line 11) | pub enum Input {
    method resource_signed (line 30) | pub const fn resource_signed(resource: CoinType) -> Self {
    method resource_predicate (line 34) | pub const fn resource_predicate(resource: CoinType, code: Vec<u8>, dat...
    method amount (line 42) | pub fn amount(&self) -> Option<u64> {
    method contains_data (line 51) | pub fn contains_data(&self) -> bool {
    method contract (line 65) | pub const fn contract(

FILE: packages/fuels-core/src/types/wrappers/message.rs
  type MessageStatus (line 10) | pub enum MessageStatus {
  type Message (line 17) | pub struct Message {
    method message_id (line 28) | pub fn message_id(&self) -> MessageId {
    method from (line 40) | fn from(message: ClientMessage) -> Self {
    method from (line 54) | fn from(message: ClientMessageCoin) -> Self {
  method from (line 68) | fn from(message: Message) -> MessageConfig {

FILE: packages/fuels-core/src/types/wrappers/message_proof.rs
  type MerkleProof (line 10) | pub struct MerkleProof {
    method from (line 18) | fn from(client_merkle_proof: ClientMerkleProof) -> Self {
  type MessageProof (line 27) | pub struct MessageProof {
    method from (line 46) | fn from(client_message_proof: ClientMessageProof) -> Self {

FILE: packages/fuels-core/src/types/wrappers/node_info.rs
  type NodeInfo (line 6) | pub struct NodeInfo {
    method from (line 15) | fn from(client_node_info: ClientNodeInfo) -> Self {

FILE: packages/fuels-core/src/types/wrappers/transaction.rs
  type Transactions (line 34) | pub struct Transactions {
    method new (line 39) | pub fn new() -> Self {
    method insert (line 43) | pub fn insert(mut self, tx: impl Into<FuelTransaction>) -> Self {
    method as_slice (line 49) | pub fn as_slice(&self) -> &[FuelTransaction] {
  type MintTransaction (line 55) | pub struct MintTransaction {
    method from (line 72) | fn from(tx: Mint) -> Self {
    method check_without_signatures (line 78) | pub fn check_without_signatures(
    method id (line 88) | pub fn id(&self, chain_id: ChainId) -> Bytes32 {
    method mint_asset_id (line 93) | pub fn mint_asset_id(&self) -> &AssetId {
    method mint_amount (line 98) | pub fn mint_amount(&self) -> u64 {
  method from (line 60) | fn from(mint: MintTransaction) -> Self {
  method from (line 66) | fn from(tx: MintTransaction) -> Self {
  type TxPolicies (line 105) | pub struct TxPolicies {
    method new (line 117) | pub fn new(
    method with_tip (line 137) | pub fn with_tip(mut self, tip: u64) -> Self {
    method tip (line 142) | pub fn tip(&self) -> Option<u64> {
    method with_witness_limit (line 146) | pub fn with_witness_limit(mut self, witness_limit: u64) -> Self {
    method witness_limit (line 151) | pub fn witness_limit(&self) -> Option<u64> {
    method with_maturity (line 155) | pub fn with_maturity(mut self, maturity: u64) -> Self {
    method maturity (line 160) | pub fn maturity(&self) -> Option<u64> {
    method with_expiration (line 164) | pub fn with_expiration(mut self, expiration: u64) -> Self {
    method expiration (line 169) | pub fn expiration(&self) -> Option<u64> {
    method with_max_fee (line 173) | pub fn with_max_fee(mut self, max_fee: u64) -> Self {
    method max_fee (line 178) | pub fn max_fee(&self) -> Option<u64> {
    method with_script_gas_limit (line 182) | pub fn with_script_gas_limit(mut self, script_gas_limit: u64) -> Self {
    method script_gas_limit (line 187) | pub fn script_gas_limit(&self) -> Option<u64> {
    method with_owner (line 191) | pub fn with_owner(mut self, owner: u64) -> Self {
    method owner (line 196) | pub fn owner(&self) -> Option<u64> {
  type TransactionType (line 206) | pub enum TransactionType {
  type EstimablePredicates (line 218) | pub trait EstimablePredicates: sealed::Sealed {
    method estimate_predicates (line 222) | async fn estimate_predicates(
    method estimate_predicates (line 567) | async fn estimate_predicates(
    method estimate_predicates (line 585) | async fn estimate_predicates(
    method estimate_predicates (line 605) | async fn estimate_predicates(
    method estimate_predicates (line 637) | async fn estimate_predicates(
    method estimate_predicates (line 655) | async fn estimate_predicates(
  type ValidatablePredicates (line 229) | pub trait ValidatablePredicates: sealed::Sealed {
    method validate_predicates (line 232) | fn validate_predicates(
  type Transaction (line 241) | pub trait Transaction:
    method fee_checked_from_tx (line 250) | fn fee_checked_from_tx(
    method max_gas (line 256) | fn max_gas(&self, consensus_parameters: &ConsensusParameters) -> u64;
    method check (line 261) | fn check(&self, block_height: u32, consensus_parameters: &ConsensusPar...
    method id (line 263) | fn id(&self, chain_id: ChainId) -> Bytes32;
    method maturity (line 265) | fn maturity(&self) -> Option<u64>;
    method expiration (line 267) | fn expiration(&self) -> Option<u64>;
    method owner (line 269) | fn owner(&self) -> Option<u64>;
    method metered_bytes_size (line 271) | fn metered_bytes_size(&self) -> usize;
    method inputs (line 273) | fn inputs(&self) -> &Vec<Input>;
    method outputs (line 275) | fn outputs(&self) -> &Vec<Output>;
    method witnesses (line 277) | fn witnesses(&self) -> &Vec<Witness>;
    method max_fee (line 279) | fn max_fee(&self) -> Option<u64>;
    method size (line 281) | fn size(&self) -> usize;
    method witness_limit (line 283) | fn witness_limit(&self) -> Option<u64>;
    method tip (line 285) | fn tip(&self) -> Option<u64>;
    method is_using_predicates (line 287) | fn is_using_predicates(&self) -> bool;
    method precompute (line 291) | fn precompute(&mut self, chain_id: &ChainId) -> Result<()>;
    method append_witness (line 294) | fn append_witness(&mut self, witness: Witness) -> Result<usize>;
    method used_coins (line 296) | fn used_coins(&self, base_asset_id: &AssetId) -> HashMap<(Address, Ass...
    method sign_with (line 298) | async fn sign_with(
  type Error (line 306) | type Error = Error;
  method try_from (line 307) | fn try_from(value: TransactionType) -> Result<Self> {
  function extract_coin_type_id (line 320) | fn extract_coin_type_id(input: &Input) -> Option<CoinTypeId> {
  function extract_owner_or_recipient (line 330) | pub fn extract_owner_or_recipient(input: &Input) -> Option<Address> {
  method salt (line 621) | pub fn salt(&self) -> &FuelSalt {
  method bytecode_witness_index (line 625) | pub fn bytecode_witness_index(&self) -> u16 {
  method storage_slots (line 629) | pub fn storage_slots(&self) -> &Vec<StorageSlot> {
  method script (line 671) | pub fn script(&self) -> &Vec<u8> {
  method script_data (line 675) | pub fn script_data(&self) -> &Vec<u8> {
  method gas_limit (line 679) | pub fn gas_limit(&self) -> u64 {
  method with_gas_limit (line 683) | pub fn with_gas_limit(mut self, gas_limit: u64) -> Self {
  function append_witnesses_returns_error_when_limit_exceeded (line 697) | fn append_witnesses_returns_error_when_limit_exceeded() {

FILE: packages/fuels-core/src/types/wrappers/transaction_response.rs
  type TransactionResponse (line 14) | pub struct TransactionResponse {
    method from (line 22) | fn from(client_response: ClientTransactionResponse) -> Self {

FILE: packages/fuels-core/src/utils.rs
  function checked_round_up_to_word_alignment (line 9) | pub fn checked_round_up_to_word_alignment(bytes_len: usize) -> Result<us...
  function calculate_witnesses_size (line 29) | pub(crate) fn calculate_witnesses_size<'a, I: IntoIterator<Item = &'a Wi...
  type Sealed (line 39) | pub trait Sealed {}
  function to_named (line 43) | pub(crate) fn to_named<'a, I: IntoIterator<Item = &'a crate::types::para...

FILE: packages/fuels-core/src/utils/constants.rs
  constant ENUM_DISCRIMINANT_BYTE_WIDTH (line 3) | pub const ENUM_DISCRIMINANT_BYTE_WIDTH: usize = 8;
  constant WORD_SIZE (line 4) | pub const WORD_SIZE: usize = core::mem::size_of::<Word>();
  constant DEFAULT_CALL_PARAMS_AMOUNT (line 7) | pub const DEFAULT_CALL_PARAMS_AMOUNT: u64 = 0;
  constant DEFAULT_GAS_ESTIMATION_TOLERANCE (line 10) | pub const DEFAULT_GAS_ESTIMATION_TOLERANCE: f64 = 0.2;
  constant DEFAULT_GAS_ESTIMATION_BLOCK_HORIZON (line 11) | pub const DEFAULT_GAS_ESTIMATION_BLOCK_HORIZON: u32 = 5;
  constant WITNESS_STATIC_SIZE (line 14) | pub const WITNESS_STATIC_SIZE: usize = 8;
  constant SIGNATURE_SIZE (line 15) | const SIGNATURE_SIZE: usize = 64;
  constant SIGNATURE_WITNESS_SIZE (line 16) | pub const SIGNATURE_WITNESS_SIZE: usize = WITNESS_STATIC_SIZE + SIGNATUR...

FILE: packages/fuels-core/src/utils/offsets.rs
  function base_offset_script (line 9) | pub fn base_offset_script(consensus_parameters: &ConsensusParameters) ->...
  function call_script_data_offset (line 15) | pub fn call_script_data_offset(

FILE: packages/fuels-macros/src/abigen/parsing.rs
  function from (line 10) | fn from(targets: MacroAbigenTargets) -> Self {
  method from (line 16) | fn from(macro_target: MacroAbigenTarget) -> Self {
  type MacroAbigenTarget (line 28) | pub(crate) struct MacroAbigenTarget {
    method new (line 50) | pub fn new(command: Command) -> Result<Self> {
    method parse_inline_or_load_abi (line 67) | fn parse_inline_or_load_abi(abi_lit_str: &LitStr) -> Result<Abi> {
  type MacroAbigenTargets (line 34) | pub(crate) struct MacroAbigenTargets {
  method parse (line 39) | fn parse(input: ParseStream) -> Result<Self> {

FILE: packages/fuels-macros/src/derive/parameterize.rs
  function generate_parameterize_impl (line 10) | pub fn generate_parameterize_impl(input: DeriveInput) -> Result<TokenStr...
  function parameterize_for_struct (line 38) | fn parameterize_for_struct(
  function parameterize_generic_params (line 68) | fn parameterize_generic_params(
  function parameterize_for_enum (line 83) | fn parameterize_for_enum(

FILE: packages/fuels-macros/src/derive/tokenizable.rs
  function generate_tokenizable_impl (line 14) | pub fn generate_tokenizable_impl(input: DeriveInput) -> Result<TokenStre...
  function tokenizable_for_struct (line 42) | fn tokenizable_for_struct(
  function tokenizable_for_enum (line 106) | fn tokenizable_for_enum(

FILE: packages/fuels-macros/src/derive/try_from.rs
  function generate_try_from_impl (line 7) | pub fn generate_try_from_impl(input: DeriveInput) -> Result<TokenStream> {
  function impl_try_from (line 25) | fn impl_try_from(

FILE: packages/fuels-macros/src/derive/utils.rs
  function get_path_from_attr_or (line 8) | pub(crate) fn get_path_from_attr_or(
  function find_attr (line 40) | pub(crate) fn find_attr<'a>(name: &str, attrs: &'a [Attribute]) -> Optio...
  type VariantInfo (line 49) | pub(crate) struct VariantInfo {
  type ExtractedVariant (line 54) | pub(crate) enum ExtractedVariant {
  function extract_variants (line 64) | pub(crate) fn extract_variants(
  type ExtractedVariants (line 104) | pub(crate) struct ExtractedVariants {
    method variant_into_discriminant_and_token (line 110) | pub(crate) fn variant_into_discriminant_and_token(&self) -> TokenStream {
    method variant_from_discriminant_and_token (line 141) | pub(crate) fn variant_from_discriminant_and_token(&self, no_std: bool)...
  function validate_variant_type (line 173) | fn validate_variant_type(variant: &Variant) -> Result<()> {
  function std_lib_path (line 197) | pub(crate) fn std_lib_path(no_std: bool) -> TokenStream {

FILE: packages/fuels-macros/src/lib.rs
  function abigen (line 36) | pub fn abigen(input: TokenStream) -> TokenStream {
  function wasm_abigen (line 45) | pub fn wasm_abigen(input: TokenStream) -> TokenStream {
  function setup_program_test (line 57) | pub fn setup_program_test(input: TokenStream) -> TokenStream {
  function parameterize (line 66) | pub fn parameterize(stream: TokenStream) -> TokenStream {
  function tokenizable (line 75) | pub fn tokenizable(stream: TokenStream) -> TokenStream {
  function try_from (line 84) | pub fn try_from(stream: TokenStream) -> TokenStream {

FILE: packages/fuels-macros/src/parse_utils.rs
  type ErrorsExt (line 15) | pub(crate) trait ErrorsExt: Iterator<Item = Error> + Sized {
    method combine_errors (line 16) | fn combine_errors(self) -> Option<Self::Item>;
    method validate_no_errors (line 17) | fn validate_no_errors(self) -> Result<(), Self::Item>;
    method combine_errors (line 24) | fn combine_errors(self) -> Option<Self::Item> {
    method validate_no_errors (line 31) | fn validate_no_errors(self) -> Result<(), Self::Item> {
  function generate_duplicate_error (line 40) | fn generate_duplicate_error<T>(duplicates: &[&T]) -> Error
  function group_up_duplicates (line 57) | fn group_up_duplicates<T, K, KeyFn>(name_values: &[T], key: KeyFn) -> Ve...
  function validate_no_duplicates (line 75) | fn validate_no_duplicates<T, K, KeyFn>(elements: &[T], key_fn: KeyFn) ->...
  function validate_and_extract_generic_types (line 87) | pub fn validate_and_extract_generic_types(generics: &Generics) -> syn::R...
  type Member (line 104) | enum Member {
  type Members (line 109) | pub(crate) struct Members {
    method from_struct (line 115) | pub(crate) fn from_struct(
    method from_enum (line 151) | pub(crate) fn from_enum(data: DataEnum, fuels_core_path: TokenStream) ...
    method names (line 191) | pub(crate) fn names(&self) -> impl Iterator<Item = &Ident> + '_ {
    method names_as_strings (line 201) | pub(crate) fn names_as_strings(&self) -> impl Iterator<Item = TokenStr...
    method ignored_names (line 208) | pub(crate) fn ignored_names(&self) -> impl Iterator<Item = &Ident> + '_ {
    method param_type_calls (line 218) | pub(crate) fn param_type_calls(&self) -> impl Iterator<Item = TokenStr...
  function has_ignore_attr (line 229) | pub(crate) fn has_ignore_attr(attrs: &[Attribute]) -> bool {

FILE: packages/fuels-macros/src/parse_utils/command.rs
  type Command (line 11) | pub struct Command {
    method parse_multiple (line 17) | pub fn parse_multiple(input: ParseStream) -> syn::Result<Vec<Command>> {
    method new (line 25) | pub fn new(meta: Meta) -> syn::Result<Self> {
    method parse_nested_metas (line 46) | pub fn parse_nested_metas(self) -> syn::Result<Punctuated<Meta, Comma>> {
    method parse_multiple_from_token_stream (line 51) | pub(crate) fn parse_multiple_from_token_stream(
    method parse_single_from_token_stream (line 58) | pub(crate) fn parse_single_from_token_stream(
  function command_name_is_properly_extracted (line 73) | fn command_name_is_properly_extracted() -> syn::Result<()> {

FILE: packages/fuels-macros/src/parse_utils/unique_lit_strs.rs
  type UniqueLitStrs (line 9) | pub struct UniqueLitStrs {
    method new (line 15) | pub fn new(tokens: TokenStream) -> Result<Self> {
    method iter (line 26) | pub fn iter(&self) -> impl Iterator<Item = &LitStr> {
    method span (line 31) | pub fn span(&self) -> Span {
  type Item (line 37) | type Item = LitStr;
  type IntoIter (line 38) | type IntoIter = IntoIter<Self::Item>;
  method into_iter (line 40) | fn into_iter(self) -> Self::IntoIter {
  function correctly_reads_lit_strs (line 54) | fn correctly_reads_lit_strs() -> Result<()> {
  function doesnt_allow_duplicates (line 73) | fn doesnt_allow_duplicates() {
  function only_strings_allowed (line 86) | fn only_strings_allowed() {
  function parse_unique_lit_strs (line 94) | fn parse_unique_lit_strs(stream: TokenStream) -> Result<UniqueLitStrs> {

FILE: packages/fuels-macros/src/parse_utils/unique_name_values.rs
  type UniqueNameValues (line 14) | pub struct UniqueNameValues {
    method new (line 20) | pub fn new(tokens: TokenStream) -> syn::Result<Self> {
    method try_get (line 36) | pub fn try_get(&self, name: &str) -> Option<&Lit> {
    method validate_has_no_other_names (line 40) | pub fn validate_has_no_other_names(&self, allowed_names: &[&str]) -> s...
    method get_as_lit_str (line 58) | pub fn get_as_lit_str(&self, name: &str) -> syn::Result<&LitStr> {
    method extract_name_values (line 73) | fn extract_name_values<T: Iterator<Item = MetaNameValue>>(
  function name_values_correctly_parsed (line 110) | fn name_values_correctly_parsed() -> syn::Result<()> {
  function duplicates_cause_errors (line 134) | fn duplicates_cause_errors() {
  function attr_names_cannot_be_paths (line 147) | fn attr_names_cannot_be_paths() {
  function only_name_value_is_accepted (line 159) | fn only_name_value_is_accepted() {
  function validates_correct_names (line 168) | fn validates_correct_names() -> syn::Result<()> {
  function catches_incorrect_names (line 180) | fn catches_incorrect_names() -> syn::Result<()> {
  function can_get_lit_strs (line 197) | fn can_get_lit_strs() -> syn::Result<()> {
  function cannot_get_lit_str_if_type_is_wrong (line 208) | fn cannot_get_lit_str_if_type_is_wrong() -> syn::Result<()> {
  function lit_str_getter_complains_value_is_missing (line 224) | fn lit_str_getter_complains_value_is_missing() -> syn::Result<()> {
  function extract_name_values (line 236) | fn extract_name_values(stream: TokenStream) -> syn::Result<UniqueNameVal...

FILE: packages/fuels-macros/src/setup_program_test/code_gen.rs
  function generate_setup_program_test_code (line 16) | pub(crate) fn generate_setup_program_test_code(
  function generate_project_lookup (line 42) | fn generate_project_lookup(
  function abigen_code (line 58) | fn abigen_code(project_lookup: &HashMap<String, Project>) -> syn::Result...
  function parse_abigen_targets (line 64) | fn parse_abigen_targets(
  function wallet_initialization_code (line 82) | fn wallet_initialization_code(maybe_command: Option<InitializeWalletComm...
  function extract_wallet_names (line 109) | fn extract_wallet_names(command: &InitializeWalletCommand) -> Vec<Ident> {
  function contract_deploying_code (line 117) | fn contract_deploying_code(
  function script_loading_code (line 175) | fn script_loading_code(
  type Project (line 202) | struct Project {
    method new (line 210) | fn new(program_type: ProgramType, dir: &LitStr, profile: BuildProfile)...
    method compile_file_path (line 226) | fn compile_file_path(&self, suffix: &str, description: &str) -> String {
    method project_name (line 241) | fn project_name(&self) -> &str {
    method abi_path (line 249) | fn abi_path(&self) -> String {
    method bin_path (line 253) | fn bin_path(&self) -> String {

FILE: packages/fuels-macros/src/setup_program_test/parsing/commands.rs
  type TestProgramCommands (line 29) | pub(crate) struct TestProgramCommands {
  method parse (line 46) | fn parse(input: ParseStream) -> Result<Self> {

FILE: packages/fuels-macros/src/setup_program_test/parsing/commands/abigen.rs
  type TargetInfo (line 10) | pub(crate) struct TargetInfo {
    type Error (line 17) | type Error = Error;
    method try_from (line 19) | fn try_from(command: Command) -> Result<Self, Self::Error> {
  type AbigenCommand (line 37) | pub(crate) struct AbigenCommand {
    type Error (line 43) | type Error = Error;
    method try_from (line 45) | fn try_from(command: Command) -> Result<Self, Self::Error> {

FILE: packages/fuels-macros/src/setup_program_test/parsing/commands/deploy_contract.rs
  type DeployContractCommand (line 8) | pub struct DeployContractCommand {
    type Error (line 16) | type Error = Error;
    method try_from (line 18) | fn try_from(command: Command) -> Result<Self, Self::Error> {

FILE: packages/fuels-macros/src/setup_program_test/parsing/commands/initialize_wallet.rs
  type InitializeWalletCommand (line 9) | pub struct InitializeWalletCommand {
    type Error (line 15) | type Error = Error;
    method try_from (line 17) | fn try_from(command: Command) -> Result<Self, Self::Error> {

FILE: packages/fuels-macros/src/setup_program_test/parsing/commands/load_script.rs
  type LoadScriptCommand (line 8) | pub struct LoadScriptCommand {
    type Error (line 15) | type Error = Error;
    method try_from (line 17) | fn try_from(command: Command) -> Result<Self, Self::Error> {

FILE: packages/fuels-macros/src/setup_program_test/parsing/commands/set_options.rs
  type BuildProfile (line 8) | pub enum BuildProfile {
    method fmt (line 27) | fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
  type Err (line 15) | type Err = &'static str;
  method from_str (line 17) | fn from_str(s: &str) -> Result<Self, Self::Err> {
  type SetOptionsCommand (line 40) | pub struct SetOptionsCommand {
    type Error (line 45) | type Error = Error;
    method try_from (line 47) | fn try_from(command: Command) -> Result<Self, Self::Error> {

FILE: packages/fuels-macros/src/setup_program_test/parsing/validations.rs
  function extract_the_abigen_command (line 14) | pub(crate) fn extract_the_abigen_command(
  function validate_all_contracts_are_known (line 32) | pub(crate) fn validate_all_contracts_are_known(
  function validate_all_scripts_are_known (line 56) | pub(crate) fn validate_all_scripts_are_known(
  function validate_zero_or_one_wallet_command_present (line 80) | pub(crate) fn validate_zero_or_one_wallet_command_present(
  function names_of_program_bindings (line 95) | fn names_of_program_bindings(
  function extract_contracts_to_deploy (line 106) | fn extract_contracts_to_deploy(commands: &[DeployContractCommand]) -> Ha...
  function extract_scripts_to_load (line 110) | fn extract_scripts_to_load(commands: &[LoadScriptCommand]) -> HashSet<&L...

FILE: packages/fuels-macros/tests/macro_usage.rs
  function ui (line 4) | fn ui() {

FILE: packages/fuels-macros/tests/ui/abigen/duplicate_attribute.rs
  function main (line 10) | fn main() {}

FILE: packages/fuels-macros/tests/ui/abigen/invalid_abi_path.rs
  function main (line 5) | fn main() {}

FILE: packages/fuels-macros/tests/ui/abigen/invalid_abi_value.rs
  function main (line 5) | fn main() {}

FILE: packages/fuels-macros/tests/ui/abigen/invalid_name_value.rs
  function main (line 5) | fn main() {}

FILE: packages/fuels-macros/tests/ui/abigen/invalid_program_type.rs
  function main (line 8) | fn main() {}

FILE: packages/fuels-macros/tests/ui/abigen/malformed_abi.rs
  function main (line 5) | fn main() {}

FILE: packages/fuels-macros/tests/ui/abigen/missing_abi_attribute.rs
  function main (line 5) | fn main() {}

FILE: packages/fuels-macros/tests/ui/abigen/missing_name_attr.rs
  function main (line 5) | fn main() {}

FILE: packages/fuels-macros/tests/ui/abigen/unrecognized_attribute.rs
  function main (line 9) | fn main() {}

FILE: packages/fuels-macros/tests/ui/derive/parameterize/attribute_must_be_named_value.rs
  type SomeEnum (line 5) | enum SomeEnum {
  type SomeStruct (line 11) | struct SomeStruct {}
  function main (line 13) | fn main() {}

FILE: packages/fuels-macros/tests/ui/derive/parameterize/only_generic_types_are_supported.rs
  type SomeEnum (line 4) | enum SomeEnum<const T: usize> {
  type AnotherEnum (line 9) | enum AnotherEnum<'a> {
  type SomeStruct (line 14) | struct SomeStruct<const T: usize> {}
  type AnotherStruct (line 17) | struct AnotherStruct<'a> {
  function main (line 21) | fn main() {}

FILE: packages/fuels-macros/tests/ui/derive/parameterize/only_one_variant_element_supported.rs
  type SomeEnum (line 4) | enum SomeEnum {
  type AnotherEnum (line 10) | enum AnotherEnum {
  function main (line 14) | fn main() {}

FILE: packages/fuels-macros/tests/ui/derive/parameterize/struct_like_enum_variants_not_supported.rs
  type SomeEnum (line 4) | enum SomeEnum {
  function main (line 9) | fn main() {}

FILE: packages/fuels-macros/tests/ui/derive/parameterize/tuple_like_structs_not_supported.rs
  type SomeStruct (line 4) | struct SomeStruct(pub u64, pub String);
  function main (line 6) | fn main() {}

FILE: packages/fuels-macros/tests/ui/derive/tokenizable/only_generic_types_are_supported.rs
  type SomeEnum (line 4) | enum SomeEnum<const T: usize> {
  type AnotherEnum (line 9) | enum AnotherEnum<'a> {
  type SomeStruct (line 14) | struct SomeStruct<const T: usize> {}
  type AnotherStruct (line 17) | struct AnotherStruct<'a> {
  function main (line 21) | fn main() {}

FILE: packages/fuels-macros/tests/ui/derive/tokenizable/only_one_variant_element_supported.rs
  type SomeEnum (line 4) | enum SomeEnum {
  type AnotherEnum (line 10) | enum AnotherEnum {
  function main (line 14) | fn main() {}

FILE: packages/fuels-macros/tests/ui/derive/tokenizable/struct_like_enum_variants_not_supported.rs
  type SomeEnum (line 4) | enum SomeEnum {
  function main (line 9) | fn main() {}

FILE: packages/fuels-macros/tests/ui/derive/tokenizable/tuple_like_structs_not_supported.rs
  type SomeStruct (line 4) | struct SomeStruct(pub u64, pub String);
  function main (line 6) | fn main() {}

FILE: packages/fuels-macros/tests/ui/setup_program_test/abigen_command_is_missing.rs
  function main (line 9) | fn main() {}

FILE: packages/fuels-macros/tests/ui/setup_program_test/duplicate_wallet_command.rs
  function main (line 9) | fn main() {}

FILE: packages/fuels-macros/tests/ui/setup_program_test/duplicate_wallet_names.rs
  function main (line 8) | fn main() {}

FILE: packages/fuels-macros/tests/ui/setup_program_test/invalid_path.rs
  function main (line 8) | fn main() {}

FILE: packages/fuels-macros/tests/ui/setup_program_test/invalid_project_path.rs
  function main (line 5) | fn main() {}

FILE: packages/fuels-macros/tests/ui/setup_program_test/unknown_command.rs
  function main (line 13) | fn main() {}

FILE: packages/fuels-macros/tests/ui/setup_program_test/unknown_contract.rs
  function main (line 12) | fn main() {}

FILE: packages/fuels-macros/tests/ui/setup_program_test/unknown_options_key.rs
  function main (line 5) | fn main() {}

FILE: packages/fuels-macros/tests/ui/setup_program_test/unknown_options_value.rs
  function main (line 5) | fn main() {}

FILE: packages/fuels-programs/src/assembly/contract_call.rs
  type ContractCallInstructions (line 8) | pub struct ContractCallInstructions {
    method new (line 22) | pub fn new(opcode_params: CallOpcodeParamsOffset) -> Self {
    method into_bytes (line 29) | pub fn into_bytes(self) -> impl Iterator<Item = u8> {
    method generate_instructions (line 46) | fn generate_instructions(offsets: CallOpcodeParamsOffset) -> Vec<Instr...
    method extract_normal_variant (line 87) | fn extract_normal_variant(instructions: &[Instruction]) -> Option<&[In...
    method extract_gas_fwd_variant (line 97) | fn extract_gas_fwd_variant(instructions: &[Instruction]) -> Option<&[I...
    method extract_from (line 107) | pub fn extract_from(instructions: &[Instruction]) -> Option<Self> {
    method len (line 121) | pub fn len(&self) -> usize {
    method call_data_offset (line 125) | pub fn call_data_offset(&self) -> u32 {
    method is_gas_fwd_variant (line 133) | pub fn is_gas_fwd_variant(&self) -> bool {
    method extract_if_match (line 137) | fn extract_if_match<'a>(
  type Item (line 14) | type Item = Instruction;
  type IntoIter (line 15) | type IntoIter = std::vec::IntoIter<Instruction>;
  method into_iter (line 16) | fn into_iter(self) -> Self::IntoIter {
  type ContractCallData (line 154) | pub struct ContractCallData {
    method decode_fn_selector (line 164) | pub fn decode_fn_selector(&self) -> Result<String> {
    method encode (line 178) | pub fn encode(&self, memory_offset: usize, buffer: &mut Vec<u8>) -> Ca...
    method decode (line 216) | pub fn decode(data: &[u8], gas_fwd: bool) -> Result<Self> {
  type CallOpcodeParamsOffset (line 263) | pub struct CallOpcodeParamsOffset {
  function loader_contract_asm (line 271) | pub fn loader_contract_asm(blob_ids: &[[u8; 32]]) -> Result<Vec<u8>> {

FILE: packages/fuels-programs/src/assembly/cursor.rs
  type WasmFriendlyCursor (line 3) | pub struct WasmFriendlyCursor<'a> {
  function new (line 8) | pub fn new(data: &'a [u8]) -> Self {
  function consume (line 12) | pub fn consume(&mut self, amount: usize, ctx: &'static str) -> Result<&'...
  function consume_fixed (line 27) | pub fn consume_fixed<const AMOUNT: usize>(
  function consume_all (line 39) | pub fn consume_all(&mut self) -> &'a [u8] {
  function unconsumed (line 47) | pub fn unconsumed(&self) -> usize {

FILE: packages/fuels-programs/src/assembly/script_and_predicate_loader.rs
  type LoaderCode (line 16) | pub struct LoaderCode {
    method from_normal_binary (line 26) | pub fn from_normal_binary(binary: Vec<u8>) -> Result<Self> {
    method from_loader_binary (line 40) | pub fn from_loader_binary(binary: &[u8]) -> Result<Option<Self>> {
    method extract_blob (line 53) | pub fn extract_blob(binary: &[u8]) -> Result<fuels_core::types::transa...
    method as_bytes (line 58) | pub fn as_bytes(&self) -> &[u8] {
    method configurables_section_offset (line 62) | pub fn configurables_section_offset(&self) -> usize {
    method generate_loader_code (line 66) | fn generate_loader_code(blob_id: [u8; 32], split_section: &[u8]) -> (V...
    method blob_id (line 74) | pub fn blob_id(&self) -> [u8; 32] {
  function extract_blob_id_and_section_offset (line 79) | fn extract_blob_id_and_section_offset(binary: &[u8]) -> Result<Option<([...
  function consume_instructions (line 105) | fn consume_instructions<'a>(
  function generate_loader_wo_configurables (line 127) | fn generate_loader_wo_configurables(blob_id: [u8; 32]) -> (Vec<u8>, usiz...
  function generate_loader_w_configurables (line 141) | fn generate_loader_w_configurables(
  function loader_instructions_no_configurables (line 177) | fn loader_instructions_no_configurables() -> [Instruction; 8] {
  function loader_instructions_w_configurables (line 223) | pub fn loader_instructions_w_configurables() -> [Instruction; 12] {
  function extract_configurables_offset (line 289) | pub fn extract_configurables_offset(binary: &[u8]) -> Result<usize> {
  function split_at_configurables_offset (line 302) | pub fn split_at_configurables_offset(binary: &[u8]) -> Result<(&[u8], &[...
  function extract_data_offset (line 315) | pub fn extract_data_offset(binary: &[u8]) -> Result<usize> {
  function split_at_data_offset (line 328) | pub fn split_at_data_offset(binary: &[u8]) -> Result<(&[u8], &[u8])> {
  function split_for_loader (line 340) | pub fn split_for_loader(binary: &[u8]) -> Result<(&[u8], &[u8])> {
  function get_offset_for_section_containing_configurables (line 349) | pub fn get_offset_for_section_containing_configurables(binary: &[u8]) ->...
  function has_configurables_section_offset (line 357) | pub fn has_configurables_section_offset(binary: &[u8]) -> Result<bool> {

FILE: packages/fuels-programs/src/calls.rs
  type Execution (line 15) | pub struct Execution {
    method realistic (line 23) | pub fn realistic() -> Self {
    method state_read_only (line 31) | pub fn state_read_only() -> Self {
    method at_height (line 40) | pub fn at_height(mut self, height: impl Into<BlockHeight>) -> Self {
  method default (line 47) | fn default() -> Self {
  type ExecutionType (line 53) | pub(crate) enum ExecutionType {

FILE: packages/fuels-programs/src/calls/call_handler.rs
  type ContractDependency (line 33) | pub trait ContractDependency {
    method id (line 34) | fn id(&self) -> ContractId;
    method log_decoder (line 35) | fn log_decoder(&self) -> LogDecoder;
  type CallHandler (line 41) | pub struct CallHandler<A, C, T> {
  function with_tx_policies (line 61) | pub fn with_tx_policies(mut self, tx_policies: TxPolicies) -> Self {
  function with_decoder_config (line 66) | pub fn with_decoder_config(mut self, decoder_config: DecoderConfig) -> S...
  function with_variable_output_policy (line 79) | pub fn with_variable_output_policy(mut self, variable_outputs: VariableO...
  function add_signer (line 84) | pub fn add_signer(mut self, signer: impl Signer + Send + Sync + 'static)...
  function transaction_builder (line 96) | pub async fn transaction_builder(&self) -> Result<ScriptTransactionBuild...
  function transaction_builder_with_parameters (line 115) | pub fn transaction_builder_with_parameters(
  function build_tx (line 134) | pub async fn build_tx(&self) -> Result<ScriptTransaction> {
  function estimate_transaction_cost (line 141) | pub async fn estimate_transaction_cost(
  function with_contract_ids (line 174) | pub fn with_contract_ids(mut self, contract_ids: &[ContractId]) -> Self {
  function with_contracts (line 188) | pub fn with_contracts(mut self, contracts: &[&dyn ContractDependency]) -...
  function call (line 200) | pub async fn call(mut self) -> Result<CallResponse<T>> {
  function submit (line 213) | pub async fn submit(mut self) -> Result<SubmitResponse<A, C, T>> {
  function simulate (line 225) | pub async fn simulate(
  function get_response (line 252) | pub fn get_response(&self, tx_status: TxStatus) -> Result<CallResponse<T...
  function determine_missing_contracts (line 267) | pub async fn determine_missing_contracts(mut self) -> Result<Self> {
  function new_contract_call (line 289) | pub fn new_contract_call(
  function add_custom_asset (line 339) | pub fn add_custom_asset(mut self, asset_id: AssetId, amount: u64, to: Op...
  function is_payable (line 344) | pub fn is_payable(&self) -> bool {
  function call_params (line 355) | pub fn call_params(mut self, params: CallParameters) -> Result<Self> {
  function with_outputs (line 366) | pub fn with_outputs(mut self, outputs: Vec<Output>) -> Self {
  function with_inputs (line 373) | pub fn with_inputs(mut self, inputs: Vec<Input>) -> Self {
  function new_script_call (line 384) | pub fn new_script_call(
  function with_outputs (line 413) | pub fn with_outputs(mut self, outputs: Vec<Output>) -> Self {
  function with_inputs (line 420) | pub fn with_inputs(mut self, inputs: Vec<Input>) -> Self {
  function new_multi_call (line 430) | pub fn new_multi_call(account: A) -> Self {
  function append_external_contract (line 444) | fn append_external_contract(mut self, contract_id: ContractId) -> Result...
  function add_call (line 463) | pub fn add_call(
  function call (line 476) | pub async fn call<T: Tokenizable + Debug>(mut self) -> Result<CallRespon...
  function submit (line 490) | pub async fn submit(mut self) -> Result<SubmitResponse<A, Vec<ContractCa...
  function simulate (line 505) | pub async fn simulate<T: Tokenizable + Debug>(
  function simulate_without_decode (line 532) | async fn simulate_without_decode(&self) -> Result<()> {
  function get_response (line 542) | pub fn get_response<T: Tokenizable + Debug>(
  function determine_missing_contracts (line 567) | pub async fn determine_missing_contracts(mut self) -> Result<Self> {

FILE: packages/fuels-programs/src/calls/contract_call.rs
  type ContractCall (line 16) | pub struct ContractCall {
    method data (line 30) | pub(crate) fn data(&self, base_asset_id: AssetId) -> Result<ContractCa...
    method with_contract_id (line 47) | pub fn with_contract_id(self, contract_id: ContractId) -> Self {
    method with_call_parameters (line 54) | pub fn with_call_parameters(self, call_parameters: CallParameters) -> ...
    method add_custom_asset (line 61) | pub fn add_custom_asset(&mut self, asset_id: AssetId, amount: u64, to:...
    method with_outputs (line 66) | pub fn with_outputs(mut self, outputs: Vec<Output>) -> Self {
    method with_inputs (line 72) | pub fn with_inputs(mut self, inputs: Vec<Input>) -> Self {
  type CallParameters (line 81) | pub struct CallParameters {
    method new (line 88) | pub fn new(amount: u64, asset_id: AssetId, gas_forwarded: u64) -> Self {
    method with_amount (line 96) | pub fn with_amount(mut self, amount: u64) -> Self {
    method amount (line 101) | pub fn amount(&self) -> u64 {
    method with_asset_id (line 105) | pub fn with_asset_id(mut self, asset_id: AssetId) -> Self {
    method asset_id (line 110) | pub fn asset_id(&self) -> Option<AssetId> {
    method with_gas_forwarded (line 114) | pub fn with_gas_forwarded(mut self, gas_forwarded: u64) -> Self {
    method gas_forwarded (line 119) | pub fn gas_forwarded(&self) -> Option<u64> {
  method default (line 125) | fn default() -> Self {

FILE: packages/fuels-programs/src/calls/receipt_parser.rs
  type ReceiptParser (line 14) | pub struct ReceiptParser {
    method new (line 20) | pub fn new(receipts: &[Receipt], decoder_config: DecoderConfig) -> Self {
    method parse_call (line 35) | pub fn parse_call(
    method parse_script (line 47) | pub fn parse_script(self, output_param: &ParamType) -> Result<Token> {
    method missing_receipts_error (line 55) | fn missing_receipts_error(output_param: &ParamType) -> Error {
    method extract_contract_call_data (line 62) | pub fn extract_contract_call_data(&mut self, target_contract: Contract...
    method extract_script_data (line 92) | fn extract_script_data(&self) -> Option<Bytes> {
  constant RECEIPT_DATA (line 111) | const RECEIPT_DATA: &[u8; 3] = &[8, 8, 3];
  constant DECODED_DATA (line 112) | const DECODED_DATA: &[u8; 3] = &[8, 8, 3];
  function target_contract (line 114) | fn target_contract() -> ContractId {
  function get_return_data_receipt (line 118) | fn get_return_data_receipt(id: ContractId, data: &[u8]) -> Receipt {
  function get_call_receipt (line 130) | fn get_call_receipt(to: ContractId) -> Receipt {
  function get_relevant_receipts (line 144) | fn get_relevant_receipts() -> Vec<Receipt> {
  function receipt_parser_filters_receipts (line 153) | async fn receipt_parser_filters_receipts() -> Result<()> {
  function receipt_parser_empty_receipts (line 197) | async fn receipt_parser_empty_receipts() -> Result<()> {
  function receipt_parser_extract_return_data (line 212) | async fn receipt_parser_extract_return_data() -> Result<()> {
  function receipt_parser_extracts_top_level_call_receipts (line 227) | async fn receipt_parser_extracts_top_level_call_receipts() -> Result<()> {

FILE: packages/fuels-programs/src/calls/script_call.rs
  type ScriptCall (line 15) | pub struct ScriptCall {
    method with_outputs (line 25) | pub fn with_outputs(mut self, outputs: Vec<Output>) -> Self {
    method with_inputs (line 31) | pub fn with_inputs(mut self, inputs: Vec<Input>) -> Self {
    method prepare_inputs_outputs (line 36) | pub(crate) fn prepare_inputs_outputs(&self) -> Result<(Vec<Input>, Vec...
    method compute_script_data (line 59) | pub(crate) fn compute_script_data(&self) -> Result<Vec<u8>> {

FILE: packages/fuels-programs/src/calls/traits/contract_dep_configurator.rs
  type ContractDependencyConfigurator (line 5) | pub trait ContractDependencyConfigurator: sealed::Sealed {
    method append_external_contract (line 6) | fn append_external_contract(&mut self, contract_id: ContractId);
    method with_external_contracts (line 7) | fn with_external_contracts(self, external_contracts: Vec<ContractId>) ...
    method append_external_contract (line 11) | fn append_external_contract(&mut self, contract_id: ContractId) {
    method with_external_contracts (line 15) | fn with_external_contracts(self, external_contracts: Vec<ContractId>) ...
    method append_external_contract (line 24) | fn append_external_contract(&mut self, contract_id: ContractId) {
    method with_external_contracts (line 28) | fn with_external_contracts(self, external_contracts: Vec<ContractId>) ...

FILE: packages/fuels-programs/src/calls/traits/response_parser.rs
  type ResponseParser (line 9) | pub trait ResponseParser: sealed::Sealed {
    method parse_call (line 10) | fn parse_call(
    method parse_call (line 19) | fn parse_call(
    method parse_call (line 30) | fn parse_call(

FILE: packages/fuels-programs/src/calls/traits/transaction_tuner.rs
  type TransactionTuner (line 22) | pub trait TransactionTuner: sealed::Sealed {
    method required_assets (line 23) | fn required_assets(&self, base_asset_id: AssetId) -> Vec<(AssetId, u12...
    method transaction_builder (line 25) | fn transaction_builder<T: Account>(
    method build_tx (line 34) | async fn build_tx<T: Account>(
    method required_assets (line 43) | fn required_assets(&self, base_asset_id: AssetId) -> Vec<(AssetId, u12...
    method transaction_builder (line 47) | fn transaction_builder<T: Account>(
    method build_tx (line 65) | async fn build_tx<T: Account>(
    method required_assets (line 76) | fn required_assets(&self, _: AssetId) -> Vec<(AssetId, u128)> {
    method transaction_builder (line 80) | fn transaction_builder<T: Account>(
    method build_tx (line 101) | async fn build_tx<T: Account>(
    method required_assets (line 120) | fn required_assets(&self, base_asset_id: AssetId) -> Vec<(AssetId, u12...
    method transaction_builder (line 124) | fn transaction_builder<T: Account>(
    method build_tx (line 145) | async fn build_tx<T: Account>(
  function validate_contract_calls (line 156) | fn validate_contract_calls(calls: &[ContractCall]) -> Result<()> {

FILE: packages/fuels-programs/src/calls/utils.rs
  type Sealed (line 29) | pub trait Sealed {}
  function transaction_builder_from_contract_calls (line 33) | pub(crate) fn transaction_builder_from_contract_calls(
  function build_with_tb (line 72) | pub(crate) async fn build_with_tb(
  function compute_calls_instructions_len (line 97) | fn compute_calls_instructions_len(calls: &[ContractCall]) -> usize {
  function calculate_required_asset_amounts (line 117) | pub fn calculate_required_asset_amounts(
  function get_instructions (line 149) | pub(crate) fn get_instructions(offsets: Vec<CallOpcodeParamsOffset>) -> ...
  function build_script_data_from_contract_calls (line 157) | pub(crate) fn build_script_data_from_contract_calls(
  function get_transaction_inputs_outputs (line 178) | pub(crate) fn get_transaction_inputs_outputs(
  function generate_custom_outputs (line 215) | fn generate_custom_outputs(calls: &[ContractCall]) -> Vec<Output> {
  function extract_unique_asset_ids (line 233) | fn extract_unique_asset_ids(asset_inputs: &[Input], base_asset_id: Asset...
  function generate_asset_change_outputs (line 245) | fn generate_asset_change_outputs(
  function generate_contract_outputs (line 256) | pub(crate) fn generate_contract_outputs(
  function generate_contract_inputs (line 272) | pub(crate) fn generate_contract_inputs(
  function extract_unique_contract_ids (line 291) | fn extract_unique_contract_ids(calls: &[ContractCall]) -> HashSet<Contra...
  function is_missing_output_variables (line 303) | pub fn is_missing_output_variables(receipts: &[Receipt]) -> bool {
  function find_ids_of_missing_contracts (line 309) | pub fn find_ids_of_missing_contracts(receipts: &[Receipt]) -> Vec<Contra...
  function new_contract_call_with_random_id (line 338) | fn new_contract_call_with_random_id() -> ContractCall {
  function random_contract_id (line 353) | fn random_contract_id() -> ContractId {
  function contract_input_present (line 358) | fn contract_input_present() {
  function contract_input_is_not_duplicated (line 383) | fn contract_input_is_not_duplicated() {
  function contract_output_present (line 412) | fn contract_output_present() {
  function external_contract_input_present (line 431) | fn external_contract_input_present() {
  function external_contract_output_present (line 475) | fn external_contract_output_present() {
  function change_per_asset_id_added (line 500) | fn change_per_asset_id_added() {
  function will_collate_same_asset_ids (line 540) | fn will_collate_same_asset_ids() {
  constant BASE_INSTRUCTION_COUNT (line 577) | const BASE_INSTRUCTION_COUNT: usize = 5;
  constant GAS_OFFSET_INSTRUCTION_COUNT (line 579) | const GAS_OFFSET_INSTRUCTION_COUNT: usize = 2;
  function test_simple (line 582) | fn test_simple() {
  function test_with_gas_offset (line 589) | fn test_with_gas_offset() {
  function test_with_enum_with_only_non_heap_variants (line 600) | fn test_with_enum_with_only_non_heap_variants() {

FILE: packages/fuels-programs/src/contract.rs
  type Contract (line 14) | pub struct Contract<Code> {
  function salt (line 21) | pub fn salt(&self) -> Salt {
  function with_salt (line 25) | pub fn with_salt(mut self, salt: impl Into<Salt>) -> Self {
  function storage_slots (line 30) | pub fn storage_slots(&self) -> &[StorageSlot] {
  function with_storage_slots (line 34) | pub fn with_storage_slots(mut self, storage_slots: Vec<StorageSlot>) -> ...
  function compute_contract_id_and_state_root (line 49) | fn compute_contract_id_and_state_root(
  function autoload_storage_slots (line 77) | fn autoload_storage_slots() {
  function autoload_fails_if_file_missing (line 99) | fn autoload_fails_if_file_missing() {
  function save_slots (line 125) | fn save_slots(slots: &Vec<StorageSlot>, path: &Path) {
  function blob_size_must_be_greater_than_zero (line 134) | fn blob_size_must_be_greater_than_zero() {
  function contract_with_no_code_cannot_be_turned_into_a_loader (line 151) | fn contract_with_no_code_cannot_be_turned_into_a_loader() {
  function loader_needs_at_least_one_blob (line 168) | fn loader_needs_at_least_one_blob() {
  function loader_requires_all_except_the_last_blob_to_be_word_sized (line 184) | fn loader_requires_all_except_the_last_blob_to_be_word_sized() {
  function last_blob_in_loader_can_be_unaligned (line 200) | fn last_blob_in_loader_can_be_unaligned() {
  function can_load_regular_contract (line 212) | fn can_load_regular_contract() -> Result<()> {
  function can_manually_create_regular_contract (line 233) | fn can_manually_create_regular_contract() -> Result<()> {
  function regular_contract_has_expected_getters (line 257) | fn regular_contract_has_expected_getters() -> Result<()> {
  function regular_can_be_turned_into_loader_and_back (line 283) | fn regular_can_be_turned_into_loader_and_back() -> Result<()> {
  function unuploaded_loader_contract_has_expected_getters (line 298) | fn unuploaded_loader_contract_has_expected_getters() -> Result<()> {
  function unuploaded_loader_requires_at_least_one_blob (line 321) | fn unuploaded_loader_requires_at_least_one_blob() -> Result<()> {
  function uploaded_loader_has_expected_getters (line 338) | fn uploaded_loader_has_expected_getters() -> Result<()> {

FILE: packages/fuels-programs/src/contract/loader.rs
  type BlobsUploaded (line 18) | pub struct BlobsUploaded {
  type BlobsNotUploaded (line 23) | pub struct BlobsNotUploaded {
  type Loader (line 28) | pub struct Loader<Blobs> {
  function code (line 33) | pub fn code(&self) -> Vec<u8> {
  function contract_id (line 39) | pub fn contract_id(&self) -> ContractId {
  function code_root (line 43) | pub fn code_root(&self) -> Bytes32 {
  function state_root (line 47) | pub fn state_root(&self) -> Bytes32 {
  function compute_roots (line 51) | fn compute_roots(&self) -> (ContractId, Bytes32, Bytes32) {
  function loader_from_blobs (line 61) | pub fn loader_from_blobs(
  function blobs (line 99) | pub fn blobs(&self) -> &[Blob] {
  function blob_ids (line 103) | pub fn blob_ids(&self) -> Vec<BlobId> {
  function upload_blobs (line 114) | pub async fn upload_blobs(
  function deploy (line 159) | pub async fn deploy(
  function deploy_if_not_exists (line 172) | pub async fn deploy_if_not_exists(
  function revert_to_regular (line 183) | pub fn revert_to_regular(self) -> Contract<Regular> {
  function code (line 197) | pub fn code(&self) -> Vec<u8> {
  function contract_id (line 202) | pub fn contract_id(&self) -> ContractId {
  function code_root (line 206) | pub fn code_root(&self) -> Bytes32 {
  function state_root (line 210) | pub fn state_root(&self) -> Bytes32 {
  function compute_roots (line 214) | pub fn compute_roots(&self) -> (ContractId, Bytes32, Bytes32) {
  function loader_from_blob_ids (line 222) | pub fn loader_from_blob_ids(
  function blob_ids (line 243) | pub fn blob_ids(&self) -> &[BlobId] {
  function deploy (line 248) | pub async fn deploy(
  function deploy_if_not_exists (line 258) | pub async fn deploy_if_not_exists(

FILE: packages/fuels-programs/src/contract/regular.rs
  type DeployResponse (line 25) | pub struct DeployResponse {
  type Regular (line 37) | pub struct Regular {
    method new (line 43) | pub(crate) fn new(code: Vec<u8>, configurables: Configurables) -> Self {
    method with_code (line 50) | pub(crate) fn with_code(self, code: Vec<u8>) -> Self {
    method with_configurables (line 54) | pub(crate) fn with_configurables(self, configurables: Configurables) -...
    method code (line 61) | pub(crate) fn code(&self) -> Vec<u8> {
  function with_code (line 71) | pub fn with_code(self, code: Vec<u8>) -> Self {
  function with_configurables (line 79) | pub fn with_configurables(self, configurables: impl Into<Configurables>)...
  function code (line 86) | pub fn code(&self) -> Vec<u8> {
  function contract_id (line 90) | pub fn contract_id(&self) -> ContractId {
  function code_root (line 94) | pub fn code_root(&self) -> Bytes32 {
  function state_root (line 98) | pub fn state_root(&self) -> Bytes32 {
  function compute_roots (line 102) | fn compute_roots(&self) -> (ContractId, Bytes32, Bytes32) {
  function load_from (line 107) | pub fn load_from(
  function regular (line 131) | pub fn regular(
  function deploy (line 146) | pub async fn deploy(
  function deploy_if_not_exists (line 189) | pub async fn deploy_if_not_exists(
  function convert_to_loader (line 208) | pub fn convert_to_loader(
  function smart_deploy (line 225) | pub async fn smart_deploy(
  type LoadConfiguration (line 250) | pub struct LoadConfiguration {
    method new (line 257) | pub fn new(
    method with_storage_configuration (line 269) | pub fn with_storage_configuration(mut self, storage: StorageConfigurat...
    method with_configurables (line 274) | pub fn with_configurables(mut self, configurables: impl Into<Configura...
    method with_salt (line 279) | pub fn with_salt(mut self, salt: impl Into<Salt>) -> Self {

FILE: packages/fuels-programs/src/contract/storage.rs
  type StorageConfiguration (line 14) | pub struct StorageConfiguration {
    method new (line 29) | pub fn new(autoload_enabled: bool, slots: impl IntoIterator<Item = Sto...
    method with_autoload (line 40) | pub fn with_autoload(mut self, enabled: bool) -> Self {
    method autoload_enabled (line 45) | pub fn autoload_enabled(&self) -> bool {
    method add_slot_overrides (line 51) | pub fn add_slot_overrides(
    method add_slot_overrides_from_file (line 63) | pub fn add_slot_overrides_from_file(mut self, path: impl AsRef<Path>) ...
    method into_slots (line 69) | pub fn into_slots(self) -> impl Iterator<Item = StorageSlot> {
  method default (line 20) | fn default() -> Self {
  type StorageSlots (line 75) | pub(crate) struct StorageSlots {
    method from (line 80) | fn from(storage_slots: impl IntoIterator<Item = StorageSlot>) -> Self {
    method add_overrides (line 87) | pub(crate) fn add_overrides(
    method load_from_file (line 96) | pub(crate) fn load_from_file(storage_path: impl AsRef<Path>) -> Result...
    method into_iter (line 112) | pub(crate) fn into_iter(self) -> impl Iterator<Item = StorageSlot> {
  function determine_storage_slots (line 117) | pub(crate) fn determine_storage_slots(
  function autoload_storage_slots (line 134) | pub(crate) fn autoload_storage_slots(contract_binary: &Path) -> Result<S...
  function expected_storage_slots_filepath (line 143) | pub(crate) fn expected_storage_slots_filepath(contract_binary: &Path) ->...
  function validate_path_and_extension (line 150) | pub(crate) fn validate_path_and_extension(file_path: &Path, extension: &...
  function merging_overrides_storage_slots (line 176) | fn merging_overrides_storage_slots() {

FILE: packages/fuels-programs/src/debug.rs
  type ScriptCallData (line 16) | pub struct ScriptCallData {
    method data_section (line 25) | pub fn data_section(&self) -> Option<&[u8]> {
  type ScriptType (line 34) | pub enum ScriptType {
    method detect (line 138) | pub fn detect(script: &[u8], data: &[u8]) -> Result<Self> {
  function parse_script_call (line 43) | fn parse_script_call(script: &[u8], script_data: &[u8]) -> Result<Script...
  function parse_contract_calls (line 63) | fn parse_contract_calls(
  function extract_call_instructions (line 114) | fn extract_call_instructions(
  function parse_loader_script (line 153) | fn parse_loader_script(script: &[u8], data: &[u8]) -> Result<Option<(Scr...
  function can_handle_empty_scripts (line 185) | fn can_handle_empty_scripts() {
  function is_fine_with_malformed_scripts (line 204) | fn is_fine_with_malformed_scripts() {
  function example_contract_call_data (line 224) | fn example_contract_call_data(has_args: bool, gas_fwd: bool) -> Vec<u8> {
  function catches_missing_data (line 250) | fn catches_missing_data(amount_of_data_to_steal: usize, expected_msg: &s...
  function handles_invalid_utf8_fn_selector (line 280) | fn handles_invalid_utf8_fn_selector() {
  function loader_script_without_a_blob (line 318) | fn loader_script_without_a_blob() {
  function loader_script_with_almost_matching_instructions (line 339) | fn loader_script_with_almost_matching_instructions() {
  function extra_instructions_in_contract_calling_scripts_not_tolerated (line 367) | fn extra_instructions_in_contract_calling_scripts_not_tolerated() {
  function handles_invalid_call_data_offset (line 396) | fn handles_invalid_call_data_offset() {

FILE: packages/fuels-programs/src/executable.rs
  type Regular (line 21) | pub struct Regular {
    method new (line 27) | pub fn new(code: Vec<u8>, configurables: Configurables) -> Self {
  type Executable (line 39) | pub struct Executable<State> {
  function from_bytes (line 44) | pub fn from_bytes(code: Vec<u8>) -> Self {
  function load_from (line 59) | pub fn load_from(path: &str) -> Result<Executable<Regular>> {
  function with_configurables (line 67) | pub fn with_configurables(self, configurables: impl Into<Configurables>)...
  function data_offset_in_code (line 76) | pub fn data_offset_in_code(&self) -> Result<usize> {
  function configurables_offset_in_code (line 80) | pub fn configurables_offset_in_code(&self) -> Result<Option<usize>> {
  function code (line 93) | pub fn code(&self) -> Vec<u8> {
  function convert_to_loader (line 105) | pub fn convert_to_loader(self) -> Result<Executable<Loader>> {
  type Loader (line 120) | pub struct Loader {
  function with_configurables (line 126) | pub fn with_configurables(self, configurables: impl Into<Configurables>)...
  function data_offset_in_code (
Condensed preview — 641 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (1,911K chars).
[
  {
    "path": ".editorconfig",
    "chars": 46,
    "preview": "[*.toml]\nindent_style = space\nindent_size = 2\n"
  },
  {
    "path": ".github/CODEOWNERS",
    "chars": 20,
    "preview": "* @FuelLabs/client \n"
  },
  {
    "path": ".github/PULL_REQUEST_TEMPLATE.md",
    "chars": 1060,
    "preview": "<!--\nList the issues this PR closes (if any) in a bullet list format, e.g.:\n- Closes #ABCD\n- Closes #EFGH\n-->\n\n# Release"
  },
  {
    "path": ".github/workflows/ci.yml",
    "chars": 11409,
    "preview": "name: CI\n\non:\n  push:\n    branches:\n      - master\n  pull_request:\n  release:\n    types: [ published ]\n\nconcurrency:\n  g"
  },
  {
    "path": ".github/workflows/docs.yml",
    "chars": 411,
    "preview": "name: Docs\n\non:\n  push:\n    branches:\n      - master\n  pull_request:\n  release:\n    types: [published]\n\njobs:\n  test:\n  "
  },
  {
    "path": ".github/workflows/gh-pages.yml",
    "chars": 1867,
    "preview": "name: github pages\n\non:\n  push:\n    branches:\n      - master\n    tags:\n      - v*\n\njobs:\n  deploy:\n    runs-on: ubuntu-l"
  },
  {
    "path": ".github/workflows/repo-plan.toml",
    "chars": 224,
    "preview": "[current-repo]\nname = \"fuels-rs\"\nowner = \"FuelLabs\"\n\n[repo.fuels-rs.details]\nname = \"fuels-rs\"\nowner = \"FuelLabs\"\n\n[repo"
  },
  {
    "path": ".github/workflows/scripts/verify_tag.sh",
    "chars": 658,
    "preview": "#!/usr/bin/env bash\nset -e\n\nerr() {\n    echo -e \"\\e[31m\\e[1merror:\\e[0m $@\" 1>&2;\n}\n\nstatus() {\n    WIDTH=12\n    printf "
  },
  {
    "path": ".gitignore",
    "chars": 532,
    "preview": "# Generated by Cargo\n# will have compiled files and executables\ntarget/\n\n# Remove Cargo.lock from gitignore if creating "
  },
  {
    "path": ".markdownlint.yaml",
    "chars": 141,
    "preview": "\"default\": true # Default state for all rules\n\"MD013\": false # Disable rule for line length\n\"MD033\": false # Disable rul"
  },
  {
    "path": ".markdownlintignore",
    "chars": 28,
    "preview": "README.md\nscripts/check-docs"
  },
  {
    "path": "Cargo.toml",
    "chars": 5023,
    "preview": "[workspace]\n# Use the new resolver to prevent dev-deps and build-deps from enabling debugging or test features in produc"
  },
  {
    "path": "LICENSE",
    "chars": 11357,
    "preview": "                                 Apache License\n                           Version 2.0, January 2004\n                   "
  },
  {
    "path": "README.md",
    "chars": 3054,
    "preview": "# fuels-rs\n\n[![build](https://github.com/FuelLabs/fuels-rs/actions/workflows/ci.yml/badge.svg)](https://github.com/FuelL"
  },
  {
    "path": "SECURITY.md",
    "chars": 1866,
    "preview": "# Fuel Security Policy\n\nThank you for helping make the Fuel ecosystem safe for everyone. The Fuel team take security bug"
  },
  {
    "path": "_typos.toml",
    "chars": 74,
    "preview": "[files]\nextend-exclude = [\"packages/fuels-accounts/src/schema/schema.sdl\"]"
  },
  {
    "path": "ci_checks.sh",
    "chars": 942,
    "preview": "#!/usr/bin/env bash\n\n# Requires installed:\n# The latest version of the `forc`,`forc-fmt` and `fuel-core`.\n# `cargo insta"
  },
  {
    "path": "docs/.spellcheck.yml",
    "chars": 811,
    "preview": "matrix:\n    - name: SPCheck\n      aspell:\n        lang: en\n      dictionary:\n        encoding: utf-8\n        wordlists:\n"
  },
  {
    "path": "docs/book.toml",
    "chars": 226,
    "preview": "[book]\nauthors = [\"Fuel Labs <contact@fuel.sh>\"]\nlanguage = \"en\"\nmultilingual = false\nsrc = \"src\"\ntitle = \"The Fuel Rust"
  },
  {
    "path": "docs/spell-check-custom-words.txt",
    "chars": 1831,
    "preview": "ABI\nABIs\nALU\nAPIs\nASM\nAST\nAssemblyScript\nBitwise\nBooleans\nBrowserStack\nCEI\nCLI\nCardinality\nChangelog\nCodec\nCollateralize"
  },
  {
    "path": "docs/src/SUMMARY.md",
    "chars": 4260,
    "preview": "# Summary\n\n[The Fuel Rust SDK](./index.md)\n\n- [Getting Started](./getting-started.md)\n- [Connecting to a Fuel node](./co"
  },
  {
    "path": "docs/src/abigen/index.md",
    "chars": 763,
    "preview": "# Generating bindings with abigen\n\nYou might have noticed this snippet in the previous sections:\n\n```rust,ignore\n{{#incl"
  },
  {
    "path": "docs/src/abigen/the-abigen-macro.md",
    "chars": 4139,
    "preview": "# abigen\n\n<!-- This section explain the `abigen!` macro -->\n<!-- abigen:example:start -->\n`abigen!` is a procedural macr"
  },
  {
    "path": "docs/src/abigen/the-json-abi-file.md",
    "chars": 1034,
    "preview": "# The JSON ABI file\n\n<!-- This section should talk about the importance of the ABI -->\n<!-- abi:example:start -->\nWhethe"
  },
  {
    "path": "docs/src/accounts.md",
    "chars": 1785,
    "preview": "# Accounts\n\nThe `ViewOnlyAccount` trait provides a common interface to query balances.\n\nThe `Account` trait, in addition"
  },
  {
    "path": "docs/src/calling-contracts/call-params.md",
    "chars": 2781,
    "preview": "# Call parameters\n\n<!-- This section should explain what the call params are and how to configure them -->\n<!-- call_par"
  },
  {
    "path": "docs/src/calling-contracts/call-response.md",
    "chars": 3000,
    "preview": "# Call response\n\n<!-- This section should why you have to chain `.call().await.unwrap()` so often -->\n<!-- chaining:exam"
  },
  {
    "path": "docs/src/calling-contracts/calls-with-different-wallets.md",
    "chars": 942,
    "preview": "# Calls with different wallets\n\n<!-- This section should explain how to call a contract with a certain wallet -->\n<!-- w"
  },
  {
    "path": "docs/src/calling-contracts/cost-estimation.md",
    "chars": 1005,
    "preview": "# Estimating contract call cost\n\nWith the function `estimate_transaction_cost(tolerance: Option<f64>, block_horizon: Opt"
  },
  {
    "path": "docs/src/calling-contracts/custom-asset-transfer.md",
    "chars": 448,
    "preview": "# Custom asset transfer\n\n<!-- This section should explain the `add_custom_asset()` method -->\n<!-- transfer:example:star"
  },
  {
    "path": "docs/src/calling-contracts/custom-inputs-outputs.md",
    "chars": 378,
    "preview": "# Custom inputs and outputs\n\nIf you need to add specific inputs and outputs to contract calls, you can use the `with_inp"
  },
  {
    "path": "docs/src/calling-contracts/index.md",
    "chars": 990,
    "preview": "# Calling contracts\n\nOnce you've deployed your contract, as seen in the previous sections, you'll likely want to:\n\n1. Ca"
  },
  {
    "path": "docs/src/calling-contracts/logs.md",
    "chars": 1151,
    "preview": "# Logs\n\nWhenever you log a value within a contract method, the resulting log entry is added to the log receipt and the v"
  },
  {
    "path": "docs/src/calling-contracts/low-level-calls.md",
    "chars": 1285,
    "preview": "# Low-level calls\n\n<!-- This section should explain what low-level calls are and how to do them -->\nWith low-level calls"
  },
  {
    "path": "docs/src/calling-contracts/multicalls.md",
    "chars": 1665,
    "preview": "# Multiple contract calls\n\nWith `CallHandler`, you can execute multiple contract calls within a single transaction. To a"
  },
  {
    "path": "docs/src/calling-contracts/other-contracts.md",
    "chars": 1082,
    "preview": "# Calling other contracts\n\nIf your contract method is calling other contracts you will have to add the appropriate `Inpu"
  },
  {
    "path": "docs/src/calling-contracts/simulation.md",
    "chars": 1307,
    "preview": "# Simulating calls\n\nSometimes you want to simulate a call to a contract without changing the state of the blockchain. Th"
  },
  {
    "path": "docs/src/calling-contracts/tx-dependency-estimation.md",
    "chars": 1533,
    "preview": "# Transaction dependency estimation\n\nPreviously, we mentioned that a contract call might require you to manually specify"
  },
  {
    "path": "docs/src/calling-contracts/tx-policies.md",
    "chars": 1793,
    "preview": "# Transaction policies\n\n<!-- This section should explain what tx policies are and how to configure them -->\n<!-- tx_poli"
  },
  {
    "path": "docs/src/calling-contracts/variable-outputs.md",
    "chars": 1576,
    "preview": "# Output variables\n\n<!-- This section should explain variable outputs  -->\n<!-- variable_outputs:example:start -->\nSomet"
  },
  {
    "path": "docs/src/cli/fuels-abi-cli.md",
    "chars": 3405,
    "preview": "# `fuels-abi-cli`\n\nSimple CLI program to encode Sway function calls and decode their output. The ABI being encoded and d"
  },
  {
    "path": "docs/src/cli/index.md",
    "chars": 186,
    "preview": "# `fuels-rs` Rust Workspaces\n\nThis section gives you a little overview of the role and function of every workspace in th"
  },
  {
    "path": "docs/src/codec/decoding.md",
    "chars": 2184,
    "preview": "# Decoding\n\nBe sure to read the [prerequisites](./index.md#prerequisites-for-decodingencoding) to decoding.\n\nDecoding is"
  },
  {
    "path": "docs/src/codec/encoding.md",
    "chars": 1197,
    "preview": "# Encoding\n\nBe sure to read the [prerequisites](./index.md#prerequisites-for-decodingencoding) to encoding.\n\nEncoding is"
  },
  {
    "path": "docs/src/codec/index.md",
    "chars": 3223,
    "preview": "# Codec\n\nEncoding and decoding are done as per [the fuel spec](https://docs.fuel.network/docs/specs/abi/argument-encodin"
  },
  {
    "path": "docs/src/connecting/external-node.md",
    "chars": 1279,
    "preview": "# Connecting to the Testnet or an external node\n\nWe can interact with the `Testnet` node by using the following example."
  },
  {
    "path": "docs/src/connecting/index.md",
    "chars": 972,
    "preview": "# Connecting to a Fuel node\n\n<!-- This section should explain at a high level the main ways to connect to a node with th"
  },
  {
    "path": "docs/src/connecting/querying.md",
    "chars": 1999,
    "preview": "# Querying the blockchain\n\nOnce you set up a provider, you can interact with the Fuel blockchain. Here are a few example"
  },
  {
    "path": "docs/src/connecting/retrying.md",
    "chars": 1377,
    "preview": "# Retrying requests\n\nThe [`Provider`](https://docs.rs/fuels/0.62.0/fuels/accounts/provider/struct.Provider.html) can be "
  },
  {
    "path": "docs/src/connecting/rocksdb.md",
    "chars": 522,
    "preview": "# RocksDB\n\nRocksDB enables the preservation of the blockchain's state locally, facilitating its future utilization.\n\nTo "
  },
  {
    "path": "docs/src/connecting/short-lived.md",
    "chars": 1312,
    "preview": "# Running a short-lived Fuel node with the SDK\n\nYou can use the SDK to spin up a local, ideally short-lived Fuel node. T"
  },
  {
    "path": "docs/src/contributing/CONTRIBUTING.md",
    "chars": 2822,
    "preview": "# Contributing to the Fuel Rust SDK\n\nThanks for your interest in contributing to the Fuel Rust SDK!\n\nThis document outli"
  },
  {
    "path": "docs/src/contributing/tests-structure.md",
    "chars": 1152,
    "preview": "# Integration tests structure in `fuels-rs`\n\nThe integration tests of `fuels-rs` cover almost all aspects of the SDK and"
  },
  {
    "path": "docs/src/cookbook/custom-chain.md",
    "chars": 886,
    "preview": "# Custom chain\n\nThis example demonstrates how to start a short-lived Fuel node with custom consensus parameters for the "
  },
  {
    "path": "docs/src/cookbook/deposit-and-withdraw.md",
    "chars": 2138,
    "preview": "# Deposit and withdraw\n\nConsider the following contract:\n\n```rust,ignore\n{{#include ../../../e2e/sway/contracts/liquidit"
  },
  {
    "path": "docs/src/cookbook/index.md",
    "chars": 329,
    "preview": "# Cookbook\n\nThis section covers more advanced use cases that can be satisfied by combining various features of the Rust "
  },
  {
    "path": "docs/src/cookbook/transfer-all-assets.md",
    "chars": 1598,
    "preview": "# Transfer all assets\n\nThe `transfer()` method lets you transfer a single asset, but what if you needed to move all of y"
  },
  {
    "path": "docs/src/custom-transactions/custom-calls.md",
    "chars": 722,
    "preview": "# Custom contract and script calls\n\nWhen preparing a contract call via `CallHandler`, the Rust SDK uses a transaction bu"
  },
  {
    "path": "docs/src/custom-transactions/index.md",
    "chars": 328,
    "preview": "# Custom transactions\n\nUntil now, we have used helpers to create transactions, send them with a provider, and parse the "
  },
  {
    "path": "docs/src/custom-transactions/transaction-builders.md",
    "chars": 6088,
    "preview": "# Transaction Builders\n\nThe Rust SDK simplifies the creation of **Create** and **Script** transactions through two handy"
  },
  {
    "path": "docs/src/debugging/decoding-script-transactions.md",
    "chars": 696,
    "preview": "# Decoding script transactions\n\nThe SDK offers some tools that can help you make fuel script transactions more\nhuman rea"
  },
  {
    "path": "docs/src/debugging/function-selector.md",
    "chars": 388,
    "preview": "# Function selector\n\nWhenever you call a contract method the SDK will generate a function selector according to the fuel"
  },
  {
    "path": "docs/src/debugging/index.md",
    "chars": 117,
    "preview": "# Debugging\n\n> **note** This section is still a work in progress.\n\n- [The Function Selector](./function-selector.md)\n"
  },
  {
    "path": "docs/src/deploying/configurable-constants.md",
    "chars": 685,
    "preview": "# Configurable constants\n\nIn Sway, you can define `configurable` constants which can be changed during the contract depl"
  },
  {
    "path": "docs/src/deploying/index.md",
    "chars": 2432,
    "preview": "# Deploying contracts\n\nThere are two main ways of working with contracts in the SDK: deploying a contract with SDK or us"
  },
  {
    "path": "docs/src/deploying/interacting-with-contracts.md",
    "chars": 397,
    "preview": "# Interacting with contracts\n\nIf you already have a deployed contract and want to call its methods using the SDK, but wi"
  },
  {
    "path": "docs/src/deploying/large_contracts.md",
    "chars": 2918,
    "preview": "# Deploying Large Contracts\n\nIf your contract exceeds the size limit for a single deployment:\n\n```rust,ignore\n{{#include"
  },
  {
    "path": "docs/src/deploying/storage-slots.md",
    "chars": 781,
    "preview": "# Overriding storage slots\n\nIf you use storage in your contract, the default storage values will be generated in a JSON "
  },
  {
    "path": "docs/src/deploying/the-fuelvm-binary-file.md",
    "chars": 1907,
    "preview": "# The FuelVM binary file\n\nThe command `forc build` compiles your Sway code and generates the bytecode: the binary code t"
  },
  {
    "path": "docs/src/getting-started.md",
    "chars": 3983,
    "preview": "# Getting Started\n\n## Installation Guide\n\nPlease visit the Fuel [installation guide](https://docs.fuel.network/guides/in"
  },
  {
    "path": "docs/src/glossary.md",
    "chars": 727,
    "preview": "# Glossary\n\n## Contract\n\n<!-- This section should define a contract -->\n<!-- rs_contract:example:start -->\n\nA contract, "
  },
  {
    "path": "docs/src/index.md",
    "chars": 692,
    "preview": "# The Fuel Rust SDK\n\n<!-- This section should explain what the Fuel Rust SDK can be used for -->\n<!-- fuels_rs:example:s"
  },
  {
    "path": "docs/src/predicates/index.md",
    "chars": 2991,
    "preview": "# Predicates\n\nPredicates, in Sway, are programs that return a Boolean value and do not have any side effects (they are p"
  },
  {
    "path": "docs/src/predicates/send-spend-predicate.md",
    "chars": 1950,
    "preview": "# Signatures in predicates example\n\nThis is a more involved example where the predicate accepts three signatures and mat"
  },
  {
    "path": "docs/src/preuploading-code.md",
    "chars": 1255,
    "preview": "# Pre-uploading code\n\nIf you have a script or predicate that is larger than normal or which you plan\non calling often, y"
  },
  {
    "path": "docs/src/reference.md",
    "chars": 294,
    "preview": "# API Reference\n\nFor a more in-depth look at the APIs provided by the Fuel Rust SDK, head over to the [official document"
  },
  {
    "path": "docs/src/running-scripts.md",
    "chars": 2547,
    "preview": "# Running scripts\n\nYou can run a script using its JSON-ABI and the path to its binary file. You can run the scripts with"
  },
  {
    "path": "docs/src/testing/basics.md",
    "chars": 4026,
    "preview": "# Testing Basics\n\nIf you're new to Rust, you'll want to review these important tools to help you build tests.\n\n## The `a"
  },
  {
    "path": "docs/src/testing/chains.md",
    "chars": 641,
    "preview": "# Increasing the block height\n\nYou can use `produce_blocks` to help achieve an arbitrary block height; this is useful wh"
  },
  {
    "path": "docs/src/testing/index.md",
    "chars": 216,
    "preview": "# `fuels-rs` Testing\n\n> **note** This section is still a work in progress.\n\n- [Testing Basics](./basics.md)\n- [`setup_pr"
  },
  {
    "path": "docs/src/testing/the-setup-program-test-macro.md",
    "chars": 3709,
    "preview": "# The setup_program_test! macro\n\nWhen deploying contracts with the `abigen!` macro, as shown in the previous sections, t"
  },
  {
    "path": "docs/src/types/B512.md",
    "chars": 368,
    "preview": "# `B512`\n\nIn the Rust SDK, the `B512` definition matches the Sway standard library type with the same name and will be c"
  },
  {
    "path": "docs/src/types/address.md",
    "chars": 345,
    "preview": "# `Address`\n\nLike `Bytes32`, `Address` is a wrapper on `[u8; 32]` with similar methods and implements the same traits (s"
  },
  {
    "path": "docs/src/types/asset-id.md",
    "chars": 346,
    "preview": "# `AssetId`\n\nLike `Bytes32`, `AssetId` is a wrapper on `[u8; 32]` with similar methods and implements the same traits (s"
  },
  {
    "path": "docs/src/types/bits256.md",
    "chars": 599,
    "preview": "# `Bits256`\n\nIn Fuel, a type called `b256` represents hashes and holds a 256-bit value. The Rust SDK represents `b256` a"
  },
  {
    "path": "docs/src/types/bytes.md",
    "chars": 500,
    "preview": "# `Bytes`\n\nIn Fuel, a type called `Bytes` represents a collection of tightly-packed bytes. The Rust SDK represents `Byte"
  },
  {
    "path": "docs/src/types/bytes32.md",
    "chars": 1095,
    "preview": "# `Bytes32`\n\nIn Sway and the FuelVM, `Bytes32` represents hashes. They hold a 256-bit (32-byte) value. `Bytes32` is a wr"
  },
  {
    "path": "docs/src/types/contract-id.md",
    "chars": 360,
    "preview": "# `ContractId`\n\nLike `Bytes32`, `ContractId` is a wrapper on `[u8; 32]` with similar methods and implements the same tra"
  },
  {
    "path": "docs/src/types/conversion.md",
    "chars": 4171,
    "preview": "# Converting Types\n\nBelow you can find examples for common type conversions:\n\n- [Convert Between Native Types](#convert-"
  },
  {
    "path": "docs/src/types/custom_types.md",
    "chars": 2991,
    "preview": "# Structs and enums\n\n<!-- This section should explain how to get the custom types from a Sway program -->\n<!-- custom_ty"
  },
  {
    "path": "docs/src/types/evm_address.md",
    "chars": 610,
    "preview": "# `EvmAddress`\n\nIn the Rust SDK, Ethereum Virtual Machine (EVM) addresses can be represented with the `EvmAddress` type."
  },
  {
    "path": "docs/src/types/index.md",
    "chars": 174,
    "preview": "# Types\n\nThe FuelVM and Sway have many internal types. These types have equivalents in the SDK. This section discusses t"
  },
  {
    "path": "docs/src/types/string.md",
    "chars": 986,
    "preview": "# `String`\n\nThe Rust SDK represents Fuel's `String`s as `SizedAsciiString<LEN>`, where the generic parameter `LEN` is th"
  },
  {
    "path": "docs/src/types/vectors.md",
    "chars": 849,
    "preview": "# Vectors\n\n## Passing in vectors\n\nYou can pass a Rust `std::vec::Vec` into your contract method transparently. The follo"
  },
  {
    "path": "docs/src/wallets/access.md",
    "chars": 1454,
    "preview": "# Wallet Access\n\nThe kinds of operations we can perform with a `Wallet` instance depend on\nwhether or not the wallet has"
  },
  {
    "path": "docs/src/wallets/checking-balances-and-coins.md",
    "chars": 1362,
    "preview": "# Checking balances and coins\n\n<!-- This section should explain getting the balance of a wallet -->\n<!-- balance:example"
  },
  {
    "path": "docs/src/wallets/fake_signer.md",
    "chars": 706,
    "preview": "# Fake signer (impersonating another account)\n\nTo facilitate account impersonation, the Rust SDK provides the `FakeSigne"
  },
  {
    "path": "docs/src/wallets/index.md",
    "chars": 1894,
    "preview": "# Wallets\n\nWallets serve as a centralized interface for all account-related behaviors. They allow you to:\n\n- **Inspect U"
  },
  {
    "path": "docs/src/wallets/keystore.md",
    "chars": 289,
    "preview": "# Encrypting and Storing Keys\n\nThe code below shows how to:\n\n- Encrypt and store your key using a master password.\n- Ens"
  },
  {
    "path": "docs/src/wallets/kms.md",
    "chars": 483,
    "preview": "# Using KMS Wallets\n\nKey Management Service (KMS) is a robust and secure solution for managing cryptographic keys for yo"
  },
  {
    "path": "docs/src/wallets/private_key_signer.md",
    "chars": 1409,
    "preview": "# Using private keys to create wallets\n\n## Directly from a private key\n\nAn example of how to create a wallet that uses a"
  },
  {
    "path": "docs/src/wallets/signing.md",
    "chars": 1395,
    "preview": "# Signing\n\nAn example of how you might sign a message using any of the SDK signers (or your\nown, custom ones, that imple"
  },
  {
    "path": "docs/src/wallets/test-wallets.md",
    "chars": 3149,
    "preview": "# Setting up test wallets\n\nYou'll often want to create one or more test wallets when testing your contracts. Here's how "
  },
  {
    "path": "docs/theme/highlight.js",
    "chars": 29018,
    "preview": "/*!\n  Highlight.js v11.3.1 (git: 2a972d8658)\n  (c) 2006-2022 Ivan Sagalaev and other contributors\n  License: BSD-3-Claus"
  },
  {
    "path": "e2e/Cargo.toml",
    "chars": 1518,
    "preview": "[package]\nname = \"e2e\"\nauthors = { workspace = true }\nedition = { workspace = true }\nhomepage = { workspace = true }\nrea"
  },
  {
    "path": "e2e/Forc.toml",
    "chars": 4500,
    "preview": "[workspace]\nmembers = [\n  'sway/bindings/sharing_types/contract_a',\n  'sway/bindings/sharing_types/contract_b',\n  'sway/"
  },
  {
    "path": "e2e/build.rs",
    "chars": 3250,
    "preview": "use std::{\n    io::Cursor,\n    path::{Path, PathBuf},\n};\n\nuse flate2::read::GzDecoder;\nuse fuels_accounts::provider::SUP"
  },
  {
    "path": "e2e/src/aws_kms.rs",
    "chars": 4461,
    "preview": "use fuels::{\n    accounts::signers::kms::aws::{\n        AwsKmsSigner,\n        aws_config::{BehaviorVersion, Region, defa"
  },
  {
    "path": "e2e/src/e2e_helpers.rs",
    "chars": 206,
    "preview": "use fuels::types::errors::Result;\n\nuse crate::aws_kms::{AwsKms, AwsKmsProcess};\n\npub async fn start_aws_kms(logs: bool) "
  },
  {
    "path": "e2e/src/lib.rs",
    "chars": 34,
    "preview": "mod aws_kms;\npub mod e2e_helpers;\n"
  },
  {
    "path": "e2e/sway/abi/simple_contract/Forc.toml",
    "chars": 118,
    "preview": "[project]\nauthors = [\"Fuel Labs <contact@fuel.sh>\"]\nentry = \"main.sw\"\nlicense = \"Apache-2.0\"\nname = \"simple_contract\"\n"
  },
  {
    "path": "e2e/sway/abi/simple_contract/src/main.sw",
    "chars": 191,
    "preview": "contract;\n\nabi SimpleContract {\n    fn takes_u32_returns_bool(arg: u32) -> bool;\n}\n\nimpl SimpleContract for Contract {\n "
  },
  {
    "path": "e2e/sway/abi/wasm_contract/Forc.toml",
    "chars": 116,
    "preview": "[project]\nauthors = [\"Fuel Labs <contact@fuel.sh>\"]\nentry = \"main.sw\"\nlicense = \"Apache-2.0\"\nname = \"wasm_contract\"\n"
  },
  {
    "path": "e2e/sway/abi/wasm_contract/src/main.sw",
    "chars": 282,
    "preview": "contract;\n\nenum SomeEnum<T> {\n    V1: (),\n    V2: T,\n}\n\n#[allow(dead_code)]\nstruct SomeStruct {\n    a: u32,\n    b: bool,"
  },
  {
    "path": "e2e/sway/abi/wasm_predicate/Forc.toml",
    "chars": 117,
    "preview": "[project]\nauthors = [\"Fuel Labs <contact@fuel.sh>\"]\nentry = \"main.sw\"\nlicense = \"Apache-2.0\"\nname = \"wasm_predicate\"\n"
  },
  {
    "path": "e2e/sway/abi/wasm_predicate/src/main.sw",
    "chars": 95,
    "preview": "predicate;\n\nconfigurable {\n    U64: u64 = 128,\n}\n\nfn main(val: u64) -> bool {\n    val == U64\n}\n"
  },
  {
    "path": "e2e/sway/bindings/sharing_types/contract_a/Forc.toml",
    "chars": 169,
    "preview": "[project]\nauthors = [\"Fuel Labs <contact@fuel.sh>\"]\nentry = \"main.sw\"\nlicense = \"Apache-2.0\"\nname = \"contract_a\"\n\n[depen"
  },
  {
    "path": "e2e/sway/bindings/sharing_types/contract_a/src/main.sw",
    "chars": 1374,
    "preview": "contract;\nuse shared_lib::*;\n\nstruct UniqueStructToContractA<T> {\n    a: T,\n}\n\nstruct StructSameNameButDifferentInternal"
  },
  {
    "path": "e2e/sway/bindings/sharing_types/contract_b/Forc.toml",
    "chars": 169,
    "preview": "[project]\nauthors = [\"Fuel Labs <contact@fuel.sh>\"]\nentry = \"main.sw\"\nlicense = \"Apache-2.0\"\nname = \"contract_b\"\n\n[depen"
  },
  {
    "path": "e2e/sway/bindings/sharing_types/contract_b/src/main.sw",
    "chars": 1384,
    "preview": "contract;\nuse shared_lib::*;\n\nstruct UniqueStructToContractB<T> {\n    a: T,\n}\n\nstruct StructSameNameButDifferentInternal"
  },
  {
    "path": "e2e/sway/bindings/sharing_types/shared_lib/Forc.toml",
    "chars": 112,
    "preview": "[project]\nauthors = [\"Fuel Labs <contact@fuel.sh>\"]\nentry = \"lib.sw\"\nlicense = \"Apache-2.0\"\nname = \"shared_lib\"\n"
  },
  {
    "path": "e2e/sway/bindings/sharing_types/shared_lib/src/lib.sw",
    "chars": 207,
    "preview": "library;\n\npub struct SharedStruct1<T> {\n    a: T,\n}\n\npub struct SharedStruct2<K> {\n    a: u32,\n    b: SharedStruct1<K>,\n"
  },
  {
    "path": "e2e/sway/bindings/simple_contract/Forc.toml",
    "chars": 118,
    "preview": "[project]\nauthors = [\"Fuel Labs <contact@fuel.sh>\"]\nentry = \"main.sw\"\nlicense = \"Apache-2.0\"\nname = \"simple_contract\"\n"
  },
  {
    "path": "e2e/sway/bindings/simple_contract/src/main.sw",
    "chars": 190,
    "preview": "contract;\n\nabi MyContract {\n    fn takes_int_returns_bool(arg: u32) -> bool;\n}\n\nimpl MyContract for Contract {\n    fn ta"
  },
  {
    "path": "e2e/sway/bindings/type_paths/Forc.toml",
    "chars": 113,
    "preview": "[project]\nauthors = [\"Fuel Labs <contact@fuel.sh>\"]\nentry = \"main.sw\"\nlicense = \"Apache-2.0\"\nname = \"type_paths\"\n"
  },
  {
    "path": "e2e/sway/bindings/type_paths/src/another_lib.sw",
    "chars": 68,
    "preview": "library;\n\npub struct VeryCommonNameStruct {\n    pub field_a: u32,\n}\n"
  },
  {
    "path": "e2e/sway/bindings/type_paths/src/contract_a_types.sw",
    "chars": 128,
    "preview": "library;\n\npub struct VeryCommonNameStruct {\n    another_field: u32,\n}\n\npub struct AWrapper {\n    field: VeryCommonNameSt"
  },
  {
    "path": "e2e/sway/bindings/type_paths/src/main.sw",
    "chars": 354,
    "preview": "contract;\n\nmod contract_a_types;\nmod another_lib;\n\nuse contract_a_types::AWrapper;\nuse another_lib::VeryCommonNameStruct"
  },
  {
    "path": "e2e/sway/contracts/asserts/Forc.toml",
    "chars": 110,
    "preview": "[project]\nauthors = [\"Fuel Labs <contact@fuel.sh>\"]\nentry = \"main.sw\"\nlicense = \"Apache-2.0\"\nname = \"asserts\"\n"
  },
  {
    "path": "e2e/sway/contracts/asserts/src/main.sw",
    "chars": 1811,
    "preview": "contract;\n\nstruct TestStruct {\n    field_1: bool,\n    field_2: u64,\n}\n\n#[allow(dead_code)]\nenum TestEnum {\n    VariantOn"
  },
  {
    "path": "e2e/sway/contracts/auth_testing_abi/Forc.toml",
    "chars": 119,
    "preview": "[project]\nauthors = [\"Fuel Labs <contact@fuel.sh>\"]\nentry = \"main.sw\"\nlicense = \"Apache-2.0\"\nname = \"auth_testing_abi\"\n"
  },
  {
    "path": "e2e/sway/contracts/auth_testing_abi/src/main.sw",
    "chars": 122,
    "preview": "library;\n\nabi AuthTesting {\n    fn is_caller_external() -> bool;\n    fn check_msg_sender(expected_id: Address) -> bool;\n"
  },
  {
    "path": "e2e/sway/contracts/auth_testing_contract/Forc.toml",
    "chars": 192,
    "preview": "[project]\nauthors = [\"Fuel Labs <contact@fuel.sh>\"]\nentry = \"main.sw\"\nlicense = \"Apache-2.0\"\nname = \"auth_testing_contra"
  },
  {
    "path": "e2e/sway/contracts/auth_testing_contract/src/main.sw",
    "chars": 688,
    "preview": "contract;\n\nuse std::auth::{AuthError, caller_is_external, msg_sender};\nuse auth_testing_abi::*;\n\nimpl AuthTesting for Co"
  },
  {
    "path": "e2e/sway/contracts/block_timestamp/Forc.toml",
    "chars": 118,
    "preview": "[project]\nauthors = [\"Fuel Labs <contact@fuel.sh>\"]\nentry = \"main.sw\"\nlicense = \"Apache-2.0\"\nname = \"block_timestamp\"\n"
  },
  {
    "path": "e2e/sway/contracts/block_timestamp/src/main.sw",
    "chars": 187,
    "preview": "contract;\n\nuse std::block::timestamp;\n\nabi MyContract {\n    fn return_timestamp() -> u64;\n}\n\nimpl MyContract for Contrac"
  },
  {
    "path": "e2e/sway/contracts/configurables/Forc.toml",
    "chars": 116,
    "preview": "[project]\nauthors = [\"Fuel Labs <contact@fuel.sh>\"]\nentry = \"main.sw\"\nlicense = \"Apache-2.0\"\nname = \"configurables\"\n"
  },
  {
    "path": "e2e/sway/contracts/configurables/src/main.sw",
    "chars": 1276,
    "preview": "contract;\n\n#[allow(dead_code)]\nenum EnumWithGeneric<D> {\n    VariantOne: D,\n    VariantTwo: (),\n}\n\nstruct StructWithGene"
  },
  {
    "path": "e2e/sway/contracts/contract_test/Forc.toml",
    "chars": 203,
    "preview": "[project]\nauthors = [\"Fuel Labs <contact@fuel.sh>\"]\nentry = \"main.sw\"\nlicense = \"Apache-2.0\"\nname = \"contract_test\"\n\n[de"
  },
  {
    "path": "e2e/sway/contracts/contract_test/src/main.sw",
    "chars": 2739,
    "preview": "contract;\n\nuse std::storage::storage_api::{read, write};\nuse std::context::msg_amount;\n\nstruct MyType {\n    x: u64,\n    "
  },
  {
    "path": "e2e/sway/contracts/huge_contract/Forc.toml",
    "chars": 132,
    "preview": "[project]\nauthors = [\"Fuel Labs <contact@fuel.sh>\"]\nentry = \"main.sw\"\nlicense = \"Apache-2.0\"\nname = \"huge_contract\"\n\n[de"
  },
  {
    "path": "e2e/sway/contracts/huge_contract/src/main.sw",
    "chars": 529,
    "preview": "contract;\n\nabi MyContract {\n    fn something() -> u64;\n    #[storage(write)]\n    fn write_some_u64(some: u64);\n    #[sto"
  },
  {
    "path": "e2e/sway/contracts/large_return_data/Forc.toml",
    "chars": 120,
    "preview": "[project]\nauthors = [\"Fuel Labs <contact@fuel.sh>\"]\nentry = \"main.sw\"\nlicense = \"Apache-2.0\"\nname = \"large_return_data\"\n"
  },
  {
    "path": "e2e/sway/contracts/large_return_data/src/main.sw",
    "chars": 1251,
    "preview": "contract;\n\npub struct SmallStruct {\n    foo: u32,\n}\n\npub struct LargeStruct {\n    foo: u8,\n    bar: u8,\n}\n\nabi TestContr"
  },
  {
    "path": "e2e/sway/contracts/lib_contract/Forc.toml",
    "chars": 214,
    "preview": "[project]\nauthors = [\"Fuel Labs <contact@fuel.sh>\"]\nentry = \"main.sw\"\nlicense = \"Apache-2.0\"\nname = \"lib_contract\"\n\n[dep"
  },
  {
    "path": "e2e/sway/contracts/lib_contract/src/main.sw",
    "chars": 240,
    "preview": "contract;\n\nuse lib_contract_abi::LibContract;\n\nimpl LibContract for Contract {\n    fn increment(value: u64) -> u64 {\n   "
  },
  {
    "path": "e2e/sway/contracts/lib_contract_abi/Forc.toml",
    "chars": 119,
    "preview": "[project]\nauthors = [\"Fuel Labs <contact@fuel.sh>\"]\nentry = \"main.sw\"\nlicense = \"Apache-2.0\"\nname = \"lib_contract_abi\"\n"
  },
  {
    "path": "e2e/sway/contracts/lib_contract_abi/src/main.sw",
    "chars": 85,
    "preview": "library;\n\nabi LibContract {\n    fn increment(value: u64) -> u64;\n    fn require();\n}\n"
  },
  {
    "path": "e2e/sway/contracts/lib_contract_caller/Forc.toml",
    "chars": 217,
    "preview": "[project]\nauthors = [\"Fuel Labs <contact@fuel.sh>\"]\nentry = \"main.sw\"\nlicense = \"Apache-2.0\"\nname = \"lib_contract_caller"
  },
  {
    "path": "e2e/sway/contracts/lib_contract_caller/src/main.sw",
    "chars": 1853,
    "preview": "contract;\n\nuse lib_contract::LibContract;\nuse std::asset::mint_to;\n\nabi ContractCaller {\n    fn increment_from_contract("
  },
  {
    "path": "e2e/sway/contracts/library_test/Forc.toml",
    "chars": 115,
    "preview": "[project]\nauthors = [\"Fuel Labs <contact@fuel.sh>\"]\nentry = \"main.sw\"\nlicense = \"Apache-2.0\"\nname = \"library_test\"\n"
  },
  {
    "path": "e2e/sway/contracts/library_test/src/main.sw",
    "chars": 185,
    "preview": "library;\n\nabi Incrementor {\n    fn initialize(gas: u64, amt: u64, coin: b256, initial_value: u64) -> u64;\n    fn increme"
  },
  {
    "path": "e2e/sway/contracts/liquidity_pool/Forc.toml",
    "chars": 117,
    "preview": "[project]\nauthors = [\"Fuel Labs <contact@fuel.sh>\"]\nentry = \"main.sw\"\nlicense = \"Apache-2.0\"\nname = \"liquidity_pool\"\n"
  },
  {
    "path": "e2e/sway/contracts/liquidity_pool/src/main.sw",
    "chars": 1007,
    "preview": "contract;\n\nuse std::{asset::{mint_to, transfer}, call_frames::msg_asset_id, context::msg_amount};\nabi LiquidityPool {\n  "
  },
  {
    "path": "e2e/sway/contracts/low_level_caller/Forc.toml",
    "chars": 119,
    "preview": "[project]\nauthors = [\"Fuel Labs <contact@fuel.sh>\"]\nentry = \"main.sw\"\nlicense = \"Apache-2.0\"\nname = \"low_level_caller\"\n"
  },
  {
    "path": "e2e/sway/contracts/low_level_caller/src/main.sw",
    "chars": 787,
    "preview": "contract;\n\nuse std::{\n    bytes::Bytes,\n    constants::ZERO_B256,\n    low_level_call::{\n        call_with_function_selec"
  },
  {
    "path": "e2e/sway/contracts/msg_methods/Forc.toml",
    "chars": 114,
    "preview": "[project]\nauthors = [\"Fuel Labs <contact@fuel.sh>\"]\nentry = \"main.sw\"\nlicense = \"Apache-2.0\"\nname = \"msg_methods\"\n"
  },
  {
    "path": "e2e/sway/contracts/msg_methods/src/main.sw",
    "chars": 229,
    "preview": "contract;\n\nuse std::auth::msg_sender;\n\nabi FuelTest {\n    #[payable]\n    fn message_sender() -> Identity;\n}\n\nimpl FuelTe"
  },
  {
    "path": "e2e/sway/contracts/multiple_read_calls/Forc.toml",
    "chars": 122,
    "preview": "[project]\nauthors = [\"Fuel Labs <contact@fuel.sh>\"]\nentry = \"main.sw\"\nlicense = \"Apache-2.0\"\nname = \"multiple_read_calls"
  },
  {
    "path": "e2e/sway/contracts/multiple_read_calls/src/main.sw",
    "chars": 484,
    "preview": "contract;\n\nuse std::storage::storage_api::{read, write};\n\nabi MyContract {\n    #[storage(write)]\n    fn store(input: u64"
  },
  {
    "path": "e2e/sway/contracts/needs_custom_decoder/Forc.toml",
    "chars": 139,
    "preview": "[project]\nauthors = [\"Fuel Labs <contact@fuel.sh>\"]\nentry = \"main.sw\"\nlicense = \"Apache-2.0\"\nname = \"needs_custom_decode"
  },
  {
    "path": "e2e/sway/contracts/needs_custom_decoder/src/main.sw",
    "chars": 580,
    "preview": "contract;\n\nimpl AbiEncode for [u8; 1000] {\n    fn abi_encode(self, buffer: Buffer) -> Buffer {\n        let mut buffer = "
  },
  {
    "path": "e2e/sway/contracts/payable_annotation/Forc.toml",
    "chars": 121,
    "preview": "[project]\nauthors = [\"Fuel Labs <contact@fuel.sh>\"]\nentry = \"main.sw\"\nlicense = \"Apache-2.0\"\nname = \"payable_annotation\""
  },
  {
    "path": "e2e/sway/contracts/payable_annotation/src/main.sw",
    "chars": 243,
    "preview": "contract;\n\nabi TestContract {\n    #[payable]\n    fn payable() -> u64;\n    fn non_payable() -> u64;\n}\n\nimpl TestContract "
  },
  {
    "path": "e2e/sway/contracts/proxy/Forc.toml",
    "chars": 124,
    "preview": "[project]\nauthors = [\"Fuel Labs <contact@fuel.sh>\"]\nentry = \"main.sw\"\nlicense = \"Apache-2.0\"\nname = \"proxy\"\n\n[dependenci"
  },
  {
    "path": "e2e/sway/contracts/proxy/src/main.sw",
    "chars": 1013,
    "preview": "contract;\n\nuse std::execution::run_external;\n\nabi Proxy {\n    #[storage(write)]\n    fn set_target_contract(id: ContractI"
  },
  {
    "path": "e2e/sway/contracts/revert_transaction_error/Forc.toml",
    "chars": 127,
    "preview": "[project]\nauthors = [\"Fuel Labs <contact@fuel.sh>\"]\nentry = \"main.sw\"\nlicense = \"Apache-2.0\"\nname = \"revert_transaction_"
  },
  {
    "path": "e2e/sway/contracts/revert_transaction_error/src/main.sw",
    "chars": 234,
    "preview": "contract;\n\nabi MyContract {\n    fn make_transaction_fail(fail: bool) -> u64;\n}\n\nimpl MyContract for Contract {\n    fn ma"
  },
  {
    "path": "e2e/sway/contracts/storage/Forc.toml",
    "chars": 110,
    "preview": "[project]\nauthors = [\"Fuel Labs <contact@fuel.sh>\"]\nentry = \"main.sw\"\nlicense = \"Apache-2.0\"\nname = \"storage\"\n"
  },
  {
    "path": "e2e/sway/contracts/storage/src/main.sw",
    "chars": 734,
    "preview": "contract;\n\nuse std::storage::storage_api::read;\n\nstorage {\n    x: u64 = 64,\n    y: b256 = 0x0101010101010101010101010101"
  },
  {
    "path": "e2e/sway/contracts/token_ops/Forc.toml",
    "chars": 112,
    "preview": "[project]\nauthors = [\"Fuel Labs <contact@fuel.sh>\"]\nentry = \"main.sw\"\nlicense = \"Apache-2.0\"\nname = \"token_ops\"\n"
  },
  {
    "path": "e2e/sway/contracts/token_ops/src/main.sw",
    "chars": 1551,
    "preview": "contract;\n\nuse std::{asset::*, bytes::Bytes, context::balance_of, context::msg_amount, message::send_message};\n\nabi Test"
  },
  {
    "path": "e2e/sway/contracts/transaction_block_height/Forc.toml",
    "chars": 127,
    "preview": "[project]\nauthors = [\"Fuel Labs <contact@fuel.sh>\"]\nentry = \"main.sw\"\nlicense = \"Apache-2.0\"\nname = \"transaction_block_h"
  },
  {
    "path": "e2e/sway/contracts/transaction_block_height/src/main.sw",
    "chars": 263,
    "preview": "contract;\n\nabi MyContract {\n    fn get_current_height() -> u32;\n    fn calling_this_will_produce_a_block();\n}\n\nimpl MyCo"
  },
  {
    "path": "e2e/sway/contracts/tx_input_output/Forc.toml",
    "chars": 118,
    "preview": "[project]\nauthors = [\"Fuel Labs <contact@fuel.sh>\"]\nentry = \"main.sw\"\nlicense = \"Apache-2.0\"\nname = \"tx_input_output\"\n"
  },
  {
    "path": "e2e/sway/contracts/tx_input_output/src/main.sw",
    "chars": 989,
    "preview": "contract;\n\nuse std::{inputs::*, outputs::*};\n\nconfigurable {\n    ASSET_ID: AssetId = AssetId::zero(),\n    OWNER: Address"
  },
  {
    "path": "e2e/sway/contracts/var_outputs/Forc.toml",
    "chars": 114,
    "preview": "[project]\nauthors = [\"Fuel Labs <contact@fuel.sh>\"]\nentry = \"main.sw\"\nlicense = \"Apache-2.0\"\nname = \"var_outputs\"\n"
  },
  {
    "path": "e2e/sway/contracts/var_outputs/src/main.sw",
    "chars": 321,
    "preview": "contract;\n\nabi MyContract {\n    fn mint(coins: u64, recipient: Identity);\n}\n\nimpl MyContract for Contract {\n    fn mint("
  },
  {
    "path": "e2e/sway/logs/contract_logs/Forc.toml",
    "chars": 218,
    "preview": "[project]\nauthors = [\"Fuel Labs <contact@fuel.sh>\"]\nentry = \"main.sw\"\nlicense = \"Apache-2.0\"\nname = \"contract_logs\"\n\n[de"
  },
  {
    "path": "e2e/sway/logs/contract_logs/src/main.sw",
    "chars": 4436,
    "preview": "contract;\n\nuse std::{logging::log, string::String};\nuse contract_logs_abi::ContractLogs;\n\nstruct B {\n    id: u64,\n    va"
  },
  {
    "path": "e2e/sway/logs/contract_logs_abi/Forc.toml",
    "chars": 120,
    "preview": "[project]\nauthors = [\"Fuel Labs <contact@fuel.sh>\"]\nentry = \"main.sw\"\nlicense = \"Apache-2.0\"\nname = \"contract_logs_abi\"\n"
  },
  {
    "path": "e2e/sway/logs/contract_logs_abi/src/main.sw",
    "chars": 460,
    "preview": "library;\n\nuse std::logging::log;\n\nabi ContractLogs {\n    fn produce_logs_values();\n    fn produce_logs_variables();\n    "
  },
  {
    "path": "e2e/sway/logs/contract_revert_logs/Forc.toml",
    "chars": 123,
    "preview": "[project]\nauthors = [\"Fuel Labs <contact@fuel.sh>\"]\nentry = \"main.sw\"\nlicense = \"Apache-2.0\"\nname = \"contract_revert_log"
  },
  {
    "path": "e2e/sway/logs/contract_revert_logs/src/main.sw",
    "chars": 1945,
    "preview": "contract;\n\nuse std::logging::log;\n\n#[allow(dead_code)]\nenum EnumWithGeneric<D> {\n    VariantOne: D,\n    VariantTwo: (),\n"
  },
  {
    "path": "e2e/sway/logs/contract_with_contract_logs/Forc.toml",
    "chars": 222,
    "preview": "[project]\nauthors = [\"Fuel Labs <contact@fuel.sh>\"]\nentry = \"main.sw\"\nlicense = \"Apache-2.0\"\nname = \"contract_with_contr"
  },
  {
    "path": "e2e/sway/logs/contract_with_contract_logs/src/main.sw",
    "chars": 1094,
    "preview": "contract;\n\nuse std::logging::log;\nuse library::ContractLogs;\n\nabi ContractCaller {\n    fn logs_from_external_contract(co"
  },
  {
    "path": "e2e/sway/logs/script_heap_logs/Forc.toml",
    "chars": 119,
    "preview": "[project]\nauthors = [\"Fuel Labs <contact@fuel.sh>\"]\nentry = \"main.sw\"\nlicense = \"Apache-2.0\"\nname = \"script_heap_logs\"\n"
  },
  {
    "path": "e2e/sway/logs/script_heap_logs/src/main.sw",
    "chars": 813,
    "preview": "script;\n\nuse std::{logging::log, string::String};\n\n#[allow(dead_code)]\nenum EnumWithGeneric<D> {\n    VariantOne: D,\n    "
  },
  {
    "path": "e2e/sway/logs/script_logs/Forc.toml",
    "chars": 114,
    "preview": "[project]\nauthors = [\"Fuel Labs <contact@fuel.sh>\"]\nentry = \"main.sw\"\nlicense = \"Apache-2.0\"\nname = \"script_logs\"\n"
  },
  {
    "path": "e2e/sway/logs/script_logs/src/main.sw",
    "chars": 1655,
    "preview": "script;\n\nuse std::logging::log;\n\n#[allow(dead_code)]\nstruct TestStruct {\n    field_1: bool,\n    field_2: b256,\n    field"
  },
  {
    "path": "e2e/sway/logs/script_revert_logs/Forc.toml",
    "chars": 121,
    "preview": "[project]\nauthors = [\"Fuel Labs <contact@fuel.sh>\"]\nentry = \"main.sw\"\nlicense = \"Apache-2.0\"\nname = \"script_revert_logs\""
  },
  {
    "path": "e2e/sway/logs/script_revert_logs/src/main.sw",
    "chars": 2447,
    "preview": "script;\n\nuse std::logging::log;\n\n#[allow(dead_code)]\nenum EnumWithGeneric<D> {\n    VariantOne: D,\n    VariantTwo: (),\n}\n"
  },
  {
    "path": "e2e/sway/logs/script_with_contract_logs/Forc.toml",
    "chars": 220,
    "preview": "[project]\nauthors = [\"Fuel Labs <contact@fuel.sh>\"]\nentry = \"main.sw\"\nlicense = \"Apache-2.0\"\nname = \"script_with_contrac"
  },
  {
    "path": "e2e/sway/logs/script_with_contract_logs/src/main.sw",
    "chars": 827,
    "preview": "script;\n\nuse std::logging::log;\nuse library::ContractLogs;\n\n#[allow(dead_code)]\nenum MatchEnum {\n    Logs: (),\n    Panic"
  },
  {
    "path": "e2e/sway/predicates/basic_predicate/Forc.toml",
    "chars": 118,
    "preview": "[project]\nauthors = [\"Fuel Labs <contact@fuel.sh>\"]\nentry = \"main.sw\"\nlicense = \"Apache-2.0\"\nname = \"basic_predicate\"\n"
  },
  {
    "path": "e2e/sway/predicates/basic_predicate/src/main.sw",
    "chars": 68,
    "preview": "predicate;\n\nfn main(a: u32, b: u64) -> bool {\n    b == a.as_u64()\n}\n"
  },
  {
    "path": "e2e/sway/predicates/predicate_blobs/Forc.toml",
    "chars": 118,
    "preview": "[project]\nauthors = [\"Fuel Labs <contact@fuel.sh>\"]\nentry = \"main.sw\"\nlicense = \"Apache-2.0\"\nname = \"predicate_blobs\"\n"
  },
  {
    "path": "e2e/sway/predicates/predicate_blobs/src/main.sw",
    "chars": 155,
    "preview": "predicate;\n\nconfigurable {\n    SECRET_NUMBER: u64 = 9000,\n}\n\nfn main(arg1: u8, arg2: u8) -> bool {\n    arg1 == 1 && arg2"
  },
  {
    "path": "e2e/sway/predicates/predicate_configurables/Forc.toml",
    "chars": 126,
    "preview": "[project]\nauthors = [\"Fuel Labs <contact@fuel.sh>\"]\nentry = \"main.sw\"\nlicense = \"Apache-2.0\"\nname = \"predicate_configura"
  },
  {
    "path": "e2e/sway/predicates/predicate_configurables/src/main.sw",
    "chars": 1501,
    "preview": "predicate;\n\nimpl PartialEq for StructWithGeneric<u8> {\n    fn eq(self, other: Self) -> bool {\n        self.field_1 == ot"
  }
]

// ... and 441 more files (download for full content)

About this extraction

This page contains the full source code of the FuelLabs/fuels-rs GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 641 files (1.7 MB), approximately 452.3k tokens, and a symbol index with 2300 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.

Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.

Copied to clipboard!