viem 2.0.0-beta.8 → 2.0.0-rc.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +44 -0
- package/README.md +9 -3
- package/_cjs/actions/ens/getEnsName.js +4 -2
- package/_cjs/actions/ens/getEnsName.js.map +1 -1
- package/_cjs/actions/index.js +16 -2
- package/_cjs/actions/index.js.map +1 -1
- package/_cjs/actions/wallet/prepareTransactionRequest.js.map +1 -1
- package/_cjs/chains/definitions/arbitrumSepolia.js +4 -0
- package/_cjs/chains/definitions/arbitrumSepolia.js.map +1 -1
- package/_cjs/chains/definitions/base.js +5 -0
- package/_cjs/chains/definitions/base.js.map +1 -1
- package/_cjs/chains/definitions/baseGoerli.js +5 -0
- package/_cjs/chains/definitions/baseGoerli.js.map +1 -1
- package/_cjs/chains/definitions/baseSepolia.js +5 -0
- package/_cjs/chains/definitions/baseSepolia.js.map +1 -1
- package/_cjs/chains/definitions/fantomSonicTestnet.js +26 -0
- package/_cjs/chains/definitions/fantomSonicTestnet.js.map +1 -0
- package/_cjs/chains/definitions/optimism.js +5 -0
- package/_cjs/chains/definitions/optimism.js.map +1 -1
- package/_cjs/chains/definitions/optimismGoerli.js +5 -0
- package/_cjs/chains/definitions/optimismGoerli.js.map +1 -1
- package/_cjs/chains/definitions/optimismSepolia.js +5 -0
- package/_cjs/chains/definitions/optimismSepolia.js.map +1 -1
- package/_cjs/chains/definitions/pgn.js +12 -0
- package/_cjs/chains/definitions/pgn.js.map +1 -1
- package/_cjs/chains/definitions/pgnTestnet.js +7 -0
- package/_cjs/chains/definitions/pgnTestnet.js.map +1 -1
- package/_cjs/chains/definitions/zilliqa.js +26 -0
- package/_cjs/chains/definitions/zilliqa.js.map +1 -0
- package/_cjs/chains/definitions/zilliqaTestnet.js +26 -0
- package/_cjs/chains/definitions/zilliqaTestnet.js.map +1 -0
- package/_cjs/chains/definitions/zkSyncSepoliaTestnet.js +35 -0
- package/_cjs/chains/definitions/zkSyncSepoliaTestnet.js.map +1 -0
- package/_cjs/chains/definitions/zkSyncTestnet.js +4 -0
- package/_cjs/chains/definitions/zkSyncTestnet.js.map +1 -1
- package/_cjs/chains/definitions/zora.js +5 -0
- package/_cjs/chains/definitions/zora.js.map +1 -1
- package/_cjs/chains/definitions/zoraSepolia.js +5 -0
- package/_cjs/chains/definitions/zoraSepolia.js.map +1 -1
- package/_cjs/chains/index.js +12 -4
- package/_cjs/chains/index.js.map +1 -1
- package/_cjs/chains/opStack/abis.js +366 -1
- package/_cjs/chains/opStack/abis.js.map +1 -1
- package/_cjs/chains/opStack/actions/buildDepositTransaction.js +1 -1
- package/_cjs/chains/opStack/actions/buildDepositTransaction.js.map +1 -1
- package/_cjs/chains/opStack/actions/buildInitiateWithdrawal.js +29 -0
- package/_cjs/chains/opStack/actions/buildInitiateWithdrawal.js.map +1 -0
- package/_cjs/chains/opStack/actions/buildProveWithdrawal.js +39 -0
- package/_cjs/chains/opStack/actions/buildProveWithdrawal.js.map +1 -0
- package/_cjs/chains/opStack/actions/depositTransaction.js +11 -6
- package/_cjs/chains/opStack/actions/depositTransaction.js.map +1 -1
- package/_cjs/chains/opStack/actions/estimateDepositTransactionGas.js +37 -0
- package/_cjs/chains/opStack/actions/estimateDepositTransactionGas.js.map +1 -0
- package/_cjs/chains/opStack/actions/estimateFinalizeWithdrawalGas.js +29 -0
- package/_cjs/chains/opStack/actions/estimateFinalizeWithdrawalGas.js.map +1 -0
- package/_cjs/chains/opStack/actions/estimateInitiateWithdrawalGas.js +24 -0
- package/_cjs/chains/opStack/actions/estimateInitiateWithdrawalGas.js.map +1 -0
- package/_cjs/chains/opStack/actions/estimateProveWithdrawalGas.js +29 -0
- package/_cjs/chains/opStack/actions/estimateProveWithdrawalGas.js.map +1 -0
- package/_cjs/chains/opStack/actions/finalizeWithdrawal.js +33 -0
- package/_cjs/chains/opStack/actions/finalizeWithdrawal.js.map +1 -0
- package/_cjs/chains/opStack/actions/getL2Output.js +30 -0
- package/_cjs/chains/opStack/actions/getL2Output.js.map +1 -0
- package/_cjs/chains/opStack/actions/getTimeToFinalize.js +46 -0
- package/_cjs/chains/opStack/actions/getTimeToFinalize.js.map +1 -0
- package/_cjs/chains/opStack/actions/getTimeToNextL2Output.js +63 -0
- package/_cjs/chains/opStack/actions/getTimeToNextL2Output.js.map +1 -0
- package/_cjs/chains/opStack/actions/getTimeToProve.js +13 -0
- package/_cjs/chains/opStack/actions/getTimeToProve.js.map +1 -0
- package/_cjs/chains/opStack/actions/getWithdrawalStatus.js +71 -0
- package/_cjs/chains/opStack/actions/getWithdrawalStatus.js.map +1 -0
- package/_cjs/chains/opStack/actions/initiateWithdrawal.js +28 -0
- package/_cjs/chains/opStack/actions/initiateWithdrawal.js.map +1 -0
- package/_cjs/chains/opStack/actions/proveWithdrawal.js +33 -0
- package/_cjs/chains/opStack/actions/proveWithdrawal.js.map +1 -0
- package/_cjs/chains/opStack/actions/waitForNextL2Output.js +32 -0
- package/_cjs/chains/opStack/actions/waitForNextL2Output.js.map +1 -0
- package/_cjs/chains/opStack/actions/waitToFinalize.js +11 -0
- package/_cjs/chains/opStack/actions/waitToFinalize.js.map +1 -0
- package/_cjs/chains/opStack/actions/waitToProve.js +21 -0
- package/_cjs/chains/opStack/actions/waitToProve.js.map +1 -0
- package/_cjs/chains/opStack/chains.js +5 -1
- package/_cjs/chains/opStack/chains.js.map +1 -1
- package/_cjs/chains/opStack/decorators/publicL1.js +35 -0
- package/_cjs/chains/opStack/decorators/publicL1.js.map +1 -0
- package/_cjs/chains/opStack/decorators/publicL2.js +5 -1
- package/_cjs/chains/opStack/decorators/publicL2.js.map +1 -1
- package/_cjs/chains/opStack/decorators/walletL1.js +4 -0
- package/_cjs/chains/opStack/decorators/walletL1.js.map +1 -1
- package/_cjs/chains/opStack/decorators/walletL2.js +13 -0
- package/_cjs/chains/opStack/decorators/walletL2.js.map +1 -0
- package/_cjs/chains/opStack/errors/withdrawal.js +17 -0
- package/_cjs/chains/opStack/errors/withdrawal.js.map +1 -0
- package/_cjs/chains/opStack/index.js +43 -15
- package/_cjs/chains/opStack/index.js.map +1 -1
- package/_cjs/chains/opStack/types/deposit.js +3 -0
- package/_cjs/chains/opStack/types/deposit.js.map +1 -0
- package/_cjs/chains/opStack/types/withdrawal.js +3 -0
- package/_cjs/chains/opStack/types/withdrawal.js.map +1 -0
- package/_cjs/chains/opStack/utils/extractWithdrawalMessageLogs.js +14 -0
- package/_cjs/chains/opStack/utils/extractWithdrawalMessageLogs.js.map +1 -0
- package/_cjs/chains/opStack/utils/getL2TransactionHash.js +2 -2
- package/_cjs/chains/opStack/utils/getL2TransactionHash.js.map +1 -1
- package/_cjs/chains/opStack/utils/getWithdrawalHashStorageSlot.js +11 -0
- package/_cjs/chains/opStack/utils/getWithdrawalHashStorageSlot.js.map +1 -0
- package/_cjs/chains/opStack/utils/getWithdrawals.js +10 -0
- package/_cjs/chains/opStack/utils/getWithdrawals.js.map +1 -0
- package/_cjs/chains/opStack/utils/{fromOpaqueData.js → opaqueDataToDepositData.js} +4 -4
- package/_cjs/chains/opStack/utils/opaqueDataToDepositData.js.map +1 -0
- package/_cjs/errors/abi.js +21 -1
- package/_cjs/errors/abi.js.map +1 -1
- package/_cjs/errors/version.js +1 -1
- package/_cjs/errors/version.js.map +1 -1
- package/_cjs/index.js +10 -2
- package/_cjs/index.js.map +1 -1
- package/_cjs/utils/abi/getAbiItem.js +46 -3
- package/_cjs/utils/abi/getAbiItem.js.map +1 -1
- package/_cjs/utils/hash/ripemd160.js +16 -0
- package/_cjs/utils/hash/ripemd160.js.map +1 -0
- package/_cjs/utils/hash/sha256.js +16 -0
- package/_cjs/utils/hash/sha256.js.map +1 -0
- package/_cjs/utils/index.js +5 -1
- package/_cjs/utils/index.js.map +1 -1
- package/_esm/actions/ens/getEnsName.js +4 -2
- package/_esm/actions/ens/getEnsName.js.map +1 -1
- package/_esm/actions/index.js +7 -0
- package/_esm/actions/index.js.map +1 -1
- package/_esm/actions/wallet/prepareTransactionRequest.js.map +1 -1
- package/_esm/chains/definitions/arbitrumSepolia.js +4 -0
- package/_esm/chains/definitions/arbitrumSepolia.js.map +1 -1
- package/_esm/chains/definitions/base.js +5 -0
- package/_esm/chains/definitions/base.js.map +1 -1
- package/_esm/chains/definitions/baseGoerli.js +5 -0
- package/_esm/chains/definitions/baseGoerli.js.map +1 -1
- package/_esm/chains/definitions/baseSepolia.js +5 -0
- package/_esm/chains/definitions/baseSepolia.js.map +1 -1
- package/_esm/chains/definitions/fantomSonicTestnet.js +23 -0
- package/_esm/chains/definitions/fantomSonicTestnet.js.map +1 -0
- package/_esm/chains/definitions/optimism.js +5 -0
- package/_esm/chains/definitions/optimism.js.map +1 -1
- package/_esm/chains/definitions/optimismGoerli.js +5 -0
- package/_esm/chains/definitions/optimismGoerli.js.map +1 -1
- package/_esm/chains/definitions/optimismSepolia.js +5 -0
- package/_esm/chains/definitions/optimismSepolia.js.map +1 -1
- package/_esm/chains/definitions/pgn.js +12 -0
- package/_esm/chains/definitions/pgn.js.map +1 -1
- package/_esm/chains/definitions/pgnTestnet.js +7 -0
- package/_esm/chains/definitions/pgnTestnet.js.map +1 -1
- package/_esm/chains/definitions/zilliqa.js +23 -0
- package/_esm/chains/definitions/zilliqa.js.map +1 -0
- package/_esm/chains/definitions/zilliqaTestnet.js +23 -0
- package/_esm/chains/definitions/zilliqaTestnet.js.map +1 -0
- package/_esm/chains/definitions/zkSyncSepoliaTestnet.js +32 -0
- package/_esm/chains/definitions/zkSyncSepoliaTestnet.js.map +1 -0
- package/_esm/chains/definitions/zkSyncTestnet.js +5 -0
- package/_esm/chains/definitions/zkSyncTestnet.js.map +1 -1
- package/_esm/chains/definitions/zora.js +5 -0
- package/_esm/chains/definitions/zora.js.map +1 -1
- package/_esm/chains/definitions/zoraSepolia.js +5 -0
- package/_esm/chains/definitions/zoraSepolia.js.map +1 -1
- package/_esm/chains/index.js +4 -0
- package/_esm/chains/index.js.map +1 -1
- package/_esm/chains/opStack/abis.js +365 -0
- package/_esm/chains/opStack/abis.js.map +1 -1
- package/_esm/chains/opStack/actions/buildDepositTransaction.js +2 -2
- package/_esm/chains/opStack/actions/buildDepositTransaction.js.map +1 -1
- package/_esm/chains/opStack/actions/buildInitiateWithdrawal.js +50 -0
- package/_esm/chains/opStack/actions/buildInitiateWithdrawal.js.map +1 -0
- package/_esm/chains/opStack/actions/buildProveWithdrawal.js +59 -0
- package/_esm/chains/opStack/actions/buildProveWithdrawal.js.map +1 -0
- package/_esm/chains/opStack/actions/depositTransaction.js +17 -14
- package/_esm/chains/opStack/actions/depositTransaction.js.map +1 -1
- package/_esm/chains/opStack/actions/estimateDepositTransactionGas.js +62 -0
- package/_esm/chains/opStack/actions/estimateDepositTransactionGas.js.map +1 -0
- package/_esm/chains/opStack/actions/estimateFinalizeWithdrawalGas.js +50 -0
- package/_esm/chains/opStack/actions/estimateFinalizeWithdrawalGas.js.map +1 -0
- package/_esm/chains/opStack/actions/estimateInitiateWithdrawalGas.js +48 -0
- package/_esm/chains/opStack/actions/estimateInitiateWithdrawalGas.js.map +1 -0
- package/_esm/chains/opStack/actions/estimateProveWithdrawalGas.js +53 -0
- package/_esm/chains/opStack/actions/estimateProveWithdrawalGas.js.map +1 -0
- package/_esm/chains/opStack/actions/finalizeWithdrawal.js +53 -0
- package/_esm/chains/opStack/actions/finalizeWithdrawal.js.map +1 -0
- package/_esm/chains/opStack/actions/getL2Output.js +50 -0
- package/_esm/chains/opStack/actions/getL2Output.js.map +1 -0
- package/_esm/chains/opStack/actions/getTimeToFinalize.js +77 -0
- package/_esm/chains/opStack/actions/getTimeToFinalize.js.map +1 -0
- package/_esm/chains/opStack/actions/getTimeToNextL2Output.js +91 -0
- package/_esm/chains/opStack/actions/getTimeToNextL2Output.js.map +1 -0
- package/_esm/chains/opStack/actions/getTimeToProve.js +39 -0
- package/_esm/chains/opStack/actions/getTimeToProve.js.map +1 -0
- package/_esm/chains/opStack/actions/getWithdrawalStatus.js +99 -0
- package/_esm/chains/opStack/actions/getWithdrawalStatus.js.map +1 -0
- package/_esm/chains/opStack/actions/initiateWithdrawal.js +76 -0
- package/_esm/chains/opStack/actions/initiateWithdrawal.js.map +1 -0
- package/_esm/chains/opStack/actions/proveWithdrawal.js +57 -0
- package/_esm/chains/opStack/actions/proveWithdrawal.js.map +1 -0
- package/_esm/chains/opStack/actions/waitForNextL2Output.js +58 -0
- package/_esm/chains/opStack/actions/waitForNextL2Output.js.map +1 -0
- package/_esm/chains/opStack/actions/waitToFinalize.js +41 -0
- package/_esm/chains/opStack/actions/waitToFinalize.js.map +1 -0
- package/_esm/chains/opStack/actions/waitToProve.js +47 -0
- package/_esm/chains/opStack/actions/waitToProve.js.map +1 -0
- package/_esm/chains/opStack/chains.js +2 -0
- package/_esm/chains/opStack/chains.js.map +1 -1
- package/_esm/chains/opStack/decorators/publicL1.js +31 -0
- package/_esm/chains/opStack/decorators/publicL1.js.map +1 -0
- package/_esm/chains/opStack/decorators/publicL2.js +5 -1
- package/_esm/chains/opStack/decorators/publicL2.js.map +1 -1
- package/_esm/chains/opStack/decorators/walletL1.js +4 -0
- package/_esm/chains/opStack/decorators/walletL1.js.map +1 -1
- package/_esm/chains/opStack/decorators/walletL2.js +9 -0
- package/_esm/chains/opStack/decorators/walletL2.js.map +1 -0
- package/_esm/chains/opStack/errors/withdrawal.js +13 -0
- package/_esm/chains/opStack/errors/withdrawal.js.map +1 -0
- package/_esm/chains/opStack/index.js +21 -3
- package/_esm/chains/opStack/index.js.map +1 -1
- package/_esm/chains/opStack/types/deposit.js +2 -0
- package/_esm/chains/opStack/types/deposit.js.map +1 -0
- package/_esm/chains/opStack/types/withdrawal.js +2 -0
- package/_esm/chains/opStack/types/withdrawal.js.map +1 -0
- package/_esm/chains/opStack/utils/extractWithdrawalMessageLogs.js +10 -0
- package/_esm/chains/opStack/utils/extractWithdrawalMessageLogs.js.map +1 -0
- package/_esm/chains/opStack/utils/getL2TransactionHash.js +2 -2
- package/_esm/chains/opStack/utils/getL2TransactionHash.js.map +1 -1
- package/_esm/chains/opStack/utils/getWithdrawalHashStorageSlot.js +7 -0
- package/_esm/chains/opStack/utils/getWithdrawalHashStorageSlot.js.map +1 -0
- package/_esm/chains/opStack/utils/getWithdrawals.js +6 -0
- package/_esm/chains/opStack/utils/getWithdrawals.js.map +1 -0
- package/_esm/chains/opStack/utils/{fromOpaqueData.js → opaqueDataToDepositData.js} +2 -2
- package/_esm/chains/opStack/utils/opaqueDataToDepositData.js.map +1 -0
- package/_esm/errors/abi.js +19 -0
- package/_esm/errors/abi.js.map +1 -1
- package/_esm/errors/version.js +1 -1
- package/_esm/errors/version.js.map +1 -1
- package/_esm/index.js +4 -0
- package/_esm/index.js.map +1 -1
- package/_esm/utils/abi/getAbiItem.js +46 -2
- package/_esm/utils/abi/getAbiItem.js.map +1 -1
- package/_esm/utils/hash/ripemd160.js +12 -0
- package/_esm/utils/hash/ripemd160.js.map +1 -0
- package/_esm/utils/hash/sha256.js +12 -0
- package/_esm/utils/hash/sha256.js.map +1 -0
- package/_esm/utils/index.js +2 -0
- package/_esm/utils/index.js.map +1 -1
- package/_types/actions/ens/getEnsName.d.ts.map +1 -1
- package/_types/actions/index.d.ts +7 -0
- package/_types/actions/index.d.ts.map +1 -1
- package/_types/actions/public/getBlock.d.ts +1 -1
- package/_types/actions/public/getBlock.d.ts.map +1 -1
- package/_types/actions/public/getTransaction.d.ts +1 -1
- package/_types/actions/public/getTransaction.d.ts.map +1 -1
- package/_types/actions/public/getTransactionReceipt.d.ts +1 -1
- package/_types/actions/public/getTransactionReceipt.d.ts.map +1 -1
- package/_types/actions/wallet/prepareTransactionRequest.d.ts +5 -5
- package/_types/actions/wallet/prepareTransactionRequest.d.ts.map +1 -1
- package/_types/chains/celo/chainConfig.d.ts +180 -180
- package/_types/chains/celo/formatters.d.ts +180 -180
- package/_types/chains/definitions/arbitrumSepolia.d.ts +4 -0
- package/_types/chains/definitions/arbitrumSepolia.d.ts.map +1 -1
- package/_types/chains/definitions/base.d.ts +142 -137
- package/_types/chains/definitions/base.d.ts.map +1 -1
- package/_types/chains/definitions/baseGoerli.d.ts +142 -137
- package/_types/chains/definitions/baseGoerli.d.ts.map +1 -1
- package/_types/chains/definitions/baseSepolia.d.ts +142 -137
- package/_types/chains/definitions/baseSepolia.d.ts.map +1 -1
- package/_types/chains/definitions/celo.d.ts +180 -180
- package/_types/chains/definitions/celoAlfajores.d.ts +180 -180
- package/_types/chains/definitions/celoCannoli.d.ts +180 -180
- package/_types/chains/definitions/fantomSonicTestnet.d.ts +38 -0
- package/_types/chains/definitions/fantomSonicTestnet.d.ts.map +1 -0
- package/_types/chains/definitions/optimism.d.ts +142 -137
- package/_types/chains/definitions/optimism.d.ts.map +1 -1
- package/_types/chains/definitions/optimismGoerli.d.ts +142 -137
- package/_types/chains/definitions/optimismGoerli.d.ts.map +1 -1
- package/_types/chains/definitions/optimismSepolia.d.ts +142 -137
- package/_types/chains/definitions/optimismSepolia.d.ts.map +1 -1
- package/_types/chains/definitions/pgn.d.ts +147 -137
- package/_types/chains/definitions/pgn.d.ts.map +1 -1
- package/_types/chains/definitions/pgnTestnet.d.ts +142 -137
- package/_types/chains/definitions/pgnTestnet.d.ts.map +1 -1
- package/_types/chains/definitions/zilliqa.d.ts +38 -0
- package/_types/chains/definitions/zilliqa.d.ts.map +1 -0
- package/_types/chains/definitions/zilliqaTestnet.d.ts +38 -0
- package/_types/chains/definitions/zilliqaTestnet.d.ts.map +1 -0
- package/_types/chains/definitions/zkSync.d.ts +24 -24
- package/_types/chains/definitions/zkSyncSepoliaTestnet.d.ts +533 -0
- package/_types/chains/definitions/zkSyncSepoliaTestnet.d.ts.map +1 -0
- package/_types/chains/definitions/zkSyncTestnet.d.ts +29 -24
- package/_types/chains/definitions/zkSyncTestnet.d.ts.map +1 -1
- package/_types/chains/definitions/zora.d.ts +142 -137
- package/_types/chains/definitions/zora.d.ts.map +1 -1
- package/_types/chains/definitions/zoraSepolia.d.ts +142 -137
- package/_types/chains/definitions/zoraSepolia.d.ts.map +1 -1
- package/_types/chains/definitions/zoraTestnet.d.ts +137 -137
- package/_types/chains/index.d.ts +5 -1
- package/_types/chains/index.d.ts.map +1 -1
- package/_types/chains/opStack/abis.d.ts +457 -0
- package/_types/chains/opStack/abis.d.ts.map +1 -1
- package/_types/chains/opStack/actions/buildDepositTransaction.d.ts +5 -3
- package/_types/chains/opStack/actions/buildDepositTransaction.d.ts.map +1 -1
- package/_types/chains/opStack/actions/buildInitiateWithdrawal.d.ts +50 -0
- package/_types/chains/opStack/actions/buildInitiateWithdrawal.d.ts.map +1 -0
- package/_types/chains/opStack/actions/buildProveWithdrawal.d.ts +48 -0
- package/_types/chains/opStack/actions/buildProveWithdrawal.d.ts.map +1 -0
- package/_types/chains/opStack/actions/depositTransaction.d.ts +18 -34
- package/_types/chains/opStack/actions/depositTransaction.d.ts.map +1 -1
- package/_types/chains/opStack/actions/estimateDepositTransactionGas.d.ts +50 -0
- package/_types/chains/opStack/actions/estimateDepositTransactionGas.d.ts.map +1 -0
- package/_types/chains/opStack/actions/estimateFinalizeWithdrawalGas.d.ts +45 -0
- package/_types/chains/opStack/actions/estimateFinalizeWithdrawalGas.d.ts.map +1 -0
- package/_types/chains/opStack/actions/estimateInitiateWithdrawalGas.d.ts +51 -0
- package/_types/chains/opStack/actions/estimateInitiateWithdrawalGas.d.ts.map +1 -0
- package/_types/chains/opStack/actions/estimateProveWithdrawalGas.d.ts +63 -0
- package/_types/chains/opStack/actions/estimateProveWithdrawalGas.d.ts.map +1 -0
- package/_types/chains/opStack/actions/finalizeWithdrawal.d.ts +49 -0
- package/_types/chains/opStack/actions/finalizeWithdrawal.d.ts.map +1 -0
- package/_types/chains/opStack/actions/getL2Output.d.ts +44 -0
- package/_types/chains/opStack/actions/getL2Output.d.ts.map +1 -0
- package/_types/chains/opStack/actions/getTimeToFinalize.d.ts +57 -0
- package/_types/chains/opStack/actions/getTimeToFinalize.d.ts.map +1 -0
- package/_types/chains/opStack/actions/getTimeToNextL2Output.d.ts +61 -0
- package/_types/chains/opStack/actions/getTimeToNextL2Output.d.ts.map +1 -0
- package/_types/chains/opStack/actions/getTimeToProve.d.ts +50 -0
- package/_types/chains/opStack/actions/getTimeToProve.d.ts.map +1 -0
- package/_types/chains/opStack/actions/getWithdrawalStatus.d.ts +48 -0
- package/_types/chains/opStack/actions/getWithdrawalStatus.d.ts.map +1 -0
- package/_types/chains/opStack/actions/initiateWithdrawal.d.ts +77 -0
- package/_types/chains/opStack/actions/initiateWithdrawal.d.ts.map +1 -0
- package/_types/chains/opStack/actions/proveWithdrawal.d.ts +67 -0
- package/_types/chains/opStack/actions/proveWithdrawal.d.ts.map +1 -0
- package/_types/chains/opStack/actions/waitForNextL2Output.d.ts +55 -0
- package/_types/chains/opStack/actions/waitForNextL2Output.d.ts.map +1 -0
- package/_types/chains/opStack/actions/waitToFinalize.d.ts +45 -0
- package/_types/chains/opStack/actions/waitToFinalize.d.ts.map +1 -0
- package/_types/chains/opStack/actions/waitToProve.d.ts +55 -0
- package/_types/chains/opStack/actions/waitToProve.d.ts.map +1 -0
- package/_types/chains/opStack/chainConfig.d.ts +136 -136
- package/_types/chains/opStack/chains.d.ts +2 -0
- package/_types/chains/opStack/chains.d.ts.map +1 -1
- package/_types/chains/opStack/decorators/publicL1.d.ts +386 -0
- package/_types/chains/opStack/decorators/publicL1.d.ts.map +1 -0
- package/_types/chains/opStack/decorators/publicL2.d.ts +82 -26
- package/_types/chains/opStack/decorators/publicL2.d.ts.map +1 -1
- package/_types/chains/opStack/decorators/walletL1.d.ts +57 -2
- package/_types/chains/opStack/decorators/walletL1.d.ts.map +1 -1
- package/_types/chains/opStack/decorators/walletL2.d.ts +62 -0
- package/_types/chains/opStack/decorators/walletL2.d.ts.map +1 -0
- package/_types/chains/opStack/errors/withdrawal.d.ts +12 -0
- package/_types/chains/opStack/errors/withdrawal.d.ts.map +1 -0
- package/_types/chains/opStack/formatters.d.ts +136 -136
- package/_types/chains/opStack/index.d.ts +21 -3
- package/_types/chains/opStack/index.d.ts.map +1 -1
- package/_types/chains/opStack/types/deposit.d.ts +25 -0
- package/_types/chains/opStack/types/deposit.d.ts.map +1 -0
- package/_types/chains/opStack/types/withdrawal.d.ts +22 -0
- package/_types/chains/opStack/types/withdrawal.d.ts.map +1 -0
- package/_types/chains/opStack/utils/extractWithdrawalMessageLogs.d.ts +137 -0
- package/_types/chains/opStack/utils/extractWithdrawalMessageLogs.d.ts.map +1 -0
- package/_types/chains/opStack/utils/getWithdrawalHashStorageSlot.d.ts +11 -0
- package/_types/chains/opStack/utils/getWithdrawalHashStorageSlot.d.ts.map +1 -0
- package/_types/chains/opStack/utils/getWithdrawals.d.ts +12 -0
- package/_types/chains/opStack/utils/getWithdrawals.d.ts.map +1 -0
- package/_types/chains/opStack/utils/opaqueDataToDepositData.d.ts +15 -0
- package/_types/chains/opStack/utils/opaqueDataToDepositData.d.ts.map +1 -0
- package/_types/chains/zksync/chainConfig.d.ts +24 -24
- package/_types/chains/zksync/formatters.d.ts +24 -24
- package/_types/clients/decorators/public.d.ts +2 -2
- package/_types/clients/decorators/public.d.ts.map +1 -1
- package/_types/clients/decorators/wallet.d.ts +2 -2
- package/_types/clients/decorators/wallet.d.ts.map +1 -1
- package/_types/errors/abi.d.ts +14 -1
- package/_types/errors/abi.d.ts.map +1 -1
- package/_types/errors/version.d.ts +1 -1
- package/_types/errors/version.d.ts.map +1 -1
- package/_types/index.d.ts +15 -1
- package/_types/index.d.ts.map +1 -1
- package/_types/types/account.d.ts +1 -1
- package/_types/types/account.d.ts.map +1 -1
- package/_types/types/eip1193.d.ts +12 -0
- package/_types/types/eip1193.d.ts.map +1 -1
- package/_types/utils/abi/getAbiItem.d.ts +2 -1
- package/_types/utils/abi/getAbiItem.d.ts.map +1 -1
- package/_types/utils/formatters/block.d.ts +1 -1
- package/_types/utils/formatters/block.d.ts.map +1 -1
- package/_types/utils/formatters/transaction.d.ts +2 -2
- package/_types/utils/formatters/transaction.d.ts.map +1 -1
- package/_types/utils/formatters/transactionReceipt.d.ts +1 -1
- package/_types/utils/formatters/transactionReceipt.d.ts.map +1 -1
- package/_types/utils/formatters/transactionRequest.d.ts +1 -1
- package/_types/utils/hash/ripemd160.d.ts +11 -0
- package/_types/utils/hash/ripemd160.d.ts.map +1 -0
- package/_types/utils/hash/sha256.d.ts +11 -0
- package/_types/utils/hash/sha256.d.ts.map +1 -0
- package/_types/utils/index.d.ts +2 -0
- package/_types/utils/index.d.ts.map +1 -1
- package/actions/ens/getEnsName.ts +3 -2
- package/actions/index.ts +31 -0
- package/actions/public/getBlock.ts +1 -1
- package/actions/public/getTransaction.ts +1 -1
- package/actions/public/getTransactionReceipt.ts +1 -1
- package/actions/wallet/prepareTransactionRequest.ts +16 -9
- package/chains/definitions/arbitrumSepolia.ts +4 -0
- package/chains/definitions/base.ts +5 -0
- package/chains/definitions/baseGoerli.ts +5 -0
- package/chains/definitions/baseSepolia.ts +5 -0
- package/chains/definitions/fantomSonicTestnet.ts +23 -0
- package/chains/definitions/optimism.ts +5 -0
- package/chains/definitions/optimismGoerli.ts +5 -0
- package/chains/definitions/optimismSepolia.ts +5 -0
- package/chains/definitions/pgn.ts +13 -0
- package/chains/definitions/pgnTestnet.ts +8 -0
- package/chains/definitions/zilliqa.ts +23 -0
- package/chains/definitions/zilliqaTestnet.ts +23 -0
- package/chains/definitions/zkSyncSepoliaTestnet.ts +32 -0
- package/chains/definitions/zkSyncTestnet.ts +5 -0
- package/chains/definitions/zora.ts +5 -0
- package/chains/definitions/zoraSepolia.ts +5 -0
- package/chains/index.ts +9 -0
- package/chains/opStack/abis.ts +367 -0
- package/chains/opStack/actions/buildDepositTransaction.ts +11 -6
- package/chains/opStack/actions/buildInitiateWithdrawal.ts +118 -0
- package/chains/opStack/actions/buildProveWithdrawal.ts +149 -0
- package/chains/opStack/actions/depositTransaction.ts +50 -44
- package/chains/opStack/actions/estimateDepositTransactionGas.ts +138 -0
- package/chains/opStack/actions/estimateFinalizeWithdrawalGas.ts +118 -0
- package/chains/opStack/actions/estimateInitiateWithdrawalGas.ts +118 -0
- package/chains/opStack/actions/estimateProveWithdrawalGas.ts +139 -0
- package/chains/opStack/actions/finalizeWithdrawal.ts +130 -0
- package/chains/opStack/actions/getL2Output.ts +89 -0
- package/chains/opStack/actions/getTimeToFinalize.ts +122 -0
- package/chains/opStack/actions/getTimeToNextL2Output.ts +162 -0
- package/chains/opStack/actions/getTimeToProve.ts +79 -0
- package/chains/opStack/actions/getWithdrawalStatus.ts +152 -0
- package/chains/opStack/actions/initiateWithdrawal.ts +153 -0
- package/chains/opStack/actions/proveWithdrawal.ts +151 -0
- package/chains/opStack/actions/waitForNextL2Output.ts +111 -0
- package/chains/opStack/actions/waitToFinalize.ts +64 -0
- package/chains/opStack/actions/waitToProve.ts +99 -0
- package/chains/opStack/chains.ts +2 -0
- package/chains/opStack/decorators/publicL1.ts +514 -0
- package/chains/opStack/decorators/publicL2.ts +129 -37
- package/chains/opStack/decorators/walletL1.ts +71 -2
- package/chains/opStack/decorators/walletL2.ts +84 -0
- package/chains/opStack/errors/withdrawal.ts +15 -0
- package/chains/opStack/index.ts +112 -21
- package/chains/opStack/types/deposit.ts +28 -0
- package/chains/opStack/types/withdrawal.ts +23 -0
- package/chains/opStack/utils/extractWithdrawalMessageLogs.ts +36 -0
- package/chains/opStack/utils/getL2TransactionHash.ts +2 -2
- package/chains/opStack/utils/getWithdrawalHashStorageSlot.ts +29 -0
- package/chains/opStack/utils/getWithdrawals.ts +25 -0
- package/chains/opStack/utils/{fromOpaqueData.ts → opaqueDataToDepositData.ts} +9 -4
- package/clients/decorators/public.ts +2 -2
- package/clients/decorators/wallet.ts +2 -2
- package/errors/abi.ts +22 -1
- package/errors/version.ts +1 -1
- package/index.ts +40 -0
- package/package.json +1 -1
- package/types/account.ts +1 -1
- package/types/eip1193.ts +12 -0
- package/utils/abi/getAbiItem.ts +71 -2
- package/utils/formatters/block.ts +1 -1
- package/utils/formatters/transaction.ts +1 -1
- package/utils/formatters/transactionReceipt.ts +1 -1
- package/utils/hash/ripemd160.ts +31 -0
- package/utils/hash/sha256.ts +31 -0
- package/utils/index.ts +2 -0
- package/_cjs/chains/opStack/utils/fromOpaqueData.js.map +0 -1
- package/_esm/chains/opStack/utils/fromOpaqueData.js.map +0 -1
- package/_types/chains/opStack/utils/fromOpaqueData.d.ts +0 -15
- package/_types/chains/opStack/utils/fromOpaqueData.d.ts.map +0 -1
- package/chains/celo/package.json +0 -6
- package/chains/opStack/package.json +0 -6
- package/chains/zksync/package.json +0 -6
@@ -20,7 +20,7 @@ import { prepareTransactionRequest, } from '../../../actions/wallet/prepareTrans
|
|
20
20
|
* transport: http(),
|
21
21
|
* }).extend(publicActionsL2())
|
22
22
|
*
|
23
|
-
* const
|
23
|
+
* const args = await buildDepositTransaction(client, {
|
24
24
|
* account: '0xA0Cf798816D4b9b9866b5330EEa46a18382f251e',
|
25
25
|
* to: '0x70997970c51812dc3a010c7d01b50e0d17dc79c8',
|
26
26
|
* value: parseEther('1'),
|
@@ -40,7 +40,7 @@ export async function buildDepositTransaction(client, args) {
|
|
40
40
|
});
|
41
41
|
return {
|
42
42
|
account,
|
43
|
-
|
43
|
+
request: {
|
44
44
|
data: request.data,
|
45
45
|
gas: request.gas,
|
46
46
|
mint,
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"buildDepositTransaction.js","sourceRoot":"","sources":["../../../../chains/opStack/actions/buildDepositTransaction.ts"],"names":[],"mappings":"AACA,OAAO,EAEL,YAAY,GACb,MAAM,yCAAyC,CAAA;AAChD,OAAO,EAGL,yBAAyB,GAC1B,MAAM,sDAAsD,CAAA;
|
1
|
+
{"version":3,"file":"buildDepositTransaction.js","sourceRoot":"","sources":["../../../../chains/opStack/actions/buildDepositTransaction.ts"],"names":[],"mappings":"AACA,OAAO,EAEL,YAAY,GACb,MAAM,yCAAyC,CAAA;AAChD,OAAO,EAGL,yBAAyB,GAC1B,MAAM,sDAAsD,CAAA;AAuE7D;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAM3C,MAAyC,EACzC,IAKC;IAED,MAAM,EACJ,OAAO,EAAE,QAAQ,EACjB,KAAK,GAAG,MAAM,CAAC,KAAK,EACpB,GAAG,EACH,IAAI,EACJ,UAAU,EACV,IAAI,EACJ,EAAE,EACF,KAAK,GACN,GAAG,IAAI,CAAA;IAER,MAAM,OAAO,GAAG,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;IAE7D,MAAM,OAAO,GAAG,MAAM,yBAAyB,CAAC,MAAM,EAAE;QACtD,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO;QACnC,KAAK;QACL,GAAG;QACH,IAAI;QACJ,UAAU,EAAE,CAAC,KAAK,CAAC;QACnB,EAAE;QACF,KAAK;KACiC,CAAC,CAAA;IAEzC,OAAO;QACL,OAAO;QACP,OAAO,EAAE;YACP,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,GAAG,EAAE,OAAO,CAAC,GAAG;YAChB,IAAI;YACJ,UAAU;YACV,EAAE,EAAE,OAAO,CAAC,EAAE;YACd,KAAK,EAAE,OAAO,CAAC,KAAK;SACrB;QACD,WAAW,EAAE,KAAK;KACuD,CAAA;AAC7E,CAAC"}
|
@@ -0,0 +1,50 @@
|
|
1
|
+
import { parseAccount, } from '../../../accounts/utils/parseAccount.js';
|
2
|
+
import { prepareTransactionRequest, } from '../../../actions/wallet/prepareTransactionRequest.js';
|
3
|
+
/**
|
4
|
+
* Prepares parameters for a [withdrawal](https://community.optimism.io/docs/protocol/withdrawal-flow/#withdrawal-initiating-transaction) from an L2 to the L1.
|
5
|
+
*
|
6
|
+
* - Docs: https://viem.sh/op-stack/actions/buildInitiateWithdrawal.html
|
7
|
+
*
|
8
|
+
* @param client - Client to use
|
9
|
+
* @param parameters - {@link BuildInitiateWithdrawalParameters}
|
10
|
+
* @returns Parameters for `depositTransaction`. {@link DepositTransactionReturnType}
|
11
|
+
*
|
12
|
+
* @example
|
13
|
+
* import { createPublicClient, http, parseEther } from 'viem'
|
14
|
+
* import { mainnet } from 'viem/chains'
|
15
|
+
* import { buildInitiateWithdrawal } from 'viem/wallet'
|
16
|
+
*
|
17
|
+
* const client = createPublicClient({
|
18
|
+
* chain: mainnet,
|
19
|
+
* transport: http(),
|
20
|
+
* })
|
21
|
+
*
|
22
|
+
* const args = await buildInitiateWithdrawal(client, {
|
23
|
+
* account: '0xA0Cf798816D4b9b9866b5330EEa46a18382f251e',
|
24
|
+
* to: '0x70997970c51812dc3a010c7d01b50e0d17dc79c8',
|
25
|
+
* value: parseEther('1'),
|
26
|
+
* })
|
27
|
+
*/
|
28
|
+
export async function buildInitiateWithdrawal(client, args) {
|
29
|
+
const { account: account_, chain = client.chain, gas, data, to, value } = args;
|
30
|
+
const account = account_ ? parseAccount(account_) : undefined;
|
31
|
+
const request = await prepareTransactionRequest(client, {
|
32
|
+
account,
|
33
|
+
chain,
|
34
|
+
gas,
|
35
|
+
data,
|
36
|
+
parameters: ['gas'],
|
37
|
+
to,
|
38
|
+
value,
|
39
|
+
});
|
40
|
+
return {
|
41
|
+
account,
|
42
|
+
request: {
|
43
|
+
data: request.data,
|
44
|
+
gas: request.gas,
|
45
|
+
to: request.to,
|
46
|
+
value: request.value,
|
47
|
+
},
|
48
|
+
};
|
49
|
+
}
|
50
|
+
//# sourceMappingURL=buildInitiateWithdrawal.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"buildInitiateWithdrawal.js","sourceRoot":"","sources":["../../../../chains/opStack/actions/buildInitiateWithdrawal.ts"],"names":[],"mappings":"AACA,OAAO,EAEL,YAAY,GACb,MAAM,yCAAyC,CAAA;AAChD,OAAO,EAGL,yBAAyB,GAC1B,MAAM,sDAAsD,CAAA;AA8C7D;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAM3C,MAAyC,EACzC,IAKC;IAED,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,GAAG,MAAM,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,GAAG,IAAI,CAAA;IAE9E,MAAM,OAAO,GAAG,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;IAE7D,MAAM,OAAO,GAAG,MAAM,yBAAyB,CAAC,MAAM,EAAE;QACtD,OAAO;QACP,KAAK;QACL,GAAG;QACH,IAAI;QACJ,UAAU,EAAE,CAAC,KAAK,CAAC;QACnB,EAAE;QACF,KAAK;KACiC,CAAC,CAAA;IAEzC,OAAO;QACL,OAAO;QACP,OAAO,EAAE;YACP,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,GAAG,EAAE,OAAO,CAAC,GAAG;YAChB,EAAE,EAAE,OAAO,CAAC,EAAE;YACd,KAAK,EAAE,OAAO,CAAC,KAAK;SACrB;KAC6D,CAAA;AAClE,CAAC"}
|
@@ -0,0 +1,59 @@
|
|
1
|
+
import { getBlock, } from '../../../actions/public/getBlock.js';
|
2
|
+
import { getProof, } from '../../../actions/public/getProof.js';
|
3
|
+
import { contracts } from '../contracts.js';
|
4
|
+
import { getWithdrawalHashStorageSlot, } from '../utils/getWithdrawalHashStorageSlot.js';
|
5
|
+
const outputRootProofVersion = '0x0000000000000000000000000000000000000000000000000000000000000000';
|
6
|
+
/**
|
7
|
+
* Builds the transaction that proves a withdrawal was initiated on an L2. Used in the Withdrawal flow.
|
8
|
+
*
|
9
|
+
* - Docs: https://viem.sh/op-stack/actions/buildProveWithdrawal.html
|
10
|
+
*
|
11
|
+
* @param client - Client to use
|
12
|
+
* @param parameters - {@link BuildProveWithdrawalParameters}
|
13
|
+
* @returns The prove withdraw transaction request. {@link BuildProveWithdrawalReturnType}
|
14
|
+
*
|
15
|
+
* @example
|
16
|
+
* import { createPublicClient, http } from 'viem'
|
17
|
+
* import { optimism } from 'viem/chains'
|
18
|
+
* import { buildProveWithdrawal } from 'viem/op-stack'
|
19
|
+
*
|
20
|
+
* const publicClientL2 = createPublicClient({
|
21
|
+
* chain: optimism,
|
22
|
+
* transport: http(),
|
23
|
+
* })
|
24
|
+
*
|
25
|
+
* const args = await buildProveWithdrawal(publicClientL2, {
|
26
|
+
* output: { ... },
|
27
|
+
* withdrawal: { ... },
|
28
|
+
* })
|
29
|
+
*/
|
30
|
+
export async function buildProveWithdrawal(client, args) {
|
31
|
+
const { account, chain = client.chain, output, withdrawal } = args;
|
32
|
+
const { withdrawalHash } = withdrawal;
|
33
|
+
const { l2BlockNumber } = output;
|
34
|
+
const slot = getWithdrawalHashStorageSlot({ withdrawalHash });
|
35
|
+
const [proof, block] = await Promise.all([
|
36
|
+
getProof(client, {
|
37
|
+
address: contracts.l2ToL1MessagePasser.address,
|
38
|
+
storageKeys: [slot],
|
39
|
+
blockNumber: l2BlockNumber,
|
40
|
+
}),
|
41
|
+
getBlock(client, {
|
42
|
+
blockNumber: l2BlockNumber,
|
43
|
+
}),
|
44
|
+
]);
|
45
|
+
return {
|
46
|
+
account,
|
47
|
+
l2OutputIndex: output.outputIndex,
|
48
|
+
outputRootProof: {
|
49
|
+
latestBlockhash: block.hash,
|
50
|
+
messagePasserStorageRoot: proof.storageHash,
|
51
|
+
stateRoot: block.stateRoot,
|
52
|
+
version: outputRootProofVersion,
|
53
|
+
},
|
54
|
+
targetChain: chain,
|
55
|
+
withdrawalProof: proof.storageProof[0].proof,
|
56
|
+
withdrawal,
|
57
|
+
};
|
58
|
+
}
|
59
|
+
//# sourceMappingURL=buildProveWithdrawal.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"buildProveWithdrawal.js","sourceRoot":"","sources":["../../../../chains/opStack/actions/buildProveWithdrawal.ts"],"names":[],"mappings":"AACA,OAAO,EAEL,QAAQ,GACT,MAAM,qCAAqC,CAAA;AAC5C,OAAO,EAEL,QAAQ,GACT,MAAM,qCAAqC,CAAA;AAe5C,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAE3C,OAAO,EAEL,4BAA4B,GAC7B,MAAM,0CAA0C,CAAA;AAIjD,MAAM,sBAAsB,GAC1B,oEAA6E,CAAA;AAyC/E;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAMxC,MAAyC,EACzC,IAKC;IAID,MAAM,EAAE,OAAO,EAAE,KAAK,GAAG,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,IAAI,CAAA;IAClE,MAAM,EAAE,cAAc,EAAE,GAAG,UAAU,CAAA;IACrC,MAAM,EAAE,aAAa,EAAE,GAAG,MAAM,CAAA;IAEhC,MAAM,IAAI,GAAG,4BAA4B,CAAC,EAAE,cAAc,EAAE,CAAC,CAAA;IAC7D,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QACvC,QAAQ,CAAC,MAAM,EAAE;YACf,OAAO,EAAE,SAAS,CAAC,mBAAmB,CAAC,OAAO;YAC9C,WAAW,EAAE,CAAC,IAAI,CAAC;YACnB,WAAW,EAAE,aAAa;SAC3B,CAAC;QACF,QAAQ,CAAC,MAAM,EAAE;YACf,WAAW,EAAE,aAAa;SAC3B,CAAC;KACH,CAAC,CAAA;IAEF,OAAO;QACL,OAAO;QACP,aAAa,EAAE,MAAM,CAAC,WAAW;QACjC,eAAe,EAAE;YACf,eAAe,EAAE,KAAK,CAAC,IAAI;YAC3B,wBAAwB,EAAE,KAAK,CAAC,WAAW;YAC3C,SAAS,EAAE,KAAK,CAAC,SAAS;YAC1B,OAAO,EAAE,sBAAsB;SAChC;QACD,WAAW,EAAE,KAAK;QAClB,eAAe,EAAE,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,KAAK;QAC5C,UAAU;KAMX,CAAA;AACH,CAAC"}
|
@@ -1,6 +1,7 @@
|
|
1
1
|
import { writeContract, } from '../../../actions/wallet/writeContract.js';
|
2
2
|
import { zeroAddress } from '../../../constants/address.js';
|
3
3
|
import { portalAbi } from '../abis.js';
|
4
|
+
import { estimateDepositTransactionGas, } from './estimateDepositTransactionGas.js';
|
4
5
|
/**
|
5
6
|
* Initiates a [deposit transaction](https://github.com/ethereum-optimism/optimism/blob/develop/specs/deposits.md) on an L1, which executes a transaction on L2.
|
6
7
|
*
|
@@ -16,17 +17,16 @@ import { portalAbi } from '../abis.js';
|
|
16
17
|
* @example
|
17
18
|
* import { createWalletClient, custom, parseEther } from 'viem'
|
18
19
|
* import { base, mainnet } from 'viem/chains'
|
19
|
-
* import {
|
20
|
-
* import { depositTransaction } from 'viem/wallet'
|
20
|
+
* import { depositTransaction } from 'viem/op-stack'
|
21
21
|
*
|
22
22
|
* const client = createWalletClient({
|
23
23
|
* chain: mainnet,
|
24
24
|
* transport: custom(window.ethereum),
|
25
|
-
* })
|
25
|
+
* })
|
26
26
|
*
|
27
27
|
* const hash = await depositTransaction(client, {
|
28
28
|
* account: '0xA0Cf798816D4b9b9866b5330EEa46a18382f251e',
|
29
|
-
*
|
29
|
+
* request: {
|
30
30
|
* gas: 21_000n,
|
31
31
|
* to: '0x70997970c51812dc3a010c7d01b50e0d17dc79c8',
|
32
32
|
* value: parseEther('1'),
|
@@ -39,17 +39,16 @@ import { portalAbi } from '../abis.js';
|
|
39
39
|
* import { createWalletClient, http } from 'viem'
|
40
40
|
* import { privateKeyToAccount } from 'viem/accounts'
|
41
41
|
* import { base, mainnet } from 'viem/chains'
|
42
|
-
* import {
|
43
|
-
* import { depositTransaction } from 'viem/wallet'
|
42
|
+
* import { depositTransaction } from 'viem/op-stack'
|
44
43
|
*
|
45
44
|
* const client = createWalletClient({
|
46
45
|
* account: privateKeyToAccount('0x…'),
|
47
46
|
* chain: mainnet,
|
48
47
|
* transport: http(),
|
49
|
-
* })
|
48
|
+
* })
|
50
49
|
*
|
51
50
|
* const hash = await depositTransaction(client, {
|
52
|
-
*
|
51
|
+
* request: {
|
53
52
|
* gas: 21_000n,
|
54
53
|
* to: '0x70997970c51812dc3a010c7d01b50e0d17dc79c8',
|
55
54
|
* value: parseEther('1'),
|
@@ -57,17 +56,20 @@ import { portalAbi } from '../abis.js';
|
|
57
56
|
* targetChain: base,
|
58
57
|
* })
|
59
58
|
*/
|
60
|
-
export function depositTransaction(client,
|
61
|
-
const { account,
|
59
|
+
export async function depositTransaction(client, parameters) {
|
60
|
+
const { account, chain = client.chain, gas, maxFeePerGas, maxPriorityFeePerGas, nonce, request: { data = '0x', gas: l2Gas, isCreation = false, mint, to = '0x', value, }, targetChain, } = parameters;
|
62
61
|
const portalAddress = (() => {
|
63
|
-
if (
|
64
|
-
return
|
62
|
+
if (parameters.portalAddress)
|
63
|
+
return parameters.portalAddress;
|
65
64
|
if (chain)
|
66
65
|
return targetChain.contracts.portal[chain.id].address;
|
67
66
|
return Object.values(targetChain.contracts.portal)[0].address;
|
68
67
|
})();
|
68
|
+
const gas_ = typeof gas !== 'number' && gas !== null
|
69
|
+
? await estimateDepositTransactionGas(client, parameters)
|
70
|
+
: undefined;
|
69
71
|
return writeContract(client, {
|
70
|
-
account,
|
72
|
+
account: account,
|
71
73
|
abi: portalAbi,
|
72
74
|
address: portalAddress,
|
73
75
|
chain,
|
@@ -75,7 +77,7 @@ export function depositTransaction(client, args) {
|
|
75
77
|
args: [
|
76
78
|
isCreation ? zeroAddress : to,
|
77
79
|
value ?? mint ?? 0n,
|
78
|
-
|
80
|
+
l2Gas,
|
79
81
|
isCreation,
|
80
82
|
data,
|
81
83
|
],
|
@@ -83,6 +85,7 @@ export function depositTransaction(client, args) {
|
|
83
85
|
maxPriorityFeePerGas,
|
84
86
|
nonce,
|
85
87
|
value: mint,
|
88
|
+
gas: gas_,
|
86
89
|
});
|
87
90
|
}
|
88
91
|
//# sourceMappingURL=depositTransaction.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"depositTransaction.js","sourceRoot":"","sources":["../../../../chains/opStack/actions/depositTransaction.ts"],"names":[],"mappings":"AACA,OAAO,
|
1
|
+
{"version":3,"file":"depositTransaction.js","sourceRoot":"","sources":["../../../../chains/opStack/actions/depositTransaction.ts"],"names":[],"mappings":"AACA,OAAO,EAGL,aAAa,GACd,MAAM,0CAA0C,CAAA;AAGjD,OAAO,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAA;AAW3D,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAA;AAGtC,OAAO,EAGL,6BAA6B,GAC9B,MAAM,oCAAoC,CAAA;AAqC3C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqDG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAKtC,MAAyC,EACzC,UAAuE;IAEvE,MAAM,EACJ,OAAO,EACP,KAAK,GAAG,MAAM,CAAC,KAAK,EACpB,GAAG,EACH,YAAY,EACZ,oBAAoB,EACpB,KAAK,EACL,OAAO,EAAE,EACP,IAAI,GAAG,IAAI,EACX,GAAG,EAAE,KAAK,EACV,UAAU,GAAG,KAAK,EAClB,IAAI,EACJ,EAAE,GAAG,IAAI,EACT,KAAK,GACN,EACD,WAAW,GACZ,GAAG,UAAU,CAAA;IAEd,MAAM,aAAa,GAAG,CAAC,GAAG,EAAE;QAC1B,IAAI,UAAU,CAAC,aAAa;YAAE,OAAO,UAAU,CAAC,aAAa,CAAA;QAC7D,IAAI,KAAK;YAAE,OAAO,WAAY,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,CAAA;QACjE,OAAO,MAAM,CAAC,MAAM,CAAC,WAAY,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAA;IAChE,CAAC,CAAC,EAAE,CAAA;IAEJ,MAAM,IAAI,GACR,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI;QACrC,CAAC,CAAC,MAAM,6BAA6B,CACjC,MAAM,EACN,UAAqD,CACtD;QACH,CAAC,CAAC,SAAS,CAAA;IAEf,OAAO,aAAa,CAAC,MAAM,EAAE;QAC3B,OAAO,EAAE,OAAQ;QACjB,GAAG,EAAE,SAAS;QACd,OAAO,EAAE,aAAa;QACtB,KAAK;QACL,YAAY,EAAE,oBAAoB;QAClC,IAAI,EAAE;YACJ,UAAU,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE;YAC7B,KAAK,IAAI,IAAI,IAAI,EAAE;YACnB,KAAK;YACL,UAAU;YACV,IAAI;SACL;QACD,YAAY;QACZ,oBAAoB;QACpB,KAAK;QACL,KAAK,EAAE,IAAI;QACX,GAAG,EAAE,IAAI;KAC+B,CAAC,CAAA;AAC7C,CAAC"}
|
@@ -0,0 +1,62 @@
|
|
1
|
+
import { estimateContractGas, } from '../../../actions/public/estimateContractGas.js';
|
2
|
+
import { zeroAddress } from '../../../constants/address.js';
|
3
|
+
import { portalAbi } from '../abis.js';
|
4
|
+
/**
|
5
|
+
* Estimates gas required to initiate a [deposit transaction](https://github.com/ethereum-optimism/optimism/blob/develop/specs/deposits.md) on an L1, which executes a transaction on L2.
|
6
|
+
*
|
7
|
+
* - Docs: https://viem.sh/op-stack/actions/estimateDepositTransactionGas.html
|
8
|
+
*
|
9
|
+
* @param client - Client to use
|
10
|
+
* @param parameters - {@link EstimateDepositTransactionGasParameters}
|
11
|
+
* @returns The L1 transaction hash. {@link EstimateDepositTransactionGasReturnType}
|
12
|
+
*
|
13
|
+
* @example
|
14
|
+
* import { createPublicClient, custom, parseEther } from 'viem'
|
15
|
+
* import { base, mainnet } from 'viem/chains'
|
16
|
+
* import { estimateDepositTransactionGas } from 'viem/op-stack'
|
17
|
+
*
|
18
|
+
* const client = createPublicClient({
|
19
|
+
* chain: mainnet,
|
20
|
+
* transport: custom(window.ethereum),
|
21
|
+
* })
|
22
|
+
*
|
23
|
+
* const gas = await estimateDepositTransactionGas(client, {
|
24
|
+
* account: '0xA0Cf798816D4b9b9866b5330EEa46a18382f251e',
|
25
|
+
* args: {
|
26
|
+
* gas: 21_000n,
|
27
|
+
* to: '0x70997970c51812dc3a010c7d01b50e0d17dc79c8',
|
28
|
+
* value: parseEther('1'),
|
29
|
+
* },
|
30
|
+
* targetChain: base,
|
31
|
+
* })
|
32
|
+
*/
|
33
|
+
export async function estimateDepositTransactionGas(client, parameters) {
|
34
|
+
const { account, chain = client.chain, gas, maxFeePerGas, maxPriorityFeePerGas, nonce, request: { data = '0x', gas: l2Gas, isCreation = false, mint, to = '0x', value, }, targetChain, } = parameters;
|
35
|
+
const portalAddress = (() => {
|
36
|
+
if (parameters.portalAddress)
|
37
|
+
return parameters.portalAddress;
|
38
|
+
if (chain)
|
39
|
+
return targetChain.contracts.portal[chain.id].address;
|
40
|
+
return Object.values(targetChain.contracts.portal)[0].address;
|
41
|
+
})();
|
42
|
+
return estimateContractGas(client, {
|
43
|
+
account,
|
44
|
+
abi: portalAbi,
|
45
|
+
address: portalAddress,
|
46
|
+
chain,
|
47
|
+
functionName: 'depositTransaction',
|
48
|
+
args: [
|
49
|
+
isCreation ? zeroAddress : to,
|
50
|
+
value ?? mint ?? 0n,
|
51
|
+
l2Gas,
|
52
|
+
isCreation,
|
53
|
+
data,
|
54
|
+
],
|
55
|
+
gas,
|
56
|
+
maxFeePerGas,
|
57
|
+
maxPriorityFeePerGas,
|
58
|
+
nonce,
|
59
|
+
value: mint,
|
60
|
+
});
|
61
|
+
}
|
62
|
+
//# sourceMappingURL=estimateDepositTransactionGas.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"estimateDepositTransactionGas.js","sourceRoot":"","sources":["../../../../chains/opStack/actions/estimateDepositTransactionGas.ts"],"names":[],"mappings":"AACA,OAAO,EAGL,mBAAmB,GACpB,MAAM,gDAAgD,CAAA;AAGvD,OAAO,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAA;AAU3D,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAA;AAmCtC;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,MAAM,CAAC,KAAK,UAAU,6BAA6B,CAKjD,MAAyC,EACzC,UAIC;IAED,MAAM,EACJ,OAAO,EACP,KAAK,GAAG,MAAM,CAAC,KAAK,EACpB,GAAG,EACH,YAAY,EACZ,oBAAoB,EACpB,KAAK,EACL,OAAO,EAAE,EACP,IAAI,GAAG,IAAI,EACX,GAAG,EAAE,KAAK,EACV,UAAU,GAAG,KAAK,EAClB,IAAI,EACJ,EAAE,GAAG,IAAI,EACT,KAAK,GACN,EACD,WAAW,GACZ,GAAG,UAAU,CAAA;IAEd,MAAM,aAAa,GAAG,CAAC,GAAG,EAAE;QAC1B,IAAI,UAAU,CAAC,aAAa;YAAE,OAAO,UAAU,CAAC,aAAa,CAAA;QAC7D,IAAI,KAAK;YAAE,OAAO,WAAY,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,CAAA;QACjE,OAAO,MAAM,CAAC,MAAM,CAAC,WAAY,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAA;IAChE,CAAC,CAAC,EAAE,CAAA;IAEJ,OAAO,mBAAmB,CAAC,MAAM,EAAE;QACjC,OAAO;QACP,GAAG,EAAE,SAAS;QACd,OAAO,EAAE,aAAa;QACtB,KAAK;QACL,YAAY,EAAE,oBAAoB;QAClC,IAAI,EAAE;YACJ,UAAU,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE;YAC7B,KAAK,IAAI,IAAI,IAAI,EAAE;YACnB,KAAK;YACL,UAAU;YACV,IAAI;SACL;QACD,GAAG;QACH,YAAY;QACZ,oBAAoB;QACpB,KAAK;QACL,KAAK,EAAE,IAAI;KACqB,CAAC,CAAA;AACrC,CAAC"}
|
@@ -0,0 +1,50 @@
|
|
1
|
+
import { estimateContractGas, } from '../../../actions/public/estimateContractGas.js';
|
2
|
+
import { portalAbi } from '../abis.js';
|
3
|
+
/**
|
4
|
+
* Estimates gas required to finalize a withdrawal that occurred on an L2.
|
5
|
+
*
|
6
|
+
* - Docs: https://viem.sh/op-stack/actions/estimateFinalizeWithdrawalGas.html
|
7
|
+
*
|
8
|
+
* @param client - Client to use
|
9
|
+
* @param parameters - {@link EstimateFinalizeWithdrawalGasParameters}
|
10
|
+
* @returns Estimated gas. {@link EstimateFinalizeWithdrawalGasReturnType}
|
11
|
+
*
|
12
|
+
* @example
|
13
|
+
* import { createPublicClient, http, parseEther } from 'viem'
|
14
|
+
* import { base, mainnet } from 'viem/chains'
|
15
|
+
* import { estimateFinalizeWithdrawalGas } from 'viem/op-stack'
|
16
|
+
*
|
17
|
+
* const client = createPublicClient({
|
18
|
+
* chain: mainnet,
|
19
|
+
* transport: http(),
|
20
|
+
* })
|
21
|
+
*
|
22
|
+
* const gas = await estimateFinalizeWithdrawalGas(client, {
|
23
|
+
* account: '0xA0Cf798816D4b9b9866b5330EEa46a18382f251e',
|
24
|
+
* targetChain: optimism,
|
25
|
+
* withdrawal: { ... },
|
26
|
+
* })
|
27
|
+
*/
|
28
|
+
export async function estimateFinalizeWithdrawalGas(client, parameters) {
|
29
|
+
const { account, chain = client.chain, gas, maxFeePerGas, maxPriorityFeePerGas, nonce, targetChain, withdrawal, } = parameters;
|
30
|
+
const portalAddress = (() => {
|
31
|
+
if (parameters.portalAddress)
|
32
|
+
return parameters.portalAddress;
|
33
|
+
if (chain)
|
34
|
+
return targetChain.contracts.portal[chain.id].address;
|
35
|
+
return Object.values(targetChain.contracts.portal)[0].address;
|
36
|
+
})();
|
37
|
+
return estimateContractGas(client, {
|
38
|
+
account,
|
39
|
+
abi: portalAbi,
|
40
|
+
address: portalAddress,
|
41
|
+
chain,
|
42
|
+
functionName: 'finalizeWithdrawalTransaction',
|
43
|
+
args: [withdrawal],
|
44
|
+
gas,
|
45
|
+
maxFeePerGas,
|
46
|
+
maxPriorityFeePerGas,
|
47
|
+
nonce,
|
48
|
+
});
|
49
|
+
}
|
50
|
+
//# sourceMappingURL=estimateFinalizeWithdrawalGas.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"estimateFinalizeWithdrawalGas.js","sourceRoot":"","sources":["../../../../chains/opStack/actions/estimateFinalizeWithdrawalGas.ts"],"names":[],"mappings":"AACA,OAAO,EAGL,mBAAmB,GACpB,MAAM,gDAAgD,CAAA;AAYvD,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAA;AAkCtC;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,MAAM,CAAC,KAAK,UAAU,6BAA6B,CAKjD,MAAyC,EACzC,UAIC;IAED,MAAM,EACJ,OAAO,EACP,KAAK,GAAG,MAAM,CAAC,KAAK,EACpB,GAAG,EACH,YAAY,EACZ,oBAAoB,EACpB,KAAK,EACL,WAAW,EACX,UAAU,GACX,GAAG,UAAU,CAAA;IAEd,MAAM,aAAa,GAAG,CAAC,GAAG,EAAE;QAC1B,IAAI,UAAU,CAAC,aAAa;YAAE,OAAO,UAAU,CAAC,aAAa,CAAA;QAC7D,IAAI,KAAK;YAAE,OAAO,WAAY,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,CAAA;QACjE,OAAO,MAAM,CAAC,MAAM,CAAC,WAAY,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAA;IAChE,CAAC,CAAC,EAAE,CAAA;IAEJ,OAAO,mBAAmB,CAAC,MAAM,EAAE;QACjC,OAAO;QACP,GAAG,EAAE,SAAS;QACd,OAAO,EAAE,aAAa;QACtB,KAAK;QACL,YAAY,EAAE,+BAA+B;QAC7C,IAAI,EAAE,CAAC,UAAU,CAAC;QAClB,GAAG;QACH,YAAY;QACZ,oBAAoB;QACpB,KAAK;KAC2B,CAAC,CAAA;AACrC,CAAC"}
|
@@ -0,0 +1,48 @@
|
|
1
|
+
import { estimateContractGas, } from '../../../actions/public/estimateContractGas.js';
|
2
|
+
import { l2ToL1MessagePasserAbi } from '../abis.js';
|
3
|
+
import { contracts } from '../contracts.js';
|
4
|
+
/**
|
5
|
+
* Estimates gas required to initiate a [withdrawal](https://community.optimism.io/docs/protocol/withdrawal-flow/#withdrawal-initiating-transaction) on an L2 to the L1.
|
6
|
+
*
|
7
|
+
* - Docs: https://viem.sh/op-stack/actions/estimateInitiateWithdrawalGas.html
|
8
|
+
*
|
9
|
+
* @param client - Client to use
|
10
|
+
* @param parameters - {@link EstimateInitiateWithdrawalGasParameters}
|
11
|
+
* @returns Estimated gas. {@link EstimateInitiateWithdrawalGasReturnType}
|
12
|
+
*
|
13
|
+
* @example
|
14
|
+
* import { createPublicClient, http, parseEther } from 'viem'
|
15
|
+
* import { base, mainnet } from 'viem/chains'
|
16
|
+
* import { estimateInitiateWithdrawalGas } from 'viem/op-stack'
|
17
|
+
*
|
18
|
+
* const client = createPublicClient({
|
19
|
+
* chain: mainnet,
|
20
|
+
* transport: http(),
|
21
|
+
* })
|
22
|
+
*
|
23
|
+
* const gas = await estimateInitiateWithdrawalGas(client, {
|
24
|
+
* account: '0xA0Cf798816D4b9b9866b5330EEa46a18382f251e',
|
25
|
+
* request: {
|
26
|
+
* gas: 21_000n,
|
27
|
+
* to: '0x70997970c51812dc3a010c7d01b50e0d17dc79c8',
|
28
|
+
* value: parseEther('1'),
|
29
|
+
* },
|
30
|
+
* })
|
31
|
+
*/
|
32
|
+
export async function estimateInitiateWithdrawalGas(client, parameters) {
|
33
|
+
const { account, chain = client.chain, gas, maxFeePerGas, maxPriorityFeePerGas, nonce, request: { data = '0x', gas: l1Gas, to, value }, } = parameters;
|
34
|
+
return estimateContractGas(client, {
|
35
|
+
account,
|
36
|
+
abi: l2ToL1MessagePasserAbi,
|
37
|
+
address: contracts.l2ToL1MessagePasser.address,
|
38
|
+
chain,
|
39
|
+
functionName: 'initiateWithdrawal',
|
40
|
+
args: [to, l1Gas, data],
|
41
|
+
gas,
|
42
|
+
maxFeePerGas,
|
43
|
+
maxPriorityFeePerGas,
|
44
|
+
nonce,
|
45
|
+
value,
|
46
|
+
});
|
47
|
+
}
|
48
|
+
//# sourceMappingURL=estimateInitiateWithdrawalGas.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"estimateInitiateWithdrawalGas.js","sourceRoot":"","sources":["../../../../chains/opStack/actions/estimateInitiateWithdrawalGas.ts"],"names":[],"mappings":"AACA,OAAO,EAGL,mBAAmB,GACpB,MAAM,gDAAgD,CAAA;AAYvD,OAAO,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAA;AACnD,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAoC3C;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,MAAM,CAAC,KAAK,UAAU,6BAA6B,CAKjD,MAAyC,EACzC,UAIC;IAED,MAAM,EACJ,OAAO,EACP,KAAK,GAAG,MAAM,CAAC,KAAK,EACpB,GAAG,EACH,YAAY,EACZ,oBAAoB,EACpB,KAAK,EACL,OAAO,EAAE,EAAE,IAAI,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,GAChD,GAAG,UAAU,CAAA;IAEd,OAAO,mBAAmB,CAAC,MAAM,EAAE;QACjC,OAAO;QACP,GAAG,EAAE,sBAAsB;QAC3B,OAAO,EAAE,SAAS,CAAC,mBAAmB,CAAC,OAAO;QAC9C,KAAK;QACL,YAAY,EAAE,oBAAoB;QAClC,IAAI,EAAE,CAAC,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC;QACvB,GAAG;QACH,YAAY;QACZ,oBAAoB;QACpB,KAAK;QACL,KAAK;KAC2B,CAAC,CAAA;AACrC,CAAC"}
|
@@ -0,0 +1,53 @@
|
|
1
|
+
import { estimateContractGas, } from '../../../actions/public/estimateContractGas.js';
|
2
|
+
import { portalAbi } from '../abis.js';
|
3
|
+
/**
|
4
|
+
* Estimates gas required to prove a withdrawal that occurred on an L2.
|
5
|
+
*
|
6
|
+
* - Docs: https://viem.sh/op-stack/actions/estimateProveWithdrawalGas.html
|
7
|
+
*
|
8
|
+
* @param client - Client to use
|
9
|
+
* @param parameters - {@link EstimateProveWithdrawalGasParameters}
|
10
|
+
* @returns Estimated gas. {@link EstimateProveWithdrawalGasReturnType}
|
11
|
+
*
|
12
|
+
* @example
|
13
|
+
* import { createPublicClient, http, parseEther } from 'viem'
|
14
|
+
* import { base, mainnet } from 'viem/chains'
|
15
|
+
* import { estimateProveWithdrawalGas } from 'viem/op-stack'
|
16
|
+
*
|
17
|
+
* const client = createPublicClient({
|
18
|
+
* chain: mainnet,
|
19
|
+
* transport: http(),
|
20
|
+
* })
|
21
|
+
*
|
22
|
+
* const gas = await estimateProveWithdrawalGas(client, {
|
23
|
+
* account: '0xA0Cf798816D4b9b9866b5330EEa46a18382f251e',
|
24
|
+
* l2OutputIndex: 4529n,
|
25
|
+
* outputRootProof: { ... },
|
26
|
+
* targetChain: optimism,
|
27
|
+
* withdrawalProof: [ ... ],
|
28
|
+
* withdrawal: { ... },
|
29
|
+
* })
|
30
|
+
*/
|
31
|
+
export async function estimateProveWithdrawalGas(client, parameters) {
|
32
|
+
const { account, chain = client.chain, gas, l2OutputIndex, maxFeePerGas, maxPriorityFeePerGas, nonce, outputRootProof, targetChain, withdrawalProof, withdrawal, } = parameters;
|
33
|
+
const portalAddress = (() => {
|
34
|
+
if (parameters.portalAddress)
|
35
|
+
return parameters.portalAddress;
|
36
|
+
if (chain)
|
37
|
+
return targetChain.contracts.portal[chain.id].address;
|
38
|
+
return Object.values(targetChain.contracts.portal)[0].address;
|
39
|
+
})();
|
40
|
+
return estimateContractGas(client, {
|
41
|
+
account,
|
42
|
+
abi: portalAbi,
|
43
|
+
address: portalAddress,
|
44
|
+
chain,
|
45
|
+
functionName: 'proveWithdrawalTransaction',
|
46
|
+
args: [withdrawal, l2OutputIndex, outputRootProof, withdrawalProof],
|
47
|
+
gas,
|
48
|
+
maxFeePerGas,
|
49
|
+
maxPriorityFeePerGas,
|
50
|
+
nonce,
|
51
|
+
});
|
52
|
+
}
|
53
|
+
//# sourceMappingURL=estimateProveWithdrawalGas.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"estimateProveWithdrawalGas.js","sourceRoot":"","sources":["../../../../chains/opStack/actions/estimateProveWithdrawalGas.ts"],"names":[],"mappings":"AACA,OAAO,EAGL,mBAAmB,GACpB,MAAM,gDAAgD,CAAA;AAavD,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAA;AAgDtC;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,MAAM,CAAC,KAAK,UAAU,0BAA0B,CAK9C,MAAyC,EACzC,UAIC;IAED,MAAM,EACJ,OAAO,EACP,KAAK,GAAG,MAAM,CAAC,KAAK,EACpB,GAAG,EACH,aAAa,EACb,YAAY,EACZ,oBAAoB,EACpB,KAAK,EACL,eAAe,EACf,WAAW,EACX,eAAe,EACf,UAAU,GACX,GAAG,UAAU,CAAA;IAEd,MAAM,aAAa,GAAG,CAAC,GAAG,EAAE;QAC1B,IAAI,UAAU,CAAC,aAAa;YAAE,OAAO,UAAU,CAAC,aAAa,CAAA;QAC7D,IAAI,KAAK;YAAE,OAAO,WAAY,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,CAAA;QACjE,OAAO,MAAM,CAAC,MAAM,CAAC,WAAY,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAA;IAChE,CAAC,CAAC,EAAE,CAAA;IAEJ,OAAO,mBAAmB,CAAC,MAAM,EAAE;QACjC,OAAO;QACP,GAAG,EAAE,SAAS;QACd,OAAO,EAAE,aAAa;QACtB,KAAK;QACL,YAAY,EAAE,4BAA4B;QAC1C,IAAI,EAAE,CAAC,UAAU,EAAE,aAAa,EAAE,eAAe,EAAE,eAAe,CAAC;QACnE,GAAG;QACH,YAAY;QACZ,oBAAoB;QACpB,KAAK;KAC2B,CAAC,CAAA;AACrC,CAAC"}
|
@@ -0,0 +1,53 @@
|
|
1
|
+
import { writeContract, } from '../../../actions/wallet/writeContract.js';
|
2
|
+
import { portalAbi } from '../abis.js';
|
3
|
+
import { estimateFinalizeWithdrawalGas, } from './estimateFinalizeWithdrawalGas.js';
|
4
|
+
/**
|
5
|
+
* Finalizes a withdrawal that occurred on an L2. Used in the Withdrawal flow.
|
6
|
+
*
|
7
|
+
* - Docs: https://viem.sh/op-stack/actions/finalizeWithdrawal.html
|
8
|
+
*
|
9
|
+
* @param client - Client to use
|
10
|
+
* @param parameters - {@link FinalizeWithdrawalParameters}
|
11
|
+
* @returns The finalize transaction hash. {@link FinalizeWithdrawalReturnType}
|
12
|
+
*
|
13
|
+
* @example
|
14
|
+
* import { createWalletClient, http } from 'viem'
|
15
|
+
* import { mainnet, optimism } from 'viem/chains'
|
16
|
+
* import { finalizeWithdrawal } from 'viem/op-stack'
|
17
|
+
*
|
18
|
+
* const walletClientL1 = createWalletClient({
|
19
|
+
* chain: mainnet,
|
20
|
+
* transport: http(),
|
21
|
+
* })
|
22
|
+
*
|
23
|
+
* const request = await finalizeWithdrawal(walletClientL1, {
|
24
|
+
* targetChain: optimism,
|
25
|
+
* withdrawal: { ... },
|
26
|
+
* })
|
27
|
+
*/
|
28
|
+
export async function finalizeWithdrawal(client, parameters) {
|
29
|
+
const { account, chain = client.chain, gas, maxFeePerGas, maxPriorityFeePerGas, nonce, targetChain, withdrawal, } = parameters;
|
30
|
+
const portalAddress = (() => {
|
31
|
+
if (parameters.portalAddress)
|
32
|
+
return parameters.portalAddress;
|
33
|
+
if (chain)
|
34
|
+
return targetChain.contracts.portal[chain.id].address;
|
35
|
+
return Object.values(targetChain.contracts.portal)[0].address;
|
36
|
+
})();
|
37
|
+
const gas_ = typeof gas !== 'number' && gas !== null
|
38
|
+
? await estimateFinalizeWithdrawalGas(client, parameters)
|
39
|
+
: undefined;
|
40
|
+
return writeContract(client, {
|
41
|
+
account,
|
42
|
+
abi: portalAbi,
|
43
|
+
address: portalAddress,
|
44
|
+
chain,
|
45
|
+
functionName: 'finalizeWithdrawalTransaction',
|
46
|
+
args: [withdrawal],
|
47
|
+
gas: gas_,
|
48
|
+
maxFeePerGas,
|
49
|
+
maxPriorityFeePerGas,
|
50
|
+
nonce,
|
51
|
+
});
|
52
|
+
}
|
53
|
+
//# sourceMappingURL=finalizeWithdrawal.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"finalizeWithdrawal.js","sourceRoot":"","sources":["../../../../chains/opStack/actions/finalizeWithdrawal.ts"],"names":[],"mappings":"AACA,OAAO,EAEL,aAAa,GACd,MAAM,0CAA0C,CAAA;AAajD,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAA;AAGtC,OAAO,EAGL,6BAA6B,GAC9B,MAAM,oCAAoC,CAAA;AAoC3C;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAKtC,MAAyC,EACzC,UAAuE;IAEvE,MAAM,EACJ,OAAO,EACP,KAAK,GAAG,MAAM,CAAC,KAAK,EACpB,GAAG,EACH,YAAY,EACZ,oBAAoB,EACpB,KAAK,EACL,WAAW,EACX,UAAU,GACX,GAAG,UAAU,CAAA;IAEd,MAAM,aAAa,GAAG,CAAC,GAAG,EAAE;QAC1B,IAAI,UAAU,CAAC,aAAa;YAAE,OAAO,UAAU,CAAC,aAAa,CAAA;QAC7D,IAAI,KAAK;YAAE,OAAO,WAAY,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,CAAA;QACjE,OAAO,MAAM,CAAC,MAAM,CAAC,WAAY,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAA;IAChE,CAAC,CAAC,EAAE,CAAA;IAEJ,MAAM,IAAI,GACR,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI;QACrC,CAAC,CAAC,MAAM,6BAA6B,CACjC,MAAM,EACN,UAAqD,CACtD;QACH,CAAC,CAAC,SAAS,CAAA;IAEf,OAAO,aAAa,CAAC,MAAM,EAAE;QAC3B,OAAO;QACP,GAAG,EAAE,SAAS;QACd,OAAO,EAAE,aAAa;QACtB,KAAK;QACL,YAAY,EAAE,+BAA+B;QAC7C,IAAI,EAAE,CAAC,UAAU,CAAC;QAClB,GAAG,EAAE,IAAI;QACT,YAAY;QACZ,oBAAoB;QACpB,KAAK;KACN,CAAC,CAAA;AACJ,CAAC"}
|
@@ -0,0 +1,50 @@
|
|
1
|
+
import { readContract, } from '../../../actions/public/readContract.js';
|
2
|
+
import { l2OutputOracleAbi } from '../abis.js';
|
3
|
+
/**
|
4
|
+
* Retrieves the first L2 output proposal that occurred after a provided block number.
|
5
|
+
*
|
6
|
+
* - Docs: https://viem.sh/op-stack/actions/getL2Output.html
|
7
|
+
*
|
8
|
+
* @param client - Client to use
|
9
|
+
* @param parameters - {@link GetL2OutputParameters}
|
10
|
+
* @returns The L2 output. {@link GetL2OutputReturnType}
|
11
|
+
*
|
12
|
+
* @example
|
13
|
+
* import { createPublicClient, http } from 'viem'
|
14
|
+
* import { mainnet, optimism } from 'viem/chains'
|
15
|
+
* import { getL2Output } from 'viem/op-stack'
|
16
|
+
*
|
17
|
+
* const publicClientL1 = createPublicClient({
|
18
|
+
* chain: mainnet,
|
19
|
+
* transport: http(),
|
20
|
+
* })
|
21
|
+
*
|
22
|
+
* const output = await getL2Output(publicClientL1, {
|
23
|
+
* l2BlockNumber: 69420n,
|
24
|
+
* targetChain: optimism
|
25
|
+
* })
|
26
|
+
*/
|
27
|
+
export async function getL2Output(client, parameters) {
|
28
|
+
const { chain = client.chain, l2BlockNumber, targetChain } = parameters;
|
29
|
+
const l2OutputOracleAddress = (() => {
|
30
|
+
if (parameters.l2OutputOracleAddress)
|
31
|
+
return parameters.l2OutputOracleAddress;
|
32
|
+
if (chain)
|
33
|
+
return targetChain.contracts.l2OutputOracle[chain.id].address;
|
34
|
+
return Object.values(targetChain.contracts.l2OutputOracle)[0].address;
|
35
|
+
})();
|
36
|
+
const outputIndex = await readContract(client, {
|
37
|
+
address: l2OutputOracleAddress,
|
38
|
+
abi: l2OutputOracleAbi,
|
39
|
+
functionName: 'getL2OutputIndexAfter',
|
40
|
+
args: [l2BlockNumber],
|
41
|
+
});
|
42
|
+
const output = await readContract(client, {
|
43
|
+
address: l2OutputOracleAddress,
|
44
|
+
abi: l2OutputOracleAbi,
|
45
|
+
functionName: 'getL2Output',
|
46
|
+
args: [outputIndex],
|
47
|
+
});
|
48
|
+
return { outputIndex, ...output };
|
49
|
+
}
|
50
|
+
//# sourceMappingURL=getL2Output.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"getL2Output.js","sourceRoot":"","sources":["../../../../chains/opStack/actions/getL2Output.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,YAAY,GACb,MAAM,yCAAyC,CAAA;AAWhD,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAA;AAmB9C;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAK/B,MAAyC,EACzC,UAAuD;IAEvD,MAAM,EAAE,KAAK,GAAG,MAAM,CAAC,KAAK,EAAE,aAAa,EAAE,WAAW,EAAE,GAAG,UAAU,CAAA;IAEvE,MAAM,qBAAqB,GAAG,CAAC,GAAG,EAAE;QAClC,IAAI,UAAU,CAAC,qBAAqB;YAClC,OAAO,UAAU,CAAC,qBAAqB,CAAA;QACzC,IAAI,KAAK;YAAE,OAAO,WAAY,CAAC,SAAS,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,CAAA;QACzE,OAAO,MAAM,CAAC,MAAM,CAAC,WAAY,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAA;IACxE,CAAC,CAAC,EAAE,CAAA;IAEJ,MAAM,WAAW,GAAG,MAAM,YAAY,CAAC,MAAM,EAAE;QAC7C,OAAO,EAAE,qBAAqB;QAC9B,GAAG,EAAE,iBAAiB;QACtB,YAAY,EAAE,uBAAuB;QACrC,IAAI,EAAE,CAAC,aAAa,CAAC;KACtB,CAAC,CAAA;IACF,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,MAAM,EAAE;QACxC,OAAO,EAAE,qBAAqB;QAC9B,GAAG,EAAE,iBAAiB;QACtB,YAAY,EAAE,aAAa;QAC3B,IAAI,EAAE,CAAC,WAAW,CAAC;KACpB,CAAC,CAAA;IAEF,OAAO,EAAE,WAAW,EAAE,GAAG,MAAM,EAAE,CAAA;AACnC,CAAC"}
|