viem 2.18.8 → 2.19.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (647) hide show
  1. package/CHANGELOG.md +34 -0
  2. package/README.md +1 -1
  3. package/_cjs/account-abstraction/errors/bundler.js +36 -216
  4. package/_cjs/account-abstraction/errors/bundler.js.map +1 -1
  5. package/_cjs/account-abstraction/errors/userOperation.js +5 -26
  6. package/_cjs/account-abstraction/errors/userOperation.js.map +1 -1
  7. package/_cjs/accounts/index.js +3 -1
  8. package/_cjs/accounts/index.js.map +1 -1
  9. package/_cjs/accounts/privateKeyToAccount.js +4 -0
  10. package/_cjs/accounts/privateKeyToAccount.js.map +1 -1
  11. package/_cjs/accounts/toAccount.js +1 -0
  12. package/_cjs/accounts/toAccount.js.map +1 -1
  13. package/_cjs/accounts/utils/signAuthorization.js +22 -0
  14. package/_cjs/accounts/utils/signAuthorization.js.map +1 -0
  15. package/_cjs/actions/public/estimateGas.js +48 -10
  16. package/_cjs/actions/public/estimateGas.js.map +1 -1
  17. package/_cjs/actions/public/simulateContract.js.map +1 -1
  18. package/_cjs/actions/wallet/prepareTransactionRequest.js.map +1 -1
  19. package/_cjs/actions/wallet/sendTransaction.js +21 -3
  20. package/_cjs/actions/wallet/sendTransaction.js.map +1 -1
  21. package/_cjs/actions/wallet/writeContract.js.map +1 -1
  22. package/_cjs/chains/definitions/abstractTestnet.js +2 -0
  23. package/_cjs/chains/definitions/abstractTestnet.js.map +1 -1
  24. package/_cjs/chains/definitions/{zkSync.js → zksync.js} +6 -5
  25. package/_cjs/chains/definitions/{zkSync.js.map → zksync.js.map} +1 -1
  26. package/_cjs/chains/definitions/{zkSyncInMemoryNode.js → zksyncInMemoryNode.js} +4 -4
  27. package/_cjs/chains/definitions/{zkSyncInMemoryNode.js.map → zksyncInMemoryNode.js.map} +1 -1
  28. package/_cjs/chains/definitions/{zkSyncLocalNode.js → zksyncLocalNode.js} +4 -4
  29. package/_cjs/chains/definitions/{zkSyncLocalNode.js.map → zksyncLocalNode.js.map} +1 -1
  30. package/_cjs/chains/definitions/{zkSyncSepoliaTestnet.js → zksyncSepoliaTestnet.js} +7 -5
  31. package/_cjs/chains/definitions/zksyncSepoliaTestnet.js.map +1 -0
  32. package/_cjs/chains/index.js +13 -11
  33. package/_cjs/chains/index.js.map +1 -1
  34. package/_cjs/errors/abi.js +32 -163
  35. package/_cjs/errors/abi.js.map +1 -1
  36. package/_cjs/errors/account.js +2 -12
  37. package/_cjs/errors/account.js.map +1 -1
  38. package/_cjs/errors/address.js +1 -6
  39. package/_cjs/errors/address.js.map +1 -1
  40. package/_cjs/errors/base.js +29 -18
  41. package/_cjs/errors/base.js.map +1 -1
  42. package/_cjs/errors/blob.js +4 -25
  43. package/_cjs/errors/blob.js.map +1 -1
  44. package/_cjs/errors/block.js +1 -7
  45. package/_cjs/errors/block.js.map +1 -1
  46. package/_cjs/errors/ccip.js +3 -18
  47. package/_cjs/errors/ccip.js.map +1 -1
  48. package/_cjs/errors/chain.js +7 -31
  49. package/_cjs/errors/chain.js.map +1 -1
  50. package/_cjs/errors/contract.js +6 -37
  51. package/_cjs/errors/contract.js.map +1 -1
  52. package/_cjs/errors/cursor.js +4 -20
  53. package/_cjs/errors/cursor.js.map +1 -1
  54. package/_cjs/errors/data.js +3 -21
  55. package/_cjs/errors/data.js.map +1 -1
  56. package/_cjs/errors/eip712.js +1 -6
  57. package/_cjs/errors/eip712.js.map +1 -1
  58. package/_cjs/errors/encoding.js +6 -34
  59. package/_cjs/errors/encoding.js.map +1 -1
  60. package/_cjs/errors/ens.js +5 -26
  61. package/_cjs/errors/ens.js.map +1 -1
  62. package/_cjs/errors/estimateGas.js +1 -6
  63. package/_cjs/errors/estimateGas.js.map +1 -1
  64. package/_cjs/errors/fee.js +5 -19
  65. package/_cjs/errors/fee.js.map +1 -1
  66. package/_cjs/errors/log.js +2 -6
  67. package/_cjs/errors/log.js.map +1 -1
  68. package/_cjs/errors/node.js +12 -75
  69. package/_cjs/errors/node.js.map +1 -1
  70. package/_cjs/errors/request.js +5 -30
  71. package/_cjs/errors/request.js.map +1 -1
  72. package/_cjs/errors/rpc.js +22 -122
  73. package/_cjs/errors/rpc.js.map +1 -1
  74. package/_cjs/errors/siwe.js +1 -7
  75. package/_cjs/errors/siwe.js.map +1 -1
  76. package/_cjs/errors/stateOverride.js +4 -12
  77. package/_cjs/errors/stateOverride.js.map +1 -1
  78. package/_cjs/errors/transaction.js +15 -63
  79. package/_cjs/errors/transaction.js.map +1 -1
  80. package/_cjs/errors/transport.js +1 -0
  81. package/_cjs/errors/transport.js.map +1 -1
  82. package/_cjs/errors/utils.js +1 -4
  83. package/_cjs/errors/utils.js.map +1 -1
  84. package/_cjs/errors/version.js +1 -1
  85. package/_cjs/experimental/eip5792/decorators/eip5792.js +2 -2
  86. package/_cjs/experimental/eip5792/decorators/eip5792.js.map +1 -1
  87. package/_cjs/experimental/eip7702/actions/signAuthorization.js +41 -0
  88. package/_cjs/experimental/eip7702/actions/signAuthorization.js.map +1 -0
  89. package/_cjs/experimental/eip7702/decorators/eip7702.js +12 -0
  90. package/_cjs/experimental/eip7702/decorators/eip7702.js.map +1 -0
  91. package/_cjs/experimental/eip7702/types/authorization.js +3 -0
  92. package/_cjs/experimental/eip7702/types/authorization.js.map +1 -0
  93. package/_cjs/experimental/eip7702/types/rpc.js +3 -0
  94. package/_cjs/experimental/eip7702/types/rpc.js.map +1 -0
  95. package/_cjs/experimental/eip7702/utils/hashAuthorization.js +23 -0
  96. package/_cjs/experimental/eip7702/utils/hashAuthorization.js.map +1 -0
  97. package/_cjs/experimental/eip7702/utils/recoverAuthorizationAddress.js +13 -0
  98. package/_cjs/experimental/eip7702/utils/recoverAuthorizationAddress.js.map +1 -0
  99. package/_cjs/experimental/eip7702/utils/serializeAuthorizationList.js +21 -0
  100. package/_cjs/experimental/eip7702/utils/serializeAuthorizationList.js.map +1 -0
  101. package/_cjs/experimental/eip7702/utils/verifyAuthorization.js +13 -0
  102. package/_cjs/experimental/eip7702/utils/verifyAuthorization.js.map +1 -0
  103. package/_cjs/experimental/erc7715/decorators/erc7715.js +2 -2
  104. package/_cjs/experimental/erc7715/decorators/erc7715.js.map +1 -1
  105. package/_cjs/experimental/index.js +22 -8
  106. package/_cjs/experimental/index.js.map +1 -1
  107. package/_cjs/index.js +7 -6
  108. package/_cjs/index.js.map +1 -1
  109. package/_cjs/op-stack/errors/withdrawal.js +2 -14
  110. package/_cjs/op-stack/errors/withdrawal.js.map +1 -1
  111. package/_cjs/utils/formatters/transaction.js +19 -0
  112. package/_cjs/utils/formatters/transaction.js.map +1 -1
  113. package/_cjs/utils/formatters/transactionRequest.js +19 -0
  114. package/_cjs/utils/formatters/transactionRequest.js.map +1 -1
  115. package/_cjs/utils/transaction/assertTransaction.js +15 -3
  116. package/_cjs/utils/transaction/assertTransaction.js.map +1 -1
  117. package/_cjs/utils/transaction/getSerializedTransactionType.js +2 -0
  118. package/_cjs/utils/transaction/getSerializedTransactionType.js.map +1 -1
  119. package/_cjs/utils/transaction/getTransactionType.js +2 -0
  120. package/_cjs/utils/transaction/getTransactionType.js.map +1 -1
  121. package/_cjs/utils/transaction/parseTransaction.js +70 -0
  122. package/_cjs/utils/transaction/parseTransaction.js.map +1 -1
  123. package/_cjs/utils/transaction/serializeTransaction.js +25 -0
  124. package/_cjs/utils/transaction/serializeTransaction.js.map +1 -1
  125. package/_cjs/zksync/chains.js +9 -7
  126. package/_cjs/zksync/chains.js.map +1 -1
  127. package/_cjs/zksync/errors/bytecode.js +3 -21
  128. package/_cjs/zksync/errors/bytecode.js.map +1 -1
  129. package/_cjs/zksync/errors/token-is-eth.js +1 -7
  130. package/_cjs/zksync/errors/token-is-eth.js.map +1 -1
  131. package/_cjs/zksync/errors/transaction.js +1 -7
  132. package/_cjs/zksync/errors/transaction.js.map +1 -1
  133. package/_cjs/zksync/index.js +9 -4
  134. package/_cjs/zksync/index.js.map +1 -1
  135. package/_cjs/zksync/utils/getEip712Domain.js +1 -1
  136. package/_cjs/zksync/utils/isEip712Transaction.js.map +1 -1
  137. package/_esm/account-abstraction/errors/bundler.js +36 -216
  138. package/_esm/account-abstraction/errors/bundler.js.map +1 -1
  139. package/_esm/account-abstraction/errors/userOperation.js +5 -26
  140. package/_esm/account-abstraction/errors/userOperation.js.map +1 -1
  141. package/_esm/accounts/index.js +1 -0
  142. package/_esm/accounts/index.js.map +1 -1
  143. package/_esm/accounts/privateKeyToAccount.js +4 -0
  144. package/_esm/accounts/privateKeyToAccount.js.map +1 -1
  145. package/_esm/accounts/toAccount.js +1 -0
  146. package/_esm/accounts/toAccount.js.map +1 -1
  147. package/_esm/accounts/utils/signAuthorization.js +22 -0
  148. package/_esm/accounts/utils/signAuthorization.js.map +1 -0
  149. package/_esm/actions/public/estimateGas.js +55 -10
  150. package/_esm/actions/public/estimateGas.js.map +1 -1
  151. package/_esm/actions/public/simulateContract.js.map +1 -1
  152. package/_esm/actions/wallet/prepareTransactionRequest.js.map +1 -1
  153. package/_esm/actions/wallet/sendTransaction.js +25 -3
  154. package/_esm/actions/wallet/sendTransaction.js.map +1 -1
  155. package/_esm/actions/wallet/writeContract.js.map +1 -1
  156. package/_esm/chains/definitions/abstractTestnet.js +2 -0
  157. package/_esm/chains/definitions/abstractTestnet.js.map +1 -1
  158. package/_esm/chains/definitions/{zkSync.js → zksync.js} +5 -4
  159. package/_esm/chains/definitions/{zkSync.js.map → zksync.js.map} +1 -1
  160. package/_esm/chains/definitions/{zkSyncInMemoryNode.js → zksyncInMemoryNode.js} +3 -3
  161. package/_esm/chains/definitions/{zkSyncInMemoryNode.js.map → zksyncInMemoryNode.js.map} +1 -1
  162. package/_esm/chains/definitions/{zkSyncLocalNode.js → zksyncLocalNode.js} +3 -3
  163. package/_esm/chains/definitions/{zkSyncLocalNode.js.map → zksyncLocalNode.js.map} +1 -1
  164. package/_esm/chains/definitions/{zkSyncSepoliaTestnet.js → zksyncSepoliaTestnet.js} +6 -4
  165. package/_esm/chains/definitions/{zkSyncSepoliaTestnet.js.map → zksyncSepoliaTestnet.js.map} +1 -1
  166. package/_esm/chains/index.js +12 -5
  167. package/_esm/chains/index.js.map +1 -1
  168. package/_esm/errors/abi.js +32 -163
  169. package/_esm/errors/abi.js.map +1 -1
  170. package/_esm/errors/account.js +2 -12
  171. package/_esm/errors/account.js.map +1 -1
  172. package/_esm/errors/address.js +1 -6
  173. package/_esm/errors/address.js.map +1 -1
  174. package/_esm/errors/base.js +27 -17
  175. package/_esm/errors/base.js.map +1 -1
  176. package/_esm/errors/blob.js +4 -25
  177. package/_esm/errors/blob.js.map +1 -1
  178. package/_esm/errors/block.js +1 -7
  179. package/_esm/errors/block.js.map +1 -1
  180. package/_esm/errors/ccip.js +3 -18
  181. package/_esm/errors/ccip.js.map +1 -1
  182. package/_esm/errors/chain.js +7 -31
  183. package/_esm/errors/chain.js.map +1 -1
  184. package/_esm/errors/contract.js +6 -37
  185. package/_esm/errors/contract.js.map +1 -1
  186. package/_esm/errors/cursor.js +4 -20
  187. package/_esm/errors/cursor.js.map +1 -1
  188. package/_esm/errors/data.js +3 -21
  189. package/_esm/errors/data.js.map +1 -1
  190. package/_esm/errors/eip712.js +1 -6
  191. package/_esm/errors/eip712.js.map +1 -1
  192. package/_esm/errors/encoding.js +6 -34
  193. package/_esm/errors/encoding.js.map +1 -1
  194. package/_esm/errors/ens.js +5 -26
  195. package/_esm/errors/ens.js.map +1 -1
  196. package/_esm/errors/estimateGas.js +1 -6
  197. package/_esm/errors/estimateGas.js.map +1 -1
  198. package/_esm/errors/fee.js +5 -19
  199. package/_esm/errors/fee.js.map +1 -1
  200. package/_esm/errors/log.js +2 -6
  201. package/_esm/errors/log.js.map +1 -1
  202. package/_esm/errors/node.js +12 -75
  203. package/_esm/errors/node.js.map +1 -1
  204. package/_esm/errors/request.js +5 -30
  205. package/_esm/errors/request.js.map +1 -1
  206. package/_esm/errors/rpc.js +22 -122
  207. package/_esm/errors/rpc.js.map +1 -1
  208. package/_esm/errors/siwe.js +1 -7
  209. package/_esm/errors/siwe.js.map +1 -1
  210. package/_esm/errors/stateOverride.js +4 -12
  211. package/_esm/errors/stateOverride.js.map +1 -1
  212. package/_esm/errors/transaction.js +15 -63
  213. package/_esm/errors/transaction.js.map +1 -1
  214. package/_esm/errors/transport.js +1 -0
  215. package/_esm/errors/transport.js.map +1 -1
  216. package/_esm/errors/utils.js +0 -2
  217. package/_esm/errors/utils.js.map +1 -1
  218. package/_esm/errors/version.js +1 -1
  219. package/_esm/experimental/eip5792/decorators/eip5792.js +3 -3
  220. package/_esm/experimental/eip5792/decorators/eip5792.js.map +1 -1
  221. package/_esm/experimental/eip7702/actions/signAuthorization.js +80 -0
  222. package/_esm/experimental/eip7702/actions/signAuthorization.js.map +1 -0
  223. package/_esm/experimental/eip7702/decorators/eip7702.js +24 -0
  224. package/_esm/experimental/eip7702/decorators/eip7702.js.map +1 -0
  225. package/_esm/experimental/eip7702/types/authorization.js +2 -0
  226. package/_esm/experimental/eip7702/types/authorization.js.map +1 -0
  227. package/_esm/experimental/eip7702/types/rpc.js +2 -0
  228. package/_esm/experimental/eip7702/types/rpc.js.map +1 -0
  229. package/_esm/experimental/eip7702/utils/hashAuthorization.js +23 -0
  230. package/_esm/experimental/eip7702/utils/hashAuthorization.js.map +1 -0
  231. package/_esm/experimental/eip7702/utils/recoverAuthorizationAddress.js +10 -0
  232. package/_esm/experimental/eip7702/utils/recoverAuthorizationAddress.js.map +1 -0
  233. package/_esm/experimental/eip7702/utils/serializeAuthorizationList.js +21 -0
  234. package/_esm/experimental/eip7702/utils/serializeAuthorizationList.js.map +1 -0
  235. package/_esm/experimental/eip7702/utils/verifyAuthorization.js +18 -0
  236. package/_esm/experimental/eip7702/utils/verifyAuthorization.js.map +1 -0
  237. package/_esm/experimental/erc7715/decorators/erc7715.js +3 -3
  238. package/_esm/experimental/erc7715/decorators/erc7715.js.map +1 -1
  239. package/_esm/experimental/index.js +16 -4
  240. package/_esm/experimental/index.js.map +1 -1
  241. package/_esm/index.js +1 -1
  242. package/_esm/index.js.map +1 -1
  243. package/_esm/op-stack/errors/withdrawal.js +2 -14
  244. package/_esm/op-stack/errors/withdrawal.js.map +1 -1
  245. package/_esm/utils/formatters/transaction.js +20 -0
  246. package/_esm/utils/formatters/transaction.js.map +1 -1
  247. package/_esm/utils/formatters/transactionRequest.js +20 -0
  248. package/_esm/utils/formatters/transactionRequest.js.map +1 -1
  249. package/_esm/utils/transaction/assertTransaction.js +14 -3
  250. package/_esm/utils/transaction/assertTransaction.js.map +1 -1
  251. package/_esm/utils/transaction/getSerializedTransactionType.js +2 -0
  252. package/_esm/utils/transaction/getSerializedTransactionType.js.map +1 -1
  253. package/_esm/utils/transaction/getTransactionType.js +2 -0
  254. package/_esm/utils/transaction/getTransactionType.js.map +1 -1
  255. package/_esm/utils/transaction/parseTransaction.js +71 -1
  256. package/_esm/utils/transaction/parseTransaction.js.map +1 -1
  257. package/_esm/utils/transaction/serializeTransaction.js +26 -1
  258. package/_esm/utils/transaction/serializeTransaction.js.map +1 -1
  259. package/_esm/zksync/actions/deployContract.js +1 -1
  260. package/_esm/zksync/actions/sendEip712Transaction.js +4 -4
  261. package/_esm/zksync/actions/sendTransaction.js +4 -4
  262. package/_esm/zksync/actions/signEip712Transaction.js +4 -4
  263. package/_esm/zksync/actions/signTransaction.js +4 -4
  264. package/_esm/zksync/chains.js +4 -3
  265. package/_esm/zksync/chains.js.map +1 -1
  266. package/_esm/zksync/errors/bytecode.js +3 -21
  267. package/_esm/zksync/errors/bytecode.js.map +1 -1
  268. package/_esm/zksync/errors/token-is-eth.js +1 -7
  269. package/_esm/zksync/errors/token-is-eth.js.map +1 -1
  270. package/_esm/zksync/errors/transaction.js +1 -7
  271. package/_esm/zksync/errors/transaction.js.map +1 -1
  272. package/_esm/zksync/index.js +9 -1
  273. package/_esm/zksync/index.js.map +1 -1
  274. package/_esm/zksync/utils/getEip712Domain.js +1 -1
  275. package/_esm/zksync/utils/isEip712Transaction.js.map +1 -1
  276. package/_types/account-abstraction/errors/bundler.d.ts +0 -36
  277. package/_types/account-abstraction/errors/bundler.d.ts.map +1 -1
  278. package/_types/account-abstraction/errors/userOperation.d.ts +0 -4
  279. package/_types/account-abstraction/errors/userOperation.d.ts.map +1 -1
  280. package/_types/accounts/index.d.ts +1 -0
  281. package/_types/accounts/index.d.ts.map +1 -1
  282. package/_types/accounts/privateKeyToAccount.d.ts.map +1 -1
  283. package/_types/accounts/toAccount.d.ts.map +1 -1
  284. package/_types/accounts/types.d.ts +7 -3
  285. package/_types/accounts/types.d.ts.map +1 -1
  286. package/_types/accounts/utils/signAuthorization.d.ts +20 -0
  287. package/_types/accounts/utils/signAuthorization.d.ts.map +1 -0
  288. package/_types/actions/public/estimateGas.d.ts +2 -1
  289. package/_types/actions/public/estimateGas.d.ts.map +1 -1
  290. package/_types/actions/public/simulateContract.d.ts +18 -6
  291. package/_types/actions/public/simulateContract.d.ts.map +1 -1
  292. package/_types/actions/wallet/prepareTransactionRequest.d.ts +2 -2
  293. package/_types/actions/wallet/prepareTransactionRequest.d.ts.map +1 -1
  294. package/_types/actions/wallet/sendTransaction.d.ts +2 -1
  295. package/_types/actions/wallet/sendTransaction.d.ts.map +1 -1
  296. package/_types/actions/wallet/writeContract.d.ts +3 -2
  297. package/_types/actions/wallet/writeContract.d.ts.map +1 -1
  298. package/_types/celo/chainConfig.d.ts +144 -20
  299. package/_types/celo/chainConfig.d.ts.map +1 -1
  300. package/_types/celo/formatters.d.ts +72 -10
  301. package/_types/celo/formatters.d.ts.map +1 -1
  302. package/_types/celo/serializers.d.ts +1 -1
  303. package/_types/celo/serializers.d.ts.map +1 -1
  304. package/_types/chains/definitions/abstractTestnet.d.ts +373 -3
  305. package/_types/chains/definitions/abstractTestnet.d.ts.map +1 -1
  306. package/_types/chains/definitions/ancient8.d.ts +32 -0
  307. package/_types/chains/definitions/ancient8.d.ts.map +1 -1
  308. package/_types/chains/definitions/ancient8Sepolia.d.ts +32 -0
  309. package/_types/chains/definitions/ancient8Sepolia.d.ts.map +1 -1
  310. package/_types/chains/definitions/base.d.ts +32 -0
  311. package/_types/chains/definitions/base.d.ts.map +1 -1
  312. package/_types/chains/definitions/baseGoerli.d.ts +32 -0
  313. package/_types/chains/definitions/baseGoerli.d.ts.map +1 -1
  314. package/_types/chains/definitions/baseSepolia.d.ts +32 -0
  315. package/_types/chains/definitions/baseSepolia.d.ts.map +1 -1
  316. package/_types/chains/definitions/celo.d.ts +144 -20
  317. package/_types/chains/definitions/celo.d.ts.map +1 -1
  318. package/_types/chains/definitions/celoAlfajores.d.ts +144 -20
  319. package/_types/chains/definitions/celoAlfajores.d.ts.map +1 -1
  320. package/_types/chains/definitions/dchain.d.ts +32 -0
  321. package/_types/chains/definitions/dchain.d.ts.map +1 -1
  322. package/_types/chains/definitions/dchainTestnet.d.ts +32 -0
  323. package/_types/chains/definitions/dchainTestnet.d.ts.map +1 -1
  324. package/_types/chains/definitions/fraxtal.d.ts +32 -0
  325. package/_types/chains/definitions/fraxtal.d.ts.map +1 -1
  326. package/_types/chains/definitions/fraxtalTestnet.d.ts +32 -0
  327. package/_types/chains/definitions/fraxtalTestnet.d.ts.map +1 -1
  328. package/_types/chains/definitions/funkiMainnet.d.ts +32 -0
  329. package/_types/chains/definitions/funkiMainnet.d.ts.map +1 -1
  330. package/_types/chains/definitions/funkiSepolia.d.ts +32 -0
  331. package/_types/chains/definitions/funkiSepolia.d.ts.map +1 -1
  332. package/_types/chains/definitions/lisk.d.ts +32 -0
  333. package/_types/chains/definitions/lisk.d.ts.map +1 -1
  334. package/_types/chains/definitions/liskSepolia.d.ts +32 -0
  335. package/_types/chains/definitions/liskSepolia.d.ts.map +1 -1
  336. package/_types/chains/definitions/metalL2.d.ts +32 -0
  337. package/_types/chains/definitions/metalL2.d.ts.map +1 -1
  338. package/_types/chains/definitions/modeTestnet.d.ts +32 -0
  339. package/_types/chains/definitions/modeTestnet.d.ts.map +1 -1
  340. package/_types/chains/definitions/optimism.d.ts +32 -0
  341. package/_types/chains/definitions/optimism.d.ts.map +1 -1
  342. package/_types/chains/definitions/optimismGoerli.d.ts +32 -0
  343. package/_types/chains/definitions/optimismGoerli.d.ts.map +1 -1
  344. package/_types/chains/definitions/optimismSepolia.d.ts +32 -0
  345. package/_types/chains/definitions/optimismSepolia.d.ts.map +1 -1
  346. package/_types/chains/definitions/pgn.d.ts +32 -0
  347. package/_types/chains/definitions/pgn.d.ts.map +1 -1
  348. package/_types/chains/definitions/pgnTestnet.d.ts +32 -0
  349. package/_types/chains/definitions/pgnTestnet.d.ts.map +1 -1
  350. package/_types/chains/definitions/playfiAlbireo.d.ts +64 -10
  351. package/_types/chains/definitions/playfiAlbireo.d.ts.map +1 -1
  352. package/_types/chains/definitions/rss3.d.ts +32 -0
  353. package/_types/chains/definitions/rss3.d.ts.map +1 -1
  354. package/_types/chains/definitions/rss3Sepolia.d.ts +32 -0
  355. package/_types/chains/definitions/rss3Sepolia.d.ts.map +1 -1
  356. package/_types/chains/definitions/{zkSync.d.ts → zksync.d.ts} +69 -14
  357. package/_types/chains/definitions/{zkSync.d.ts.map → zksync.d.ts.map} +1 -1
  358. package/_types/chains/definitions/{zkSyncInMemoryNode.d.ts → zksyncInMemoryNode.d.ts} +67 -13
  359. package/_types/chains/definitions/{zkSyncInMemoryNode.d.ts.map → zksyncInMemoryNode.d.ts.map} +1 -1
  360. package/_types/chains/definitions/{zkSyncLocalNode.d.ts → zksyncLocalNode.d.ts} +67 -13
  361. package/_types/chains/definitions/{zkSyncLocalNode.d.ts.map → zksyncLocalNode.d.ts.map} +1 -1
  362. package/_types/chains/definitions/{zkSyncSepoliaTestnet.d.ts → zksyncSepoliaTestnet.d.ts} +70 -14
  363. package/_types/chains/definitions/{zkSyncSepoliaTestnet.d.ts.map → zksyncSepoliaTestnet.d.ts.map} +1 -1
  364. package/_types/chains/definitions/zora.d.ts +32 -0
  365. package/_types/chains/definitions/zora.d.ts.map +1 -1
  366. package/_types/chains/definitions/zoraSepolia.d.ts +32 -0
  367. package/_types/chains/definitions/zoraSepolia.d.ts.map +1 -1
  368. package/_types/chains/definitions/zoraTestnet.d.ts +32 -0
  369. package/_types/chains/definitions/zoraTestnet.d.ts.map +1 -1
  370. package/_types/chains/index.d.ts +77 -10
  371. package/_types/chains/index.d.ts.map +1 -1
  372. package/_types/errors/abi.d.ts +0 -26
  373. package/_types/errors/abi.d.ts.map +1 -1
  374. package/_types/errors/account.d.ts +0 -2
  375. package/_types/errors/account.d.ts.map +1 -1
  376. package/_types/errors/address.d.ts +0 -1
  377. package/_types/errors/address.d.ts.map +1 -1
  378. package/_types/errors/base.d.ts +7 -1
  379. package/_types/errors/base.d.ts.map +1 -1
  380. package/_types/errors/blob.d.ts +0 -4
  381. package/_types/errors/blob.d.ts.map +1 -1
  382. package/_types/errors/block.d.ts +0 -1
  383. package/_types/errors/block.d.ts.map +1 -1
  384. package/_types/errors/ccip.d.ts +0 -3
  385. package/_types/errors/ccip.d.ts.map +1 -1
  386. package/_types/errors/chain.d.ts +0 -5
  387. package/_types/errors/chain.d.ts.map +1 -1
  388. package/_types/errors/contract.d.ts +0 -6
  389. package/_types/errors/contract.d.ts.map +1 -1
  390. package/_types/errors/cursor.d.ts +0 -3
  391. package/_types/errors/cursor.d.ts.map +1 -1
  392. package/_types/errors/data.d.ts +0 -3
  393. package/_types/errors/data.d.ts.map +1 -1
  394. package/_types/errors/eip712.d.ts +0 -1
  395. package/_types/errors/eip712.d.ts.map +1 -1
  396. package/_types/errors/encoding.d.ts +0 -5
  397. package/_types/errors/encoding.d.ts.map +1 -1
  398. package/_types/errors/ens.d.ts +0 -4
  399. package/_types/errors/ens.d.ts.map +1 -1
  400. package/_types/errors/estimateGas.d.ts +0 -1
  401. package/_types/errors/estimateGas.d.ts.map +1 -1
  402. package/_types/errors/fee.d.ts +0 -3
  403. package/_types/errors/fee.d.ts.map +1 -1
  404. package/_types/errors/log.d.ts +0 -1
  405. package/_types/errors/log.d.ts.map +1 -1
  406. package/_types/errors/node.d.ts +0 -12
  407. package/_types/errors/node.d.ts.map +1 -1
  408. package/_types/errors/request.d.ts +0 -5
  409. package/_types/errors/request.d.ts.map +1 -1
  410. package/_types/errors/rpc.d.ts +2 -22
  411. package/_types/errors/rpc.d.ts.map +1 -1
  412. package/_types/errors/siwe.d.ts +0 -1
  413. package/_types/errors/siwe.d.ts.map +1 -1
  414. package/_types/errors/stateOverride.d.ts +0 -2
  415. package/_types/errors/stateOverride.d.ts.map +1 -1
  416. package/_types/errors/transaction.d.ts +0 -10
  417. package/_types/errors/transaction.d.ts.map +1 -1
  418. package/_types/errors/transport.d.ts.map +1 -1
  419. package/_types/errors/utils.d.ts +0 -1
  420. package/_types/errors/utils.d.ts.map +1 -1
  421. package/_types/errors/version.d.ts +1 -1
  422. package/_types/experimental/eip5792/decorators/eip5792.d.ts +12 -12
  423. package/_types/experimental/eip5792/decorators/eip5792.d.ts.map +1 -1
  424. package/_types/experimental/eip7702/actions/signAuthorization.d.ts +59 -0
  425. package/_types/experimental/eip7702/actions/signAuthorization.d.ts.map +1 -0
  426. package/_types/experimental/eip7702/decorators/eip7702.d.ts +69 -0
  427. package/_types/experimental/eip7702/decorators/eip7702.d.ts.map +1 -0
  428. package/_types/experimental/eip7702/types/authorization.d.ts +24 -0
  429. package/_types/experimental/eip7702/types/authorization.d.ts.map +1 -0
  430. package/_types/experimental/eip7702/types/rpc.d.ts +12 -0
  431. package/_types/experimental/eip7702/types/rpc.d.ts.map +1 -0
  432. package/_types/experimental/eip7702/utils/hashAuthorization.d.ts +21 -0
  433. package/_types/experimental/eip7702/utils/hashAuthorization.d.ts.map +1 -0
  434. package/_types/experimental/eip7702/utils/recoverAuthorizationAddress.d.ts +26 -0
  435. package/_types/experimental/eip7702/utils/recoverAuthorizationAddress.d.ts.map +1 -0
  436. package/_types/experimental/eip7702/utils/serializeAuthorizationList.d.ts +6 -0
  437. package/_types/experimental/eip7702/utils/serializeAuthorizationList.d.ts.map +1 -0
  438. package/_types/experimental/eip7702/utils/verifyAuthorization.d.ts +21 -0
  439. package/_types/experimental/eip7702/utils/verifyAuthorization.d.ts.map +1 -0
  440. package/_types/experimental/erc7715/decorators/erc7715.d.ts +6 -6
  441. package/_types/experimental/erc7715/decorators/erc7715.d.ts.map +1 -1
  442. package/_types/experimental/index.d.ts +20 -4
  443. package/_types/experimental/index.d.ts.map +1 -1
  444. package/_types/index.d.ts +3 -3
  445. package/_types/index.d.ts.map +1 -1
  446. package/_types/op-stack/chainConfig.d.ts +32 -0
  447. package/_types/op-stack/chainConfig.d.ts.map +1 -1
  448. package/_types/op-stack/errors/withdrawal.d.ts +0 -2
  449. package/_types/op-stack/errors/withdrawal.d.ts.map +1 -1
  450. package/_types/op-stack/formatters.d.ts +32 -0
  451. package/_types/op-stack/formatters.d.ts.map +1 -1
  452. package/_types/op-stack/serializers.d.ts +1 -1
  453. package/_types/op-stack/serializers.d.ts.map +1 -1
  454. package/_types/types/rpc.d.ts +9 -4
  455. package/_types/types/rpc.d.ts.map +1 -1
  456. package/_types/types/transaction.d.ts +50 -36
  457. package/_types/types/transaction.d.ts.map +1 -1
  458. package/_types/types/utils.d.ts +0 -14
  459. package/_types/types/utils.d.ts.map +1 -1
  460. package/_types/utils/formatters/transaction.d.ts +2 -1
  461. package/_types/utils/formatters/transaction.d.ts.map +1 -1
  462. package/_types/utils/formatters/transactionRequest.d.ts +2 -1
  463. package/_types/utils/formatters/transactionRequest.d.ts.map +1 -1
  464. package/_types/utils/index.d.ts +1 -1
  465. package/_types/utils/index.d.ts.map +1 -1
  466. package/_types/utils/signature/hashMessage.d.ts +2 -2
  467. package/_types/utils/signature/hashMessage.d.ts.map +1 -1
  468. package/_types/utils/transaction/assertTransaction.d.ts +3 -1
  469. package/_types/utils/transaction/assertTransaction.d.ts.map +1 -1
  470. package/_types/utils/transaction/getSerializedTransactionType.d.ts +2 -2
  471. package/_types/utils/transaction/getSerializedTransactionType.d.ts.map +1 -1
  472. package/_types/utils/transaction/getTransactionType.d.ts +12 -5
  473. package/_types/utils/transaction/getTransactionType.d.ts.map +1 -1
  474. package/_types/utils/transaction/parseTransaction.d.ts +6 -4
  475. package/_types/utils/transaction/parseTransaction.d.ts.map +1 -1
  476. package/_types/utils/transaction/serializeTransaction.d.ts +4 -2
  477. package/_types/utils/transaction/serializeTransaction.d.ts.map +1 -1
  478. package/_types/zksync/actions/deployContract.d.ts +1 -1
  479. package/_types/zksync/actions/estimateFee.d.ts +4 -4
  480. package/_types/zksync/actions/estimateGasL1ToL2.d.ts +2 -2
  481. package/_types/zksync/actions/getAllBalances.d.ts +2 -2
  482. package/_types/zksync/actions/getBaseTokenL1Address.d.ts +2 -2
  483. package/_types/zksync/actions/getBlockDetails.d.ts +5 -5
  484. package/_types/zksync/actions/getBridgehubContractAddress.d.ts +2 -2
  485. package/_types/zksync/actions/getDefaultBridgeAddresses.d.ts +2 -2
  486. package/_types/zksync/actions/getL1BatchBlockRange.d.ts +2 -2
  487. package/_types/zksync/actions/getL1BatchDetails.d.ts +5 -5
  488. package/_types/zksync/actions/getL1BatchNumber.d.ts +2 -2
  489. package/_types/zksync/actions/getL1ChainId.d.ts +2 -2
  490. package/_types/zksync/actions/getLogProof.d.ts +2 -2
  491. package/_types/zksync/actions/getMainContractAddress.d.ts +2 -2
  492. package/_types/zksync/actions/getRawBlockTransactions.d.ts +6 -6
  493. package/_types/zksync/actions/getTestnetPaymasterAddress.d.ts +2 -2
  494. package/_types/zksync/actions/getTransactionDetails.d.ts +4 -4
  495. package/_types/zksync/actions/sendEip712Transaction.d.ts +4 -4
  496. package/_types/zksync/actions/sendTransaction.d.ts +4 -4
  497. package/_types/zksync/actions/signEip712Transaction.d.ts +4 -4
  498. package/_types/zksync/actions/signTransaction.d.ts +4 -4
  499. package/_types/zksync/chainConfig.d.ts +65 -11
  500. package/_types/zksync/chainConfig.d.ts.map +1 -1
  501. package/_types/zksync/chains.d.ts +4 -3
  502. package/_types/zksync/chains.d.ts.map +1 -1
  503. package/_types/zksync/decorators/eip712.d.ts +13 -13
  504. package/_types/zksync/decorators/publicL2.d.ts +37 -37
  505. package/_types/zksync/errors/bytecode.d.ts +0 -3
  506. package/_types/zksync/errors/bytecode.d.ts.map +1 -1
  507. package/_types/zksync/errors/token-is-eth.d.ts +0 -1
  508. package/_types/zksync/errors/token-is-eth.d.ts.map +1 -1
  509. package/_types/zksync/errors/transaction.d.ts +0 -1
  510. package/_types/zksync/errors/transaction.d.ts.map +1 -1
  511. package/_types/zksync/formatters.d.ts +75 -21
  512. package/_types/zksync/formatters.d.ts.map +1 -1
  513. package/_types/zksync/index.d.ts +77 -7
  514. package/_types/zksync/index.d.ts.map +1 -1
  515. package/_types/zksync/serializers.d.ts +2 -2
  516. package/_types/zksync/serializers.d.ts.map +1 -1
  517. package/_types/zksync/types/block.d.ts +6 -6
  518. package/_types/zksync/types/chain.d.ts +2 -2
  519. package/_types/zksync/types/eip1193.d.ts +8 -8
  520. package/_types/zksync/types/eip712.d.ts +3 -3
  521. package/_types/zksync/types/fee.d.ts +2 -2
  522. package/_types/zksync/types/log.d.ts +4 -4
  523. package/_types/zksync/types/transaction.d.ts +31 -31
  524. package/_types/zksync/utils/assertEip712Request.d.ts +2 -2
  525. package/_types/zksync/utils/assertEip712Transaction.d.ts +2 -2
  526. package/_types/zksync/utils/getEip712Domain.d.ts +2 -2
  527. package/_types/zksync/utils/isEip712Transaction.d.ts +3 -3
  528. package/_types/zksync/utils/isEip712Transaction.d.ts.map +1 -1
  529. package/account-abstraction/errors/bundler.ts +36 -48
  530. package/account-abstraction/errors/userOperation.ts +6 -6
  531. package/accounts/index.ts +6 -0
  532. package/accounts/privateKeyToAccount.ts +4 -0
  533. package/accounts/toAccount.ts +1 -0
  534. package/accounts/types.ts +11 -3
  535. package/accounts/utils/signAuthorization.ts +63 -0
  536. package/actions/public/estimateGas.ts +74 -11
  537. package/actions/public/simulateContract.ts +48 -14
  538. package/actions/wallet/prepareTransactionRequest.ts +3 -1
  539. package/actions/wallet/sendTransaction.ts +33 -4
  540. package/actions/wallet/writeContract.ts +5 -3
  541. package/chains/definitions/abstractTestnet.ts +2 -0
  542. package/chains/definitions/{zkSync.ts → zksync.ts} +4 -3
  543. package/chains/definitions/{zkSyncInMemoryNode.ts → zksyncInMemoryNode.ts} +2 -2
  544. package/chains/definitions/{zkSyncLocalNode.ts → zksyncLocalNode.ts} +2 -2
  545. package/chains/definitions/{zkSyncSepoliaTestnet.ts → zksyncSepoliaTestnet.ts} +5 -3
  546. package/chains/index.ts +113 -34
  547. package/errors/abi.ts +37 -37
  548. package/errors/account.ts +2 -2
  549. package/errors/address.ts +1 -1
  550. package/errors/base.ts +41 -22
  551. package/errors/blob.ts +4 -5
  552. package/errors/block.ts +1 -2
  553. package/errors/ccip.ts +3 -3
  554. package/errors/chain.ts +9 -10
  555. package/errors/contract.ts +6 -10
  556. package/errors/cursor.ts +5 -4
  557. package/errors/data.ts +3 -3
  558. package/errors/eip712.ts +1 -1
  559. package/errors/encoding.ts +7 -5
  560. package/errors/ens.ts +6 -5
  561. package/errors/estimateGas.ts +1 -2
  562. package/errors/fee.ts +7 -5
  563. package/errors/log.ts +3 -2
  564. package/errors/node.ts +12 -17
  565. package/errors/request.ts +5 -10
  566. package/errors/rpc.ts +29 -26
  567. package/errors/siwe.ts +1 -2
  568. package/errors/stateOverride.ts +6 -4
  569. package/errors/transaction.ts +19 -19
  570. package/errors/transport.ts +1 -0
  571. package/errors/utils.ts +0 -3
  572. package/errors/version.ts +1 -1
  573. package/experimental/eip5792/decorators/eip5792.ts +13 -13
  574. package/experimental/eip7702/actions/signAuthorization.ts +136 -0
  575. package/experimental/eip7702/decorators/eip7702.ts +86 -0
  576. package/experimental/eip7702/types/authorization.ts +30 -0
  577. package/experimental/eip7702/types/rpc.ts +12 -0
  578. package/experimental/eip7702/utils/hashAuthorization.ts +60 -0
  579. package/experimental/eip7702/utils/recoverAuthorizationAddress.ts +61 -0
  580. package/experimental/eip7702/utils/serializeAuthorizationList.ts +33 -0
  581. package/experimental/eip7702/utils/verifyAuthorization.ts +52 -0
  582. package/experimental/erc7715/decorators/erc7715.ts +7 -7
  583. package/experimental/index.ts +72 -18
  584. package/index.ts +29 -4
  585. package/op-stack/errors/withdrawal.ts +2 -3
  586. package/package.json +1 -1
  587. package/types/rpc.ts +21 -1
  588. package/types/transaction.ts +103 -54
  589. package/types/utils.ts +0 -15
  590. package/utils/formatters/transaction.ts +32 -0
  591. package/utils/formatters/transactionRequest.ts +31 -0
  592. package/utils/index.ts +1 -1
  593. package/utils/signature/hashMessage.ts +2 -2
  594. package/utils/transaction/assertTransaction.ts +24 -12
  595. package/utils/transaction/getSerializedTransactionType.ts +7 -0
  596. package/utils/transaction/getTransactionType.ts +95 -60
  597. package/utils/transaction/parseTransaction.ts +127 -0
  598. package/utils/transaction/serializeTransaction.ts +66 -0
  599. package/zksync/actions/deployContract.ts +1 -1
  600. package/zksync/actions/estimateFee.ts +4 -4
  601. package/zksync/actions/estimateGasL1ToL2.ts +2 -2
  602. package/zksync/actions/getAllBalances.ts +2 -2
  603. package/zksync/actions/getBaseTokenL1Address.ts +2 -2
  604. package/zksync/actions/getBlockDetails.ts +6 -6
  605. package/zksync/actions/getBridgehubContractAddress.ts +2 -2
  606. package/zksync/actions/getDefaultBridgeAddresses.ts +2 -2
  607. package/zksync/actions/getL1BatchBlockRange.ts +2 -2
  608. package/zksync/actions/getL1BatchDetails.ts +6 -6
  609. package/zksync/actions/getL1BatchNumber.ts +2 -2
  610. package/zksync/actions/getL1ChainId.ts +2 -2
  611. package/zksync/actions/getLogProof.ts +2 -2
  612. package/zksync/actions/getMainContractAddress.ts +2 -2
  613. package/zksync/actions/getRawBlockTransactions.ts +6 -6
  614. package/zksync/actions/getTestnetPaymasterAddress.ts +2 -2
  615. package/zksync/actions/getTransactionDetails.ts +4 -4
  616. package/zksync/actions/sendEip712Transaction.ts +4 -4
  617. package/zksync/actions/sendTransaction.ts +4 -4
  618. package/zksync/actions/signEip712Transaction.ts +4 -4
  619. package/zksync/actions/signTransaction.ts +4 -4
  620. package/zksync/chains.ts +4 -3
  621. package/zksync/decorators/eip712.ts +13 -13
  622. package/zksync/decorators/publicL2.ts +37 -37
  623. package/zksync/errors/bytecode.ts +3 -3
  624. package/zksync/errors/token-is-eth.ts +1 -2
  625. package/zksync/errors/transaction.ts +1 -2
  626. package/zksync/formatters.ts +22 -22
  627. package/zksync/index.ts +111 -32
  628. package/zksync/serializers.ts +7 -7
  629. package/zksync/types/block.ts +9 -9
  630. package/zksync/types/chain.ts +5 -5
  631. package/zksync/types/eip1193.ts +8 -8
  632. package/zksync/types/eip712.ts +3 -3
  633. package/zksync/types/fee.ts +2 -2
  634. package/zksync/types/log.ts +4 -4
  635. package/zksync/types/transaction.ts +45 -45
  636. package/zksync/utils/assertEip712Request.ts +2 -2
  637. package/zksync/utils/assertEip712Transaction.ts +4 -4
  638. package/zksync/utils/getEip712Domain.ts +9 -9
  639. package/zksync/utils/isEip712Transaction.ts +8 -3
  640. package/_cjs/chains/definitions/zkSyncSepoliaTestnet.js.map +0 -1
  641. package/_cjs/chains/definitions/zkSyncTestnet.js +0 -31
  642. package/_cjs/chains/definitions/zkSyncTestnet.js.map +0 -1
  643. package/_esm/chains/definitions/zkSyncTestnet.js +0 -29
  644. package/_esm/chains/definitions/zkSyncTestnet.js.map +0 -1
  645. package/_types/chains/definitions/zkSyncTestnet.d.ts +0 -351
  646. package/_types/chains/definitions/zkSyncTestnet.d.ts.map +0 -1
  647. package/chains/definitions/zkSyncTestnet.ts +0 -29
