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

# EVMWallet

<Note>
  **This page has been updated for Wallets SDK V1.** If you are using the previous version,
  see the [previous version of this page](/sdk-reference/wallets/v0/typescript/classes/EVMWallet) or the [V1 migration guide](/wallets/guides/migrate-to-v1).
</Note>

Defined in: [packages/wallets/src/wallets/evm.ts:21](https://github.com/Crossmint/crossmint-sdk/blob/main/packages/wallets/src/wallets/evm.ts#L21)

## Extends

* [`Wallet`](./Wallet)\<[`EVMChain`](../type-aliases/EVMChain)>

## Constructors

### new EVMWallet()

> **new EVMWallet**(`wallet`): `EVMWallet`

Defined in: [packages/wallets/src/wallets/evm.ts:22](https://github.com/Crossmint/crossmint-sdk/blob/main/packages/wallets/src/wallets/evm.ts#L22)

#### Parameters

| Parameter | Type                                         |
| --------- | -------------------------------------------- |
| `wallet`  | [`Wallet`](./Wallet)\<`EVMSmartWalletChain`> |

#### Returns

`EVMWallet`

#### Overrides

[`Wallet`](./Wallet).[`constructor`](./Wallet#constructor)

## Properties

| Property                     | Type                  | Inherited from                                     | Defined in                                                                                                                                   |
| ---------------------------- | --------------------- | -------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------- |
| <a id="address" /> `address` | `string`              | [`Wallet`](./Wallet).[`address`](./Wallet#address) | [packages/wallets/src/wallets/wallet.ts:85](https://github.com/Crossmint/crossmint-sdk/blob/main/packages/wallets/src/wallets/wallet.ts#L85) |
| <a id="alias" /> `alias?`    | `string`              | [`Wallet`](./Wallet).[`alias`](./Wallet#alias)     | [packages/wallets/src/wallets/wallet.ts:87](https://github.com/Crossmint/crossmint-sdk/blob/main/packages/wallets/src/wallets/wallet.ts#L87) |
| <a id="chain" /> `chain`     | `EVMSmartWalletChain` | [`Wallet`](./Wallet).[`chain`](./Wallet#chain)     | [packages/wallets/src/wallets/wallet.ts:84](https://github.com/Crossmint/crossmint-sdk/blob/main/packages/wallets/src/wallets/wallet.ts#L84) |
| <a id="owner" /> `owner?`    | `string`              | [`Wallet`](./Wallet).[`owner`](./Wallet#owner)     | [packages/wallets/src/wallets/wallet.ts:86](https://github.com/Crossmint/crossmint-sdk/blob/main/packages/wallets/src/wallets/wallet.ts#L86) |

## Accessors

### apiClient

#### Get Signature

> **get** **apiClient**(): [`WalletsApiClient`](./WalletsApiClient)

Defined in: [packages/wallets/src/wallets/wallet.ts:206](https://github.com/Crossmint/crossmint-sdk/blob/main/packages/wallets/src/wallets/wallet.ts#L206)

##### Returns

[`WalletsApiClient`](./WalletsApiClient)

#### Inherited from

[`Wallet`](./Wallet).[`apiClient`](./Wallet#apiclient)

***

### recovery

#### Get Signature

> **get** **recovery**(): [`SignerConfigForChain`](../type-aliases/SignerConfigForChain)\<`C`>

Defined in: [packages/wallets/src/wallets/wallet.ts:219](https://github.com/Crossmint/crossmint-sdk/blob/main/packages/wallets/src/wallets/wallet.ts#L219)

**`Experimental`**

Get the recovery signer config

##### Returns

[`SignerConfigForChain`](../type-aliases/SignerConfigForChain)\<`C`>

The recovery signer config
This API is experimental and may change in the future

#### Inherited from

[`Wallet`](./Wallet).[`recovery`](./Wallet#recovery)

***

### signer

#### Get Signature

> **get** **signer**(): [`SignerAdapter`](../interfaces/SignerAdapter)\<keyof `SignResultMap`> | `undefined`

Defined in: [packages/wallets/src/wallets/wallet.ts:112](https://github.com/Crossmint/crossmint-sdk/blob/main/packages/wallets/src/wallets/wallet.ts#L112)

##### Returns

[`SignerAdapter`](../interfaces/SignerAdapter)\<keyof `SignResultMap`> | `undefined`

#### Inherited from

[`Wallet`](./Wallet).[`signer`](./Wallet#signer)

## Methods

### addSigner()

> **addSigner**\<`T`>(`signer`, `options`?): `Promise`\<`T` *extends* `PrepareOnly`\<`true`> ? [`Signer`](../type-aliases/Signer) & `object` : [`Signer`](../type-aliases/Signer)>

Defined in: [packages/wallets/src/wallets/wallet.ts:614](https://github.com/Crossmint/crossmint-sdk/blob/main/packages/wallets/src/wallets/wallet.ts#L614)

Add a signer to the wallet.
Always uses the recovery signer internally to approve the registration.
If the signer being added is the current operational signer, it will be reassembled with the new locator.
Otherwise, the original signer is restored after the operation.

#### Type Parameters

| Type Parameter                                                                      | Default type |
| ----------------------------------------------------------------------------------- | ------------ |
| `T` *extends* [`AddSignerOptions`](../type-aliases/AddSignerOptions) \| `undefined` | `undefined`  |

#### Parameters

| Parameter  | Type                                                                                                                                                                                                                                                                                                                                                                                                                                                                            | Description                     |
| ---------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------- |
| `signer`   | [`EmailSignerConfig`](../type-aliases/EmailSignerConfig) \| [`PhoneSignerConfig`](../type-aliases/PhoneSignerConfig) \| `ApiKeySignerConfig` \| [`ServerSignerConfig`](../type-aliases/ServerSignerConfig) \| [`DeviceSignerConfig`](../type-aliases/DeviceSignerConfig) \| `PasskeySignerConfig` \| [`EvmExternalWalletSignerConfig`](../type-aliases/EvmExternalWalletSignerConfig) \| [`ExternalWalletRegistrationConfig`](../type-aliases/ExternalWalletRegistrationConfig) | The signer configuration object |
| `options`? | `T`                                                                                                                                                                                                                                                                                                                                                                                                                                                                             | The options for the operation   |

#### Returns

`Promise`\<`T` *extends* `PrepareOnly`\<`true`> ? [`Signer`](../type-aliases/Signer) & `object` : [`Signer`](../type-aliases/Signer)>

#### Inherited from

[`Wallet`](./Wallet).[`addSigner`](./Wallet#addsigner)

***

### approve()

> **approve**\<`T`>(`params`): `Promise`\<`ApproveResult`\<`T`>>

Defined in: [packages/wallets/src/wallets/wallet.ts:568](https://github.com/Crossmint/crossmint-sdk/blob/main/packages/wallets/src/wallets/wallet.ts#L568)

Approve a transaction or signature

#### Type Parameters

| Type Parameter                                                 |
| -------------------------------------------------------------- |
| `T` *extends* [`ApproveParams`](../type-aliases/ApproveParams) |

#### Parameters

| Parameter | Type | Description    |
| --------- | ---- | -------------- |
| `params`  | `T`  | The parameters |

#### Returns

`Promise`\<`ApproveResult`\<`T`>>

The transaction or signature

#### Inherited from

[`Wallet`](./Wallet).[`approve`](./Wallet#approve)

***

### ~~approveTransaction()~~

> **approveTransaction**(`params`): `Promise`\<`Error`>

Defined in: [packages/wallets/src/wallets/wallet.ts:544](https://github.com/Crossmint/crossmint-sdk/blob/main/packages/wallets/src/wallets/wallet.ts#L544)

#### Parameters

| Parameter | Type                                             | Description    |
| --------- | ------------------------------------------------ | -------------- |
| `params`  | [`ApproveParams`](../type-aliases/ApproveParams) | The parameters |

#### Returns

`Promise`\<`Error`>

The transaction

#### Deprecated

Use `approve` instead.
Approve a transaction

#### Inherited from

[`Wallet`](./Wallet).[`approveTransaction`](./Wallet#approvetransaction)

***

### balances()

> **balances**(`tokens`?): `Promise`\<[`Balances`](../type-aliases/Balances)\<`EVMSmartWalletChain`>>

Defined in: [packages/wallets/src/wallets/wallet.ts:236](https://github.com/Crossmint/crossmint-sdk/blob/main/packages/wallets/src/wallets/wallet.ts#L236)

Get the wallet balances - always includes USDC and native token (ETH/SOL)

#### Parameters

| Parameter | Type        | Description                                                                        |
| --------- | ----------- | ---------------------------------------------------------------------------------- |
| `tokens`? | `string`\[] | Additional tokens to request (optional: native token and usdc are always included) |

#### Returns

`Promise`\<[`Balances`](../type-aliases/Balances)\<`EVMSmartWalletChain`>>

The balances returns nativeToken, usdc, tokens

#### Throws

If the balances cannot be retrieved

#### Inherited from

[`Wallet`](./Wallet).[`balances`](./Wallet#balances)

***

### getViemClient()

> **getViemClient**(`params`?): `object`

Defined in: [packages/wallets/src/wallets/evm.ts:208](https://github.com/Crossmint/crossmint-sdk/blob/main/packages/wallets/src/wallets/evm.ts#L208)

Get a Viem public client instance configured for this wallet's chain.

#### Parameters

| Parameter           | Type                               | Description                      |
| ------------------- | ---------------------------------- | -------------------------------- |
| `params`?           | \{ `transport`: `HttpTransport`; } | Optional transport configuration |
| `params.transport`? | `HttpTransport`                    | -                                |

#### Returns

`object`

A Viem public client

##### account

> **account**: `undefined`

The Account of the Client.

##### batch?

> `optional` **batch**: `object`

Flags for batch settings.

###### batch.multicall?

> `optional` **multicall**: `boolean` | \{ `batchSize`: `number`; `wait`: `number`; }

Toggle to enable `eth_call` multicall aggregation.

###### Type Declaration

`boolean`

\{ `batchSize`: `number`; `wait`: `number`; }

##### cacheTime

> **cacheTime**: `number`

Time (in ms) that cached data will remain in memory.

##### call()

> **call**: (`parameters`) => `Promise`\<`CallReturnType`>

Executes a new message call immediately without submitting a transaction to the network.

* Docs: [https://viem.sh/docs/actions/public/call](https://viem.sh/docs/actions/public/call)
* JSON-RPC Methods: [`eth_call`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_call)

###### Parameters

| Parameter    | Type                       |
| ------------ | -------------------------- |
| `parameters` | `CallParameters`\<`Chain`> |

###### Returns

`Promise`\<`CallReturnType`>

The call data. CallReturnType

###### Example

```ts theme={null}
import { createPublicClient, http } from 'viem'
import { mainnet } from 'viem/chains'

const client = createPublicClient({
  chain: mainnet,
  transport: http(),
})
const data = await client.call({
  account: '0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266',
  data: '0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2',
  to: '0x70997970c51812dc3a010c7d01b50e0d17dc79c8',
})
```

##### ccipRead?

> `optional` **ccipRead**: `false` | \{ `request`: (`parameters`) => `Promise`\<`` `0x${string}` ``>; }

[CCIP Read](https://eips.ethereum.org/EIPS/eip-3668) configuration.

###### Type Declaration

`false`

\{ `request`: (`parameters`) => `Promise`\<`` `0x${string}` ``>; }

##### chain

> **chain**: `Chain`

Chain for the client.

##### createAccessList()

> **createAccessList**: (`parameters`) => `Promise`\<\{ `accessList`: `AccessList`; `gasUsed`: `bigint`; }>

Creates an EIP-2930 access list that you can include in a transaction.

* Docs: [https://viem.sh/docs/actions/public/createAccessList](https://viem.sh/docs/actions/public/createAccessList)
* JSON-RPC Methods: `eth_createAccessList`

###### Parameters

| Parameter    | Type                                   |
| ------------ | -------------------------------------- |
| `parameters` | `CreateAccessListParameters`\<`Chain`> |

###### Returns

`Promise`\<\{ `accessList`: `AccessList`; `gasUsed`: `bigint`; }>

The call data. CreateAccessListReturnType

###### Example

```ts theme={null}
import { createPublicClient, http } from 'viem'
import { mainnet } from 'viem/chains'

const client = createPublicClient({
  chain: mainnet,
  transport: http(),
})

const data = await client.createAccessList({
  data: '0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2',
  to: '0x70997970c51812dc3a010c7d01b50e0d17dc79c8',
})
```

##### createBlockFilter()

> **createBlockFilter**: () => `Promise`\<\{ `id`: `` `0x${string}` ``; `request`: `EIP1193RequestFn`\<readonly \[\{ `Method`: `"eth_getFilterChanges"`; `Parameters`: \[`` `0x${string}` ``]; `ReturnType`: `` `0x${string}` ``\[] | `RpcLog`\[]; }, \{ `Method`: `"eth_getFilterLogs"`; `Parameters`: \[`` `0x${string}` ``]; `ReturnType`: `RpcLog`\[]; }, \{ `Method`: `"eth_uninstallFilter"`; `Parameters`: \[`` `0x${string}` ``]; `ReturnType`: `boolean`; }]>; `type`: `"block"`; }>

Creates a Filter to listen for new block hashes that can be used with [`getFilterChanges`](https://viem.sh/docs/actions/public/getFilterChanges).

* Docs: [https://viem.sh/docs/actions/public/createBlockFilter](https://viem.sh/docs/actions/public/createBlockFilter)
* JSON-RPC Methods: [`eth_newBlockFilter`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_newBlockFilter)

###### Returns

`Promise`\<\{ `id`: `` `0x${string}` ``; `request`: `EIP1193RequestFn`\<readonly \[\{ `Method`: `"eth_getFilterChanges"`; `Parameters`: \[`` `0x${string}` ``]; `ReturnType`: `` `0x${string}` ``\[] | `RpcLog`\[]; }, \{ `Method`: `"eth_getFilterLogs"`; `Parameters`: \[`` `0x${string}` ``]; `ReturnType`: `RpcLog`\[]; }, \{ `Method`: `"eth_uninstallFilter"`; `Parameters`: \[`` `0x${string}` ``]; `ReturnType`: `boolean`; }]>; `type`: `"block"`; }>

Filter. CreateBlockFilterReturnType

###### Example

```ts theme={null}
import { createPublicClient, createBlockFilter, http } from 'viem'
import { mainnet } from 'viem/chains'

const client = createPublicClient({
  chain: mainnet,
  transport: http(),
})
const filter = await createBlockFilter(client)
// { id: "0x345a6572337856574a76364e457a4366", type: 'block' }
```

##### createContractEventFilter()

> **createContractEventFilter**: \<`abi`, `eventName`, `args`, `strict`, `fromBlock`, `toBlock`>(`args`) => `Promise`\<`CreateContractEventFilterReturnType`\<`abi`, `eventName`, `args`, `strict`, `fromBlock`, `toBlock`>>

Creates a Filter to retrieve event logs that can be used with [`getFilterChanges`](https://viem.sh/docs/actions/public/getFilterChanges) or [`getFilterLogs`](https://viem.sh/docs/actions/public/getFilterLogs).

* Docs: [https://viem.sh/docs/contract/createContractEventFilter](https://viem.sh/docs/contract/createContractEventFilter)

###### Type Parameters

| Type Parameter                                                                          | Default type |
| --------------------------------------------------------------------------------------- | ------------ |
| `abi` *extends* readonly `unknown`\[] \| `Abi`                                          | -            |
| `eventName` *extends* `string` \| `undefined`                                           | -            |
| `args` *extends* readonly `unknown`\[] \| `Record`\<`string`, `unknown`> \| `undefined` | -            |
| `strict` *extends* `boolean` \| `undefined`                                             | `undefined`  |
| `fromBlock` *extends* `bigint` \| `BlockTag` \| `undefined`                             | `undefined`  |
| `toBlock` *extends* `bigint` \| `BlockTag` \| `undefined`                               | `undefined`  |

###### Parameters

| Parameter | Type                                                                                                 | Description                         |
| --------- | ---------------------------------------------------------------------------------------------------- | ----------------------------------- |
| `args`    | `CreateContractEventFilterParameters`\<`abi`, `eventName`, `args`, `strict`, `fromBlock`, `toBlock`> | CreateContractEventFilterParameters |

###### Returns

`Promise`\<`CreateContractEventFilterReturnType`\<`abi`, `eventName`, `args`, `strict`, `fromBlock`, `toBlock`>>

[`Filter`](https://viem.sh/docs/glossary/types#filter). CreateContractEventFilterReturnType

###### Example

```ts theme={null}
import { createPublicClient, http, parseAbi } from 'viem'
import { mainnet } from 'viem/chains'

const client = createPublicClient({
  chain: mainnet,
  transport: http(),
})
const filter = await client.createContractEventFilter({
  abi: parseAbi(['event Transfer(address indexed, address indexed, uint256)']),
})
```

##### createEventFilter()

> **createEventFilter**: \<`abiEvent`, `abiEvents`, `strict`, `fromBlock`, `toBlock`, `_EventName`, `_Args`>(`args`?) => `Promise`\<\{ \[K in string | number | symbol]: Filter\<"event", abiEvents, \_EventName, \_Args, strict, fromBlock, toBlock>\[K] }>

Creates a [`Filter`](https://viem.sh/docs/glossary/types#filter) to listen for new events that can be used with [`getFilterChanges`](https://viem.sh/docs/actions/public/getFilterChanges).

* Docs: [https://viem.sh/docs/actions/public/createEventFilter](https://viem.sh/docs/actions/public/createEventFilter)
* JSON-RPC Methods: [`eth_newFilter`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_newfilter)

###### Type Parameters

| Type Parameter                                                                           | Default type                                                  |
| ---------------------------------------------------------------------------------------- | ------------------------------------------------------------- |
| `abiEvent` *extends* `AbiEvent` \| `undefined`                                           | `undefined`                                                   |
| `abiEvents` *extends* readonly `unknown`\[] \| readonly `AbiEvent`\[] \| `undefined`     | `abiEvent` *extends* `AbiEvent` ? \[`abiEvent`] : `undefined` |
| `strict` *extends* `boolean` \| `undefined`                                              | `undefined`                                                   |
| `fromBlock` *extends* `bigint` \| `BlockTag` \| `undefined`                              | `undefined`                                                   |
| `toBlock` *extends* `bigint` \| `BlockTag` \| `undefined`                                | `undefined`                                                   |
| `_EventName` *extends* `string` \| `undefined`                                           | `MaybeAbiEventName`\<`abiEvent`>                              |
| `_Args` *extends* readonly `unknown`\[] \| `Record`\<`string`, `unknown`> \| `undefined` | `undefined`                                                   |

###### Parameters

| Parameter | Type                                                                                                             | Description                 |
| --------- | ---------------------------------------------------------------------------------------------------------------- | --------------------------- |
| `args`?   | `CreateEventFilterParameters`\<`abiEvent`, `abiEvents`, `strict`, `fromBlock`, `toBlock`, `_EventName`, `_Args`> | CreateEventFilterParameters |

###### Returns

`Promise`\<\{ \[K in string | number | symbol]: Filter\<"event", abiEvents, \_EventName, \_Args, strict, fromBlock, toBlock>\[K] }>

[`Filter`](https://viem.sh/docs/glossary/types#filter). CreateEventFilterReturnType

###### Example

```ts theme={null}
import { createPublicClient, http } from 'viem'
import { mainnet } from 'viem/chains'

const client = createPublicClient({
  chain: mainnet,
  transport: http(),
})
const filter = await client.createEventFilter({
  address: '0xfba3912ca04dd458c843e2ee08967fc04f3579c2',
})
```

##### createPendingTransactionFilter()

> **createPendingTransactionFilter**: () => `Promise`\<\{ `id`: `` `0x${string}` ``; `request`: `EIP1193RequestFn`\<readonly \[\{ `Method`: `"eth_getFilterChanges"`; `Parameters`: \[`` `0x${string}` ``]; `ReturnType`: `` `0x${string}` ``\[] | `RpcLog`\[]; }, \{ `Method`: `"eth_getFilterLogs"`; `Parameters`: \[`` `0x${string}` ``]; `ReturnType`: `RpcLog`\[]; }, \{ `Method`: `"eth_uninstallFilter"`; `Parameters`: \[`` `0x${string}` ``]; `ReturnType`: `boolean`; }]>; `type`: `"transaction"`; }>

Creates a Filter to listen for new pending transaction hashes that can be used with [`getFilterChanges`](https://viem.sh/docs/actions/public/getFilterChanges).

* Docs: [https://viem.sh/docs/actions/public/createPendingTransactionFilter](https://viem.sh/docs/actions/public/createPendingTransactionFilter)
* JSON-RPC Methods: [`eth_newPendingTransactionFilter`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_newpendingtransactionfilter)

###### Returns

`Promise`\<\{ `id`: `` `0x${string}` ``; `request`: `EIP1193RequestFn`\<readonly \[\{ `Method`: `"eth_getFilterChanges"`; `Parameters`: \[`` `0x${string}` ``]; `ReturnType`: `` `0x${string}` ``\[] | `RpcLog`\[]; }, \{ `Method`: `"eth_getFilterLogs"`; `Parameters`: \[`` `0x${string}` ``]; `ReturnType`: `RpcLog`\[]; }, \{ `Method`: `"eth_uninstallFilter"`; `Parameters`: \[`` `0x${string}` ``]; `ReturnType`: `boolean`; }]>; `type`: `"transaction"`; }>

[`Filter`](https://viem.sh/docs/glossary/types#filter). CreateBlockFilterReturnType

###### Example

```ts theme={null}
import { createPublicClient, http } from 'viem'
import { mainnet } from 'viem/chains'

const client = createPublicClient({
  chain: mainnet,
  transport: http(),
})
const filter = await client.createPendingTransactionFilter()
// { id: "0x345a6572337856574a76364e457a4366", type: 'transaction' }
```

##### estimateContractGas()

> **estimateContractGas**: \<`chain`, `abi`, `functionName`, `args`>(`args`) => `Promise`\<`bigint`>

Estimates the gas required to successfully execute a contract write function call.

* Docs: [https://viem.sh/docs/contract/estimateContractGas](https://viem.sh/docs/contract/estimateContractGas)

###### Type Parameters

| Type Parameter                                 |
| ---------------------------------------------- |
| `chain` *extends* `Chain` \| `undefined`       |
| `abi` *extends* readonly `unknown`\[] \| `Abi` |
| `functionName` *extends* `string`              |
| `args` *extends* `unknown`                     |

###### Parameters

| Parameter | Type                                                                     | Description                   |
| --------- | ------------------------------------------------------------------------ | ----------------------------- |
| `args`    | `EstimateContractGasParameters`\<`abi`, `functionName`, `args`, `chain`> | EstimateContractGasParameters |

###### Returns

`Promise`\<`bigint`>

The gas estimate (in wei). EstimateContractGasReturnType

###### Remarks

Internally, uses a [Public Client](https://viem.sh/docs/clients/public) to call the [`estimateGas` action](https://viem.sh/docs/actions/public/estimateGas) with [ABI-encoded `data`](https://viem.sh/docs/contract/encodeFunctionData).

###### Example

```ts theme={null}
import { createPublicClient, http, parseAbi } from 'viem'
import { mainnet } from 'viem/chains'

const client = createPublicClient({
  chain: mainnet,
  transport: http(),
})
const gas = await client.estimateContractGas({
  address: '0xFBA3912Ca04dd458c843e2EE08967fC04f3579c2',
  abi: parseAbi(['function mint() public']),
  functionName: 'mint',
  account: '0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266',
})
```

##### estimateFeesPerGas()

> **estimateFeesPerGas**: \<`chainOverride`, `type`>(`args`?) => `Promise`\<`EstimateFeesPerGasReturnType`\<`type`>>

Returns an estimate for the fees per gas for a transaction to be included
in the next block.

* Docs: [https://viem.sh/docs/actions/public/estimateFeesPerGas](https://viem.sh/docs/actions/public/estimateFeesPerGas)

###### Type Parameters

| Type Parameter                                   | Default type |
| ------------------------------------------------ | ------------ |
| `chainOverride` *extends* `Chain` \| `undefined` | `undefined`  |
| `type` *extends* `FeeValuesType`                 | `"eip1559"`  |

###### Parameters

| Parameter | Type                                                              |
| --------- | ----------------------------------------------------------------- |
| `args`?   | `EstimateFeesPerGasParameters`\<`Chain`, `chainOverride`, `type`> |

###### Returns

`Promise`\<`EstimateFeesPerGasReturnType`\<`type`>>

An estimate (in wei) for the fees per gas. EstimateFeesPerGasReturnType

###### Example

```ts theme={null}
import { createPublicClient, http } from 'viem'
import { mainnet } from 'viem/chains'

const client = createPublicClient({
  chain: mainnet,
  transport: http(),
})
const maxPriorityFeePerGas = await client.estimateFeesPerGas()
// { maxFeePerGas: ..., maxPriorityFeePerGas: ... }
```

##### estimateGas()

> **estimateGas**: (`args`) => `Promise`\<`bigint`>

Estimates the gas necessary to complete a transaction without submitting it to the network.

* Docs: [https://viem.sh/docs/actions/public/estimateGas](https://viem.sh/docs/actions/public/estimateGas)
* JSON-RPC Methods: [`eth_estimateGas`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_estimategas)

###### Parameters

| Parameter | Type                              | Description           |
| --------- | --------------------------------- | --------------------- |
| `args`    | `EstimateGasParameters`\<`Chain`> | EstimateGasParameters |

###### Returns

`Promise`\<`bigint`>

The gas estimate (in wei). EstimateGasReturnType

###### Example

```ts theme={null}
import { createPublicClient, http, parseEther } from 'viem'
import { mainnet } from 'viem/chains'

const client = createPublicClient({
  chain: mainnet,
  transport: http(),
})
const gasEstimate = await client.estimateGas({
  account: '0xA0Cf798816D4b9b9866b5330EEa46a18382f251e',
  to: '0x70997970c51812dc3a010c7d01b50e0d17dc79c8',
  value: parseEther('1'),
})
```

##### estimateMaxPriorityFeePerGas()

> **estimateMaxPriorityFeePerGas**: \<`chainOverride`>(`args`?) => `Promise`\<`bigint`>

Returns an estimate for the max priority fee per gas (in wei) for a transaction
to be included in the next block.

* Docs: [https://viem.sh/docs/actions/public/estimateMaxPriorityFeePerGas](https://viem.sh/docs/actions/public/estimateMaxPriorityFeePerGas)

###### Type Parameters

| Type Parameter                                   | Default type |
| ------------------------------------------------ | ------------ |
| `chainOverride` *extends* `Chain` \| `undefined` | `undefined`  |

###### Parameters

| Parameter     | Type                                     |
| ------------- | ---------------------------------------- |
| `args`?       | \{ `chain`: `chainOverride` \| `null`; } |
| `args.chain`? | `chainOverride` \| `null`                |

###### Returns

`Promise`\<`bigint`>

An estimate (in wei) for the max priority fee per gas. EstimateMaxPriorityFeePerGasReturnType

###### Example

```ts theme={null}
import { createPublicClient, http } from 'viem'
import { mainnet } from 'viem/chains'

const client = createPublicClient({
  chain: mainnet,
  transport: http(),
})
const maxPriorityFeePerGas = await client.estimateMaxPriorityFeePerGas()
// 10000000n
```

##### experimental\_blockTag?

> `optional` **experimental\_blockTag**: `BlockTag`

Default block tag to use for RPC requests.

##### extend()

> **extend**: \<`client`>(`fn`) => `Client`\<`HttpTransport`, `Chain`, `undefined`, `PublicRpcSchema`, \{ \[K in string | number | symbol]: client\[K] } & `PublicActions`\<`HttpTransport`, `Chain`>>

###### Type Parameters

| Type Parameter                                                                                                      |
| ------------------------------------------------------------------------------------------------------------------- |
| `client` *extends* `object` & `ExactPartial`\<`ExtendableProtectedActions`\<`HttpTransport`, `Chain`, `undefined`>> |

###### Parameters

| Parameter | Type                   |
| --------- | ---------------------- |
| `fn`      | (`client`) => `client` |

###### Returns

`Client`\<`HttpTransport`, `Chain`, `undefined`, `PublicRpcSchema`, \{ \[K in string | number | symbol]: client\[K] } & `PublicActions`\<`HttpTransport`, `Chain`>>

##### getBalance()

> **getBalance**: (`args`) => `Promise`\<`bigint`>

Returns the balance of an address in wei.

* Docs: [https://viem.sh/docs/actions/public/getBalance](https://viem.sh/docs/actions/public/getBalance)
* JSON-RPC Methods: [`eth_getBalance`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_getbalance)

###### Parameters

| Parameter | Type                   | Description          |
| --------- | ---------------------- | -------------------- |
| `args`    | `GetBalanceParameters` | GetBalanceParameters |

###### Returns

`Promise`\<`bigint`>

The balance of the address in wei. GetBalanceReturnType

###### Remarks

You can convert the balance to ether units with [`formatEther`](https://viem.sh/docs/utilities/formatEther).

```ts theme={null}
const balance = await getBalance(client, {
  address: '0xA0Cf798816D4b9b9866b5330EEa46a18382f251e',
  blockTag: 'safe'
})
const balanceAsEther = formatEther(balance)
// "6.942"
```

###### Example

```ts theme={null}
import { createPublicClient, http } from 'viem'
import { mainnet } from 'viem/chains'

const client = createPublicClient({
  chain: mainnet,
  transport: http(),
})
const balance = await client.getBalance({
  address: '0xA0Cf798816D4b9b9866b5330EEa46a18382f251e',
})
// 10000000000000000000000n (wei)
```

##### getBlobBaseFee()

> **getBlobBaseFee**: () => `Promise`\<`bigint`>

Returns the base fee per blob gas in wei.

* Docs: [https://viem.sh/docs/actions/public/getBlobBaseFee](https://viem.sh/docs/actions/public/getBlobBaseFee)
* JSON-RPC Methods: [`eth_blobBaseFee`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_blobBaseFee)

###### Returns

`Promise`\<`bigint`>

The blob base fee (in wei). GetBlobBaseFeeReturnType

###### Example

```ts theme={null}
import { createPublicClient, http } from 'viem'
import { mainnet } from 'viem/chains'
import { getBlobBaseFee } from 'viem/public'

const client = createPublicClient({
  chain: mainnet,
  transport: http(),
})
const blobBaseFee = await client.getBlobBaseFee()
```

##### getBlock()

> **getBlock**: \<`includeTransactions`, `blockTag`>(`args`?) => `Promise`\<\{ `baseFeePerGas`: `bigint` | `null`; `blobGasUsed`: `bigint`; `difficulty`: `bigint`; `excessBlobGas`: `bigint`; `extraData`: `` `0x${string}` ``; `gasLimit`: `bigint`; `gasUsed`: `bigint`; `hash`: `blockTag` *extends* `"pending"` ? `null` : `` `0x${string}` ``; `logsBloom`: `blockTag` *extends* `"pending"` ? `null` : `` `0x${string}` ``; `miner`: `` `0x${string}` ``; `mixHash`: `` `0x${string}` ``; `nonce`: `blockTag` *extends* `"pending"` ? `null` : `` `0x${string}` ``; `number`: `blockTag` *extends* `"pending"` ? `null` : `bigint`; `parentBeaconBlockRoot`: `` `0x${string}` ``; `parentHash`: `` `0x${string}` ``; `receiptsRoot`: `` `0x${string}` ``; `sealFields`: `` `0x${string}` ``\[]; `sha3Uncles`: `` `0x${string}` ``; `size`: `bigint`; `stateRoot`: `` `0x${string}` ``; `timestamp`: `bigint`; `totalDifficulty`: `bigint` | `null`; `transactions`: `includeTransactions` *extends* `true` ? (\{ `accessList`: `undefined`; `authorizationList`: `undefined`; `blobVersionedHashes`: `undefined`; `blockHash`: `blockTag` *extends* `"pending"` ? `true` : `false` *extends* `true` ? `null` : `` `0x${string}` ``; `blockNumber`: `blockTag` *extends* `"pending"` ? `true` : `false` *extends* `true` ? `null` : `bigint`; `chainId`: `number`; `from`: `` `0x${string}` ``; `gas`: `bigint`; `gasPrice`: `bigint`; `hash`: `` `0x${string}` ``; `input`: `` `0x${string}` ``; `maxFeePerBlobGas`: `undefined`; `maxFeePerGas`: `undefined`; `maxPriorityFeePerGas`: `undefined`; `nonce`: `number`; `r`: `` `0x${string}` ``; `s`: `` `0x${string}` ``; `to`: `` `0x${string}` `` | `null`; `transactionIndex`: `blockTag` *extends* `"pending"` ? `true` : `false` *extends* `true` ? `null` : `number`; `type`: `"legacy"`; `typeHex`: `` `0x${string}` `` | `null`; `v`: `bigint`; `value`: `bigint`; `yParity`: `undefined`; } | \{ `accessList`: `AccessList`; `authorizationList`: `undefined`; `blobVersionedHashes`: `undefined`; `blockHash`: `blockTag` *extends* `"pending"` ? `true` : `false` *extends* `true` ? `null` : `` `0x${string}` ``; `blockNumber`: `blockTag` *extends* `"pending"` ? `true` : `false` *extends* `true` ? `null` : `bigint`; `chainId`: `number`; `from`: `` `0x${string}` ``; `gas`: `bigint`; `gasPrice`: `bigint`; `hash`: `` `0x${string}` ``; `input`: `` `0x${string}` ``; `maxFeePerBlobGas`: `undefined`; `maxFeePerGas`: `undefined`; `maxPriorityFeePerGas`: `undefined`; `nonce`: `number`; `r`: `` `0x${string}` ``; `s`: `` `0x${string}` ``; `to`: `` `0x${string}` `` | `null`; `transactionIndex`: `blockTag` *extends* `"pending"` ? `true` : `false` *extends* `true` ? `null` : `number`; `type`: `"eip2930"`; `typeHex`: `` `0x${string}` `` | `null`; `v`: `bigint`; `value`: `bigint`; `yParity`: `number`; } | \{ `accessList`: `AccessList`; `authorizationList`: `undefined`; `blobVersionedHashes`: `undefined`; `blockHash`: `blockTag` *extends* `"pending"` ? `true` : `false` *extends* `true` ? `null` : `` `0x${string}` ``; `blockNumber`: `blockTag` *extends* `"pending"` ? `true` : `false` *extends* `true` ? `null` : `bigint`; `chainId`: `number`; `from`: `` `0x${string}` ``; `gas`: `bigint`; `gasPrice`: `undefined`; `hash`: `` `0x${string}` ``; `input`: `` `0x${string}` ``; `maxFeePerBlobGas`: `undefined`; `maxFeePerGas`: `bigint`; `maxPriorityFeePerGas`: `bigint`; `nonce`: `number`; `r`: `` `0x${string}` ``; `s`: `` `0x${string}` ``; `to`: `` `0x${string}` `` | `null`; `transactionIndex`: `blockTag` *extends* `"pending"` ? `true` : `false` *extends* `true` ? `null` : `number`; `type`: `"eip1559"`; `typeHex`: `` `0x${string}` `` | `null`; `v`: `bigint`; `value`: `bigint`; `yParity`: `number`; } | \{ `accessList`: `AccessList`; `authorizationList`: `undefined`; `blobVersionedHashes`: readonly `` `0x${string}` ``\[]; `blockHash`: `blockTag` *extends* `"pending"` ? `true` : `false` *extends* `true` ? `null` : `` `0x${string}` ``; `blockNumber`: `blockTag` *extends* `"pending"` ? `true` : `false` *extends* `true` ? `null` : `bigint`; `chainId`: `number`; `from`: `` `0x${string}` ``; `gas`: `bigint`; `gasPrice`: `undefined`; `hash`: `` `0x${string}` ``; `input`: `` `0x${string}` ``; `maxFeePerBlobGas`: `bigint`; `maxFeePerGas`: `bigint`; `maxPriorityFeePerGas`: `bigint`; `nonce`: `number`; `r`: `` `0x${string}` ``; `s`: `` `0x${string}` ``; `to`: `` `0x${string}` `` | `null`; `transactionIndex`: `blockTag` *extends* `"pending"` ? `true` : `false` *extends* `true` ? `null` : `number`; `type`: `"eip4844"`; `typeHex`: `` `0x${string}` `` | `null`; `v`: `bigint`; `value`: `bigint`; `yParity`: `number`; } | \{ `accessList`: `AccessList`; `authorizationList`: `SignedAuthorizationList`; `blobVersionedHashes`: `undefined`; `blockHash`: `blockTag` *extends* `"pending"` ? `true` : `false` *extends* `true` ? `null` : `` `0x${string}` ``; `blockNumber`: `blockTag` *extends* `"pending"` ? `true` : `false` *extends* `true` ? `null` : `bigint`; `chainId`: `number`; `from`: `` `0x${string}` ``; `gas`: `bigint`; `gasPrice`: `undefined`; `hash`: `` `0x${string}` ``; `input`: `` `0x${string}` ``; `maxFeePerBlobGas`: `undefined`; `maxFeePerGas`: `bigint`; `maxPriorityFeePerGas`: `bigint`; `nonce`: `number`; `r`: `` `0x${string}` ``; `s`: `` `0x${string}` ``; `to`: `` `0x${string}` `` | `null`; `transactionIndex`: `blockTag` *extends* `"pending"` ? `true` : `false` *extends* `true` ? `null` : `number`; `type`: `"eip7702"`; `typeHex`: `` `0x${string}` `` | `null`; `v`: `bigint`; `value`: `bigint`; `yParity`: `number`; })\[] : `` `0x${string}` ``\[]; `transactionsRoot`: `` `0x${string}` ``; `uncles`: `` `0x${string}` ``\[]; `withdrawals`: `Withdrawal`\[]; `withdrawalsRoot`: `` `0x${string}` ``; }>

Returns information about a block at a block number, hash, or tag.

* Docs: [https://viem.sh/docs/actions/public/getBlock](https://viem.sh/docs/actions/public/getBlock)
* Examples: [https://stackblitz.com/github/wevm/viem/tree/main/examples/blocks\_fetching-blocks](https://stackblitz.com/github/wevm/viem/tree/main/examples/blocks_fetching-blocks)
* JSON-RPC Methods:
  * Calls [`eth_getBlockByNumber`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_getblockbynumber) for `blockNumber` & `blockTag`.
  * Calls [`eth_getBlockByHash`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_getblockbyhash) for `blockHash`.

###### Type Parameters

| Type Parameter                            | Default type |
| ----------------------------------------- | ------------ |
| `includeTransactions` *extends* `boolean` | `false`      |
| `blockTag` *extends* `BlockTag`           | `"latest"`   |

###### Parameters

| Parameter | Type                                                     | Description        |
| --------- | -------------------------------------------------------- | ------------------ |
| `args`?   | `GetBlockParameters`\<`includeTransactions`, `blockTag`> | GetBlockParameters |

###### Returns

`Promise`\<\{ `baseFeePerGas`: `bigint` | `null`; `blobGasUsed`: `bigint`; `difficulty`: `bigint`; `excessBlobGas`: `bigint`; `extraData`: `` `0x${string}` ``; `gasLimit`: `bigint`; `gasUsed`: `bigint`; `hash`: `blockTag` *extends* `"pending"` ? `null` : `` `0x${string}` ``; `logsBloom`: `blockTag` *extends* `"pending"` ? `null` : `` `0x${string}` ``; `miner`: `` `0x${string}` ``; `mixHash`: `` `0x${string}` ``; `nonce`: `blockTag` *extends* `"pending"` ? `null` : `` `0x${string}` ``; `number`: `blockTag` *extends* `"pending"` ? `null` : `bigint`; `parentBeaconBlockRoot`: `` `0x${string}` ``; `parentHash`: `` `0x${string}` ``; `receiptsRoot`: `` `0x${string}` ``; `sealFields`: `` `0x${string}` ``\[]; `sha3Uncles`: `` `0x${string}` ``; `size`: `bigint`; `stateRoot`: `` `0x${string}` ``; `timestamp`: `bigint`; `totalDifficulty`: `bigint` | `null`; `transactions`: `includeTransactions` *extends* `true` ? (\{ `accessList`: `undefined`; `authorizationList`: `undefined`; `blobVersionedHashes`: `undefined`; `blockHash`: `blockTag` *extends* `"pending"` ? `true` : `false` *extends* `true` ? `null` : `` `0x${string}` ``; `blockNumber`: `blockTag` *extends* `"pending"` ? `true` : `false` *extends* `true` ? `null` : `bigint`; `chainId`: `number`; `from`: `` `0x${string}` ``; `gas`: `bigint`; `gasPrice`: `bigint`; `hash`: `` `0x${string}` ``; `input`: `` `0x${string}` ``; `maxFeePerBlobGas`: `undefined`; `maxFeePerGas`: `undefined`; `maxPriorityFeePerGas`: `undefined`; `nonce`: `number`; `r`: `` `0x${string}` ``; `s`: `` `0x${string}` ``; `to`: `` `0x${string}` `` | `null`; `transactionIndex`: `blockTag` *extends* `"pending"` ? `true` : `false` *extends* `true` ? `null` : `number`; `type`: `"legacy"`; `typeHex`: `` `0x${string}` `` | `null`; `v`: `bigint`; `value`: `bigint`; `yParity`: `undefined`; } | \{ `accessList`: `AccessList`; `authorizationList`: `undefined`; `blobVersionedHashes`: `undefined`; `blockHash`: `blockTag` *extends* `"pending"` ? `true` : `false` *extends* `true` ? `null` : `` `0x${string}` ``; `blockNumber`: `blockTag` *extends* `"pending"` ? `true` : `false` *extends* `true` ? `null` : `bigint`; `chainId`: `number`; `from`: `` `0x${string}` ``; `gas`: `bigint`; `gasPrice`: `bigint`; `hash`: `` `0x${string}` ``; `input`: `` `0x${string}` ``; `maxFeePerBlobGas`: `undefined`; `maxFeePerGas`: `undefined`; `maxPriorityFeePerGas`: `undefined`; `nonce`: `number`; `r`: `` `0x${string}` ``; `s`: `` `0x${string}` ``; `to`: `` `0x${string}` `` | `null`; `transactionIndex`: `blockTag` *extends* `"pending"` ? `true` : `false` *extends* `true` ? `null` : `number`; `type`: `"eip2930"`; `typeHex`: `` `0x${string}` `` | `null`; `v`: `bigint`; `value`: `bigint`; `yParity`: `number`; } | \{ `accessList`: `AccessList`; `authorizationList`: `undefined`; `blobVersionedHashes`: `undefined`; `blockHash`: `blockTag` *extends* `"pending"` ? `true` : `false` *extends* `true` ? `null` : `` `0x${string}` ``; `blockNumber`: `blockTag` *extends* `"pending"` ? `true` : `false` *extends* `true` ? `null` : `bigint`; `chainId`: `number`; `from`: `` `0x${string}` ``; `gas`: `bigint`; `gasPrice`: `undefined`; `hash`: `` `0x${string}` ``; `input`: `` `0x${string}` ``; `maxFeePerBlobGas`: `undefined`; `maxFeePerGas`: `bigint`; `maxPriorityFeePerGas`: `bigint`; `nonce`: `number`; `r`: `` `0x${string}` ``; `s`: `` `0x${string}` ``; `to`: `` `0x${string}` `` | `null`; `transactionIndex`: `blockTag` *extends* `"pending"` ? `true` : `false` *extends* `true` ? `null` : `number`; `type`: `"eip1559"`; `typeHex`: `` `0x${string}` `` | `null`; `v`: `bigint`; `value`: `bigint`; `yParity`: `number`; } | \{ `accessList`: `AccessList`; `authorizationList`: `undefined`; `blobVersionedHashes`: readonly `` `0x${string}` ``\[]; `blockHash`: `blockTag` *extends* `"pending"` ? `true` : `false` *extends* `true` ? `null` : `` `0x${string}` ``; `blockNumber`: `blockTag` *extends* `"pending"` ? `true` : `false` *extends* `true` ? `null` : `bigint`; `chainId`: `number`; `from`: `` `0x${string}` ``; `gas`: `bigint`; `gasPrice`: `undefined`; `hash`: `` `0x${string}` ``; `input`: `` `0x${string}` ``; `maxFeePerBlobGas`: `bigint`; `maxFeePerGas`: `bigint`; `maxPriorityFeePerGas`: `bigint`; `nonce`: `number`; `r`: `` `0x${string}` ``; `s`: `` `0x${string}` ``; `to`: `` `0x${string}` `` | `null`; `transactionIndex`: `blockTag` *extends* `"pending"` ? `true` : `false` *extends* `true` ? `null` : `number`; `type`: `"eip4844"`; `typeHex`: `` `0x${string}` `` | `null`; `v`: `bigint`; `value`: `bigint`; `yParity`: `number`; } | \{ `accessList`: `AccessList`; `authorizationList`: `SignedAuthorizationList`; `blobVersionedHashes`: `undefined`; `blockHash`: `blockTag` *extends* `"pending"` ? `true` : `false` *extends* `true` ? `null` : `` `0x${string}` ``; `blockNumber`: `blockTag` *extends* `"pending"` ? `true` : `false` *extends* `true` ? `null` : `bigint`; `chainId`: `number`; `from`: `` `0x${string}` ``; `gas`: `bigint`; `gasPrice`: `undefined`; `hash`: `` `0x${string}` ``; `input`: `` `0x${string}` ``; `maxFeePerBlobGas`: `undefined`; `maxFeePerGas`: `bigint`; `maxPriorityFeePerGas`: `bigint`; `nonce`: `number`; `r`: `` `0x${string}` ``; `s`: `` `0x${string}` ``; `to`: `` `0x${string}` `` | `null`; `transactionIndex`: `blockTag` *extends* `"pending"` ? `true` : `false` *extends* `true` ? `null` : `number`; `type`: `"eip7702"`; `typeHex`: `` `0x${string}` `` | `null`; `v`: `bigint`; `value`: `bigint`; `yParity`: `number`; })\[] : `` `0x${string}` ``\[]; `transactionsRoot`: `` `0x${string}` ``; `uncles`: `` `0x${string}` ``\[]; `withdrawals`: `Withdrawal`\[]; `withdrawalsRoot`: `` `0x${string}` ``; }>

Information about the block. GetBlockReturnType

###### Example

```ts theme={null}
import { createPublicClient, http } from 'viem'
import { mainnet } from 'viem/chains'

const client = createPublicClient({
  chain: mainnet,
  transport: http(),
})
const block = await client.getBlock()
```

##### getBlockNumber()

> **getBlockNumber**: (`args`?) => `Promise`\<`bigint`>

Returns the number of the most recent block seen.

* Docs: [https://viem.sh/docs/actions/public/getBlockNumber](https://viem.sh/docs/actions/public/getBlockNumber)
* Examples: [https://stackblitz.com/github/wevm/viem/tree/main/examples/blocks\_fetching-blocks](https://stackblitz.com/github/wevm/viem/tree/main/examples/blocks_fetching-blocks)
* JSON-RPC Methods: [`eth_blockNumber`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_blocknumber)

###### Parameters

| Parameter | Type                       | Description              |
| --------- | -------------------------- | ------------------------ |
| `args`?   | `GetBlockNumberParameters` | GetBlockNumberParameters |

###### Returns

`Promise`\<`bigint`>

The number of the block. GetBlockNumberReturnType

###### Example

```ts theme={null}
import { createPublicClient, http } from 'viem'
import { mainnet } from 'viem/chains'

const client = createPublicClient({
  chain: mainnet,
  transport: http(),
})
const blockNumber = await client.getBlockNumber()
// 69420n
```

##### getBlockTransactionCount()

> **getBlockTransactionCount**: (`args`?) => `Promise`\<`number`>

Returns the number of Transactions at a block number, hash, or tag.

* Docs: [https://viem.sh/docs/actions/public/getBlockTransactionCount](https://viem.sh/docs/actions/public/getBlockTransactionCount)
* JSON-RPC Methods:
  * Calls [`eth_getBlockTransactionCountByNumber`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_getblocktransactioncountbynumber) for `blockNumber` & `blockTag`.
  * Calls [`eth_getBlockTransactionCountByHash`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_getblocktransactioncountbyhash) for `blockHash`.

###### Parameters

| Parameter | Type                                 | Description                        |
| --------- | ------------------------------------ | ---------------------------------- |
| `args`?   | `GetBlockTransactionCountParameters` | GetBlockTransactionCountParameters |

###### Returns

`Promise`\<`number`>

The block transaction count. GetBlockTransactionCountReturnType

###### Example

```ts theme={null}
import { createPublicClient, http } from 'viem'
import { mainnet } from 'viem/chains'

const client = createPublicClient({
  chain: mainnet,
  transport: http(),
})
const count = await client.getBlockTransactionCount()
```

##### ~~getBytecode()~~

> **getBytecode**: (`args`) => `Promise`\<`GetCodeReturnType`>

###### Parameters

| Parameter | Type                |
| --------- | ------------------- |
| `args`    | `GetCodeParameters` |

###### Returns

`Promise`\<`GetCodeReturnType`>

###### Deprecated

Use `getCode` instead.

##### getChainId()

> **getChainId**: () => `Promise`\<`number`>

Returns the chain ID associated with the current network.

* Docs: [https://viem.sh/docs/actions/public/getChainId](https://viem.sh/docs/actions/public/getChainId)
* JSON-RPC Methods: [`eth_chainId`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_chainid)

###### Returns

`Promise`\<`number`>

The current chain ID. GetChainIdReturnType

###### Example

```ts theme={null}
import { createPublicClient, http } from 'viem'
import { mainnet } from 'viem/chains'

const client = createPublicClient({
  chain: mainnet,
  transport: http(),
})
const chainId = await client.getChainId()
// 1
```

##### getCode()

> **getCode**: (`args`) => `Promise`\<`GetCodeReturnType`>

Retrieves the bytecode at an address.

* Docs: [https://viem.sh/docs/contract/getCode](https://viem.sh/docs/contract/getCode)
* JSON-RPC Methods: [`eth_getCode`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_getcode)

###### Parameters

| Parameter | Type                | Description           |
| --------- | ------------------- | --------------------- |
| `args`    | `GetCodeParameters` | GetBytecodeParameters |

###### Returns

`Promise`\<`GetCodeReturnType`>

The contract's bytecode. GetBytecodeReturnType

###### Example

```ts theme={null}
import { createPublicClient, http } from 'viem'
import { mainnet } from 'viem/chains'

const client = createPublicClient({
  chain: mainnet,
  transport: http(),
})
const code = await client.getCode({
  address: '0xFBA3912Ca04dd458c843e2EE08967fC04f3579c2',
})
```

##### getContractEvents()

> **getContractEvents**: \<`abi`, `eventName`, `strict`, `fromBlock`, `toBlock`>(`args`) => `Promise`\<`GetContractEventsReturnType`\<`abi`, `eventName`, `strict`, `fromBlock`, `toBlock`>>

Returns a list of event logs emitted by a contract.

* Docs: [https://viem.sh/docs/actions/public/getContractEvents](https://viem.sh/docs/actions/public/getContractEvents)
* JSON-RPC Methods: [`eth_getLogs`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_getlogs)

###### Type Parameters

| Type Parameter                                              | Default type |
| ----------------------------------------------------------- | ------------ |
| `abi` *extends* readonly `unknown`\[] \| `Abi`              | -            |
| `eventName` *extends* `string` \| `undefined`               | `undefined`  |
| `strict` *extends* `boolean` \| `undefined`                 | `undefined`  |
| `fromBlock` *extends* `bigint` \| `BlockTag` \| `undefined` | `undefined`  |
| `toBlock` *extends* `bigint` \| `BlockTag` \| `undefined`   | `undefined`  |

###### Parameters

| Parameter | Type                                                                                 |
| --------- | ------------------------------------------------------------------------------------ |
| `args`    | `GetContractEventsParameters`\<`abi`, `eventName`, `strict`, `fromBlock`, `toBlock`> |

###### Returns

`Promise`\<`GetContractEventsReturnType`\<`abi`, `eventName`, `strict`, `fromBlock`, `toBlock`>>

A list of event logs. GetContractEventsReturnType

###### Example

```ts theme={null}
import { createPublicClient, http } from 'viem'
import { mainnet } from 'viem/chains'
import { wagmiAbi } from './abi'

const client = createPublicClient({
  chain: mainnet,
  transport: http(),
})
const logs = await client.getContractEvents(client, {
 address: '0xFBA3912Ca04dd458c843e2EE08967fC04f3579c2',
 abi: wagmiAbi,
 eventName: 'Transfer'
})
```

##### getEip712Domain()

> **getEip712Domain**: (`args`) => `Promise`\<`GetEip712DomainReturnType`>

Reads the EIP-712 domain from a contract, based on the ERC-5267 specification.

###### Parameters

| Parameter | Type                        |
| --------- | --------------------------- |
| `args`    | `GetEip712DomainParameters` |

###### Returns

`Promise`\<`GetEip712DomainReturnType`>

The EIP-712 domain, fields, and extensions. GetEip712DomainReturnType

###### Example

```ts theme={null}
import { createPublicClient, http } from 'viem'
import { mainnet } from 'viem/chains'

const client = createPublicClient({
  chain: mainnet,
  transport: http(),
})

const domain = await client.getEip712Domain({
  address: '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48',
})
// {
//   domain: {
//     name: 'ExampleContract',
//     version: '1',
//     chainId: 1,
//     verifyingContract: '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48',
//   },
//   fields: '0x0f',
//   extensions: [],
// }
```

##### getEnsAddress()

> **getEnsAddress**: (`args`) => `Promise`\<`GetEnsAddressReturnType`>

Gets address for ENS name.

* Docs: [https://viem.sh/docs/ens/actions/getEnsAddress](https://viem.sh/docs/ens/actions/getEnsAddress)
* Examples: [https://stackblitz.com/github/wevm/viem/tree/main/examples/ens](https://stackblitz.com/github/wevm/viem/tree/main/examples/ens)

###### Parameters

| Parameter                        | Type                                                                                                                                                                                            | Description                                                                         |
| -------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------- |
| `args`                           | \{ `blockNumber`: `bigint`; `blockTag`: `BlockTag`; `coinType`: `number`; `gatewayUrls`: `string`\[]; `name`: `string`; `strict`: `boolean`; `universalResolverAddress`: `` `0x${string}` ``; } | GetEnsAddressParameters                                                             |
| `args.blockNumber`?              | `bigint`                                                                                                                                                                                        | The balance of the account at a block number.                                       |
| `args.blockTag`?                 | `BlockTag`                                                                                                                                                                                      | The balance of the account at a block tag. **Default** `'latest'`                   |
| `args.coinType`?                 | `number`                                                                                                                                                                                        | ENSIP-9 compliant coinType used to resolve addresses for other chains               |
| `args.gatewayUrls`?              | `string`\[]                                                                                                                                                                                     | Universal Resolver gateway URLs to use for resolving CCIP-read requests.            |
| `args.name`                      | `string`                                                                                                                                                                                        | Name to get the address for.                                                        |
| `args.strict`?                   | `boolean`                                                                                                                                                                                       | Whether or not to throw errors propagated from the ENS Universal Resolver Contract. |
| `args.universalResolverAddress`? | `` `0x${string}` ``                                                                                                                                                                             | Address of ENS Universal Resolver Contract.                                         |

###### Returns

`Promise`\<`GetEnsAddressReturnType`>

Address for ENS name or `null` if not found. GetEnsAddressReturnType

###### Remarks

Calls `resolve(bytes, bytes)` on ENS Universal Resolver Contract.

Since ENS names prohibit certain forbidden characters (e.g. underscore) and have other validation rules, you likely want to [normalize ENS names](https://docs.ens.domains/contract-api-reference/name-processing#normalising-names) with [UTS-46 normalization](https://unicode.org/reports/tr46) before passing them to `getEnsAddress`. You can use the built-in [`normalize`](https://viem.sh/docs/ens/utilities/normalize) function for this.

###### Example

```ts theme={null}
import { createPublicClient, http } from 'viem'
import { mainnet } from 'viem/chains'
import { normalize } from 'viem/ens'

const client = createPublicClient({
  chain: mainnet,
  transport: http(),
})
const ensAddress = await client.getEnsAddress({
  name: normalize('wevm.eth'),
})
// '0xd2135CfB216b74109775236E36d4b433F1DF507B'
```

##### getEnsAvatar()

> **getEnsAvatar**: (`args`) => `Promise`\<`GetEnsAvatarReturnType`>

Gets the avatar of an ENS name.

* Docs: [https://viem.sh/docs/ens/actions/getEnsAvatar](https://viem.sh/docs/ens/actions/getEnsAvatar)
* Examples: [https://stackblitz.com/github/wevm/viem/tree/main/examples/ens](https://stackblitz.com/github/wevm/viem/tree/main/examples/ens)

###### Parameters

| Parameter                        | Type                                                                                                                                                                                                              | Description                                                                         |
| -------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------- |
| `args`                           | \{ `assetGatewayUrls`: `AssetGatewayUrls`; `blockNumber`: `bigint`; `blockTag`: `BlockTag`; `gatewayUrls`: `string`\[]; `name`: `string`; `strict`: `boolean`; `universalResolverAddress`: `` `0x${string}` ``; } | GetEnsAvatarParameters                                                              |
| `args.assetGatewayUrls`?         | `AssetGatewayUrls`                                                                                                                                                                                                | Gateway urls to resolve IPFS and/or Arweave assets.                                 |
| `args.blockNumber`?              | `bigint`                                                                                                                                                                                                          | The balance of the account at a block number.                                       |
| `args.blockTag`?                 | `BlockTag`                                                                                                                                                                                                        | The balance of the account at a block tag. **Default** `'latest'`                   |
| `args.gatewayUrls`?              | `string`\[]                                                                                                                                                                                                       | Universal Resolver gateway URLs to use for resolving CCIP-read requests.            |
| `args.name`                      | `string`                                                                                                                                                                                                          | ENS name to get Text for.                                                           |
| `args.strict`?                   | `boolean`                                                                                                                                                                                                         | Whether or not to throw errors propagated from the ENS Universal Resolver Contract. |
| `args.universalResolverAddress`? | `` `0x${string}` ``                                                                                                                                                                                               | Address of ENS Universal Resolver Contract.                                         |

###### Returns

`Promise`\<`GetEnsAvatarReturnType`>

Avatar URI or `null` if not found. GetEnsAvatarReturnType

###### Remarks

Calls [`getEnsText`](https://viem.sh/docs/ens/actions/getEnsText) with `key` set to `'avatar'`.

Since ENS names prohibit certain forbidden characters (e.g. underscore) and have other validation rules, you likely want to [normalize ENS names](https://docs.ens.domains/contract-api-reference/name-processing#normalising-names) with [UTS-46 normalization](https://unicode.org/reports/tr46) before passing them to `getEnsAddress`. You can use the built-in [`normalize`](https://viem.sh/docs/ens/utilities/normalize) function for this.

###### Example

```ts theme={null}
import { createPublicClient, http } from 'viem'
import { mainnet } from 'viem/chains'
import { normalize } from 'viem/ens'

const client = createPublicClient({
  chain: mainnet,
  transport: http(),
})
const ensAvatar = await client.getEnsAvatar({
  name: normalize('wevm.eth'),
})
// 'https://ipfs.io/ipfs/Qma8mnp6xV3J2cRNf3mTth5C8nV11CAnceVinc3y8jSbio'
```

##### getEnsName()

> **getEnsName**: (`args`) => `Promise`\<`GetEnsNameReturnType`>

Gets primary name for specified address.

* Docs: [https://viem.sh/docs/ens/actions/getEnsName](https://viem.sh/docs/ens/actions/getEnsName)
* Examples: [https://stackblitz.com/github/wevm/viem/tree/main/examples/ens](https://stackblitz.com/github/wevm/viem/tree/main/examples/ens)

###### Parameters

| Parameter                        | Type                                                                                                                                                                                    | Description                                                                         |
| -------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------- |
| `args`                           | \{ `address`: `` `0x${string}` ``; `blockNumber`: `bigint`; `blockTag`: `BlockTag`; `gatewayUrls`: `string`\[]; `strict`: `boolean`; `universalResolverAddress`: `` `0x${string}` ``; } | GetEnsNameParameters                                                                |
| `args.address`                   | `` `0x${string}` ``                                                                                                                                                                     | Address to get ENS name for.                                                        |
| `args.blockNumber`?              | `bigint`                                                                                                                                                                                | The balance of the account at a block number.                                       |
| `args.blockTag`?                 | `BlockTag`                                                                                                                                                                              | The balance of the account at a block tag. **Default** `'latest'`                   |
| `args.gatewayUrls`?              | `string`\[]                                                                                                                                                                             | Universal Resolver gateway URLs to use for resolving CCIP-read requests.            |
| `args.strict`?                   | `boolean`                                                                                                                                                                               | Whether or not to throw errors propagated from the ENS Universal Resolver Contract. |
| `args.universalResolverAddress`? | `` `0x${string}` ``                                                                                                                                                                     | Address of ENS Universal Resolver Contract.                                         |

###### Returns

`Promise`\<`GetEnsNameReturnType`>

Name or `null` if not found. GetEnsNameReturnType

###### Remarks

Calls `reverse(bytes)` on ENS Universal Resolver Contract to "reverse resolve" the address to the primary ENS name.

###### Example

```ts theme={null}
import { createPublicClient, http } from 'viem'
import { mainnet } from 'viem/chains'

const client = createPublicClient({
  chain: mainnet,
  transport: http(),
})
const ensName = await client.getEnsName({
  address: '0xd2135CfB216b74109775236E36d4b433F1DF507B',
})
// 'wevm.eth'
```

##### getEnsResolver()

> **getEnsResolver**: (`args`) => `Promise`\<`` `0x${string}` ``>

Gets resolver for ENS name.

* Docs: [https://viem.sh/docs/ens/actions/getEnsResolver](https://viem.sh/docs/ens/actions/getEnsResolver)
* Examples: [https://stackblitz.com/github/wevm/viem/tree/main/examples/ens](https://stackblitz.com/github/wevm/viem/tree/main/examples/ens)

###### Parameters

| Parameter                        | Type                                                                                                                     | Description                                                       |
| -------------------------------- | ------------------------------------------------------------------------------------------------------------------------ | ----------------------------------------------------------------- |
| `args`                           | \{ `blockNumber`: `bigint`; `blockTag`: `BlockTag`; `name`: `string`; `universalResolverAddress`: `` `0x${string}` ``; } | GetEnsResolverParameters                                          |
| `args.blockNumber`?              | `bigint`                                                                                                                 | The balance of the account at a block number.                     |
| `args.blockTag`?                 | `BlockTag`                                                                                                               | The balance of the account at a block tag. **Default** `'latest'` |
| `args.name`                      | `string`                                                                                                                 | Name to get the address for.                                      |
| `args.universalResolverAddress`? | `` `0x${string}` ``                                                                                                      | Address of ENS Universal Resolver Contract.                       |

###### Returns

`Promise`\<`` `0x${string}` ``>

Address for ENS resolver. GetEnsResolverReturnType

###### Remarks

Calls `findResolver(bytes)` on ENS Universal Resolver Contract to retrieve the resolver of an ENS name.

Since ENS names prohibit certain forbidden characters (e.g. underscore) and have other validation rules, you likely want to [normalize ENS names](https://docs.ens.domains/contract-api-reference/name-processing#normalising-names) with [UTS-46 normalization](https://unicode.org/reports/tr46) before passing them to `getEnsAddress`. You can use the built-in [`normalize`](https://viem.sh/docs/ens/utilities/normalize) function for this.

###### Example

```ts theme={null}
import { createPublicClient, http } from 'viem'
import { mainnet } from 'viem/chains'
import { normalize } from 'viem/ens'

const client = createPublicClient({
  chain: mainnet,
  transport: http(),
})
const resolverAddress = await client.getEnsResolver({
  name: normalize('wevm.eth'),
})
// '0x4976fb03C32e5B8cfe2b6cCB31c09Ba78EBaBa41'
```

##### getEnsText()

> **getEnsText**: (`args`) => `Promise`\<`GetEnsTextReturnType`>

Gets a text record for specified ENS name.

* Docs: [https://viem.sh/docs/ens/actions/getEnsResolver](https://viem.sh/docs/ens/actions/getEnsResolver)
* Examples: [https://stackblitz.com/github/wevm/viem/tree/main/examples/ens](https://stackblitz.com/github/wevm/viem/tree/main/examples/ens)

###### Parameters

| Parameter                        | Type                                                                                                                                                                                       | Description                                                                         |
| -------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ----------------------------------------------------------------------------------- |
| `args`                           | \{ `blockNumber`: `bigint`; `blockTag`: `BlockTag`; `gatewayUrls`: `string`\[]; `key`: `string`; `name`: `string`; `strict`: `boolean`; `universalResolverAddress`: `` `0x${string}` ``; } | GetEnsTextParameters                                                                |
| `args.blockNumber`?              | `bigint`                                                                                                                                                                                   | The balance of the account at a block number.                                       |
| `args.blockTag`?                 | `BlockTag`                                                                                                                                                                                 | The balance of the account at a block tag. **Default** `'latest'`                   |
| `args.gatewayUrls`?              | `string`\[]                                                                                                                                                                                | Universal Resolver gateway URLs to use for resolving CCIP-read requests.            |
| `args.key`                       | `string`                                                                                                                                                                                   | Text record to retrieve.                                                            |
| `args.name`                      | `string`                                                                                                                                                                                   | ENS name to get Text for.                                                           |
| `args.strict`?                   | `boolean`                                                                                                                                                                                  | Whether or not to throw errors propagated from the ENS Universal Resolver Contract. |
| `args.universalResolverAddress`? | `` `0x${string}` ``                                                                                                                                                                        | Address of ENS Universal Resolver Contract.                                         |

###### Returns

`Promise`\<`GetEnsTextReturnType`>

Address for ENS resolver. GetEnsTextReturnType

###### Remarks

Calls `resolve(bytes, bytes)` on ENS Universal Resolver Contract.

Since ENS names prohibit certain forbidden characters (e.g. underscore) and have other validation rules, you likely want to [normalize ENS names](https://docs.ens.domains/contract-api-reference/name-processing#normalising-names) with [UTS-46 normalization](https://unicode.org/reports/tr46) before passing them to `getEnsAddress`. You can use the built-in [`normalize`](https://viem.sh/docs/ens/utilities/normalize) function for this.

###### Example

```ts theme={null}
import { createPublicClient, http } from 'viem'
import { mainnet } from 'viem/chains'
import { normalize } from 'viem/ens'

const client = createPublicClient({
  chain: mainnet,
  transport: http(),
})
const twitterRecord = await client.getEnsText({
  name: normalize('wevm.eth'),
  key: 'com.twitter',
})
// 'wevm_dev'
```

##### getFeeHistory()

> **getFeeHistory**: (`args`) => `Promise`\<`GetFeeHistoryReturnType`>

Returns a collection of historical gas information.

* Docs: [https://viem.sh/docs/actions/public/getFeeHistory](https://viem.sh/docs/actions/public/getFeeHistory)
* JSON-RPC Methods: [`eth_feeHistory`](https://docs.alchemy.com/reference/eth-feehistory)

###### Parameters

| Parameter | Type                      | Description             |
| --------- | ------------------------- | ----------------------- |
| `args`    | `GetFeeHistoryParameters` | GetFeeHistoryParameters |

###### Returns

`Promise`\<`GetFeeHistoryReturnType`>

The gas estimate (in wei). GetFeeHistoryReturnType

###### Example

```ts theme={null}
import { createPublicClient, http } from 'viem'
import { mainnet } from 'viem/chains'

const client = createPublicClient({
  chain: mainnet,
  transport: http(),
})
const feeHistory = await client.getFeeHistory({
  blockCount: 4,
  rewardPercentiles: [25, 75],
})
```

##### getFilterChanges()

> **getFilterChanges**: \<`filterType`, `abi`, `eventName`, `strict`, `fromBlock`, `toBlock`>(`args`) => `Promise`\<`GetFilterChangesReturnType`\<`filterType`, `abi`, `eventName`, `strict`, `fromBlock`, `toBlock`>>

Returns a list of logs or hashes based on a [Filter](https://viem.sh/docs/glossary/terms#filter) since the last time it was called.

* Docs: [https://viem.sh/docs/actions/public/getFilterChanges](https://viem.sh/docs/actions/public/getFilterChanges)
* JSON-RPC Methods: [`eth_getFilterChanges`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_getfilterchanges)

###### Type Parameters

| Type Parameter                                                | Default type |
| ------------------------------------------------------------- | ------------ |
| `filterType` *extends* `FilterType`                           | -            |
| `abi` *extends* readonly `unknown`\[] \| `Abi` \| `undefined` | -            |
| `eventName` *extends* `string` \| `undefined`                 | -            |
| `strict` *extends* `boolean` \| `undefined`                   | `undefined`  |
| `fromBlock` *extends* `bigint` \| `BlockTag` \| `undefined`   | `undefined`  |
| `toBlock` *extends* `bigint` \| `BlockTag` \| `undefined`     | `undefined`  |

###### Parameters

| Parameter | Type                                                                                              | Description                |
| --------- | ------------------------------------------------------------------------------------------------- | -------------------------- |
| `args`    | `GetFilterChangesParameters`\<`filterType`, `abi`, `eventName`, `strict`, `fromBlock`, `toBlock`> | GetFilterChangesParameters |

###### Returns

`Promise`\<`GetFilterChangesReturnType`\<`filterType`, `abi`, `eventName`, `strict`, `fromBlock`, `toBlock`>>

Logs or hashes. GetFilterChangesReturnType

###### Remarks

A Filter can be created from the following actions:

* [`createBlockFilter`](https://viem.sh/docs/actions/public/createBlockFilter)
* [`createContractEventFilter`](https://viem.sh/docs/contract/createContractEventFilter)
* [`createEventFilter`](https://viem.sh/docs/actions/public/createEventFilter)
* [`createPendingTransactionFilter`](https://viem.sh/docs/actions/public/createPendingTransactionFilter)

Depending on the type of filter, the return value will be different:

* If the filter was created with `createContractEventFilter` or `createEventFilter`, it returns a list of logs.
* If the filter was created with `createPendingTransactionFilter`, it returns a list of transaction hashes.
* If the filter was created with `createBlockFilter`, it returns a list of block hashes.

###### Examples

```ts theme={null}
// Blocks
import { createPublicClient, http } from 'viem'
import { mainnet } from 'viem/chains'

const client = createPublicClient({
  chain: mainnet,
  transport: http(),
})
const filter = await client.createBlockFilter()
const hashes = await client.getFilterChanges({ filter })
```

```ts theme={null}
// Contract Events
import { createPublicClient, http, parseAbi } from 'viem'
import { mainnet } from 'viem/chains'

const client = createPublicClient({
  chain: mainnet,
  transport: http(),
})
const filter = await client.createContractEventFilter({
  address: '0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48',
  abi: parseAbi(['event Transfer(address indexed, address indexed, uint256)']),
  eventName: 'Transfer',
})
const logs = await client.getFilterChanges({ filter })
```

```ts theme={null}
// Raw Events
import { createPublicClient, http, parseAbiItem } from 'viem'
import { mainnet } from 'viem/chains'

const client = createPublicClient({
  chain: mainnet,
  transport: http(),
})
const filter = await client.createEventFilter({
  address: '0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48',
  event: parseAbiItem('event Transfer(address indexed, address indexed, uint256)'),
})
const logs = await client.getFilterChanges({ filter })
```

```ts theme={null}
// Transactions
import { createPublicClient, http } from 'viem'
import { mainnet } from 'viem/chains'

const client = createPublicClient({
  chain: mainnet,
  transport: http(),
})
const filter = await client.createPendingTransactionFilter()
const hashes = await client.getFilterChanges({ filter })
```

##### getFilterLogs()

> **getFilterLogs**: \<`abi`, `eventName`, `strict`, `fromBlock`, `toBlock`>(`args`) => `Promise`\<`GetFilterLogsReturnType`\<`abi`, `eventName`, `strict`, `fromBlock`, `toBlock`>>

Returns a list of event logs since the filter was created.

* Docs: [https://viem.sh/docs/actions/public/getFilterLogs](https://viem.sh/docs/actions/public/getFilterLogs)
* JSON-RPC Methods: [`eth_getFilterLogs`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_getfilterlogs)

###### Type Parameters

| Type Parameter                                                | Default type |
| ------------------------------------------------------------- | ------------ |
| `abi` *extends* readonly `unknown`\[] \| `Abi` \| `undefined` | -            |
| `eventName` *extends* `string` \| `undefined`                 | -            |
| `strict` *extends* `boolean` \| `undefined`                   | `undefined`  |
| `fromBlock` *extends* `bigint` \| `BlockTag` \| `undefined`   | `undefined`  |
| `toBlock` *extends* `bigint` \| `BlockTag` \| `undefined`     | `undefined`  |

###### Parameters

| Parameter | Type                                                                             | Description             |
| --------- | -------------------------------------------------------------------------------- | ----------------------- |
| `args`    | `GetFilterLogsParameters`\<`abi`, `eventName`, `strict`, `fromBlock`, `toBlock`> | GetFilterLogsParameters |

###### Returns

`Promise`\<`GetFilterLogsReturnType`\<`abi`, `eventName`, `strict`, `fromBlock`, `toBlock`>>

A list of event logs. GetFilterLogsReturnType

###### Remarks

`getFilterLogs` is only compatible with **event filters**.

###### Example

```ts theme={null}
import { createPublicClient, http, parseAbiItem } from 'viem'
import { mainnet } from 'viem/chains'

const client = createPublicClient({
  chain: mainnet,
  transport: http(),
})
const filter = await client.createEventFilter({
  address: '0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48',
  event: parseAbiItem('event Transfer(address indexed, address indexed, uint256)'),
})
const logs = await client.getFilterLogs({ filter })
```

##### getGasPrice()

> **getGasPrice**: () => `Promise`\<`bigint`>

Returns the current price of gas (in wei).

* Docs: [https://viem.sh/docs/actions/public/getGasPrice](https://viem.sh/docs/actions/public/getGasPrice)
* JSON-RPC Methods: [`eth_gasPrice`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_gasprice)

###### Returns

`Promise`\<`bigint`>

The gas price (in wei). GetGasPriceReturnType

###### Example

```ts theme={null}
import { createPublicClient, http } from 'viem'
import { mainnet } from 'viem/chains'

const client = createPublicClient({
  chain: mainnet,
  transport: http(),
})
const gasPrice = await client.getGasPrice()
```

##### getLogs()

> **getLogs**: \<`abiEvent`, `abiEvents`, `strict`, `fromBlock`, `toBlock`>(`args`?) => `Promise`\<`GetLogsReturnType`\<`abiEvent`, `abiEvents`, `strict`, `fromBlock`, `toBlock`>>

Returns a list of event logs matching the provided parameters.

* Docs: [https://viem.sh/docs/actions/public/getLogs](https://viem.sh/docs/actions/public/getLogs)
* Examples: [https://stackblitz.com/github/wevm/viem/tree/main/examples/logs\_event-logs](https://stackblitz.com/github/wevm/viem/tree/main/examples/logs_event-logs)
* JSON-RPC Methods: [`eth_getLogs`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_getlogs)

###### Type Parameters

| Type Parameter                                                                       | Default type                                                  |
| ------------------------------------------------------------------------------------ | ------------------------------------------------------------- |
| `abiEvent` *extends* `AbiEvent` \| `undefined`                                       | `undefined`                                                   |
| `abiEvents` *extends* readonly `unknown`\[] \| readonly `AbiEvent`\[] \| `undefined` | `abiEvent` *extends* `AbiEvent` ? \[`abiEvent`] : `undefined` |
| `strict` *extends* `boolean` \| `undefined`                                          | `undefined`                                                   |
| `fromBlock` *extends* `bigint` \| `BlockTag` \| `undefined`                          | `undefined`                                                   |
| `toBlock` *extends* `bigint` \| `BlockTag` \| `undefined`                            | `undefined`                                                   |

###### Parameters

| Parameter | Type                                                                            | Description       |
| --------- | ------------------------------------------------------------------------------- | ----------------- |
| `args`?   | `GetLogsParameters`\<`abiEvent`, `abiEvents`, `strict`, `fromBlock`, `toBlock`> | GetLogsParameters |

###### Returns

`Promise`\<`GetLogsReturnType`\<`abiEvent`, `abiEvents`, `strict`, `fromBlock`, `toBlock`>>

A list of event logs. GetLogsReturnType

###### Example

```ts theme={null}
import { createPublicClient, http, parseAbiItem } from 'viem'
import { mainnet } from 'viem/chains'

const client = createPublicClient({
  chain: mainnet,
  transport: http(),
})
const logs = await client.getLogs()
```

##### getProof()

> **getProof**: (`args`) => `Promise`\<`GetProofReturnType`>

Returns the account and storage values of the specified account including the Merkle-proof.

* Docs: [https://viem.sh/docs/actions/public/getProof](https://viem.sh/docs/actions/public/getProof)
* JSON-RPC Methods:
  * Calls [`eth_getProof`](https://eips.ethereum.org/EIPS/eip-1186)

###### Parameters

| Parameter | Type                 |
| --------- | -------------------- |
| `args`    | `GetProofParameters` |

###### Returns

`Promise`\<`GetProofReturnType`>

Proof data. GetProofReturnType

###### Example

```ts theme={null}
import { createPublicClient, http } from 'viem'
import { mainnet } from 'viem/chains'

const client = createPublicClient({
  chain: mainnet,
  transport: http(),
})
const block = await client.getProof({
 address: '0x...',
 storageKeys: ['0x...'],
})
```

##### getStorageAt()

> **getStorageAt**: (`args`) => `Promise`\<`GetStorageAtReturnType`>

Returns the value from a storage slot at a given address.

* Docs: [https://viem.sh/docs/contract/getStorageAt](https://viem.sh/docs/contract/getStorageAt)
* JSON-RPC Methods: [`eth_getStorageAt`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_getstorageat)

###### Parameters

| Parameter | Type                     | Description            |
| --------- | ------------------------ | ---------------------- |
| `args`    | `GetStorageAtParameters` | GetStorageAtParameters |

###### Returns

`Promise`\<`GetStorageAtReturnType`>

The value of the storage slot. GetStorageAtReturnType

###### Example

```ts theme={null}
import { createPublicClient, http } from 'viem'
import { mainnet } from 'viem/chains'
import { getStorageAt } from 'viem/contract'

const client = createPublicClient({
  chain: mainnet,
  transport: http(),
})
const code = await client.getStorageAt({
  address: '0xFBA3912Ca04dd458c843e2EE08967fC04f3579c2',
  slot: toHex(0),
})
```

##### getTransaction()

> **getTransaction**: \<`blockTag`>(`args`) => `Promise`\<\{ `accessList`: `undefined`; `authorizationList`: `undefined`; `blobVersionedHashes`: `undefined`; `blockHash`: `blockTag` *extends* `"pending"` ? `true` : `false` *extends* `true` ? `null` : `` `0x${string}` ``; `blockNumber`: `blockTag` *extends* `"pending"` ? `true` : `false` *extends* `true` ? `null` : `bigint`; `chainId`: `number`; `from`: `` `0x${string}` ``; `gas`: `bigint`; `gasPrice`: `bigint`; `hash`: `` `0x${string}` ``; `input`: `` `0x${string}` ``; `maxFeePerBlobGas`: `undefined`; `maxFeePerGas`: `undefined`; `maxPriorityFeePerGas`: `undefined`; `nonce`: `number`; `r`: `` `0x${string}` ``; `s`: `` `0x${string}` ``; `to`: `` `0x${string}` `` | `null`; `transactionIndex`: `blockTag` *extends* `"pending"` ? `true` : `false` *extends* `true` ? `null` : `number`; `type`: `"legacy"`; `typeHex`: `` `0x${string}` `` | `null`; `v`: `bigint`; `value`: `bigint`; `yParity`: `undefined`; } | \{ `accessList`: `AccessList`; `authorizationList`: `undefined`; `blobVersionedHashes`: `undefined`; `blockHash`: `blockTag` *extends* `"pending"` ? `true` : `false` *extends* `true` ? `null` : `` `0x${string}` ``; `blockNumber`: `blockTag` *extends* `"pending"` ? `true` : `false` *extends* `true` ? `null` : `bigint`; `chainId`: `number`; `from`: `` `0x${string}` ``; `gas`: `bigint`; `gasPrice`: `bigint`; `hash`: `` `0x${string}` ``; `input`: `` `0x${string}` ``; `maxFeePerBlobGas`: `undefined`; `maxFeePerGas`: `undefined`; `maxPriorityFeePerGas`: `undefined`; `nonce`: `number`; `r`: `` `0x${string}` ``; `s`: `` `0x${string}` ``; `to`: `` `0x${string}` `` | `null`; `transactionIndex`: `blockTag` *extends* `"pending"` ? `true` : `false` *extends* `true` ? `null` : `number`; `type`: `"eip2930"`; `typeHex`: `` `0x${string}` `` | `null`; `v`: `bigint`; `value`: `bigint`; `yParity`: `number`; } | \{ `accessList`: `AccessList`; `authorizationList`: `undefined`; `blobVersionedHashes`: `undefined`; `blockHash`: `blockTag` *extends* `"pending"` ? `true` : `false` *extends* `true` ? `null` : `` `0x${string}` ``; `blockNumber`: `blockTag` *extends* `"pending"` ? `true` : `false` *extends* `true` ? `null` : `bigint`; `chainId`: `number`; `from`: `` `0x${string}` ``; `gas`: `bigint`; `gasPrice`: `undefined`; `hash`: `` `0x${string}` ``; `input`: `` `0x${string}` ``; `maxFeePerBlobGas`: `undefined`; `maxFeePerGas`: `bigint`; `maxPriorityFeePerGas`: `bigint`; `nonce`: `number`; `r`: `` `0x${string}` ``; `s`: `` `0x${string}` ``; `to`: `` `0x${string}` `` | `null`; `transactionIndex`: `blockTag` *extends* `"pending"` ? `true` : `false` *extends* `true` ? `null` : `number`; `type`: `"eip1559"`; `typeHex`: `` `0x${string}` `` | `null`; `v`: `bigint`; `value`: `bigint`; `yParity`: `number`; } | \{ `accessList`: `AccessList`; `authorizationList`: `undefined`; `blobVersionedHashes`: readonly `` `0x${string}` ``\[]; `blockHash`: `blockTag` *extends* `"pending"` ? `true` : `false` *extends* `true` ? `null` : `` `0x${string}` ``; `blockNumber`: `blockTag` *extends* `"pending"` ? `true` : `false` *extends* `true` ? `null` : `bigint`; `chainId`: `number`; `from`: `` `0x${string}` ``; `gas`: `bigint`; `gasPrice`: `undefined`; `hash`: `` `0x${string}` ``; `input`: `` `0x${string}` ``; `maxFeePerBlobGas`: `bigint`; `maxFeePerGas`: `bigint`; `maxPriorityFeePerGas`: `bigint`; `nonce`: `number`; `r`: `` `0x${string}` ``; `s`: `` `0x${string}` ``; `to`: `` `0x${string}` `` | `null`; `transactionIndex`: `blockTag` *extends* `"pending"` ? `true` : `false` *extends* `true` ? `null` : `number`; `type`: `"eip4844"`; `typeHex`: `` `0x${string}` `` | `null`; `v`: `bigint`; `value`: `bigint`; `yParity`: `number`; } | \{ `accessList`: `AccessList`; `authorizationList`: `SignedAuthorizationList`; `blobVersionedHashes`: `undefined`; `blockHash`: `blockTag` *extends* `"pending"` ? `true` : `false` *extends* `true` ? `null` : `` `0x${string}` ``; `blockNumber`: `blockTag` *extends* `"pending"` ? `true` : `false` *extends* `true` ? `null` : `bigint`; `chainId`: `number`; `from`: `` `0x${string}` ``; `gas`: `bigint`; `gasPrice`: `undefined`; `hash`: `` `0x${string}` ``; `input`: `` `0x${string}` ``; `maxFeePerBlobGas`: `undefined`; `maxFeePerGas`: `bigint`; `maxPriorityFeePerGas`: `bigint`; `nonce`: `number`; `r`: `` `0x${string}` ``; `s`: `` `0x${string}` ``; `to`: `` `0x${string}` `` | `null`; `transactionIndex`: `blockTag` *extends* `"pending"` ? `true` : `false` *extends* `true` ? `null` : `number`; `type`: `"eip7702"`; `typeHex`: `` `0x${string}` `` | `null`; `v`: `bigint`; `value`: `bigint`; `yParity`: `number`; }>

Returns information about a [Transaction](https://viem.sh/docs/glossary/terms#transaction) given a hash or block identifier.

* Docs: [https://viem.sh/docs/actions/public/getTransaction](https://viem.sh/docs/actions/public/getTransaction)
* Example: [https://stackblitz.com/github/wevm/viem/tree/main/examples/transactions\_fetching-transactions](https://stackblitz.com/github/wevm/viem/tree/main/examples/transactions_fetching-transactions)
* JSON-RPC Methods: [`eth_getTransactionByHash`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_getTransactionByHash)

###### Type Parameters

| Type Parameter                  | Default type |
| ------------------------------- | ------------ |
| `blockTag` *extends* `BlockTag` | `"latest"`   |

###### Parameters

| Parameter | Type                                    | Description              |
| --------- | --------------------------------------- | ------------------------ |
| `args`    | `GetTransactionParameters`\<`blockTag`> | GetTransactionParameters |

###### Returns

`Promise`\<\{ `accessList`: `undefined`; `authorizationList`: `undefined`; `blobVersionedHashes`: `undefined`; `blockHash`: `blockTag` *extends* `"pending"` ? `true` : `false` *extends* `true` ? `null` : `` `0x${string}` ``; `blockNumber`: `blockTag` *extends* `"pending"` ? `true` : `false` *extends* `true` ? `null` : `bigint`; `chainId`: `number`; `from`: `` `0x${string}` ``; `gas`: `bigint`; `gasPrice`: `bigint`; `hash`: `` `0x${string}` ``; `input`: `` `0x${string}` ``; `maxFeePerBlobGas`: `undefined`; `maxFeePerGas`: `undefined`; `maxPriorityFeePerGas`: `undefined`; `nonce`: `number`; `r`: `` `0x${string}` ``; `s`: `` `0x${string}` ``; `to`: `` `0x${string}` `` | `null`; `transactionIndex`: `blockTag` *extends* `"pending"` ? `true` : `false` *extends* `true` ? `null` : `number`; `type`: `"legacy"`; `typeHex`: `` `0x${string}` `` | `null`; `v`: `bigint`; `value`: `bigint`; `yParity`: `undefined`; } | \{ `accessList`: `AccessList`; `authorizationList`: `undefined`; `blobVersionedHashes`: `undefined`; `blockHash`: `blockTag` *extends* `"pending"` ? `true` : `false` *extends* `true` ? `null` : `` `0x${string}` ``; `blockNumber`: `blockTag` *extends* `"pending"` ? `true` : `false` *extends* `true` ? `null` : `bigint`; `chainId`: `number`; `from`: `` `0x${string}` ``; `gas`: `bigint`; `gasPrice`: `bigint`; `hash`: `` `0x${string}` ``; `input`: `` `0x${string}` ``; `maxFeePerBlobGas`: `undefined`; `maxFeePerGas`: `undefined`; `maxPriorityFeePerGas`: `undefined`; `nonce`: `number`; `r`: `` `0x${string}` ``; `s`: `` `0x${string}` ``; `to`: `` `0x${string}` `` | `null`; `transactionIndex`: `blockTag` *extends* `"pending"` ? `true` : `false` *extends* `true` ? `null` : `number`; `type`: `"eip2930"`; `typeHex`: `` `0x${string}` `` | `null`; `v`: `bigint`; `value`: `bigint`; `yParity`: `number`; } | \{ `accessList`: `AccessList`; `authorizationList`: `undefined`; `blobVersionedHashes`: `undefined`; `blockHash`: `blockTag` *extends* `"pending"` ? `true` : `false` *extends* `true` ? `null` : `` `0x${string}` ``; `blockNumber`: `blockTag` *extends* `"pending"` ? `true` : `false` *extends* `true` ? `null` : `bigint`; `chainId`: `number`; `from`: `` `0x${string}` ``; `gas`: `bigint`; `gasPrice`: `undefined`; `hash`: `` `0x${string}` ``; `input`: `` `0x${string}` ``; `maxFeePerBlobGas`: `undefined`; `maxFeePerGas`: `bigint`; `maxPriorityFeePerGas`: `bigint`; `nonce`: `number`; `r`: `` `0x${string}` ``; `s`: `` `0x${string}` ``; `to`: `` `0x${string}` `` | `null`; `transactionIndex`: `blockTag` *extends* `"pending"` ? `true` : `false` *extends* `true` ? `null` : `number`; `type`: `"eip1559"`; `typeHex`: `` `0x${string}` `` | `null`; `v`: `bigint`; `value`: `bigint`; `yParity`: `number`; } | \{ `accessList`: `AccessList`; `authorizationList`: `undefined`; `blobVersionedHashes`: readonly `` `0x${string}` ``\[]; `blockHash`: `blockTag` *extends* `"pending"` ? `true` : `false` *extends* `true` ? `null` : `` `0x${string}` ``; `blockNumber`: `blockTag` *extends* `"pending"` ? `true` : `false` *extends* `true` ? `null` : `bigint`; `chainId`: `number`; `from`: `` `0x${string}` ``; `gas`: `bigint`; `gasPrice`: `undefined`; `hash`: `` `0x${string}` ``; `input`: `` `0x${string}` ``; `maxFeePerBlobGas`: `bigint`; `maxFeePerGas`: `bigint`; `maxPriorityFeePerGas`: `bigint`; `nonce`: `number`; `r`: `` `0x${string}` ``; `s`: `` `0x${string}` ``; `to`: `` `0x${string}` `` | `null`; `transactionIndex`: `blockTag` *extends* `"pending"` ? `true` : `false` *extends* `true` ? `null` : `number`; `type`: `"eip4844"`; `typeHex`: `` `0x${string}` `` | `null`; `v`: `bigint`; `value`: `bigint`; `yParity`: `number`; } | \{ `accessList`: `AccessList`; `authorizationList`: `SignedAuthorizationList`; `blobVersionedHashes`: `undefined`; `blockHash`: `blockTag` *extends* `"pending"` ? `true` : `false` *extends* `true` ? `null` : `` `0x${string}` ``; `blockNumber`: `blockTag` *extends* `"pending"` ? `true` : `false` *extends* `true` ? `null` : `bigint`; `chainId`: `number`; `from`: `` `0x${string}` ``; `gas`: `bigint`; `gasPrice`: `undefined`; `hash`: `` `0x${string}` ``; `input`: `` `0x${string}` ``; `maxFeePerBlobGas`: `undefined`; `maxFeePerGas`: `bigint`; `maxPriorityFeePerGas`: `bigint`; `nonce`: `number`; `r`: `` `0x${string}` ``; `s`: `` `0x${string}` ``; `to`: `` `0x${string}` `` | `null`; `transactionIndex`: `blockTag` *extends* `"pending"` ? `true` : `false` *extends* `true` ? `null` : `number`; `type`: `"eip7702"`; `typeHex`: `` `0x${string}` `` | `null`; `v`: `bigint`; `value`: `bigint`; `yParity`: `number`; }>

The transaction information. GetTransactionReturnType

###### Example

```ts theme={null}
import { createPublicClient, http } from 'viem'
import { mainnet } from 'viem/chains'

const client = createPublicClient({
  chain: mainnet,
  transport: http(),
})
const transaction = await client.getTransaction({
  hash: '0x4ca7ee652d57678f26e887c149ab0735f41de37bcad58c9f6d3ed5824f15b74d',
})
```

##### getTransactionConfirmations()

> **getTransactionConfirmations**: (`args`) => `Promise`\<`bigint`>

Returns the number of blocks passed (confirmations) since the transaction was processed on a block.

* Docs: [https://viem.sh/docs/actions/public/getTransactionConfirmations](https://viem.sh/docs/actions/public/getTransactionConfirmations)
* Example: [https://stackblitz.com/github/wevm/viem/tree/main/examples/transactions\_fetching-transactions](https://stackblitz.com/github/wevm/viem/tree/main/examples/transactions_fetching-transactions)
* JSON-RPC Methods: [`eth_getTransactionConfirmations`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_getTransactionConfirmations)

###### Parameters

| Parameter | Type                                              | Description                           |
| --------- | ------------------------------------------------- | ------------------------------------- |
| `args`    | `GetTransactionConfirmationsParameters`\<`Chain`> | GetTransactionConfirmationsParameters |

###### Returns

`Promise`\<`bigint`>

The number of blocks passed since the transaction was processed. If confirmations is 0, then the Transaction has not been confirmed & processed yet. GetTransactionConfirmationsReturnType

###### Example

```ts theme={null}
import { createPublicClient, http } from 'viem'
import { mainnet } from 'viem/chains'

const client = createPublicClient({
  chain: mainnet,
  transport: http(),
})
const confirmations = await client.getTransactionConfirmations({
  hash: '0x4ca7ee652d57678f26e887c149ab0735f41de37bcad58c9f6d3ed5824f15b74d',
})
```

##### getTransactionCount()

> **getTransactionCount**: (`args`) => `Promise`\<`number`>

Returns the number of [Transactions](https://viem.sh/docs/glossary/terms#transaction) an Account has broadcast / sent.

* Docs: [https://viem.sh/docs/actions/public/getTransactionCount](https://viem.sh/docs/actions/public/getTransactionCount)
* JSON-RPC Methods: [`eth_getTransactionCount`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_gettransactioncount)

###### Parameters

| Parameter | Type                            | Description                   |
| --------- | ------------------------------- | ----------------------------- |
| `args`    | `GetTransactionCountParameters` | GetTransactionCountParameters |

###### Returns

`Promise`\<`number`>

The number of transactions an account has sent. GetTransactionCountReturnType

###### Example

```ts theme={null}
import { createPublicClient, http } from 'viem'
import { mainnet } from 'viem/chains'

const client = createPublicClient({
  chain: mainnet,
  transport: http(),
})
const transactionCount = await client.getTransactionCount({
  address: '0xA0Cf798816D4b9b9866b5330EEa46a18382f251e',
})
```

##### getTransactionReceipt()

> **getTransactionReceipt**: (`args`) => `Promise`\<`TransactionReceipt`>

Returns the [Transaction Receipt](https://viem.sh/docs/glossary/terms#transaction-receipt) given a [Transaction](https://viem.sh/docs/glossary/terms#transaction) hash.

* Docs: [https://viem.sh/docs/actions/public/getTransactionReceipt](https://viem.sh/docs/actions/public/getTransactionReceipt)
* Example: [https://stackblitz.com/github/wevm/viem/tree/main/examples/transactions\_fetching-transactions](https://stackblitz.com/github/wevm/viem/tree/main/examples/transactions_fetching-transactions)
* JSON-RPC Methods: [`eth_getTransactionReceipt`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_getTransactionReceipt)

###### Parameters

| Parameter | Type                              | Description                     |
| --------- | --------------------------------- | ------------------------------- |
| `args`    | `GetTransactionReceiptParameters` | GetTransactionReceiptParameters |

###### Returns

`Promise`\<`TransactionReceipt`>

The transaction receipt. GetTransactionReceiptReturnType

###### Example

```ts theme={null}
import { createPublicClient, http } from 'viem'
import { mainnet } from 'viem/chains'

const client = createPublicClient({
  chain: mainnet,
  transport: http(),
})
const transactionReceipt = await client.getTransactionReceipt({
  hash: '0x4ca7ee652d57678f26e887c149ab0735f41de37bcad58c9f6d3ed5824f15b74d',
})
```

##### key

> **key**: `string`

A key for the client.

##### multicall()

> **multicall**: \<`contracts`, `allowFailure`>(`args`) => `Promise`\<`MulticallReturnType`\<`contracts`, `allowFailure`>>

Similar to [`readContract`](https://viem.sh/docs/contract/readContract), but batches up multiple functions on a contract in a single RPC call via the [`multicall3` contract](https://github.com/mds1/multicall).

* Docs: [https://viem.sh/docs/contract/multicall](https://viem.sh/docs/contract/multicall)

###### Type Parameters

| Type Parameter                              | Default type |
| ------------------------------------------- | ------------ |
| `contracts` *extends* readonly `unknown`\[] | -            |
| `allowFailure` *extends* `boolean`          | `true`       |

###### Parameters

| Parameter | Type                                                | Description         |
| --------- | --------------------------------------------------- | ------------------- |
| `args`    | `MulticallParameters`\<`contracts`, `allowFailure`> | MulticallParameters |

###### Returns

`Promise`\<`MulticallReturnType`\<`contracts`, `allowFailure`>>

An array of results with accompanying status. MulticallReturnType

###### Example

```ts theme={null}
import { createPublicClient, http, parseAbi } from 'viem'
import { mainnet } from 'viem/chains'

const client = createPublicClient({
  chain: mainnet,
  transport: http(),
})
const abi = parseAbi([
  'function balanceOf(address) view returns (uint256)',
  'function totalSupply() view returns (uint256)',
])
const result = await client.multicall({
  contracts: [
    {
      address: '0xFBA3912Ca04dd458c843e2EE08967fC04f3579c2',
      abi,
      functionName: 'balanceOf',
      args: ['0xA0Cf798816D4b9b9866b5330EEa46a18382f251e'],
    },
    {
      address: '0xFBA3912Ca04dd458c843e2EE08967fC04f3579c2',
      abi,
      functionName: 'totalSupply',
    },
  ],
})
// [{ result: 424122n, status: 'success' }, { result: 1000000n, status: 'success' }]
```

##### name

> **name**: `string`

A name for the client.

##### pollingInterval

> **pollingInterval**: `number`

Frequency (in ms) for polling enabled actions & events. Defaults to 4\_000 milliseconds.

##### prepareTransactionRequest()

> **prepareTransactionRequest**: \<`request`, `chainOverride`, `accountOverride`>(`args`) => `Promise`\<\{ \[K in string | number | symbol]: (UnionRequiredBy\<Extract\<UnionOmit\<(...), (...)> & ((...) extends (...) ? (...) : (...)) & ((...) extends (...) ? (...) : (...)), IsNever\<(...)> extends true ? unknown : ExactPartial\<(...)>> & \{ chainId?: number }, ParameterTypeToParameters\<request\["parameters"] extends readonly PrepareTransactionRequestParameterType\[] ? any\[any]\[number] : "fees" | "gas" | "nonce" | "blobVersionedHashes" | "chainId" | "type">> & (unknown extends request\["kzg"] ? \{} : Pick\<request, "kzg">))\[K] }>

Prepares a transaction request for signing.

* Docs: [https://viem.sh/docs/actions/wallet/prepareTransactionRequest](https://viem.sh/docs/actions/wallet/prepareTransactionRequest)

###### Type Parameters

| Type Parameter                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              | Default type |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------ |
| `request` *extends* `Omit`\<\{ `accessList`: `undefined`; `authorizationList`: `undefined`; `blobs`: `undefined`; `blobVersionedHashes`: `undefined`; `data`: `` `0x${string}` ``; `from`: `` `0x${string}` ``; `gas`: `bigint`; `gasPrice`: `bigint`; `kzg`: `undefined`; `maxFeePerBlobGas`: `undefined`; `maxFeePerGas`: `undefined`; `maxPriorityFeePerGas`: `undefined`; `nonce`: `number`; `sidecars`: `undefined`; `to`: `` `0x${string}` `` \| `null`; `type`: `"legacy"`; `value`: `bigint`; }, `"from"`> \| `Omit`\<\{ `accessList`: `AccessList`; `authorizationList`: `undefined`; `blobs`: `undefined`; `blobVersionedHashes`: `undefined`; `data`: `` `0x${string}` ``; `from`: `` `0x${string}` ``; `gas`: `bigint`; `gasPrice`: `bigint`; `kzg`: `undefined`; `maxFeePerBlobGas`: `undefined`; `maxFeePerGas`: `undefined`; `maxPriorityFeePerGas`: `undefined`; `nonce`: `number`; `sidecars`: `undefined`; `to`: `` `0x${string}` `` \| `null`; `type`: `"eip2930"`; `value`: `bigint`; }, `"from"`> \| `Omit`\<\{ `accessList`: `AccessList`; `authorizationList`: `undefined`; `blobs`: `undefined`; `blobVersionedHashes`: `undefined`; `data`: `` `0x${string}` ``; `from`: `` `0x${string}` ``; `gas`: `bigint`; `gasPrice`: `undefined`; `kzg`: `undefined`; `maxFeePerBlobGas`: `undefined`; `maxFeePerGas`: `bigint`; `maxPriorityFeePerGas`: `bigint`; `nonce`: `number`; `sidecars`: `undefined`; `to`: `` `0x${string}` `` \| `null`; `type`: `"eip1559"`; `value`: `bigint`; }, `"from"`> \| `Omit`\<\{ `accessList`: `AccessList`; `authorizationList`: `undefined`; `blobs`: readonly `` `0x${string}` ``\[] \| readonly `ByteArray`\[]; `blobVersionedHashes`: readonly `` `0x${string}` ``\[]; `data`: `` `0x${string}` ``; `from`: `` `0x${string}` ``; `gas`: `bigint`; `gasPrice`: `undefined`; `kzg`: `Kzg`; `maxFeePerBlobGas`: `bigint`; `maxFeePerGas`: `bigint`; `maxPriorityFeePerGas`: `bigint`; `nonce`: `number`; `sidecars`: readonly `BlobSidecar`\<`` `0x${string}` ``>\[]; `to`: `` `0x${string}` `` \| `null`; `type`: `"eip4844"`; `value`: `bigint`; }, `"from"`> \| `Omit`\<\{ `accessList`: `AccessList`; `authorizationList`: `AuthorizationList`\<`number`, `boolean`>; `blobs`: `undefined`; `blobVersionedHashes`: `undefined`; `data`: `` `0x${string}` ``; `from`: `` `0x${string}` ``; `gas`: `bigint`; `gasPrice`: `undefined`; `kzg`: `undefined`; `maxFeePerBlobGas`: `undefined`; `maxFeePerGas`: `bigint`; `maxPriorityFeePerGas`: `bigint`; `nonce`: `number`; `sidecars`: `undefined`; `to`: `` `0x${string}` `` \| `null`; `type`: `"eip7702"`; `value`: `bigint`; }, `"from"`> & `object` & `object` | -            |
| `chainOverride` *extends* `Chain` \| `undefined`                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            | `undefined`  |
| `accountOverride` *extends* `` `0x${string}` `` \| `Account` \| `undefined`                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 | `undefined`  |

###### Parameters

| Parameter | Type                                                                                                                     | Description                         |
| --------- | ------------------------------------------------------------------------------------------------------------------------ | ----------------------------------- |
| `args`    | `PrepareTransactionRequestParameters`\<`Chain`, `Account` \| `undefined`, `chainOverride`, `accountOverride`, `request`> | PrepareTransactionRequestParameters |

###### Returns

`Promise`\<\{ \[K in string | number | symbol]: (UnionRequiredBy\<Extract\<UnionOmit\<(...), (...)> & ((...) extends (...) ? (...) : (...)) & ((...) extends (...) ? (...) : (...)), IsNever\<(...)> extends true ? unknown : ExactPartial\<(...)>> & \{ chainId?: number }, ParameterTypeToParameters\<request\["parameters"] extends readonly PrepareTransactionRequestParameterType\[] ? any\[any]\[number] : "fees" | "gas" | "nonce" | "blobVersionedHashes" | "chainId" | "type">> & (unknown extends request\["kzg"] ? \{} : Pick\<request, "kzg">))\[K] }>

The transaction request. PrepareTransactionRequestReturnType

###### Examples

```ts theme={null}
import { createWalletClient, custom } from 'viem'
import { mainnet } from 'viem/chains'

const client = createWalletClient({
  chain: mainnet,
  transport: custom(window.ethereum),
})
const request = await client.prepareTransactionRequest({
  account: '0xA0Cf798816D4b9b9866b5330EEa46a18382f251e',
  to: '0x0000000000000000000000000000000000000000',
  value: 1n,
})
```

```ts theme={null}
// Account Hoisting
import { createWalletClient, http } from 'viem'
import { privateKeyToAccount } from 'viem/accounts'
import { mainnet } from 'viem/chains'

const client = createWalletClient({
  account: privateKeyToAccount('0x…'),
  chain: mainnet,
  transport: custom(window.ethereum),
})
const request = await client.prepareTransactionRequest({
  to: '0x0000000000000000000000000000000000000000',
  value: 1n,
})
```

##### readContract()

> **readContract**: \<`abi`, `functionName`, `args`>(`args`) => `Promise`\<`ReadContractReturnType`\<`abi`, `functionName`, `args`>>

Calls a read-only function on a contract, and returns the response.

* Docs: [https://viem.sh/docs/contract/readContract](https://viem.sh/docs/contract/readContract)
* Examples: [https://stackblitz.com/github/wevm/viem/tree/main/examples/contracts\_reading-contracts](https://stackblitz.com/github/wevm/viem/tree/main/examples/contracts_reading-contracts)

###### Type Parameters

| Type Parameter                                 |
| ---------------------------------------------- |
| `abi` *extends* readonly `unknown`\[] \| `Abi` |
| `functionName` *extends* `string`              |
| `args` *extends* `unknown`                     |

###### Parameters

| Parameter | Type                                                     | Description            |
| --------- | -------------------------------------------------------- | ---------------------- |
| `args`    | `ReadContractParameters`\<`abi`, `functionName`, `args`> | ReadContractParameters |

###### Returns

`Promise`\<`ReadContractReturnType`\<`abi`, `functionName`, `args`>>

The response from the contract. Type is inferred. ReadContractReturnType

###### Remarks

A "read-only" function (constant function) on a Solidity contract is denoted by a `view` or `pure` keyword. They can only read the state of the contract, and cannot make any changes to it. Since read-only methods do not change the state of the contract, they do not require any gas to be executed, and can be called by any user without the need to pay for gas.

Internally, uses a [Public Client](https://viem.sh/docs/clients/public) to call the [`call` action](https://viem.sh/docs/actions/public/call) with [ABI-encoded `data`](https://viem.sh/docs/contract/encodeFunctionData).

###### Example

```ts theme={null}
import { createPublicClient, http, parseAbi } from 'viem'
import { mainnet } from 'viem/chains'
import { readContract } from 'viem/contract'

const client = createPublicClient({
  chain: mainnet,
  transport: http(),
})
const result = await client.readContract({
  address: '0xFBA3912Ca04dd458c843e2EE08967fC04f3579c2',
  abi: parseAbi(['function balanceOf(address) view returns (uint256)']),
  functionName: 'balanceOf',
  args: ['0xA0Cf798816D4b9b9866b5330EEa46a18382f251e'],
})
// 424122n
```

##### request

> **request**: `EIP1193RequestFn`\<`PublicRpcSchema`>

Request function wrapped with friendly error handling

##### sendRawTransaction()

> **sendRawTransaction**: (`args`) => `Promise`\<`` `0x${string}` ``>

Sends a **signed** transaction to the network

* Docs: [https://viem.sh/docs/actions/wallet/sendRawTransaction](https://viem.sh/docs/actions/wallet/sendRawTransaction)
* JSON-RPC Method: [`eth_sendRawTransaction`](https://ethereum.github.io/execution-apis/api-documentation/)

###### Parameters

| Parameter | Type                           |
| --------- | ------------------------------ |
| `args`    | `SendRawTransactionParameters` |

###### Returns

`Promise`\<`` `0x${string}` ``>

The transaction hash. SendRawTransactionReturnType

###### Example

```ts theme={null}
import { createWalletClient, custom } from 'viem'
import { mainnet } from 'viem/chains'
import { sendRawTransaction } from 'viem/wallet'

const client = createWalletClient({
  chain: mainnet,
  transport: custom(window.ethereum),
})

const hash = await client.sendRawTransaction({
  serializedTransaction: '0x02f850018203118080825208808080c080a04012522854168b27e5dc3d5839bab5e6b39e1a0ffd343901ce1622e3d64b48f1a04e00902ae0502c4728cbf12156290df99c3ed7de85b1dbfe20b5c36931733a33'
})
```

##### ~~simulate()~~

> **simulate**: \<`calls`>(`args`) => `Promise`\<`SimulateBlocksReturnType`\<`calls`>>

###### Type Parameters

| Type Parameter                          |
| --------------------------------------- |
| `calls` *extends* readonly `unknown`\[] |

###### Parameters

| Parameter | Type                                 |
| --------- | ------------------------------------ |
| `args`    | `SimulateBlocksParameters`\<`calls`> |

###### Returns

`Promise`\<`SimulateBlocksReturnType`\<`calls`>>

###### Deprecated

Use `simulateBlocks` instead.

##### simulateBlocks()

> **simulateBlocks**: \<`calls`>(`args`) => `Promise`\<`SimulateBlocksReturnType`\<`calls`>>

Simulates a set of calls on block(s) with optional block and state overrides.

###### Type Parameters

| Type Parameter                          |
| --------------------------------------- |
| `calls` *extends* readonly `unknown`\[] |

###### Parameters

| Parameter | Type                                 |
| --------- | ------------------------------------ |
| `args`    | `SimulateBlocksParameters`\<`calls`> |

###### Returns

`Promise`\<`SimulateBlocksReturnType`\<`calls`>>

Simulated blocks. SimulateReturnType

###### Example

```ts theme={null}
import { createPublicClient, http, parseEther } from 'viem'
import { mainnet } from 'viem/chains'

const client = createPublicClient({
  chain: mainnet,
  transport: http(),
})

const result = await client.simulateBlocks({
  blocks: [{
    blockOverrides: {
      number: 69420n,
    },
    calls: [{
      {
        account: '0x5a0b54d5dc17e482fe8b0bdca5320161b95fb929',
        data: '0xdeadbeef',
        to: '0x70997970c51812dc3a010c7d01b50e0d17dc79c8',
      },
      {
        account: '0x5a0b54d5dc17e482fe8b0bdca5320161b95fb929',
        to: '0x70997970c51812dc3a010c7d01b50e0d17dc79c8',
        value: parseEther('1'),
      },
    }],
    stateOverrides: [{
      address: '0x5a0b54d5dc17e482fe8b0bdca5320161b95fb929',
      balance: parseEther('10'),
    }],
  }]
})
```

##### simulateCalls()

> **simulateCalls**: \<`calls`>(`args`) => `Promise`\<`SimulateCallsReturnType`\<`calls`>>

Simulates a set of calls.

###### Type Parameters

| Type Parameter                          |
| --------------------------------------- |
| `calls` *extends* readonly `unknown`\[] |

###### Parameters

| Parameter | Type                                |
| --------- | ----------------------------------- |
| `args`    | `SimulateCallsParameters`\<`calls`> |

###### Returns

`Promise`\<`SimulateCallsReturnType`\<`calls`>>

Results. SimulateCallsReturnType

###### Example

```ts theme={null}
import { createPublicClient, http, parseEther } from 'viem'
import { mainnet } from 'viem/chains'

const client = createPublicClient({
  chain: mainnet,
  transport: http(),
})

const result = await client.simulateCalls({
  account: '0x5a0b54d5dc17e482fe8b0bdca5320161b95fb929',
  calls: [{
    {
      data: '0xdeadbeef',
      to: '0x70997970c51812dc3a010c7d01b50e0d17dc79c8',
    },
    {
      to: '0x70997970c51812dc3a010c7d01b50e0d17dc79c8',
      value: parseEther('1'),
    },
  ]
})
```

##### simulateContract()

> **simulateContract**: \<`abi`, `functionName`, `args`, `chainOverride`, `accountOverride`>(`args`) => `Promise`\<`SimulateContractReturnType`\<`abi`, `functionName`, `args`, `Chain`, `Account` | `undefined`, `chainOverride`, `accountOverride`>>

Simulates/validates a contract interaction. This is useful for retrieving **return data** and **revert reasons** of contract write functions.

* Docs: [https://viem.sh/docs/contract/simulateContract](https://viem.sh/docs/contract/simulateContract)
* Examples: [https://stackblitz.com/github/wevm/viem/tree/main/examples/contracts\_writing-to-contracts](https://stackblitz.com/github/wevm/viem/tree/main/examples/contracts_writing-to-contracts)

###### Type Parameters

| Type Parameter                                                              | Default type |
| --------------------------------------------------------------------------- | ------------ |
| `abi` *extends* readonly `unknown`\[] \| `Abi`                              | -            |
| `functionName` *extends* `string`                                           | -            |
| `args` *extends* `unknown`                                                  | -            |
| `chainOverride` *extends* `Chain` \| `undefined`                            | -            |
| `accountOverride` *extends* `` `0x${string}` `` \| `Account` \| `undefined` | `undefined`  |

###### Parameters

| Parameter | Type                                                                                                      | Description                |
| --------- | --------------------------------------------------------------------------------------------------------- | -------------------------- |
| `args`    | `SimulateContractParameters`\<`abi`, `functionName`, `args`, `Chain`, `chainOverride`, `accountOverride`> | SimulateContractParameters |

###### Returns

`Promise`\<`SimulateContractReturnType`\<`abi`, `functionName`, `args`, `Chain`, `Account` | `undefined`, `chainOverride`, `accountOverride`>>

The simulation result and write request. SimulateContractReturnType

###### Remarks

This function does not require gas to execute and ***does not*** change the state of the blockchain. It is almost identical to [`readContract`](https://viem.sh/docs/contract/readContract), but also supports contract write functions.

Internally, uses a [Public Client](https://viem.sh/docs/clients/public) to call the [`call` action](https://viem.sh/docs/actions/public/call) with [ABI-encoded `data`](https://viem.sh/docs/contract/encodeFunctionData).

###### Example

```ts theme={null}
import { createPublicClient, http } from 'viem'
import { mainnet } from 'viem/chains'

const client = createPublicClient({
  chain: mainnet,
  transport: http(),
})
const result = await client.simulateContract({
  address: '0xFBA3912Ca04dd458c843e2EE08967fC04f3579c2',
  abi: parseAbi(['function mint(uint32) view returns (uint32)']),
  functionName: 'mint',
  args: ['69420'],
  account: '0xA0Cf798816D4b9b9866b5330EEa46a18382f251e',
})
```

##### transport

> **transport**: `TransportConfig`\<`"http"`, `EIP1193RequestFn`> & `object`

The RPC transport

###### Type Declaration

###### fetchOptions?

> `optional` **fetchOptions**: `Omit`\<`RequestInit`, `"body"`>

###### url?

> `optional` **url**: `string`

##### type

> **type**: `string`

The type of client.

##### uid

> **uid**: `string`

A unique ID for the client.

##### uninstallFilter()

> **uninstallFilter**: (`args`) => `Promise`\<`boolean`>

Destroys a Filter that was created from one of the following Actions:

* [`createBlockFilter`](https://viem.sh/docs/actions/public/createBlockFilter)

* [`createEventFilter`](https://viem.sh/docs/actions/public/createEventFilter)

* [`createPendingTransactionFilter`](https://viem.sh/docs/actions/public/createPendingTransactionFilter)

* Docs: [https://viem.sh/docs/actions/public/uninstallFilter](https://viem.sh/docs/actions/public/uninstallFilter)

* JSON-RPC Methods: [`eth_uninstallFilter`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_uninstallFilter)

###### Parameters

| Parameter | Type                        | Description               |
| --------- | --------------------------- | ------------------------- |
| `args`    | `UninstallFilterParameters` | UninstallFilterParameters |

###### Returns

`Promise`\<`boolean`>

A boolean indicating if the Filter was successfully uninstalled. UninstallFilterReturnType

###### Example

```ts theme={null}
import { createPublicClient, http } from 'viem'
import { mainnet } from 'viem/chains'
import { createPendingTransactionFilter, uninstallFilter } from 'viem/public'

const filter = await client.createPendingTransactionFilter()
const uninstalled = await client.uninstallFilter({ filter })
// true
```

##### verifyMessage()

> **verifyMessage**: (`args`) => `Promise`\<`boolean`>

Verify that a message was signed by the provided address.

Compatible with Smart Contract Accounts & Externally Owned Accounts via [ERC-6492](https://eips.ethereum.org/EIPS/eip-6492).

* Docs [https://viem.sh/docs/actions/public/verifyMessage](https://viem.sh/docs/actions/public/verifyMessage)

###### Parameters

| Parameter                                 | Type                                                                                                                                                                                                                                                                                                              | Description                                                                             |
| ----------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------- |
| `args`                                    | \{ `address`: `` `0x${string}` ``; `blockNumber`: `bigint`; `blockTag`: `BlockTag`; `factory`: `` `0x${string}` ``; `factoryData`: `` `0x${string}` ``; `message`: `SignableMessage`; `signature`: `` `0x${string}` `` \| `Signature` \| `ByteArray`; `universalSignatureVerifierAddress`: `` `0x${string}` ``; } | -                                                                                       |
| `args.address`                            | `` `0x${string}` ``                                                                                                                                                                                                                                                                                               | The address that signed the original message.                                           |
| `args.blockNumber`?                       | `bigint`                                                                                                                                                                                                                                                                                                          | The balance of the account at a block number.                                           |
| `args.blockTag`?                          | `BlockTag`                                                                                                                                                                                                                                                                                                        | The balance of the account at a block tag. **Default** `'latest'`                       |
| `args.factory`?                           | `` `0x${string}` ``                                                                                                                                                                                                                                                                                               | -                                                                                       |
| `args.factoryData`?                       | `` `0x${string}` ``                                                                                                                                                                                                                                                                                               | -                                                                                       |
| `args.message`                            | `SignableMessage`                                                                                                                                                                                                                                                                                                 | The message to be verified.                                                             |
| `args.signature`                          | `` `0x${string}` `` \| `Signature` \| `ByteArray`                                                                                                                                                                                                                                                                 | The signature that was generated by signing the message with the address's private key. |
| `args.universalSignatureVerifierAddress`? | `` `0x${string}` ``                                                                                                                                                                                                                                                                                               | -                                                                                       |

###### Returns

`Promise`\<`boolean`>

Whether or not the signature is valid. VerifyMessageReturnType

##### verifySiweMessage()

> **verifySiweMessage**: (`args`) => `Promise`\<`boolean`>

Verifies [EIP-4361](https://eips.ethereum.org/EIPS/eip-4361) formatted message was signed.

Compatible with Smart Contract Accounts & Externally Owned Accounts via [ERC-6492](https://eips.ethereum.org/EIPS/eip-6492).

* Docs [https://viem.sh/docs/siwe/actions/verifySiweMessage](https://viem.sh/docs/siwe/actions/verifySiweMessage)

###### Parameters

| Parameter           | Type                                                                                                                                                                                                                    | Description                                                                                      |
| ------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------ |
| `args`              | \{ `address`: `` `0x${string}` ``; `blockNumber`: `bigint`; `blockTag`: `BlockTag`; `domain`: `string`; `message`: `string`; `nonce`: `string`; `scheme`: `string`; `signature`: `` `0x${string}` ``; `time`: `Date`; } | -                                                                                                |
| `args.address`?     | `` `0x${string}` ``                                                                                                                                                                                                     | Ethereum address to check against.                                                               |
| `args.blockNumber`? | `bigint`                                                                                                                                                                                                                | The balance of the account at a block number.                                                    |
| `args.blockTag`?    | `BlockTag`                                                                                                                                                                                                              | The balance of the account at a block tag. **Default** `'latest'`                                |
| `args.domain`?      | `string`                                                                                                                                                                                                                | [RFC 3986](https://www.rfc-editor.org/rfc/rfc3986) authority to check against.                   |
| `args.message`      | `string`                                                                                                                                                                                                                | EIP-4361 formatted message.                                                                      |
| `args.nonce`?       | `string`                                                                                                                                                                                                                | Random string to check against.                                                                  |
| `args.scheme`?      | `string`                                                                                                                                                                                                                | [RFC 3986](https://www.rfc-editor.org/rfc/rfc3986#section-3.1) URI scheme to check against.      |
| `args.signature`    | `` `0x${string}` ``                                                                                                                                                                                                     | Signature to check against.                                                                      |
| `args.time`?        | `Date`                                                                                                                                                                                                                  | Current time to check optional `expirationTime` and `notBefore` fields. **Default** `new Date()` |

###### Returns

`Promise`\<`boolean`>

Whether or not the signature is valid. VerifySiweMessageReturnType

##### verifyTypedData()

> **verifyTypedData**: (`args`) => `Promise`\<`boolean`>

Verify that typed data was signed by the provided address.

* Docs [https://viem.sh/docs/actions/public/verifyTypedData](https://viem.sh/docs/actions/public/verifyTypedData)

###### Parameters

| Parameter | Type                        |
| --------- | --------------------------- |
| `args`    | `VerifyTypedDataParameters` |

###### Returns

`Promise`\<`boolean`>

Whether or not the signature is valid. VerifyTypedDataReturnType

##### waitForTransactionReceipt()

> **waitForTransactionReceipt**: (`args`) => `Promise`\<`TransactionReceipt`>

Waits for the [Transaction](https://viem.sh/docs/glossary/terms#transaction) to be included on a [Block](https://viem.sh/docs/glossary/terms#block) (one confirmation), and then returns the [Transaction Receipt](https://viem.sh/docs/glossary/terms#transaction-receipt). If the Transaction reverts, then the action will throw an error.

* Docs: [https://viem.sh/docs/actions/public/waitForTransactionReceipt](https://viem.sh/docs/actions/public/waitForTransactionReceipt)
* Example: [https://stackblitz.com/github/wevm/viem/tree/main/examples/transactions\_sending-transactions](https://stackblitz.com/github/wevm/viem/tree/main/examples/transactions_sending-transactions)
* JSON-RPC Methods:
  * Polls [`eth_getTransactionReceipt`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_getTransactionReceipt) on each block until it has been processed.
  * If a Transaction has been replaced:
    * Calls [`eth_getBlockByNumber`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_getblockbynumber) and extracts the transactions
    * Checks if one of the Transactions is a replacement
    * If so, calls [`eth_getTransactionReceipt`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_getTransactionReceipt).

###### Parameters

| Parameter | Type                                            | Description                         |
| --------- | ----------------------------------------------- | ----------------------------------- |
| `args`    | `WaitForTransactionReceiptParameters`\<`Chain`> | WaitForTransactionReceiptParameters |

###### Returns

`Promise`\<`TransactionReceipt`>

The transaction receipt. WaitForTransactionReceiptReturnType

###### Remarks

The `waitForTransactionReceipt` action additionally supports Replacement detection (e.g. sped up Transactions).

Transactions can be replaced when a user modifies their transaction in their wallet (to speed up or cancel). Transactions are replaced when they are sent from the same nonce.

There are 3 types of Transaction Replacement reasons:

* `repriced`: The gas price has been modified (e.g. different `maxFeePerGas`)
* `cancelled`: The Transaction has been cancelled (e.g. `value === 0n`)
* `replaced`: The Transaction has been replaced (e.g. different `value` or `data`)

###### Example

```ts theme={null}
import { createPublicClient, http } from 'viem'
import { mainnet } from 'viem/chains'

const client = createPublicClient({
  chain: mainnet,
  transport: http(),
})
const transactionReceipt = await client.waitForTransactionReceipt({
  hash: '0x4ca7ee652d57678f26e887c149ab0735f41de37bcad58c9f6d3ed5824f15b74d',
})
```

##### watchBlockNumber()

> **watchBlockNumber**: (`args`) => `WatchBlockNumberReturnType`

Watches and returns incoming block numbers.

* Docs: [https://viem.sh/docs/actions/public/watchBlockNumber](https://viem.sh/docs/actions/public/watchBlockNumber)
* Examples: [https://stackblitz.com/github/wevm/viem/tree/main/examples/blocks\_watching-blocks](https://stackblitz.com/github/wevm/viem/tree/main/examples/blocks_watching-blocks)
* JSON-RPC Methods:
  * When `poll: true`, calls [`eth_blockNumber`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_blocknumber) on a polling interval.
  * When `poll: false` & WebSocket Transport, uses a WebSocket subscription via [`eth_subscribe`](https://docs.alchemy.com/reference/eth-subscribe-polygon) and the `"newHeads"` event.

###### Parameters

| Parameter | Type                         | Description                |
| --------- | ---------------------------- | -------------------------- |
| `args`    | `WatchBlockNumberParameters` | WatchBlockNumberParameters |

###### Returns

`WatchBlockNumberReturnType`

A function that can be invoked to stop watching for new block numbers. WatchBlockNumberReturnType

###### Example

```ts theme={null}
import { createPublicClient, http } from 'viem'
import { mainnet } from 'viem/chains'

const client = createPublicClient({
  chain: mainnet,
  transport: http(),
})
const unwatch = await client.watchBlockNumber({
  onBlockNumber: (blockNumber) => console.log(blockNumber),
})
```

##### watchBlocks()

> **watchBlocks**: \<`includeTransactions`, `blockTag`>(`args`) => `WatchBlocksReturnType`

Watches and returns information for incoming blocks.

* Docs: [https://viem.sh/docs/actions/public/watchBlocks](https://viem.sh/docs/actions/public/watchBlocks)
* Examples: [https://stackblitz.com/github/wevm/viem/tree/main/examples/blocks\_watching-blocks](https://stackblitz.com/github/wevm/viem/tree/main/examples/blocks_watching-blocks)
* JSON-RPC Methods:
  * When `poll: true`, calls [`eth_getBlockByNumber`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_getBlockByNumber) on a polling interval.
  * When `poll: false` & WebSocket Transport, uses a WebSocket subscription via [`eth_subscribe`](https://docs.alchemy.com/reference/eth-subscribe-polygon) and the `"newHeads"` event.

###### Type Parameters

| Type Parameter                            | Default type |
| ----------------------------------------- | ------------ |
| `includeTransactions` *extends* `boolean` | `false`      |
| `blockTag` *extends* `BlockTag`           | `"latest"`   |

###### Parameters

| Parameter | Type                                                                                  | Description           |
| --------- | ------------------------------------------------------------------------------------- | --------------------- |
| `args`    | `WatchBlocksParameters`\<`HttpTransport`, `Chain`, `includeTransactions`, `blockTag`> | WatchBlocksParameters |

###### Returns

`WatchBlocksReturnType`

A function that can be invoked to stop watching for new block numbers. WatchBlocksReturnType

###### Example

```ts theme={null}
import { createPublicClient, http } from 'viem'
import { mainnet } from 'viem/chains'

const client = createPublicClient({
  chain: mainnet,
  transport: http(),
})
const unwatch = await client.watchBlocks({
  onBlock: (block) => console.log(block),
})
```

##### watchContractEvent()

> **watchContractEvent**: \<`abi`, `eventName`, `strict`>(`args`) => `WatchContractEventReturnType`

Watches and returns emitted contract event logs.

* Docs: [https://viem.sh/docs/contract/watchContractEvent](https://viem.sh/docs/contract/watchContractEvent)

###### Type Parameters

| Type Parameter                                 | Default type |
| ---------------------------------------------- | ------------ |
| `abi` *extends* readonly `unknown`\[] \| `Abi` | -            |
| `eventName` *extends* `string`                 | -            |
| `strict` *extends* `boolean` \| `undefined`    | `undefined`  |

###### Parameters

| Parameter | Type                                                                           | Description                  |
| --------- | ------------------------------------------------------------------------------ | ---------------------------- |
| `args`    | `WatchContractEventParameters`\<`abi`, `eventName`, `strict`, `HttpTransport`> | WatchContractEventParameters |

###### Returns

`WatchContractEventReturnType`

A function that can be invoked to stop watching for new event logs. WatchContractEventReturnType

###### Remarks

This Action will batch up all the event logs found within the [`pollingInterval`](https://viem.sh/docs/contract/watchContractEvent#pollinginterval-optional), and invoke them via [`onLogs`](https://viem.sh/docs/contract/watchContractEvent#onLogs).

`watchContractEvent` will attempt to create an [Event Filter](https://viem.sh/docs/contract/createContractEventFilter) and listen to changes to the Filter per polling interval, however, if the RPC Provider does not support Filters (e.g. `eth_newFilter`), then `watchContractEvent` will fall back to using [`getLogs`](https://viem.sh/docs/actions/public/getLogs) instead.

###### Example

```ts theme={null}
import { createPublicClient, http, parseAbi } from 'viem'
import { mainnet } from 'viem/chains'

const client = createPublicClient({
  chain: mainnet,
  transport: http(),
})
const unwatch = client.watchContractEvent({
  address: '0xFBA3912Ca04dd458c843e2EE08967fC04f3579c2',
  abi: parseAbi(['event Transfer(address indexed from, address indexed to, uint256 value)']),
  eventName: 'Transfer',
  args: { from: '0xc961145a54C96E3aE9bAA048c4F4D6b04C13916b' },
  onLogs: (logs) => console.log(logs),
})
```

##### watchEvent()

> **watchEvent**: \<`abiEvent`, `abiEvents`, `strict`>(`args`) => `WatchEventReturnType`

Watches and returns emitted [Event Logs](https://viem.sh/docs/glossary/terms#event-log).

* Docs: [https://viem.sh/docs/actions/public/watchEvent](https://viem.sh/docs/actions/public/watchEvent)
* JSON-RPC Methods:
  * **RPC Provider supports `eth_newFilter`:**
    * Calls [`eth_newFilter`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_newfilter) to create a filter (called on initialize).
    * On a polling interval, it will call [`eth_getFilterChanges`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_getfilterchanges).
  * **RPC Provider does not support `eth_newFilter`:**
    * Calls [`eth_getLogs`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_getlogs) for each block between the polling interval.

###### Type Parameters

| Type Parameter                                                                       | Default type                                                  |
| ------------------------------------------------------------------------------------ | ------------------------------------------------------------- |
| `abiEvent` *extends* `AbiEvent` \| `undefined`                                       | `undefined`                                                   |
| `abiEvents` *extends* readonly `unknown`\[] \| readonly `AbiEvent`\[] \| `undefined` | `abiEvent` *extends* `AbiEvent` ? \[`abiEvent`] : `undefined` |
| `strict` *extends* `boolean` \| `undefined`                                          | `undefined`                                                   |

###### Parameters

| Parameter | Type                                                                        | Description          |
| --------- | --------------------------------------------------------------------------- | -------------------- |
| `args`    | `WatchEventParameters`\<`abiEvent`, `abiEvents`, `strict`, `HttpTransport`> | WatchEventParameters |

###### Returns

`WatchEventReturnType`

A function that can be invoked to stop watching for new Event Logs. WatchEventReturnType

###### Remarks

This Action will batch up all the Event Logs found within the [`pollingInterval`](https://viem.sh/docs/actions/public/watchEvent#pollinginterval-optional), and invoke them via [`onLogs`](https://viem.sh/docs/actions/public/watchEvent#onLogs).

`watchEvent` will attempt to create an [Event Filter](https://viem.sh/docs/actions/public/createEventFilter) and listen to changes to the Filter per polling interval, however, if the RPC Provider does not support Filters (e.g. `eth_newFilter`), then `watchEvent` will fall back to using [`getLogs`](https://viem.sh/docs/actions/public/getLogs) instead.

###### Example

```ts theme={null}
import { createPublicClient, http } from 'viem'
import { mainnet } from 'viem/chains'

const client = createPublicClient({
  chain: mainnet,
  transport: http(),
})
const unwatch = client.watchEvent({
  onLogs: (logs) => console.log(logs),
})
```

##### watchPendingTransactions()

> **watchPendingTransactions**: (`args`) => `WatchPendingTransactionsReturnType`

Watches and returns pending transaction hashes.

* Docs: [https://viem.sh/docs/actions/public/watchPendingTransactions](https://viem.sh/docs/actions/public/watchPendingTransactions)
* JSON-RPC Methods:
  * When `poll: true`
    * Calls [`eth_newPendingTransactionFilter`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_newpendingtransactionfilter) to initialize the filter.
    * Calls [`eth_getFilterChanges`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_getFilterChanges) on a polling interval.
  * When `poll: false` & WebSocket Transport, uses a WebSocket subscription via [`eth_subscribe`](https://docs.alchemy.com/reference/eth-subscribe-polygon) and the `"newPendingTransactions"` event.

###### Parameters

| Parameter | Type                                                   | Description                        |
| --------- | ------------------------------------------------------ | ---------------------------------- |
| `args`    | `WatchPendingTransactionsParameters`\<`HttpTransport`> | WatchPendingTransactionsParameters |

###### Returns

`WatchPendingTransactionsReturnType`

A function that can be invoked to stop watching for new pending transaction hashes. WatchPendingTransactionsReturnType

###### Remarks

This Action will batch up all the pending transactions found within the [`pollingInterval`](https://viem.sh/docs/actions/public/watchPendingTransactions#pollinginterval-optional), and invoke them via [`onTransactions`](https://viem.sh/docs/actions/public/watchPendingTransactions#ontransactions).

###### Example

```ts theme={null}
import { createPublicClient, http } from 'viem'
import { mainnet } from 'viem/chains'

const client = createPublicClient({
  chain: mainnet,
  transport: http(),
})
const unwatch = await client.watchPendingTransactions({
  onTransactions: (hashes) => console.log(hashes),
})
```

***

### isSignerApproved()

> **isSignerApproved**(`signerLocator`): `Promise`\<`boolean`>

Defined in: [packages/wallets/src/wallets/wallet.ts:866](https://github.com/Crossmint/crossmint-sdk/blob/main/packages/wallets/src/wallets/wallet.ts#L866)

Check if a signer is approved and usable for the current wallet chain.

#### Parameters

| Parameter       | Type     | Description                        |
| --------------- | -------- | ---------------------------------- |
| `signerLocator` | `string` | The locator of the signer to check |

#### Returns

`Promise`\<`boolean`>

true if the signer is approved for this chain

#### Inherited from

[`Wallet`](./Wallet).[`isSignerApproved`](./Wallet#issignerapproved)

***

### needsRecovery()

> **needsRecovery**(): `boolean`

Defined in: [packages/wallets/src/wallets/wallet.ts:875](https://github.com/Crossmint/crossmint-sdk/blob/main/packages/wallets/src/wallets/wallet.ts#L875)

Whether the wallet needs recovery (signer registration) before the next transaction.

#### Returns

`boolean`

true if recovery is needed

#### Inherited from

[`Wallet`](./Wallet).[`needsRecovery`](./Wallet#needsrecovery)

***

### nfts()

> **nfts**(`params`): `Promise`\<`unknown`>

Defined in: [packages/wallets/src/wallets/wallet.ts:394](https://github.com/Crossmint/crossmint-sdk/blob/main/packages/wallets/src/wallets/wallet.ts#L394)

Get the wallet NFTs

#### Parameters

| Parameter        | Type                                        | Description                 |
| ---------------- | ------------------------------------------- | --------------------------- |
| `params`         | \{ `page`: `number`; `perPage`: `number`; } | The parameters              |
| `params.page`    | `number`                                    | The page number             |
| `params.perPage` | `number`                                    | The number of NFTs per page |

#### Returns

`Promise`\<`unknown`>

The NFTs

#### Inherited from

[`Wallet`](./Wallet).[`nfts`](./Wallet#nfts)

***

### recover()

> **recover**(): `Promise`\<`void`>

Defined in: [packages/wallets/src/wallets/wallet.ts:891](https://github.com/Crossmint/crossmint-sdk/blob/main/packages/wallets/src/wallets/wallet.ts#L891)

Register a device signer with the wallet using the recovery signer.
Generates a new device key and registers it on-chain.
Returns early if the device signer's locator is already approved on-chain.

#### Returns

`Promise`\<`void`>

#### Inherited from

[`Wallet`](./Wallet).[`recover`](./Wallet#recover)

***

### send()

> **send**\<`T`>(`to`, `token`, `amount`, `options`?): `Promise`\<[`Transaction`](../type-aliases/Transaction)\<`T` *extends* `PrepareOnly`\<`true`> ? `true` : `false`>>

Defined in: [packages/wallets/src/wallets/wallet.ts:461](https://github.com/Crossmint/crossmint-sdk/blob/main/packages/wallets/src/wallets/wallet.ts#L461)

Send a token to a wallet or user locator

#### Type Parameters

| Type Parameter                                             | Default type |
| ---------------------------------------------------------- | ------------ |
| `T` *extends* `SendTokenTransactionOptions` \| `undefined` | `undefined`  |

#### Parameters

| Parameter  | Type                      | Description                             |
| ---------- | ------------------------- | --------------------------------------- |
| `to`       | `string` \| `UserLocator` | The recipient (address or user locator) |
| `token`    | `string`                  | The token (address or currency symbol)  |
| `amount`   | `string`                  | The amount to send (decimal units)      |
| `options`? | `T`                       | The options for the transaction         |

#### Returns

`Promise`\<[`Transaction`](../type-aliases/Transaction)\<`T` *extends* `PrepareOnly`\<`true`> ? `true` : `false`>>

The transaction

#### Inherited from

[`Wallet`](./Wallet).[`send`](./Wallet#send)

***

### sendTransaction()

> **sendTransaction**\<`T`>(`params`): `Promise`\<[`Transaction`](../type-aliases/Transaction)\<`T`\[`"options"`] *extends* `PrepareOnly`\<`true`> ? `true` : `false`>>

Defined in: [packages/wallets/src/wallets/evm.ts:58](https://github.com/Crossmint/crossmint-sdk/blob/main/packages/wallets/src/wallets/evm.ts#L58)

Send a raw EVM transaction.

#### Type Parameters

| Type Parameter                                                             |
| -------------------------------------------------------------------------- |
| `T` *extends* [`EVMTransactionInput`](../type-aliases/EVMTransactionInput) |

#### Parameters

| Parameter | Type | Description                                                             |
| --------- | ---- | ----------------------------------------------------------------------- |
| `params`  | `T`  | The transaction parameters (raw transaction, ABI call, or encoded data) |

#### Returns

`Promise`\<[`Transaction`](../type-aliases/Transaction)\<`T`\[`"options"`] *extends* `PrepareOnly`\<`true`> ? `true` : `false`>>

The transaction result

***

### signerIsRegistered()

> **signerIsRegistered**(`signerLocator`): `Promise`\<`boolean`>

Defined in: [packages/wallets/src/wallets/wallet.ts:856](https://github.com/Crossmint/crossmint-sdk/blob/main/packages/wallets/src/wallets/wallet.ts#L856)

Check if a signer is registered in this wallet.

#### Parameters

| Parameter       | Type     | Description                        |
| --------------- | -------- | ---------------------------------- |
| `signerLocator` | `string` | The locator of the signer to check |

#### Returns

`Promise`\<`boolean`>

true if the signer is registered

#### Inherited from

[`Wallet`](./Wallet).[`signerIsRegistered`](./Wallet#signerisregistered)

***

### signers()

> **signers**(): `Promise`\<[`Signer`](../type-aliases/Signer)\[]>

Defined in: [packages/wallets/src/wallets/wallet.ts:995](https://github.com/Crossmint/crossmint-sdk/blob/main/packages/wallets/src/wallets/wallet.ts#L995)

List the signers for this wallet.
Returns full signer objects with status.
For EVM wallets, only signers with an approval (pending or completed) for the wallet's chain are included.

#### Returns

`Promise`\<[`Signer`](../type-aliases/Signer)\[]>

The signers

#### Inherited from

[`Wallet`](./Wallet).[`signers`](./Wallet#signers)

***

### signMessage()

> **signMessage**\<`T`>(`params`): `Promise`\<[`Signature`](../type-aliases/Signature)\<`T`\[`"options"`] *extends* `PrepareOnly`\<`true`> ? `true` : `false`>>

Defined in: [packages/wallets/src/wallets/evm.ts:98](https://github.com/Crossmint/crossmint-sdk/blob/main/packages/wallets/src/wallets/evm.ts#L98)

Sign a message with the wallet's private key.

#### Type Parameters

| Type Parameter                   |
| -------------------------------- |
| `T` *extends* `SignMessageInput` |

#### Parameters

| Parameter | Type | Description         |
| --------- | ---- | ------------------- |
| `params`  | `T`  | The message to sign |

#### Returns

`Promise`\<[`Signature`](../type-aliases/Signature)\<`T`\[`"options"`] *extends* `PrepareOnly`\<`true`> ? `true` : `false`>>

The signature

***

### signTypedData()

> **signTypedData**\<`T`>(`params`): `Promise`\<[`Signature`](../type-aliases/Signature)\<`T`\[`"options"`] *extends* `PrepareOnly`\<`true`> ? `true` : `false`>>

Defined in: [packages/wallets/src/wallets/evm.ts:145](https://github.com/Crossmint/crossmint-sdk/blob/main/packages/wallets/src/wallets/evm.ts#L145)

Sign EIP-712 typed data.

#### Type Parameters

| Type Parameter                     |
| ---------------------------------- |
| `T` *extends* `SignTypedDataInput` |

#### Parameters

| Parameter | Type | Description                                                            |
| --------- | ---- | ---------------------------------------------------------------------- |
| `params`  | `T`  | The typed data parameters (domain, types, message, primaryType, chain) |

#### Returns

`Promise`\<[`Signature`](../type-aliases/Signature)\<`T`\[`"options"`] *extends* `PrepareOnly`\<`true`> ? `true` : `false`>>

The signature

***

### stagingFund()

> **stagingFund**(`amount`, `chain`?): `Promise`\<`FundWalletResponse`>

Defined in: [packages/wallets/src/wallets/wallet.ts:286](https://github.com/Crossmint/crossmint-sdk/blob/main/packages/wallets/src/wallets/wallet.ts#L286)

Funds the wallet with Crossmint's stablecoin (USDXM).

**Note:** This method is only available in staging environments and exclusively supports USDXM tokens.
It cannot be used in production environments.

#### Parameters

| Parameter | Type                             | Description                                                                 |
| --------- | -------------------------------- | --------------------------------------------------------------------------- |
| `amount`  | `number`                         | The amount of USDXM to fund the wallet with                                 |
| `chain`?  | [`Chain`](../type-aliases/Chain) | Optional chain to fund on. If not provided, uses the wallet's default chain |

#### Returns

`Promise`\<`FundWalletResponse`>

The funding response

#### Throws

If the funding operation fails or if called in a production environment

#### Inherited from

[`Wallet`](./Wallet).[`stagingFund`](./Wallet#stagingfund)

***

### transaction()

> **transaction**(`transactionId`): `Promise`\<`WalletsTransactionV2025ResponseDto`>

Defined in: [packages/wallets/src/wallets/wallet.ts:420](https://github.com/Crossmint/crossmint-sdk/blob/main/packages/wallets/src/wallets/wallet.ts#L420)

Get a transaction by id

#### Parameters

| Parameter       | Type     |
| --------------- | -------- |
| `transactionId` | `string` |

#### Returns

`Promise`\<`WalletsTransactionV2025ResponseDto`>

The transaction

#### Throws

If the transaction cannot be retrieved

#### Inherited from

[`Wallet`](./Wallet).[`transaction`](./Wallet#transaction)

***

### transactions()

> **transactions**(): `Promise`\<`GetTransactionsResponse`>

Defined in: [packages/wallets/src/wallets/wallet.ts:407](https://github.com/Crossmint/crossmint-sdk/blob/main/packages/wallets/src/wallets/wallet.ts#L407)

Get the wallet transactions

#### Returns

`Promise`\<`GetTransactionsResponse`>

The transactions

#### Throws

If the transactions cannot be retrieved

#### Inherited from

[`Wallet`](./Wallet).[`transactions`](./Wallet#transactions)

***

### transfers()

> **transfers**(`params`?): `Promise`\<`WalletsActivityResponseUnstableDto`>

Defined in: [packages/wallets/src/wallets/wallet.ts:433](https://github.com/Crossmint/crossmint-sdk/blob/main/packages/wallets/src/wallets/wallet.ts#L433)

Get the wallet transfers

#### Parameters

| Parameter        | Type                                                             |
| ---------------- | ---------------------------------------------------------------- |
| `params`?        | \{ `status`: `"successful"` \| `"failed"`; `tokens`: `string`; } |
| `params.status`? | `"successful"` \| `"failed"`                                     |
| `params.tokens`? | `string`                                                         |

#### Returns

`Promise`\<`WalletsActivityResponseUnstableDto`>

The transfers

#### Throws

If the transfers cannot be retrieved

#### Inherited from

[`Wallet`](./Wallet).[`transfers`](./Wallet#transfers)

***

### useSigner()

> **useSigner**(`signer`): `Promise`\<`void`>

Defined in: [packages/wallets/src/wallets/wallet.ts:758](https://github.com/Crossmint/crossmint-sdk/blob/main/packages/wallets/src/wallets/wallet.ts#L758)

Set the active signer for this wallet.
Accepts a signer config object. The locator is inferred internally.
Works for both registered signers and the recovery signer.

For passkey signers: if no `id` is provided, the wallet will auto-select the passkey
if exactly one passkey signer is registered. If multiple passkeys exist, an `id` must be specified.

For device signers: if no device key is found locally, the signer will be created
automatically during the next transaction (via recovery).

For external-wallet signers: the config object must include an onSign callback
(applies to both registered and recovery signers).

#### Parameters

| Parameter | Type                                                                                                                                                                                                                                                                                                                                                                                  | Description                     |
| --------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------- |
| `signer`  | [`EmailSignerConfig`](../type-aliases/EmailSignerConfig) \| [`PhoneSignerConfig`](../type-aliases/PhoneSignerConfig) \| `ApiKeySignerConfig` \| [`ServerSignerConfig`](../type-aliases/ServerSignerConfig) \| [`DeviceSignerConfig`](../type-aliases/DeviceSignerConfig) \| `PasskeySignerConfig` \| [`EvmExternalWalletSignerConfig`](../type-aliases/EvmExternalWalletSignerConfig) | The signer config object to use |

#### Returns

`Promise`\<`void`>

#### Inherited from

[`Wallet`](./Wallet).[`useSigner`](./Wallet#usesigner)

***

### from()

> `static` **from**(`wallet`): `EVMWallet`

Defined in: [packages/wallets/src/wallets/evm.ts:38](https://github.com/Crossmint/crossmint-sdk/blob/main/packages/wallets/src/wallets/evm.ts#L38)

#### Parameters

| Parameter | Type                                                    |
| --------- | ------------------------------------------------------- |
| `wallet`  | [`Wallet`](./Wallet)\<[`Chain`](../type-aliases/Chain)> |

#### Returns

`EVMWallet`
