Working with amounts
Whenever an explorer method returns a value (balances, fees, token amounts), it uses the Amount class. This class handles unit conversion (ETH ↔ wei ↔ gwei, BTC ↔ satoshis, and so on) and fiat conversion in a single type, with consistent formatting across every blockchain.
Amount properties
.base()— Value in base units as aDecimal(e.g.,0.005ETH).min()— Value in minimal units as abigint(e.g.,5000000000000000wei).symbol— 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
Example
import { ChainGate } from 'chaingate'
const cg = new ChainGate()
const btc = cg.explore(cg.networks.bitcoin)
const balance = await btc.getAddressBalance('bc1q...')
console.log(balance.confirmed.base().toString()) // "0.005"
console.log(balance.confirmed.min().toString()) // "500000"
console.log(balance.confirmed.symbol) // "BTC"
Fiat conversion
Convert any amount to a fiat currency at current market rates:
const usdValue = await balance.confirmed.toCurrency('usd')
console.log(usdValue) // "485.23"
const eurValue = await balance.confirmed.toCurrency('eur')
console.log(eurValue) // "442.10"
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(). - Consistent — The same
Amountclass is used across explorers, connectors, and transfers.