@@ -0,0 +1,63 @@
1
+ import type { ErrorType } from '../../errors/utils.js'
2
+ import type {
3
+ Authorization,
4
+ SignedAuthorization,
5
+ } from '../../experimental/eip7702/types/authorization.js'
6
+ import {
7
+ type HashAuthorizationErrorType,
8
+ hashAuthorization,
9
+ } from '../../experimental/eip7702/utils/hashAuthorization.js'
10
+ import type { Hex, Signature } from '../../types/misc.js'
11
+ import type { Prettify } from '../../types/utils.js'
12
+ import {
13
+ type SignErrorType,
14
+ type SignParameters,
15
+ type SignReturnType,
16
+ sign,
17
+ } from './sign.js'
18
+
19
+ type To = 'object' | 'bytes' | 'hex'
20
+
21
+ export type SignAuthorizationParameters<to extends To = 'object'> =
22
+ Authorization & {
23
+ /** The private key to sign with. */
24
+ privateKey: Hex
25
+ to?: SignParameters<to>['to'] | undefined
26
+ }
27
+
28
+ export type SignAuthorizationReturnType<to extends To = 'object'> = Prettify<
29
+ to extends 'object' ? SignedAuthorization : SignReturnType<to>
30
+ >
31
+
32
+ export type SignAuthorizationErrorType =
33
+ | SignErrorType
34
+ | HashAuthorizationErrorType
35
+ | ErrorType
36
+
37
+ /**
38
+ * Signs an Authorization hash in [EIP-7702 format](https://eips.ethereum.org/EIPS/eip-7702): `keccak256('0x05' || rlp([chain_id, address, nonce]))`.
39
+ */
40
+ export async function experimental_signAuthorization<to extends To = 'object'>(
41
+ parameters: SignAuthorizationParameters<to>,
42
+ ): Promise<SignAuthorizationReturnType<to>> {
43
+ const {
44
+ contractAddress,
45
+ chainId,
46
+ nonce,
47
+ privateKey,
48
+ to = 'object',
49
+ } = parameters
50
+ const signature = await sign({
51
+ hash: hashAuthorization({ contractAddress, chainId, nonce }),
52
+ privateKey,
53
+ to,
54
+ })
55
+ if (to === 'object')
56
+ return {
57
+ contractAddress,
58
+ chainId,
59
+ nonce,
60
+ ...(signature as Signature),
61
+ } as any
62
+ return signature as any
63
+ }
@@ -6,7 +6,11 @@ import {
6
6
  } from '../../accounts/utils/parseAccount.js'
