Skip to main content

Create amounts

Each NetworkDescriptor provides helper methods to create Amount instances for transfers and display. Amount handles unit conversion (ETH ↔ wei ↔ gwei, BTC ↔ satoshis, and so on) and fiat conversion in a single type, with the same API across every supported chain.

From native units

Use amount() to create an amount in native units (e.g., BTC, ETH):

import { ChainGate } from 'chaingate'

const cg = new ChainGate()

// 0.001 BTC (= 100,000 satoshis)
const btcAmount = cg.networks.bitcoin.amount('0.001')

// 1.5 ETH (= 1,500,000,000,000,000,000 wei)
const ethAmount = cg.networks.ethereum.amount('1.5')

From fiat currency

Use amountFromCurrency() to create an amount from a fiat value at current market rates:

// $50 worth of ETH at the current ETH/USD price
const ethAmount = await cg.networks.ethereum.amountFromCurrency('usd', 50)

// €100 worth of BTC at the current BTC/EUR price
const btcAmount = await cg.networks.bitcoin.amountFromCurrency('eur', 100)

Working with amounts

The Amount class provides:

  • .base() — Value in base units as a Decimal (e.g., 0.005 ETH)
  • .min() — Value in minimal units as a bigint (e.g., 5000000000000000 wei)
  • .symbol — The currency symbol (e.g., 'ETH', 'BTC')
  • .name — Human-readable name (e.g., 'Ether', 'Bitcoin')
  • .network — Network identifier
  • .toCurrency(fiat)(async) Convert to fiat at current market rates
  • .isToken / .isNFT — Whether the amount represents a token or NFT
const amount = cg.networks.bitcoin.amount('0.005')

console.log(amount.base().toString()) // "0.005"
console.log(amount.min().toString()) // "500000"
console.log(amount.symbol) // "BTC"

// Convert to fiat
const usdValue = await amount.toCurrency('usd')
console.log(usdValue) // "485.23"

Key points

  • Precision-safe: Decimal math avoids floating-point errors common with cryptocurrency values.
  • Network-aware: Each amount knows its decimals, symbol, and network.
  • Fiat conversion: Built-in market-rate lookup via toCurrency() and amountFromCurrency() — supports ETH/USD, BTC/EUR, and 120+ pairs.
  • bigint minimal units: .min() returns bigint values, so you can do gas / gwei math without floating-point drift.