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
@@ -1,6 +1,7 @@
1
1
  import type { Address } from 'abitype'
2
2
  import {
3
3
  type WriteContractErrorType,
4
+ type WriteContractParameters,
4
5
  writeContract,
5
6
  } from '../../../actions/wallet/writeContract.js'
6
7
  import type { Client } from '../../../clients/createClient.js'
@@ -13,11 +14,17 @@ import type {
13
14
  DeriveChain,
14
15
  GetChainParameter,
15
16
  } from '../../../types/chain.js'
16
- import type { Hash, Hex } from '../../../types/misc.js'
17
+ import type { Hash } from '../../../types/misc.js'
17
18
  import type { UnionEvaluate, UnionOmit } from '../../../types/utils.js'
18
19
  import type { FormattedTransactionRequest } from '../../../utils/formatters/transactionRequest.js'
19
20
  import { portalAbi } from '../abis.js'
20
21
  import type { GetContractAddressParameter } from '../types/contract.js'
22
+ import type { DepositRequest } from '../types/deposit.js'
23
+ import {
24
+ type EstimateDepositTransactionGasErrorType,
25
+ type EstimateDepositTransactionGasParameters,
26
+ estimateDepositTransactionGas,
27
+ } from './estimateDepositTransactionGas.js'
21
28
 
22
29
  export type DepositTransactionParameters<
23
30
  chain extends Chain | undefined = Chain | undefined,
@@ -40,35 +47,19 @@ export type DepositTransactionParameters<
40
47
  GetAccountParameter<account, Account | Address> &
41
48
  GetChainParameter<chain, chainOverride> &
42
49
  GetContractAddressParameter<_derivedChain, 'portal'> & {
43
- /** Arguments supplied to the L2 transaction. */
44
- args: {
45
- /** Gas limit for transaction execution on the L2. */
46
- gas: bigint
47
- /** Value in wei to mint (deposit) on the L2. Debited from the caller's L1 balance. */
48
- mint?: bigint
49
- /** Value in wei sent with this transaction on the L2. Debited from the caller's L2 balance. */
50
- value?: bigint
51
- } & (
52
- | {
53
- /** Encoded contract method & arguments. */
54
- data?: Hex
55
- /** Whether or not this is a contract deployment transaction. */
56
- isCreation?: false
57
- /** L2 Transaction recipient. */
58
- to?: Address
59
- }
60
- | {
61
- /** Contract deployment bytecode. Required for contract deployment transactions. */
62
- data: Hex
63
- /** Whether or not this is a contract deployment transaction. */
64
- isCreation: true
65
- /** L2 Transaction recipient. Cannot exist for contract deployment transactions. */
66
- to?: never
67
- }
68
- )
50
+ /** L2 transaction request. */
51
+ request: DepositRequest
52
+ /**
53
+ * Gas limit for transaction execution on the L1.
54
+ * `null` to skip gas estimation & defer calculation to signer.
55
+ */
56
+ gas?: bigint | null
69
57
  }
70
58
  export type DepositTransactionReturnType = Hash
71
- export type DepositTransactionErrorType = WriteContractErrorType | ErrorType
59
+ export type DepositTransactionErrorType =
60
+ | EstimateDepositTransactionGasErrorType
61
+ | WriteContractErrorType
62
+ | ErrorType
72
63
 
