SessionKey
Defined in: packages/iso-filecoin-synapse/src/session-keys/secp256k1.ts:104
Properties
Section titled “Properties”client()
Section titled “client()”client: (
chain,transportConfig?) =>object
Defined in: packages/iso-filecoin-synapse/src/session-keys/secp256k1.ts:110
Parameters
Section titled “Parameters”| Parameter | Type |
|---|---|
chain | Chain |
transportConfig? | TransportConfig |
Returns
Section titled “Returns”account
Section titled “account”account:
Account
The Account of the Client.
addChain()
Section titled “addChain()”addChain: (
args) =>Promise<void>
Adds an EVM chain to the wallet.
- Docs: https://viem.sh/docs/actions/wallet/addChain
- JSON-RPC Methods:
eth_addEthereumChain
Parameters
Section titled “Parameters”| Parameter | Type | Description |
|---|---|---|
args | AddChainParameters | AddChainParameters |
Returns
Section titled “Returns”Promise<void>
Example
Section titled “Example”import { createWalletClient, custom } from 'viem'import { optimism } from 'viem/chains'
const client = createWalletClient({ transport: custom(window.ethereum),})await client.addChain({ chain: optimism })batch?
Section titled “batch?”
optionalbatch:object
Flags for batch settings.
batch.multicall?
Section titled “batch.multicall?”
optionalmulticall:boolean| {batchSize?:number;deployless?:boolean;wait?:number; }
Toggle to enable eth_call multicall aggregation.
Type Declaration
Section titled “Type Declaration”boolean
{ batchSize?: number; deployless?: boolean; wait?: number; }
cacheTime
Section titled “cacheTime”cacheTime:
number
Time (in ms) that cached data will remain in memory.
ccipRead?
Section titled “ccipRead?”
optionalccipRead:false| {request?: (parameters) =>Promise<`0x${string}`>; }
CCIP Read configuration.
Type Declaration
Section titled “Type Declaration”false
{ request?: (parameters) => Promise<`0x${string}`>; }
chain:
Chain
Chain for the client.
deployContract()
Section titled “deployContract()”deployContract: <
abi,chainOverride>(args) =>Promise<`0x${string}`>
Deploys a contract to the network, given bytecode and constructor arguments.
- Docs: https://viem.sh/docs/contract/deployContract
- Examples: https://stackblitz.com/github/wevm/viem/tree/main/examples/contracts_deploying-contracts
Type Parameters
Section titled “Type Parameters”| Type Parameter |
|---|
abi extends Abi | readonly unknown[] |
chainOverride extends Chain | undefined |
Parameters
Section titled “Parameters”| Parameter | Type | Description |
|---|---|---|
args | DeployContractParameters<abi, Chain, Account, chainOverride> | DeployContractParameters |
Returns
Section titled “Returns”Promise<`0x${string}`>
The Transaction hash. DeployContractReturnType
Example
Section titled “Example”import { createWalletClient, http } from 'viem'import { privateKeyToAccount } from 'viem/accounts'import { mainnet } from 'viem/chains'
const client = createWalletClient({ account: privateKeyToAccount('0x…'), chain: mainnet, transport: http(),})const hash = await client.deployContract({ abi: [], account: '0x…, bytecode: '0x608060405260405161083e38038061083e833981016040819052610...',})experimental_blockTag?
Section titled “experimental_blockTag?”
optionalexperimental_blockTag:BlockTag
Default block tag to use for RPC requests.
extend()
Section titled “extend()”extend: <
client>(fn) =>Client<Transport,Chain,Account,WalletRpcSchema, { [K in string | number | symbol]: client[K] } &WalletActions<Chain,Account>>
Type Parameters
Section titled “Type Parameters”| Type Parameter |
|---|
client extends object & ExactPartial<ExtendableProtectedActions<Transport, Chain, Account>> |
Parameters
Section titled “Parameters”| Parameter | Type |
|---|---|
fn | (client) => client |
Returns
Section titled “Returns”Client<Transport, Chain, Account, WalletRpcSchema, { [K in string | number | symbol]: client[K] } & WalletActions<Chain, Account>>
getAddresses()
Section titled “getAddresses()”getAddresses: () =>
Promise<GetAddressesReturnType>
Returns a list of account addresses owned by the wallet or client.
- Docs: https://viem.sh/docs/actions/wallet/getAddresses
- JSON-RPC Methods:
eth_accounts
Returns
Section titled “Returns”Promise<GetAddressesReturnType>
List of account addresses owned by the wallet or client. GetAddressesReturnType
Example
Section titled “Example”import { createWalletClient, custom } from 'viem'import { mainnet } from 'viem/chains'
const client = createWalletClient({ chain: mainnet, transport: custom(window.ethereum),})const accounts = await client.getAddresses()getCallsStatus()
Section titled “getCallsStatus()”getCallsStatus: (
parameters) =>Promise<{atomic:boolean;capabilities?: {[key:string]:any; } | {[key:string]:any; };chainId:number;id:string;receipts?:WalletCallReceipt<bigint,"success"|"reverted">[];status:"pending"|"success"|"failure"|undefined;statusCode:number;version:string; }>
Returns the status of a call batch that was sent via sendCalls.
- Docs: https://viem.sh/docs/actions/wallet/getCallsStatus
- JSON-RPC Methods:
wallet_getCallsStatus
Parameters
Section titled “Parameters”| Parameter | Type |
|---|---|
parameters | GetCallsStatusParameters |
Returns
Section titled “Returns”Promise<{ atomic: boolean; capabilities?: {[key: string]: any; } | {[key: string]: any; }; chainId: number; id: string; receipts?: WalletCallReceipt<bigint, "success" | "reverted">[]; status: "pending" | "success" | "failure" | undefined; statusCode: number; version: string; }>
Status of the calls. GetCallsStatusReturnType
Example
Section titled “Example”import { createWalletClient, custom } from 'viem'import { mainnet } from 'viem/chains'
const client = createWalletClient({ chain: mainnet, transport: custom(window.ethereum),})
const { receipts, status } = await client.getCallsStatus({ id: '0xdeadbeef' })getCapabilities()
Section titled “getCapabilities()”getCapabilities: <
chainId>(parameters?) =>Promise<{ [K in string | number | symbol]: (chainId extends number ? { atomic?: { status: (…) | (…) | (…) }; paymasterService?: { supported: boolean }; unstable_addSubAccount?: { keyTypes: (…)[]; supported: boolean }; [key: string]: any } : ChainIdToCapabilities<Capabilities<{ atomic?: (…) | (…); paymasterService?: (…) | (…); unstable_addSubAccount?: (…) | (…); [key: string]: any }>, number>)[K] }>
Extract capabilities that a connected wallet supports (e.g. paymasters, session keys, etc).
- Docs: https://viem.sh/docs/actions/wallet/getCapabilities
- JSON-RPC Methods:
wallet_getCapabilities
Type Parameters
Section titled “Type Parameters”| Type Parameter |
|---|
chainId extends number | undefined |
Parameters
Section titled “Parameters”| Parameter | Type |
|---|---|
parameters? | GetCapabilitiesParameters<chainId> |
Returns
Section titled “Returns”Promise<{ [K in string | number | symbol]: (chainId extends number ? { atomic?: { status: (…) | (…) | (…) }; paymasterService?: { supported: boolean }; unstable_addSubAccount?: { keyTypes: (…)[]; supported: boolean }; [key: string]: any } : ChainIdToCapabilities<Capabilities<{ atomic?: (…) | (…); paymasterService?: (…) | (…); unstable_addSubAccount?: (…) | (…); [key: string]: any }>, number>)[K] }>
The wallet’s capabilities. GetCapabilitiesReturnType
Example
Section titled “Example”import { createWalletClient, custom } from 'viem'import { mainnet } from 'viem/chains'
const client = createWalletClient({ chain: mainnet, transport: custom(window.ethereum),})
const capabilities = await client.getCapabilities({ account: '0xA0Cf798816D4b9b9866b5330EEa46a18382f251e',})getChainId()
Section titled “getChainId()”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
Returns
Section titled “Returns”Promise<number>
The current chain ID. GetChainIdReturnType
Example
Section titled “Example”import { createWalletClient, http } from 'viem'import { mainnet } from 'viem/chains'
const client = createWalletClient({ chain: mainnet, transport: custom(window.ethereum),})const chainId = await client.getChainId()// 1getPermissions()
Section titled “getPermissions()”getPermissions: () =>
Promise<GetPermissionsReturnType>
Gets the wallets current permissions.
- Docs: https://viem.sh/docs/actions/wallet/getPermissions
- JSON-RPC Methods:
wallet_getPermissions
Returns
Section titled “Returns”Promise<GetPermissionsReturnType>
The wallet permissions. GetPermissionsReturnType
Example
Section titled “Example”import { createWalletClient, custom } from 'viem'import { mainnet } from 'viem/chains'
const client = createWalletClient({ chain: mainnet, transport: custom(window.ethereum),})const permissions = await client.getPermissions()key:
string
A key for the client.
name:
string
A name for the client.
pollingInterval
Section titled “pollingInterval”pollingInterval:
number
Frequency (in ms) for polling enabled actions & events. Defaults to 4_000 milliseconds.
prepareAuthorization()
Section titled “prepareAuthorization()”prepareAuthorization: (
parameters) =>Promise<PrepareAuthorizationReturnType>
Prepares an EIP-7702 Authorization object for signing.
This Action will fill the required fields of the Authorization object if they are not provided (e.g. nonce and chainId).
With the prepared Authorization object, you can use signAuthorization to sign over the Authorization object.
Parameters
Section titled “Parameters”| Parameter | Type | Description |
|---|---|---|
parameters | PrepareAuthorizationParameters<Account> | PrepareAuthorizationParameters |
Returns
Section titled “Returns”Promise<PrepareAuthorizationReturnType>
The prepared Authorization object. PrepareAuthorizationReturnType
Examples
Section titled “Examples”import { createWalletClient, http } from 'viem'import { privateKeyToAccount } from 'viem/accounts'import { mainnet } from 'viem/chains'
const client = createWalletClient({ chain: mainnet, transport: http(),})
const authorization = await client.prepareAuthorization({ account: privateKeyToAccount('0x..'), contractAddress: '0xA0Cf798816D4b9b9866b5330EEa46a18382f251e',})// Account Hoistingimport { createWalletClient, http } from 'viem'import { privateKeyToAccount } from 'viem/accounts'import { mainnet } from 'viem/chains'
const client = createWalletClient({ account: privateKeyToAccount('0x…'), chain: mainnet, transport: http(),})
const authorization = await client.prepareAuthorization({ contractAddress: '0xA0Cf798816D4b9b9866b5330EEa46a18382f251e',})prepareTransactionRequest()
Section titled “prepareTransactionRequest()”prepareTransactionRequest: <
request,chainOverride,accountOverride>(args) =>Promise<{ [K in string | number | symbol]: (UnionRequiredBy<Extract<(…) & (…) & (…), (…) extends (…) ? (…) : (…)> & { chainId?: (…) | (…) }, ParameterTypeToParameters<(…)[(…)] extends readonly (…)[] ? (…)[(…)] : (…) | (…) | (…) | (…) | (…) | (…)>> & (unknown extends request[“kzg”] ? {} : Pick<request, “kzg”>))[K] }>
Prepares a transaction request for signing.
Type Parameters
Section titled “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${(...)}`>[]; 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${(...)}`>[]; 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
Section titled “Parameters”| Parameter | Type | Description |
|---|---|---|
args | PrepareTransactionRequestParameters<Chain, Account, chainOverride, accountOverride, request> | PrepareTransactionRequestParameters |
Returns
Section titled “Returns”Promise<{ [K in string | number | symbol]: (UnionRequiredBy<Extract<(…) & (…) & (…), (…) extends (…) ? (…) : (…)> & { chainId?: (…) | (…) }, ParameterTypeToParameters<(…)[(…)] extends readonly (…)[] ? (…)[(…)] : (…) | (…) | (…) | (…) | (…) | (…)>> & (unknown extends request[“kzg”] ? {} : Pick<request, “kzg”>))[K] }>
The transaction request. PrepareTransactionRequestReturnType
Examples
Section titled “Examples”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,})// Account Hoistingimport { 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,})request
Section titled “request”request:
EIP1193RequestFn<WalletRpcSchema>
Request function wrapped with friendly error handling
requestAddresses()
Section titled “requestAddresses()”requestAddresses: () =>
Promise<RequestAddressesReturnType>
Requests a list of accounts managed by a wallet.
- Docs: https://viem.sh/docs/actions/wallet/requestAddresses
- JSON-RPC Methods:
eth_requestAccounts
Sends a request to the wallet, asking for permission to access the user’s accounts. After the user accepts the request, it will return a list of accounts (addresses).
This API can be useful for dapps that need to access the user’s accounts in order to execute transactions or interact with smart contracts.
Returns
Section titled “Returns”Promise<RequestAddressesReturnType>
List of accounts managed by a wallet RequestAddressesReturnType
Example
Section titled “Example”import { createWalletClient, custom } from 'viem'import { mainnet } from 'viem/chains'
const client = createWalletClient({ chain: mainnet, transport: custom(window.ethereum),})const accounts = await client.requestAddresses()requestPermissions()
Section titled “requestPermissions()”requestPermissions: (
args) =>Promise<RequestPermissionsReturnType>
Requests permissions for a wallet.
- Docs: https://viem.sh/docs/actions/wallet/requestPermissions
- JSON-RPC Methods:
wallet_requestPermissions
Parameters
Section titled “Parameters”| Parameter | Type | Description |
|---|---|---|
args | {[key: string]: Record<string, any>; eth_accounts: Record<string, any>; } | RequestPermissionsParameters |
args.eth_accounts | Record<string, any> | - |
Returns
Section titled “Returns”Promise<RequestPermissionsReturnType>
The wallet permissions. RequestPermissionsReturnType
Example
Section titled “Example”import { createWalletClient, custom } from 'viem'import { mainnet } from 'viem/chains'
const client = createWalletClient({ chain: mainnet, transport: custom(window.ethereum),})const permissions = await client.requestPermissions({ eth_accounts: {}})sendCalls()
Section titled “sendCalls()”sendCalls: <
calls,chainOverride>(parameters) =>Promise<{capabilities?: {[key:string]:any; };id:string; }>
Requests the connected wallet to send a batch of calls.
- Docs: https://viem.sh/docs/actions/wallet/sendCalls
- JSON-RPC Methods:
wallet_sendCalls
Type Parameters
Section titled “Type Parameters”| Type Parameter | Default type |
|---|---|
calls extends readonly unknown[] | - |
chainOverride extends Chain | undefined | undefined |
Parameters
Section titled “Parameters”| Parameter | Type |
|---|---|
parameters | SendCallsParameters<Chain, Account, chainOverride, calls> |
Returns
Section titled “Returns”Promise<{ capabilities?: {[key: string]: any; }; id: string; }>
Transaction identifier. SendCallsReturnType
Example
Section titled “Example”import { createWalletClient, custom } from 'viem'import { mainnet } from 'viem/chains'
const client = createWalletClient({ chain: mainnet, transport: custom(window.ethereum),})
const id = await client.sendCalls({ account: '0xA0Cf798816D4b9b9866b5330EEa46a18382f251e', calls: [ { data: '0xdeadbeef', to: '0x70997970c51812dc3a010c7d01b50e0d17dc79c8', }, { to: '0x70997970c51812dc3a010c7d01b50e0d17dc79c8', value: 69420n, }, ],})sendCallsSync()
Section titled “sendCallsSync()”sendCallsSync: <
calls,chainOverride>(parameters) =>Promise<{atomic:boolean;capabilities?: {[key:string]:any; } | {[key:string]:any; };chainId:number;id:string;receipts?:WalletCallReceipt<bigint,"success"|"reverted">[];status:"pending"|"success"|"failure"|undefined;statusCode:number;version:string; }>
Requests the connected wallet to send a batch of calls, and waits for the calls to be included in a block.
- Docs: https://viem.sh/docs/actions/wallet/sendCallsSync
- JSON-RPC Methods:
wallet_sendCalls
Type Parameters
Section titled “Type Parameters”| Type Parameter | Default type |
|---|---|
calls extends readonly unknown[] | - |
chainOverride extends Chain | undefined | undefined |
Parameters
Section titled “Parameters”| Parameter | Type |
|---|---|
parameters | SendCallsSyncParameters<Chain, Account, chainOverride, calls> |
Returns
Section titled “Returns”Promise<{ atomic: boolean; capabilities?: {[key: string]: any; } | {[key: string]: any; }; chainId: number; id: string; receipts?: WalletCallReceipt<bigint, "success" | "reverted">[]; status: "pending" | "success" | "failure" | undefined; statusCode: number; version: string; }>
Calls status. SendCallsSyncReturnType
Example
Section titled “Example”import { createWalletClient, custom } from 'viem'import { mainnet } from 'viem/chains'
const client = createWalletClient({ chain: mainnet, transport: custom(window.ethereum),})
const status = await client.sendCallsSync({ account: '0xA0Cf798816D4b9b9866b5330EEa46a18382f251e', calls: [ { data: '0xdeadbeef', to: '0x70997970c51812dc3a010c7d01b50e0d17dc79c8', }, { to: '0x70997970c51812dc3a010c7d01b50e0d17dc79c8', value: 69420n, }, ],})sendRawTransaction()
Section titled “sendRawTransaction()”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
Parameters
Section titled “Parameters”| Parameter | Type |
|---|---|
args | SendRawTransactionParameters |
Returns
Section titled “Returns”Promise<`0x${string}`>
The transaction hash. SendRawTransactionReturnType
Example
Section titled “Example”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()
Section titled “sendRawTransactionSync()”sendRawTransactionSync: (
args) =>Promise<TransactionReceipt>
Sends a signed transaction to the network synchronously, and waits for the transaction to be included in a block.
- Docs: https://viem.sh/docs/actions/wallet/sendRawTransactionSync
- JSON-RPC Method:
eth_sendRawTransactionSync
Parameters
Section titled “Parameters”| Parameter | Type |
|---|---|
args | SendRawTransactionSyncParameters |
Returns
Section titled “Returns”Promise<TransactionReceipt>
The transaction receipt. SendRawTransactionSyncReturnType
Example
Section titled “Example”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'})sendTransaction()
Section titled “sendTransaction()”sendTransaction: <
request,chainOverride>(args) =>Promise<`0x${string}`>
Creates, signs, and sends a new transaction to the network.
- Docs: https://viem.sh/docs/actions/wallet/sendTransaction
- Examples: https://stackblitz.com/github/wevm/viem/tree/main/examples/transactions_sending-transactions
- JSON-RPC Methods:
- JSON-RPC Accounts:
eth_sendTransaction - Local Accounts:
eth_sendRawTransaction
- JSON-RPC Accounts:
Type Parameters
Section titled “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${(...)}`>[]; 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${(...)}`>[]; 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 | - |
chainOverride extends Chain | undefined | undefined |
Parameters
Section titled “Parameters”| Parameter | Type | Description |
|---|---|---|
args | SendTransactionParameters<Chain, Account, chainOverride, request> | SendTransactionParameters |
Returns
Section titled “Returns”Promise<`0x${string}`>
The Transaction hash. SendTransactionReturnType
Examples
Section titled “Examples”import { createWalletClient, custom } from 'viem'import { mainnet } from 'viem/chains'
const client = createWalletClient({ chain: mainnet, transport: custom(window.ethereum),})const hash = await client.sendTransaction({ account: '0xA0Cf798816D4b9b9866b5330EEa46a18382f251e', to: '0x70997970c51812dc3a010c7d01b50e0d17dc79c8', value: 1000000000000000000n,})// Account Hoistingimport { createWalletClient, http } from 'viem'import { privateKeyToAccount } from 'viem/accounts'import { mainnet } from 'viem/chains'
const client = createWalletClient({ account: privateKeyToAccount('0x…'), chain: mainnet, transport: http(),})const hash = await client.sendTransaction({ to: '0x70997970c51812dc3a010c7d01b50e0d17dc79c8', value: 1000000000000000000n,})sendTransactionSync()
Section titled “sendTransactionSync()”sendTransactionSync: <
request,chainOverride>(args) =>Promise<TransactionReceipt>
Creates, signs, and sends a new transaction to the network synchronously. Returns the transaction receipt.
- Docs: https://viem.sh/docs/actions/wallet/sendTransactionSync
- Examples: https://stackblitz.com/github/wevm/viem/tree/main/examples/transactions_sending-transactions
- JSON-RPC Methods:
- JSON-RPC Accounts:
eth_sendTransaction - Local Accounts:
eth_sendRawTransaction
- JSON-RPC Accounts:
Type Parameters
Section titled “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${(...)}`>[]; 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${(...)}`>[]; 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 | - |
chainOverride extends Chain | undefined | undefined |
Parameters
Section titled “Parameters”| Parameter | Type | Description |
|---|---|---|
args | SendTransactionSyncParameters<Chain, Account, chainOverride, request> | SendTransactionParameters |
Returns
Section titled “Returns”Promise<TransactionReceipt>
The transaction receipt. SendTransactionReturnType
Examples
Section titled “Examples”import { createWalletClient, custom } from 'viem'import { mainnet } from 'viem/chains'
const client = createWalletClient({ chain: mainnet, transport: custom(window.ethereum),})const receipt = await client.sendTransactionSync({ account: '0xA0Cf798816D4b9b9866b5330EEa46a18382f251e', to: '0x70997970c51812dc3a010c7d01b50e0d17dc79c8', value: 1000000000000000000n,})// Account Hoistingimport { createWalletClient, http } from 'viem'import { privateKeyToAccount } from 'viem/accounts'import { mainnet } from 'viem/chains'
const client = createWalletClient({ account: privateKeyToAccount('0x…'), chain: mainnet, transport: http(),})const receipt = await client.sendTransactionSync({ to: '0x70997970c51812dc3a010c7d01b50e0d17dc79c8', value: 1000000000000000000n,})showCallsStatus()
Section titled “showCallsStatus()”showCallsStatus: (
parameters) =>Promise<void>
Requests for the wallet to show information about a call batch
that was sent via sendCalls.
- Docs: https://viem.sh/docs/actions/wallet/showCallsStatus
- JSON-RPC Methods:
wallet_showCallsStatus
Parameters
Section titled “Parameters”| Parameter | Type |
|---|---|
parameters | ShowCallsStatusParameters |
Returns
Section titled “Returns”Promise<void>
Displays status of the calls in wallet. ShowCallsStatusReturnType
Example
Section titled “Example”import { createWalletClient, custom } from 'viem'import { mainnet } from 'viem/chains'
const client = createWalletClient({ chain: mainnet, transport: custom(window.ethereum),})
await client.showCallsStatus({ id: '0xdeadbeef' })signAuthorization()
Section titled “signAuthorization()”signAuthorization: (
parameters) =>Promise<SignAuthorizationReturnType>
Signs an EIP-7702 Authorization object.
With the calculated signature, you can:
- use
verifyAuthorizationto verify the signed Authorization object, - use
recoverAuthorizationAddressto recover the signing address from the signed Authorization object.
Parameters
Section titled “Parameters”| Parameter | Type | Description |
|---|---|---|
parameters | SignAuthorizationParameters<Account> | SignAuthorizationParameters |
Returns
Section titled “Returns”Promise<SignAuthorizationReturnType>
The signed Authorization object. SignAuthorizationReturnType
Examples
Section titled “Examples”import { createWalletClient, http } from 'viem'import { privateKeyToAccount } from 'viem/accounts'import { mainnet } from 'viem/chains'
const client = createWalletClient({ chain: mainnet, transport: http(),})
const signature = await client.signAuthorization({ account: privateKeyToAccount('0x..'), contractAddress: '0xA0Cf798816D4b9b9866b5330EEa46a18382f251e',})// Account Hoistingimport { createWalletClient, http } from 'viem'import { privateKeyToAccount } from 'viem/accounts'import { mainnet } from 'viem/chains'
const client = createWalletClient({ account: privateKeyToAccount('0x…'), chain: mainnet, transport: http(),})
const signature = await client.signAuthorization({ contractAddress: '0xA0Cf798816D4b9b9866b5330EEa46a18382f251e',})signMessage()
Section titled “signMessage()”signMessage: (
args) =>Promise<`0x${string}`>
Calculates an Ethereum-specific signature in EIP-191 format: keccak256("\x19Ethereum Signed Message:\n" + len(message) + message)).
- Docs: https://viem.sh/docs/actions/wallet/signMessage
- JSON-RPC Methods:
- JSON-RPC Accounts:
personal_sign - Local Accounts: Signs locally. No JSON-RPC request.
- JSON-RPC Accounts:
With the calculated signature, you can:
- use
verifyMessageto verify the signature, - use
recoverMessageAddressto recover the signing address from a signature.
Parameters
Section titled “Parameters”| Parameter | Type | Description |
|---|---|---|
args | SignMessageParameters<Account> | SignMessageParameters |
Returns
Section titled “Returns”Promise<`0x${string}`>
The signed message. SignMessageReturnType
Examples
Section titled “Examples”import { createWalletClient, custom } from 'viem'import { mainnet } from 'viem/chains'
const client = createWalletClient({ chain: mainnet, transport: custom(window.ethereum),})const signature = await client.signMessage({ account: '0xA0Cf798816D4b9b9866b5330EEa46a18382f251e', message: 'hello world',})// Account Hoistingimport { createWalletClient, http } from 'viem'import { privateKeyToAccount } from 'viem/accounts'import { mainnet } from 'viem/chains'
const client = createWalletClient({ account: privateKeyToAccount('0x…'), chain: mainnet, transport: http(),})const signature = await client.signMessage({ message: 'hello world',})signTransaction()
Section titled “signTransaction()”signTransaction: <
chainOverride,request>(args) =>Promise<TransactionSerialized<GetTransactionType<request,requestextendsLegacyProperties?"legacy":never|requestextendsEIP1559Properties?"eip1559":never|requestextendsEIP2930Properties?"eip2930":never|requestextendsEIP4844Properties?"eip4844":never|requestextendsEIP7702Properties?"eip7702":never|request["type"] extendsstring|undefined?Extract<any[any],string> :never>,GetTransactionType<request,requestextendsLegacyProperties?"legacy":never|requestextendsEIP1559Properties?"eip1559":never|requestextendsEIP2930Properties?"eip2930":never|requestextendsEIP4844Properties?"eip4844":never|requestextendsEIP7702Properties?"eip7702":never| …[…] extends … | … ?Extract<…, …> :never> extends"eip1559"?`0x02${string}`:never|GetTransactionType<request,requestextendsLegacyProperties?"legacy":never|requestextendsEIP1559Properties?"eip1559":never|requestextendsEIP2930Properties?"eip2930":never|requestextendsEIP4844Properties?"eip4844":never|requestextendsEIP7702Properties?"eip7702":never| …[…] extends … | … ?Extract<…, …> :never> extends"eip2930"?`0x01${string}`:never|GetTransactionType<request,requestextendsLegacyProperties?"legacy":never|requestextendsEIP1559Properties?"eip1559":never|requestextendsEIP2930Properties?"eip2930":never|requestextendsEIP4844Properties?"eip4844":never|requestextendsEIP7702Properties?"eip7702":never| …[…] extends … | … ?Extract<…, …> :never> extends"eip4844"?`0x03${string}`:never|GetTransactionType<request,requestextendsLegacyProperties?"legacy":never|requestextendsEIP1559Properties?"eip1559":never|requestextendsEIP2930Properties?"eip2930":never|requestextendsEIP4844Properties?"eip4844":never|requestextendsEIP7702Properties?"eip7702":never| …[…] extends … | … ?Extract<…, …> :never> extends"eip7702"?`0x04${string}`:never|GetTransactionType<request,requestextendsLegacyProperties?"legacy":never|requestextendsEIP1559Properties?"eip1559":never|requestextendsEIP2930Properties?"eip2930":never|requestextendsEIP4844Properties?"eip4844":never|requestextendsEIP7702Properties?"eip7702":never| …[…] extends … | … ?Extract<…, …> :never> extends"legacy"?TransactionSerializedLegacy:never>>
Signs a transaction.
- Docs: https://viem.sh/docs/actions/wallet/signTransaction
- JSON-RPC Methods:
- JSON-RPC Accounts:
eth_signTransaction - Local Accounts: Signs locally. No JSON-RPC request.
- JSON-RPC Accounts:
Type Parameters
Section titled “Type Parameters”| Type Parameter | Default type |
|---|---|
chainOverride extends Chain | undefined | - |
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"> | UnionOmit<ExtractChainFormatterParameters<DeriveChain<Chain, chainOverride>, "transactionRequest", TransactionRequest>, "from"> |
Parameters
Section titled “Parameters”| Parameter | Type | Description |
|---|---|---|
args | SignTransactionParameters<Chain, Account, chainOverride, request> | SignTransactionParameters |
Returns
Section titled “Returns”Promise<TransactionSerialized<GetTransactionType<request, request extends LegacyProperties ? "legacy" : never | request extends EIP1559Properties ? "eip1559" : never | request extends EIP2930Properties ? "eip2930" : never | request extends EIP4844Properties ? "eip4844" : never | request extends EIP7702Properties ? "eip7702" : never | request["type"] extends string | undefined ? Extract<any[any], string> : never>, GetTransactionType<request, request extends LegacyProperties ? "legacy" : never | request extends EIP1559Properties ? "eip1559" : never | request extends EIP2930Properties ? "eip2930" : never | request extends EIP4844Properties ? "eip4844" : never | request extends EIP7702Properties ? "eip7702" : never | …[…] extends … | … ? Extract<…, …> : never> extends "eip1559" ? `0x02${string}` : never | GetTransactionType<request, request extends LegacyProperties ? "legacy" : never | request extends EIP1559Properties ? "eip1559" : never | request extends EIP2930Properties ? "eip2930" : never | request extends EIP4844Properties ? "eip4844" : never | request extends EIP7702Properties ? "eip7702" : never | …[…] extends … | … ? Extract<…, …> : never> extends "eip2930" ? `0x01${string}` : never | GetTransactionType<request, request extends LegacyProperties ? "legacy" : never | request extends EIP1559Properties ? "eip1559" : never | request extends EIP2930Properties ? "eip2930" : never | request extends EIP4844Properties ? "eip4844" : never | request extends EIP7702Properties ? "eip7702" : never | …[…] extends … | … ? Extract<…, …> : never> extends "eip4844" ? `0x03${string}` : never | GetTransactionType<request, request extends LegacyProperties ? "legacy" : never | request extends EIP1559Properties ? "eip1559" : never | request extends EIP2930Properties ? "eip2930" : never | request extends EIP4844Properties ? "eip4844" : never | request extends EIP7702Properties ? "eip7702" : never | …[…] extends … | … ? Extract<…, …> : never> extends "eip7702" ? `0x04${string}` : never | GetTransactionType<request, request extends LegacyProperties ? "legacy" : never | request extends EIP1559Properties ? "eip1559" : never | request extends EIP2930Properties ? "eip2930" : never | request extends EIP4844Properties ? "eip4844" : never | request extends EIP7702Properties ? "eip7702" : never | …[…] extends … | … ? Extract<…, …> : never> extends "legacy" ? TransactionSerializedLegacy : never>>
The signed message. SignTransactionReturnType
Examples
Section titled “Examples”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,})const signature = await client.signTransaction(request)// Account Hoistingimport { 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,})const signature = await client.signTransaction(request)signTypedData()
Section titled “signTypedData()”signTypedData: <
typedData,primaryType>(args) =>Promise<`0x${string}`>
Signs typed data and calculates an Ethereum-specific signature in EIP-191 format: keccak256("\x19Ethereum Signed Message:\n" + len(message) + message)).
- Docs: https://viem.sh/docs/actions/wallet/signTypedData
- JSON-RPC Methods:
- JSON-RPC Accounts:
eth_signTypedData_v4 - Local Accounts: Signs locally. No JSON-RPC request.
- JSON-RPC Accounts:
Type Parameters
Section titled “Type Parameters”| Type Parameter |
|---|
typedData extends {[key: string]: readonly TypedDataParameter[]; [key: `string[${string}]`]: undefined; [key: `function[${string}]`]: undefined; [key: `address[${string}]`]: undefined; [key: `uint256[${string}]`]: undefined; [key: `uint64[${string}]`]: undefined; [key: `bytes[${string}]`]: undefined; [key: `bytes1[${string}]`]: undefined; [key: `bytes32[${string}]`]: undefined; [key: `bool[${string}]`]: undefined; [key: `uint8[${string}]`]: undefined; [key: `int32[${string}]`]: undefined; [key: `bytes6[${string}]`]: undefined; [key: `bytes3[${string}]`]: undefined; [key: `bytes2[${string}]`]: undefined; [key: `bytes7[${string}]`]: undefined; [key: `bytes4[${string}]`]: undefined; [key: `bytes5[${string}]`]: undefined; [key: `bytes10[${string}]`]: undefined; [key: `bytes11[${string}]`]: undefined; [key: `bytes25[${string}]`]: undefined; [key: `bytes12[${string}]`]: undefined; [key: `bytes8[${string}]`]: undefined; [key: `bytes9[${string}]`]: undefined; [key: `bytes18[${string}]`]: undefined; [key: `bytes13[${string}]`]: undefined; [key: `bytes14[${string}]`]: undefined; [key: `bytes15[${string}]`]: undefined; [key: `bytes16[${string}]`]: undefined; [key: `bytes17[${string}]`]: undefined; [key: `bytes19[${string}]`]: undefined; [key: `bytes20[${string}]`]: undefined; [key: `bytes21[${string}]`]: undefined; [key: `bytes22[${string}]`]: undefined; [key: `bytes23[${string}]`]: undefined; [key: `bytes24[${string}]`]: undefined; [key: `bytes26[${string}]`]: undefined; [key: `bytes27[${string}]`]: undefined; [key: `bytes28[${string}]`]: undefined; [key: `bytes29[${string}]`]: undefined; [key: `bytes30[${string}]`]: undefined; [key: `bytes31[${string}]`]: undefined; [key: `int[${string}]`]: undefined; [key: `int8[${string}]`]: undefined; [key: `int16[${string}]`]: undefined; [key: `int24[${string}]`]: undefined; [key: `int40[${string}]`]: undefined; [key: `int48[${string}]`]: undefined; [key: `int56[${string}]`]: undefined; [key: `int64[${string}]`]: undefined; [key: `int72[${string}]`]: undefined; [key: `int80[${string}]`]: undefined; [key: `int88[${string}]`]: undefined; [key: `int96[${string}]`]: undefined; [key: `int104[${string}]`]: undefined; [key: `int112[${string}]`]: undefined; [key: `int120[${string}]`]: undefined; [key: `int128[${string}]`]: undefined; [key: `int136[${string}]`]: undefined; [key: `int144[${string}]`]: undefined; [key: `int152[${string}]`]: undefined; [key: `int160[${string}]`]: undefined; [key: `int168[${string}]`]: undefined; [key: `int176[${string}]`]: undefined; [key: `int184[${string}]`]: undefined; [key: `int192[${string}]`]: undefined; [key: `int200[${string}]`]: undefined; [key: `int208[${string}]`]: undefined; [key: `int216[${string}]`]: undefined; [key: `int224[${string}]`]: undefined; [key: `int232[${string}]`]: undefined; [key: `int240[${string}]`]: undefined; [key: `int248[${string}]`]: undefined; [key: `int256[${string}]`]: undefined; [key: `uint[${string}]`]: undefined; [key: `uint16[${string}]`]: undefined; [key: `uint24[${string}]`]: undefined; [key: `uint32[${string}]`]: undefined; [key: `uint40[${string}]`]: undefined; [key: `uint48[${string}]`]: undefined; [key: `uint56[${string}]`]: undefined; [key: `uint72[${string}]`]: undefined; [key: `uint80[${string}]`]: undefined; [key: `uint88[${string}]`]: undefined; [key: `uint96[${string}]`]: undefined; [key: `uint104[${string}]`]: undefined; [key: `uint112[${string}]`]: undefined; [key: `uint120[${string}]`]: undefined; [key: `uint128[${string}]`]: undefined; [key: `uint136[${string}]`]: undefined; [key: `uint144[${string}]`]: undefined; [key: `uint152[${string}]`]: undefined; [key: `uint160[${string}]`]: undefined; [key: `uint168[${string}]`]: undefined; [key: `uint176[${string}]`]: undefined; [key: `uint184[${string}]`]: undefined; [key: `uint192[${string}]`]: undefined; [key: `uint200[${string}]`]: undefined; [key: `uint208[${string}]`]: undefined; [key: `uint216[${string}]`]: undefined; [key: `uint224[${string}]`]: undefined; [key: `uint232[${string}]`]: undefined; [key: `uint240[${string}]`]: undefined; [key: `uint248[${string}]`]: undefined; address?: undefined; bool?: undefined; bytes?: undefined; bytes1?: undefined; bytes10?: undefined; bytes11?: undefined; bytes12?: undefined; bytes13?: undefined; bytes14?: undefined; bytes15?: undefined; bytes16?: undefined; bytes17?: undefined; bytes18?: undefined; bytes19?: undefined; bytes2?: undefined; bytes20?: undefined; bytes21?: undefined; bytes22?: undefined; bytes23?: undefined; bytes24?: undefined; bytes25?: undefined; bytes26?: undefined; bytes27?: undefined; bytes28?: undefined; bytes29?: undefined; bytes3?: undefined; bytes30?: undefined; bytes31?: undefined; bytes32?: undefined; bytes4?: undefined; bytes5?: undefined; bytes6?: undefined; bytes7?: undefined; bytes8?: undefined; bytes9?: undefined; int104?: undefined; int112?: undefined; int120?: undefined; int128?: undefined; int136?: undefined; int144?: undefined; int152?: undefined; int16?: undefined; int160?: undefined; int168?: undefined; int176?: undefined; int184?: undefined; int192?: undefined; int200?: undefined; int208?: undefined; int216?: undefined; int224?: undefined; int232?: undefined; int24?: undefined; int240?: undefined; int248?: undefined; int256?: undefined; int32?: undefined; int40?: undefined; int48?: undefined; int56?: undefined; int64?: undefined; int72?: undefined; int8?: undefined; int80?: undefined; int88?: undefined; int96?: undefined; string?: undefined; uint104?: undefined; uint112?: undefined; uint120?: undefined; uint128?: undefined; uint136?: undefined; uint144?: undefined; uint152?: undefined; uint16?: undefined; uint160?: undefined; uint168?: undefined; uint176?: undefined; uint184?: undefined; uint192?: undefined; uint200?: undefined; uint208?: undefined; uint216?: undefined; uint224?: undefined; uint232?: undefined; uint24?: undefined; uint240?: undefined; uint248?: undefined; uint256?: undefined; uint32?: undefined; uint40?: undefined; uint48?: undefined; uint56?: undefined; uint64?: undefined; uint72?: undefined; uint8?: undefined; uint80?: undefined; uint88?: undefined; uint96?: undefined; } | {[key: string]: unknown; } |
primaryType extends string |
Parameters
Section titled “Parameters”| Parameter | Type | Description |
|---|---|---|
args | SignTypedDataParameters<typedData, primaryType, Account> | SignTypedDataParameters |
Returns
Section titled “Returns”Promise<`0x${string}`>
The signed data. SignTypedDataReturnType
Examples
Section titled “Examples”import { createWalletClient, custom } from 'viem'import { mainnet } from 'viem/chains'
const client = createWalletClient({ chain: mainnet, transport: custom(window.ethereum),})const signature = await client.signTypedData({ account: '0xA0Cf798816D4b9b9866b5330EEa46a18382f251e', domain: { name: 'Ether Mail', version: '1', chainId: 1, verifyingContract: '0xCcCCccccCCCCcCCCCCCcCcCccCcCCCcCcccccccC', }, types: { Person: [ { name: 'name', type: 'string' }, { name: 'wallet', type: 'address' }, ], Mail: [ { name: 'from', type: 'Person' }, { name: 'to', type: 'Person' }, { name: 'contents', type: 'string' }, ], }, primaryType: 'Mail', message: { from: { name: 'Cow', wallet: '0xCD2a3d9F938E13CD947Ec05AbC7FE734Df8DD826', }, to: { name: 'Bob', wallet: '0xbBbBBBBbbBBBbbbBbbBbbbbBBbBbbbbBbBbbBBbB', }, contents: 'Hello, Bob!', },})// Account Hoistingimport { createWalletClient, http } from 'viem'import { privateKeyToAccount } from 'viem/accounts'import { mainnet } from 'viem/chains'
const client = createWalletClient({ account: privateKeyToAccount('0x…'), chain: mainnet, transport: http(),})const signature = await client.signTypedData({ domain: { name: 'Ether Mail', version: '1', chainId: 1, verifyingContract: '0xCcCCccccCCCCcCCCCCCcCcCccCcCCCcCcccccccC', }, types: { Person: [ { name: 'name', type: 'string' }, { name: 'wallet', type: 'address' }, ], Mail: [ { name: 'from', type: 'Person' }, { name: 'to', type: 'Person' }, { name: 'contents', type: 'string' }, ], }, primaryType: 'Mail', message: { from: { name: 'Cow', wallet: '0xCD2a3d9F938E13CD947Ec05AbC7FE734Df8DD826', }, to: { name: 'Bob', wallet: '0xbBbBBBBbbBBBbbbBbbBbbbbBBbBbbbbBbBbbBBbB', }, contents: 'Hello, Bob!', },})switchChain()
Section titled “switchChain()”switchChain: (
args) =>Promise<void>
Switch the target chain in a wallet.
- Docs: https://viem.sh/docs/actions/wallet/switchChain
- JSON-RPC Methods:
eth_switchEthereumChain
Parameters
Section titled “Parameters”| Parameter | Type | Description |
|---|---|---|
args | SwitchChainParameters | SwitchChainParameters |
Returns
Section titled “Returns”Promise<void>
Example
Section titled “Example”import { createWalletClient, custom } from 'viem'import { mainnet, optimism } from 'viem/chains'
const client = createWalletClient({ chain: mainnet, transport: custom(window.ethereum),})await client.switchChain({ id: optimism.id })transport
Section titled “transport”transport:
TransportConfig<string,EIP1193RequestFn> &Record<string,any>
The RPC transport
type:
string
The type of client.
uid:
string
A unique ID for the client.
waitForCallsStatus()
Section titled “waitForCallsStatus()”waitForCallsStatus: (
parameters) =>Promise<{atomic:boolean;capabilities?: {[key:string]:any; } | {[key:string]:any; };chainId:number;id:string;receipts?:WalletCallReceipt<bigint,"success"|"reverted">[];status:"pending"|"success"|"failure"|undefined;statusCode:number;version:string; }>
Waits for the status & receipts of a call bundle that was sent via sendCalls.
- Docs: https://viem.sh/docs/actions/wallet/waitForCallsStatus
- JSON-RPC Methods:
wallet_getCallsStatus
Parameters
Section titled “Parameters”| Parameter | Type | Description |
|---|---|---|
parameters | WaitForCallsStatusParameters | WaitForCallsStatusParameters |
Returns
Section titled “Returns”Promise<{ atomic: boolean; capabilities?: {[key: string]: any; } | {[key: string]: any; }; chainId: number; id: string; receipts?: WalletCallReceipt<bigint, "success" | "reverted">[]; status: "pending" | "success" | "failure" | undefined; statusCode: number; version: string; }>
Status & receipts of the call bundle. WaitForCallsStatusReturnType
Example
Section titled “Example”import { createWalletClient, custom } from 'viem'import { mainnet } from 'viem/chains'
const client = createWalletClient({ chain: mainnet, transport: custom(window.ethereum),})
const { receipts, status } = await waitForCallsStatus(client, { id: '0xdeadbeef' })watchAsset()
Section titled “watchAsset()”watchAsset: (
args) =>Promise<boolean>
Adds an EVM chain to the wallet.
- Docs: https://viem.sh/docs/actions/wallet/watchAsset
- JSON-RPC Methods:
eth_switchEthereumChain
Parameters
Section titled “Parameters”| Parameter | Type | Description |
|---|---|---|
args | WatchAssetParams | WatchAssetParameters |
Returns
Section titled “Returns”Promise<boolean>
Boolean indicating if the token was successfully added. WatchAssetReturnType
Example
Section titled “Example”import { createWalletClient, custom } from 'viem'import { mainnet } from 'viem/chains'
const client = createWalletClient({ chain: mainnet, transport: custom(window.ethereum),})const success = await client.watchAsset({ type: 'ERC20', options: { address: '0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2', decimals: 18, symbol: 'WETH', },})writeContract()
Section titled “writeContract()”writeContract: <
abi,functionName,args,chainOverride>(args) =>Promise<`0x${string}`>
Executes a write function on a contract.
- Docs: https://viem.sh/docs/contract/writeContract
- Examples: https://stackblitz.com/github/wevm/viem/tree/main/examples/contracts_writing-to-contracts
A “write” function on a Solidity contract modifies the state of the blockchain. These types of functions require gas to be executed, and hence a Transaction is needed to be broadcast in order to change the state.
Internally, uses a Wallet Client to call the sendTransaction action with ABI-encoded data.
Warning: The write internally sends a transaction – it does not validate if the contract write will succeed (the contract may throw an error). It is highly recommended to simulate the contract write with contract.simulate before you execute it.
Type Parameters
Section titled “Type Parameters”| Type Parameter | Default type |
|---|---|
abi extends Abi | readonly unknown[] | - |
functionName extends string | - |
args extends unknown | - |
chainOverride extends Chain | undefined | undefined |
Parameters
Section titled “Parameters”| Parameter | Type | Description |
|---|---|---|
args | WriteContractParameters<abi, functionName, args, Chain, Account, chainOverride> | WriteContractParameters |
Returns
Section titled “Returns”Promise<`0x${string}`>
A Transaction Hash. WriteContractReturnType
Examples
Section titled “Examples”import { createWalletClient, custom, parseAbi } from 'viem'import { mainnet } from 'viem/chains'
const client = createWalletClient({ chain: mainnet, transport: custom(window.ethereum),})const hash = await client.writeContract({ address: '0xFBA3912Ca04dd458c843e2EE08967fC04f3579c2', abi: parseAbi(['function mint(uint32 tokenId) nonpayable']), functionName: 'mint', args: [69420],})// With Validationimport { createWalletClient, custom, parseAbi } from 'viem'import { mainnet } from 'viem/chains'
const client = createWalletClient({ chain: mainnet, transport: custom(window.ethereum),})const { request } = await client.simulateContract({ address: '0xFBA3912Ca04dd458c843e2EE08967fC04f3579c2', abi: parseAbi(['function mint(uint32 tokenId) nonpayable']), functionName: 'mint', args: [69420],}const hash = await client.writeContract(request)writeContractSync()
Section titled “writeContractSync()”writeContractSync: <
abi,functionName,args,chainOverride>(args) =>Promise<TransactionReceipt>
Executes a write function on a contract synchronously. Returns the transaction receipt.
A “write” function on a Solidity contract modifies the state of the blockchain. These types of functions require gas to be executed, and hence a Transaction is needed to be broadcast in order to change the state.
Internally, uses a Wallet Client to call the sendTransaction action with ABI-encoded data.
Warning: The write internally sends a transaction – it does not validate if the contract write will succeed (the contract may throw an error). It is highly recommended to simulate the contract write with contract.simulate before you execute it.
Type Parameters
Section titled “Type Parameters”| Type Parameter | Default type |
|---|---|
abi extends Abi | readonly unknown[] | - |
functionName extends string | - |
args extends unknown | - |
chainOverride extends Chain | undefined | undefined |
Parameters
Section titled “Parameters”| Parameter | Type | Description |
|---|---|---|
args | WriteContractSyncParameters<abi, functionName, args, Chain, Account, chainOverride> | WriteContractSyncParameters |
Returns
Section titled “Returns”Promise<TransactionReceipt>
A Transaction Receipt. WriteContractSyncReturnType
Example
Section titled “Example”import { createWalletClient, custom, parseAbi } from 'viem'import { mainnet } from 'viem/chains'
const client = createWalletClient({ chain: mainnet, transport: custom(window.ethereum),})const receipt = await client.writeContractSync({ address: '0xFBA3912Ca04dd458c843e2EE08967fC04f3579c2', abi: parseAbi(['function mint(uint32 tokenId) nonpayable']), functionName: 'mint', args: [69420],})isExpired()
Section titled “isExpired()”isExpired: (
client,permission) =>Promise<boolean>
Defined in: packages/iso-filecoin-synapse/src/session-keys/secp256k1.ts:106
Parameters
Section titled “Parameters”| Parameter | Type |
|---|---|
client | Client<Transport, Chain, Account> |
permission | SessionKeyPermissions |
Returns
Section titled “Returns”Promise<boolean>
login()
Section titled “login()”login: (
client) =>Promise<`0x${string}`>
Defined in: packages/iso-filecoin-synapse/src/session-keys/secp256k1.ts:105
Parameters
Section titled “Parameters”| Parameter | Type |
|---|---|
client | Client<Transport, Chain, Account> |
Returns
Section titled “Returns”Promise<`0x${string}`>