Gas amounts for Ethereum transactions
import { Gas, GasPrice, GasEstimate } from 'voltaire-effect'
import * as Schema from 'effect/Schema'
import { Effect } from 'effect'
// Schema
const gas = Schema.decodeSync(Gas.BigInt)(21000n)
// Effect
const program = Gas.from(21000n)
// Effect.Effect<GasType, Error>
// From wei
const price = Schema.decodeSync(GasPrice.BigInt)(20000000000n)
// From gwei (auto-converts to wei)
const fromGwei = Schema.decodeSync(GasPrice.FromGweiSchema)(20n)
// → 20000000000n wei
// Effect
const program = GasPrice.fromGwei(20n)
const program = Effect.gen(function* () {
const estimate = yield* GasEstimate.from(65000n)
const buffered = yield* GasEstimate.withBuffer(estimate, 20) // +20%
const gasLimit = yield* GasEstimate.toGasLimit(buffered)
return gasLimit // 78000n
})