Skip to main content
import * as FeeOracle from 'voltaire-effect/FeeOracle'
import { Effect } from 'effect'

// Create fee oracle data
const fees = Effect.runSync(FeeOracle.from({
  baseFee: 30000000000n,     // 30 gwei
  priorityFee: 1000000000n,  // 1 gwei
  maxFee: 60000000000n       // 60 gwei
}))

// Validate: maxFee >= baseFee + priorityFee
FeeOracle.validate(fees)

// Get effective price: min(baseFee + priorityFee, maxFee)
const price = FeeOracle.effectiveGasPrice(fees)

// Apply urgency multiplier
const urgent = FeeOracle.withMultiplier(fees, 1.5)

API

FunctionDescription
from(input)Create fee oracle
validate(fees)Validate fee constraints
effectiveGasPrice(fees)Calculate effective price
withMultiplier(fees, mult)Scale for urgency

Example

const getFees = (urgency: 'low' | 'medium' | 'high') =>
  Effect.gen(function* () {
    const base = yield* FeeOracle.from({
      baseFee: 30000000000n,
      priorityFee: 1000000000n,
      maxFee: 60000000000n
    })
    const mult = urgency === 'high' ? 2.0 : urgency === 'medium' ? 1.5 : 1.0
    return yield* FeeOracle.withMultiplier(base, mult)
  })