# fuellabs/fuels-ts architecture

> Architecture diagram of the GitHub repository fuellabs/fuels-ts, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-11-09). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/fuellabs/fuels-ts
- Repository: https://github.com/fuellabs/fuels-ts

## Overview

fuels-ts is a TypeScript SDK and developer toolkit for building Fuel applications. A typical dApp connects through a Provider, manages a wallet, prepares and submits transactions, and uses generated program bindings to call contracts or work with predicates and scripts. The repository also provides ABI encoding and type generation, plus CLI workflows for project setup, building, deployment, and local-node development. The README documents those workflows; sampled source confirms selected wallet-manager and ABI-coder internals, while most runtime modules were not sampled.

Main entry points: [`packages/fuels/src/cli.ts`](https://github.com/fuellabs/fuels-ts/blob/master/packages/fuels/src/cli.ts) (fuels CLI), [`packages/account/src/wallet-manager/wallet-manager.ts`](https://github.com/fuellabs/fuels-ts/blob/master/packages/account/src/wallet-manager/wallet-manager.ts) (Wallet manager), [`packages/account/src/providers/provider.ts`](https://github.com/fuellabs/fuels-ts/blob/master/packages/account/src/providers/provider.ts) (Provider), [`packages/contract/src/contract-factory.ts`](https://github.com/fuellabs/fuels-ts/blob/master/packages/contract/src/contract-factory.ts) (Contract interface)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_sdk["Network SDK"]
  node_provider["Provider<br/>[provider.ts]"]
  node_tx["Transaction requests"]
  node_response["Transaction responses"]
end

subgraph group_programs["Programs And ABI"]
  node_contract["Contract interface"]
  node_program["Program invocation"]
  node_script["Script invocation"]
  node_abi_coder["ABI encoding"]
  node_typegen["ABI type generation<br/>[Abi.ts]"]
end

subgraph group_developer["Developer Tooling"]
  node_cli["fuels CLI<br/>[cli.ts]"]
  node_build["Build and typegen"]
  node_deploy["Deployment commands"]
  node_node["Local node commands<br/>[index.ts]"]
  node_scaffold["dApp scaffolding<br/>[cli.ts]"]
end

subgraph group_security["Wallet Security"]
  node_wallet["Wallets<br/>[wallet.ts]"]
  node_walletmanager["Wallet manager<br/>[wallet-manager.ts]"]
  node_vaults["Mnemonic and key vaults"]
  node_storage[("Encrypted state storage<br/>[memory-storage.ts]")]
  node_crypto["Crypto primitives"]
end

node_developer(("dApp developer"))
node_fuel_network[("Fuel network")]

node_developer -->|"connects through"| node_provider
node_provider -->|"queries GraphQL"| node_fuel_network
node_developer -.->|"manages accounts"| node_walletmanager
node_walletmanager -->|"creates vaults"| node_vaults
node_walletmanager -->|"persists state"| node_storage
node_walletmanager -->|"encrypts state"| node_crypto
node_walletmanager -->|"returns wallet"| node_wallet
node_developer -.->|"uses bindings"| node_contract
node_contract -.->|"invokes functions"| node_program
node_program -.->|"prepares transaction"| node_tx
node_tx -.->|"submits transaction"| node_provider
node_provider -.->|"returns result"| node_response
node_contract -->|"encodes arguments"| node_abi_coder
node_developer -.->|"runs scripts"| node_script
node_developer -->|"runs commands"| node_cli
node_cli -->|"builds programs"| node_build
node_cli -->|"deploys programs"| node_deploy
node_cli -->|"starts node"| node_node
node_cli -->|"generates bindings"| node_typegen
node_typegen -->|"emits imports"| node_abi_coder
node_developer -->|"creates project"| node_scaffold

click node_provider "https://github.com/fuellabs/fuels-ts/blob/master/packages/account/src/providers/provider.ts"
click node_tx "https://github.com/fuellabs/fuels-ts/blob/master/packages/account/src/providers/transaction-request/transaction-request.ts"
click node_response "https://github.com/fuellabs/fuels-ts/blob/master/packages/account/src/providers/transaction-response/transaction-response.ts"
click node_wallet "https://github.com/fuellabs/fuels-ts/blob/master/packages/account/src/wallet/wallet.ts"
click node_walletmanager "https://github.com/fuellabs/fuels-ts/blob/master/packages/account/src/wallet-manager/wallet-manager.ts"
click node_vaults "https://github.com/fuellabs/fuels-ts/tree/master/packages/account/src/wallet-manager/vaults"
click node_storage "https://github.com/fuellabs/fuels-ts/blob/master/packages/account/src/wallet-manager/storages/memory-storage.ts"
click node_crypto "https://github.com/fuellabs/fuels-ts/tree/master/packages/crypto/src"
click node_contract "https://github.com/fuellabs/fuels-ts/blob/master/packages/contract/src/contract-factory.ts"
click node_program "https://github.com/fuellabs/fuels-ts/blob/master/packages/program/src/functions/invocation-scope.ts"
click node_script "https://github.com/fuellabs/fuels-ts/blob/master/packages/script/src/script-invocation-scope.ts"
click node_abi_coder "https://github.com/fuellabs/fuels-ts/blob/master/packages/abi-coder/src/FunctionFragment.ts"
click node_typegen "https://github.com/fuellabs/fuels-ts/blob/master/packages/abi-typegen/src/abi/Abi.ts"
click node_cli "https://github.com/fuellabs/fuels-ts/blob/master/packages/fuels/src/cli.ts"
click node_build "https://github.com/fuellabs/fuels-ts/tree/master/packages/fuels/src/cli/commands"
click node_deploy "https://github.com/fuellabs/fuels-ts/tree/master/packages/fuels/src/cli/commands/deploy"
click node_node "https://github.com/fuellabs/fuels-ts/blob/master/packages/fuels/src/cli/commands/node/index.ts"
click node_scaffold "https://github.com/fuellabs/fuels-ts/blob/master/packages/create-fuels/src/cli.ts"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_provider,node_tx,node_response toneBlue
class node_contract,node_program,node_script,node_abi_coder,node_typegen,node_fuel_network toneAmber
class node_cli,node_build,node_deploy,node_node,node_scaffold toneMint
class node_wallet,node_walletmanager,node_vaults,node_storage,node_crypto toneRose
class node_developer toneIndigo
```

## Components

### Network SDK

- [Provider](https://github.com/fuellabs/fuels-ts/blob/master/packages/account/src/providers/provider.ts): `packages/account/src/providers/provider.ts`
- [Transaction requests](https://github.com/fuellabs/fuels-ts/blob/master/packages/account/src/providers/transaction-request/transaction-request.ts): `packages/account/src/providers/transaction-request/transaction-request.ts`
- [Transaction responses](https://github.com/fuellabs/fuels-ts/blob/master/packages/account/src/providers/transaction-response/transaction-response.ts): `packages/account/src/providers/transaction-response/transaction-response.ts`

### Programs And ABI

- [Contract interface](https://github.com/fuellabs/fuels-ts/blob/master/packages/contract/src/contract-factory.ts): `packages/contract/src/contract-factory.ts`
- [Program invocation](https://github.com/fuellabs/fuels-ts/blob/master/packages/program/src/functions/invocation-scope.ts): `packages/program/src/functions/invocation-scope.ts`
- [Script invocation](https://github.com/fuellabs/fuels-ts/blob/master/packages/script/src/script-invocation-scope.ts): `packages/script/src/script-invocation-scope.ts`
- [ABI encoding](https://github.com/fuellabs/fuels-ts/blob/master/packages/abi-coder/src/FunctionFragment.ts): `packages/abi-coder/src/FunctionFragment.ts`
- [ABI type generation](https://github.com/fuellabs/fuels-ts/blob/master/packages/abi-typegen/src/abi/Abi.ts): `packages/abi-typegen/src/abi/Abi.ts`

### Developer Tooling

- [fuels CLI](https://github.com/fuellabs/fuels-ts/blob/master/packages/fuels/src/cli.ts): `packages/fuels/src/cli.ts`
- [Build and typegen](https://github.com/fuellabs/fuels-ts/tree/master/packages/fuels/src/cli/commands): `packages/fuels/src/cli/commands`
- [Deployment commands](https://github.com/fuellabs/fuels-ts/tree/master/packages/fuels/src/cli/commands/deploy): `packages/fuels/src/cli/commands/deploy`
- [Local node commands](https://github.com/fuellabs/fuels-ts/blob/master/packages/fuels/src/cli/commands/node/index.ts): `packages/fuels/src/cli/commands/node/index.ts`
- [dApp scaffolding](https://github.com/fuellabs/fuels-ts/blob/master/packages/create-fuels/src/cli.ts): `packages/create-fuels/src/cli.ts`

### Wallet Security

- [Wallets](https://github.com/fuellabs/fuels-ts/blob/master/packages/account/src/wallet/wallet.ts): `packages/account/src/wallet/wallet.ts`
- [Wallet manager](https://github.com/fuellabs/fuels-ts/blob/master/packages/account/src/wallet-manager/wallet-manager.ts): `packages/account/src/wallet-manager/wallet-manager.ts`
- [Mnemonic and key vaults](https://github.com/fuellabs/fuels-ts/tree/master/packages/account/src/wallet-manager/vaults): `packages/account/src/wallet-manager/vaults`
- [Encrypted state storage](https://github.com/fuellabs/fuels-ts/blob/master/packages/account/src/wallet-manager/storages/memory-storage.ts): `packages/account/src/wallet-manager/storages/memory-storage.ts`
- [Crypto primitives](https://github.com/fuellabs/fuels-ts/tree/master/packages/crypto/src): `packages/crypto/src`

### Other components

- **dApp developer**
- **Fuel network**

## Connections

- dApp developer → Provider: connects through (evidence: `README.md`)
- Provider → Fuel network: queries GraphQL (evidence: `README.md`)
- dApp developer → Wallet manager: manages accounts
- Wallet manager → Mnemonic and key vaults: creates vaults (evidence: `packages/account/src/wallet-manager/wallet-manager.ts`)
- Wallet manager → Encrypted state storage: persists state (evidence: `packages/account/src/wallet-manager/wallet-manager.ts`)
- Wallet manager → Crypto primitives: encrypts state (evidence: `packages/account/src/wallet-manager/wallet-manager.ts`)
- Wallet manager → Wallets: returns wallet (evidence: `packages/account/src/wallet-manager/wallet-manager.ts`)
- dApp developer → Contract interface: uses bindings
- Contract interface → Program invocation: invokes functions
- Program invocation → Transaction requests: prepares transaction
- Transaction requests → Provider: submits transaction
- Provider → Transaction responses: returns result
- Contract interface → ABI encoding: encodes arguments (evidence: `packages/abi-coder/src/FunctionFragment.ts`)
- dApp developer → Script invocation: runs scripts
- dApp developer → fuels CLI: runs commands (evidence: `README.md`)
- fuels CLI → Build and typegen: builds programs (evidence: `README.md`)
- fuels CLI → Deployment commands: deploys programs (evidence: `README.md`)
- fuels CLI → Local node commands: starts node (evidence: `README.md`)
- fuels CLI → ABI type generation: generates bindings (evidence: `README.md`)
- ABI type generation → ABI encoding: emits imports
- dApp developer → dApp scaffolding: creates project (evidence: `README.md`)
