tevmViemExtensionOptimistic
tevmViemExtensionOptimistic():
ViemTevmOptimisticClientDecorator
This extension is highly experimental and should not be used in production.
Creates a decorator to a viem wallet client that adds the writeContractOptimistic
method to the tevm
property.
It also decorates all the normal tevm
methods from the Tevm api
This enables viem to optimistically update the tevm state before the transaction is mined.
Returns
Example
import { tevmViemExtensionOptimistic } from 'tevmViemExtensionOptimistic'import { walletClient } from './walletClient.js'
const client = walletClient.extend(tevmViemExtensionOptimistic())
for (const result of client.tevm.writeContractOptimistic({ from: '0x...', to: '0x...', abi: [...], functionName: 'transferFrom', args: ['0x...', '0x...', '1000000000000000000'],})) { if (result.tag === 'OPTIMISTIC_RESULT') { expect(result).toEqual({ data: mockRequestResponse as any, success: true, tag: 'OPTIMISTIC_RESULT', }) expect((client.request as jest.Mock).mock.lastCall[0]).toEqual({ method: 'tevm_contract', params: params, jsonrpc: '2.0', }) expect((client.writeContract as jest.Mock).mock.lastCall[0]).toEqual({ abi: params.abi, functionName: params.functionName, args: params.args, caller: params.caller, address: params.address, account: params.account, chain: params.chain, }) } else if (result.tag === 'HASH') { expect(result).toEqual({ data: mockWriteContractResponse, success: true, tag: 'HASH', }) } else if (result.tag === 'RECEIPT') { expect(result).toEqual({ data: mockTxReciept, success: true, tag: 'RECEIPT', }) expect(mockWaitForTransactionReceipt.mock.lastCall[0]).toEqual(client) expect(mockWaitForTransactionReceipt.mock.lastCall[1]).toEqual({ hash: mockWriteContractResponse, }) }}
## Source
tevmViemExtensionOptimistic.js:65
***Generated using [typedoc-plugin-markdown](https://www.npmjs.com/package/typedoc-plugin-markdown) and [TypeDoc](https://typedoc.org/)