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
@@ -0,0 +1,118 @@
1
+ import type { Address } from 'abitype'
2
+ import {
3
+ type EstimateContractGasErrorType,
4
+ type EstimateContractGasParameters,
5
+ estimateContractGas,
6
+ } from '../../../actions/public/estimateContractGas.js'
7
+ import type { Client } from '../../../clients/createClient.js'
8
+ import type { Transport } from '../../../clients/transports/createTransport.js'
9
+ import type { ErrorType } from '../../../errors/utils.js'
10
+ import type { Account, GetAccountParameter } from '../../../types/account.js'
11
+ import type {
12
+ Chain,
13
+ DeriveChain,
14
+ GetChainParameter,
15
+ } from '../../../types/chain.js'
16
+ import type { UnionEvaluate, UnionOmit } from '../../../types/utils.js'
17
+ import type { FormattedTransactionRequest } from '../../../utils/formatters/transactionRequest.js'
18
+ import { portalAbi } from '../abis.js'
19
+ import type { GetContractAddressParameter } from '../types/contract.js'
20
+ import type { Withdrawal } from '../types/withdrawal.js'
21
+
22
+ export type EstimateFinalizeWithdrawalGasParameters<
23
+ chain extends Chain | undefined = Chain | undefined,
24
+ account extends Account | undefined = Account | undefined,
25
+ chainOverride extends Chain | undefined = Chain | undefined,
26
+ _derivedChain extends Chain | undefined = DeriveChain<chain, chainOverride>,
27
+ > = UnionEvaluate<
28
+ UnionOmit<
29
+ FormattedTransactionRequest<_derivedChain>,
30
+ | 'accessList'
31
+ | 'data'
32
+ | 'from'
33
+ | 'gas'
34
+ | 'gasPrice'
35
+ | 'to'
36
+ | 'type'
37
+ | 'value'
38
+ >
39
+ > &
40
+ GetAccountParameter<account, Account | Address> &
41
+ GetChainParameter<chain, chainOverride> &
42
+ GetContractAddressParameter<_derivedChain, 'portal'> & {
43
+ /** Gas limit for transaction execution on the L2. */
44
+ gas?: bigint | null
45
+ withdrawal: Withdrawal
46
+ }
47
+ export type EstimateFinalizeWithdrawalGasReturnType = bigint
48
+ export type EstimateFinalizeWithdrawalGasErrorType =
49
+ | EstimateContractGasErrorType
50
+ | ErrorType
51
+
52
+ /**
53
+ * Estimates gas required to finalize a withdrawal that occurred on an L2.
54
+ *
55
+ * - Docs: https://viem.sh/op-stack/actions/estimateFinalizeWithdrawalGas.html
56
+ *
57
+ * @param client - Client to use
58
+ * @param parameters - {@link EstimateFinalizeWithdrawalGasParameters}
59
+ * @returns Estimated gas. {@link EstimateFinalizeWithdrawalGasReturnType}
60
+ *
61
+ * @example
62
+ * import { createPublicClient, http, parseEther } from 'viem'
63
+ * import { base, mainnet } from 'viem/chains'
64
+ * import { estimateFinalizeWithdrawalGas } from 'viem/op-stack'
65
+ *
66
+ * const client = createPublicClient({
67
+ * chain: mainnet,
68
+ * transport: http(),
69
+ * })
70
+ *
71
+ * const gas = await estimateFinalizeWithdrawalGas(client, {
72
+ * account: '0xA0Cf798816D4b9b9866b5330EEa46a18382f251e',
73
+ * targetChain: optimism,
74
+ * withdrawal: { ... },
75
+ * })
76
+ */
77
+ export async function estimateFinalizeWithdrawalGas<
78
+ chain extends Chain | undefined,
79
+ account extends Account | undefined,
80
+ chainOverride extends Chain | undefined = undefined,
81
+ >(
82
+ client: Client<Transport, chain, account>,
83
+ parameters: EstimateFinalizeWithdrawalGasParameters<
84
+ chain,
85
+ account,
86
+ chainOverride
87
+ >,
88
+ ) {
89
+ const {
90
+ account,
91
+ chain = client.chain,
92
+ gas,
93
+ maxFeePerGas,
94
+ maxPriorityFeePerGas,
95
+ nonce,
96
+ targetChain,
97
+ withdrawal,
98
+ } = parameters
99
+
100
+ const portalAddress = (() => {
101
+ if (parameters.portalAddress) return parameters.portalAddress
102
+ if (chain) return targetChain!.contracts.portal[chain.id].address
103
+ return Object.values(targetChain!.contracts.portal)[0].address
104
+ })()
105
+
106
+ return estimateContractGas(client, {
107
+ account,
108
+ abi: portalAbi,
109
+ address: portalAddress,
110
+ chain,
111
+ functionName: 'finalizeWithdrawalTransaction',
112
+ args: [withdrawal],
113
+ gas,
114
+ maxFeePerGas,
115
+ maxPriorityFeePerGas,
116
+ nonce,
117
+ } as EstimateContractGasParameters)
118
+ }
@@ -0,0 +1,118 @@
1
+ import type { Address } from 'abitype'
2
+ import {
3
+ type EstimateContractGasErrorType,
4
+ type EstimateContractGasParameters,
5
+ estimateContractGas,
6
+ } from '../../../actions/public/estimateContractGas.js'
7
+ import type { Client } from '../../../clients/createClient.js'
8
+ import type { Transport } from '../../../clients/transports/createTransport.js'
9
+ import type { ErrorType } from '../../../errors/utils.js'
10
+ import type { Account, GetAccountParameter } from '../../../types/account.js'
11
+ import type {
12
+ Chain,
13
+ DeriveChain,
14
+ GetChainParameter,
15
+ } from '../../../types/chain.js'
16
+ import type { UnionEvaluate, UnionOmit } from '../../../types/utils.js'
17
+ import type { FormattedTransactionRequest } from '../../../utils/formatters/transactionRequest.js'
18
+ import { l2ToL1MessagePasserAbi } from '../abis.js'
19
+ import { contracts } from '../contracts.js'
20
+ import type { WithdrawalRequest } from '../types/withdrawal.js'
21
+
22
+ export type EstimateInitiateWithdrawalGasParameters<
23
+ chain extends Chain | undefined = Chain | undefined,
24
+ account extends Account | undefined = Account | undefined,
25
+ chainOverride extends Chain | undefined = Chain | undefined,
26
+ _derivedChain extends Chain | undefined = DeriveChain<chain, chainOverride>,
27
+ > = UnionEvaluate<
28
+ UnionOmit<
29
+ FormattedTransactionRequest<_derivedChain>,
30
+ | 'accessList'
31
+ | 'data'
32
+ | 'from'
33
+ | 'gas'
34
+ | 'gasPrice'
35
+ | 'to'
36
+ | 'type'
37
+ | 'value'
38
+ >
39
+ > &
40
+ GetAccountParameter<account, Account | Address> &
41
+ GetChainParameter<chain, chainOverride> & {
42
+ /** Gas limit for transaction execution on the L2. */
43
+ gas?: bigint | null
44
+ /**
45
+ * Withdrawal request.
46
+ * Supplied to the L2ToL1MessagePasser `initiateWithdrawal` method.
47
+ */
48
+ request: WithdrawalRequest
49
+ }
50
+ export type EstimateInitiateWithdrawalGasReturnType = bigint
51
+ export type EstimateInitiateWithdrawalGasErrorType =
52
+ | EstimateContractGasErrorType
53
+ | ErrorType
54
+
55
+ /**
56
+ * Estimates gas required to initiate a [withdrawal](https://community.optimism.io/docs/protocol/withdrawal-flow/#withdrawal-initiating-transaction) on an L2 to the L1.
57
+ *
58
+ * - Docs: https://viem.sh/op-stack/actions/estimateInitiateWithdrawalGas.html
59
+ *
60
+ * @param client - Client to use
61
+ * @param parameters - {@link EstimateInitiateWithdrawalGasParameters}
62
+ * @returns Estimated gas. {@link EstimateInitiateWithdrawalGasReturnType}
63
+ *
64
+ * @example
65
+ * import { createPublicClient, http, parseEther } from 'viem'
66
+ * import { base, mainnet } from 'viem/chains'
67
+ * import { estimateInitiateWithdrawalGas } from 'viem/op-stack'
68
+ *
69
+ * const client = createPublicClient({
70
+ * chain: mainnet,
71
+ * transport: http(),
72
+ * })
73
+ *
74
+ * const gas = await estimateInitiateWithdrawalGas(client, {
75
+ * account: '0xA0Cf798816D4b9b9866b5330EEa46a18382f251e',
76
+ * request: {
77
+ * gas: 21_000n,
78
+ * to: '0x70997970c51812dc3a010c7d01b50e0d17dc79c8',
79
+ * value: parseEther('1'),
80
+ * },
81
+ * })
82
+ */
83
+ export async function estimateInitiateWithdrawalGas<
84
+ chain extends Chain | undefined,
85
+ account extends Account | undefined,
86
+ chainOverride extends Chain | undefined = undefined,
87
+ >(
88
+ client: Client<Transport, chain, account>,
89
+ parameters: EstimateInitiateWithdrawalGasParameters<
90
+ chain,
91
+ account,
92
+ chainOverride
93
+ >,
94
+ ) {
95
+ const {
96
+ account,
97
+ chain = client.chain,
98
+ gas,
99
+ maxFeePerGas,
100
+ maxPriorityFeePerGas,
101
+ nonce,
102
+ request: { data = '0x', gas: l1Gas, to, value },
103
+ } = parameters
104
+
105
+ return estimateContractGas(client, {
106
+ account,
107
+ abi: l2ToL1MessagePasserAbi,
108
+ address: contracts.l2ToL1MessagePasser.address,
109
+ chain,
110
+ functionName: 'initiateWithdrawal',
111
+ args: [to, l1Gas, data],
112
+ gas,
113
+ maxFeePerGas,
114
+ maxPriorityFeePerGas,
115
+ nonce,
116
+ value,
117
+ } as EstimateContractGasParameters)
118
+ }
@@ -0,0 +1,139 @@
1
+ import type { Address } from 'abitype'
2
+ import {
3
+ type EstimateContractGasErrorType,
4
+ type EstimateContractGasParameters,
5
+ estimateContractGas,
6
+ } from '../../../actions/public/estimateContractGas.js'
7
+ import type { Client } from '../../../clients/createClient.js'
8
+ import type { Transport } from '../../../clients/transports/createTransport.js'
9
+ import type { ErrorType } from '../../../errors/utils.js'
10
+ import type { Account, GetAccountParameter } from '../../../types/account.js'
11
+ import type {
12
+ Chain,
13
+ DeriveChain,
14
+ GetChainParameter,
15
+ } from '../../../types/chain.js'
16
+ import type { Hex } from '../../../types/misc.js'
17
+ import type { UnionEvaluate, UnionOmit } from '../../../types/utils.js'
18
+ import type { FormattedTransactionRequest } from '../../../utils/formatters/transactionRequest.js'
19
+ import { portalAbi } from '../abis.js'
20
+ import type { GetContractAddressParameter } from '../types/contract.js'
21
+
22
+ export type EstimateProveWithdrawalGasParameters<
23
+ chain extends Chain | undefined = Chain | undefined,
24
+ account extends Account | undefined = Account | undefined,
25
+ chainOverride extends Chain | undefined = Chain | undefined,
26
+ _derivedChain extends Chain | undefined = DeriveChain<chain, chainOverride>,
27
+ > = UnionEvaluate<
28
+ UnionOmit<
29
+ FormattedTransactionRequest<_derivedChain>,
30
+ | 'accessList'
31
+ | 'data'
32
+ | 'from'
33
+ | 'gas'
34
+ | 'gasPrice'
35
+ | 'to'
36
+ | 'type'
37
+ | 'value'
38
+ >
39
+ > &
40
+ GetAccountParameter<account, Account | Address> &
41
+ GetChainParameter<chain, chainOverride> &
42
+ GetContractAddressParameter<_derivedChain, 'portal'> & {
43
+ /** Gas limit for transaction execution on the L2. */
44
+ gas?: bigint | null
45
+ l2OutputIndex: bigint
46
+ outputRootProof: {
47
+ version: Hex
48
+ stateRoot: Hex
49
+ messagePasserStorageRoot: Hex
50
+ latestBlockhash: Hex
51
+ }
52
+ withdrawalProof: readonly Hex[]
53
+ withdrawal: {
54
+ data: Hex
55
+ gasLimit: bigint
56
+ nonce: bigint
57
+ sender: Address
58
+ target: Address
59
+ value: bigint
60
+ }
61
+ }
62
+ export type EstimateProveWithdrawalGasReturnType = bigint
63
+ export type EstimateProveWithdrawalGasErrorType =
64
+ | EstimateContractGasErrorType
65
+ | ErrorType
66
+
67
+ /**
68
+ * Estimates gas required to prove a withdrawal that occurred on an L2.
69
+ *
70
+ * - Docs: https://viem.sh/op-stack/actions/estimateProveWithdrawalGas.html
71
+ *
72
+ * @param client - Client to use
73
+ * @param parameters - {@link EstimateProveWithdrawalGasParameters}
74
+ * @returns Estimated gas. {@link EstimateProveWithdrawalGasReturnType}
75
+ *
76
+ * @example
77
+ * import { createPublicClient, http, parseEther } from 'viem'
78
+ * import { base, mainnet } from 'viem/chains'
79
+ * import { estimateProveWithdrawalGas } from 'viem/op-stack'
80
+ *
81
+ * const client = createPublicClient({
82
+ * chain: mainnet,
83
+ * transport: http(),
84
+ * })
85
+ *
86
+ * const gas = await estimateProveWithdrawalGas(client, {
87
+ * account: '0xA0Cf798816D4b9b9866b5330EEa46a18382f251e',
88
+ * l2OutputIndex: 4529n,
89
+ * outputRootProof: { ... },
90
+ * targetChain: optimism,
91
+ * withdrawalProof: [ ... ],
92
+ * withdrawal: { ... },
93
+ * })
94
+ */
95
+ export async function estimateProveWithdrawalGas<
96
+ chain extends Chain | undefined,
97
+ account extends Account | undefined,
98
+ chainOverride extends Chain | undefined = undefined,
99
+ >(
100
+ client: Client<Transport, chain, account>,
101
+ parameters: EstimateProveWithdrawalGasParameters<
102
+ chain,
103
+ account,
104
+ chainOverride
105
+ >,
106
+ ) {
107
+ const {
108
+ account,
109
+ chain = client.chain,
110
+ gas,
111
+ l2OutputIndex,
112
+ maxFeePerGas,
113
+ maxPriorityFeePerGas,
114
+ nonce,
115
+ outputRootProof,
116
+ targetChain,
117
+ withdrawalProof,
118
+ withdrawal,
119
+ } = parameters
120
+
121
+ const portalAddress = (() => {
122
+ if (parameters.portalAddress) return parameters.portalAddress
123
+ if (chain) return targetChain!.contracts.portal[chain.id].address
124
+ return Object.values(targetChain!.contracts.portal)[0].address
125
+ })()
126
+
127
+ return estimateContractGas(client, {
128
+ account,
129
+ abi: portalAbi,
130
+ address: portalAddress,
131
+ chain,
132
+ functionName: 'proveWithdrawalTransaction',
133
+ args: [withdrawal, l2OutputIndex, outputRootProof, withdrawalProof],
134
+ gas,
135
+ maxFeePerGas,
136
+ maxPriorityFeePerGas,
137
+ nonce,
138
+ } as EstimateContractGasParameters)
139
+ }
@@ -0,0 +1,130 @@
1
+ import type { Address } from 'abitype'
2
+ import {
3
+ type WriteContractErrorType,
4
+ writeContract,
5
+ } from '../../../actions/wallet/writeContract.js'
6
+ import type { Client } from '../../../clients/createClient.js'
7
+ import type { Transport } from '../../../clients/transports/createTransport.js'
8
+ import type { ErrorType } from '../../../errors/utils.js'
9
+ import type { Account, GetAccountParameter } from '../../../types/account.js'
10
+ import type {
11
+ Chain,
12
+ DeriveChain,
13
+ GetChainParameter,
14
+ } from '../../../types/chain.js'
15
+ import type { Hash } from '../../../types/misc.js'
16
+ import type { UnionEvaluate, UnionOmit } from '../../../types/utils.js'
17
+ import type { FormattedTransactionRequest } from '../../../utils/formatters/transactionRequest.js'
18
+ import { portalAbi } from '../abis.js'
19
+ import type { GetContractAddressParameter } from '../types/contract.js'
20
+ import type { Withdrawal } from '../types/withdrawal.js'
21
+ import {
22
+ type EstimateFinalizeWithdrawalGasErrorType,
23
+ type EstimateFinalizeWithdrawalGasParameters,
24
+ estimateFinalizeWithdrawalGas,
25
+ } from './estimateFinalizeWithdrawalGas.js'
26
+
27
+ export type FinalizeWithdrawalParameters<
28
+ chain extends Chain | undefined = Chain | undefined,
29
+ account extends Account | undefined = Account | undefined,
30
+ chainOverride extends Chain | undefined = Chain | undefined,
31
+ _derivedChain extends Chain | undefined = DeriveChain<chain, chainOverride>,
32
+ > = UnionEvaluate<
33
+ UnionOmit<
34
+ FormattedTransactionRequest<_derivedChain>,
35
+ | 'accessList'
36
+ | 'data'
37
+ | 'from'
38
+ | 'gas'
39
+ | 'gasPrice'
40
+ | 'to'
41
+ | 'type'
42
+ | 'value'
43
+ >
44
+ > &
45
+ GetAccountParameter<account, Account | Address> &
46
+ GetChainParameter<chain, chainOverride> &
47
+ GetContractAddressParameter<_derivedChain, 'portal'> & {
48
+ /**
49
+ * Gas limit for transaction execution on the L1.
50
+ * `null` to skip gas estimation & defer calculation to signer.
51
+ */
52
+ gas?: bigint | null
53
+ withdrawal: Withdrawal
54
+ }
55
+ export type FinalizeWithdrawalReturnType = Hash
56
+ export type FinalizeWithdrawalErrorType =
57
+ | EstimateFinalizeWithdrawalGasErrorType
58
+ | WriteContractErrorType
59
+ | ErrorType
60
+
61
+ /**
62
+ * Finalizes a withdrawal that occurred on an L2. Used in the Withdrawal flow.
63
+ *
64
+ * - Docs: https://viem.sh/op-stack/actions/finalizeWithdrawal.html
65
+ *
66
+ * @param client - Client to use
67
+ * @param parameters - {@link FinalizeWithdrawalParameters}
68
+ * @returns The finalize transaction hash. {@link FinalizeWithdrawalReturnType}
69
+ *
70
+ * @example
71
+ * import { createWalletClient, http } from 'viem'
72
+ * import { mainnet, optimism } from 'viem/chains'
73
+ * import { finalizeWithdrawal } from 'viem/op-stack'
74
+ *
75
+ * const walletClientL1 = createWalletClient({
76
+ * chain: mainnet,
77
+ * transport: http(),
78
+ * })
79
+ *
80
+ * const request = await finalizeWithdrawal(walletClientL1, {
81
+ * targetChain: optimism,
82
+ * withdrawal: { ... },
83
+ * })
84
+ */
85
+ export async function finalizeWithdrawal<
86
+ chain extends Chain | undefined,
87
+ account extends Account | undefined,
88
+ chainOverride extends Chain | undefined = undefined,
89
+ >(
90
+ client: Client<Transport, chain, account>,
91
+ parameters: FinalizeWithdrawalParameters<chain, account, chainOverride>,
92
+ ): Promise<FinalizeWithdrawalReturnType> {
93
+ const {
94
+ account,
95
+ chain = client.chain,
96
+ gas,
97
+ maxFeePerGas,
98
+ maxPriorityFeePerGas,
99
+ nonce,
100
+ targetChain,
101
+ withdrawal,
102
+ } = parameters
103
+
104
+ const portalAddress = (() => {
105
+ if (parameters.portalAddress) return parameters.portalAddress
106
+ if (chain) return targetChain!.contracts.portal[chain.id].address
107
+ return Object.values(targetChain!.contracts.portal)[0].address
108
+ })()
109
+
110
+ const gas_ =
111
+ typeof gas !== 'number' && gas !== null
112
+ ? await estimateFinalizeWithdrawalGas(
113
+ client,
114
+ parameters as EstimateFinalizeWithdrawalGasParameters,
115
+ )
116
+ : undefined
117
+
118
+ return writeContract(client, {
119
+ account,
120
+ abi: portalAbi,
121
+ address: portalAddress,
122
+ chain,
123
+ functionName: 'finalizeWithdrawalTransaction',
124
+ args: [withdrawal],
125
+ gas: gas_,
126
+ maxFeePerGas,
127
+ maxPriorityFeePerGas,
128
+ nonce,
129
+ })
130
+ }
@@ -0,0 +1,89 @@
1
+ import {
2
+ type ReadContractErrorType,
3
+ readContract,
4
+ } from '../../../actions/public/readContract.js'
5
+ import type { Client } from '../../../clients/createClient.js'
6
+ import type { Transport } from '../../../clients/transports/createTransport.js'
7
+ import type { ErrorType } from '../../../errors/utils.js'
8
+ import type { Account } from '../../../types/account.js'
9
+ import type {
10
+ Chain,
11
+ DeriveChain,
12
+ GetChainParameter,
13
+ } from '../../../types/chain.js'
14
+ import type { Hex } from '../../../types/misc.js'
15
+ import { l2OutputOracleAbi } from '../abis.js'
16
+ import type { GetContractAddressParameter } from '../types/contract.js'
17
+
18
+ export type GetL2OutputParameters<
19
+ chain extends Chain | undefined = Chain | undefined,
20
+ chainOverride extends Chain | undefined = Chain | undefined,
21
+ _derivedChain extends Chain | undefined = DeriveChain<chain, chainOverride>,
22
+ > = GetChainParameter<chain, chainOverride> &
23
+ GetContractAddressParameter<_derivedChain, 'l2OutputOracle'> & {
24
+ l2BlockNumber: bigint
25
+ }
26
+ export type GetL2OutputReturnType = {
27
+ outputIndex: bigint
28
+ outputRoot: Hex
29
+ timestamp: bigint
30
+ l2BlockNumber: bigint
31
+ }
32
+ export type GetL2OutputErrorType = ReadContractErrorType | ErrorType
33
+
34
+ /**
35
+ * Retrieves the first L2 output proposal that occurred after a provided block number.
36
+ *
37
+ * - Docs: https://viem.sh/op-stack/actions/getL2Output.html
38
+ *
39
+ * @param client - Client to use
40
+ * @param parameters - {@link GetL2OutputParameters}
41
+ * @returns The L2 output. {@link GetL2OutputReturnType}
42
+ *
43
+ * @example
44
+ * import { createPublicClient, http } from 'viem'
45
+ * import { mainnet, optimism } from 'viem/chains'
46
+ * import { getL2Output } from 'viem/op-stack'
47
+ *
48
+ * const publicClientL1 = createPublicClient({
49
+ * chain: mainnet,
50
+ * transport: http(),
51
+ * })
52
+ *
53
+ * const output = await getL2Output(publicClientL1, {
54
+ * l2BlockNumber: 69420n,
55
+ * targetChain: optimism
56
+ * })
57
+ */
58
+ export async function getL2Output<
59
+ chain extends Chain | undefined,
60
+ account extends Account | undefined,
61
+ chainOverride extends Chain | undefined = undefined,
62
+ >(
63
+ client: Client<Transport, chain, account>,
64
+ parameters: GetL2OutputParameters<chain, chainOverride>,
65
+ ): Promise<GetL2OutputReturnType> {
66
+ const { chain = client.chain, l2BlockNumber, targetChain } = parameters
67
+
68
+ const l2OutputOracleAddress = (() => {
69
+ if (parameters.l2OutputOracleAddress)
70
+ return parameters.l2OutputOracleAddress
71
+ if (chain) return targetChain!.contracts.l2OutputOracle[chain.id].address
72
+ return Object.values(targetChain!.contracts.l2OutputOracle)[0].address
73
+ })()
74
+
75
+ const outputIndex = await readContract(client, {
76
+ address: l2OutputOracleAddress,
77
+ abi: l2OutputOracleAbi,
78
+ functionName: 'getL2OutputIndexAfter',
79
+ args: [l2BlockNumber],
80
+ })
81
+ const output = await readContract(client, {
82
+ address: l2OutputOracleAddress,
83
+ abi: l2OutputOracleAbi,
84
+ functionName: 'getL2Output',
85
+ args: [outputIndex],
86
+ })
87
+
88
+ return { outputIndex, ...output }
89
+ }