<!--
Sitemap:
- [Why Viem](/docs/introduction): A brief preamble on why we built Viem
- [Installation](/docs/installation)
- [Getting Started](/docs/getting-started): Get started with viem in just a few lines of code.
- [Platform Compatibility](/docs/compatibility): Platforms compatible with Viem
- [Frequently Asked Questions](/docs/faq)
- [Migration Guide](/docs/migration-guide)
- [Ethers v5 → viem Migration Guide](/docs/ethers-migration): Migrate from Ethers v5 to viem
- [TypeScript](/docs/typescript): TypeScript support for Viem
- [Error Handling](/docs/error-handling)
- [EIP-7702 Overview](/docs/eip7702): An Overview of EIP-7702
- [Contract Writes with EIP-7702](/docs/eip7702/contract-writes)
- [Sending Transactions with EIP-7702](/docs/eip7702/sending-transactions)
- [Blob Transactions](/docs/guides/blob-transactions): Sending your first Blob Transaction with Viem.
- [Introduction to Clients & Transports](/docs/clients/intro): A brief introduction to Clients & Transports.
- [Public Client](/docs/clients/public): A function to create a Public Client
- [Wallet Client](/docs/clients/wallet): A function to create a Wallet Client.
- [Test Client](/docs/clients/test): A function to create a Test Client
- [Build your own Client](/docs/clients/custom)
- [HTTP Transport](/docs/clients/transports/http): A function to create a HTTP Transport for a Client
- [WebSocket Transport](/docs/clients/transports/websocket): A function to create a WebSocket Transport for a Client
- [Custom Transport](/docs/clients/transports/custom): A function to create a Custom Transport for a Client
- [IPC Transport](/docs/clients/transports/ipc): A function to create an IPC Transport for a Client
- [Fallback Transport](/docs/clients/transports/fallback): A function to create a Fallback Transport for a Client
- [Introduction to Public Actions](/docs/actions/public/introduction): A brief introduction on what Public Actions are in viem.
- [createAccessList](/docs/actions/public/createAccessList)
- [getBalance](/docs/actions/public/getBalance): Returns the balance of an address in wei.
- [getTransactionCount](/docs/actions/public/getTransactionCount): Returns the number of Transactions an Account has sent.
- [getBlock](/docs/actions/public/getBlock): Returns information about a block at a block number, hash or tag.
- [getBlockReceipts](/docs/actions/public/getBlockReceipts): Returns the transaction receipts of a block at a block number, hash or tag.
- [getBlockNumber](/docs/actions/public/getBlockNumber): Returns the number of the most recent block seen.
- [getBlockTransactionCount](/docs/actions/public/getBlockTransactionCount): Returns the number of Transactions at a block number, hash or tag.
- [simulateBlocks](/docs/actions/public/simulateBlocks): Simulates a set of calls on block(s).
- [watchBlockNumber](/docs/actions/public/watchBlockNumber): Watches and returns incoming block numbers.
- [watchBlocks](/docs/actions/public/watchBlocks): Watches and returns information for incoming blocks.
- [call](/docs/actions/public/call): An Action for executing a new message call.
- [simulateCalls](/docs/actions/public/simulateCalls): Simulates a set of calls on block(s).
- [getChainId](/docs/actions/public/getChainId): Returns the chain ID associated with the current network
- [getEip712Domain](/docs/actions/public/getEip712Domain): Reads the EIP-712 domain from a contract.
- [estimateFeesPerGas](/docs/actions/public/estimateFeesPerGas): Returns an estimate for the fees per gas (in wei) for a transaction to be likely included in the next block.
- [estimateGas](/docs/actions/public/estimateGas): An Action for estimating gas for a transaction.
- [estimateMaxPriorityFeePerGas](/docs/actions/public/estimateMaxPriorityFeePerGas): Returns an estimate for the max priority fee per gas (in wei) for a transaction to be likely included in the next block.
- [getBlobBaseFee](/docs/actions/public/getBlobBaseFee): Returns the current blob base fee (in wei).
- [getFeeHistory](/docs/actions/public/getFeeHistory): Returns a collection of historical gas information.
- [getGasPrice](/docs/actions/public/getGasPrice): Returns the current price of gas (in wei).
- [createBlockFilter](/docs/actions/public/createBlockFilter): An Action for creating a new Block Filter.
- [createEventFilter](/docs/actions/public/createEventFilter): An Action for creating a new Event Filter.
- [createPendingTransactionFilter](/docs/actions/public/createPendingTransactionFilter): An Action for creating a new pending transaction filter.
- [getFilterChanges](/docs/actions/public/getFilterChanges): Returns a list of logs or hashes based on a Filter.
- [getFilterLogs](/docs/actions/public/getFilterLogs): Returns a list of event logs since the filter was created.
- [getLogs](/docs/actions/public/getLogs): Returns a list of event logs matching the provided parameters.
- [watchEvent](/docs/actions/public/watchEvent): Watches and returns emitted Event Logs.
- [uninstallFilter](/docs/actions/public/uninstallFilter): Destroys a Filter.
- [getProof](/docs/actions/public/getProof): Returns the account and storage values of the specified account including the Merkle-proof.
- [verifyMessage](/docs/actions/public/verifyMessage): Verifies if a signed message was generated by the provided address.
- [verifyTypedData](/docs/actions/public/verifyTypedData): Verifies a typed data signature
- [prepareTransactionRequest](/docs/actions/wallet/prepareTransactionRequest): Prepares a transaction request for signing.
- [getTransaction](/docs/actions/public/getTransaction): Returns information about a transaction given a hash or block identifier.
- [getTransactionConfirmations](/docs/actions/public/getTransactionConfirmations): Returns the number of blocks passed (confirmations) since the transaction was processed on a block.
- [getTransactionReceipt](/docs/actions/public/getTransactionReceipt): Returns the transaction receipt given a transaction hash.
- [sendRawTransaction](/docs/actions/wallet/sendRawTransaction): Sends a signed transaction to the network
- [waitForTransactionReceipt](/docs/actions/public/waitForTransactionReceipt): Retrieves a Transaction Receipt for a given Transaction hash.
- [watchPendingTransactions](/docs/actions/public/watchPendingTransactions): Watches and returns pending transaction hashes.
- [Introduction to Wallet Actions](/docs/actions/wallet/introduction): A brief introduction to Wallet Actions in viem.
- [getAddresses](/docs/actions/wallet/getAddresses): Returns a list of addresses owned by the wallet or client.
- [requestAddresses](/docs/actions/wallet/requestAddresses): Requests a list of accounts managed by a wallet.
- [watchAsset](/docs/actions/wallet/watchAsset): Requests that the user tracks the token in their wallet.
- [getCallsStatus](/docs/actions/wallet/getCallsStatus): Returns the status of a call batch.
- [getCapabilities](/docs/actions/wallet/getCapabilities): Extract capabilities that a connected wallet supports.
- [sendCalls](/docs/actions/wallet/sendCalls): Sign and broadcast a batch of calls to the network.
- [sendCallsSync](/docs/actions/wallet/sendCallsSync): Sign and broadcast a batch of calls to the network, and waits for the calls to be included in a block.
- [showCallsStatus](/docs/actions/wallet/showCallsStatus): Requests for the wallet to show information about a call batch.
- [waitForCallsStatus](/docs/actions/wallet/waitForCallsStatus): Waits for a call batch to be confirmed & included on a Block.
- [addChain](/docs/actions/wallet/addChain): Adds an EVM chain to the wallet.
- [switchChain](/docs/actions/wallet/switchChain): Switch the target chain in a wallet.
- [signMessage](/docs/actions/wallet/signMessage): Signs a message with the Account's private key.
- [signTypedData](/docs/actions/wallet/signTypedData): Signs typed data with the Account's private key.
- [getPermissions](/docs/actions/wallet/getPermissions): Gets the wallets current permissions.
- [requestPermissions](/docs/actions/wallet/requestPermissions): Requests permissions for a wallet.
- [sendRawTransactionSync](/docs/actions/wallet/sendRawTransactionSync): Sends a signed transaction to the network synchronously
- [sendTransaction](/docs/actions/wallet/sendTransaction): Creates, signs, and sends a new transaction to the network.
- [sendTransactionSync](/docs/actions/wallet/sendTransactionSync): Creates, signs, and sends a new transaction to the network synchronously.
- [signTransaction](/docs/actions/wallet/signTransaction): Signs a transaction.
- [Introduction to Test Actions](/docs/actions/test/introduction): A brief introduction on what Test Actions are in viem.
- [impersonateAccount](/docs/actions/test/impersonateAccount): Impersonate an account or contract address.
- [setBalance](/docs/actions/test/setBalance): Modifies the balance of an account.
- [setCode](/docs/actions/test/setCode): Modifies the bytecode stored at an account's address.
- [setNonce](/docs/actions/test/setNonce): Modifies (overrides) the nonce of an account.
- [setStorageAt](/docs/actions/test/setStorageAt): Writes to a slot of an account's storage.
- [stopImpersonatingAccount](/docs/actions/test/stopImpersonatingAccount): Stop impersonating an account after having previously used impersonateAccount.
- [getAutomine](/docs/actions/test/getAutomine): Returns the automatic mining status of the node.
- [increaseTime](/docs/actions/test/increaseTime): Jump forward in time by the given amount of time, in seconds.
- [mine](/docs/actions/test/mine): Mine a specified number of blocks.
- [removeBlockTimestampInterval](/docs/actions/test/removeBlockTimestampInterval): Removes setBlockTimestampInterval if it exists.
- [setAutomine](/docs/actions/test/setAutomine): Enables or disables the automatic mining of new blocks with each new transaction submitted to the network.
- [setIntervalMining](/docs/actions/test/setIntervalMining): Sets the automatic mining interval (in seconds) of blocks.
- [setBlockTimestampInterval](/docs/actions/test/setBlockTimestampInterval): Sets the block's timestamp interval.
- [setBlockGasLimit](/docs/actions/test/setBlockGasLimit): Sets the block's gas limit.
- [setNextBlockBaseFeePerGas](/docs/actions/test/setNextBlockBaseFeePerGas): Sets the next block's base fee per gas.
- [setNextBlockTimestamp](/docs/actions/test/setNextBlockTimestamp): Sets the next block's timestamp.
- [setCoinbase](/docs/actions/test/setCoinbase): Sets the coinbase address to be used in new blocks.
- [setMinGasPrice](/docs/actions/test/setMinGasPrice): Change the minimum gas price accepted by the network (in wei).
- [reset](/docs/actions/test/reset): Resets the fork back to its original state.
- [setLoggingEnabled](/docs/actions/test/setLoggingEnabled): Enable or disable logging on the test node network.
- [setRpcUrl](/docs/actions/test/setRpcUrl): Sets the backend RPC URL.
- [dumpState](/docs/actions/test/dumpState): Serializes the current state into a savable data blob.
- [loadState](/docs/actions/test/loadState): Adds state previously dumped to the current chain.
- [revert](/docs/actions/test/revert): Revert the state of the blockchain at the current block.
- [snapshot](/docs/actions/test/snapshot): Snapshot the state of the blockchain at the current block.
- [dropTransaction](/docs/actions/test/dropTransaction): Removes a transaction from the mempool.
- [getTxpoolContent](/docs/actions/test/getTxpoolContent): Returns the details of all transactions currently pending for inclusion in the next block(s).
- [getTxpoolStatus](/docs/actions/test/getTxpoolStatus): Returns a summary of all the transactions currently pending for inclusion in the next block(s).
- [inspectTxpool](/docs/actions/test/inspectTxpool): Returns a summary of all the transactions currently pending for inclusion in the next block(s).
- [sendUnsignedTransaction](/docs/actions/test/sendUnsignedTransaction): Executes a transaction regardless of the signature.
- [JSON-RPC Account](/docs/accounts/jsonRpc): A function to create a JSON-RPC Account.
- [Local Accounts (Private Key, Mnemonic, etc)](/docs/accounts/local)
- [privateKeyToAccount](/docs/accounts/local/privateKeyToAccount): A function to create a Private Key Account.
- [mnemonicToAccount](/docs/accounts/local/mnemonicToAccount): A function to create a Mnemonic Account.
- [hdKeyToAccount](/docs/accounts/local/hdKeyToAccount): A function to create a Hierarchical Deterministic (HD) Account.
- [toAccount](/docs/accounts/local/toAccount): A function to create a Custom Account.
- [createNonceManager](/docs/accounts/local/createNonceManager): Creates a Nonce Manager for automatic nonce generation
- [signMessage (Local Account)](/docs/accounts/local/signMessage): Signs a message with the Account's private key.
- [signTransaction (Local Account)](/docs/accounts/local/signTransaction): Signs a transaction with the Account's private key.
- [signTypedData (Local Account)](/docs/accounts/local/signTypedData): Signs typed data with the Account's private key.
- [Chains](/docs/chains/introduction)
- [Fees](/docs/chains/fees): Configure chain-based fee data in Viem
- [Formatters](/docs/chains/formatters): Configure chain-based formatters in Viem
- [Serializers](/docs/chains/serializers): Configure chain-based serializers in Viem
- [Celo](/docs/chains/celo): Integrating with Celo in Viem
- [Getting Started with OP Stack](/op-stack): Getting started with the OP Stack in Viem
- [Getting Started with ZKsync](/zksync): Getting started with the ZKsync in Viem
- [Contract Instances](/docs/contract/getContract): A Contract Instance is a type-safe interface for performing contract-related actions with a specific ABI and address, created by the getContract function.
- [createContractEventFilter](/docs/contract/createContractEventFilter): Creates a Filter to retrieve contract event logs.
- [deployContract](/docs/contract/deployContract): Deploys a contract to the network, given bytecode & constructor arguments.
- [estimateContractGas](/docs/contract/estimateContractGas): Estimates the gas required to successfully execute a contract write function call.
- [getCode](/docs/contract/getCode): Retrieves the bytecode at an address.
- [getContractEvents](/docs/contract/getContractEvents): Returns a list of event logs matching the provided parameters.
- [getStorageAt](/docs/contract/getStorageAt): Returns the value from a storage slot at a given address.
- [multicall](/docs/contract/multicall): Batches up multiple functions on a contract in a single call.
- [readContract](/docs/contract/readContract): Calls a read-only function on a contract, and returns the response.
- [simulateContract](/docs/contract/simulateContract): Simulates & validates a contract interaction.
- [writeContract](/docs/contract/writeContract): Executes a write function on a contract.
- [writeContractSync](/docs/contract/writeContractSync): Executes a write function on a contract synchronously.
- [watchContractEvent](/docs/contract/watchContractEvent): Watches and returns emitted contract event logs.
- [decodeDeployData](/docs/contract/decodeDeployData): Decodes ABI encoded deploy data (bytecode & arguments).
- [decodeErrorResult](/docs/contract/decodeErrorResult): Decodes reverted error from a contract function call.
- [decodeEventLog](/docs/contract/decodeEventLog): Decodes ABI encoded event topics & data.
- [decodeFunctionData](/docs/contract/decodeFunctionData): Decodes ABI encoded data (4 byte selector & arguments) into a function name and arguments.
- [decodeFunctionResult](/docs/contract/decodeFunctionResult): Decodes the result of a function call on a contract.
- [encodeDeployData](/docs/contract/encodeDeployData): Encodes deploy data (bytecode & constructor args) into an ABI encoded value.
- [encodeErrorResult](/docs/contract/encodeErrorResult): Encodes a reverted error from a function call.
- [encodeEventTopics](/docs/contract/encodeEventTopics): Encodes an event (with optional arguments) into filter topics.
- [encodeFunctionData](/docs/contract/encodeFunctionData): Encodes the function name and parameters into an ABI encoded value (4 byte selector & arguments).
- [encodeFunctionResult](/docs/contract/encodeFunctionResult): Encodes structured return data into ABI encoded data.
- [parseEventLogs](/docs/contract/parseEventLogs): Extracts & decodes logs from a set of opaque logs.
- [getEnsAddress](/docs/ens/actions/getEnsAddress): Gets address for ENS name.
- [getEnsAvatar](/docs/ens/actions/getEnsAvatar): Gets the avatar of an ENS name.
- [getEnsName](/docs/ens/actions/getEnsName): Gets primary name for specified address.
- [getEnsResolver](/docs/ens/actions/getEnsResolver): Gets resolver for ENS name.
- [getEnsText](/docs/ens/actions/getEnsText): Gets a text record for specified ENS name.
- [labelhash](/docs/ens/utilities/labelhash): Hashes ENS label.
- [namehash](/docs/ens/utilities/namehash): Hashes ENS name.
- [normalize](/docs/ens/utilities/normalize): Normalizes ENS name to UTS46.
- [verifySiweMessage](/docs/siwe/actions/verifySiweMessage): Verifies EIP-4361 formatted message was signed.
- [createSiweMessage](/docs/siwe/utilities/createSiweMessage): Creates EIP-4361 formatted message.
- [generateSiweNonce](/docs/siwe/utilities/generateSiweNonce): Generates random EIP-4361 nonce.
- [parseSiweMessage](/docs/siwe/utilities/parseSiweMessage): Parses EIP-4361 formatted message into message fields object.
- [validateSiweMessage](/docs/siwe/utilities/validateSiweMessage): Validates EIP-4361 message.
- [decodeAbiParameters](/docs/abi/decodeAbiParameters): Decodes ABI encoded data.
- [encodeAbiParameters](/docs/abi/encodeAbiParameters): Generates ABI encoded data.
- [encodePacked](/docs/abi/encodePacked): Generates ABI encoded data.
- [getAbiItem](/docs/abi/getAbiItem): Retrieves an item from the ABI array.
- [parseAbi](/docs/abi/parseAbi): Parses human-readable ABI into JSON.
- [parseAbiItem](/docs/abi/parseAbiItem): Parses human-readable ABI item (e.g. error, event, function) into ABI item.
- [parseAbiParameter](/docs/abi/parseAbiParameter): Parses human-readable ABI parameter into ABI parameter.
- [parseAbiParameters](/docs/abi/parseAbiParameters): Parses human-readable ABI parameters into ABI parameters.
- [getDelegation](/docs/eip7702/getDelegation): Returns the address an account has delegated to via EIP-7702.
- [prepareAuthorization](/docs/eip7702/prepareAuthorization): Prepares an EIP-7702 Authorization for signing.
- [signAuthorization](/docs/eip7702/signAuthorization): Signs an EIP-7702 Authorization object.
- [hashAuthorization](/docs/eip7702/hashAuthorization): Calculates an Authorization object hash in EIP-7702 format.
- [recoverAuthorizationAddress](/docs/eip7702/recoverAuthorizationAddress): Recovers the original signing address from a signed Authorization object.
- [verifyAuthorization](/docs/eip7702/verifyAuthorization): Verifies that an Authorization object was signed by the provided address.
- [getAddress](/docs/utilities/getAddress): Converts an address into an address that is checksum encoded.
- [getContractAddress](/docs/utilities/getContractAddress): Retrieves a contract address.
- [isAddress](/docs/utilities/isAddress): Checks if the address is valid.
- [isAddressEqual](/docs/utilities/isAddressEqual): Checks if the given addresses (checksummed) are equal.
- [blobsToProofs](/docs/utilities/blobsToProofs): Compute the proofs for a list of blobs and their commitments.
- [blobsToCommitments](/docs/utilities/blobsToCommitments): Compute commitments from a list of blobs.
- [commitmentsToVersionedHashes](/docs/utilities/commitmentsToVersionedHashes): Transform a list of commitments to their versioned hashes.
- [commitmentToVersionedHash](/docs/utilities/commitmentToVersionedHash): Transform a commitment to it's versioned hash.
- [fromBlobs](/docs/utilities/fromBlobs): Transforms blobs into the originating data.
- [sidecarsToVersionedHashes](/docs/utilities/sidecarsToVersionedHashes): Transforms a list of sidecars to their versioned hashes.
- [toBlobs](/docs/utilities/toBlobs): Transforms arbitrary data into blobs.
- [toBlobSidecars](/docs/utilities/toBlobSidecars): Transforms arbitrary data into blob sidecars.
- [extractChain](/docs/utilities/extractChain)
- [concat](/docs/utilities/concat): Concatenates a set of hex values or byte arrays.
- [isBytes](/docs/utilities/isBytes): Checks whether the value is a byte array or not.
- [isHex](/docs/utilities/isHex): Checks whether the value is a hex value or not.
- [pad](/docs/utilities/pad): Pads a hex value or byte array with leading or trailing zeros.
- [slice](/docs/utilities/slice): Returns a section of the hex or byte array given a start/end bytes offset.
- [size](/docs/utilities/size): Retrieves the size of the value (in bytes).
- [trim](/docs/utilities/trim): Trims the leading or trailing zero byte data from a hex value or byte array.
- [fromBytes](/docs/utilities/fromBytes): Decodes a byte array to a string, hex value, boolean or number.
- [fromHex](/docs/utilities/fromHex): Decodes a hex value to a string, number or byte array.
- [fromRlp](/docs/utilities/fromRlp): Decodes a RLP value into a decoded hex value or byte array.
- [toBytes](/docs/utilities/toBytes): Encodes a string, hex value, number or boolean to a byte array.
- [toHex](/docs/utilities/toHex): Encodes a string, number, boolean or byte array to a hex value.
- [toRlp](/docs/utilities/toRlp): Encodes a hex value or byte array into a RLP encoded value.
- [isHash](/docs/utilities/isHash): Checks if a string is a valid 32-byte hex hash.
- [keccak256](/docs/utilities/keccak256): Calculates the Keccak256 hash of a byte array.
- [ripemd160](/docs/utilities/ripemd160): Calculates the Ripemd160 hash of a byte array.
- [sha256](/docs/utilities/sha256): Calculates the Sha256 hash of a byte array.
- [toEventHash](/docs/utilities/toEventHash): Returns the hash (of the event signature) for a given event definition.
- [toEventSelector](/docs/utilities/toEventSelector): Returns the event selector for a given event definition.
- [toEventSignature](/docs/utilities/toEventSignature): Returns the signature for a given event or event definition.
- [toFunctionHash](/docs/utilities/toFunctionHash): Returns the hash (of the function signature) for a given function definition.
- [toFunctionSelector](/docs/utilities/toFunctionSelector): Returns the function selector (4 byte encoding) for a given function definition.
- [toFunctionSignature](/docs/utilities/toFunctionSignature): Returns the signature for a given function definition.
- [setupKzg](/docs/utilities/setupKzg): Sets up and returns a KZG interface.
- [compactSignatureToSignature](/docs/utilities/compactSignatureToSignature): Parses a compact signature into signature format.
- [hashMessage](/docs/utilities/hashMessage): Hashes a message in EIP-191 format.
- [hashTypedData](/docs/utilities/hashTypedData): Hashes EIP-712 typed data.
- [isErc6492Signature](/docs/utilities/isErc6492Signature): Checks whether the signature is in ERC-6492 format.
- [parseCompactSignature](/docs/utilities/parseCompactSignature): Parses a hex formatted compact signature into a structured compact signature.
- [parseErc6492Signature](/docs/utilities/parseErc6492Signature): Parses a hex-formatted ERC-6492 flavoured signature.
- [parseSignature](/docs/utilities/parseSignature): Parses a hex formatted signature into a structured signature.
- [recoverAddress](/docs/utilities/recoverAddress): Recovers the signing address from a hash & signature.
- [recoverMessageAddress](/docs/utilities/recoverMessageAddress): Recovers the signing address from a message & signature.
- [recoverPublicKey](/docs/utilities/recoverPublicKey): Recovers the signing public key from a hash & signature.
- [recoverTransactionAddress](/docs/utilities/recoverTransactionAddress): Recovers the signing address from a transaction & signature.
- [recoverTypedDataAddress](/docs/utilities/recoverTypedDataAddress): Recovers the signing address from EIP-712 typed data & signature.
- [serializeCompactSignature](/docs/utilities/serializeCompactSignature): Serializes a compact signature into hex format.
- [serializeErc6492Signature](/docs/utilities/serializeErc6492Signature): Serializes a ERC-6492 flavoured signature into hex format.
- [serializeSignature](/docs/utilities/serializeSignature): Serializes a structured signature into hex format.
- [signatureToCompactSignature](/docs/utilities/signatureToCompactSignature): Parses a signature into a compact signature.
- [verifyMessage](/docs/utilities/verifyMessage): Verifies if a signed message was generated by the provided address.
- [verifyTypedData](/docs/utilities/verifyTypedData): Verifies a typed data signature
- [parseTransaction](/docs/utilities/parseTransaction): Converts a serialized transaction to a structured transaction.
- [serializeTransaction](/docs/utilities/serializeTransaction): Serializes a transaction object.
- [formatEther](/docs/utilities/formatEther): Converts numerical wei to a string representation of ether.
- [formatGwei](/docs/utilities/formatGwei): Converts numerical wei to a string representation of gwei.
- [formatUnits](/docs/utilities/formatUnits): Divides a number by a given exponent of base 10, and formats it into a string representation of the number.
- [parseEther](/docs/utilities/parseEther): Converts a string representation of ether to numerical wei.
- [parseGwei](/docs/utilities/parseGwei): Converts a string representation of gwei to numerical wei.
- [parseUnits](/docs/utilities/parseUnits): Multiplies a string representation of a number by a given exponent of base 10.
- [Terms](/docs/glossary/terms): Glossary of Terms in viem.
- [Types](/docs/glossary/types): Glossary of Types in viem.
- [Errors](/docs/glossary/errors): Glossary of Errors in viem.
- [Getting Started with Account Abstraction](/account-abstraction): Getting Started with Account Abstraction in Viem
- [Sending User Operations](/account-abstraction/guides/sending-user-operations)
- [Bundler Client](/account-abstraction/clients/bundler): A function to create a Bundler Client.
- [Paymaster Client](/account-abstraction/clients/paymaster): A function to create a Paymaster Client.
- [Smart Accounts](/account-abstraction/accounts/smart)
- [Coinbase Smart Wallet](/account-abstraction/accounts/smart/toCoinbaseSmartAccount)
- [MetaMask Smart Account](/account-abstraction/accounts/smart/toMetaMaskSmartAccount)
- [Thirdweb Smart Account](/account-abstraction/accounts/smart/toThirdwebSmartAccount)
- [Nexus Smart Account](/account-abstraction/accounts/smart/toNexusSmartAccount)
- [Light Smart Account](/account-abstraction/accounts/smart/toLightSmartAccount)
- [Kernel (ZeroDev) Smart Account](/account-abstraction/accounts/smart/toEcdsaKernelSmartAccount)
- [Safe Smart Account](/account-abstraction/accounts/smart/toSafeSmartAccount)
- [Simple Smart Account](/account-abstraction/accounts/smart/toSimpleSmartAccount)
- [Solady Smart Account](/account-abstraction/accounts/smart/toSoladySmartAccount)
- [Trust Smart Account](/account-abstraction/accounts/smart/toTrustSmartAccount)
- [toSmartAccount](/account-abstraction/accounts/smart/toSmartAccount): Creates a Smart Account with a provided Account Implementation.
- [signMessage (Smart Account)](/account-abstraction/accounts/smart/signMessage)
- [signTypedData (Smart Account)](/account-abstraction/accounts/smart/signTypedData)
- [signUserOperation (Smart Account)](/account-abstraction/accounts/smart/signUserOperation)
- [WebAuthn Account](/account-abstraction/accounts/webauthn)
- [toWebAuthnAccount](/account-abstraction/accounts/webauthn/toWebAuthnAccount)
- [createWebAuthnCredential](/account-abstraction/accounts/webauthn/createWebAuthnCredential)
- [estimateUserOperationGas](/account-abstraction/actions/bundler/estimateUserOperationGas): Estimates the gas values for a User Operation to be executed successfully.
- [getChainId](/account-abstraction/actions/bundler/getChainId): Returns the chain ID associated with the bundler
- [getSupportedEntryPoints](/account-abstraction/actions/bundler/getSupportedEntryPoints): Returns the EntryPoints that the bundler supports.
- [getUserOperation](/account-abstraction/actions/bundler/getUserOperation): Retrieves information about a User Operation given a hash.
- [getUserOperationReceipt](/account-abstraction/actions/bundler/getUserOperationReceipt): Returns the User Operation receipt given a User Operation hash.
- [prepareUserOperation](/account-abstraction/actions/bundler/prepareUserOperation): Prepares a User Operation for execution and fills in missing properties.
- [sendUserOperation](/account-abstraction/actions/bundler/sendUserOperation): Broadcasts a User Operation to the Bundler.
- [waitForUserOperationReceipt](/account-abstraction/actions/bundler/waitForUserOperationReceipt): Waits for the User Operation to be included on a Block, and then returns the User Operation receipt.
- [getPaymasterData](/account-abstraction/actions/paymaster/getPaymasterData): Retrieves paymaster-related properties to be used for the User Operation.
- [getPaymasterStubData](/account-abstraction/actions/paymaster/getPaymasterStubData): Retrieves paymaster-related properties to be used for the User Operation.
- [Getting Started](/experimental): Getting started with experimental features in Viem
- [Extending Client with ERC-7715](/experimental/erc7715/client): Setting up your Viem Client
- [grantPermissions](/experimental/erc7715/grantPermissions): Request permissions from a wallet to perform actions on behalf of a user.
- [Extending Client with ERC-7739 Actions](/experimental/erc7739/client): Setting up your Viem Client
- [signMessage](/experimental/erc7739/signMessage): Signs a personal sign message via Solady's ERC-1271 format.
- [signTypedData](/experimental/erc7739/signTypedData): Signs typed data via Solady's ERC-1271 format.
- [hashMessage](/experimental/erc7739/hashMessage): Hashes an EIP-191 message via ERC-7739 format.
- [hashTypedData](/experimental/erc7739/hashTypedData): Hashes EIP-712 typed data via Solady's ERC-1271 format.
- [wrapTypedDataSignature](/experimental/erc7739/wrapTypedDataSignature)
- [Extending Client with ERC-7811 Actions](/experimental/erc7811/client): Setting up your Viem Client
- [getAssets](/experimental/erc7811/getAssets): Requests to get assets for an account from a Wallet.
- [Extending Client with ERC-7821 Actions](/experimental/erc7821/client): Setting up your Viem Client
- [execute](/experimental/erc7821/execute): Executes call(s) using the `execute` function on an ERC-7821-compatible contract.
- [executeBatches](/experimental/erc7821/executeBatches): Executes batches of call(s) on an ERC-7821-compatible contract.
- [supportsExecutionMode](/experimental/erc7821/supportsExecutionMode): Checks if the contract supports the ERC-7821 execution mode.
- [Extending Client with ERC-7846 Actions](/experimental/erc7846/client): Setting up your Viem Client
- [connect](/experimental/erc7846/connect): Requests to connect Account(s).
- [disconnect](/experimental/erc7846/disconnect): Requests to disconnect account(s).
- [Extending Client with ERC-7895 Actions](/experimental/erc7895/client): Setting up your Viem Client
- [addSubAccount](/experimental/erc7895/addSubAccount): Requests to add a Sub Account.
- [Client](/op-stack/client): Setting up your Viem Client with the OP Stack
- [Chains](/op-stack/chains)
- [Deposits](/op-stack/guides/deposits)
- [Withdrawals](/op-stack/guides/withdrawals)
- [buildDepositTransaction](/op-stack/actions/buildDepositTransaction): Builds & prepares parameters for a deposit transaction to be initiated on an L1 and executed on the L2.
- [buildProveWithdrawal](/op-stack/actions/buildProveWithdrawal): Builds the transaction that proves a withdrawal was initiated on an L2.
- [estimateContractL1Fee](/op-stack/actions/estimateContractL1Fee): Estimates the L1 fee to execute an L2 contract write.
- [estimateContractL1Gas](/op-stack/actions/estimateContractL1Gas): Estimates the L1 gas to execute an L2 contract write.
- [estimateContractTotalFee](/op-stack/actions/estimateContractTotalFee): Estimates the total (L1 + L2) fee to execute an L2 contract write.
- [estimateContractTotalGas](/op-stack/actions/estimateContractTotalGas): Estimates the total (L1 + L2) gas to execute an L2 contract write.
- [estimateInitiateWithdrawalGas](/op-stack/actions/estimateInitiateWithdrawalGas): Estimates gas required to initiate a withdrawal on an L2 to the L1.
- [estimateL1Fee](/op-stack/actions/estimateL1Fee): Estimates the L1 fee to execute an L2 transaction.
- [estimateL1Gas](/op-stack/actions/estimateL1Gas): Estimates the amount of L1 gas required to execute an L2 transaction
- [estimateOperatorFee](/op-stack/actions/estimateOperatorFee): Estimates the operator fee to execute an L2 transaction.
- [estimateTotalFee](/op-stack/actions/estimateTotalFee): Estimates the L1 + L2 + operator fee to execute an L2 transaction.
- [estimateTotalGas](/op-stack/actions/estimateTotalGas): Estimates the amount of L1 + L2 gas required to execute an L2 transaction
- [initiateWithdrawal](/op-stack/actions/initiateWithdrawal): Initiates a withdrawal on an L2 to the L1.
- [buildInitiateWithdrawal](/op-stack/actions/buildInitiateWithdrawal): Builds & prepares parameters for a withdrawal to be initiated on an L2.
- [estimateDepositTransactionGas](/op-stack/actions/estimateDepositTransactionGas): Estimates gas to initiate a deposit transaction on an L1, which executes a transaction on an L2.
- [estimateFinalizeWithdrawalGas](/op-stack/actions/estimateFinalizeWithdrawalGas): Estimates gas required to finalize a withdrawal that occurred on an L2.
- [estimateProveWithdrawalGas](/op-stack/actions/estimateProveWithdrawalGas): Estimates gas required to prove a withdrawal that occurred on an L2.
- [getGame](/op-stack/actions/getGame): Retrieves a valid dispute game on an L2 that occurred after a provided L2 block number.
- [getGames](/op-stack/actions/getGames): Retrieves dispute games for an L2.
- [getL2Output](/op-stack/actions/getL2Output): Retrieves the first L2 output proposal that occurred after a provided block number.
- [getTimeToFinalize](/op-stack/actions/getTimeToFinalize): Returns the time until the withdrawal transaction can be finalized.
- [getTimeToNextGame](/op-stack/actions/getTimeToNextGame): Returns the time until the next L2 dispute game is submitted.
- [getTimeToNextL2Output](/op-stack/actions/getTimeToNextL2Output): Builds & prepares parameters for a withdrawal to be initiated on an L2.
- [getTimeToProve](/op-stack/actions/getTimeToProve): Gets time until the L2 withdrawal transaction is ready to be proved.
- [getWithdrawalStatus](/op-stack/actions/getWithdrawalStatus): Returns the current status of a withdrawal.
- [waitForNextGame](/op-stack/actions/waitForNextGame): Waits for the next dispute game to be submitted.
- [waitForNextL2Output](/op-stack/actions/waitForNextL2Output): Waits for the next L2 output (after the provided block number) to be submitted.
- [waitToFinalize](/op-stack/actions/waitToFinalize): Waits until the withdrawal transaction can be finalized.
- [waitToProve](/op-stack/actions/waitToProve): Waits until the L2 withdrawal transaction is ready to be proved.
- [depositTransaction](/op-stack/actions/depositTransaction): Initiates a deposit transaction on an L1, which executes a transaction on an L2.
- [finalizeWithdrawal](/op-stack/actions/finalizeWithdrawal): Finalizes a withdrawal that occurred on an L2.
- [proveWithdrawal](/op-stack/actions/proveWithdrawal): Proves a withdrawal that occurred on an L2.
- [extractTransactionDepositedLogs](/op-stack/utilities/extractTransactionDepositedLogs): Extracts "TransactionDeposited" logs from an opaque array of logs.
- [extractWithdrawalMessageLogs](/op-stack/utilities/extractWithdrawalMessageLogs): Extracts "MessagePassed" logs from a withdrawal initialization from an opaque array of logs.
- [getL2TransactionHash](/op-stack/utilities/getL2TransactionHash): Computes the L2 transaction hash from an L1 "TransactionDeposited" log.
- [getL2TransactionHashes](/op-stack/utilities/getL2TransactionHashes): Computes the L2 transaction hashes from an array of L1 "TransactionDeposited" logs.
- [getWithdrawals](/op-stack/utilities/getWithdrawals): Gets the messages from a withdrawal initialization.
- [getSourceHash](/op-stack/utilities/getSourceHash): Computes source hash of a deposit transaction.
- [opaqueDataToDepositData](/op-stack/utilities/opaqueDataToDepositData): Converts opaque data into a structured deposit data format.
- [getWithdrawalHashStorageSlot](/op-stack/utilities/getWithdrawalHashStorageSlot): Computes the withdrawal hash storage slot to be used when proving a withdrawal.
- [parseTransaction (OP Stack)](/op-stack/utilities/parseTransaction): Converts a serialized transaction to a structured transaction, with support for OP Stack.
- [serializeTransaction (OP Stack)](/op-stack/utilities/serializeTransaction): Serializes a transaction object, with support for OP Stack.
- [USDC (Circle)](/circle-usdc)
- [Integrating USDC into Your Application](/circle-usdc/guides/integrating)
- [Cross-Chain USDC Transfers](/circle-usdc/guides/cross-chain)
- [Cross Chain USDC Transfers with Bridge Kit](/circle-usdc/guides/bridge-kit)
- [Cross Chain USDC Transfers (CCTP Integration)](/circle-usdc/guides/manual-cctp)
- [Gasless USDC Transfers with Circle Paymaster](/circle-usdc/guides/paymaster)
- [Circle Smart Account](/circle-usdc/guides/smart-account)
- [Getting Started](/tempo/)
- [Chains](/tempo/chains)
- [Guides](/tempo/guides/): Task-oriented guides for building common Tempo features with Viem.
- [Create an Account](/tempo/guides/accounts/create): Create a Tempo Account from a private key, passkey, or device-bound key, and use it with a Viem client.
- [Sign In with a Passkey](/tempo/guides/accounts/passkeys): Create and restore WebAuthn passkey accounts for non-custodial browser sign-in on Tempo.
- [Use the Tempo Accounts SDK](/tempo/guides/accounts/accounts-sdk): Connect a Tempo account with the Tempo Accounts SDK and drive it with Viem and Tempo Actions.
- [Tempo Transactions](/tempo/transactions): Send your first Tempo Transaction with Viem, and discover the payment-native features they unlock.
- [Batch Calls](/tempo/guides/batch-calls): Bundle multiple operations into a single atomic Tempo Transaction.
- [Concurrent Transactions](/tempo/guides/concurrent-transactions): Send multiple Tempo Transactions in parallel using concurrent nonces.
- [Scheduled Transactions](/tempo/guides/scheduled-transactions): Sign a Tempo Transaction now and define when it can execute onchain.
- [Pay Fees in a Stablecoin](/tempo/guides/pay-fees): Pay Tempo transaction fees in any USD-denominated TIP-20 stablecoin.
- [Sponsor User Fees](/tempo/guides/sponsor-fees): Sponsor transaction fees on behalf of your users for a gasless experience on Tempo.
- [Create a TIP-20 Token](/tempo/guides/create-token): Deploy a TIP-20 stablecoin on Tempo and read its onchain metadata.
- [Mint & Burn Tokens](/tempo/guides/manage-token-balances): Mint and burn TIP-20 token supply on Tempo.
- [Transfer Tokens](/tempo/guides/transfer-tokens): Transfer TIP-20 tokens, authorize spenders, and read balances on Tempo.
- [Manage Token Roles & Supply](/tempo/guides/manage-token-roles): Grant and revoke TIP-20 roles, cap supply, and pause transfers on Tempo.
- [Configure Transfer Policies](/tempo/guides/transfer-policies): Restrict which accounts can send or receive a TIP-20 token with a transfer policy.
- [Distribute Token Rewards](/tempo/guides/token-rewards): Distribute rewards to TIP-20 holders and let them claim their share on Tempo.
- [Access Keys](/tempo/guides/access-keys/): Delegate signing to a secondary key with access keys, with spending limits, scopes, admin keys, and signature verification.
- [Authorize Access Keys](/tempo/guides/access-keys/authorize): Authorize an access key to sign transactions on behalf of an account, and defer authorization to a transaction.
- [Set Permissions & Limits](/tempo/guides/access-keys/permissions): Restrict an access key with an expiry, per-token spending limits, recurring limits, and call scopes.
- [Manage Access Keys](/tempo/guides/access-keys/manage): Update spending limits, revoke access keys, and inspect their onchain metadata and remaining limits.
- [Admin Access Keys](/tempo/guides/access-keys/admin): Authorize unrestricted admin access keys that can manage an account's other keys, and check admin status.
- [Witnesses](/tempo/guides/access-keys/witnesses): Bind a witness to a key authorization and burn it to revoke signed-but-not-yet-submitted authorizations.
- [Verify Signatures](/tempo/guides/access-keys/verify): Verify that a keychain signature was produced by an active access key for the expected account.
- [Stablecoin Exchange](/tempo/guides/stablecoin-exchange/): Trade stablecoins on Tempo's enshrined DEX, manage orders and balances, create trading pairs, and provide Fee AMM liquidity.
- [Swap Stablecoins](/tempo/guides/stablecoin-exchange/swap): Quote and swap one USD-denominated TIP-20 stablecoin for another on Tempo's enshrined DEX.
- [Place & Manage Orders](/tempo/guides/stablecoin-exchange/orders): Place limit and flip orders on Tempo's Stablecoin DEX, then read, inspect, and cancel them.
- [Manage Exchange Balances](/tempo/guides/stablecoin-exchange/balances): Read your internal Stablecoin DEX balances and withdraw them back to your Tempo wallet.
- [Create a Trading Pair](/tempo/guides/stablecoin-exchange/create-pair): Create a new trading pair on Tempo's Stablecoin DEX and configure a token's quote token.
- [Provide Fee AMM Liquidity](/tempo/guides/stablecoin-exchange/fee-amm-liquidity): Add and remove liquidity in Tempo's Fee AMM so stablecoin fee conversions can settle.
- [Virtual Addresses](/tempo/guides/virtual-addresses/): Register a master address and accept TIP-20 deposits at unlimited virtual addresses that forward to you without sweeps.
- [Register a Master Address](/tempo/guides/virtual-addresses/register): Mine a TIP-1022 proof-of-work salt and register a master address for virtual-address deposit forwarding.
- [Resolve & Accept Payments](/tempo/guides/virtual-addresses/resolve): Derive per-customer virtual deposit addresses offchain and resolve them to your master wallet.
- [Receive Policies](/tempo/guides/receive-policies/): Control who can pay you on Tempo with receive policies, validate inbound transfers, and recover blocked funds.
- [Set a Receive Policy](/tempo/guides/receive-policies/set): Set and read an account's receive policy to control which senders and tokens it accepts.
- [Validate Transfers](/tempo/guides/receive-policies/validate): Check whether a TIP-20 transfer would be accepted by a recipient's receive policy before sending it.
- [Handle Blocked Funds](/tempo/guides/receive-policies/blocked): Read, claim, and burn TIP-20 funds that a receive policy blocked from being credited.
- [Payment Channels](/tempo/guides/payment-channels/): Open funded TIP-20 channels on Tempo, stream off-chain vouchers, and settle or close to move funds onchain.
- [Open & Fund a Channel](/tempo/guides/payment-channels/open): Open and fund a TIP-20 payment channel on Tempo, top it up, and read its onchain state.
- [Send & Settle Vouchers](/tempo/guides/payment-channels/vouchers): Sign off-chain TIP-20 channel vouchers as the payer and settle them onchain as the payee.
- [Close & Withdraw](/tempo/guides/payment-channels/close): Close a TIP-20 payment channel from either side and withdraw the remaining deposit on Tempo.
- [Private Zones](/tempo/guides/zones/): Connect to private Tempo Zones, deposit funds into them, and withdraw back to Tempo Mainnet.
- [Connect to a Zone](/tempo/guides/zones/connect): Connect a Viem client to a private Tempo Zone and authenticate with an authorization token.
- [Deposit to a Zone](/tempo/guides/zones/deposit): Deposit TIP-20 stablecoins from Tempo Mainnet into a private Tempo Zone.
- [Withdraw from a Zone](/tempo/guides/zones/withdraw): Withdraw TIP-20 stablecoins from a private Tempo Zone back to Tempo Mainnet.
- [Accounts](/tempo/accounts/)
- [Account.fromSecp256k1](/tempo/accounts/account.fromSecp256k1)
- [Account.fromP256](/tempo/accounts/account.fromP256)
- [Account.fromWebAuthnP256](/tempo/accounts/account.fromWebAuthnP256)
- [Account.fromWebCryptoP256](/tempo/accounts/account.fromWebCryptoP256)
- [Overview](/tempo/actions/)
- [accessKey.authorize](/tempo/actions/accessKey.authorize)
- [accessKey.burnWitness](/tempo/actions/accessKey.burnWitness)
- [accessKey.getMetadata](/tempo/actions/accessKey.getMetadata)
- [accessKey.getRemainingLimit](/tempo/actions/accessKey.getRemainingLimit)
- [accessKey.isAdmin](/tempo/actions/accessKey.isAdmin)
- [accessKey.isWitnessBurned](/tempo/actions/accessKey.isWitnessBurned)
- [accessKey.revoke](/tempo/actions/accessKey.revoke)
- [accessKey.signAuthorization](/tempo/actions/accessKey.signAuthorization)
- [accessKey.updateLimit](/tempo/actions/accessKey.updateLimit)
- [accessKey.verifyHash](/tempo/actions/accessKey.verifyHash)
- [accessKey.watchAdminAuthorized](/tempo/actions/accessKey.watchAdminAuthorized)
- [accessKey.watchWitness](/tempo/actions/accessKey.watchWitness)
- [accessKey.watchWitnessBurned](/tempo/actions/accessKey.watchWitnessBurned)
- [amm.burn](/tempo/actions/amm.burn)
- [amm.getLiquidityBalance](/tempo/actions/amm.getLiquidityBalance)
- [amm.getPool](/tempo/actions/amm.getPool)
- [amm.mint](/tempo/actions/amm.mint)
- [amm.rebalanceSwap](/tempo/actions/amm.rebalanceSwap)
- [amm.watchBurn](/tempo/actions/amm.watchBurn)
- [amm.watchMint](/tempo/actions/amm.watchMint)
- [amm.watchRebalanceSwap](/tempo/actions/amm.watchRebalanceSwap)
- [channel.close](/tempo/actions/channel.close)
- [channel.getStates](/tempo/actions/channel.getStates)
- [channel.open](/tempo/actions/channel.open)
- [channel.requestClose](/tempo/actions/channel.requestClose)
- [channel.settle](/tempo/actions/channel.settle)
- [channel.signVoucher](/tempo/actions/channel.signVoucher)
- [channel.topUp](/tempo/actions/channel.topUp)
- [channel.withdraw](/tempo/actions/channel.withdraw)
- [fee.getUserToken](/tempo/actions/fee.getUserToken)
- [fee.setUserToken](/tempo/actions/fee.setUserToken)
- [fee.watchSetUserToken](/tempo/actions/fee.watchSetUserToken)
- [nonce.getNonce](/tempo/actions/nonce.getNonce)
- [nonce.watchNonceIncremented](/tempo/actions/nonce.watchNonceIncremented)
- [policy.create](/tempo/actions/policy.create)
- [policy.getData](/tempo/actions/policy.getData)
- [policy.isAuthorized](/tempo/actions/policy.isAuthorized)
- [policy.modifyBlacklist](/tempo/actions/policy.modifyBlacklist)
- [policy.modifyWhitelist](/tempo/actions/policy.modifyWhitelist)
- [policy.setAdmin](/tempo/actions/policy.setAdmin)
- [policy.watchAdminUpdated](/tempo/actions/policy.watchAdminUpdated)
- [policy.watchBlacklistUpdated](/tempo/actions/policy.watchBlacklistUpdated)
- [policy.watchCreate](/tempo/actions/policy.watchCreate)
- [policy.watchWhitelistUpdated](/tempo/actions/policy.watchWhitelistUpdated)
- [receivePolicy.burn](/tempo/actions/receivePolicy.burn)
- [receivePolicy.claim](/tempo/actions/receivePolicy.claim)
- [receivePolicy.get](/tempo/actions/receivePolicy.get)
- [receivePolicy.getBlockedBalance](/tempo/actions/receivePolicy.getBlockedBalance)
- [receivePolicy.set](/tempo/actions/receivePolicy.set)
- [receivePolicy.validate](/tempo/actions/receivePolicy.validate)
- [receivePolicy.watchBlocked](/tempo/actions/receivePolicy.watchBlocked)
- [receivePolicy.watchBurned](/tempo/actions/receivePolicy.watchBurned)
- [receivePolicy.watchClaimed](/tempo/actions/receivePolicy.watchClaimed)
- [receivePolicy.watchUpdated](/tempo/actions/receivePolicy.watchUpdated)
- [faucet.fund](/tempo/actions/faucet.fund)
- [reward.claim](/tempo/actions/reward.claim)
- [reward.distribute](/tempo/actions/reward.distribute)
- [reward.getGlobalRewardPerToken](/tempo/actions/reward.getGlobalRewardPerToken)
- [reward.getPendingRewards](/tempo/actions/reward.getPendingRewards)
- [reward.getUserRewardInfo](/tempo/actions/reward.getUserRewardInfo)
- [reward.setRecipient](/tempo/actions/reward.setRecipient)
- [reward.watchRewardDistributed](/tempo/actions/reward.watchRewardDistributed)
- [reward.watchRewardRecipientSet](/tempo/actions/reward.watchRewardRecipientSet)
- [simulate.simulateBlocks](/tempo/actions/simulate.simulateBlocks)
- [simulate.simulateCalls](/tempo/actions/simulate.simulateCalls)
- [dex.buy](/tempo/actions/dex.buy)
- [dex.cancel](/tempo/actions/dex.cancel)
- [dex.cancelStale](/tempo/actions/dex.cancelStale)
- [dex.createPair](/tempo/actions/dex.createPair)
- [dex.getBalance](/tempo/actions/dex.getBalance)
- [dex.getBuyQuote](/tempo/actions/dex.getBuyQuote)
- [dex.getOrder](/tempo/actions/dex.getOrder)
- [dex.getTickLevel](/tempo/actions/dex.getTickLevel)
- [dex.getSellQuote](/tempo/actions/dex.getSellQuote)
- [dex.place](/tempo/actions/dex.place)
- [dex.placeFlip](/tempo/actions/dex.placeFlip)
- [dex.sell](/tempo/actions/dex.sell)
- [dex.watchFlipOrderPlaced](/tempo/actions/dex.watchFlipOrderPlaced)
- [dex.watchOrderCancelled](/tempo/actions/dex.watchOrderCancelled)
- [dex.watchOrderFilled](/tempo/actions/dex.watchOrderFilled)
- [dex.watchOrderPlaced](/tempo/actions/dex.watchOrderPlaced)
- [dex.withdraw](/tempo/actions/dex.withdraw)
- [token.approve](/tempo/actions/token.approve)
- [token.burn](/tempo/actions/token.burn)
- [token.burnBlocked](/tempo/actions/token.burnBlocked)
- [token.changeTransferPolicy](/tempo/actions/token.changeTransferPolicy)
- [token.create](/tempo/actions/token.create)
- [token.getAllowance](/tempo/actions/token.getAllowance)
- [token.getBalance](/tempo/actions/token.getBalance)
- [token.getMetadata](/tempo/actions/token.getMetadata)
- [token.grantRoles](/tempo/actions/token.grantRoles)
- [token.hasRole](/tempo/actions/token.hasRole)
- [token.mint](/tempo/actions/token.mint)
- [token.pause](/tempo/actions/token.pause)
- [token.renounceRoles](/tempo/actions/token.renounceRoles)
- [token.revokeRoles](/tempo/actions/token.revokeRoles)
- [token.setRoleAdmin](/tempo/actions/token.setRoleAdmin)
- [token.setSupplyCap](/tempo/actions/token.setSupplyCap)
- [token.transfer](/tempo/actions/token.transfer)
- [token.unpause](/tempo/actions/token.unpause)
- [token.watchAdminRole](/tempo/actions/token.watchAdminRole)
- [token.watchApprove](/tempo/actions/token.watchApprove)
- [token.watchBurn](/tempo/actions/token.watchBurn)
- [token.watchCreate](/tempo/actions/token.watchCreate)
- [token.watchMint](/tempo/actions/token.watchMint)
- [token.watchRole](/tempo/actions/token.watchRole)
- [token.watchTransfer](/tempo/actions/token.watchTransfer)
- [validator.add](/tempo/actions/validator.add)
- [validator.changeOwner](/tempo/actions/validator.changeOwner)
- [validator.changeStatus](/tempo/actions/validator.changeStatus)
- [validator.get](/tempo/actions/validator.get)
- [validator.getByIndex](/tempo/actions/validator.getByIndex)
- [validator.getCount](/tempo/actions/validator.getCount)
- [validator.getNextFullDkgCeremony](/tempo/actions/validator.getNextFullDkgCeremony)
- [validator.getOwner](/tempo/actions/validator.getOwner)
- [validator.list](/tempo/actions/validator.list)
- [validator.setNextFullDkgCeremony](/tempo/actions/validator.setNextFullDkgCeremony)
- [validator.update](/tempo/actions/validator.update)
- [virtualAddress.getMasterAddress](/tempo/actions/virtualAddress.getMasterAddress)
- [virtualAddress.registerMaster](/tempo/actions/virtualAddress.registerMaster)
- [virtualAddress.resolve](/tempo/actions/virtualAddress.resolve)
- [wallet.deposit](/tempo/actions/wallet.deposit)
- [wallet.transfer](/tempo/actions/wallet.transfer)
- [wallet.swap](/tempo/actions/wallet.swap)
- [zone.deposit](/tempo/actions/zone.deposit)
- [zone.encryptedDeposit](/tempo/actions/zone.encryptedDeposit)
- [zone.getAuthorizationTokenInfo](/tempo/actions/zone.getAuthorizationTokenInfo)
- [zone.getDepositStatus](/tempo/actions/zone.getDepositStatus)
- [zone.getWithdrawalFee](/tempo/actions/zone.getWithdrawalFee)
- [zone.getZoneInfo](/tempo/actions/zone.getZoneInfo)
- [zone.requestVerifiableWithdrawal](/tempo/actions/zone.requestVerifiableWithdrawal)
- [zone.requestWithdrawal](/tempo/actions/zone.requestWithdrawal)
- [zone.signAuthorizationToken](/tempo/actions/zone.signAuthorizationToken)
- [withRelay](/tempo/transports/withRelay)
- [TempoAddress.format](/tempo/utilities/TempoAddress.format)
- [TempoAddress.parse](/tempo/utilities/TempoAddress.parse)
- [TempoAddress.validate](/tempo/utilities/TempoAddress.validate)
- [Storage.defaultStorage](/tempo/utilities/Storage.defaultStorage)
- [Storage.from](/tempo/utilities/Storage.from)
- [Storage.memory](/tempo/utilities/Storage.memory)
- [Storage.session](/tempo/utilities/Storage.session)
- [Client](/zksync/client): Setting up your ZKsync Viem Client
- [Chains](/zksync/chains)
- [toSinglesigSmartAccount (ZKsync)](/zksync/accounts/toSinglesigSmartAccount): Creates a single-signature ZKsync Smart Account
- [toMultisigSmartAccount (ZKsync)](/zksync/accounts/toMultisigSmartAccount): Creates a multi-signature ZKsync Smart Account
- [toSmartAccount (ZKsync)](/zksync/accounts/toSmartAccount): Creates a ZKsync Smart Account
- [deployContract](/zksync/actions/deployContract): Deploys a contract to the network, given bytecode & constructor arguments by using EIP712 transaction.
- [sendTransaction](/zksync/actions/sendTransaction): Creates, signs, and sends a new transaction to the network, with EIP712 transaction support.
- [signTransaction](/zksync/actions/signTransaction): Signs a transaction, with EIP712 transaction support.
- [writeContract](/zksync/actions/writeContract): Executes a write function on a contract, with EIP712 transaction support.
- [estimateGasL1ToL2](/zksync/actions/estimateGasL1ToL2): Returns an estimated gas for L1 to L2 execution.
- [getBlockDetails](/zksync/actions/getBlockDetails): Returns additional ZKsync-specific information about the L2 block.
- [getBridgehubContractAddress](/zksync/actions/getBridgehubContractAddress): Returns the Bridgehub smart contract address.
- [getDefaultBridgeAddresses](/zksync/actions/getDefaultBridgeAddress): Returns the addresses of the default ZKsync Era bridge contracts on both L1 and L2.
- [getGasPerPubData](/zksync/actions/getGasPerPubData): Returns the scaled gas per pubdata limit for the currently open batch.
- [getL1BatchDetails](/zksync/actions/getL1BatchDetails): Returns data pertaining to a given batch.
- [getL1BatchBlockRange](/zksync/actions/getL1BatchBlockRange): Returns the range of blocks contained within a batch given by batch number.
- [getL1BatchNumber](/zksync/actions/getL1BatchNumber): Returns the latest L1 batch number.
- [getL1TokenAddress](/zksync/actions/getL1TokenAddress): Returns the L1 token address equivalent for a L2 token address as they are not equal.
- [getL2TokenAddress](/zksync/actions/getL2TokenAddress): Returns the L2 token address equivalent for a L1 token address as they are not equal.
- [getLogProof](/zksync/actions/getLogProof): Given a transaction hash, and an index of the L2 to L1 log produced within the transaction, it returns the proof for the corresponding L2 to L1 log.
- [getTransactionDetails](/zksync/actions/getTransactionDetails): Returns data from a specific transaction given by the transaction hash.
- [estimateFee](/zksync/actions/estimateFee): Returns an estimated Fee for requested transaction.
- [getAllBalances](/zksync/actions/getAllBalances): Returns all known balances for a given account.
- [getBaseTokenL1Address](/zksync/actions/getBaseTokenL1Address): Returns the base token L1 address.
- [getL1ChainId](/zksync/actions/getL1ChainId): Returns the Chain Id of underlying L1 network.
- [getMainContractAddress](/zksync/actions/getMainContractAddress): Returns the address of a Main ZKsync Contract.
- [getRawBlockTransaction](/zksync/actions/getRawBlockTransactions): Returns data of transactions in a block.
- [getTestnetPaymasterAddress (depreated)](/zksync/actions/getTestnetPaymasterAddress): Returns the address of a Paymaster on a Testnet.
- [getL1Allowance](/zksync/actions/getL1Allowance): Determines the amount of approved tokens for a specific L1 bridge.
- [getL1Balance](/zksync/actions/getL1Balance): Returns the amount of the token held by the account on the L1 network.
- [getL1TokenBalance](/zksync/actions/getL1TokenBalance): Retrieve the token balance held by the contract on L1.
- [isWithdrawalFinalized](/zksync/actions/isWithdrawalFinalized): Returns whether the withdrawal transaction is finalized on the L1 network.
- [withdraw](/zksync/actions/withdraw): Initiates the withdrawal process which withdraws ETH or any ERC20 token from the associated account on L2 network to the target account on L1 network.
- [requestExecute](/zksync/actions/requestExecute): Requests execution of a L2 transaction from L1.
- [finalizeWithdrawal](/zksync/actions/finalizeWithdrawal): Proves the inclusion of the `L2->L1` withdrawal message.
- [deposit](/zksync/actions/deposit): Transfers the specified token from the associated account on the L1 network to the target account on the L2 network.
- [claimFailedDeposit](/zksync/actions/claimFailedDeposit): Withdraws funds from the initiated deposit, which failed when finalizing on L2.
- [getApprovalBasedPaymasterInput](/zksync/utilities/paymaster/getApprovalBasedPaymasterInput): Returns encoded formatted approval-based paymaster params.
- [getGeneralPaymasterInput](/zksync/utilities/paymaster/getGeneralPaymasterInput): Returns encoded formatted general-based paymaster params.
- [getL2HashFromPriorityOp](/zksync/utilities/bridge/getL2HashFromPriorityOp): Returns the hash of the L2 priority operation from a given L1 transaction receipt.
- [parseEip712Transaction](/zksync/utilities/parseEip712Transaction): Parse EIP712 transaction.
- [Viem · TypeScript Interface for Ethereum](/index)
- [Client](/experimental/client): Setting up your Viem Client
- [ZKsync](/docs/chains/zksync): Integrating with ZKsync in Viem
- [defineKzg](/docs/utilities/defineKzg): Defines a KZG interface.
- [fromBase58](/docs/utilities/fromBase58)
- [fromBase64](/docs/utilities/fromBase64)
- [toBase58](/docs/utilities/toBase58)
- [toBase64](/docs/utilities/toBase64)
- [opaqueDataToDepositData](/op-stack/utilities/fromOpaqueData): Decodes opaque deposit data found in the "TransactionDeposited" event log.
- [fee.validateToken](/tempo/actions/fee.validateToken)
- [Setup](/tempo/actions/setup)
- [withFeePayer](/tempo/transports/withFeePayer)
- [TODO](/account-abstraction/actions/bundler/introduction)
- [verifyHash](/docs/actions/public/verifyHash): Verifies if a signed hash was generated by the provided address.
-->

