UNPKG

viem

Version:

TypeScript Interface for Ethereum

47 lines 1.64 kB
import { ReceiptContainsNoWithdrawalsError } from '../errors/withdrawal.js'; import { getWithdrawals, } from '../utils/getWithdrawals.js'; import { waitForNextL2Output, } from './waitForNextL2Output.js'; /** * Waits until the L2 withdrawal transaction is ready to be proved. Used for the [Withdrawal](/op-stack/guides/withdrawals.html) flow. * * - Docs: https://viem.sh/op-stack/actions/waitToProve.html * * @param client - Client to use * @param parameters - {@link WaitToProveParameters} * @returns The L2 output and withdrawal message. {@link WaitToProveReturnType} * * @example * import { createPublicClient, http } from 'viem' * import { getBlockNumber } from 'viem/actions' * import { mainnet, optimism } from 'viem/chains' * import { waitToProve } from 'viem/op-stack' * * const publicClientL1 = createPublicClient({ * chain: mainnet, * transport: http(), * }) * const publicClientL2 = createPublicClient({ * chain: optimism, * transport: http(), * }) * * const receipt = await publicClientL2.getTransactionReceipt({ hash: '0x...' }) * await waitToProve(publicClientL1, { * receipt, * targetChain: optimism * }) */ export async function waitToProve(client, parameters) { const { receipt } = parameters; const [withdrawal] = getWithdrawals(receipt); if (!withdrawal) throw new ReceiptContainsNoWithdrawalsError({ hash: receipt.transactionHash, }); const output = await waitForNextL2Output(client, { ...parameters, l2BlockNumber: receipt.blockNumber, }); return { output, withdrawal }; } //# sourceMappingURL=waitToProve.js.map