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.
Files changed (474) 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/public/getBlock.d.ts +1 -1
  249. package/_types/actions/public/getBlock.d.ts.map +1 -1
  250. package/_types/actions/public/getTransaction.d.ts +1 -1
  251. package/_types/actions/public/getTransaction.d.ts.map +1 -1
  252. package/_types/actions/public/getTransactionReceipt.d.ts +1 -1
  253. package/_types/actions/public/getTransactionReceipt.d.ts.map +1 -1
  254. package/_types/actions/wallet/prepareTransactionRequest.d.ts +5 -5
  255. package/_types/actions/wallet/prepareTransactionRequest.d.ts.map +1 -1
  256. package/_types/chains/celo/chainConfig.d.ts +180 -180
  257. package/_types/chains/celo/formatters.d.ts +180 -180
  258. package/_types/chains/definitions/arbitrumSepolia.d.ts +4 -0
  259. package/_types/chains/definitions/arbitrumSepolia.d.ts.map +1 -1
  260. package/_types/chains/definitions/base.d.ts +142 -137
  261. package/_types/chains/definitions/base.d.ts.map +1 -1
  262. package/_types/chains/definitions/baseGoerli.d.ts +142 -137
  263. package/_types/chains/definitions/baseGoerli.d.ts.map +1 -1
  264. package/_types/chains/definitions/baseSepolia.d.ts +142 -137
  265. package/_types/chains/definitions/baseSepolia.d.ts.map +1 -1
  266. package/_types/chains/definitions/celo.d.ts +180 -180
  267. package/_types/chains/definitions/celoAlfajores.d.ts +180 -180
  268. package/_types/chains/definitions/celoCannoli.d.ts +180 -180
  269. package/_types/chains/definitions/fantomSonicTestnet.d.ts +38 -0
  270. package/_types/chains/definitions/fantomSonicTestnet.d.ts.map +1 -0
  271. package/_types/chains/definitions/optimism.d.ts +142 -137
  272. package/_types/chains/definitions/optimism.d.ts.map +1 -1
  273. package/_types/chains/definitions/optimismGoerli.d.ts +142 -137
  274. package/_types/chains/definitions/optimismGoerli.d.ts.map +1 -1
  275. package/_types/chains/definitions/optimismSepolia.d.ts +142 -137
  276. package/_types/chains/definitions/optimismSepolia.d.ts.map +1 -1
  277. package/_types/chains/definitions/pgn.d.ts +147 -137
  278. package/_types/chains/definitions/pgn.d.ts.map +1 -1
  279. package/_types/chains/definitions/pgnTestnet.d.ts +142 -137
  280. package/_types/chains/definitions/pgnTestnet.d.ts.map +1 -1
  281. package/_types/chains/definitions/zilliqa.d.ts +38 -0
  282. package/_types/chains/definitions/zilliqa.d.ts.map +1 -0
  283. package/_types/chains/definitions/zilliqaTestnet.d.ts +38 -0
  284. package/_types/chains/definitions/zilliqaTestnet.d.ts.map +1 -0
  285. package/_types/chains/definitions/zkSync.d.ts +24 -24
  286. package/_types/chains/definitions/zkSyncSepoliaTestnet.d.ts +533 -0
  287. package/_types/chains/definitions/zkSyncSepoliaTestnet.d.ts.map +1 -0
  288. package/_types/chains/definitions/zkSyncTestnet.d.ts +29 -24
  289. package/_types/chains/definitions/zkSyncTestnet.d.ts.map +1 -1
  290. package/_types/chains/definitions/zora.d.ts +142 -137
  291. package/_types/chains/definitions/zora.d.ts.map +1 -1
  292. package/_types/chains/definitions/zoraSepolia.d.ts +142 -137
  293. package/_types/chains/definitions/zoraSepolia.d.ts.map +1 -1
  294. package/_types/chains/definitions/zoraTestnet.d.ts +137 -137
  295. package/_types/chains/index.d.ts +5 -1
  296. package/_types/chains/index.d.ts.map +1 -1
  297. package/_types/chains/opStack/abis.d.ts +457 -0
  298. package/_types/chains/opStack/abis.d.ts.map +1 -1
  299. package/_types/chains/opStack/actions/buildDepositTransaction.d.ts +5 -3
  300. package/_types/chains/opStack/actions/buildDepositTransaction.d.ts.map +1 -1
  301. package/_types/chains/opStack/actions/buildInitiateWithdrawal.d.ts +50 -0
  302. package/_types/chains/opStack/actions/buildInitiateWithdrawal.d.ts.map +1 -0
  303. package/_types/chains/opStack/actions/buildProveWithdrawal.d.ts +48 -0
  304. package/_types/chains/opStack/actions/buildProveWithdrawal.d.ts.map +1 -0
  305. package/_types/chains/opStack/actions/depositTransaction.d.ts +18 -34
  306. package/_types/chains/opStack/actions/depositTransaction.d.ts.map +1 -1
  307. package/_types/chains/opStack/actions/estimateDepositTransactionGas.d.ts +50 -0
  308. package/_types/chains/opStack/actions/estimateDepositTransactionGas.d.ts.map +1 -0
  309. package/_types/chains/opStack/actions/estimateFinalizeWithdrawalGas.d.ts +45 -0
  310. package/_types/chains/opStack/actions/estimateFinalizeWithdrawalGas.d.ts.map +1 -0
  311. package/_types/chains/opStack/actions/estimateInitiateWithdrawalGas.d.ts +51 -0
  312. package/_types/chains/opStack/actions/estimateInitiateWithdrawalGas.d.ts.map +1 -0
  313. package/_types/chains/opStack/actions/estimateProveWithdrawalGas.d.ts +63 -0
  314. package/_types/chains/opStack/actions/estimateProveWithdrawalGas.d.ts.map +1 -0
  315. package/_types/chains/opStack/actions/finalizeWithdrawal.d.ts +49 -0
  316. package/_types/chains/opStack/actions/finalizeWithdrawal.d.ts.map +1 -0
  317. package/_types/chains/opStack/actions/getL2Output.d.ts +44 -0
  318. package/_types/chains/opStack/actions/getL2Output.d.ts.map +1 -0
  319. package/_types/chains/opStack/actions/getTimeToFinalize.d.ts +57 -0
  320. package/_types/chains/opStack/actions/getTimeToFinalize.d.ts.map +1 -0
  321. package/_types/chains/opStack/actions/getTimeToNextL2Output.d.ts +61 -0
  322. package/_types/chains/opStack/actions/getTimeToNextL2Output.d.ts.map +1 -0
  323. package/_types/chains/opStack/actions/getTimeToProve.d.ts +50 -0
  324. package/_types/chains/opStack/actions/getTimeToProve.d.ts.map +1 -0
  325. package/_types/chains/opStack/actions/getWithdrawalStatus.d.ts +48 -0
  326. package/_types/chains/opStack/actions/getWithdrawalStatus.d.ts.map +1 -0
  327. package/_types/chains/opStack/actions/initiateWithdrawal.d.ts +77 -0
  328. package/_types/chains/opStack/actions/initiateWithdrawal.d.ts.map +1 -0
  329. package/_types/chains/opStack/actions/proveWithdrawal.d.ts +67 -0
  330. package/_types/chains/opStack/actions/proveWithdrawal.d.ts.map +1 -0
  331. package/_types/chains/opStack/actions/waitForNextL2Output.d.ts +55 -0
  332. package/_types/chains/opStack/actions/waitForNextL2Output.d.ts.map +1 -0
  333. package/_types/chains/opStack/actions/waitToFinalize.d.ts +45 -0
  334. package/_types/chains/opStack/actions/waitToFinalize.d.ts.map +1 -0
  335. package/_types/chains/opStack/actions/waitToProve.d.ts +55 -0
  336. package/_types/chains/opStack/actions/waitToProve.d.ts.map +1 -0
  337. package/_types/chains/opStack/chainConfig.d.ts +136 -136
  338. package/_types/chains/opStack/chains.d.ts +2 -0
  339. package/_types/chains/opStack/chains.d.ts.map +1 -1
  340. package/_types/chains/opStack/decorators/publicL1.d.ts +386 -0
  341. package/_types/chains/opStack/decorators/publicL1.d.ts.map +1 -0
  342. package/_types/chains/opStack/decorators/publicL2.d.ts +82 -26
  343. package/_types/chains/opStack/decorators/publicL2.d.ts.map +1 -1
  344. package/_types/chains/opStack/decorators/walletL1.d.ts +57 -2
  345. package/_types/chains/opStack/decorators/walletL1.d.ts.map +1 -1
  346. package/_types/chains/opStack/decorators/walletL2.d.ts +62 -0
  347. package/_types/chains/opStack/decorators/walletL2.d.ts.map +1 -0
  348. package/_types/chains/opStack/errors/withdrawal.d.ts +12 -0
  349. package/_types/chains/opStack/errors/withdrawal.d.ts.map +1 -0
  350. package/_types/chains/opStack/formatters.d.ts +136 -136
  351. package/_types/chains/opStack/index.d.ts +21 -3
  352. package/_types/chains/opStack/index.d.ts.map +1 -1
  353. package/_types/chains/opStack/types/deposit.d.ts +25 -0
  354. package/_types/chains/opStack/types/deposit.d.ts.map +1 -0
  355. package/_types/chains/opStack/types/withdrawal.d.ts +22 -0
  356. package/_types/chains/opStack/types/withdrawal.d.ts.map +1 -0
  357. package/_types/chains/opStack/utils/extractWithdrawalMessageLogs.d.ts +137 -0
  358. package/_types/chains/opStack/utils/extractWithdrawalMessageLogs.d.ts.map +1 -0
  359. package/_types/chains/opStack/utils/getWithdrawalHashStorageSlot.d.ts +11 -0
  360. package/_types/chains/opStack/utils/getWithdrawalHashStorageSlot.d.ts.map +1 -0
  361. package/_types/chains/opStack/utils/getWithdrawals.d.ts +12 -0
  362. package/_types/chains/opStack/utils/getWithdrawals.d.ts.map +1 -0
  363. package/_types/chains/opStack/utils/opaqueDataToDepositData.d.ts +15 -0
  364. package/_types/chains/opStack/utils/opaqueDataToDepositData.d.ts.map +1 -0
  365. package/_types/chains/zksync/chainConfig.d.ts +24 -24
  366. package/_types/chains/zksync/formatters.d.ts +24 -24
  367. package/_types/clients/decorators/public.d.ts +2 -2
  368. package/_types/clients/decorators/public.d.ts.map +1 -1
  369. package/_types/clients/decorators/wallet.d.ts +2 -2
  370. package/_types/clients/decorators/wallet.d.ts.map +1 -1
  371. package/_types/errors/abi.d.ts +14 -1
  372. package/_types/errors/abi.d.ts.map +1 -1
  373. package/_types/errors/version.d.ts +1 -1
  374. package/_types/errors/version.d.ts.map +1 -1
  375. package/_types/index.d.ts +15 -1
  376. package/_types/index.d.ts.map +1 -1
  377. package/_types/types/account.d.ts +1 -1
  378. package/_types/types/account.d.ts.map +1 -1
  379. package/_types/types/eip1193.d.ts +12 -0
  380. package/_types/types/eip1193.d.ts.map +1 -1
  381. package/_types/utils/abi/getAbiItem.d.ts +2 -1
  382. package/_types/utils/abi/getAbiItem.d.ts.map +1 -1
  383. package/_types/utils/formatters/block.d.ts +1 -1
  384. package/_types/utils/formatters/block.d.ts.map +1 -1
  385. package/_types/utils/formatters/transaction.d.ts +2 -2
  386. package/_types/utils/formatters/transaction.d.ts.map +1 -1
  387. package/_types/utils/formatters/transactionReceipt.d.ts +1 -1
  388. package/_types/utils/formatters/transactionReceipt.d.ts.map +1 -1
  389. package/_types/utils/formatters/transactionRequest.d.ts +1 -1
  390. package/_types/utils/hash/ripemd160.d.ts +11 -0
  391. package/_types/utils/hash/ripemd160.d.ts.map +1 -0
  392. package/_types/utils/hash/sha256.d.ts +11 -0
  393. package/_types/utils/hash/sha256.d.ts.map +1 -0
  394. package/_types/utils/index.d.ts +2 -0
  395. package/_types/utils/index.d.ts.map +1 -1
  396. package/actions/ens/getEnsName.ts +3 -2
  397. package/actions/index.ts +31 -0
  398. package/actions/public/getBlock.ts +1 -1
  399. package/actions/public/getTransaction.ts +1 -1
  400. package/actions/public/getTransactionReceipt.ts +1 -1
  401. package/actions/wallet/prepareTransactionRequest.ts +16 -9
  402. package/chains/definitions/arbitrumSepolia.ts +4 -0
  403. package/chains/definitions/base.ts +5 -0
  404. package/chains/definitions/baseGoerli.ts +5 -0
  405. package/chains/definitions/baseSepolia.ts +5 -0
  406. package/chains/definitions/fantomSonicTestnet.ts +23 -0
  407. package/chains/definitions/optimism.ts +5 -0
  408. package/chains/definitions/optimismGoerli.ts +5 -0
  409. package/chains/definitions/optimismSepolia.ts +5 -0
  410. package/chains/definitions/pgn.ts +13 -0
  411. package/chains/definitions/pgnTestnet.ts +8 -0
  412. package/chains/definitions/zilliqa.ts +23 -0
  413. package/chains/definitions/zilliqaTestnet.ts +23 -0
  414. package/chains/definitions/zkSyncSepoliaTestnet.ts +32 -0
  415. package/chains/definitions/zkSyncTestnet.ts +5 -0
  416. package/chains/definitions/zora.ts +5 -0
  417. package/chains/definitions/zoraSepolia.ts +5 -0
  418. package/chains/index.ts +9 -0
  419. package/chains/opStack/abis.ts +367 -0
  420. package/chains/opStack/actions/buildDepositTransaction.ts +11 -6
  421. package/chains/opStack/actions/buildInitiateWithdrawal.ts +118 -0
  422. package/chains/opStack/actions/buildProveWithdrawal.ts +149 -0
  423. package/chains/opStack/actions/depositTransaction.ts +50 -44
  424. package/chains/opStack/actions/estimateDepositTransactionGas.ts +138 -0
  425. package/chains/opStack/actions/estimateFinalizeWithdrawalGas.ts +118 -0
  426. package/chains/opStack/actions/estimateInitiateWithdrawalGas.ts +118 -0
  427. package/chains/opStack/actions/estimateProveWithdrawalGas.ts +139 -0
  428. package/chains/opStack/actions/finalizeWithdrawal.ts +130 -0
  429. package/chains/opStack/actions/getL2Output.ts +89 -0
  430. package/chains/opStack/actions/getTimeToFinalize.ts +122 -0
  431. package/chains/opStack/actions/getTimeToNextL2Output.ts +162 -0
  432. package/chains/opStack/actions/getTimeToProve.ts +79 -0
  433. package/chains/opStack/actions/getWithdrawalStatus.ts +152 -0
  434. package/chains/opStack/actions/initiateWithdrawal.ts +153 -0
  435. package/chains/opStack/actions/proveWithdrawal.ts +151 -0
  436. package/chains/opStack/actions/waitForNextL2Output.ts +111 -0
  437. package/chains/opStack/actions/waitToFinalize.ts +64 -0
  438. package/chains/opStack/actions/waitToProve.ts +99 -0
  439. package/chains/opStack/chains.ts +2 -0
  440. package/chains/opStack/decorators/publicL1.ts +514 -0
  441. package/chains/opStack/decorators/publicL2.ts +129 -37
  442. package/chains/opStack/decorators/walletL1.ts +71 -2
  443. package/chains/opStack/decorators/walletL2.ts +84 -0
  444. package/chains/opStack/errors/withdrawal.ts +15 -0
  445. package/chains/opStack/index.ts +112 -21
  446. package/chains/opStack/types/deposit.ts +28 -0
  447. package/chains/opStack/types/withdrawal.ts +23 -0
  448. package/chains/opStack/utils/extractWithdrawalMessageLogs.ts +36 -0
  449. package/chains/opStack/utils/getL2TransactionHash.ts +2 -2
  450. package/chains/opStack/utils/getWithdrawalHashStorageSlot.ts +29 -0
  451. package/chains/opStack/utils/getWithdrawals.ts +25 -0
  452. package/chains/opStack/utils/{fromOpaqueData.ts → opaqueDataToDepositData.ts} +9 -4
  453. package/clients/decorators/public.ts +2 -2
  454. package/clients/decorators/wallet.ts +2 -2
  455. package/errors/abi.ts +22 -1
  456. package/errors/version.ts +1 -1
  457. package/index.ts +40 -0
  458. package/package.json +1 -1
  459. package/types/account.ts +1 -1
  460. package/types/eip1193.ts +12 -0
  461. package/utils/abi/getAbiItem.ts +71 -2
  462. package/utils/formatters/block.ts +1 -1
  463. package/utils/formatters/transaction.ts +1 -1
  464. package/utils/formatters/transactionReceipt.ts +1 -1
  465. package/utils/hash/ripemd160.ts +31 -0
  466. package/utils/hash/sha256.ts +31 -0
  467. package/utils/index.ts +2 -0
  468. package/_cjs/chains/opStack/utils/fromOpaqueData.js.map +0 -1
  469. package/_esm/chains/opStack/utils/fromOpaqueData.js.map +0 -1
  470. package/_types/chains/opStack/utils/fromOpaqueData.d.ts +0 -15
  471. package/_types/chains/opStack/utils/fromOpaqueData.d.ts.map +0 -1
  472. package/chains/celo/package.json +0 -6
  473. package/chains/opStack/package.json +0 -6
  474. package/chains/zksync/package.json +0 -6