# prepareUserOperation

Prepares a User Operation for execution and fills in missing properties.

## Usage

:::code-group

```ts twoslash [example.ts]
// @twoslash-cache: {"v":2,"hash":"683e92403ed165453c094ab9b7500458c4f468c63c508bee74e71561ca666bed","data":"N4Igdg9gJgpgziAXAbVAFwJ4AcZJACwgDcYAnEAGhDRgA808AKAQwBsBLZuASgAIAzAK5gAxmnYQwvLM1JwYAUTT4yjGMrKJecNKXZgA5hV7D2aAPxaAOiADuMdjd4AfXjYP3HIbloBG7A300KzB2AFssCFI0aVl5JRVyKigIEQREEABhSRJouF5mbV19A15SGCxy+TA0ZnFJXgh+XnVE3jQIXjBBMLJ2ETZeTwA6EJCAWl4AEVS4LXw0NCw5gHoVonYYMOG4fBWUtJXBcQ5xeBWZOUUNJOpmA3TkZBA6ZgjWXCpwyOjeYFirgkyLwAL4CUgQMK8ADkGy20LGYEu8RujGhABYAEwABmh3BCa14WOxJNJZPJZLAIAAutSqDpZAxEABOKgfQzKJAARmxVFqpAM6jwyOuiUoIA4YFwiF5IBE+FkzDEZCQzJBFHQ2GlBGIKr5dCZIBYHC4fBEkh0BRE5uEaC0ABUINl9L4uDAAMphRkAQWtEFtACV1IJSGB7VqQt8ojElTaauKGdEkOiAMxsmAc/BIADsfNkgsNsf98bZ+mlXKo8sVyvILPVmpweEIuXFNHoTDYnB4vHNYEtvmEUA+pEyHAzdt4ACFB8PR5sagAeAASiyw9tIzD7PzQC8HMH4Zagxn4bHkAD5jHuD1KjyYwLBrzBb8AQrw31a4xOr4eANyv9+umg8qWH8/7vu+YSCKw4gDKwrAgb4EAQB8m4uLwAAK5SLOw/AYAuACyUEwWwrCTnU8oAPJYPUfZnmh343n+UjvmCrgMU+THgQM8owPa4QwFo3RhL4ZCce+1rsFgQbMFAIEnqw8hoS+zHgW+5QAI6CPAFhaIwlxvOoZBzLwmQiJJQaadp6GKr0NByHwAC8dGYZC7DyAupnmTAlk6EGaAhmGWpnmJb6sXeD6/mBPYKvoWjKapAGsKkADWCi0FgSXlHIcVRQlakwDJkisBgvAPswRE5SpeUJeUhVgMVXQGdYIBAnIAxgDYIXVaptUpPVJUhqwzULEsqwrK0RntcMEidbl3X5XVDXMFg7AAKqkENbgEKuY3LewwwTW1m7TRAKx7bNVXVSCXXgddc1vsMj28FyABsvBhFEMC8I9ww3e+uQ4RgS5cPgIGZDFYAAGp9LhwO7AAYlIbH3vukVVXdVU/bwL0ABzvZ932PV1BoZlAWgLr2loiGONQtPQpP5PFeU/V1YIAGS8GlSpoNZ0ScKwC4/WeZ6MPwYC6dT84TnO46C49Z6OXRkvjorJk0zuQtMeq4WozeZ6RhE0a8AO96zurCb8kyACsmLppm3JpncApChkJtDmQMslhKZbcpWCobjW3I4/W1Bak2uq3G2hqUzEgjyKQVFkHUEji6BVW9UVJVFraDpOhALpup6Pp+oGwahuGOBdbBrBTHUzBaEudBdTIGBejoZDevete1FoAAG2K0AAJMAOh6IYIK9111SwKQWirfHicbjRyA2NPZA2NSXXlcoUTsAAXsnkhzwvOBLynK8gNvhB6AfNEb11+hmNksDH2Qi+H2AF+P2gz8wPfUWQFEAJXg8836nw/hfQBIg/40i6l6Wg8MYAwHQmQAA4lwV+CdwHLxsPAxByC0FcH/lVeBmEJB6EwPglBpB0HGVAVgpOOCQCkL0LvShSDqG0OIVxEitCAAy4QzCYPfkw6u/DBHBFgVFSoMBoZ6APAMGitDhHYPPjYGRcicL9A/lwqRVUAYKJ0VwARYQhEgJPowtRIADHaKUcYiR3D3xwACGAOoIZgH0JEVY5xBhXH+XKMQkEFtGSqgrBKDMBhOSIC5I7fkBY8BxzAZYyQ4pJTSkdlWAOdkkAvRDpgRsGRmx6moAaDsJpuwx2NjOD26stDTlNjUqWy5Vzrk3HAbcu4UaPlvPJc8l4umHn6RFG8xgmZvmzjULQ7EoBdUAsBSq1VILQW0XBBCSEUJIwwlhcQuECJERWaRci+AqI0TgHRZGwyOJRTCtMquSoVB8V6IJHoIlSBVzMlJAqsktC9K+q4MZPVvJaR0CBPSNlDLZRMh8iywKebgrst2JyWzXLuU8p8nyaA/IBQrjAYK1z6IDMYlFKssU07VV8ElEQqV0qZSMgs+aZQvmZ1Kvucq0F6UMvfBnfqjUnlbVanAdqF1OXgW5Q1Qaw0dqIDWIdQVx0ZogD+vNMVWcVrrU2jYEayxpVnRWgdG4cqwAnV1V4JVqkMZXTNVjV6+NyiE1+vdXgBigYgzBhDTRsMQaIwJZcmZ1yupY1xrar6LMook3vOTSpytabhqgIzR1ob0a8A5lzMQvNxBsDlsMYWotU6MGjdLdWWaFa8CRQW1WnsNbyy1kM3WT59ahENr8N2ZspbBKTNEmJdtIlZmibE/MLsQAtsaeOVJPtEAZP9tzFUiBMTBw1KHApOoWz6nbBkPSEJT6YD4DIy4MBPGqKPrwBcKq7zJUgLYT+dIyVcqZTyiZE5HTOjAK6eQRdoi+k/Fi8uWouqnursZVAjrT0dGagPbM2JmTMmzNB7EIgrZchxlyTEUARApmYNiHkIhsxQEw74K22IYDYigFyHD2HmQiBxsKvKp6iBsC0n4AIQRWabxCNrAFzB/BaFPUBy6t7FolX0FgY4xkeOsb4wtPqDUGQ0EIrUfwpwMDNUAS3TjHxqM1TvQ1fJwCbAx1IIIMQUQNOglGcBrTgmkQie4xZ3gvHOWntcXymwEBL3r0VY60VtmdPNV8BgGgcATO3XE9VRzTUtrelYL1DAFE3OkCC/xqTJUfNbTIBCeLHn0ZmYk4ygTvAhPWdy0luzIWaO2ac7pkAABJUIGaOB7yfAlyTzKUs2DS8ZzLt1suhdswVtAonbP2YZWF5zIBXNSgy2arzeXWtDv8/AJroJSuabyxV5qNW6McCgK1GAPRvRQCgFUOAsWJuLZA1qZq7XJvXOMFjdEXJg32u68zIm1zlv2uesyR7ibwKzbgF6aIF0woAsTSCEW+lbJ0q2RUWQ+6LFn0kLzAyCLi2qxcqY9yQtxQHHSCATCMOqgFHMcCLxDRNxQAEOwOC+R9DvTcs4ww0hN1kDOHAUYHUwCTBmGkeYUq1hwm2LsM6YgU5wBWMO0gFxyh7oPckqkeYHhICeCACH4p8z5EmMAAAApKZK0OZfw4/kjyHcggl0meFhAKCAqD2hUMT0gvBSdGr+Dr/Qev8cG6SQjsA37Ao4DNxQZ4rx3ifBAFGX4/wRC1RoPU92I51bGC1aCcEkIYQC4RI27cfx3rMH0FKGIYJ+AQihLCTYYQVgkr7Bn8PMR/gdHfWgT9xYC8p5LwL4Xn44AZ5CJUh9paCi2FzzEevAPG8lxqIwf4WMQT4g51G9W/eo8FRj9U+PUtJ//kr1oL0ef1AUH/LoNp25edLEYNwffYAZ+IkqRpWF/fmCD7MD2dWwxd2w9l97jfzEH0X7fABrQqA7QEAWg0IA8P00Ixgm2DGAIKIiQaIXIeIS2F+M+NIdIIAiYTIyGuY4S9ss6socSg6b+5QH+H8Y6UoSAk61Y2SiAWIeSYchSEcrYpS66lQEAW6GAfAD6HKBQXGRWzKQ2K2xWfWA2eWyA7202xWMmMAcmnGVOZgSmW0KmzAGAamMCZq52OAzU+mhmHQ12WWN6ghzKwhNmohAKPWq24WLmcWi2EhLWF2W0fmAWi2II4hiWzKa2EWUWXyMW1hnWZWM29hbWpA6WJm7G5meWxhfBPKYh6h5Wlh1WtW/M+8jWfhhhPKs2V2oRz2aRDUkRPGZh/hxWHhVhp2qR3UGhlWjhC2ZRwWsRFho2G2nY22Nwu2YQ+2h28Ax2vhdRxWGRwRHWrM2RgKERVm/WJhxWAh5RcRo2yUMAGANhbh6RgRIAggQQmIVsL0zhrhzWPKxRCRm27AUAAAcpINAgANJzFnbebLGZFlHax3bYjfaPRDHgQ/YsTvbWpfYfR2pvFvh/aj5A5KRRSg5oRf7gSyHjH8EFE7G5GjEiETHbFRHSa1CybHCyGKbKaSCqYUpqHhG9HLHaFGZ6FdYGHDFCFwmQnRHQlknuHxHjbuZTaLHabLFVGBY1HvE9G0mjaRbRYnYMl4l2GaGpb9HEksQvFMmWbCZjFIklQxECm7HxE1ZmBJENZQBXEBFClBEhF3HikwmSmFb5GeYSm8qVb0minKrXGalzZOHsmhSIkjaVaNFbY7Z7YHZHZ8nmk0lLFWm3GDGkm2E8p5GDbUkBkNR7GzHzG2lenMlWmrE1DrGbFRkuGckKkNFgAHHHGnEwAXGRkpkxmVa+k3YfboiPHfEhrPH+nvi/FLYBpPRchfEEzVn/GMiAkcxYyYhPHDDJqkmg58CuBglVmvaX7dntmdndkg5DkoH0iWzcjZhhLsg9o5h5jOyFjj4MCljkE0F+xUEzqYh0FLpFKRzMFGisHsFmgkSAYAogbAFbTgaQbQawbwaIbIaoboaYZwY4Z4YEZEYkZkYwaUYma0b0bAL+CBA1BazUjtqYE4y2w4GLmIBWzLnxIZAAZkHSiIVyhTqByzr7naiHlMFronnM7RAcFAFga0AQZQYwYQZPlIYoZoYYZYaflcj4aEbEakaob/lUYgBQXcjMgvTdpRKwUEGGgdBoU5LblZIzroi4XhwrolKEUbpsEs6kVQEgVMZewYFIDrGygLlRIYUiV4BqXiWIDYGZLTq1gyULo6ZyXFJRxlJdg7pxCiiqCHRaCjwlD9JmAgQ2CeBOCuDuB+XeCMZgXBCZ5GwiitTY6zB4DZDpks75CFAeWM7S5VDjgfyNDNCHRAFdA9B9CwRDAODs4TDTCzAn7ar85l47B7A45HAnDKnnCRU3Ctj3CPBB60BvAZSh417Z5NVtCF7F5p5l7d5IjOWtRojEh4gEgrBEg4gUjzXkhUi0jTkhKzpWzYF6W9o8hIWEFjXNUbnShmVYXUFchcguGVjQDag9X/B9XAgDWp6l7wgGxZ7/A/5VINJr7jjJ5F4PXDAV6SAHgGAjWVKJIMLe736P4xAS6Vqv7S7v6G40ST68CEjIAACE5osAAgqQccpl1I/4P+m+F5ABAKoGMId5VFj5CGdFr5jFH5uGLF357Ff5FGOMEBUUalWgt1pA8BU1zELhbG3A4otkzASAoA4aziKSGQ/WIAIIIIQAA==="}
import { parseEther } from 'viem'
import { account, bundlerClient } from './config'

const userOperation = await bundlerClient.prepareUserOperation({ // [!code focus:7]
  account,
  calls: [{
    to: '0x70997970c51812dc3a010c7d01b50e0d17dc79c8',
    value: parseEther('1')
  }]
})
```