73
64
  /**
74
65
  * Initiates a [deposit transaction](https://github.com/ethereum-optimism/optimism/blob/develop/specs/deposits.md) on an L1, which executes a transaction on L2.
@@ -85,17 +76,16 @@ export type DepositTransactionErrorType = WriteContractErrorType | ErrorType
85
76
  * @example
86
77
  * import { createWalletClient, custom, parseEther } from 'viem'
87
78
  * import { base, mainnet } from 'viem/chains'
88
- * import { walletActionsL1 } from 'viem/op-stack'
89
- * import { depositTransaction } from 'viem/wallet'
79
+ * import { depositTransaction } from 'viem/op-stack'
90
80
  *
91
81
  * const client = createWalletClient({
92
82
  * chain: mainnet,
93
83
  * transport: custom(window.ethereum),
94
- * }).extend(walletActionsL1())
84
+ * })
95
85
  *
96
86
  * const hash = await depositTransaction(client, {
97
87
  * account: '0xA0Cf798816D4b9b9866b5330EEa46a18382f251e',
98
- * args: {
88
+ * request: {
99
89
  * gas: 21_000n,
100
90
  * to: '0x70997970c51812dc3a010c7d01b50e0d17dc79c8',
101
91
  * value: parseEther('1'),
@@ -108,17 +98,16 @@ export type DepositTransactionErrorType = WriteContractErrorType | ErrorType
108
98
  * import { createWalletClient, http } from 'viem'
109
99
  * import { privateKeyToAccount } from 'viem/accounts'
110
100
  * import { base, mainnet } from 'viem/chains'
111
- * import { walletActionsL1 } from 'viem/op-stack'
112
- * import { depositTransaction } from 'viem/wallet'
101
+ * import { depositTransaction } from 'viem/op-stack'
113
102
  *
114
103
  * const client = createWalletClient({
115
104
  * account: privateKeyToAccount('0x…'),
116
105
  * chain: mainnet,
117
106
  * transport: http(),
118
- * }).extend(walletActionsL1())
107
+ * })
119
108
  *
120
109
  * const hash = await depositTransaction(client, {
121
- * args: {
110
+ * request: {
122
111
  * gas: 21_000n,
123
112
  * to: '0x70997970c51812dc3a010c7d01b50e0d17dc79c8',
124
113
  * value: parseEther('1'),
@@ -126,32 +115,48 @@ export type DepositTransactionErrorType = WriteContractErrorType | ErrorType
126
115
  * targetChain: base,
127
116
  * })
128
117
  */
129
- export function depositTransaction<
118
+ export async function depositTransaction<
130
119
  chain extends Chain | undefined,
131
120
  account extends Account | undefined,
132
121
  chainOverride extends Chain | undefined = undefined,
133
122
  >(
134
123
  client: Client<Transport, chain, account>,
135
- args: DepositTransactionParameters<chain, account, chainOverride>,
124
+ parameters: DepositTransactionParameters<chain, account, chainOverride>,
136
125
  ) {
137
126
  const {
138
127
  account,
139
- args: { data = '0x', gas, isCreation = false, mint, to = '0x', value },
140
128
  chain = client.chain,
129
+ gas,
141
130
  maxFeePerGas,
142
131
  maxPriorityFeePerGas,
143
132
  nonce,
133
+ request: {
134
+ data = '0x',
135
+ gas: l2Gas,
136
+ isCreation = false,
137
+ mint,
138
+ to = '0x',
139
+ value,
140
+ },
144
141
  targetChain,
145
- } = args
142
+ } = parameters
146
143
 
147
144
  const portalAddress = (() => {
148
- if (args.portalAddress) return args.portalAddress
145
+ if (parameters.portalAddress) return parameters.portalAddress
149
146
  if (chain) return targetChain!.contracts.portal[chain.id].address
150
147
  return Object.values(targetChain!.contracts.portal)[0].address
151
148
  })()
152
149
 
150
+ const gas_ =
151
+ typeof gas !== 'number' && gas !== null
152
+ ? await estimateDepositTransactionGas(
153
+ client,
154
+ parameters as EstimateDepositTransactionGasParameters,
155
+ )
156
+ : undefined
157
+
153
158
  return writeContract(client, {
154
- account,
159
+ account: account!,
155
160
  abi: portalAbi,
156
161
  address: portalAddress,
157
162
  chain,
@@ -159,7 +164,7 @@ export function depositTransaction<
159
164
  args: [
160
165
  isCreation ? zeroAddress : to,
161
166
  value ?? mint ?? 0n,
162
- gas,
167
+ l2Gas,
163
168
  isCreation,
164
169
  data,
165
170
  ],
@@ -167,5 +172,6 @@ export function depositTransaction<
167
172
  maxPriorityFeePerGas,
168
173
  nonce,
169
174
  value: mint,
170
- } as any)
175
+ gas: gas_,
176
+ } satisfies WriteContractParameters as any)
171
177
  }