7
7
  import type { Client } from '../../clients/createClient.js'
8
8
  import type { Transport } from '../../clients/transports/createTransport.js'
9
- import type { BaseError } from '../../errors/base.js'
9
+ import { BaseError } from '../../errors/base.js'
10
+ import {
11
+ type RecoverAuthorizationAddressErrorType,
12
+ recoverAuthorizationAddress,
13
+ } from '../../experimental/eip7702/utils/recoverAuthorizationAddress.js'
10
14
  import type { BlockTag } from '../../types/block.js'
11
15
  import type { Chain } from '../../types/chain.js'
12
16
  import type { StateOverride } from '../../types/stateOverride.js'
@@ -36,6 +40,7 @@ import {
36
40
  type PrepareTransactionRequestParameters,
37
41
  prepareTransactionRequest,
38
42
  } from '../wallet/prepareTransactionRequest.js'
43
+ import { getBalance } from './getBalance.js'
39
44
 
40
45
  export type EstimateGasParameters<
41
46
  chain extends Chain | undefined = Chain | undefined,
@@ -66,6 +71,7 @@ export type EstimateGasErrorType = GetEstimateGasErrorReturnType<
66
71
  | ParseAccountErrorType
67
72
  | NumberToHexErrorType
68
73
  | RequestErrorType
