## Enumerations

### UserOpScenarioType

Defined in: [packages/sdk/src/utils/testScenarios.ts:5](https://github.com/AAStarCommunity/aastar-sdk/blob/9355f214d4f7ac03755d574206ded22f6097f351/packages/sdk/src/utils/testScenarios.ts#L5)

#### Enumeration Members

##### GASLESS\_V4

```ts
GASLESS_V4: "GASLESS_V4";
```

Defined in: [packages/sdk/src/utils/testScenarios.ts:7](https://github.com/AAStarCommunity/aastar-sdk/blob/9355f214d4f7ac03755d574206ded22f6097f351/packages/sdk/src/utils/testScenarios.ts#L7)

##### NATIVE

```ts
NATIVE: "NATIVE";
```

Defined in: [packages/sdk/src/utils/testScenarios.ts:6](https://github.com/AAStarCommunity/aastar-sdk/blob/9355f214d4f7ac03755d574206ded22f6097f351/packages/sdk/src/utils/testScenarios.ts#L6)

##### SUPER\_BPNT

```ts
SUPER_BPNT: "SUPER_BPNT";
```

Defined in: [packages/sdk/src/utils/testScenarios.ts:8](https://github.com/AAStarCommunity/aastar-sdk/blob/9355f214d4f7ac03755d574206ded22f6097f351/packages/sdk/src/utils/testScenarios.ts#L8)

##### SUPER\_CPNT

```ts
SUPER_CPNT: "SUPER_CPNT";
```

Defined in: [packages/sdk/src/utils/testScenarios.ts:9](https://github.com/AAStarCommunity/aastar-sdk/blob/9355f214d4f7ac03755d574206ded22f6097f351/packages/sdk/src/utils/testScenarios.ts#L9)

##### SUPER\_CUSTOM

```ts
SUPER_CUSTOM: "SUPER_CUSTOM";
```

Defined in: [packages/sdk/src/utils/testScenarios.ts:10](https://github.com/AAStarCommunity/aastar-sdk/blob/9355f214d4f7ac03755d574206ded22f6097f351/packages/sdk/src/utils/testScenarios.ts#L10)

## Classes

### FundingManager

Defined in: [packages/sdk/src/utils/funding.ts:65](https://github.com/AAStarCommunity/aastar-sdk/blob/9355f214d4f7ac03755d574206ded22f6097f351/packages/sdk/src/utils/funding.ts#L65)

资金管理器
提供 ETH 和 ERC20 Token 的充值、验证等工具函数

#### Constructors

##### Constructor

```ts
new FundingManager(): FundingManager;
```

###### Returns

[`FundingManager`](#fundingmanager)

#### Methods

##### batchFundETH()

```ts
static batchFundETH(params, targets): Promise<FundingResult[]>;
```

Defined in: [packages/sdk/src/utils/funding.ts:236](https://github.com/AAStarCommunity/aastar-sdk/blob/9355f214d4f7ac03755d574206ded22f6097f351/packages/sdk/src/utils/funding.ts#L236)

批量充值 ETH

###### Parameters

| Parameter | Type | Description |
| ------ | ------ | ------ |
| `params` | `Omit`\<[`FundingParams`](#fundingparams), `"targetAddress"`\> | 基础参数 |
| `targets` | `object`[] | 目标地址和金额数组 |

###### Returns

`Promise`\<`FundingResult`[]\>

充值结果数组

##### batchFundToken()

```ts
static batchFundToken(
   params, 
   tokenAddress, 
targets): Promise<FundingResult[]>;
```

Defined in: [packages/sdk/src/utils/funding.ts:261](https://github.com/AAStarCommunity/aastar-sdk/blob/9355f214d4f7ac03755d574206ded22f6097f351/packages/sdk/src/utils/funding.ts#L261)

批量充值 Token

###### Parameters

| Parameter | Type | Description |
| ------ | ------ | ------ |
| `params` | `Omit`\<[`FundingParams`](#fundingparams), `"targetAddress"`\> | 基础参数 |
| `tokenAddress` | `` `0x${string}` `` | Token 合约地址 |
| `targets` | `object`[] | 目标地址和金额数组 |

###### Returns

`Promise`\<`FundingResult`[]\>

充值结果数组

##### ensureFunding()

```ts
static ensureFunding(params): Promise<FundingResult[]>;
```

Defined in: [packages/sdk/src/utils/funding.ts:184](https://github.com/AAStarCommunity/aastar-sdk/blob/9355f214d4f7ac03755d574206ded22f6097f351/packages/sdk/src/utils/funding.ts#L184)

智能充值：检查余额，不足时自动充值

###### Parameters

| Parameter | Type | Description |
| ------ | ------ | ------ |
| `params` | `EnsureFundingParams` | 充值参数 |

###### Returns

`Promise`\<`FundingResult`[]\>

充值结果数组

##### fundWithETH()

```ts
static fundWithETH(params): Promise<FundingResult>;
```

Defined in: [packages/sdk/src/utils/funding.ts:96](https://github.com/AAStarCommunity/aastar-sdk/blob/9355f214d4f7ac03755d574206ded22f6097f351/packages/sdk/src/utils/funding.ts#L96)

充值 ETH 到目标地址

###### Parameters

| Parameter | Type | Description |
| ------ | ------ | ------ |
| `params` | `FundETHParams` | 充值参数 |

###### Returns

`Promise`\<`FundingResult`\>

充值结果

##### fundWithToken()

```ts
static fundWithToken(params): Promise<FundingResult>;
```

Defined in: [packages/sdk/src/utils/funding.ts:126](https://github.com/AAStarCommunity/aastar-sdk/blob/9355f214d4f7ac03755d574206ded22f6097f351/packages/sdk/src/utils/funding.ts#L126)

充值 ERC20 Token 到目标地址

###### Parameters

| Parameter | Type | Description |
| ------ | ------ | ------ |
| `params` | `FundTokenParams` | 充值参数 |

###### Returns

`Promise`\<`FundingResult`\>

充值结果

##### getETHBalance()

```ts
static getETHBalance(params): Promise<bigint>;
```

Defined in: [packages/sdk/src/utils/funding.ts:158](https://github.com/AAStarCommunity/aastar-sdk/blob/9355f214d4f7ac03755d574206ded22f6097f351/packages/sdk/src/utils/funding.ts#L158)

检查 ETH 余额

###### Parameters

| Parameter | Type | Description |
| ------ | ------ | ------ |
| `params` | [`FundingParams`](#fundingparams) | 基础参数 |

###### Returns

`Promise`\<`bigint`\>

ETH 余额（wei）

##### getTokenBalance()

```ts
static getTokenBalance(params, tokenAddress): Promise<bigint>;
```

Defined in: [packages/sdk/src/utils/funding.ts:169](https://github.com/AAStarCommunity/aastar-sdk/blob/9355f214d4f7ac03755d574206ded22f6097f351/packages/sdk/src/utils/funding.ts#L169)

检查 ERC20 Token 余额

###### Parameters

| Parameter | Type | Description |
| ------ | ------ | ------ |
| `params` | [`FundingParams`](#fundingparams) | 基础参数 |
| `tokenAddress` | `` `0x${string}` `` | Token 合约地址 |

###### Returns

`Promise`\<`bigint`\>

Token 余额

***

### KeyManager

Defined in: [packages/sdk/src/utils/keys.ts:26](https://github.com/AAStarCommunity/aastar-sdk/blob/9355f214d4f7ac03755d574206ded22f6097f351/packages/sdk/src/utils/keys.ts#L26)

密钥管理器
提供密钥生成、存储、加载等工具函数

#### Constructors

##### Constructor

```ts
new KeyManager(): KeyManager;
```

###### Returns

[`KeyManager`](#keymanager)

#### Methods

##### generateKeyPair()

```ts
static generateKeyPair(name): KeyPair;
```

Defined in: [packages/sdk/src/utils/keys.ts:31](https://github.com/AAStarCommunity/aastar-sdk/blob/9355f214d4f7ac03755d574206ded22f6097f351/packages/sdk/src/utils/keys.ts#L31)

生成单个密钥对

###### Parameters

| Parameter | Type | Description |
| ------ | ------ | ------ |
| `name` | `string` | 密钥名称（如 'Jason', 'Anni'） |

###### Returns

[`KeyPair`](#keypair)

##### generateKeyPairs()

```ts
static generateKeyPairs(names): KeyPair[];
```

Defined in: [packages/sdk/src/utils/keys.ts:45](https://github.com/AAStarCommunity/aastar-sdk/blob/9355f214d4f7ac03755d574206ded22f6097f351/packages/sdk/src/utils/keys.ts#L45)

批量生成密钥对

###### Parameters

| Parameter | Type | Description |
| ------ | ------ | ------ |
| `names` | `string`[] | 密钥名称数组 |

###### Returns

[`KeyPair`](#keypair)[]

##### generateMultiple()

```ts
static generateMultiple(count, prefix): KeyPair[];
```

Defined in: [packages/sdk/src/utils/keys.ts:54](https://github.com/AAStarCommunity/aastar-sdk/blob/9355f214d4f7ac03755d574206ded22f6097f351/packages/sdk/src/utils/keys.ts#L54)

生成指定数量的密钥对（自动命名为 Operator_1, Operator_2, ...）

###### Parameters

| Parameter | Type | Default value | Description |
| ------ | ------ | ------ | ------ |
| `count` | `number` | `undefined` | 数量 |
| `prefix` | `string` | `'Operator'` | 名称前缀（默认 'Operator'） |

###### Returns

[`KeyPair`](#keypair)[]

##### loadFromEnvFile()

```ts
static loadFromEnvFile(filePath): KeyPair[];
```

Defined in: [packages/sdk/src/utils/keys.ts:83](https://github.com/AAStarCommunity/aastar-sdk/blob/9355f214d4f7ac03755d574206ded22f6097f351/packages/sdk/src/utils/keys.ts#L83)

从 .env 文件加载密钥

###### Parameters

| Parameter | Type | Description |
| ------ | ------ | ------ |
| `filePath` | `string` | 文件路径（绝对路径） |

###### Returns

[`KeyPair`](#keypair)[]

密钥对数组

##### loadFromJsonFile()

```ts
static loadFromJsonFile(filePath): KeyPair[];
```

Defined in: [packages/sdk/src/utils/keys.ts:133](https://github.com/AAStarCommunity/aastar-sdk/blob/9355f214d4f7ac03755d574206ded22f6097f351/packages/sdk/src/utils/keys.ts#L133)

从 JSON 文件加载密钥

###### Parameters

| Parameter | Type | Description |
| ------ | ------ | ------ |
| `filePath` | `string` | 文件路径（绝对路径） |

###### Returns

[`KeyPair`](#keypair)[]

##### printKeys()

```ts
static printKeys(keys, showPrivateKey): void;
```

Defined in: [packages/sdk/src/utils/keys.ts:152](https://github.com/AAStarCommunity/aastar-sdk/blob/9355f214d4f7ac03755d574206ded22f6097f351/packages/sdk/src/utils/keys.ts#L152)

打印密钥信息（隐藏私钥）

###### Parameters

| Parameter | Type | Default value | Description |
| ------ | ------ | ------ | ------ |
| `keys` | [`KeyPair`](#keypair)[] | `undefined` | 密钥对数组 |
| `showPrivateKey` | `boolean` | `false` | - |

###### Returns

`void`

##### saveToEnvFile()

```ts
static saveToEnvFile(
   filePath, 
   keys, 
   overwrite): void;
```

Defined in: [packages/sdk/src/utils/keys.ts:65](https://github.com/AAStarCommunity/aastar-sdk/blob/9355f214d4f7ac03755d574206ded22f6097f351/packages/sdk/src/utils/keys.ts#L65)

保存密钥到 .env 文件

###### Parameters

| Parameter | Type | Default value | Description |
| ------ | ------ | ------ | ------ |
| `filePath` | `string` | `undefined` | 文件路径（绝对路径） |
| `keys` | [`KeyPair`](#keypair)[] | `undefined` | 密钥对数组 |
| `overwrite` | `boolean` | `false` | 是否覆盖已存在的文件（默认 false） |

###### Returns

`void`

##### saveToJsonFile()

```ts
static saveToJsonFile(
   filePath, 
   keys, 
   overwrite): void;
```

Defined in: [packages/sdk/src/utils/keys.ts:111](https://github.com/AAStarCommunity/aastar-sdk/blob/9355f214d4f7ac03755d574206ded22f6097f351/packages/sdk/src/utils/keys.ts#L111)

保存密钥到 JSON 文件（包含地址信息）

###### Parameters

| Parameter | Type | Default value | Description |
| ------ | ------ | ------ | ------ |
| `filePath` | `string` | `undefined` | 文件路径（绝对路径） |
| `keys` | [`KeyPair`](#keypair)[] | `undefined` | 密钥对数组 |
| `overwrite` | `boolean` | `false` | 是否覆盖已存在的文件（默认 false） |

###### Returns

`void`

***

### UserOpScenarioBuilder

Defined in: [packages/sdk/src/utils/testScenarios.ts:30](https://github.com/AAStarCommunity/aastar-sdk/blob/9355f214d4f7ac03755d574206ded22f6097f351/packages/sdk/src/utils/testScenarios.ts#L30)

#### Constructors

##### Constructor

```ts
new UserOpScenarioBuilder(): UserOpScenarioBuilder;
```

###### Returns

[`UserOpScenarioBuilder`](#useropscenariobuilder)

#### Methods

##### buildTransferScenario()

```ts
static buildTransferScenario(type, params): Promise<{
  opHash: `0x${string}`;
  userOp: any;
}>;
```

Defined in: [packages/sdk/src/utils/testScenarios.ts:34](https://github.com/AAStarCommunity/aastar-sdk/blob/9355f214d4f7ac03755d574206ded22f6097f351/packages/sdk/src/utils/testScenarios.ts#L34)

Builds a signed PackedUserOperation for a token transfer based on the specified scenario.

###### Parameters

| Parameter | Type |
| ------ | ------ |
| `type` | [`UserOpScenarioType`](#useropscenariotype) |
| `params` | [`ScenarioParams`](#scenarioparams) |

###### Returns

`Promise`\<\{
  `opHash`: `` `0x${string}` ``;
  `userOp`: `any`;
\}\>

## Interfaces

### FundingParams

Defined in: [packages/sdk/src/utils/funding.ts:7](https://github.com/AAStarCommunity/aastar-sdk/blob/9355f214d4f7ac03755d574206ded22f6097f351/packages/sdk/src/utils/funding.ts#L7)

资金管理参数

#### Properties

##### chain

```ts
chain: Chain;
```

Defined in: [packages/sdk/src/utils/funding.ts:11](https://github.com/AAStarCommunity/aastar-sdk/blob/9355f214d4f7ac03755d574206ded22f6097f351/packages/sdk/src/utils/funding.ts#L11)

链配置

##### rpcUrl

```ts
rpcUrl: string;
```

Defined in: [packages/sdk/src/utils/funding.ts:9](https://github.com/AAStarCommunity/aastar-sdk/blob/9355f214d4f7ac03755d574206ded22f6097f351/packages/sdk/src/utils/funding.ts#L9)

RPC URL

##### supplierKey

```ts
supplierKey: `0x${string}`;
```

Defined in: [packages/sdk/src/utils/funding.ts:13](https://github.com/AAStarCommunity/aastar-sdk/blob/9355f214d4f7ac03755d574206ded22f6097f351/packages/sdk/src/utils/funding.ts#L13)

资金提供者私钥

##### targetAddress

```ts
targetAddress: `0x${string}`;
```

Defined in: [packages/sdk/src/utils/funding.ts:15](https://github.com/AAStarCommunity/aastar-sdk/blob/9355f214d4f7ac03755d574206ded22f6097f351/packages/sdk/src/utils/funding.ts#L15)

目标地址

***

### KeyPair

Defined in: [packages/sdk/src/utils/keys.ts:16](https://github.com/AAStarCommunity/aastar-sdk/blob/9355f214d4f7ac03755d574206ded22f6097f351/packages/sdk/src/utils/keys.ts#L16)

密钥对接口

#### Properties

##### address

```ts
address: `0x${string}`;
```

Defined in: [packages/sdk/src/utils/keys.ts:19](https://github.com/AAStarCommunity/aastar-sdk/blob/9355f214d4f7ac03755d574206ded22f6097f351/packages/sdk/src/utils/keys.ts#L19)

##### name

```ts
name: string;
```

Defined in: [packages/sdk/src/utils/keys.ts:17](https://github.com/AAStarCommunity/aastar-sdk/blob/9355f214d4f7ac03755d574206ded22f6097f351/packages/sdk/src/utils/keys.ts#L17)

##### privateKey

```ts
privateKey: `0x${string}`;
```

Defined in: [packages/sdk/src/utils/keys.ts:18](https://github.com/AAStarCommunity/aastar-sdk/blob/9355f214d4f7ac03755d574206ded22f6097f351/packages/sdk/src/utils/keys.ts#L18)

***

### ScenarioParams

Defined in: [packages/sdk/src/utils/testScenarios.ts:13](https://github.com/AAStarCommunity/aastar-sdk/blob/9355f214d4f7ac03755d574206ded22f6097f351/packages/sdk/src/utils/testScenarios.ts#L13)

#### Properties

##### amount

```ts
amount: bigint;
```

Defined in: [packages/sdk/src/utils/testScenarios.ts:18](https://github.com/AAStarCommunity/aastar-sdk/blob/9355f214d4f7ac03755d574206ded22f6097f351/packages/sdk/src/utils/testScenarios.ts#L18)

##### chainId

```ts
chainId: number;
```

Defined in: [packages/sdk/src/utils/testScenarios.ts:20](https://github.com/AAStarCommunity/aastar-sdk/blob/9355f214d4f7ac03755d574206ded22f6097f351/packages/sdk/src/utils/testScenarios.ts#L20)

##### entryPoint

```ts
entryPoint: `0x${string}`;
```

Defined in: [packages/sdk/src/utils/testScenarios.ts:19](https://github.com/AAStarCommunity/aastar-sdk/blob/9355f214d4f7ac03755d574206ded22f6097f351/packages/sdk/src/utils/testScenarios.ts#L19)

##### gasToken?

```ts
optional gasToken: `0x${string}`;
```

Defined in: [packages/sdk/src/utils/testScenarios.ts:27](https://github.com/AAStarCommunity/aastar-sdk/blob/9355f214d4f7ac03755d574206ded22f6097f351/packages/sdk/src/utils/testScenarios.ts#L27)

##### nonceKey?

```ts
optional nonceKey: bigint;
```

Defined in: [packages/sdk/src/utils/testScenarios.ts:26](https://github.com/AAStarCommunity/aastar-sdk/blob/9355f214d4f7ac03755d574206ded22f6097f351/packages/sdk/src/utils/testScenarios.ts#L26)

##### operator?

```ts
optional operator: `0x${string}`;
```

Defined in: [packages/sdk/src/utils/testScenarios.ts:23](https://github.com/AAStarCommunity/aastar-sdk/blob/9355f214d4f7ac03755d574206ded22f6097f351/packages/sdk/src/utils/testScenarios.ts#L23)

##### ownerAccount

```ts
ownerAccount: any;
```

Defined in: [packages/sdk/src/utils/testScenarios.ts:15](https://github.com/AAStarCommunity/aastar-sdk/blob/9355f214d4f7ac03755d574206ded22f6097f351/packages/sdk/src/utils/testScenarios.ts#L15)

##### paymaster?

```ts
optional paymaster: `0x${string}`;
```

Defined in: [packages/sdk/src/utils/testScenarios.ts:22](https://github.com/AAStarCommunity/aastar-sdk/blob/9355f214d4f7ac03755d574206ded22f6097f351/packages/sdk/src/utils/testScenarios.ts#L22)

##### paymasterGasLimit?

```ts
optional paymasterGasLimit: bigint;
```

Defined in: [packages/sdk/src/utils/testScenarios.ts:24](https://github.com/AAStarCommunity/aastar-sdk/blob/9355f214d4f7ac03755d574206ded22f6097f351/packages/sdk/src/utils/testScenarios.ts#L24)

##### paymasterPostOpGasLimit?

```ts
optional paymasterPostOpGasLimit: bigint;
```

Defined in: [packages/sdk/src/utils/testScenarios.ts:25](https://github.com/AAStarCommunity/aastar-sdk/blob/9355f214d4f7ac03755d574206ded22f6097f351/packages/sdk/src/utils/testScenarios.ts#L25)

##### publicClient

```ts
publicClient: object;
```

Defined in: [packages/sdk/src/utils/testScenarios.ts:21](https://github.com/AAStarCommunity/aastar-sdk/blob/9355f214d4f7ac03755d574206ded22f6097f351/packages/sdk/src/utils/testScenarios.ts#L21)

###### account

```ts
account: undefined;
```

The Account of the Client.

###### batch?

```ts
optional batch: object;
```

Flags for batch settings.

###### batch.multicall?

```ts
optional multicall: 
  | boolean
  | {
  batchSize?: number;
  deployless?: boolean;
  wait?: number;
};
```

Toggle to enable `eth_call` multicall aggregation.

###### Type Declaration

`boolean`

```ts
{
  batchSize?: number;
  deployless?: boolean;
  wait?: number;
}
```

###### cacheTime

```ts
cacheTime: number;
```

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

###### call()

```ts
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
- JSON-RPC Methods: [`eth_call`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_call)

###### Parameters

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

###### Returns

`Promise`\<`CallReturnType`\>

The call data. CallReturnType

###### Example

```ts
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?

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

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

###### Type Declaration

`false`

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

###### chain

```ts
chain: Chain | undefined;
```

Chain for the client.

###### createAccessList()

```ts
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
- JSON-RPC Methods: `eth_createAccessList`

###### Parameters

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

###### Returns

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

The call data. CreateAccessListReturnType

###### Example

```ts
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()

```ts
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
- 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
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()

```ts
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

###### 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
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()

```ts
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
- 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`\<`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
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()

```ts
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
- 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
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()

```ts
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

###### 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
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()

```ts
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

###### Type Parameters

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

###### Parameters

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

###### Returns

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

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

###### Example

```ts
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()

```ts
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
- JSON-RPC Methods: [`eth_estimateGas`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_estimategas)

###### Parameters

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

###### Returns

`Promise`\<`bigint`\>

The gas estimate (in wei). EstimateGasReturnType

###### Example

```ts
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()

```ts
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

###### 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
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?

```ts
optional experimental_blockTag: BlockTag;
```

Default block tag to use for RPC requests.

###### extend()

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

###### Type Parameters

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

###### Parameters

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

###### Returns

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

###### fillTransaction()

```ts
fillTransaction: <chainOverride, accountOverride>(args) => Promise<FillTransactionReturnType<Chain | undefined, chainOverride>>;
```

Fills a transaction request with the necessary fields to be signed over.

- Docs: https://viem.sh/docs/actions/public/fillTransaction

###### Type Parameters

| Type Parameter | Default type |
| ------ | ------ |
| `chainOverride` *extends* `Chain` \| `undefined` | `undefined` |
| `accountOverride` *extends* `` `0x${string}` `` \| `Account` \| `undefined` | `undefined` |

###### Parameters

| Parameter | Type |
| ------ | ------ |
| `args` | `FillTransactionParameters`\<`Chain` \| `undefined`, `Account` \| `undefined`, `chainOverride`, `accountOverride`\> |

###### Returns

`Promise`\<`FillTransactionReturnType`\<`Chain` \| `undefined`, `chainOverride`\>\>

The filled transaction. FillTransactionReturnType

###### Example

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

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

###### getBalance()

```ts
getBalance: (args) => Promise<bigint>;
```

Returns the balance of an address in wei.

- Docs: 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
const balance = await getBalance(client, {
  address: '0xA0Cf798816D4b9b9866b5330EEa46a18382f251e',
  blockTag: 'safe'
})
const balanceAsEther = formatEther(balance)
// "6.942"
```

###### Example

```ts
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()

```ts
getBlobBaseFee: () => Promise<bigint>;
```

Returns the base fee per blob gas in wei.

- Docs: 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
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()

```ts
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
- Examples: 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
import { createPublicClient, http } from 'viem'
import { mainnet } from 'viem/chains'

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

###### getBlockNumber()

```ts
getBlockNumber: (args?) => Promise<bigint>;
```

Returns the number of the most recent block seen.

- Docs: https://viem.sh/docs/actions/public/getBlockNumber
- Examples: 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
import { createPublicClient, http } from 'viem'
import { mainnet } from 'viem/chains'

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

###### getBlockTransactionCount()

```ts
getBlockTransactionCount: (args?) => Promise<number>;
```

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

- Docs: 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
import { createPublicClient, http } from 'viem'
import { mainnet } from 'viem/chains'

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

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

```ts
getBytecode: (args) => Promise<GetCodeReturnType>;
```

###### Parameters

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

###### Returns

`Promise`\<`GetCodeReturnType`\>

###### Deprecated

Use `getCode` instead.

###### getChainId()

```ts
getChainId: () => Promise<number>;
```

Returns the chain ID associated with the current network.

- Docs: 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
import { createPublicClient, http } from 'viem'
import { mainnet } from 'viem/chains'

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

###### getCode()

```ts
getCode: (args) => Promise<GetCodeReturnType>;
```

Retrieves the bytecode at an address.

- Docs: 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
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()

```ts
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
- 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
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()

```ts
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
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()

```ts
getEnsAddress: (args) => Promise<GetEnsAddressReturnType>;
```

Gets address for ENS name.

- Docs: https://viem.sh/docs/ens/actions/getEnsAddress
- Examples: https://stackblitz.com/github/wevm/viem/tree/main/examples/ens

###### Parameters

| Parameter | Type | Description |
| ------ | ------ | ------ |
| `args` | \{ `blockNumber?`: `bigint`; `blockTag?`: `BlockTag`; `coinType?`: `bigint`; `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?` | `bigint` | ENSIP-9 compliant coinType (chain) to get ENS address for. To get the `coinType` for a chain id, use the `toCoinType` function: `import { toCoinType } from 'viem' import { base } from 'viem/chains' const coinType = toCoinType(base.id)` **Default** `60n` |
| `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
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()

```ts
getEnsAvatar: (args) => Promise<GetEnsAvatarReturnType>;
```

Gets the avatar of an ENS name.

- Docs: https://viem.sh/docs/ens/actions/getEnsAvatar
- Examples: 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
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()

```ts
getEnsName: (args) => Promise<GetEnsNameReturnType>;
```

Gets primary name for specified address.

- Docs: https://viem.sh/docs/ens/actions/getEnsName
- Examples: https://stackblitz.com/github/wevm/viem/tree/main/examples/ens

###### Parameters

| Parameter | Type | Description |
| ------ | ------ | ------ |
| `args` | \{ `address`: `` `0x${string}` ``; `blockNumber?`: `bigint`; `blockTag?`: `BlockTag`; `coinType?`: `bigint`; `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.coinType?` | `bigint` | ENSIP-9 compliant coinType (chain) to get ENS name for. To get the `coinType` for a chain id, use the `toCoinType` function: `import { toCoinType } from 'viem' import { base } from 'viem/chains' const coinType = toCoinType(base.id)` **Default** `60n` |
| `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
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()

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

Gets resolver for ENS name.

- Docs: https://viem.sh/docs/ens/actions/getEnsResolver
- Examples: 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
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()

```ts
getEnsText: (args) => Promise<GetEnsTextReturnType>;
```

Gets a text record for specified ENS name.

- Docs: https://viem.sh/docs/ens/actions/getEnsResolver
- Examples: 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
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()

```ts
getFeeHistory: (args) => Promise<GetFeeHistoryReturnType>;
```

Returns a collection of historical gas information.

- Docs: 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
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()

```ts
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](/docs/glossary/terms#filter) since the last time it was called.

- Docs: 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
// 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
// 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
// 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
// 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()

```ts
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
- 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
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()

```ts
getGasPrice: () => Promise<bigint>;
```

Returns the current price of gas (in wei).

- Docs: 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
import { createPublicClient, http } from 'viem'
import { mainnet } from 'viem/chains'

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

###### getLogs()

```ts
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
- Examples: 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`\<`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
import { createPublicClient, http, parseAbiItem } from 'viem'
import { mainnet } from 'viem/chains'

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

###### getProof()

```ts
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
- 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
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()

```ts
getStorageAt: (args) => Promise<GetStorageAtReturnType>;
```

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

- Docs: 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
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()

```ts
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
- Example: 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
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()

```ts
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
- Example: 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` \| `undefined`\> | 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
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()

```ts
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
- 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
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()

```ts
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
- Example: 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
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

```ts
key: string;
```

A key for the client.

###### multicall()

```ts
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

###### 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
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

```ts
name: string;
```

A name for the client.

###### pollingInterval

```ts
pollingInterval: number;
```

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

###### prepareTransactionRequest()

```ts
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] : "type" | "nonce" | "chainId" | "gas" | "fees" | "blobVersionedHashes">> & (unknown extends request["kzg"] ? {} : Pick<request, "kzg">))[K] }>;
```

Prepares a transaction request for signing.

- Docs: 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?`: `undefined`; `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?`: `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` \| `undefined`, `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\] : "type" \| "nonce" \| "chainId" \| "gas" \| "fees" \| "blobVersionedHashes"\>\> & (unknown extends request\["kzg"\] ? \{\} : Pick\<request, "kzg"\>))\[K\] \}\>

The transaction request. PrepareTransactionRequestReturnType

###### Examples

```ts
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
// 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()

```ts
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
- Examples: 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
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

```ts
request: EIP1193RequestFn<PublicRpcSchema>;
```

Request function wrapped with friendly error handling

###### sendRawTransaction()

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

Sends a **signed** transaction to the network

- Docs: 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
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'
})
```

###### sendRawTransactionSync()

```ts
sendRawTransactionSync: (args) => Promise<TransactionReceipt>;
```

Sends a **signed** transaction to the network

- Docs: https://viem.sh/docs/actions/wallet/sendRawTransactionSync
- JSON-RPC Method: [`eth_sendRawTransactionSync`](https://eips.ethereum.org/EIPS/eip-7966)

###### Parameters

| Parameter | Type |
| ------ | ------ |
| `args` | `SendRawTransactionSyncParameters` |

###### Returns

`Promise`\<`TransactionReceipt`\>

The transaction receipt. SendRawTransactionSyncReturnType

###### Example

```ts
import { createWalletClient, custom } from 'viem'
import { mainnet } from 'viem/chains'
import { sendRawTransactionSync } from 'viem/wallet'

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

const receipt = await client.sendRawTransactionSync({
  serializedTransaction: '0x02f850018203118080825208808080c080a04012522854168b27e5dc3d5839bab5e6b39e1a0ffd343901ce1622e3d64b48f1a04e00902ae0502c4728cbf12156290df99c3ed7de85b1dbfe20b5c36931733a33'
})
```

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

```ts
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()

```ts
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
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()

```ts
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
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()

```ts
simulateContract: <abi, functionName, args, chainOverride, accountOverride>(args) => Promise<SimulateContractReturnType<abi, functionName, args, Chain | undefined, 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
- Examples: 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` \| `undefined`, `chainOverride`, `accountOverride`\> | SimulateContractParameters |

###### Returns

`Promise`\<`SimulateContractReturnType`\<`abi`, `functionName`, `args`, `Chain` \| `undefined`, `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
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

```ts
transport: TransportConfig<string, EIP1193RequestFn> & Record<string, any>;
```

The RPC transport

###### type

```ts
type: string;
```

The type of client.

###### uid

```ts
uid: string;
```

A unique ID for the client.

###### uninstallFilter()

```ts
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
- 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
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
```

###### verifyHash()

```ts
verifyHash: (args) => Promise<boolean>;
```

Verify that a hash was signed by the provided address.

- Docs [https://viem.sh/docs/actions/public/verifyHash](https://viem.sh/docs/actions/public/verifyHash)

###### Parameters

| Parameter | Type |
| ------ | ------ |
| `args` | `VerifyHashParameters` |

###### Returns

`Promise`\<`boolean`\>

Whether or not the signature is valid. VerifyHashReturnType

###### verifyMessage()

```ts
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`; `chain?`: `Chain` \| `null`; `erc6492VerifierAddress?`: `` `0x${string}` ``; `factory?`: `` `0x${string}` ``; `factoryData?`: `` `0x${string}` ``; `message`: `SignableMessage`; `multicallAddress?`: `` `0x${string}` ``; `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.chain?` | `Chain` \| `null` | The chain to use. |
| `args.erc6492VerifierAddress?` | `` `0x${string}` `` | The address of the ERC-6492 signature verifier contract. |
| `args.factory?` | `` `0x${string}` `` | - |
| `args.factoryData?` | `` `0x${string}` `` | - |
| `args.message` | `SignableMessage` | The message to be verified. |
| `args.multicallAddress?` | `` `0x${string}` `` | Multicall3 address for ERC-8010 verification. |
| `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}` `` | **Deprecated** use `erc6492VerifierAddress` instead. |

###### Returns

`Promise`\<`boolean`\>

Whether or not the signature is valid. VerifyMessageReturnType

###### verifySiweMessage()

```ts
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()

```ts
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()

```ts
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
- Example: 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` \| `undefined`\> | 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
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()

```ts
watchBlockNumber: (args) => WatchBlockNumberReturnType;
```

Watches and returns incoming block numbers.

- Docs: https://viem.sh/docs/actions/public/watchBlockNumber
- Examples: 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
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()

```ts
watchBlocks: <includeTransactions, blockTag>(args) => WatchBlocksReturnType;
```

Watches and returns information for incoming blocks.

- Docs: https://viem.sh/docs/actions/public/watchBlocks
- Examples: 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`\<`Transport`, `Chain` \| `undefined`, `includeTransactions`, `blockTag`\> | WatchBlocksParameters |

###### Returns

`WatchBlocksReturnType`

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

###### Example

```ts
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()

```ts
watchContractEvent: <abi, eventName, strict>(args) => WatchContractEventReturnType;
```

Watches and returns emitted contract event logs.

- Docs: 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`, `Transport`\> | 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
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()

```ts
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
- 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`\<`abiEvent`\>\] : `undefined` |
| `strict` *extends* `boolean` \| `undefined` | `undefined` |

###### Parameters

| Parameter | Type | Description |
| ------ | ------ | ------ |
| `args` | `WatchEventParameters`\<`abiEvent`, `abiEvents`, `strict`, `Transport`\> | 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
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()

```ts
watchPendingTransactions: (args) => WatchPendingTransactionsReturnType;
```

Watches and returns pending transaction hashes.

- Docs: 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`\<`Transport`\> | 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
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),
})
```

##### recipient

```ts
recipient: `0x${string}`;
```

Defined in: [packages/sdk/src/utils/testScenarios.ts:16](https://github.com/AAStarCommunity/aastar-sdk/blob/9355f214d4f7ac03755d574206ded22f6097f351/packages/sdk/src/utils/testScenarios.ts#L16)

##### sender

```ts
sender: `0x${string}`;
```

Defined in: [packages/sdk/src/utils/testScenarios.ts:14](https://github.com/AAStarCommunity/aastar-sdk/blob/9355f214d4f7ac03755d574206ded22f6097f351/packages/sdk/src/utils/testScenarios.ts#L14)

##### tokenAddress

```ts
tokenAddress: `0x${string}`;
```

Defined in: [packages/sdk/src/utils/testScenarios.ts:17](https://github.com/AAStarCommunity/aastar-sdk/blob/9355f214d4f7ac03755d574206ded22f6097f351/packages/sdk/src/utils/testScenarios.ts#L17)
