/fuels-ts

Fuel v2 TypeScript SDK

Primary LanguageTypeScriptApache License 2.0Apache-2.0

Fuels-ts SDK logo

fuels-ts is a library for interacting with Fuel v2.

test npm docs discord

Table of contents

Quickstart

We recommend to start on Quickstart to speed-up and build your first DApp using Fuel.

Documentation

Find more information about packages in our Documentation.

The Fuel Ecosystem

Learn more about the Fuel Ecosystem.

Install

YARN

yarn add fuels

NPM

npm install fuels --save

Import

import { Wallet } from "fuels";

// Random Wallet
console.log(Wallet.generate());

// Using privateKey Wallet
console.log(new Wallet("0x0000...0000"));

Calling Contracts

import { Wallet, Contract, BigNumberish, BN } from "fuels";
import abi from "./abi.json";

const wallet = new Wallet("0x..."); // private key with coins
const contractId = "0x...";
const contract = new Contract(contractId, abi, wallet);

// All contract methods are available under functions
// with the correct types
const { transactionId, value } = await contract.functions
  .foo<[BigNumberish], BN>("bar")
  .call();

console.log(transactionId, value);

READ MORE

Generate Contract Types from ABI

Dependencies

yarn add -D fuelchain typechain-target-fuels

Generate Types

yarn exec fuelchain --target=fuels --out-dir=types abi.json

Using Generated Types

import { Wallet } from "fuels";
import { MyContract__factory } from "./types";

const contractId = "0x...";
const wallet = new Wallet("0x...");
const contract = MyContract__factory.connect(contractId, wallet);

// All contract methods are available under functions
// with the correct types
const { transactionId, value } = await contract.functions.my_fn(1n).call();
console.log(transactionId, value);

Deploying Contracts

import { Provider, Contract } from "fuels";
// Byte code generated using: forc build
import bytecode from "./bytecode.bin";

const factory = new ContractFactory(bytecode, [], wallet);
const contract = await factory.deployContract(factory);

console.log(contract.id);

License

The primary license for this repo is Apache 2.0, see LICENSE.