74
+ | RecoverAuthorizationAddressErrorType
69
75
  | AssertRequestErrorType
70
76
  >
71
77
 
@@ -107,6 +113,7 @@ export async function estimateGas<
107
113
  try {
108
114
  const {
109
115
  accessList,
116
+ authorizationList,
110
117
  blobs,
111
118
  blobVersionedHashes,
112
119
  blockNumber,
@@ -118,7 +125,6 @@ export async function estimateGas<
118
125
  maxFeePerGas,
119
126
  maxPriorityFeePerGas,
120
127
  nonce,
121
- to,
122
128
  value,
123
129
  stateOverride,
124
130
  ...rest
@@ -135,6 +141,25 @@ export async function estimateGas<
135
141
 
136
142
  const rpcStateOverride = serializeStateOverride(stateOverride)
137
143
 
144
+ const to = await (async () => {
145
+ // If `to` exists on the parameters, use that.
146
+ if (rest.to) return rest.to
147
+
148
+ // If no `to` exists, and we are sending a EIP-7702 transaction, use the
149
+ // address of the first authorization in the list.
150
+ if (authorizationList && authorizationList.length > 0)
151
+ return await recoverAuthorizationAddress({
152
+ authorization: authorizationList[0],
153
+ }).catch(() => {
154
+ throw new BaseError(
155
+ '`to` is required. Could not infer from `authorizationList`',
156
+ )
157
+ })
158
+
159
+ // Otherwise, we are sending a deployment transaction.
160
+ return undefined
161
+ })()
162
+
138
163
  assertRequest(args as AssertRequestParameters)
139
164
 
140
165
  const chainFormat = client.chain?.formatters?.transactionRequest?.format
@@ -145,6 +170,7 @@ export async function estimateGas<
145
170
  ...extract(rest, { format: chainFormat }),
146
171
  from: account?.address,
147
172
  accessList,
173
+ authorizationList,
148
174
  blobs,
149
175
  blobVersionedHashes,
150
176
  data,
@@ -158,15 +184,52 @@ export async function estimateGas<
158
184
  value,
159
185
  } as TransactionRequest)
