viem 2.0.0-beta.9 → 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.
Files changed (457) hide show
  1. package/CHANGELOG.md +44 -0
  2. package/README.md +9 -3
  3. package/_cjs/actions/ens/getEnsName.js +4 -2
  4. package/_cjs/actions/ens/getEnsName.js.map +1 -1
  5. package/_cjs/actions/index.js +16 -2
  6. package/_cjs/actions/index.js.map +1 -1
  7. package/_cjs/actions/wallet/prepareTransactionRequest.js.map +1 -1
  8. package/_cjs/chains/definitions/arbitrumSepolia.js +4 -0
  9. package/_cjs/chains/definitions/arbitrumSepolia.js.map +1 -1
  10. package/_cjs/chains/definitions/base.js +5 -0
  11. package/_cjs/chains/definitions/base.js.map +1 -1
  12. package/_cjs/chains/definitions/baseGoerli.js +5 -0
  13. package/_cjs/chains/definitions/baseGoerli.js.map +1 -1
  14. package/_cjs/chains/definitions/baseSepolia.js +5 -0
  15. package/_cjs/chains/definitions/baseSepolia.js.map +1 -1
  16. package/_cjs/chains/definitions/fantomSonicTestnet.js +26 -0
  17. package/_cjs/chains/definitions/fantomSonicTestnet.js.map +1 -0
  18. package/_cjs/chains/definitions/optimism.js +5 -0
  19. package/_cjs/chains/definitions/optimism.js.map +1 -1
  20. package/_cjs/chains/definitions/optimismGoerli.js +5 -0
  21. package/_cjs/chains/definitions/optimismGoerli.js.map +1 -1
  22. package/_cjs/chains/definitions/optimismSepolia.js +5 -0
  23. package/_cjs/chains/definitions/optimismSepolia.js.map +1 -1
  24. package/_cjs/chains/definitions/pgn.js +12 -0
  25. package/_cjs/chains/definitions/pgn.js.map +1 -1
  26. package/_cjs/chains/definitions/pgnTestnet.js +7 -0
  27. package/_cjs/chains/definitions/pgnTestnet.js.map +1 -1
  28. package/_cjs/chains/definitions/zilliqa.js +26 -0
  29. package/_cjs/chains/definitions/zilliqa.js.map +1 -0
  30. package/_cjs/chains/definitions/zilliqaTestnet.js +26 -0
  31. package/_cjs/chains/definitions/zilliqaTestnet.js.map +1 -0
  32. package/_cjs/chains/definitions/zkSyncSepoliaTestnet.js +35 -0
  33. package/_cjs/chains/definitions/zkSyncSepoliaTestnet.js.map +1 -0
  34. package/_cjs/chains/definitions/zkSyncTestnet.js +4 -0
  35. package/_cjs/chains/definitions/zkSyncTestnet.js.map +1 -1
  36. package/_cjs/chains/definitions/zora.js +5 -0
  37. package/_cjs/chains/definitions/zora.js.map +1 -1
  38. package/_cjs/chains/definitions/zoraSepolia.js +5 -0
  39. package/_cjs/chains/definitions/zoraSepolia.js.map +1 -1
  40. package/_cjs/chains/index.js +12 -4
  41. package/_cjs/chains/index.js.map +1 -1
  42. package/_cjs/chains/opStack/abis.js +366 -1
  43. package/_cjs/chains/opStack/abis.js.map +1 -1
  44. package/_cjs/chains/opStack/actions/buildDepositTransaction.js +1 -1
  45. package/_cjs/chains/opStack/actions/buildDepositTransaction.js.map +1 -1
  46. package/_cjs/chains/opStack/actions/buildInitiateWithdrawal.js +29 -0
  47. package/_cjs/chains/opStack/actions/buildInitiateWithdrawal.js.map +1 -0
  48. package/_cjs/chains/opStack/actions/buildProveWithdrawal.js +39 -0
  49. package/_cjs/chains/opStack/actions/buildProveWithdrawal.js.map +1 -0
  50. package/_cjs/chains/opStack/actions/depositTransaction.js +11 -6
  51. package/_cjs/chains/opStack/actions/depositTransaction.js.map +1 -1
  52. package/_cjs/chains/opStack/actions/estimateDepositTransactionGas.js +37 -0
  53. package/_cjs/chains/opStack/actions/estimateDepositTransactionGas.js.map +1 -0
  54. package/_cjs/chains/opStack/actions/estimateFinalizeWithdrawalGas.js +29 -0
  55. package/_cjs/chains/opStack/actions/estimateFinalizeWithdrawalGas.js.map +1 -0
  56. package/_cjs/chains/opStack/actions/estimateInitiateWithdrawalGas.js +24 -0
  57. package/_cjs/chains/opStack/actions/estimateInitiateWithdrawalGas.js.map +1 -0
  58. package/_cjs/chains/opStack/actions/estimateProveWithdrawalGas.js +29 -0
  59. package/_cjs/chains/opStack/actions/estimateProveWithdrawalGas.js.map +1 -0
  60. package/_cjs/chains/opStack/actions/finalizeWithdrawal.js +33 -0
  61. package/_cjs/chains/opStack/actions/finalizeWithdrawal.js.map +1 -0
  62. package/_cjs/chains/opStack/actions/getL2Output.js +30 -0
  63. package/_cjs/chains/opStack/actions/getL2Output.js.map +1 -0
  64. package/_cjs/chains/opStack/actions/getTimeToFinalize.js +46 -0
  65. package/_cjs/chains/opStack/actions/getTimeToFinalize.js.map +1 -0
  66. package/_cjs/chains/opStack/actions/getTimeToNextL2Output.js +63 -0
  67. package/_cjs/chains/opStack/actions/getTimeToNextL2Output.js.map +1 -0
  68. package/_cjs/chains/opStack/actions/getTimeToProve.js +13 -0
  69. package/_cjs/chains/opStack/actions/getTimeToProve.js.map +1 -0
  70. package/_cjs/chains/opStack/actions/getWithdrawalStatus.js +71 -0
  71. package/_cjs/chains/opStack/actions/getWithdrawalStatus.js.map +1 -0
  72. package/_cjs/chains/opStack/actions/initiateWithdrawal.js +28 -0
  73. package/_cjs/chains/opStack/actions/initiateWithdrawal.js.map +1 -0
  74. package/_cjs/chains/opStack/actions/proveWithdrawal.js +33 -0
  75. package/_cjs/chains/opStack/actions/proveWithdrawal.js.map +1 -0
  76. package/_cjs/chains/opStack/actions/waitForNextL2Output.js +32 -0
  77. package/_cjs/chains/opStack/actions/waitForNextL2Output.js.map +1 -0
  78. package/_cjs/chains/opStack/actions/waitToFinalize.js +11 -0
  79. package/_cjs/chains/opStack/actions/waitToFinalize.js.map +1 -0
  80. package/_cjs/chains/opStack/actions/waitToProve.js +21 -0
  81. package/_cjs/chains/opStack/actions/waitToProve.js.map +1 -0
  82. package/_cjs/chains/opStack/chains.js +5 -1
  83. package/_cjs/chains/opStack/chains.js.map +1 -1
  84. package/_cjs/chains/opStack/decorators/publicL1.js +35 -0
  85. package/_cjs/chains/opStack/decorators/publicL1.js.map +1 -0
  86. package/_cjs/chains/opStack/decorators/publicL2.js +5 -1
  87. package/_cjs/chains/opStack/decorators/publicL2.js.map +1 -1
  88. package/_cjs/chains/opStack/decorators/walletL1.js +4 -0
  89. package/_cjs/chains/opStack/decorators/walletL1.js.map +1 -1
  90. package/_cjs/chains/opStack/decorators/walletL2.js +13 -0
  91. package/_cjs/chains/opStack/decorators/walletL2.js.map +1 -0
  92. package/_cjs/chains/opStack/errors/withdrawal.js +17 -0
  93. package/_cjs/chains/opStack/errors/withdrawal.js.map +1 -0
  94. package/_cjs/chains/opStack/index.js +43 -15
  95. package/_cjs/chains/opStack/index.js.map +1 -1
  96. package/_cjs/chains/opStack/types/deposit.js +3 -0
  97. package/_cjs/chains/opStack/types/deposit.js.map +1 -0
  98. package/_cjs/chains/opStack/types/withdrawal.js +3 -0
  99. package/_cjs/chains/opStack/types/withdrawal.js.map +1 -0
  100. package/_cjs/chains/opStack/utils/extractWithdrawalMessageLogs.js +14 -0
  101. package/_cjs/chains/opStack/utils/extractWithdrawalMessageLogs.js.map +1 -0
  102. package/_cjs/chains/opStack/utils/getL2TransactionHash.js +2 -2
  103. package/_cjs/chains/opStack/utils/getL2TransactionHash.js.map +1 -1
  104. package/_cjs/chains/opStack/utils/getWithdrawalHashStorageSlot.js +11 -0
  105. package/_cjs/chains/opStack/utils/getWithdrawalHashStorageSlot.js.map +1 -0
  106. package/_cjs/chains/opStack/utils/getWithdrawals.js +10 -0
  107. package/_cjs/chains/opStack/utils/getWithdrawals.js.map +1 -0
  108. package/_cjs/chains/opStack/utils/{fromOpaqueData.js → opaqueDataToDepositData.js} +4 -4
  109. package/_cjs/chains/opStack/utils/opaqueDataToDepositData.js.map +1 -0
  110. package/_cjs/errors/abi.js +21 -1
  111. package/_cjs/errors/abi.js.map +1 -1
  112. package/_cjs/errors/version.js +1 -1
  113. package/_cjs/errors/version.js.map +1 -1
  114. package/_cjs/index.js +10 -2
  115. package/_cjs/index.js.map +1 -1
  116. package/_cjs/utils/abi/getAbiItem.js +46 -3
  117. package/_cjs/utils/abi/getAbiItem.js.map +1 -1
  118. package/_cjs/utils/hash/ripemd160.js +16 -0
  119. package/_cjs/utils/hash/ripemd160.js.map +1 -0
  120. package/_cjs/utils/hash/sha256.js +16 -0
  121. package/_cjs/utils/hash/sha256.js.map +1 -0
  122. package/_cjs/utils/index.js +5 -1
  123. package/_cjs/utils/index.js.map +1 -1
  124. package/_esm/actions/ens/getEnsName.js +4 -2
  125. package/_esm/actions/ens/getEnsName.js.map +1 -1
  126. package/_esm/actions/index.js +7 -0
  127. package/_esm/actions/index.js.map +1 -1
  128. package/_esm/actions/wallet/prepareTransactionRequest.js.map +1 -1
  129. package/_esm/chains/definitions/arbitrumSepolia.js +4 -0
  130. package/_esm/chains/definitions/arbitrumSepolia.js.map +1 -1
  131. package/_esm/chains/definitions/base.js +5 -0
  132. package/_esm/chains/definitions/base.js.map +1 -1
  133. package/_esm/chains/definitions/baseGoerli.js +5 -0
  134. package/_esm/chains/definitions/baseGoerli.js.map +1 -1
  135. package/_esm/chains/definitions/baseSepolia.js +5 -0
  136. package/_esm/chains/definitions/baseSepolia.js.map +1 -1
  137. package/_esm/chains/definitions/fantomSonicTestnet.js +23 -0
  138. package/_esm/chains/definitions/fantomSonicTestnet.js.map +1 -0
  139. package/_esm/chains/definitions/optimism.js +5 -0
  140. package/_esm/chains/definitions/optimism.js.map +1 -1
  141. package/_esm/chains/definitions/optimismGoerli.js +5 -0
  142. package/_esm/chains/definitions/optimismGoerli.js.map +1 -1
  143. package/_esm/chains/definitions/optimismSepolia.js +5 -0
  144. package/_esm/chains/definitions/optimismSepolia.js.map +1 -1
  145. package/_esm/chains/definitions/pgn.js +12 -0
  146. package/_esm/chains/definitions/pgn.js.map +1 -1
  147. package/_esm/chains/definitions/pgnTestnet.js +7 -0
  148. package/_esm/chains/definitions/pgnTestnet.js.map +1 -1
  149. package/_esm/chains/definitions/zilliqa.js +23 -0
  150. package/_esm/chains/definitions/zilliqa.js.map +1 -0
  151. package/_esm/chains/definitions/zilliqaTestnet.js +23 -0
  152. package/_esm/chains/definitions/zilliqaTestnet.js.map +1 -0
  153. package/_esm/chains/definitions/zkSyncSepoliaTestnet.js +32 -0
  154. package/_esm/chains/definitions/zkSyncSepoliaTestnet.js.map +1 -0
  155. package/_esm/chains/definitions/zkSyncTestnet.js +5 -0
  156. package/_esm/chains/definitions/zkSyncTestnet.js.map +1 -1
  157. package/_esm/chains/definitions/zora.js +5 -0
  158. package/_esm/chains/definitions/zora.js.map +1 -1
  159. package/_esm/chains/definitions/zoraSepolia.js +5 -0
  160. package/_esm/chains/definitions/zoraSepolia.js.map +1 -1
  161. package/_esm/chains/index.js +4 -0
  162. package/_esm/chains/index.js.map +1 -1
  163. package/_esm/chains/opStack/abis.js +365 -0
  164. package/_esm/chains/opStack/abis.js.map +1 -1
  165. package/_esm/chains/opStack/actions/buildDepositTransaction.js +2 -2
  166. package/_esm/chains/opStack/actions/buildDepositTransaction.js.map +1 -1
  167. package/_esm/chains/opStack/actions/buildInitiateWithdrawal.js +50 -0
  168. package/_esm/chains/opStack/actions/buildInitiateWithdrawal.js.map +1 -0
  169. package/_esm/chains/opStack/actions/buildProveWithdrawal.js +59 -0
  170. package/_esm/chains/opStack/actions/buildProveWithdrawal.js.map +1 -0
  171. package/_esm/chains/opStack/actions/depositTransaction.js +17 -14
  172. package/_esm/chains/opStack/actions/depositTransaction.js.map +1 -1
  173. package/_esm/chains/opStack/actions/estimateDepositTransactionGas.js +62 -0
  174. package/_esm/chains/opStack/actions/estimateDepositTransactionGas.js.map +1 -0
  175. package/_esm/chains/opStack/actions/estimateFinalizeWithdrawalGas.js +50 -0
  176. package/_esm/chains/opStack/actions/estimateFinalizeWithdrawalGas.js.map +1 -0
  177. package/_esm/chains/opStack/actions/estimateInitiateWithdrawalGas.js +48 -0
  178. package/_esm/chains/opStack/actions/estimateInitiateWithdrawalGas.js.map +1 -0
  179. package/_esm/chains/opStack/actions/estimateProveWithdrawalGas.js +53 -0
  180. package/_esm/chains/opStack/actions/estimateProveWithdrawalGas.js.map +1 -0
  181. package/_esm/chains/opStack/actions/finalizeWithdrawal.js +53 -0
  182. package/_esm/chains/opStack/actions/finalizeWithdrawal.js.map +1 -0
  183. package/_esm/chains/opStack/actions/getL2Output.js +50 -0
  184. package/_esm/chains/opStack/actions/getL2Output.js.map +1 -0
  185. package/_esm/chains/opStack/actions/getTimeToFinalize.js +77 -0
  186. package/_esm/chains/opStack/actions/getTimeToFinalize.js.map +1 -0
  187. package/_esm/chains/opStack/actions/getTimeToNextL2Output.js +91 -0
  188. package/_esm/chains/opStack/actions/getTimeToNextL2Output.js.map +1 -0
  189. package/_esm/chains/opStack/actions/getTimeToProve.js +39 -0
  190. package/_esm/chains/opStack/actions/getTimeToProve.js.map +1 -0
  191. package/_esm/chains/opStack/actions/getWithdrawalStatus.js +99 -0
  192. package/_esm/chains/opStack/actions/getWithdrawalStatus.js.map +1 -0
  193. package/_esm/chains/opStack/actions/initiateWithdrawal.js +76 -0
  194. package/_esm/chains/opStack/actions/initiateWithdrawal.js.map +1 -0
  195. package/_esm/chains/opStack/actions/proveWithdrawal.js +57 -0
  196. package/_esm/chains/opStack/actions/proveWithdrawal.js.map +1 -0
  197. package/_esm/chains/opStack/actions/waitForNextL2Output.js +58 -0
  198. package/_esm/chains/opStack/actions/waitForNextL2Output.js.map +1 -0
  199. package/_esm/chains/opStack/actions/waitToFinalize.js +41 -0
  200. package/_esm/chains/opStack/actions/waitToFinalize.js.map +1 -0
  201. package/_esm/chains/opStack/actions/waitToProve.js +47 -0
  202. package/_esm/chains/opStack/actions/waitToProve.js.map +1 -0
  203. package/_esm/chains/opStack/chains.js +2 -0
  204. package/_esm/chains/opStack/chains.js.map +1 -1
  205. package/_esm/chains/opStack/decorators/publicL1.js +31 -0
  206. package/_esm/chains/opStack/decorators/publicL1.js.map +1 -0
  207. package/_esm/chains/opStack/decorators/publicL2.js +5 -1
  208. package/_esm/chains/opStack/decorators/publicL2.js.map +1 -1
  209. package/_esm/chains/opStack/decorators/walletL1.js +4 -0
  210. package/_esm/chains/opStack/decorators/walletL1.js.map +1 -1
  211. package/_esm/chains/opStack/decorators/walletL2.js +9 -0
  212. package/_esm/chains/opStack/decorators/walletL2.js.map +1 -0
  213. package/_esm/chains/opStack/errors/withdrawal.js +13 -0
  214. package/_esm/chains/opStack/errors/withdrawal.js.map +1 -0
  215. package/_esm/chains/opStack/index.js +21 -3
  216. package/_esm/chains/opStack/index.js.map +1 -1
  217. package/_esm/chains/opStack/types/deposit.js +2 -0
  218. package/_esm/chains/opStack/types/deposit.js.map +1 -0
  219. package/_esm/chains/opStack/types/withdrawal.js +2 -0
  220. package/_esm/chains/opStack/types/withdrawal.js.map +1 -0
  221. package/_esm/chains/opStack/utils/extractWithdrawalMessageLogs.js +10 -0
  222. package/_esm/chains/opStack/utils/extractWithdrawalMessageLogs.js.map +1 -0
  223. package/_esm/chains/opStack/utils/getL2TransactionHash.js +2 -2
  224. package/_esm/chains/opStack/utils/getL2TransactionHash.js.map +1 -1
  225. package/_esm/chains/opStack/utils/getWithdrawalHashStorageSlot.js +7 -0
  226. package/_esm/chains/opStack/utils/getWithdrawalHashStorageSlot.js.map +1 -0
  227. package/_esm/chains/opStack/utils/getWithdrawals.js +6 -0
  228. package/_esm/chains/opStack/utils/getWithdrawals.js.map +1 -0
  229. package/_esm/chains/opStack/utils/{fromOpaqueData.js → opaqueDataToDepositData.js} +2 -2
  230. package/_esm/chains/opStack/utils/opaqueDataToDepositData.js.map +1 -0
  231. package/_esm/errors/abi.js +19 -0
  232. package/_esm/errors/abi.js.map +1 -1
  233. package/_esm/errors/version.js +1 -1
  234. package/_esm/errors/version.js.map +1 -1
  235. package/_esm/index.js +4 -0
  236. package/_esm/index.js.map +1 -1
  237. package/_esm/utils/abi/getAbiItem.js +46 -2
  238. package/_esm/utils/abi/getAbiItem.js.map +1 -1
  239. package/_esm/utils/hash/ripemd160.js +12 -0
  240. package/_esm/utils/hash/ripemd160.js.map +1 -0
  241. package/_esm/utils/hash/sha256.js +12 -0
  242. package/_esm/utils/hash/sha256.js.map +1 -0
  243. package/_esm/utils/index.js +2 -0
  244. package/_esm/utils/index.js.map +1 -1
  245. package/_types/actions/ens/getEnsName.d.ts.map +1 -1
  246. package/_types/actions/index.d.ts +7 -0
  247. package/_types/actions/index.d.ts.map +1 -1
  248. package/_types/actions/wallet/prepareTransactionRequest.d.ts +5 -5
  249. package/_types/actions/wallet/prepareTransactionRequest.d.ts.map +1 -1
  250. package/_types/chains/celo/chainConfig.d.ts +180 -180
  251. package/_types/chains/celo/formatters.d.ts +180 -180
  252. package/_types/chains/definitions/arbitrumSepolia.d.ts +4 -0
  253. package/_types/chains/definitions/arbitrumSepolia.d.ts.map +1 -1
  254. package/_types/chains/definitions/base.d.ts +142 -137
  255. package/_types/chains/definitions/base.d.ts.map +1 -1
  256. package/_types/chains/definitions/baseGoerli.d.ts +142 -137
  257. package/_types/chains/definitions/baseGoerli.d.ts.map +1 -1
  258. package/_types/chains/definitions/baseSepolia.d.ts +142 -137
  259. package/_types/chains/definitions/baseSepolia.d.ts.map +1 -1
  260. package/_types/chains/definitions/celo.d.ts +180 -180
  261. package/_types/chains/definitions/celoAlfajores.d.ts +180 -180
  262. package/_types/chains/definitions/celoCannoli.d.ts +180 -180
  263. package/_types/chains/definitions/fantomSonicTestnet.d.ts +38 -0
  264. package/_types/chains/definitions/fantomSonicTestnet.d.ts.map +1 -0
  265. package/_types/chains/definitions/optimism.d.ts +142 -137
  266. package/_types/chains/definitions/optimism.d.ts.map +1 -1
  267. package/_types/chains/definitions/optimismGoerli.d.ts +142 -137
  268. package/_types/chains/definitions/optimismGoerli.d.ts.map +1 -1
  269. package/_types/chains/definitions/optimismSepolia.d.ts +142 -137
  270. package/_types/chains/definitions/optimismSepolia.d.ts.map +1 -1
  271. package/_types/chains/definitions/pgn.d.ts +147 -137
  272. package/_types/chains/definitions/pgn.d.ts.map +1 -1
  273. package/_types/chains/definitions/pgnTestnet.d.ts +142 -137
  274. package/_types/chains/definitions/pgnTestnet.d.ts.map +1 -1
  275. package/_types/chains/definitions/zilliqa.d.ts +38 -0
  276. package/_types/chains/definitions/zilliqa.d.ts.map +1 -0
  277. package/_types/chains/definitions/zilliqaTestnet.d.ts +38 -0
  278. package/_types/chains/definitions/zilliqaTestnet.d.ts.map +1 -0
  279. package/_types/chains/definitions/zkSync.d.ts +24 -24
  280. package/_types/chains/definitions/zkSyncSepoliaTestnet.d.ts +533 -0
  281. package/_types/chains/definitions/zkSyncSepoliaTestnet.d.ts.map +1 -0
  282. package/_types/chains/definitions/zkSyncTestnet.d.ts +29 -24
  283. package/_types/chains/definitions/zkSyncTestnet.d.ts.map +1 -1
  284. package/_types/chains/definitions/zora.d.ts +142 -137
  285. package/_types/chains/definitions/zora.d.ts.map +1 -1
  286. package/_types/chains/definitions/zoraSepolia.d.ts +142 -137
  287. package/_types/chains/definitions/zoraSepolia.d.ts.map +1 -1
  288. package/_types/chains/definitions/zoraTestnet.d.ts +137 -137
  289. package/_types/chains/index.d.ts +5 -1
  290. package/_types/chains/index.d.ts.map +1 -1
  291. package/_types/chains/opStack/abis.d.ts +457 -0
  292. package/_types/chains/opStack/abis.d.ts.map +1 -1
  293. package/_types/chains/opStack/actions/buildDepositTransaction.d.ts +5 -3
  294. package/_types/chains/opStack/actions/buildDepositTransaction.d.ts.map +1 -1
  295. package/_types/chains/opStack/actions/buildInitiateWithdrawal.d.ts +50 -0
  296. package/_types/chains/opStack/actions/buildInitiateWithdrawal.d.ts.map +1 -0
  297. package/_types/chains/opStack/actions/buildProveWithdrawal.d.ts +48 -0
  298. package/_types/chains/opStack/actions/buildProveWithdrawal.d.ts.map +1 -0
  299. package/_types/chains/opStack/actions/depositTransaction.d.ts +18 -34
  300. package/_types/chains/opStack/actions/depositTransaction.d.ts.map +1 -1
  301. package/_types/chains/opStack/actions/estimateDepositTransactionGas.d.ts +50 -0
  302. package/_types/chains/opStack/actions/estimateDepositTransactionGas.d.ts.map +1 -0
  303. package/_types/chains/opStack/actions/estimateFinalizeWithdrawalGas.d.ts +45 -0
  304. package/_types/chains/opStack/actions/estimateFinalizeWithdrawalGas.d.ts.map +1 -0
  305. package/_types/chains/opStack/actions/estimateInitiateWithdrawalGas.d.ts +51 -0
  306. package/_types/chains/opStack/actions/estimateInitiateWithdrawalGas.d.ts.map +1 -0
  307. package/_types/chains/opStack/actions/estimateProveWithdrawalGas.d.ts +63 -0
  308. package/_types/chains/opStack/actions/estimateProveWithdrawalGas.d.ts.map +1 -0
  309. package/_types/chains/opStack/actions/finalizeWithdrawal.d.ts +49 -0
  310. package/_types/chains/opStack/actions/finalizeWithdrawal.d.ts.map +1 -0
  311. package/_types/chains/opStack/actions/getL2Output.d.ts +44 -0
  312. package/_types/chains/opStack/actions/getL2Output.d.ts.map +1 -0
  313. package/_types/chains/opStack/actions/getTimeToFinalize.d.ts +57 -0
  314. package/_types/chains/opStack/actions/getTimeToFinalize.d.ts.map +1 -0
  315. package/_types/chains/opStack/actions/getTimeToNextL2Output.d.ts +61 -0
  316. package/_types/chains/opStack/actions/getTimeToNextL2Output.d.ts.map +1 -0
  317. package/_types/chains/opStack/actions/getTimeToProve.d.ts +50 -0
  318. package/_types/chains/opStack/actions/getTimeToProve.d.ts.map +1 -0
  319. package/_types/chains/opStack/actions/getWithdrawalStatus.d.ts +48 -0
  320. package/_types/chains/opStack/actions/getWithdrawalStatus.d.ts.map +1 -0
  321. package/_types/chains/opStack/actions/initiateWithdrawal.d.ts +77 -0
  322. package/_types/chains/opStack/actions/initiateWithdrawal.d.ts.map +1 -0
  323. package/_types/chains/opStack/actions/proveWithdrawal.d.ts +67 -0
  324. package/_types/chains/opStack/actions/proveWithdrawal.d.ts.map +1 -0
  325. package/_types/chains/opStack/actions/waitForNextL2Output.d.ts +55 -0
  326. package/_types/chains/opStack/actions/waitForNextL2Output.d.ts.map +1 -0
  327. package/_types/chains/opStack/actions/waitToFinalize.d.ts +45 -0
  328. package/_types/chains/opStack/actions/waitToFinalize.d.ts.map +1 -0
  329. package/_types/chains/opStack/actions/waitToProve.d.ts +55 -0
  330. package/_types/chains/opStack/actions/waitToProve.d.ts.map +1 -0
  331. package/_types/chains/opStack/chainConfig.d.ts +136 -136
  332. package/_types/chains/opStack/chains.d.ts +2 -0
  333. package/_types/chains/opStack/chains.d.ts.map +1 -1
  334. package/_types/chains/opStack/decorators/publicL1.d.ts +386 -0
  335. package/_types/chains/opStack/decorators/publicL1.d.ts.map +1 -0
  336. package/_types/chains/opStack/decorators/publicL2.d.ts +82 -26
  337. package/_types/chains/opStack/decorators/publicL2.d.ts.map +1 -1
  338. package/_types/chains/opStack/decorators/walletL1.d.ts +57 -2
  339. package/_types/chains/opStack/decorators/walletL1.d.ts.map +1 -1
  340. package/_types/chains/opStack/decorators/walletL2.d.ts +62 -0
  341. package/_types/chains/opStack/decorators/walletL2.d.ts.map +1 -0
  342. package/_types/chains/opStack/errors/withdrawal.d.ts +12 -0
  343. package/_types/chains/opStack/errors/withdrawal.d.ts.map +1 -0
  344. package/_types/chains/opStack/formatters.d.ts +136 -136
  345. package/_types/chains/opStack/index.d.ts +21 -3
  346. package/_types/chains/opStack/index.d.ts.map +1 -1
  347. package/_types/chains/opStack/types/deposit.d.ts +25 -0
  348. package/_types/chains/opStack/types/deposit.d.ts.map +1 -0
  349. package/_types/chains/opStack/types/withdrawal.d.ts +22 -0
  350. package/_types/chains/opStack/types/withdrawal.d.ts.map +1 -0
  351. package/_types/chains/opStack/utils/extractWithdrawalMessageLogs.d.ts +137 -0
  352. package/_types/chains/opStack/utils/extractWithdrawalMessageLogs.d.ts.map +1 -0
  353. package/_types/chains/opStack/utils/getWithdrawalHashStorageSlot.d.ts +11 -0
  354. package/_types/chains/opStack/utils/getWithdrawalHashStorageSlot.d.ts.map +1 -0
  355. package/_types/chains/opStack/utils/getWithdrawals.d.ts +12 -0
  356. package/_types/chains/opStack/utils/getWithdrawals.d.ts.map +1 -0
  357. package/_types/chains/opStack/utils/opaqueDataToDepositData.d.ts +15 -0
  358. package/_types/chains/opStack/utils/opaqueDataToDepositData.d.ts.map +1 -0
  359. package/_types/chains/zksync/chainConfig.d.ts +24 -24
  360. package/_types/chains/zksync/formatters.d.ts +24 -24
  361. package/_types/clients/decorators/public.d.ts +2 -2
  362. package/_types/clients/decorators/public.d.ts.map +1 -1
  363. package/_types/clients/decorators/wallet.d.ts +2 -2
  364. package/_types/clients/decorators/wallet.d.ts.map +1 -1
  365. package/_types/errors/abi.d.ts +14 -1
  366. package/_types/errors/abi.d.ts.map +1 -1
  367. package/_types/errors/version.d.ts +1 -1
  368. package/_types/errors/version.d.ts.map +1 -1
  369. package/_types/index.d.ts +15 -1
  370. package/_types/index.d.ts.map +1 -1
  371. package/_types/types/account.d.ts +1 -1
  372. package/_types/types/account.d.ts.map +1 -1
  373. package/_types/types/eip1193.d.ts +12 -0
  374. package/_types/types/eip1193.d.ts.map +1 -1
  375. package/_types/utils/abi/getAbiItem.d.ts +2 -1
  376. package/_types/utils/abi/getAbiItem.d.ts.map +1 -1
  377. package/_types/utils/formatters/transaction.d.ts +1 -1
  378. package/_types/utils/formatters/transactionRequest.d.ts +1 -1
  379. package/_types/utils/hash/ripemd160.d.ts +11 -0
  380. package/_types/utils/hash/ripemd160.d.ts.map +1 -0
  381. package/_types/utils/hash/sha256.d.ts +11 -0
  382. package/_types/utils/hash/sha256.d.ts.map +1 -0
  383. package/_types/utils/index.d.ts +2 -0
  384. package/_types/utils/index.d.ts.map +1 -1
  385. package/actions/ens/getEnsName.ts +3 -2
  386. package/actions/index.ts +31 -0
  387. package/actions/wallet/prepareTransactionRequest.ts +16 -9
  388. package/chains/definitions/arbitrumSepolia.ts +4 -0
  389. package/chains/definitions/base.ts +5 -0
  390. package/chains/definitions/baseGoerli.ts +5 -0
  391. package/chains/definitions/baseSepolia.ts +5 -0
  392. package/chains/definitions/fantomSonicTestnet.ts +23 -0
  393. package/chains/definitions/optimism.ts +5 -0
  394. package/chains/definitions/optimismGoerli.ts +5 -0
  395. package/chains/definitions/optimismSepolia.ts +5 -0
  396. package/chains/definitions/pgn.ts +13 -0
  397. package/chains/definitions/pgnTestnet.ts +8 -0
  398. package/chains/definitions/zilliqa.ts +23 -0
  399. package/chains/definitions/zilliqaTestnet.ts +23 -0
  400. package/chains/definitions/zkSyncSepoliaTestnet.ts +32 -0
  401. package/chains/definitions/zkSyncTestnet.ts +5 -0
  402. package/chains/definitions/zora.ts +5 -0
  403. package/chains/definitions/zoraSepolia.ts +5 -0
  404. package/chains/index.ts +9 -0
  405. package/chains/opStack/abis.ts +367 -0
  406. package/chains/opStack/actions/buildDepositTransaction.ts +11 -6
  407. package/chains/opStack/actions/buildInitiateWithdrawal.ts +118 -0
  408. package/chains/opStack/actions/buildProveWithdrawal.ts +149 -0
  409. package/chains/opStack/actions/depositTransaction.ts +50 -44
  410. package/chains/opStack/actions/estimateDepositTransactionGas.ts +138 -0
  411. package/chains/opStack/actions/estimateFinalizeWithdrawalGas.ts +118 -0
  412. package/chains/opStack/actions/estimateInitiateWithdrawalGas.ts +118 -0
  413. package/chains/opStack/actions/estimateProveWithdrawalGas.ts +139 -0
  414. package/chains/opStack/actions/finalizeWithdrawal.ts +130 -0
  415. package/chains/opStack/actions/getL2Output.ts +89 -0
  416. package/chains/opStack/actions/getTimeToFinalize.ts +122 -0
  417. package/chains/opStack/actions/getTimeToNextL2Output.ts +162 -0
  418. package/chains/opStack/actions/getTimeToProve.ts +79 -0
  419. package/chains/opStack/actions/getWithdrawalStatus.ts +152 -0
  420. package/chains/opStack/actions/initiateWithdrawal.ts +153 -0
  421. package/chains/opStack/actions/proveWithdrawal.ts +151 -0
  422. package/chains/opStack/actions/waitForNextL2Output.ts +111 -0
  423. package/chains/opStack/actions/waitToFinalize.ts +64 -0
  424. package/chains/opStack/actions/waitToProve.ts +99 -0
  425. package/chains/opStack/chains.ts +2 -0
  426. package/chains/opStack/decorators/publicL1.ts +514 -0
  427. package/chains/opStack/decorators/publicL2.ts +129 -37
  428. package/chains/opStack/decorators/walletL1.ts +71 -2
  429. package/chains/opStack/decorators/walletL2.ts +84 -0
  430. package/chains/opStack/errors/withdrawal.ts +15 -0
  431. package/chains/opStack/index.ts +112 -21
  432. package/chains/opStack/types/deposit.ts +28 -0
  433. package/chains/opStack/types/withdrawal.ts +23 -0
  434. package/chains/opStack/utils/extractWithdrawalMessageLogs.ts +36 -0
  435. package/chains/opStack/utils/getL2TransactionHash.ts +2 -2
  436. package/chains/opStack/utils/getWithdrawalHashStorageSlot.ts +29 -0
  437. package/chains/opStack/utils/getWithdrawals.ts +25 -0
  438. package/chains/opStack/utils/{fromOpaqueData.ts → opaqueDataToDepositData.ts} +9 -4
  439. package/clients/decorators/public.ts +2 -2
  440. package/clients/decorators/wallet.ts +2 -2
  441. package/errors/abi.ts +22 -1
  442. package/errors/version.ts +1 -1
  443. package/index.ts +40 -0
  444. package/package.json +1 -1
  445. package/types/account.ts +1 -1
  446. package/types/eip1193.ts +12 -0
  447. package/utils/abi/getAbiItem.ts +71 -2
  448. package/utils/hash/ripemd160.ts +31 -0
  449. package/utils/hash/sha256.ts +31 -0
  450. package/utils/index.ts +2 -0
  451. package/_cjs/chains/opStack/utils/fromOpaqueData.js.map +0 -1
  452. package/_esm/chains/opStack/utils/fromOpaqueData.js.map +0 -1
  453. package/_types/chains/opStack/utils/fromOpaqueData.d.ts +0 -15
  454. package/_types/chains/opStack/utils/fromOpaqueData.d.ts.map +0 -1
  455. package/chains/celo/package.json +0 -6
  456. package/chains/opStack/package.json +0 -6
  457. package/chains/zksync/package.json +0 -6