```ts twoslash [config.ts] filename="config.ts"
// @twoslash-cache: {"v":2,"hash":"45645e60b76c76fc06b4ef3e14c20a9b907e24b8518bcb857624b5e721f35cc1","data":"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"}
import { createPublicClient, http } from 'viem'
import { createBundlerClient, toCoinbaseSmartAccount } from 'viem/account-abstraction'
import { privateKeyToAccount } from 'viem/accounts'
import { mainnet } from 'viem/chains'

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

export const account = await toCoinbaseSmartAccount({
  client,
  owners: [privateKeyToAccount('0x...')],
  version: '1.1',
})

export const bundlerClient = createBundlerClient({
  client,
  transport: http('https://public.pimlico.io/v2/1/rpc')
})
```

:::

:::info
The Bundler URL above is a public endpoint. Please do not use it in production as you will likely be rate-limited. Consider using [Pimlico's Bundler](https://www.pimlico.io), [Biconomy's Bundler](https://www.biconomy.io), or another Bundler service.
:::

### Account Hoisting

If you do not wish to pass an `account` to every `prepareUserOperation`, you can also hoist the Account on the Bundler Client (see `config.ts`).

[Learn more](/docs/clients/wallet#account).

:::code-group

```ts twoslash [example.ts]
// @twoslash-cache: {"v":2,"hash":"20fb069fe0168cf256d7f03e2990c9776c6656e7ad44697a61b16ee1fceec0ba","data":"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"}
import { parseEther } from 'viem'
import { bundlerClient } from './config'

const userOperation = await bundlerClient.prepareUserOperation({ // [!code focus:7]
  calls: [{
    to: '0x70997970c51812dc3a010c7d01b50e0d17dc79c8',
    value: parseEther('1')
  }],
})
```

```ts twoslash [config.ts] filename="config.ts"
// @twoslash-cache: {"v":2,"hash":"b44093d08fd931e8a0f54d0834cf45588e1f7702b3f78d7082037ebc59f4f8bc","data":"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="}
import { createPublicClient, http } from 'viem'
import { createBundlerClient, toCoinbaseSmartAccount } from 'viem/account-abstraction'
import { privateKeyToAccount } from 'viem/accounts'
import { mainnet } from 'viem/chains'

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

export const account = await toCoinbaseSmartAccount({
  client,
  owners: [privateKeyToAccount('0x...')],
  version: '1.1',
})

export const bundlerClient = createBundlerClient({
  account, // [!code ++]
  client,
  transport: http('https://public.pimlico.io/v2/1/rpc')
})
```

:::

### Contract Calls

The `calls` property also accepts **Contract Calls**, and can be used via the `abi`, `functionName`, and `args` properties.

:::code-group

```ts twoslash [example.ts]
// @twoslash-cache: {"v":2,"hash":"94864710917795fcc481534578dd1ec2062e2f2b7a6367d4b4d19ad02cf0b01c","data":"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"}
import { parseEther } from 'viem'
import { bundlerClient, publicClient } from './config'
import { wagmiAbi } from './abi' // [!code focus]

const userOperation = await bundlerClient.prepareUserOperation({ // [!code focus:7]
  calls: [{
    abi: wagmiAbi,
    functionName: 'mint',
    to: '0xFBA3912Ca04dd458c843e2EE08967fC04f3579c2',
  }],
})
```

```ts twoslash [abi.ts] filename="abi.ts"
// @twoslash-cache: {"v":2,"hash":"0331bad54efeb88dc285ebcaa9da4b7f6792f61eff26555c5f51ee6eaac07994","data":"N4Igdg9gJgpgziAXAbVAFwJ4AcZJACwgDcYAnEAGhDRgA808BjCMONAAgHcBDAcwFsAlgEEARoMTtSMblBYAbDO1QAdMOw1SZcsIvaCwWAK5o4k6bIVLkAXQDcazVsu6lYbvxiSVIIWDQ+DuqaFjp6ECbGpubaVsr2jiGxruxs3DQAsibc4vKCmN7gLFjcGDnyMIGJGqFxmDiFAGZGYIxogixVYAC+NpQgaaQMiACMAMxUFWC8aPhIABxUaNykvDDDIDwCIuL9eWC4iAAMVIz4K9xtZEjj3RTo2IcExNdLdBsAFFikEDhDGABKfSGExmZxhax9KiDYYAFgmICmMzmiAAbEsVmsNgYoghJgZDgizhcruRELC7g8cHhCCRyG96Hgvj8/pgge5PIU/AEQP0YUgAKwATkmMGmsyQsIxq3WeA5uHxB0lp3OpEuNDJFPu1EeNJe9Oo7yZ31+ZDZ7AiaFxMRcelsfOWQyQAHZnaLxSi3dRMbLECBLbi9gTBSqSRrJZSddS/bTXobGX7mab/kC0plsrl8hhCpBDKVypVedDHcMhVLEWLkTcBdKsXg0zAsstM5gg0q0aG1aSI9r6k9YwaaAmQEnWYD2H2mi02h0wD4HSthiMAEwiise5XemUbPttw5e4ld8PkyO7mP6/pDnePdjMVgcAC84LiqmCNWSehxoJtEPiQSctQpPKXIGDy/5JLaSgBt+z4pLY4HvpBqTLOmzaCHkBTsD4uYlGUogVF0AEfkok5YSAzStO0nQgEEvQLk6oyoui65VogNZbnWfp3mwe43CcICHuq1xsb0pzQE8dBYBAQy3iwbBcHwQhiII7BPsgiQAPQaewAB0emJMA1TAta8QUEZwFkdyPhmW+FqRDBtg2U4DZNjk6FZjmxT5vhhZOZopE+BRM7UX5dyadpek6WoNjsNwcCyfedj9J4yxIKA7xinAs54KYIDdN0QA=="}
export const wagmiAbi = [
  // ...
  {
    inputs: [],
    name: "mint",
    outputs: [],
    stateMutability: "nonpayable",
    type: "function",
  },
  // ...
] as const;
```

```ts twoslash [config.ts] filename="config.ts"
// @twoslash-cache: {"v":2,"hash":"b6d564b0760d328d4213849f592462985486601bfceda31847a0a9ddbaa8dc2b","data":"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"}
import { createPublicClient, http } from 'viem'
import { createBundlerClient, toCoinbaseSmartAccount } from 'viem/account-abstraction'
import { privateKeyToAccount } from 'viem/accounts'
import { mainnet } from 'viem/chains'

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

export const account = await toCoinbaseSmartAccount({
  client,
  owners: [privateKeyToAccount('0x...')],
  version: '1.1',
})

export const bundlerClient = createBundlerClient({
  account,
  client,
  transport: http('https://public.pimlico.io/v2/1/rpc')
})
```

:::

## Returns

`UserOperation`

The prepared User Operation.

## Parameters

### account

* **Type:** `SmartAccount`

The Account to use for User Operation execution.

```ts twoslash
// @twoslash-cache: {"v":2,"hash":"68cbc570182a18431e71fc62bdc6724200b7cf597e3f9b4359384cc99c595b35","data":"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"}
import { bundlerClient } from './config'
import { parseEther } from 'viem'
// ---cut---
const userOperation = await bundlerClient.prepareUserOperation({
  account, // [!code focus]
  calls: [{
    to: '0x70997970c51812dc3a010c7d01b50e0d17dc79c8',
    value: parseEther('1')
  }]
})
```

### calls

* **Type:** `{ data: Hex, to: Address, value: bigint }[]`

The calls to execute in the User Operation.

```ts twoslash
// @twoslash-cache: {"v":2,"hash":"e24d289bc9d2787df7749f589ba8462aa2c625698a6c7b9897e16e9d6cef94e6","data":"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"}
import { bundlerClient } from './config'
import { parseEther } from 'viem'
// ---cut---
const userOperation = await bundlerClient.prepareUserOperation({
  account,
  calls: [{ // [!code focus]
    to: '0x70997970c51812dc3a010c7d01b50e0d17dc79c8', // [!code focus]
    value: parseEther('1') // [!code focus]
  }] // [!code focus]
})
```

:::tip
You can also pass raw call data via the `callData` property:

```ts twoslash
// @twoslash-cache: {"v":2,"hash":"5f26238b8d664ff12bc996654b513ff549824bf07f9d8b429e2c15b446c9e017","data":"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"}
import { bundlerClient } from './config'
import { parseEther } from 'viem'
// ---cut---
const userOperation = await bundlerClient.prepareUserOperation({
  account,
  callData: '0xdeadbeef', // [!code focus]
})
```

:::

### callGasLimit (optional)

* **Type:** `bigint`

The amount of gas to allocate the main execution call.

```ts twoslash
// @twoslash-cache: {"v":2,"hash":"733fdc797c9b288477674479a8ba671ad29709482be12add7d3230e7df787378","data":"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"}
import { bundlerClient } from './config'
import { parseEther } from 'viem'
// ---cut---
const userOperation = await bundlerClient.prepareUserOperation({
  account,
  calls: [{
    to: '0x70997970c51812dc3a010c7d01b50e0d17dc79c8',
    value: parseEther('1')
  }],
  callGasLimit: 69420n, // [!code focus]
})
```

### dataSuffix (optional)

* **Type:** `Hex`

Data to append to the end of User Operation calldata. Useful for adding [transaction attribution](https://oxlib.sh/ercs/erc8021/Attribution).

If not provided, the `dataSuffix` configured on the Bundler Client (or inherited from the underlying client) will be used.

```ts twoslash
// @twoslash-cache: {"v":2,"hash":"68a71b9e84b595219f08b6f92cb6091f244cc1a1868f7d4e3f90f76d167e0c61","data":"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"}
import { bundlerClient } from './config'
import { parseEther } from 'viem'
// ---cut---
const userOperation = await bundlerClient.prepareUserOperation({
  account,
  calls: [{
    to: '0x70997970c51812dc3a010c7d01b50e0d17dc79c8',
    value: parseEther('1')
  }],
  dataSuffix: '0xdeadbeef', // [!code focus]
})
```

### factory (optional)

* **Type:** `Address`

Account Factory address.

:::warning
This property should only be populated when the Smart Account has not been deployed yet.
:::

```ts twoslash
// @twoslash-cache: {"v":2,"hash":"7e48c1fe9e79b499bac52dc3408afeabf77a3110304d19d0a3d493af2ff1b00a","data":"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"}
import { bundlerClient } from './config'
import { parseEther } from 'viem'
// ---cut---
const userOperation = await bundlerClient.prepareUserOperation({
  account,
  calls: [{
    to: '0x70997970c51812dc3a010c7d01b50e0d17dc79c8',
    value: parseEther('1')
  }],
  factory: '0x1234567890123456789012345678901234567890', // [!code focus]
  factoryData: '0xdeadbeef',
})
```

### factoryData (optional)

* **Type:** `Hex`

Call data to execute on the Account Factory to deploy a Smart Account.

:::warning
This property should only be populated when the Smart Account has not been deployed yet.
:::

```ts twoslash
// @twoslash-cache: {"v":2,"hash":"0be5da74b666657255d14366c0730c4166ce7ce8afc7661f0cf648d6d23de71c","data":"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"}
import { bundlerClient } from './config'
import { parseEther } from 'viem'
// ---cut---
const userOperation = await bundlerClient.prepareUserOperation({
  account,
  calls: [{
    to: '0x70997970c51812dc3a010c7d01b50e0d17dc79c8',
    value: parseEther('1')
  }],
  factory: '0x1234567890123456789012345678901234567890',
  factoryData: '0xdeadbeef', // [!code focus]
})
```

### maxFeePerGas (optional)

* **Type:** `bigint`

Maximum fee per gas for User Operation execution.

```ts twoslash
// @twoslash-cache: {"v":2,"hash":"01aaf07a1217f57cd113f64f2bad02681104a6b77a0a2ab288a894126842a4e3","data":"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="}
import { bundlerClient } from './config'
import { parseEther } from 'viem'
// ---cut---
const userOperation = await bundlerClient.prepareUserOperation({
  account,
  calls: [{
    to: '0x70997970c51812dc3a010c7d01b50e0d17dc79c8',
    value: parseEther('1')
  }],
  maxFeePerGas: 420n, // [!code focus]
})
```

### maxPriorityFeePerGas (optional)

* **Type:** `bigint`

Maximum priority fee per gas for User Operation execution.

```ts twoslash
// @twoslash-cache: {"v":2,"hash":"57dfd03a2df648bdad6cf4498fd7e3aae567cd5c3e63be5b01714fe1f95e4f81","data":"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="}
import { bundlerClient } from './config'
import { parseEther } from 'viem'
// ---cut---
const userOperation = await bundlerClient.prepareUserOperation({
  account,
  calls: [{
    to: '0x70997970c51812dc3a010c7d01b50e0d17dc79c8',
    value: parseEther('1')
  }],
  maxPriorityFeePerGas: 420n, 
  maxFeePerGas: 10n, // [!code focus]
})
```

### nonce (optional)

* **Type:** `bigint`

Nonce for the User Operation.

```ts twoslash
// @twoslash-cache: {"v":2,"hash":"16df691013b768d938a5e69cda110bf6329b10c1e6f878c209952d0afb2879bd","data":"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="}
import { bundlerClient } from './config'
import { parseEther } from 'viem'
// ---cut---
const userOperation = await bundlerClient.prepareUserOperation({
  account,
  calls: [{
    to: '0x70997970c51812dc3a010c7d01b50e0d17dc79c8',
    value: parseEther('1')
  }],
  nonce: 10n, // [!code focus]
})
```

### paymaster (optional)

* **Type:** `Address | true | PaymasterClient | PaymasterActions`

Sets Paymaster configuration for the User Operation.

* If `paymaster: Address`, it will use the provided Paymaster contract address for sponsorship.
* If `paymaster: PaymasterClient`, it will use the provided [Paymaster Client](/account-abstraction/clients/paymaster) for sponsorship.
* If `paymaster: true`, it will be assumed that the Bundler Client also supports Paymaster RPC methods (e.g. `pm_getPaymasterData`), and use them for sponsorship.
* If [custom functions](/account-abstraction/clients/bundler#paymastergetpaymasterdata-optional) are provided to `paymaster`, it will use them for sponsorship.

#### Using a Paymaster Contract Address

```ts twoslash
// @twoslash-cache: {"v":2,"hash":"8acde4b6dfbc9491c187d7d8f68847141463ae0658f79398542cde367a770b9b","data":"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="}
import { bundlerClient } from './config'
import { parseEther } from 'viem'
// ---cut---
const hash = await bundlerClient.prepareUserOperation({
  account,
  calls: [{
    to: '0x70997970c51812dc3a010c7d01b50e0d17dc79c8',
    value: parseEther('1')
  }],
  paymaster: '0x942fD5017c0F60575930D8574Eaca13BEcD6e1bB', // [!code focus]
  paymasterData: '0xdeadbeef',
})
```

#### Using a Paymaster Client

```ts twoslash
// @twoslash-cache: {"v":2,"hash":"996130a9558dfd162f684af5a413422ddd2a08a20a953f13430801bfd87b7f19","data":"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"}
import { bundlerClient } from './config'
import { parseEther } from 'viem'
// ---cut---
const paymasterClient = createPaymasterClient({ // [!code focus]
  transport: http('https://api.pimlico.io/v2/1/rpc?apikey={API_KEY}') // [!code focus]
}) // [!code focus]

const hash = await bundlerClient.prepareUserOperation({
  account,
  calls: [{
    to: '0x70997970c51812dc3a010c7d01b50e0d17dc79c8',
    value: parseEther('1')
  }],
  paymaster: paymasterClient, // [!code focus]
})
```

#### Using the Bundler Client as Paymaster

```ts twoslash
// @twoslash-cache: {"v":2,"hash":"462b10791b31e9b6691699a7f2c5cdcdb3549058abe46244478ccbc0fe7b633c","data":"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"}
import { bundlerClient } from './config'
import { parseEther } from 'viem'
// ---cut---
const hash = await bundlerClient.prepareUserOperation({
  account,
  calls: [{
    to: '0x70997970c51812dc3a010c7d01b50e0d17dc79c8',
    value: parseEther('1')
  }],
  paymaster: true, // [!code focus]
})
```

### paymasterContext (optional)

* **Type:** `unknown`

Paymaster specific fields.

:::warning
This property is only available if **`paymaster` is a Paymaster Client**.
:::

```ts twoslash
// @twoslash-cache: {"v":2,"hash":"ff43a8531e856136dc3d7da856da4e421f3a53eb7fe9ccd274e53853ade433ce","data":"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="}
import { bundlerClient } from './config'
import { parseEther } from 'viem'
// ---cut---
const paymasterClient = createPaymasterClient({
  transport: http('https://api.pimlico.io/v2/1/rpc?apikey={API_KEY}')
})

const hash = await bundlerClient.prepareUserOperation({
  account,
  calls: [{
    to: '0x70997970c51812dc3a010c7d01b50e0d17dc79c8',
    value: parseEther('1')
  }],
  paymaster: paymasterClient,
  paymasterContext: { // [!code focus]
    policyId: 'abc123' // [!code focus]
  }, // [!code focus]
})
```

### paymasterData (optional)

* **Type:** `Address`

Call data to execute on the Paymaster contract.

:::warning
This property is only available if **`paymaster` is an address**.
:::

```ts twoslash
// @twoslash-cache: {"v":2,"hash":"65252c7432bf2d2bbbade4c9fe8ace6a047149decffeb57d5e6cdec3f2e9a57b","data":"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"}
import { bundlerClient } from './config'
import { parseEther } from 'viem'
// ---cut---
const userOperation = await bundlerClient.prepareUserOperation({
  account,
  calls: [{
    to: '0x70997970c51812dc3a010c7d01b50e0d17dc79c8',
    value: parseEther('1')
  }],
  paymaster: '0x942fD5017c0F60575930D8574Eaca13BEcD6e1bB',
  paymasterData: '0xdeadbeef', // [!code focus]
})
```

### paymasterPostOpGasLimit (optional)

* **Type:** `bigint`

The amount of gas to allocate for the Paymaster post-operation code.

```ts twoslash
// @twoslash-cache: {"v":2,"hash":"b5ad5e78f9707f16a2060a0acb733d6e6565bfeb20ebfbb5cd5107cb409c9042","data":"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"}
import { bundlerClient } from './config'
import { parseEther } from 'viem'
// ---cut---
const userOperation = await bundlerClient.prepareUserOperation({
  account,
  calls: [{
    to: '0x70997970c51812dc3a010c7d01b50e0d17dc79c8',
    value: parseEther('1')
  }],
  paymaster: '0x942fD5017c0F60575930D8574Eaca13BEcD6e1bB',
  paymasterData: '0xdeadbeef',
  paymasterPostOpGasLimit: 69420n, // [!code focus]
})
```

### paymasterVerificationGasLimit (optional)

* **Type:** `bigint`

The amount of gas to allocate for the Paymaster validation code.

```ts twoslash
// @twoslash-cache: {"v":2,"hash":"efb4842b3b1417a06abe58604a238f0e9980ab774776750f6ac58e05ee68bce4","data":"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"}
import { bundlerClient } from './config'
import { parseEther } from 'viem'
// ---cut---
const userOperation = await bundlerClient.prepareUserOperation({
  account,
  calls: [{
    to: '0x70997970c51812dc3a010c7d01b50e0d17dc79c8',
    value: parseEther('1')
  }],
  paymaster: '0x942fD5017c0F60575930D8574Eaca13BEcD6e1bB',
  paymasterData: '0xdeadbeef',
  paymasterVerificationGasLimit: 69420n, // [!code focus]
})
```

### preVerificationGas (optional)

* **Type:** `bigint`

Extra gas to pay the Bundler.

```ts twoslash
// @twoslash-cache: {"v":2,"hash":"8be867d15f806cfe7523f00bbf487747d86d9b105e19618d9a3851a031d764a5","data":"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="}
import { bundlerClient } from './config'
import { parseEther } from 'viem'
// ---cut---
const userOperation = await bundlerClient.prepareUserOperation({
  account,
  calls: [{
    to: '0x70997970c51812dc3a010c7d01b50e0d17dc79c8',
    value: parseEther('1')
  }],
  preVerificationGas: 69420n, // [!code focus]
})
```

### signature (optional)

* **Type:** `Hex`

Signature for the User Operation.

```ts twoslash
// @twoslash-cache: {"v":2,"hash":"e5c6604673c375ec49c16a8560942fbe29e08ddb5cfb14a5dbb6d6959ab1d089","data":"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"}
import { bundlerClient } from './config'
import { parseEther } from 'viem'
// ---cut---
const userOperation = await bundlerClient.prepareUserOperation({
  account,
  calls: [{
    to: '0x70997970c51812dc3a010c7d01b50e0d17dc79c8',
    value: parseEther('1')
  }],
  signature: '0x...', // [!code focus]
})
```

### stateOverride (optional)

* **Type:** [`StateOverride`](/docs/glossary/types#stateoverride)

The state override set is an optional address-to-state mapping, where each entry specifies some state to be ephemerally overridden prior to executing the call.

```ts twoslash
// @twoslash-cache: {"v":2,"hash":"ae0fca42fb89014f573a18da9fef945cc9f9b71ba5b41ba7dcea0f80554657e0","data":"N4Igdg9gJgpgziAXAbVAFwJ4AcZJACwgDcYAnEAGhDRgA808BjCMONAAgFc4yB5HUgEM0ASxaJ2gsBkog2g0g0QA2KgBsYYAOZp8SAIwBmKmgVaYSkNz4DhYsLLUiwuRAAYqjfAsGMa5FQBfCnRsVwJiMlkaejwACkEnQTgASnZmVg4AI04wKA1SAGEnTTQJACFc/LJikVKAHgAJNDQsABUhViwIRXqqmAAzZxgoCnYBxJ4APjH+oZdR9mAAHTB2dckskQlSGEEoFjUMdlRVjfP2Xf3D4+csTjQ4Hb2DsCOTgF0AbjOL9avXu95DQALIPQRbJyYCTLcAsLCCDAQjSwn5rP6XF43diYHAwkAZNikTh+Hqo37rYJLCkXAHYu4PJ6Y65vY6ndEYjZ01nsMCCAC2MHxEAA7i5SOSOZzmYDjrihexYVkMDQ4JLOYFvjTztz3nzBfiAIJqAEYXhisjqjG6uVhfFkUhkkBo85UlZSnVYnkMx7PFnvZBaj1cr16gUK2EASTAIlEiREAC8Rla/jacXbFSAHU6XRs3dqQ/7bmB7r6Zdj2dLC7LeeHhRaJc6C6nQ7a8ZnlaqUxdNbmW0XawbM9GiPGoABRXRkGCcfmGqBQXZwODm8Xdz0D+X20iOxt99j54P/VvsH1MtOVqvlnn6iMgADWMAw6+tJ63mc4zjQACYAKzKF9KSDTk01vfERzHAA5FhGBgABpJ9AOvd531hbM9xpKkADocPYAAWNx2H5HoYHYHCsLGd1OXI/dexpcj2H0ABOIiSLInD91QuR+QUNBJUCdgAB9qSlGjVkPc4xLAKk5mGKAplWER+W6RR2ByPIClqUpZHkRQkG/AAOdRNB0PRECMEwzAsPB1OqIoSjABh1GGJAPAJbwhD8KJEEM4JQhwPBCBIcgTDoSw4iwR0BEwNJIpgBFdgAVR4Uh+DIOxxHYeo01ye9IDFQNKJpNNfGYXIykkaR9zTRhEjUJlL37Gs0AgfE3FoAB2NwmKYjrercRhf30Az9G/KBGEMQQ3H0AaOqgaasl/NwYDcKB9Dmxg+sYAykLTUc1E4BUti0L9aOA6tsWBGBeGC0gRFgCRGtpE99kXeAmVhdrBF/RgJsYNxDB6vCABFyl/LJVqYw1fxgccoGBmbCghQRyjcEbDGUDqDMNQpdpPLJEikWCJGO07m2Q44ruBkQBgGR6qKvNM4DUCAKs+2hDD2b8Bn0eaIQGQwBkYZRlEYAZvyYmAYCyLIusYLIoDwmAOoGZXlG/QYDKmpisl+txRYMkYBmUPDRsMNxBFV/6kI3Gt9sOtraDcZ2Xddt33Y9z2ve9939EEPCkLoqUg6pKQMCmCKfEFfwmQABV2BKYGSmx0tEFhY6jiwyDgeoGfWCFtgpk48+egczz9GtA33W3LtMUFwUhWMMHxSAS0RZEYDxzcM1hQk0GJUkMODsYGLwvDWN2diKJE6iOMw871gY5iJ9IqTzi4uAeMUfihJnjYpND6QxhysA8tFMBCr348B1KiByokMPqpPWq1Hq+nybTFrHa6nq+rloaRpjQmlNGam15r6EWstVa61xpbR2k2I8Rd7ZHRECdRyZ0n4DiujdB090FRPRrjyV6S4PogC+j9P6AMgag3BpDaGsN4aI2RqjdGmNsa4wQSBfGhMwDEzUqgsmiCmZ1xgNTWm79EGEKBCzNmZCOZcx5nzLIAshYizFhLKWMs5YKyVirNWGsBha26rrf6BsjYmzNhbK2bgbYXR5Mgx2PsnHOJcT7P2AdOEYiDq6IMgQphpAALxTHYPHCA/IRA8HqORKYsgDiMAQIgEA8d4oKHgJIdgydSDsDSkINOawpBQHGCIV+cBTxrHCcuZwWh2CRQgNFOocAsKrFWAAWnYMDCA8SJD4BaFgJ4AB6fpRA6j8iwnAfA/TfB5LgP02yBR+lxUTpknJGUHCWS0Ak5AyAQAJQFLIMwpS2nAAAAJOFPiEhOqTlm2DyRnIQ0ds6BBAB8Cg2zdhoE4KQVgsg2j4FIpk7JNz7BYSWKc5w94LkpKSilFZeSABKFhPlgDaGEJ5Lztl0AFFgDQsglIqQ4MAdIVwaCVA0jUByaAxg9NaAecYjp+TsAAOTDJgPyRlillI9AJURQQzgXAcAEgMelTKWX8n6V4XlrB2Uxk5apQlLUADKW80CGl+nfRytKhVhJFSMyZarypwGlasPukh9UaoCZIEUvKOCKuVaqsqjk4iEoYoEFIzTeEsDYOkCl7ALWMGJTAUldktKOoZhK5wEgeJ8osBQX4/cpBwHxd03pcQUixukm6sAxrPUcF2AAR0Ol6i1ggrWxm9XURyWFFlXJhUClgTrfi33Kum9YL837FxxK1Jl7VyKMrGA4mpCgeCTj+aQOIjL9CMrSJqdNrrnkvLkKYPSiA8LfmMtoXQ+k3JLvMJYat0KU65PsI4Fy7hPAeSmd5VdflqBhECpEEK1AwrxFqdFDAaQm2OQftIHSS6lCY3XaZJAHVLKkF3XgT9TkQBnNcPoc9PgvIBG/De+U97grRGfYkiKUUyAxXSHVBqJdP5dvZj/Xq/VBrDVGuNSa01ZrgMgStNaG04Hdj2okB2/C0FoDRJqX9vFgNGWgyZTdiBfygfA4kttCBnIuH0vBzy/h9IobvYkoKURQqxCw6+3D77O3f26uR/+VGgG0dAXNBaS0mMwM2kxbasJ+PLqYmu4TG6zIuZ3dZRJLUT1ycQMYdyCGlMrpUwFNTD6MNaZANhupum0gDtJo5RzSh9B4VUK5oDYmJNeZAMg3zrg8IKcvQEPCoXwjqcfTEcK8ZkixSHbDKcY6LCjokESKpswYxoAAPz4hFDAEQsJd6wi0H1gbIAUgkwEY5Dl+LB2kGHY12JnSEkgEKCwYKjx0lte0JiOKPBHKrPYBAAY7BmtkE7byWcZARAv3YKNppWawBtI6V09g1K+mIEGaKsZEy4kzIeMU2MDSFn1ZHRp6gggNlIC2VmWgWKcVUDxVypYc2Fujs1cK5lIyjVt3mw10d47V1uCnasQZ+FvyuNdg4D4C7dIpd/AFjQbmDDbqsnu0Hi3ZMFaK4hgw+gytofB1Vl9OHFB6ewbdPBEipHHGIe9R231fqGH+oDJiIMwYQygFDGGcMEZuCRgTFhRg2E4zY9wtQRMUHccwTWKmNM6bFw/ieZmrNHac0ENzXmFtlGC2FqLcWktpaywGjo5WqsOrq01trEx+ttrmNNt+c2lsYDW08U1bEA72aU+zzn727juwhw+MlgwHUQMZdExZCHYGcsS9wbAfLSB0sSsU95ZDIRb1hYiOhzT4UdNi4/QuEhCuKHK6oWrmhmvtcML1wblGaNjdY1NyAYvPkCKAdE2Xzzlg5fLgb4gITzfiuN4F+F7vT6osxbfWkAmFveFW6/Cvwww119mU32zmyPDYJ76Yjz4LygT9d5C6YbRY1apCo745kBxBnakCtb9ztZcCdY9aZijaDbCTDYoHjaTbcYzbI4JRo7g5/Z4BrZgAbalKCDsDbbVIJxLilCHbHanaNYXZgBXZ3S3b3burPbLbJqtADJDIjI/b9J/b9IA5QjA54EQGVaQ6bIYpw7KQI4gBI5yrgFg5ZKCqY6io47iEqGE4U4k5gBk5E457U605/pICGDfhl5M6ZYzTZbs544qHf6/7eT6C/gAEVaRa96i54Z27iKO5ShMwyJu4KJe78y+5qIB6aLB7yyKxh76JR7GJ6xmJQDGwJ5J7WJm4DiZ5yK545G5HTT+z8RF5UB05mEAbl5mQ/5V6SaLrCCiL25742GBYt4BD/7t6oan5AEX597eGBGZjtTu6e5KIqJ+7qKB5aIh4xF6IR4GJGI6yJFx7JEWKJ5WIp42LL7FGmErqGCFblFIA7Fb54Au5QYwYGAuaH687mRuBuERY94i6xb97sBZHtR5EvGU757rE1HLoM6WEiZmTiZVE5Z5Zc4GABbnHBYzQzoEjQDhAmrWCpR1prDFqlrZBVCaQUpVqXIHrwmpz2ANroiQYtr4YlLS4bBfzdqdSGZ/wDQALUbAJ0ZgKWZQLMawJ2YGR9o0gDpaGNbjqTqZpASEm147hS4nDsBk7IAACEzAsA4wnS3AHwNIhKYpkp0JMpjAcpBYO+TIjK5CSuKu1CGudCOujC+uzC8+GMi+hQfaop/SJwyp0pAwspcA8pwYN+luEgXJBOE6U6YwSpUppEDpapTpBYPhDuyA1ptpfpqp6piCipNpEpkZAZ0ZVYRxEg2p8iHuii3uwx4RGiQe2ikx4ekehi0e8xhsixqRKx/0VpvpKpiZQZkijxHGCoaZrxrZTi7i1ZcZdp/pjpzpGoPpXZCZvZBYLy4Z8ZtZw5wcY53ZUZ9Z6wo5NZ9pk5c6VA0cggSAoAYUmgcAx63mCAgQgQQAA"}
import { bundlerClient } from './config'
import { parseEther } from 'viem'
// ---cut---
const userOperation = await bundlerClient.prepareUserOperation({
  account,
  calls: [{
    to: '0x70997970c51812dc3a010c7d01b50e0d17dc79c8',
    value: parseEther('1')
  }],
  stateOverride: [ // [!code focus]
    { // [!code focus]
      address: '0xa5cc3c03994DB5b0d9A5eEdD10CabaB0813678AC', // [!code focus]
      balance: parseEther('1'), // [!code focus]
      stateDiff: [ // [!code focus]
        { // [!code focus]
          slot: '0x3ea2f1d0abf3fc66cf29eebb70cbd4e7fe762ef8a09bcc06c8edf641230afec0', // [!code focus]
          value: '0x00000000000000000000000000000000000000000000000000000000000001a4', // [!code focus]
        }, // [!code focus]
      ], // [!code focus]
    } // [!code focus]
  ], // [!code focus]
})
```

### verificationGasLimit (optional)

* **Type:** `bigint`

The amount of gas to allocate for the verification step.

```ts twoslash
// @twoslash-cache: {"v":2,"hash":"43af632f1d327e396c2ec603c665b30a64643c4d0a7caa140424235fa60fbda8","data":"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="}
import { bundlerClient } from './config'
import { parseEther } from 'viem'
// ---cut---
const userOperation = await bundlerClient.prepareUserOperation({
  account,
  calls: [{
    to: '0x70997970c51812dc3a010c7d01b50e0d17dc79c8',
    value: parseEther('1')
  }],
  verificationGasLimit: 69420n, // [!code focus]
})
```