160
186
 
161
- const balance = await client.request({
162
- method: 'eth_estimateGas',
163
- params: rpcStateOverride
164
- ? [request, block ?? 'latest', rpcStateOverride]
165
- : block
166
- ? [request, block]
167
- : [request],
168
- })
169
- return BigInt(balance)
187
+ function estimateGas_rpc(parameters: {
188
+ block: any
189
+ request: any
190
+ rpcStateOverride: any
191
+ }) {
192
+ const { block, request, rpcStateOverride } = parameters
193
+ return client.request({
194
+ method: 'eth_estimateGas',
195
+ params: rpcStateOverride
196
+ ? [request, block ?? 'latest', rpcStateOverride]
197
+ : block
198
+ ? [request, block]
199
+ : [request],
200
+ })
201
+ }
202
+
203
+ let estimate = BigInt(
204
+ await estimateGas_rpc({ block, request, rpcStateOverride }),
205
+ )
206
+
207
+ // TODO(7702): Remove this once https://github.com/ethereum/execution-apis/issues/561 is resolved.
208
+ // Authorization list schema is not implemented on JSON-RPC spec yet, so we need to
209
+ // manually estimate the gas.
210
+ if (authorizationList) {
211
+ const value = await getBalance(client, { address: request.from })
212
+ const estimates = await Promise.all(
213
+ authorizationList.map(async (authorization) => {
214
+ const { contractAddress } = authorization
215
+ const estimate = await estimateGas_rpc({
216
+ block,
217
+ request: {
218
+ authorizationList: undefined,
219
+ data,
220
+ from: account?.address,
221
+ to: contractAddress,
222
+ value: numberToHex(value),
223
+ },
224
+ rpcStateOverride,
225
+ }).catch(() => 100_000n)
226
+ return 2n * BigInt(estimate)
227
+ }),
228
+ )
229
+ estimate += estimates.reduce((acc, curr) => acc + curr, 0n)
230
+ }
231
+
232
+ return estimate
170
233
  } catch (err) {
171
234
  throw getEstimateGasError(err as BaseError, {
172
235
  ...args,
@@ -1,4 +1,4 @@
1
- import type { Abi, Address } from 'abitype'
1
+ import type { Abi, AbiFunction, AbiStateMutability, Address } from 'abitype'
2
2
 
3
3
  import {
4
4
  type ParseAccountErrorType,
@@ -16,10 +16,15 @@ import type {
16
16
  ContractFunctionParameters,
17
17
  ContractFunctionReturnType,
18
18
  ExtractAbiFunctionForArgs,
19
- GetValue,
20
19
  } from '../../types/contract.js'
21
20
  import type { Hex } from '../../types/misc.js'
22
- import type { Prettify, UnionEvaluate, UnionOmit } from '../../types/utils.js'
21
+ import type {
22
+ IsNarrowable,
23
+ NoInfer,
24
+ Prettify,
25
+ UnionEvaluate,
26
+ UnionOmit,
27
+ } from '../../types/utils.js'
23
28
  import {
24
29
  type DecodeFunctionResultErrorType,
25
30
  decodeFunctionResult,
@@ -34,9 +39,35 @@ import {
34
39
  } from '../../utils/errors/getContractError.js'
35
40
  import type { WriteContractParameters } from '../wallet/writeContract.js'
36
41
 
42
+ import type { TransactionRequest } from '../../types/transaction.js'
37
43
  import { getAction } from '../../utils/getAction.js'
38
44
  import { type CallErrorType, type CallParameters, call } from './call.js'
39
45
 
46
+ export type GetMutabilityAwareValue<
47
+ abi extends Abi | readonly unknown[],
48
+ mutability extends AbiStateMutability = AbiStateMutability,
49
+ functionName extends ContractFunctionName<
50
+ abi,
51
+ mutability
52
+ > = ContractFunctionName<abi, mutability>,
53
+ valueType = TransactionRequest['value'],
54
+ args extends ContractFunctionArgs<
55
+ abi,
56
+ mutability,
57
+ functionName
58
+ > = ContractFunctionArgs<abi, mutability, functionName>,
59
+ abiFunction extends AbiFunction = abi extends Abi
60
+ ? ExtractAbiFunctionForArgs<abi, mutability, functionName, args>
61
+ : AbiFunction,
62
+ _Narrowable extends boolean = IsNarrowable<abi, Abi>,
63
+ > = _Narrowable extends true
64
+ ? abiFunction['stateMutability'] extends 'payable'
65
+ ? { value?: NoInfer<valueType> | undefined }
66
+ : abiFunction['payable'] extends true
67
+ ? { value?: NoInfer<valueType> | undefined }
68
+ : { value?: undefined }
69
+ : { value?: NoInfer<valueType> | undefined }
70
+
40
71
  export type SimulateContractParameters<
41
72
  abi extends Abi | readonly unknown[] = Abi,
42
73
  functionName extends ContractFunctionName<
@@ -75,34 +106,37 @@ export type SimulateContractParameters<
75
106
  | 'factoryData'
76
107
  | 'value'
77
108
  > &
78
- GetValue<
109
+ GetMutabilityAwareValue<
79
110
  abi,
111
+ 'nonpayable' | 'payable',
80
112
  functionName,
81
113
  CallParameters<derivedChain> extends CallParameters
82
114
  ? CallParameters<derivedChain>['value']
83
- : CallParameters['value']
115
+ : CallParameters['value'],
116
+ args
84
117
  >
85
118
 
86
119
  export type SimulateContractReturnType<
87
- abi extends Abi | readonly unknown[] = Abi,
88
- functionName extends ContractFunctionName<
120
+ out abi extends Abi | readonly unknown[] = Abi,
121
+ in out functionName extends ContractFunctionName<
89
122
  abi,
90
123
  'nonpayable' | 'payable'
91
124
  > = ContractFunctionName<abi, 'nonpayable' | 'payable'>,
92
- args extends ContractFunctionArgs<
125
+ in out args extends ContractFunctionArgs<
93
126
  abi,
94
127
  'nonpayable' | 'payable',
95
128
  functionName
96
129
  > = ContractFunctionArgs<abi, 'nonpayable' | 'payable', functionName>,
97
- chain extends Chain | undefined = Chain | undefined,
98
- account extends Account | undefined = Account | undefined,
99
- chainOverride extends Chain | undefined = Chain | undefined,
100
- accountOverride extends Account | Address | undefined =
130
+ /** @ts-expect-error cast variance */
131
+ out chain extends Chain | undefined = Chain | undefined,
132
+ out account extends Account | undefined = Account | undefined,
133
+ out chainOverride extends Chain | undefined = Chain | undefined,
134
+ out accountOverride extends Account | Address | undefined =
101
135
  | Account
102
136
  | Address
103
137
  | undefined,
104
138
  ///
105
- minimizedAbi extends Abi = readonly [
139
+ in out minimizedAbi extends Abi = readonly [
106
140
  ExtractAbiFunctionForArgs<
107
141
  abi extends Abi ? abi : Abi,
108
142
  'nonpayable' | 'payable',
@@ -110,7 +144,7 @@ export type SimulateContractReturnType<
110
144
  args
111
145
  >,
112
146
  ],
113
- resolvedAccount extends Account | undefined = accountOverride extends
147
+ out resolvedAccount extends Account | undefined = accountOverride extends
114
148
  | Account
115
149
  | Address
116
150
  ? ParseAccount<accountOverride>
@@ -38,6 +38,7 @@ import type {
38
38
  TransactionRequestEIP1559,
39
39
  TransactionRequestEIP2930,
40
40
  TransactionRequestEIP4844,
41
+ TransactionRequestEIP7702,
41
42
  TransactionRequestLegacy,
42
43
  TransactionSerializable,
43
44
  } from '../../types/transaction.js'
@@ -142,7 +143,8 @@ export type PrepareTransactionRequestReturnType<
142
143
  | (_transactionType extends 'legacy' ? TransactionRequestLegacy : never)
143
144
  | (_transactionType extends 'eip1559' ? TransactionRequestEIP1559 : never)
144
145
  | (_transactionType extends 'eip2930' ? TransactionRequestEIP2930 : never)
145
- | (_transactionType extends 'eip4844' ? TransactionRequestEIP4844 : never),
146
+ | (_transactionType extends 'eip4844' ? TransactionRequestEIP4844 : never)
147
+ | (_transactionType extends 'eip7702' ? TransactionRequestEIP7702 : never),
146
148
  > = Prettify<
147
149
  UnionRequiredBy<
148
150
  Extract<
@@ -12,8 +12,12 @@ import {
12
12
  AccountTypeNotSupportedError,
13
13
  type AccountTypeNotSupportedErrorType,
14
14
  } from '../../errors/account.js'
15
- import type { BaseError } from '../../errors/base.js'
15
+ import { BaseError } from '../../errors/base.js'
16
16
  import type { ErrorType } from '../../errors/utils.js'
17
+ import {
18
+ type RecoverAuthorizationAddressErrorType,
19
+ recoverAuthorizationAddress,
20
+ } from '../../experimental/eip7702/utils/recoverAuthorizationAddress.js'
17
21
  import type { GetAccountParameter } from '../../types/account.js'
18
22
  import type { Chain, DeriveChain } from '../../types/chain.js'
19
23
  import type { GetChainParameter } from '../../types/chain.js'
@@ -85,6 +89,7 @@ export type SendTransactionErrorType =
85
89
  | GetChainIdErrorType
86
90
  | PrepareTransactionRequestErrorType
87
91
  | SendRawTransactionErrorType
92
+ | RecoverAuthorizationAddressErrorType
88
93
  | SignTransactionErrorType
89
94
  | RequestErrorType
90
95
  >
@@ -148,6 +153,7 @@ export async function sendTransaction<
148
153
  account: account_ = client.account,
149
154
  chain = client.chain,
150
155
  accessList,
156
+ authorizationList,
151
157
  blobs,
152
158
  data,
153
159
  gas,
@@ -156,7 +162,6 @@ export async function sendTransaction<
156
162
  maxFeePerGas,
157
163
  maxPriorityFeePerGas,
158
164
  nonce,
159
- to,
160
165
  value,
161
166
  ...rest
162
167
  } = parameters
@@ -179,6 +184,25 @@ export async function sendTransaction<
179
184
  })
180
185
  }
181
186
 
187
+ const to = await (async () => {
188
+ // If `to` exists on the parameters, use that.
189
+ if (parameters.to) return parameters.to
190
+
191
+ // If no `to` exists, and we are sending a EIP-7702 transaction, use the
192
+ // address of the first authorization in the list.
193
+ if (authorizationList && authorizationList.length > 0)
194
+ return await recoverAuthorizationAddress({
195
+ authorization: authorizationList[0],
196
+ }).catch(() => {
197
+ throw new BaseError(
198
+ '`to` is required. Could not infer from `authorizationList`.',
199
+ )
200
+ })
201
+
202
+ // Otherwise, we are sending a deployment transaction.
203
+ return undefined
204
+ })()
205
+
182
206
  if (account.type === 'json-rpc') {
183
207
  const chainFormat = client.chain?.formatters?.transactionRequest?.format
184
208
  const format = chainFormat || formatTransactionRequest
@@ -187,6 +211,7 @@ export async function sendTransaction<
187
211
  // Pick out extra data that might exist on the chain's transaction request type.
188
212
  ...extract(rest, { format: chainFormat }),
189
213
  accessList,
214
+ authorizationList,
190
215
  blobs,
191
216
  chainId,
192
217
  data,
@@ -218,6 +243,7 @@ export async function sendTransaction<
218
243
  )({
219
244
  account,
220
245
  accessList,
246
+ authorizationList,
221
247
  blobs,
222
248
  chain,
223
249
  chainId,
@@ -229,9 +255,9 @@ export async function sendTransaction<
229
255
  maxPriorityFeePerGas,
230
256
  nonce,
231
257
  parameters: [...defaultParameters, 'sidecars'],
232
- to,
233
258
  value,
234
259
  ...rest,
260
+ to,
235
261
  } as any)
236
262
 
237
263
  const serializer = chain?.serializers?.transaction
@@ -256,7 +282,10 @@ export async function sendTransaction<
256
282
  type: 'smart',
257
283
  })
