> ## Documentation Index
> Fetch the complete documentation index at: https://voltaire.tevm.sh/llms.txt
> Use this file to discover all available pages before exploring further.

# primitives/FeeOracle

> Auto-generated API documentation

[**@tevm/voltaire**](../index.mdx)

***

[@tevm/voltaire](../index.mdx) / primitives/FeeOracle

# primitives/FeeOracle

FeeOracle - Gas price estimation and fee data

Provides current gas prices, EIP-1559 fee estimation, and fee watching.

## Example

```typescript theme={null}
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](https://github.com/evmts/voltaire/blob/bd6ec34405c15ad8cd51d11579d495dc53813482/src/primitives/FeeOracle/FeeOracleType.ts#L27)

Fee estimation options

#### Properties

##### baseFeeMultiplier?

> `optional` **baseFeeMultiplier**: `number`

Defined in: [src/primitives/FeeOracle/FeeOracleType.ts:31](https://github.com/evmts/voltaire/blob/bd6ec34405c15ad8cd51d11579d495dc53813482/src/primitives/FeeOracle/FeeOracleType.ts#L31)

Multiplier for base fee (default: 1.25 for 25% buffer)

##### priority?

> `optional` **priority**: `"low"` | `"medium"` | `"high"`

Defined in: [src/primitives/FeeOracle/FeeOracleType.ts:29](https://github.com/evmts/voltaire/blob/bd6ec34405c15ad8cd51d11579d495dc53813482/src/primitives/FeeOracle/FeeOracleType.ts#L29)

Priority level for fee estimation

***

### FeeOracleInstance

Defined in: [src/primitives/FeeOracle/FeeOracleType.ts:37](https://github.com/evmts/voltaire/blob/bd6ec34405c15ad8cd51d11579d495dc53813482/src/primitives/FeeOracle/FeeOracleType.ts#L37)

FeeOracle instance - provides gas price estimation

#### Methods

##### estimateEip1559Fees()

> **estimateEip1559Fees**(`options?`): `Promise`\<\{ `maxFeePerGas`: `bigint`; `maxPriorityFeePerGas`: `bigint`; }>

Defined in: [src/primitives/FeeOracle/FeeOracleType.ts:68](https://github.com/evmts/voltaire/blob/bd6ec34405c15ad8cd51d11579d495dc53813482/src/primitives/FeeOracle/FeeOracleType.ts#L68)

Estimate fees for an EIP-1559 transaction

###### Parameters

###### options?

[`FeeEstimateOptions`](#feeestimateoptions)

Fee estimation options

###### Returns

`Promise`\<\{ `maxFeePerGas`: `bigint`; `maxPriorityFeePerGas`: `bigint`; }>

Suggested maxFeePerGas and maxPriorityFeePerGas

###### Example

```typescript theme={null}
const fees = await oracle.estimateEip1559Fees({ priority: 'high' });
const tx = {
  maxFeePerGas: fees.maxFeePerGas,
  maxPriorityFeePerGas: fees.maxPriorityFeePerGas,
  // ...
};
```

##### getFeeData()

> **getFeeData**(): `Promise`\<[`FeeDataType`](#feedatatype)>

Defined in: [src/primitives/FeeOracle/FeeOracleType.ts:50](https://github.com/evmts/voltaire/blob/bd6ec34405c15ad8cd51d11579d495dc53813482/src/primitives/FeeOracle/FeeOracleType.ts#L50)

Get current fee data from the network

###### Returns

`Promise`\<[`FeeDataType`](#feedatatype)>

Current fee data including gas prices and base fees

###### Example

```typescript theme={null}
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](https://github.com/evmts/voltaire/blob/bd6ec34405c15ad8cd51d11579d495dc53813482/src/primitives/FeeOracle/FeeOracleType.ts#L89)

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

```typescript theme={null}
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](https://github.com/evmts/voltaire/blob/bd6ec34405c15ad8cd51d11579d495dc53813482/src/primitives/FeeOracle/FeeOracleType.ts#L98)

Options for creating a FeeOracle

#### Properties

##### historyBlocks?

> `optional` **historyBlocks**: `number`

Defined in: [src/primitives/FeeOracle/FeeOracleType.ts:106](https://github.com/evmts/voltaire/blob/bd6ec34405c15ad8cd51d11579d495dc53813482/src/primitives/FeeOracle/FeeOracleType.ts#L106)

History blocks to analyze for priority fee (default: 4)

##### priorityFeePercentile?

> `optional` **priorityFeePercentile**: `number`

Defined in: [src/primitives/FeeOracle/FeeOracleType.ts:104](https://github.com/evmts/voltaire/blob/bd6ec34405c15ad8cd51d11579d495dc53813482/src/primitives/FeeOracle/FeeOracleType.ts#L104)

Default priority fee percentile (default: 50)

##### provider

> **provider**: `object`

Defined in: [src/primitives/FeeOracle/FeeOracleType.ts:100](https://github.com/evmts/voltaire/blob/bd6ec34405c15ad8cd51d11579d495dc53813482/src/primitives/FeeOracle/FeeOracleType.ts#L100)

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](https://github.com/evmts/voltaire/blob/bd6ec34405c15ad8cd51d11579d495dc53813482/src/primitives/FeeOracle/FeeOracleType.ts#L9)

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`](#feeoracleinstance)

Defined in: [src/primitives/FeeOracle/FeeOracleType.ts:112](https://github.com/evmts/voltaire/blob/bd6ec34405c15ad8cd51d11579d495dc53813482/src/primitives/FeeOracle/FeeOracleType.ts#L112)

FeeOracle factory function type

#### Parameters

##### options

[`FeeOracleOptions`](#feeoracleoptions)

#### Returns

[`FeeOracleInstance`](#feeoracleinstance)

## Functions

### FeeOracle()

> **FeeOracle**(`options`): [`FeeOracleInstance`](#feeoracleinstance)

Defined in: [src/primitives/FeeOracle/FeeOracle.js:44](https://github.com/evmts/voltaire/blob/bd6ec34405c15ad8cd51d11579d495dc53813482/src/primitives/FeeOracle/FeeOracle.js#L44)

Create a FeeOracle instance

#### Parameters

##### options

[`FeeOracleOptions`](#feeoracleoptions)

#### Returns

[`FeeOracleInstance`](#feeoracleinstance)

#### Example

```typescript theme={null}
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));
```
