API
| Function | Description |
|---|---|
from(input) | Create fee oracle |
validate(fees) | Validate fee constraints |
effectiveGasPrice(fees) | Calculate effective price |
withMultiplier(fees, mult) | Scale for urgency |
Gas fee estimation and validation
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)
| Function | Description |
|---|---|
from(input) | Create fee oracle |
validate(fees) | Validate fee constraints |
effectiveGasPrice(fees) | Calculate effective price |
withMultiplier(fees, mult) | Scale for urgency |
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)
})