@@ -0,0 +1,138 @@
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 { zeroAddress } from '../../../constants/address.js'
10
+ import type { ErrorType } from '../../../errors/utils.js'
11
+ import type { Account, GetAccountParameter } from '../../../types/account.js'
12
+ import type {
13
+ Chain,
14
+ DeriveChain,
15
+ GetChainParameter,
16
+ } from '../../../types/chain.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
+ import type { DepositRequest } from '../types/deposit.js'
22
+
23
+ export type EstimateDepositTransactionGasParameters<
24
+ chain extends Chain | undefined = Chain | undefined,
25
+ account extends Account | undefined = Account | undefined,
26
+ chainOverride extends Chain | undefined = Chain | undefined,
27
+ _derivedChain extends Chain | undefined = DeriveChain<chain, chainOverride>,
28
+ > = UnionEvaluate<
29
+ UnionOmit<
30
+ FormattedTransactionRequest<_derivedChain>,
31
+ | 'accessList'
32
+ | 'data'
33
+ | 'from'
34
+ | 'gas'
35
+ | 'gasPrice'
36
+ | 'to'
37
+ | 'type'
38
+ | 'value'
39
+ >
40
+ > &
41
+ GetAccountParameter<account, Account | Address> &
42
+ GetChainParameter<chain, chainOverride> &
43
+ GetContractAddressParameter<_derivedChain, 'portal'> & {
44
+ /** L2 transaction request. */
45
+ request: DepositRequest
46
+ /** Gas limit for transaction execution on the L1. */
47
+ gas?: bigint | null
48
+ }
49
+ export type EstimateDepositTransactionGasReturnType = bigint
50
+ export type EstimateDepositTransactionGasErrorType =
51
+ | EstimateContractGasErrorType
52
+ | ErrorType
53
+
54
+ /**
55
+ * 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.
56
+ *
57
+ * - Docs: https://viem.sh/op-stack/actions/estimateDepositTransactionGas.html
58
+ *
59
+ * @param client - Client to use
60
+ * @param parameters - {@link EstimateDepositTransactionGasParameters}
61
+ * @returns The L1 transaction hash. {@link EstimateDepositTransactionGasReturnType}
62
+ *
63
+ * @example
64
+ * import { createPublicClient, custom, parseEther } from 'viem'
65
+ * import { base, mainnet } from 'viem/chains'
66
+ * import { estimateDepositTransactionGas } from 'viem/op-stack'
67
+ *
68
+ * const client = createPublicClient({
69
+ * chain: mainnet,
70
+ * transport: custom(window.ethereum),
71
+ * })
72
+ *
73
+ * const gas = await estimateDepositTransactionGas(client, {
74
+ * account: '0xA0Cf798816D4b9b9866b5330EEa46a18382f251e',
75
+ * args: {
76
+ * gas: 21_000n,
77
+ * to: '0x70997970c51812dc3a010c7d01b50e0d17dc79c8',
78
+ * value: parseEther('1'),
79
+ * },
80
+ * targetChain: base,
81
+ * })
82
+ */
83
+ export async function estimateDepositTransactionGas<
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: EstimateDepositTransactionGasParameters<
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: {
103
+ data = '0x',
104
+ gas: l2Gas,
105
+ isCreation = false,
106
+ mint,
107
+ to = '0x',
108
+ value,
109
+ },
110
+ targetChain,
111
+ } = parameters
112
+
113
+ const portalAddress = (() => {
114
+ if (parameters.portalAddress) return parameters.portalAddress
115
+ if (chain) return targetChain!.contracts.portal[chain.id].address
116
+ return Object.values(targetChain!.contracts.portal)[0].address
117
+ })()
118
+
119
+ return estimateContractGas(client, {
120
+ account,
121
+ abi: portalAbi,
122
+ address: portalAddress,
123
+ chain,
124
+ functionName: 'depositTransaction',
125
+ args: [
126
+ isCreation ? zeroAddress : to,
127
+ value ?? mint ?? 0n,
128
+ l2Gas,
129
+ isCreation,
130
+ data,
131
+ ],
132
+ gas,
133
+ maxFeePerGas,
134
+ maxPriorityFeePerGas,
135
+ nonce,
136
+ value: mint,
137
+ } as EstimateContractGasParameters)
138
+ }
@@ -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
+ }