Skip to main content
Non-negative bigint representing account balance in wei.
import * as Balance from 'voltaire-effect/primitives/Balance'
import * as Schema from 'effect/Schema'
import { Effect } from 'effect'

// Schema: bigint, number, string, or hex
const balance = Schema.decodeSync(Balance.BigInt)(1000000000000000000n) // 1 ETH
const fromHex = Schema.decodeSync(Balance.Hex)('0xde0b6b3a7640000')

// Effect
const program = Balance.from(1000000000000000000n)
// Effect.Effect<BalanceType, UintError>

Usage

const ETH = 1_000_000_000_000_000_000n

const ethToWei = (eth: number) => Balance.from(BigInt(eth) * ETH)
const weiToEth = (balance: BalanceType) => Number(balance) / Number(ETH)
Fails on negative values.