@@ -12,6 +12,11 @@ import {
12
12
  type BuildDepositTransactionReturnType,
13
13
  buildDepositTransaction,
14
14
  } from '../actions/buildDepositTransaction.js'
15
+ import {
16
+ type BuildProveWithdrawalParameters,
17
+ type BuildProveWithdrawalReturnType,
18
+ buildProveWithdrawal,
19
+ } from '../actions/buildProveWithdrawal.js'
15
20
  import {
16
21
  type EstimateContractL1FeeParameters,
17
22
  type EstimateContractL1FeeReturnType,
@@ -32,6 +37,11 @@ import {
32
37
  type EstimateContractTotalGasReturnType,
33
38
  estimateContractTotalGas,
34
39
  } from '../actions/estimateContractTotalGas.js'
40
+ import {
41
+ type EstimateInitiateWithdrawalGasParameters,
42
+ type EstimateInitiateWithdrawalGasReturnType,
43
+ estimateInitiateWithdrawalGas,
44
+ } from '../actions/estimateInitiateWithdrawalGas.js'
35
45
  import {
36
46
  type EstimateL1FeeParameters,
37
47
  type EstimateL1FeeReturnType,
@@ -57,6 +67,84 @@ export type PublicActionsL2<
57
67
  chain extends Chain | undefined = Chain | undefined,
58
68
  account extends Account | undefined = Account | undefined,
59
69
  > = {
70
+ /**
71
+ * Prepares parameters for a [deposit transaction](https://github.com/ethereum-optimism/optimism/blob/develop/specs/deposits.md) to be initiated on an L1.
72
+ *
73
+ * - Docs: https://viem.sh/op-stack/actions/buildDepositTransaction.html
74
+ *
75
+ * @param client - Client to use
76
+ * @param parameters - {@link BuildDepositTransactionParameters}
77
+ * @returns Parameters for `depositTransaction`. {@link DepositTransactionReturnType}
78
+ *
79
+ * @example
80
+ * import { createWalletClient, http, parseEther } from 'viem'
81
+ * import { base } from 'viem/chains'
82
+ * import { publicActionsL2 } from 'viem/op-stack'
83
+ *
84
+ * const client = createWalletClient({
85
+ * chain: base,
86
+ * transport: http(),
87
+ * }).extend(publicActionsL2())
88
+ *
89
+ * const args = await client.buildDepositTransaction({
90
+ * account: '0xA0Cf798816D4b9b9866b5330EEa46a18382f251e',
91
+ * to: '0x70997970c51812dc3a010c7d01b50e0d17dc79c8',
92
+ * value: parseEther('1'),
93
+ * })
94
+ */
95
+ buildDepositTransaction: <
96
+ chainOverride extends Chain | undefined = undefined,
97
+ accountOverride extends Account | Address | undefined = undefined,
98
+ >(
99
+ parameters: BuildDepositTransactionParameters<
100
+ chain,
101
+ account,
102
+ chainOverride,
103
+ accountOverride
104
+ >,
105
+ ) => Promise<BuildDepositTransactionReturnType<account, accountOverride>>
106
+ /**
107
+ * Builds the transaction that proves a withdrawal was initiated on an L2. Used in the Withdrawal flow.
108
+ *
109
+ * - Docs: https://viem.sh/op-stack/actions/buildProveWithdrawal.html
110
+ *
111
+ * @param client - Client to use
112
+ * @param parameters - {@link BuildProveWithdrawalParameters}
113
+ * @returns The prove withdraw transaction request. {@link BuildProveWithdrawalReturnType}
114
+ *
115
+ * @example
116
+ * import { createPublicClient, http } from 'viem'
117
+ * import { optimism } from 'viem/chains'
118
+ * import { publicActionsL2 } from 'viem/op-stack'
119
+ *
120
+ * const publicClientL2 = createPublicClient({
121
+ * chain: optimism,
122
+ * transport: http(),
123
+ * }).extend(publicActionsL2())
124
+ *
125
+ * const args = await publicClientL2.buildProveWithdrawal({
126
+ * output: { ... },
127
+ * withdrawal: { ... },
128
+ * })
129
+ */
130
+ buildProveWithdrawal: <
131
+ chainOverride extends Chain | undefined = undefined,
132
+ accountOverride extends Account | Address | undefined = undefined,
133
+ >(
134
+ parameters: BuildProveWithdrawalParameters<
135
+ chain,
136
+ account,
137
+ chainOverride,
138
+ accountOverride
139
+ >,
140
+ ) => Promise<
141
+ BuildProveWithdrawalReturnType<
142
+ chain,
143
+ account,
144
+ chainOverride,
145
+ accountOverride
146
+ >
147
+ >
60
148
  /**
61
149
  * Estimates the L1 data fee required to execute an L2 contract write.
62
150
  *
@@ -213,6 +301,43 @@ export type PublicActionsL2<
213
301
  chainOverride
214
302
  >,
215
303
  ) => Promise<EstimateContractTotalGasReturnType>
304
+ /**
305
+ * Estimates gas required to initiate a [withdrawal](https://community.optimism.io/docs/protocol/withdrawal-flow/#withdrawal-initiating-transaction) on an L2 to the L1.
306
+ *
307
+ * - Docs: https://viem.sh/op-stack/actions/estimateInitiateWithdrawalGas.html
308
+ *
309
+ * @param client - Client to use
310
+ * @param parameters - {@link EstimateInitiateWithdrawalGasParameters}
311
+ * @returns The gas required. {@link EstimateInitiateWithdrawalGasReturnType}
312
+ *
313
+ * @example
314
+ * import { createPublicClient, http, parseEther } from 'viem'
315
+ * import { base, mainnet } from 'viem/chains'
316
+ * import { publicActionsL2 } from 'viem/op-stack'
317
+ *
318
+ * const client = createPublicClient({
319
+ * chain: mainnet,
320
+ * transport: http(),
321
+ * }).extend(publicActionsL2())
322
+ *
323
+ * const hash = await client.estimateInitiateWithdrawalGas({
324
+ * account: '0xA0Cf798816D4b9b9866b5330EEa46a18382f251e',
325
+ * request: {
326
+ * gas: 21_000n,
327
+ * to: '0x70997970c51812dc3a010c7d01b50e0d17dc79c8',
328
+ * value: parseEther('1'),
329
+ * },
330
+ * })
331
+ */
332
+ estimateInitiateWithdrawalGas: <
333
+ chainOverride extends Chain | undefined = undefined,
334
+ >(
335
+ parameters: EstimateInitiateWithdrawalGasParameters<
336
+ chain,
337
+ account,
338
+ chainOverride
339
+ >,
340
+ ) => Promise<EstimateInitiateWithdrawalGasReturnType>
216
341
  /**
217
342
  * Estimates the L1 data fee required to execute an L2 transaction.
218
343
  *
@@ -317,42 +442,6 @@ export type PublicActionsL2<
317
442
  estimateTotalGas: <chainOverride extends Chain | undefined = undefined>(
318
443
  parameters: EstimateTotalGasParameters<chain, account, chainOverride>,
319
444
  ) => Promise<EstimateTotalGasReturnType>
320
- /**
321
- * Prepares parameters for a [deposit transaction](https://github.com/ethereum-optimism/optimism/blob/develop/specs/deposits.md) to be initiated on an L1.
322
- *
323
- * - Docs: https://viem.sh/op-stack/actions/buildDepositTransaction.html
324
- *
325
- * @param client - Client to use
326
- * @param parameters - {@link BuildDepositTransactionParameters}
327
- * @returns Parameters for `depositTransaction`. {@link DepositTransactionReturnType}
328
- *
329
- * @example
330
- * import { createWalletClient, http, parseEther } from 'viem'
331
- * import { base } from 'viem/chains'
332
- * import { publicActionsL2 } from 'viem/op-stack'
333
- *
334
- * const client = createWalletClient({
335
- * chain: base,
336
- * transport: http(),
337
- * }).extend(publicActionsL2())
338
- *
339
- * const request = await client.buildDepositTransaction({
340
- * account: '0xA0Cf798816D4b9b9866b5330EEa46a18382f251e',
341
- * to: '0x70997970c51812dc3a010c7d01b50e0d17dc79c8',
342
- * value: parseEther('1'),
343
- * })
344
- */
345
- buildDepositTransaction: <
346
- chainOverride extends Chain | undefined = undefined,
347
- accountOverride extends Account | Address | undefined = undefined,
348
- >(
349
- parameters: BuildDepositTransactionParameters<
350
- chain,
351
- account,
352
- chainOverride,
353
- accountOverride
354
- >,
355
- ) => Promise<BuildDepositTransactionReturnType<account, accountOverride>>
356
445
  }
357
446
 
358
447
  export function publicActionsL2() {
@@ -364,17 +453,20 @@ export function publicActionsL2() {
364
453
  client: Client<TTransport, TChain, TAccount>,
365
454
  ): PublicActionsL2<TChain, TAccount> => {
366
455
  return {
456
+ buildDepositTransaction: (args) => buildDepositTransaction(client, args),
457
+ buildProveWithdrawal: (args) => buildProveWithdrawal(client, args),
367
458
  estimateContractL1Fee: (args) => estimateContractL1Fee(client, args),
368
459
  estimateContractL1Gas: (args) => estimateContractL1Gas(client, args),
369
460
  estimateContractTotalFee: (args) =>
370
461
  estimateContractTotalFee(client, args),
371
462
  estimateContractTotalGas: (args) =>
372
463
  estimateContractTotalGas(client, args),
464
+ estimateInitiateWithdrawalGas: (args) =>
465
+ estimateInitiateWithdrawalGas(client, args),
373
466
  estimateL1Fee: (args) => estimateL1Fee(client, args),
374
467
  estimateL1Gas: (args) => estimateL1Gas(client, args),
375
468
  estimateTotalFee: (args) => estimateTotalFee(client, args),
376
469
  estimateTotalGas: (args) => estimateTotalGas(client, args),
377
- buildDepositTransaction: (args) => buildDepositTransaction(client, args),
378
470
  }
379
471
  }
380
472
  }
@@ -7,6 +7,16 @@ import {
7
7
  type DepositTransactionReturnType,
8
8
  depositTransaction,
9
9
  } from '../actions/depositTransaction.js'
10
+ import {
11
+ type FinalizeWithdrawalParameters,
12
+ type FinalizeWithdrawalReturnType,
13
+ finalizeWithdrawal,
14
+ } from '../actions/finalizeWithdrawal.js'
15
+ import {
16
+ type ProveWithdrawalParameters,
17
+ type ProveWithdrawalReturnType,
18
+ proveWithdrawal,
19
+ } from '../actions/proveWithdrawal.js'
10
20
 
11
21
  export type WalletActionsL1<
12
22
  chain extends Chain | undefined = Chain | undefined,
@@ -36,7 +46,7 @@ export type WalletActionsL1<
36
46
  *
37
47
  * const hash = await client.depositTransaction({
38
48
  * account: '0xA0Cf798816D4b9b9866b5330EEa46a18382f251e',
39
- * args: {
49
+ * request: {
40
50
  * gas: 21_000n,
41
51
  * to: '0x70997970c51812dc3a010c7d01b50e0d17dc79c8',
42
52
  * value: parseEther('1'),
@@ -58,7 +68,7 @@ export type WalletActionsL1<
58
68
  * }).extend(walletActionsL1())
59
69
  *
60
70
  * const hash = await client.depositTransaction({
61
- * args: {
71
+ * request: {
62
72
  * gas: 21_000n,
63
73
  * to: '0x70997970c51812dc3a010c7d01b50e0d17dc79c8',
64
74
  * value: parseEther('1'),
@@ -69,6 +79,63 @@ export type WalletActionsL1<
69
79
  depositTransaction: <chainOverride extends Chain | undefined = undefined>(
70
80
  parameters: DepositTransactionParameters<chain, account, chainOverride>,
71
81
  ) => Promise<DepositTransactionReturnType>
82
+ /**
83
+ * Finalizes a withdrawal that occurred on an L2. Used in the Withdrawal flow.
84
+ *
85
+ * - Docs: https://viem.sh/op-stack/actions/finalizeWithdrawal.html
86
+ *
87
+ * @param client - Client to use
88
+ * @param parameters - {@link FinalizeWithdrawalParameters}
89
+ * @returns The finalize transaction hash. {@link FinalizeWithdrawalReturnType}
90
+ *
91
+ * @example
92
+ * import { createWalletClient, http } from 'viem'
93
+ * import { mainnet, optimism } from 'viem/chains'
94
+ * import { walletActionsL1 } from 'viem/op-stack'
95
+ *
96
+ * const walletClientL1 = createWalletClient({
97
+ * chain: mainnet,
98
+ * transport: http(),
99
+ * }).extend(walletActionsL1)
100
+ *
101
+ * const hash = await walletClientL1.finalizeWithdrawal({
102
+ * targetChain: optimism,
103
+ * withdrawal: { ... },
104
+ * })
105
+ */
106
+ finalizeWithdrawal: <chainOverride extends Chain | undefined = undefined>(
107
+ parameters: FinalizeWithdrawalParameters<chain, account, chainOverride>,
108
+ ) => Promise<FinalizeWithdrawalReturnType>
109
+ /**
110
+ * Proves a withdrawal that occurred on an L2. Used in the Withdrawal flow.
111
+ *
112
+ * - Docs: https://viem.sh/op-stack/actions/proveWithdrawal.html
113
+ *
114
+ * @param client - Client to use
115
+ * @param parameters - {@link ProveWithdrawalParameters}
116
+ * @returns The prove transaction hash. {@link ProveWithdrawalReturnType}
117
+ *
118
+ * @example
119
+ * import { createWalletClient, http } from 'viem'
120
+ * import { mainnet, optimism } from 'viem/chains'
121
+ * import { walletActionsL1 } from 'viem/op-stack'
122
+ *
123
+ * const walletClientL1 = createWalletClient({
124
+ * chain: mainnet,
125
+ * transport: http(),
126
+ * }).extend(walletActionsL1())
127
+ *
128
+ * const hash = await walletClientL1.proveWithdrawal({
129
+ * l2OutputIndex: 4529n,
130
+ * outputRootProof: { ... },
131
+ * targetChain: optimism,
132
+ * withdrawalProof: [ ... ],
133
+ * withdrawalTransaction: { ... },
134
+ * })
135
+ */
136
+ proveWithdrawal: <chainOverride extends Chain | undefined = undefined>(
137
+ parameters: ProveWithdrawalParameters<chain, account, chainOverride>,
138
+ ) => Promise<ProveWithdrawalReturnType>
72
139
  }
73
140
 
74
141
  export function walletActionsL1() {
@@ -81,6 +148,8 @@ export function walletActionsL1() {
81
148
  ): WalletActionsL1<TChain, TAccount> => {
82
149
  return {
83
150
  depositTransaction: (args) => depositTransaction(client, args),
151
+ finalizeWithdrawal: (args) => finalizeWithdrawal(client, args),
152
+ proveWithdrawal: (args) => proveWithdrawal(client, args),
84
153
  }
85
154
  }
86
155
  }
@@ -0,0 +1,84 @@
1
+ import type { Client } from '../../../clients/createClient.js'
2
+ import type { Transport } from '../../../clients/transports/createTransport.js'
3
+ import type { Account } from '../../../types/account.js'
4
+ import type { Chain } from '../../../types/chain.js'
5
+ import {
6
+ type InitiateWithdrawalParameters,
7
+ type InitiateWithdrawalReturnType,
8
+ initiateWithdrawal,
9
+ } from '../actions/initiateWithdrawal.js'
10
+
11
+ export type WalletActionsL2<
12
+ chain extends Chain | undefined = Chain | undefined,
13
+ account extends Account | undefined = Account | undefined,
14
+ > = {
15
+ /**
16
+ * Initiates a [withdrawal](https://community.optimism.io/docs/protocol/withdrawal-flow/#withdrawal-initiating-transaction) on an L2 to the L1.
17
+ *
18
+ * Internally performs a contract write to the [`initiateWithdrawal` function](https://github.com/ethereum-optimism/optimism/blob/283f0aa2e3358ced30ff7cbd4028c0c0c3faa140/packages/contracts-bedrock/src/L2/L2ToL1MessagePasser.sol#L73)
19
+ * on the [Optimism L2ToL1MessagePasser predeploy contract](https://github.com/ethereum-optimism/optimism/blob/283f0aa2e3358ced30ff7cbd4028c0c0c3faa140/packages/contracts-bedrock/src/L2/L2ToL1MessagePasser.sol).
20
+ *
21
+ * - Docs: https://viem.sh/op-stack/actions/initiateWithdrawal.html
22
+ *
23
+ * @param client - Client to use
24
+ * @param parameters - {@link InitiateWithdrawalParameters}
25
+ * @returns The L2 transaction hash. {@link InitiateWithdrawalReturnType}
26
+ *
27
+ * @example
28
+ * import { createWalletClient, custom, parseEther } from 'viem'
29
+ * import { base, mainnet } from 'viem/chains'
30
+ * import { walletActionsL2 } from 'viem/op-stack'
31
+ *
32
+ * const client = createWalletClient({
33
+ * chain: mainnet,
34
+ * transport: custom(window.ethereum),
35
+ * }).extend(walletActionsL2())
36
+ *
37
+ * const hash = await client.initiateWithdrawal({
38
+ * account: '0xA0Cf798816D4b9b9866b5330EEa46a18382f251e',
39
+ * args: {
40
+ * gas: 21_000n,
41
+ * to: '0x70997970c51812dc3a010c7d01b50e0d17dc79c8',
42
+ * value: parseEther('1'),
43
+ * },
44
+ * })
45
+ *
46
+ * @example
47
+ * // Account Hoisting
48
+ * import { createWalletClient, http } from 'viem'
49
+ * import { privateKeyToAccount } from 'viem/accounts'
50
+ * import { base, mainnet } from 'viem/chains'
51
+ * import { walletActionsL2 } from 'viem/op-stack'
52
+ *
53
+ * const client = createWalletClient({
54
+ * account: privateKeyToAccount('0x…'),
55
+ * chain: mainnet,
56
+ * transport: http(),
57
+ * }).extend(walletActionsL2())
58
+ *
59
+ * const hash = await client.initiateWithdrawal({
60
+ * args: {
61
+ * gas: 21_000n,
62
+ * to: '0x70997970c51812dc3a010c7d01b50e0d17dc79c8',
63
+ * value: parseEther('1'),
64
+ * },
65
+ * })
66
+ */
67
+ initiateWithdrawal: <chainOverride extends Chain | undefined = undefined>(
68
+ parameters: InitiateWithdrawalParameters<chain, account, chainOverride>,
69
+ ) => Promise<InitiateWithdrawalReturnType>
70
+ }
71
+
72
+ export function walletActionsL2() {
73
+ return <
74
+ TTransport extends Transport,
75
+ TChain extends Chain | undefined = Chain | undefined,
76
+ TAccount extends Account | undefined = Account | undefined,
77
+ >(
78
+ client: Client<TTransport, TChain, TAccount>,
79
+ ): WalletActionsL2<TChain, TAccount> => {
80
+ return {
81
+ initiateWithdrawal: (args) => initiateWithdrawal(client, args),
82
+ }
83
+ }
84
+ }
@@ -0,0 +1,15 @@
1
+ import { BaseError } from '../../../errors/base.js'
2
+ import type { Hex } from '../../../types/misc.js'
3
+
4
+ export type ReceiptContainsNoWithdrawalsErrorType =
5
+ ReceiptContainsNoWithdrawalsError & {
6
+ name: 'ReceiptContainsNoWithdrawalsError'
7
+ }
8
+ export class ReceiptContainsNoWithdrawalsError extends BaseError {
9
+ override name = 'ReceiptContainsNoWithdrawalsError'
10
+ constructor({ hash }: { hash: Hex }) {
11
+ super(
12
+ `The provided transaction receipt with hash "${hash}" contains no withdrawals.`,
13
+ )
14
+ }
15
+ }
@@ -1,3 +1,21 @@
1
+ export {
2
+ buildDepositTransaction,
3
+ type BuildDepositTransactionErrorType,
4
+ type BuildDepositTransactionParameters,
5
+ type BuildDepositTransactionReturnType,
6
+ } from './actions/buildDepositTransaction.js'
7
+ export {
8
+ buildInitiateWithdrawal,
9
+ type BuildInitiateWithdrawalErrorType,
10
+ type BuildInitiateWithdrawalParameters,
11
+ type BuildInitiateWithdrawalReturnType,
12
+ } from './actions/buildInitiateWithdrawal.js'
13
+ export {
14
+ buildProveWithdrawal,
15
+ type BuildProveWithdrawalErrorType,
16
+ type BuildProveWithdrawalParameters,
17
+ type BuildProveWithdrawalReturnType,
18
+ } from './actions/buildProveWithdrawal.js'
1
19
  export {
2
20
  depositTransaction,
3
21
  type DepositTransactionErrorType,
@@ -53,28 +71,80 @@ export {
53
71
  type EstimateTotalGasReturnType,
54
72
  } from './actions/estimateTotalGas.js'
55
73
  export {
56
- buildDepositTransaction,
57
- type BuildDepositTransactionErrorType,
58
- type BuildDepositTransactionParameters,
59
- type BuildDepositTransactionReturnType,
60
- } from './actions/buildDepositTransaction.js'
74
+ finalizeWithdrawal,
75
+ type FinalizeWithdrawalErrorType,
76
+ type FinalizeWithdrawalParameters,
77
+ type FinalizeWithdrawalReturnType,
78
+ } from './actions/finalizeWithdrawal.js'
79
+ export {
80
+ getL2Output,
81
+ type GetL2OutputErrorType,
82
+ type GetL2OutputParameters,
83
+ type GetL2OutputReturnType,
84
+ } from './actions/getL2Output.js'
85
+ export {
86
+ getTimeToFinalize,
87
+ type GetTimeToFinalizeErrorType,
88
+ type GetTimeToFinalizeParameters,
89
+ type GetTimeToFinalizeReturnType,
90
+ } from './actions/getTimeToFinalize.js'
91
+ export {
92
+ getTimeToNextL2Output,
93
+ type GetTimeToNextL2OutputErrorType,
94
+ type GetTimeToNextL2OutputParameters,
95
+ type GetTimeToNextL2OutputReturnType,
96
+ } from './actions/getTimeToNextL2Output.js'
97
+ export {
98
+ getTimeToProve,
99
+ type GetTimeToProveErrorType,
100
+ type GetTimeToProveParameters,
101
+ type GetTimeToProveReturnType,
102
+ } from './actions/getTimeToProve.js'
103
+ export {
104
+ getWithdrawalStatus,
105
+ type GetWithdrawalStatusErrorType,
106
+ type GetWithdrawalStatusParameters,
107
+ type GetWithdrawalStatusReturnType,
108
+ } from './actions/getWithdrawalStatus.js'
109
+ export {
110
+ initiateWithdrawal,
111
+ type InitiateWithdrawalErrorType,
112
+ type InitiateWithdrawalParameters,
113
+ type InitiateWithdrawalReturnType,
114
+ } from './actions/initiateWithdrawal.js'
115
+ export {
116
+ proveWithdrawal,
117
+ type ProveWithdrawalErrorType,
118
+ type ProveWithdrawalParameters,
119
+ type ProveWithdrawalReturnType,
120
+ } from './actions/proveWithdrawal.js'
121
+ export {
122
+ waitForNextL2Output,
123
+ type WaitForNextL2OutputErrorType,
124
+ type WaitForNextL2OutputParameters,
125
+ type WaitForNextL2OutputReturnType,
126
+ } from './actions/waitForNextL2Output.js'
127
+ export {
128
+ waitToFinalize,
129
+ type WaitToFinalizeErrorType,
130
+ type WaitToFinalizeParameters,
131
+ type WaitToFinalizeReturnType,
132
+ } from './actions/waitToFinalize.js'
133
+ export {
134
+ waitToProve,
135
+ type WaitToProveErrorType,
136
+ type WaitToProveParameters,
137
+ type WaitToProveReturnType,
138
+ } from './actions/waitToProve.js'
61
139
 
62
140
  export { chainConfig } from './chainConfig.js'
63
141
 
64
- export {
65
- base,
66
- baseGoerli,
67
- baseSepolia,
68
- optimism,
69
- optimismGoerli,
70
- optimismSepolia,
71
- zora,
72
- zoraSepolia,
73
- zoraTestnet,
74
- } from './chains.js'
142
+ export * from './chains.js'
75
143
 
144
+ export { publicActionsL1, type PublicActionsL1 } from './decorators/publicL1.js'
76
145
  export { publicActionsL2, type PublicActionsL2 } from './decorators/publicL2.js'
77
146
  export { walletActionsL1, type WalletActionsL1 } from './decorators/walletL1.js'
147
+ export { walletActionsL2, type WalletActionsL2 } from './decorators/walletL2.js'
78
148
 
79
149
  export {
80
150
  parseTransaction,
@@ -106,6 +176,13 @@ export type {
106
176
  OpStackTransactionReceiptOverrides,
107
177
  } from './types/transaction.js'
108
178
 
179
+ export {
180
+ extractWithdrawalMessageLogs,
181
+ type ExtractWithdrawalMessageLogsErrorType,
182
+ type ExtractWithdrawalMessageLogsParameters,
183
+ type ExtractWithdrawalMessageLogsReturnType,
184
+ } from './utils/extractWithdrawalMessageLogs.js'
185
+
109
186
  export {
110
187
  extractTransactionDepositedLogs,
111
188
  type ExtractTransactionDepositedLogsErrorType,
@@ -114,11 +191,11 @@ export {
114
191
  } from './utils/extractTransactionDepositedLogs.js'
115
192
 
116
193
  export {
117
- fromOpaqueData,
118
- type FromOpaqueDataErrorType,
119
- type FromOpaqueDataParameters,
120
- type FromOpaqueDataReturnType,
121
- } from './utils/fromOpaqueData.js'
194
+ opaqueDataToDepositData,
195
+ type OpaqueDataToDepositDataErrorType,
196
+ type OpaqueDataToDepositDataParameters,
197
+ type OpaqueDataToDepositDataReturnType,
198
+ } from './utils/opaqueDataToDepositData.js'
122
199
 
123
200
  export {
124
201
  getL2TransactionHash,
@@ -140,3 +217,17 @@ export {
140
217
  type GetSourceHashParameters,
141
218
  type GetSourceHashReturnType,
142
219
  } from './utils/getSourceHash.js'
220
+
221
+ export {
222
+ getWithdrawalHashStorageSlot,
223
+ type GetWithdrawalHashStorageSlotErrorType,
224
+ type GetWithdrawalHashStorageSlotParameters,
225
+ type GetWithdrawalHashStorageSlotReturnType,
226
+ } from './utils/getWithdrawalHashStorageSlot.js'
227
+
228
+ export {
229
+ getWithdrawals,
230
+ type GetWithdrawalsErrorType,
231
+ type GetWithdrawalsParameters,
232
+ type GetWithdrawalsReturnType,
233
+ } from './utils/getWithdrawals.js'
@@ -0,0 +1,28 @@
1
+ import type { Address } from 'abitype'
2
+ import type { Hex } from '../../../types/misc.js'
3
+
4
+ export type DepositRequest = {
5
+ /** Gas limit for transaction execution on the L2. */
6
+ gas: bigint
7
+ /** Value in wei to mint (deposit) on the L2. Debited from the caller's L1 balance. */
8
+ mint?: bigint
9
+ /** Value in wei sent with this transaction on the L2. Debited from the caller's L2 balance. */
10
+ value?: bigint
11
+ } & (
12
+ | {
13
+ /** Encoded contract method & arguments. */
14
+ data?: Hex
15
+ /** Whether or not this is a contract deployment transaction. */
16
+ isCreation?: false
17
+ /** L2 Transaction recipient. */
18
+ to?: Address
19
+ }
20
+ | {
21
+ /** Contract deployment bytecode. Required for contract deployment transactions. */
22
+ data: Hex
23
+ /** Whether or not this is a contract deployment transaction. */
24
+ isCreation: true
25
+ /** L2 Transaction recipient. Cannot exist for contract deployment transactions. */
26
+ to?: never
27
+ }
28
+ )
@@ -0,0 +1,23 @@
1
+ import type { Address } from 'abitype'
2
+ import type { Hex } from '../../../types/misc.js'
3
+
4
+ export type WithdrawalRequest = {
5
+ /** Encoded contract method & arguments. */
6
+ data?: Hex
7
+ /** Gas limit for transaction execution on the L1. */
8
+ gas: bigint
9
+ /** L1 Transaction recipient. */
10
+ to: Address
11
+ /** Value in wei to withdrawal to the L1. Debited from the caller's L2 balance. */
12
+ value?: bigint
13
+ }
14
+
15
+ export type Withdrawal = {
16
+ nonce: bigint
17
+ sender: Hex
18
+ target: Hex
19
+ value: bigint
20
+ gasLimit: bigint
21
+ data: Hex
22
+ withdrawalHash: Hex
23
+ }
@@ -0,0 +1,36 @@
1
+ import type { ErrorType } from '../../../errors/utils.js'
2
+ import type { Log } from '../../../types/log.js'
3
+ import {
4
+ type ParseEventLogsErrorType,
5
+ parseEventLogs,
6
+ } from '../../../utils/abi/parseEventLogs.js'
7
+ import { l2ToL1MessagePasserAbi } from '../abis.js'
8
+
9
+ export type ExtractWithdrawalMessageLogsParameters = {
10
+ /** An opaque array of logs. */
11
+ logs: Log[]
12
+ }
13
+
14
+ export type ExtractWithdrawalMessageLogsReturnType = Log<
15
+ bigint,
16
+ number,
17
+ false,
18
+ undefined,
19
+ true,
20
+ typeof l2ToL1MessagePasserAbi,
21
+ 'MessagePassed'
22
+ >[]
23
+
24
+ export type ExtractWithdrawalMessageLogsErrorType =
25
+ | ParseEventLogsErrorType
26
+ | ErrorType
27
+
28
+ export function extractWithdrawalMessageLogs({
29
+ logs,
30
+ }: ExtractWithdrawalMessageLogsParameters) {
31
+ return parseEventLogs({
32
+ abi: l2ToL1MessagePasserAbi,
33
+ eventName: 'MessagePassed',
34
+ logs,
35
+ })
36
+ }