@@ -0,0 +1,99 @@
1
+ import type { Client } from '../../../clients/createClient.js'
2
+ import type { Transport } from '../../../clients/transports/createTransport.js'
3
+ import type { ErrorType } from '../../../errors/utils.js'
4
+ import type { Account } from '../../../types/account.js'
5
+ import type {
6
+ Chain,
7
+ DeriveChain,
8
+ GetChainParameter,
9
+ } from '../../../types/chain.js'
10
+ import type { TransactionReceipt } from '../../../types/transaction.js'
11
+ import { ReceiptContainsNoWithdrawalsError } from '../errors/withdrawal.js'
12
+ import type { GetContractAddressParameter } from '../types/contract.js'
13
+ import type { Withdrawal } from '../types/withdrawal.js'
14
+ import {
15
+ type GetWithdrawalsErrorType,
16
+ getWithdrawals,
17
+ } from '../utils/getWithdrawals.js'
18
+ import {
19
+ type WaitForNextL2OutputErrorType,
20
+ type WaitForNextL2OutputReturnType,
21
+ waitForNextL2Output,
22
+ } from './waitForNextL2Output.js'
23
+
24
+ export type WaitToProveParameters<
25
+ chain extends Chain | undefined = Chain | undefined,
26
+ chainOverride extends Chain | undefined = Chain | undefined,
27
+ _derivedChain extends Chain | undefined = DeriveChain<chain, chainOverride>,
28
+ > = GetChainParameter<chain, chainOverride> &
29
+ GetContractAddressParameter<_derivedChain, 'l2OutputOracle'> & {
30
+ receipt: TransactionReceipt
31
+ /**
32
+ * Polling frequency (in ms). Defaults to Client's pollingInterval config.
33
+ * @default client.pollingInterval
34
+ */
35
+ pollingInterval?: number
36
+ }
37
+ export type WaitToProveReturnType = {
38
+ withdrawal: Withdrawal
39
+ output: WaitForNextL2OutputReturnType
40
+ }
41
+ export type WaitToProveErrorType =
42
+ | GetWithdrawalsErrorType
43
+ | WaitForNextL2OutputErrorType
44
+ | ErrorType
45
+
46
+ /**
47
+ * Waits until the L2 withdrawal transaction is ready to be proved. Used for the [Withdrawal](/op-stack/guides/withdrawals.html) flow.
48
+ *
49
+ * - Docs: https://viem.sh/op-stack/actions/waitToProve.html
50
+ *
51
+ * @param client - Client to use
52
+ * @param parameters - {@link WaitToProveParameters}
53
+ * @returns The L2 output and withdrawal message. {@link WaitToProveReturnType}
54
+ *
55
+ * @example
56
+ * import { createPublicClient, http } from 'viem'
57
+ * import { getBlockNumber } from 'viem/actions'
58
+ * import { mainnet, optimism } from 'viem/chains'
59
+ * import { waitToProve } from 'viem/op-stack'
60
+ *
61
+ * const publicClientL1 = createPublicClient({
62
+ * chain: mainnet,
63
+ * transport: http(),
64
+ * })
65
+ * const publicClientL2 = createPublicClient({
66
+ * chain: optimism,
67
+ * transport: http(),
68
+ * })
69
+ *
70
+ * const receipt = await getTransactionReceipt(publicClientL2, { hash: '0x...' })
71
+ * await waitToProve(publicClientL1, {
72
+ * receipt,
73
+ * targetChain: optimism
74
+ * })
75
+ */
76
+ export async function waitToProve<
77
+ chain extends Chain | undefined,
78
+ account extends Account | undefined,
79
+ chainOverride extends Chain | undefined = undefined,
80
+ >(
81
+ client: Client<Transport, chain, account>,
82
+ parameters: WaitToProveParameters<chain, chainOverride>,
83
+ ): Promise<WaitToProveReturnType> {
84
+ const { receipt } = parameters
85
+
86
+ const [withdrawal] = getWithdrawals(receipt)
87
+
88
+ if (!withdrawal)
89
+ throw new ReceiptContainsNoWithdrawalsError({
90
+ hash: receipt.transactionHash,
91
+ })
92
+
93
+ const output = await waitForNextL2Output(client, {
94
+ ...parameters,
95
+ l2BlockNumber: receipt.blockNumber,
96
+ })
97
+
98
+ return { output, withdrawal }
99
+ }
@@ -4,6 +4,8 @@ export { baseSepolia } from '../definitions/baseSepolia.js'
4
4
  export { optimism } from '../definitions/optimism.js'