258
284
 
259
- throw new Error('incompatible account type.')
285
+ throw new AccountTypeNotSupportedError({
286
+ docsPath: '/docs/actions/wallet/sendTransaction',
287
+ type: (account as { type: string }).type,
288
+ })
260
289
  } catch (err) {
261
290
  if (err instanceof AccountTypeNotSupportedError) throw err
262
291
  throw getTransactionError(err as BaseError, {
@@ -14,7 +14,6 @@ import type {
14
14
  ContractFunctionArgs,
15
15
  ContractFunctionName,
16
16
  ContractFunctionParameters,
17
- GetValue,
18
17
  } from '../../types/contract.js'
19
18
  import type { Hex } from '../../types/misc.js'
20
19
  import type { Prettify, UnionEvaluate, UnionOmit } from '../../types/utils.js'
@@ -25,6 +24,7 @@ import {
25
24
  } from '../../utils/abi/encodeFunctionData.js'
26
25
  import type { FormattedTransactionRequest } from '../../utils/formatters/transactionRequest.js'
27
26
  import { getAction } from '../../utils/getAction.js'
27
+ import type { GetMutabilityAwareValue } from '../public/simulateContract.js'
28
28
  import {
29
29
  type SendTransactionErrorType,
30
30
  type SendTransactionReturnType,
@@ -59,10 +59,12 @@ export type WriteContractParameters<
59
59
  GetChainParameter<chain, chainOverride> &
60
60
  Prettify<
61
61
  GetAccountParameter<account> &
62
- GetValue<
62
+ GetMutabilityAwareValue<
63
63
  abi,
64
+ 'nonpayable' | 'payable',
64
65
  functionName,
65
- FormattedTransactionRequest<derivedChain>['value']
66
+ FormattedTransactionRequest<derivedChain>['value'],
67
+ args
66
68
  > & {
67
69
  /** Data to append to the end of the calldata. Useful for adding a ["domain" tag](https://opensea.notion.site/opensea/Seaport-Order-Attributions-ec2d69bf455041a5baa490941aad307f). */
68
70
  dataSuffix?: Hex | undefined
@@ -1,6 +1,8 @@
1
1
  import { defineChain } from '../../utils/chain/defineChain.js'
2
+ import { chainConfig } from '../../zksync/chainConfig.js'
2
3
 
3
4
  export const abstractTestnet = /*#__PURE__*/ defineChain({
5
+ ...chainConfig,
4
6
  id: 11_124,
5
7
  name: 'Abstract Testnet',
6
8
  nativeCurrency: {
@@ -1,10 +1,10 @@
1
1
  import { defineChain } from '../../utils/chain/defineChain.js'
2
2
  import { chainConfig } from '../../zksync/chainConfig.js'
3
3
 
4
- export const zkSync = /*#__PURE__*/ defineChain({
4
+ export const zksync = /*#__PURE__*/ defineChain({
5
5
  ...chainConfig,
6
6
  id: 324,
7
- name: 'zkSync Era',
7
+ name: 'ZKsync Era',
8
8
  network: 'zksync-era',
9
9
  nativeCurrency: {
10
10
  decimals: 18,
@@ -24,8 +24,9 @@ export const zkSync = /*#__PURE__*/ defineChain({
24
24
  apiUrl: 'https://api-era.zksync.network/api',
25
25
  },
26
26
  native: {
27
- name: 'zkSync Explorer',
27
+ name: 'ZKsync Explorer',
28
28
  url: 'https://explorer.zksync.io/',
29
+ apiUrl: 'https://block-explorer-api.mainnet.zksync.io/api',
29
30
  },
30
31
  },
31
32
  contracts: {
@@ -1,10 +1,10 @@
1
1
  import { defineChain } from '../../utils/chain/defineChain.js'
2
2
  import { chainConfig } from '../../zksync/chainConfig.js'
3
3
 
4
- export const zkSyncInMemoryNode = /*#__PURE__*/ defineChain({
4
+ export const zksyncInMemoryNode = /*#__PURE__*/ defineChain({
5
5
  ...chainConfig,
6
6
  id: 260,
7
- name: 'zkSync InMemory Node',
7
+ name: 'ZKsync InMemory Node',
8
8
  network: 'zksync-in-memory-node',
9
9
  nativeCurrency: { name: 'Ether', symbol: 'ETH', decimals: 18 },
10
10
  rpcUrls: {
@@ -1,10 +1,10 @@
1
1
  import { defineChain } from '../../utils/chain/defineChain.js'
2
2
  import { chainConfig } from '../../zksync/chainConfig.js'
3
3
 
4
- export const zkSyncLocalNode = /*#__PURE__*/ defineChain({
4
+ export const zksyncLocalNode = /*#__PURE__*/ defineChain({
5
5
  ...chainConfig,
6
6
  id: 270,
7
- name: 'zkSync CLI Local Node',
7
+ name: 'ZKsync CLI Local Node',
8
8
  network: 'zksync-cli-local-node',
9
9
  nativeCurrency: { name: 'Ether', symbol: 'ETH', decimals: 18 },
10
10
  rpcUrls: {
@@ -1,10 +1,10 @@
1
1
  import { defineChain } from '../../utils/chain/defineChain.js'
2
2
  import { chainConfig } from '../../zksync/chainConfig.js'
3
3
 
4
- export const zkSyncSepoliaTestnet = /*#__PURE__*/ defineChain({
4
+ export const zksyncSepoliaTestnet = /*#__PURE__*/ defineChain({
5
5
  ...chainConfig,
6
6
  id: 300,
7
- name: 'zkSync Sepolia Testnet',
7
+ name: 'ZKsync Sepolia Testnet',
8
8
  network: 'zksync-sepolia-testnet',
9
9
  nativeCurrency: { name: 'Ether', symbol: 'ETH', decimals: 18 },
10
10
  rpcUrls: {
@@ -17,10 +17,12 @@ export const zkSyncSepoliaTestnet = /*#__PURE__*/ defineChain({
17
17
  default: {
18
18
  name: 'Etherscan',
19
19
  url: 'https://sepolia-era.zksync.network/',
20
+ apiUrl: 'https://api-sepolia-era.zksync.network/api',
20
21
  },
21
22
  native: {
22
- name: 'zkSync Explorer',
23
+ name: 'ZKsync Explorer',
23
24
  url: 'https://sepolia.explorer.zksync.io/',
25
+ blockExplorerApi: 'https://block-explorer-api.sepolia.zksync.dev/api',
24
26
  },
25
27
  },
26
28
  contracts: {