Skip to main content
@tevm/voltaire
@tevm/voltaire / primitives/FeeOracle

primitives/FeeOracle

FeeOracle - Gas price estimation and fee data Provides current gas prices, EIP-1559 fee estimation, and fee watching.

Example

import { FeeOracle } from '@tevm/voltaire/FeeOracle';

const oracle = FeeOracle({ provider });

// Get current fees
const feeData = await oracle.getFeeData();
console.log(`Gas price: ${feeData.gasPrice}`);
console.log(`Base fee: ${feeData.baseFeePerGas}`);

// Estimate EIP-1559 fees with priority
const fees = await oracle.estimateEip1559Fees({ priority: 'high' });
const tx = {
  maxFeePerGas: fees.maxFeePerGas,
  maxPriorityFeePerGas: fees.maxPriorityFeePerGas,
};

// Watch for fee updates
const unsubscribe = oracle.watchFees(
  (data) => console.log(`New base fee: ${data.baseFeePerGas}`),
  { pollingInterval: 12000 }
);

Interfaces

FeeEstimateOptions

Defined in: src/primitives/FeeOracle/FeeOracleType.ts:27 Fee estimation options

Properties

baseFeeMultiplier?
optional baseFeeMultiplier: number
Defined in: src/primitives/FeeOracle/FeeOracleType.ts:31 Multiplier for base fee (default: 1.25 for 25% buffer)
priority?
optional priority: "low" | "medium" | "high"
Defined in: src/primitives/FeeOracle/FeeOracleType.ts:29 Priority level for fee estimation

FeeOracleInstance

Defined in: src/primitives/FeeOracle/FeeOracleType.ts:37 FeeOracle instance - provides gas price estimation

Methods

estimateEip1559Fees()
estimateEip1559Fees(options?): Promise<{ maxFeePerGas: bigint; maxPriorityFeePerGas: bigint; }>
Defined in: src/primitives/FeeOracle/FeeOracleType.ts:68 Estimate fees for an EIP-1559 transaction
Parameters
options?
FeeEstimateOptions Fee estimation options
Returns
Promise<{ maxFeePerGas: bigint; maxPriorityFeePerGas: bigint; }> Suggested maxFeePerGas and maxPriorityFeePerGas
Example
const fees = await oracle.estimateEip1559Fees({ priority: 'high' });
const tx = {
  maxFeePerGas: fees.maxFeePerGas,
  maxPriorityFeePerGas: fees.maxPriorityFeePerGas,
  // ...
};
getFeeData()
getFeeData(): Promise<FeeDataType>
Defined in: src/primitives/FeeOracle/FeeOracleType.ts:50 Get current fee data from the network
Returns
Promise<FeeDataType> Current fee data including gas prices and base fees
Example
const feeData = await oracle.getFeeData();
console.log(`Gas price: ${feeData.gasPrice}`);
console.log(`Base fee: ${feeData.baseFeePerGas}`);
watchFees()
watchFees(callback, options?): () => void
Defined in: src/primitives/FeeOracle/FeeOracleType.ts:89 Watch for fee updates
Parameters
callback
(feeData) => void Called when fees change
options?
Watch options
pollingInterval?
number
signal?
AbortSignal
Returns
Unsubscribe function
(): void
Returns
void
Example
const unsubscribe = oracle.watchFees(
  (feeData) => console.log(`New base fee: ${feeData.baseFeePerGas}`),
  { pollingInterval: 12000 }
);
// Later: unsubscribe();

FeeOracleOptions

Defined in: src/primitives/FeeOracle/FeeOracleType.ts:98 Options for creating a FeeOracle

Properties

historyBlocks?
optional historyBlocks: number
Defined in: src/primitives/FeeOracle/FeeOracleType.ts:106 History blocks to analyze for priority fee (default: 4)
priorityFeePercentile?
optional priorityFeePercentile: number
Defined in: src/primitives/FeeOracle/FeeOracleType.ts:104 Default priority fee percentile (default: 50)
provider
provider: object
Defined in: src/primitives/FeeOracle/FeeOracleType.ts:100 EIP-1193 provider
request()
request(args): Promise<unknown>
Parameters
args
method
string
params?
unknown[]
Returns
Promise<unknown>

Type Aliases

FeeDataType

FeeDataType = object & object
Defined in: src/primitives/FeeOracle/FeeOracleType.ts:9 Fee data returned by FeeOracle Contains current gas price information for transaction fee estimation. Supports both legacy (gasPrice) and EIP-1559 (maxFeePerGas, maxPriorityFeePerGas) fee models.

Type Declaration

baseFeePerGas
readonly baseFeePerGas: bigint | null
Current base fee per gas (EIP-1559)
blobBaseFee
readonly blobBaseFee: bigint | null
Current blob base fee (EIP-4844, null if not supported)
blockNumber
readonly blockNumber: bigint
Block number this data was fetched from
gasPrice
readonly gasPrice: bigint
Current gas price (legacy transactions)
maxFeePerGas
readonly maxFeePerGas: bigint | null
Suggested max fee per gas (EIP-1559)
maxPriorityFeePerGas
readonly maxPriorityFeePerGas: bigint | null
Suggested max priority fee per gas (EIP-1559)

Type Declaration

[brand]
readonly [brand]: "FeeData"

FeeOracleFactory()

FeeOracleFactory = (options) => FeeOracleInstance
Defined in: src/primitives/FeeOracle/FeeOracleType.ts:112 FeeOracle factory function type

Parameters

options
FeeOracleOptions

Returns

FeeOracleInstance

Functions

FeeOracle()

FeeOracle(options): FeeOracleInstance
Defined in: src/primitives/FeeOracle/FeeOracle.js:44 Create a FeeOracle instance

Parameters

options
FeeOracleOptions

Returns

FeeOracleInstance

Example

const oracle = FeeOracle({ provider });

// Get current fees
const feeData = await oracle.getFeeData();
console.log(`Base fee: ${feeData.baseFeePerGas}`);

// Estimate EIP-1559 fees
const fees = await oracle.estimateEip1559Fees({ priority: 'high' });

// Watch for fee updates
oracle.watchFees((data) => console.log(data));