5
5
  export { optimismGoerli } from '../definitions/optimismGoerli.js'
6
6
  export { optimismSepolia } from '../definitions/optimismSepolia.js'
7
+ export { pgn } from '../definitions/pgn.js'
8
+ export { pgnTestnet } from '../definitions/pgnTestnet.js'
7
9
  export { zora } from '../definitions/zora.js'
8
10
  export { zoraSepolia } from '../definitions/zoraSepolia.js'
9
11
  export { zoraTestnet } from '../definitions/zoraTestnet.js'
@@ -0,0 +1,514 @@
1
+ import type { Address } from 'abitype'
2
+ import type { Client } from '../../../clients/createClient.js'
3
+ import type { Transport } from '../../../clients/transports/createTransport.js'
4
+ import type { Account } from '../../../types/account.js'
5
+ import type { Chain } from '../../../types/chain.js'
6
+ import {
7
+ type BuildInitiateWithdrawalParameters,
8
+ type BuildInitiateWithdrawalReturnType,
9
+ buildInitiateWithdrawal,
10
+ } from '../actions/buildInitiateWithdrawal.js'
11
+ import {
12
+ type EstimateDepositTransactionGasParameters,
13
+ type EstimateDepositTransactionGasReturnType,
14
+ estimateDepositTransactionGas,
15
+ } from '../actions/estimateDepositTransactionGas.js'
16
+ import {
17
+ type EstimateFinalizeWithdrawalGasParameters,
18
+ type EstimateFinalizeWithdrawalGasReturnType,
19
+ estimateFinalizeWithdrawalGas,
20
+ } from '../actions/estimateFinalizeWithdrawalGas.js'
21
+ import {
22
+ type EstimateProveWithdrawalGasParameters,
23
+ type EstimateProveWithdrawalGasReturnType,
24
+ estimateProveWithdrawalGas,
25
+ } from '../actions/estimateProveWithdrawalGas.js'
26
+ import {
27
+ type GetL2OutputParameters,
28
+ type GetL2OutputReturnType,
29
+ getL2Output,
30
+ } from '../actions/getL2Output.js'
31
+ import {
32
+ type GetTimeToFinalizeParameters,
33
+ type GetTimeToFinalizeReturnType,
34
+ getTimeToFinalize,
35
+ } from '../actions/getTimeToFinalize.js'
36
+ import {
37
+ type GetTimeToNextL2OutputParameters,
38
+ type GetTimeToNextL2OutputReturnType,
39
+ getTimeToNextL2Output,
40
+ } from '../actions/getTimeToNextL2Output.js'
41
+ import {
42
+ type GetTimeToProveParameters,
43
+ type GetTimeToProveReturnType,
44
+ getTimeToProve,
45
+ } from '../actions/getTimeToProve.js'
46
+ import {
47
+ type GetWithdrawalStatusParameters,
48
+ type GetWithdrawalStatusReturnType,
49
+ getWithdrawalStatus,
50
+ } from '../actions/getWithdrawalStatus.js'
51
+ import {
52
+ type WaitForNextL2OutputParameters,
53
+ type WaitForNextL2OutputReturnType,
54
+ waitForNextL2Output,
55
+ } from '../actions/waitForNextL2Output.js'
56
+ import {
57
+ type WaitToFinalizeParameters,
58
+ type WaitToFinalizeReturnType,
59
+ waitToFinalize,
60
+ } from '../actions/waitToFinalize.js'
61
+ import {
62
+ type WaitToProveParameters,
63
+ type WaitToProveReturnType,
64
+ waitToProve,
65
+ } from '../actions/waitToProve.js'
66
+
67
+ export type PublicActionsL1<
68
+ chain extends Chain | undefined = Chain | undefined,
69
+ account extends Account | undefined = Account | undefined,
70
+ > = {
71
+ /**
72
+ * Prepares parameters for a [deposit transaction](https://github.com/ethereum-optimism/optimism/blob/develop/specs/deposits.md) to be initiated on an L1.
73
+ *
74
+ * - Docs: https://viem.sh/op-stack/actions/buildInitiateWithdrawal.html
75
+ *
76
+ * @param client - Client to use
77
+ * @param parameters - {@link BuildInitiateWithdrawalParameters}
78
+ * @returns Parameters for `depositTransaction`. {@link DepositTransactionReturnType}
79
+ *
80
+ * @example
81
+ * import { createWalletClient, http, parseEther } from 'viem'
82
+ * import { base } from 'viem/chains'
83
+ * import { publicActionsL1 } from 'viem/op-stack'
84
+ *
85
+ * const client = createWalletClient({
86
+ * chain: base,
87
+ * transport: http(),
88
+ * }).extend(publicActionsL1())
89
+ *
90
+ * const args = await client.buildInitiateWithdrawal({
91
+ * account: '0xA0Cf798816D4b9b9866b5330EEa46a18382f251e',
92
+ * to: '0x70997970c51812dc3a010c7d01b50e0d17dc79c8',
93
+ * value: parseEther('1'),
94
+ * })
95
+ */
96
+ buildInitiateWithdrawal: <
97
+ chainOverride extends Chain | undefined = undefined,
98
+ accountOverride extends Account | Address | undefined = undefined,
99
+ >(
100
+ parameters: BuildInitiateWithdrawalParameters<
101
+ chain,
102
+ account,
103
+ chainOverride,
104
+ accountOverride
105
+ >,
106
+ ) => Promise<BuildInitiateWithdrawalReturnType<account, accountOverride>>
107
+ /**
108
+ * 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.
109
+ *
110
+ * - Docs: https://viem.sh/op-stack/actions/estimateDepositTransactionGas.html
111
+ *
112
+ * @param client - Client to use
113
+ * @param parameters - {@link EstimateDepositTransactionGasParameters}
114
+ * @returns The L1 transaction hash. {@link EstimateDepositTransactionGasReturnType}
115
+ *
116
+ * @example
117
+ * import { createPublicClient, custom, parseEther } from 'viem'
118
+ * import { base, mainnet } from 'viem/chains'
119
+ * import { publicActionsL1 } from 'viem/op-stack'
120
+ *
121
+ * const client = createPublicClient({
122
+ * chain: mainnet,
123
+ * transport: custom(window.ethereum),
124
+ * }).extend(publicActionsL1())
125
+ *
126
+ * const gas = await client.estimateDepositTransactionGas({
127
+ * account: '0xA0Cf798816D4b9b9866b5330EEa46a18382f251e',
128
+ * args: {
129
+ * gas: 21_000n,
130
+ * to: '0x70997970c51812dc3a010c7d01b50e0d17dc79c8',
131
+ * value: parseEther('1'),
132
+ * },
133
+ * targetChain: base,
134
+ * })
135
+ */
136
+ estimateDepositTransactionGas: <
137
+ chainOverride extends Chain | undefined = undefined,
138
+ >(
139
+ parameters: EstimateDepositTransactionGasParameters<
140
+ chain,
141
+ account,
142
+ chainOverride
143
+ >,
144
+ ) => Promise<EstimateDepositTransactionGasReturnType>
145
+ /**
146
+ * Estimates gas required to prove a withdrawal that occurred on an L2.
147
+ *
148
+ * - Docs: https://viem.sh/op-stack/actions/estimateProveWithdrawalGas.html
149
+ *
150
+ * @param client - Client to use
151
+ * @param parameters - {@link EstimateProveWithdrawalGasParameters}
152
+ * @returns Estimated gas. {@link EstimateProveWithdrawalGasReturnType}
153
+ *
154
+ * @example
155
+ * import { createPublicClient, http, parseEther } from 'viem'
156
+ * import { base, mainnet } from 'viem/chains'
157
+ * import { publicActionsL1 } from 'viem/op-stack'
158
+ *
159
+ * const client = createPublicClient({
160
+ * chain: mainnet,
161
+ * transport: http(),
162
+ * }).extend(publicActionsL1())
163
+ *
164
+ * const gas = await client.estimateProveWithdrawalGas({
165
+ * account: '0xA0Cf798816D4b9b9866b5330EEa46a18382f251e',
166
+ * l2OutputIndex: 4529n,
167
+ * outputRootProof: { ... },
168
+ * targetChain: optimism,
169
+ * withdrawalProof: [ ... ],
170
+ * withdrawal: { ... },
171
+ * })
172
+ */
173
+ estimateProveWithdrawalGas: <
174
+ chainOverride extends Chain | undefined = undefined,
175
+ >(
176
+ parameters: EstimateProveWithdrawalGasParameters<
177
+ chain,
178
+ account,
179
+ chainOverride
180
+ >,
181
+ ) => Promise<EstimateProveWithdrawalGasReturnType>
182
+ /**
183
+ * Estimates gas required to finalize a withdrawal that occurred on an L2.
184
+ *
185
+ * - Docs: https://viem.sh/op-stack/actions/estimateFinalizeWithdrawalGas.html
186
+ *
187
+ * @param client - Client to use
188
+ * @param parameters - {@link EstimateFinalizeWithdrawalGasParameters}
189
+ * @returns Estimated gas. {@link EstimateFinalizeWithdrawalGasReturnType}
190
+ *
191
+ * @example
192
+ * import { createPublicClient, http, parseEther } from 'viem'
193
+ * import { base, mainnet } from 'viem/chains'
194
+ * import { publicActionsL1 } from 'viem/op-stack'
195
+ *
196
+ * const client = createPublicClient({
197
+ * chain: mainnet,
198
+ * transport: http(),
199
+ * }).extend(publicActionsL1())
200
+ *
201
+ * const gas = await client.estimateFinalizeWithdrawalGas({
202
+ * account: '0xA0Cf798816D4b9b9866b5330EEa46a18382f251e',
203
+ * targetChain: optimism,
204
+ * withdrawal: { ... },
205
+ * })
206
+ */
207
+ estimateFinalizeWithdrawalGas: <
208
+ chainOverride extends Chain | undefined = undefined,
209
+ >(
210
+ parameters: EstimateFinalizeWithdrawalGasParameters<
211
+ chain,
212
+ account,
213
+ chainOverride
214
+ >,
215
+ ) => Promise<EstimateFinalizeWithdrawalGasReturnType>
216
+ /**
217
+ * Retrieves the first L2 output proposal that occurred after a provided block number. Used for the [Withdrawal](/op-stack/guides/withdrawals.html) flow.
218
+ *
219
+ * - Docs: https://viem.sh/op-stack/actions/getL2Output.html
220
+ *
221
+ * @param client - Client to use
222
+ * @param parameters - {@link GetL2OutputParameters}
223
+ * @returns The L2 output. {@link GetL2OutputReturnType}
224
+ *
225
+ * @example
226
+ * import { createPublicClient, http } from 'viem'
227
+ * import { mainnet, optimism } from 'viem/chains'
228
+ * import { publicActionsL1 } from 'viem/op-stack'
229
+ *
230
+ * const publicClientL1 = createPublicClient({
231
+ * chain: mainnet,
232
+ * transport: http(),
233
+ * }).extend(publicActionsL1())
234
+ *
235
+ * const output = await publicClientL1.getL2Output({
236
+ * l2BlockNumber: 69420n,
237
+ * targetChain: optimism
238
+ * })
239
+ */
240
+ getL2Output: <chainOverride extends Chain | undefined = undefined>(
241
+ parameters: GetL2OutputParameters<chain, chainOverride>,
242
+ ) => Promise<GetL2OutputReturnType>
243
+ /**
244
+ * Returns the time until the withdrawal transaction can be finalized. Used for the [Withdrawal](/op-stack/guides/withdrawals.html) flow.
245
+ *
246
+ * - Docs: https://viem.sh/op-stack/actions/getTimeToFinalize.html
247
+ *
248
+ * @param client - Client to use
249
+ * @param parameters - {@link GetTimeToFinalizeParameters}
250
+ * @returns Time until finalize. {@link GetTimeToFinalizeReturnType}
251
+ *
252
+ * @example
253
+ * import { createPublicClient, http } from 'viem'
254
+ * import { getBlockNumber } from 'viem/actions'
255
+ * import { mainnet, optimism } from 'viem/chains'
256
+ * import { publicActionsL1 } from 'viem/op-stack'
257
+ *
258
+ * const publicClientL1 = createPublicClient({
259
+ * chain: mainnet,
260
+ * transport: http(),
261
+ * }).extend(publicActionsL1())
262
+ * const publicClientL2 = createPublicClient({
263
+ * chain: optimism,
264
+ * transport: http(),
265
+ * })
266
+ *
267
+ * const receipt = await publicClientL2.getTransactionReceipt({
268
+ * hash: '0x9a2f4283636ddeb9ac32382961b22c177c9e86dd3b283735c154f897b1a7ff4a',
269
+ * })
270
+ *
271
+ * const [withdrawal] = getWithdrawals(receipt)
272
+ *
273
+ * const { seconds } = await publicClientL1.getTimeToFinalize({
274
+ * withdrawalHash: withdrawal.withdrawalHash,
275
+ * targetChain: optimism
276
+ * })
277
+ */
278
+ getTimeToFinalize: <chainOverride extends Chain | undefined = undefined>(
279
+ parameters: GetTimeToFinalizeParameters<chain, chainOverride>,
280
+ ) => Promise<GetTimeToFinalizeReturnType>
281
+ /**
282
+ * Returns the time until the next L2 output (after a provided block number) is submitted. Used for the [Withdrawal](/op-stack/guides/withdrawals.html) flow.
283
+ *
284
+ * - Docs: https://viem.sh/op-stack/actions/getTimeToNextL2Output.html
285
+ *
286
+ * @param client - Client to use
287
+ * @param parameters - {@link GetTimeToNextL2OutputParameters}
288
+ * @returns The L2 transaction hash. {@link GetTimeToNextL2OutputReturnType}
289
+ *
290
+ * @example
291
+ * import { createPublicClient, http } from 'viem'
292
+ * import { mainnet, optimism } from 'viem/chains'
293
+ * import { publicActionsL1 } from 'viem/op-stack'
294
+ *
295
+ * const publicClientL1 = createPublicClient({
296
+ * chain: mainnet,
297
+ * transport: http(),
298
+ * }).extend(publicActionsL1())
299
+ * const publicClientL2 = createPublicClient({
300
+ * chain: optimism,
301
+ * transport: http(),
302
+ * })
303
+ *
304
+ * const l2BlockNumber = await publicClientL2.getBlockNumber()
305
+ * const { seconds } = await publicClientL1.getTimeToNextL2Output({
306
+ * l2BlockNumber,
307
+ * targetChain: optimism
308
+ * })
309
+ */
310
+ getTimeToNextL2Output: <chainOverride extends Chain | undefined = undefined>(
311
+ parameters: GetTimeToNextL2OutputParameters<chain, chainOverride>,
312
+ ) => Promise<GetTimeToNextL2OutputReturnType>
313
+ /**
314
+ * Returns the time until the withdrawal transaction can be finalized. Used for the [Withdrawal](/op-stack/guides/withdrawals.html) flow.
315
+ *
316
+ * - Docs: https://viem.sh/op-stack/actions/getTimeToFinalize.html
317
+ *
318
+ * @param client - Client to use
319
+ * @param parameters - {@link GetTimeToFinalizeParameters}
320
+ * @returns Time until finalize. {@link GetTimeToFinalizeReturnType}
321
+ *
322
+ * @example
323
+ * import { createPublicClient, http } from 'viem'
324
+ * import { getBlockNumber } from 'viem/actions'
325
+ * import { mainnet, optimism } from 'viem/chains'
326
+ * import { publicActionsL1 } from 'viem/op-stack'
327
+ *
328
+ * const publicClientL1 = createPublicClient({
329
+ * chain: mainnet,
330
+ * transport: http(),
331
+ * }).extend(publicActionsL1())
332
+ * const publicClientL2 = createPublicClient({
333
+ * chain: optimism,
334
+ * transport: http(),
335
+ * })
336
+ *
337
+ * const receipt = await publicClientL2.getTransactionReceipt({
338
+ * hash: '0x9a2f4283636ddeb9ac32382961b22c177c9e86dd3b283735c154f897b1a7ff4a',
339
+ * })
340
+ *
341
+ * const [withdrawal] = getWithdrawals(receipt)
342
+ *
343
+ * const { seconds } = await publicClientL1.getTimeToFinalize({
344
+ * withdrawalHash: withdrawal.withdrawalHash,
345
+ * targetChain: optimism
346
+ * })
347
+ */
348
+ getTimeToProve: <chainOverride extends Chain | undefined = undefined>(
349
+ parameters: GetTimeToProveParameters<chain, chainOverride>,
350
+ ) => Promise<GetTimeToProveReturnType>
351
+ /**
352
+ * Returns the current status of a withdrawal. Used for the [Withdrawal](/op-stack/guides/withdrawals.html) flow.
353
+ *
354
+ * - Docs: https://viem.sh/op-stack/actions/getWithdrawalStatus.html
355
+ *
356
+ * @param client - Client to use
357
+ * @param parameters - {@link GetWithdrawalStatusParameters}
358
+ * @returns Status of the withdrawal. {@link GetWithdrawalStatusReturnType}
359
+ *
360
+ * @example
361
+ * import { createPublicClient, http } from 'viem'
362
+ * import { getBlockNumber } from 'viem/actions'
363
+ * import { mainnet, optimism } from 'viem/chains'
364
+ * import { publicActionsL1 } from 'viem/op-stack'
365
+ *
366
+ * const publicClientL1 = createPublicClient({
367
+ * chain: mainnet,
368
+ * transport: http(),
369
+ * }).extend(publicActionsL1())
370
+ * const publicClientL2 = createPublicClient({
371
+ * chain: optimism,
372
+ * transport: http(),
373
+ * })
374
+ *
375
+ * const receipt = await publicClientL2.getTransactionReceipt({ hash: '0x...' })
376
+ * const status = await publicClientL1.getWithdrawalStatus({
377
+ * receipt,
378
+ * targetChain: optimism
379
+ * })
380
+ */
381
+ getWithdrawalStatus: <chainOverride extends Chain | undefined = undefined>(
382
+ parameters: GetWithdrawalStatusParameters<chain, chainOverride>,
383
+ ) => Promise<GetWithdrawalStatusReturnType>
384
+ /**
385
+ * Waits for the next L2 output (after the provided block number) to be submitted.
386
+ *
387
+ * - Docs: https://viem.sh/op-stack/actions/waitForNextL2Output.html
388
+ *
389
+ * @param client - Client to use
390
+ * @param parameters - {@link WaitForNextL2OutputParameters}
391
+ * @returns The L2 transaction hash. {@link WaitForNextL2OutputReturnType}
392
+ *
393
+ * @example
394
+ * import { createPublicClient, http } from 'viem'
395
+ * import { mainnet, optimism } from 'viem/chains'
396
+ * import { publicActionsL1 } from 'viem/op-stack'
397
+ *
398
+ * const publicClientL1 = createPublicClient({
399
+ * chain: mainnet,
400
+ * transport: http(),
401
+ * }).extend(publicActionsL1())
402
+ * const publicClientL2 = createPublicClient({
403
+ * chain: optimism,
404
+ * transport: http(),
405
+ * })
406
+ *
407
+ * const l2BlockNumber = await getBlockNumber(publicClientL2)
408
+ * await waitForNextL2Output(publicClientL1, {
409
+ * l2BlockNumber,
410
+ * targetChain: optimism
411
+ * })
412
+ */
413
+ waitForNextL2Output: <chainOverride extends Chain | undefined = undefined>(
414
+ parameters: WaitForNextL2OutputParameters<chain, chainOverride>,
415
+ ) => Promise<WaitForNextL2OutputReturnType>
416
+ /**
417
+ * Waits until the withdrawal transaction can be finalized. Used for the [Withdrawal](/op-stack/guides/withdrawals.html) flow.
418
+ *
419
+ * - Docs: https://viem.sh/op-stack/actions/waitToFinalize.html
420
+ *
421
+ * @param client - Client to use
422
+ * @param parameters - {@link WaitToFinalizeParameters}
423
+ *
424
+ * @example
425
+ * import { createPublicClient, http } from 'viem'
426
+ * import { getBlockNumber } from 'viem/actions'
427
+ * import { mainnet, optimism } from 'viem/chains'
428
+ * import { publicActionsL1 } from 'viem/op-stack'
429
+ *
430
+ * const publicClientL1 = createPublicClient({
431
+ * chain: mainnet,
432
+ * transport: http(),
433
+ * }).extend(publicActionsL1)
434
+ * const publicClientL2 = createPublicClient({
435
+ * chain: optimism,
436
+ * transport: http(),
437
+ * })
438
+ *
439
+ * const receipt = await getTransactionReceipt(publicClientL2, {
440
+ * hash: '0x9a2f4283636ddeb9ac32382961b22c177c9e86dd3b283735c154f897b1a7ff4a',
441
+ * })
442
+ *
443
+ * const [withdrawal] = getWithdrawals(receipt)
444
+ *
445
+ * await publicClientL1.waitToFinalize({
446
+ * withdrawalHash: withdrawal.withdrawalHash,
447
+ * targetChain: optimism
448
+ * })
449
+ */
450
+ waitToFinalize: <chainOverride extends Chain | undefined = undefined>(
451
+ parameters: WaitToFinalizeParameters<chain, chainOverride>,
452
+ ) => Promise<WaitToFinalizeReturnType>
453
+ /**
454
+ * Waits until the L2 withdrawal transaction is provable. Used for the [Withdrawal](/op-stack/guides/withdrawals.html) flow.
455
+ *
456
+ * - Docs: https://viem.sh/op-stack/actions/waitToProve.html
457
+ *
458
+ * @param client - Client to use
459
+ * @param parameters - {@link WaitToProveParameters}
460
+ * @returns The L2 output and withdrawal message. {@link WaitToProveReturnType}
461
+ *
462
+ * @example
463
+ * import { createPublicClient, http } from 'viem'
464
+ * import { getBlockNumber } from 'viem/actions'
465
+ * import { mainnet, optimism } from 'viem/chains'
466
+ * import { publicActionsL1 } from 'viem/op-stack'
467
+ *
468
+ * const publicClientL1 = createPublicClient({
469
+ * chain: mainnet,
470
+ * transport: http(),
471
+ * }).extend(publicActionsL1)
472
+ * const publicClientL2 = createPublicClient({
473
+ * chain: optimism,
474
+ * transport: http(),
475
+ * })
476
+ *
477
+ * const receipt = await publicClientL2.getTransactionReceipt({ hash: '0x...' })
478
+ * await publicClientL1.waitToProve({
479
+ * receipt,
480
+ * targetChain: optimism
481
+ * })
482
+ */
483
+ waitToProve: <chainOverride extends Chain | undefined = undefined>(
484
+ parameters: WaitToProveParameters<chain, chainOverride>,
485
+ ) => Promise<WaitToProveReturnType>
486
+ }
487
+
488
+ export function publicActionsL1() {
489
+ return <
490
+ TTransport extends Transport,
491
+ TChain extends Chain | undefined = Chain | undefined,
492
+ TAccount extends Account | undefined = Account | undefined,
493
+ >(
494
+ client: Client<TTransport, TChain, TAccount>,
495
+ ): PublicActionsL1<TChain, TAccount> => {
496
+ return {
497
+ buildInitiateWithdrawal: (args) => buildInitiateWithdrawal(client, args),
498
+ estimateDepositTransactionGas: (args) =>
499
+ estimateDepositTransactionGas(client, args),
500
+ estimateFinalizeWithdrawalGas: (args) =>
501
+ estimateFinalizeWithdrawalGas(client, args),
502
+ estimateProveWithdrawalGas: (args) =>
503
+ estimateProveWithdrawalGas(client, args),
504
+ getL2Output: (args) => getL2Output(client, args),
505
+ getTimeToFinalize: (args) => getTimeToFinalize(client, args),
506
+ getTimeToNextL2Output: (args) => getTimeToNextL2Output(client, args),
507
+ getTimeToProve: (args) => getTimeToProve(client, args),
508
+ getWithdrawalStatus: (args) => getWithdrawalStatus(client, args),
509
+ waitForNextL2Output: (args) => waitForNextL2Output(client, args),
510
+ waitToFinalize: (args) => waitToFinalize(client, args),
511
+ waitToProve: (args) => waitToProve(client, args),
512
+ }
513
+ }
514
+ }