viem 2.18.7 → 2.19.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (652) hide show
  1. package/CHANGELOG.md +42 -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 +26 -0
  23. package/_cjs/chains/definitions/abstractTestnet.js.map +1 -0
  24. package/_cjs/chains/definitions/b3Sepolia.js +28 -0
  25. package/_cjs/chains/definitions/b3Sepolia.js.map +1 -0
  26. package/_cjs/chains/definitions/{zkSync.js → zksync.js} +6 -5
  27. package/_cjs/chains/definitions/{zkSync.js.map → zksync.js.map} +1 -1
  28. package/_cjs/chains/definitions/{zkSyncInMemoryNode.js → zksyncInMemoryNode.js} +4 -4
  29. package/_cjs/chains/definitions/{zkSyncInMemoryNode.js.map → zksyncInMemoryNode.js.map} +1 -1
  30. package/_cjs/chains/definitions/{zkSyncLocalNode.js → zksyncLocalNode.js} +4 -4
  31. package/_cjs/chains/definitions/{zkSyncLocalNode.js.map → zksyncLocalNode.js.map} +1 -1
  32. package/_cjs/chains/definitions/{zkSyncSepoliaTestnet.js → zksyncSepoliaTestnet.js} +7 -5
  33. package/_cjs/chains/definitions/zksyncSepoliaTestnet.js.map +1 -0
  34. package/_cjs/chains/index.js +23 -17
  35. package/_cjs/chains/index.js.map +1 -1
  36. package/_cjs/errors/abi.js +32 -163
  37. package/_cjs/errors/abi.js.map +1 -1
  38. package/_cjs/errors/account.js +2 -12
  39. package/_cjs/errors/account.js.map +1 -1
  40. package/_cjs/errors/address.js +1 -6
  41. package/_cjs/errors/address.js.map +1 -1
  42. package/_cjs/errors/base.js +29 -18
  43. package/_cjs/errors/base.js.map +1 -1
  44. package/_cjs/errors/blob.js +4 -25
  45. package/_cjs/errors/blob.js.map +1 -1
  46. package/_cjs/errors/block.js +1 -7
  47. package/_cjs/errors/block.js.map +1 -1
  48. package/_cjs/errors/ccip.js +3 -18
  49. package/_cjs/errors/ccip.js.map +1 -1
  50. package/_cjs/errors/chain.js +7 -31
  51. package/_cjs/errors/chain.js.map +1 -1
  52. package/_cjs/errors/contract.js +6 -37
  53. package/_cjs/errors/contract.js.map +1 -1
  54. package/_cjs/errors/cursor.js +4 -20
  55. package/_cjs/errors/cursor.js.map +1 -1
  56. package/_cjs/errors/data.js +3 -21
  57. package/_cjs/errors/data.js.map +1 -1
  58. package/_cjs/errors/eip712.js +1 -6
  59. package/_cjs/errors/eip712.js.map +1 -1
  60. package/_cjs/errors/encoding.js +6 -34
  61. package/_cjs/errors/encoding.js.map +1 -1
  62. package/_cjs/errors/ens.js +5 -26
  63. package/_cjs/errors/ens.js.map +1 -1
  64. package/_cjs/errors/estimateGas.js +1 -6
  65. package/_cjs/errors/estimateGas.js.map +1 -1
  66. package/_cjs/errors/fee.js +5 -19
  67. package/_cjs/errors/fee.js.map +1 -1
  68. package/_cjs/errors/log.js +2 -6
  69. package/_cjs/errors/log.js.map +1 -1
  70. package/_cjs/errors/node.js +12 -75
  71. package/_cjs/errors/node.js.map +1 -1
  72. package/_cjs/errors/request.js +5 -30
  73. package/_cjs/errors/request.js.map +1 -1
  74. package/_cjs/errors/rpc.js +22 -122
  75. package/_cjs/errors/rpc.js.map +1 -1
  76. package/_cjs/errors/siwe.js +1 -7
  77. package/_cjs/errors/siwe.js.map +1 -1
  78. package/_cjs/errors/stateOverride.js +4 -12
  79. package/_cjs/errors/stateOverride.js.map +1 -1
  80. package/_cjs/errors/transaction.js +15 -63
  81. package/_cjs/errors/transaction.js.map +1 -1
  82. package/_cjs/errors/transport.js +1 -0
  83. package/_cjs/errors/transport.js.map +1 -1
  84. package/_cjs/errors/utils.js +1 -4
  85. package/_cjs/errors/utils.js.map +1 -1
  86. package/_cjs/errors/version.js +1 -1
  87. package/_cjs/experimental/eip5792/decorators/eip5792.js +2 -2
  88. package/_cjs/experimental/eip5792/decorators/eip5792.js.map +1 -1
  89. package/_cjs/experimental/eip7702/actions/signAuthorization.js +41 -0
  90. package/_cjs/experimental/eip7702/actions/signAuthorization.js.map +1 -0
  91. package/_cjs/experimental/eip7702/decorators/eip7702.js +12 -0
  92. package/_cjs/experimental/eip7702/decorators/eip7702.js.map +1 -0
  93. package/_cjs/experimental/eip7702/types/authorization.js +3 -0
  94. package/_cjs/experimental/eip7702/types/authorization.js.map +1 -0
  95. package/_cjs/experimental/eip7702/types/rpc.js +3 -0
  96. package/_cjs/experimental/eip7702/types/rpc.js.map +1 -0
  97. package/_cjs/experimental/eip7702/utils/hashAuthorization.js +23 -0
  98. package/_cjs/experimental/eip7702/utils/hashAuthorization.js.map +1 -0
  99. package/_cjs/experimental/eip7702/utils/recoverAuthorizationAddress.js +13 -0
  100. package/_cjs/experimental/eip7702/utils/recoverAuthorizationAddress.js.map +1 -0
  101. package/_cjs/experimental/eip7702/utils/serializeAuthorizationList.js +21 -0
  102. package/_cjs/experimental/eip7702/utils/serializeAuthorizationList.js.map +1 -0
  103. package/_cjs/experimental/eip7702/utils/verifyAuthorization.js +13 -0
  104. package/_cjs/experimental/eip7702/utils/verifyAuthorization.js.map +1 -0
  105. package/_cjs/experimental/erc7715/decorators/erc7715.js +2 -2
  106. package/_cjs/experimental/erc7715/decorators/erc7715.js.map +1 -1
  107. package/_cjs/experimental/index.js +22 -8
  108. package/_cjs/experimental/index.js.map +1 -1
  109. package/_cjs/index.js +7 -6
  110. package/_cjs/index.js.map +1 -1
  111. package/_cjs/op-stack/errors/withdrawal.js +2 -14
  112. package/_cjs/op-stack/errors/withdrawal.js.map +1 -1
  113. package/_cjs/utils/formatters/transaction.js +19 -0
  114. package/_cjs/utils/formatters/transaction.js.map +1 -1
  115. package/_cjs/utils/formatters/transactionRequest.js +19 -0
  116. package/_cjs/utils/formatters/transactionRequest.js.map +1 -1
  117. package/_cjs/utils/transaction/assertTransaction.js +15 -3
  118. package/_cjs/utils/transaction/assertTransaction.js.map +1 -1
  119. package/_cjs/utils/transaction/getSerializedTransactionType.js +2 -0
  120. package/_cjs/utils/transaction/getSerializedTransactionType.js.map +1 -1
  121. package/_cjs/utils/transaction/getTransactionType.js +2 -0
  122. package/_cjs/utils/transaction/getTransactionType.js.map +1 -1
  123. package/_cjs/utils/transaction/parseTransaction.js +70 -0
  124. package/_cjs/utils/transaction/parseTransaction.js.map +1 -1
  125. package/_cjs/utils/transaction/serializeTransaction.js +25 -0
  126. package/_cjs/utils/transaction/serializeTransaction.js.map +1 -1
  127. package/_cjs/zksync/chains.js +9 -7
  128. package/_cjs/zksync/chains.js.map +1 -1
  129. package/_cjs/zksync/errors/bytecode.js +3 -21
  130. package/_cjs/zksync/errors/bytecode.js.map +1 -1
  131. package/_cjs/zksync/errors/token-is-eth.js +1 -7
  132. package/_cjs/zksync/errors/token-is-eth.js.map +1 -1
  133. package/_cjs/zksync/errors/transaction.js +1 -7
  134. package/_cjs/zksync/errors/transaction.js.map +1 -1
  135. package/_cjs/zksync/index.js +9 -4
  136. package/_cjs/zksync/index.js.map +1 -1
  137. package/_cjs/zksync/utils/getEip712Domain.js +1 -1
  138. package/_cjs/zksync/utils/isEip712Transaction.js.map +1 -1
  139. package/_esm/account-abstraction/errors/bundler.js +36 -216
  140. package/_esm/account-abstraction/errors/bundler.js.map +1 -1
  141. package/_esm/account-abstraction/errors/userOperation.js +5 -26
  142. package/_esm/account-abstraction/errors/userOperation.js.map +1 -1
  143. package/_esm/accounts/index.js +1 -0
  144. package/_esm/accounts/index.js.map +1 -1
  145. package/_esm/accounts/privateKeyToAccount.js +4 -0
  146. package/_esm/accounts/privateKeyToAccount.js.map +1 -1
  147. package/_esm/accounts/toAccount.js +1 -0
  148. package/_esm/accounts/toAccount.js.map +1 -1
  149. package/_esm/accounts/utils/signAuthorization.js +22 -0
  150. package/_esm/accounts/utils/signAuthorization.js.map +1 -0
  151. package/_esm/actions/public/estimateGas.js +55 -10
  152. package/_esm/actions/public/estimateGas.js.map +1 -1
  153. package/_esm/actions/public/simulateContract.js.map +1 -1
  154. package/_esm/actions/wallet/prepareTransactionRequest.js.map +1 -1
  155. package/_esm/actions/wallet/sendTransaction.js +25 -3
  156. package/_esm/actions/wallet/sendTransaction.js.map +1 -1
  157. package/_esm/actions/wallet/writeContract.js.map +1 -1
  158. package/_esm/chains/definitions/abstractTestnet.js +23 -0
  159. package/_esm/chains/definitions/abstractTestnet.js.map +1 -0
  160. package/_esm/chains/definitions/b3Sepolia.js +25 -0
  161. package/_esm/chains/definitions/b3Sepolia.js.map +1 -0
  162. package/_esm/chains/definitions/{zkSync.js → zksync.js} +5 -4
  163. package/_esm/chains/definitions/{zkSync.js.map → zksync.js.map} +1 -1
  164. package/_esm/chains/definitions/{zkSyncInMemoryNode.js → zksyncInMemoryNode.js} +3 -3
  165. package/_esm/chains/definitions/{zkSyncInMemoryNode.js.map → zksyncInMemoryNode.js.map} +1 -1
  166. package/_esm/chains/definitions/{zkSyncLocalNode.js → zksyncLocalNode.js} +3 -3
  167. package/_esm/chains/definitions/{zkSyncLocalNode.js.map → zksyncLocalNode.js.map} +1 -1
  168. package/_esm/chains/definitions/{zkSyncSepoliaTestnet.js → zksyncSepoliaTestnet.js} +6 -4
  169. package/_esm/chains/definitions/{zkSyncSepoliaTestnet.js.map → zksyncSepoliaTestnet.js.map} +1 -1
  170. package/_esm/chains/index.js +14 -5
  171. package/_esm/chains/index.js.map +1 -1
  172. package/_esm/errors/abi.js +32 -163
  173. package/_esm/errors/abi.js.map +1 -1
  174. package/_esm/errors/account.js +2 -12
  175. package/_esm/errors/account.js.map +1 -1
  176. package/_esm/errors/address.js +1 -6
  177. package/_esm/errors/address.js.map +1 -1
  178. package/_esm/errors/base.js +27 -17
  179. package/_esm/errors/base.js.map +1 -1
  180. package/_esm/errors/blob.js +4 -25
  181. package/_esm/errors/blob.js.map +1 -1
  182. package/_esm/errors/block.js +1 -7
  183. package/_esm/errors/block.js.map +1 -1
  184. package/_esm/errors/ccip.js +3 -18
  185. package/_esm/errors/ccip.js.map +1 -1
  186. package/_esm/errors/chain.js +7 -31
  187. package/_esm/errors/chain.js.map +1 -1
  188. package/_esm/errors/contract.js +6 -37
  189. package/_esm/errors/contract.js.map +1 -1
  190. package/_esm/errors/cursor.js +4 -20
  191. package/_esm/errors/cursor.js.map +1 -1
  192. package/_esm/errors/data.js +3 -21
  193. package/_esm/errors/data.js.map +1 -1
  194. package/_esm/errors/eip712.js +1 -6
  195. package/_esm/errors/eip712.js.map +1 -1
  196. package/_esm/errors/encoding.js +6 -34
  197. package/_esm/errors/encoding.js.map +1 -1
  198. package/_esm/errors/ens.js +5 -26
  199. package/_esm/errors/ens.js.map +1 -1
  200. package/_esm/errors/estimateGas.js +1 -6
  201. package/_esm/errors/estimateGas.js.map +1 -1
  202. package/_esm/errors/fee.js +5 -19
  203. package/_esm/errors/fee.js.map +1 -1
  204. package/_esm/errors/log.js +2 -6
  205. package/_esm/errors/log.js.map +1 -1
  206. package/_esm/errors/node.js +12 -75
  207. package/_esm/errors/node.js.map +1 -1
  208. package/_esm/errors/request.js +5 -30
  209. package/_esm/errors/request.js.map +1 -1
  210. package/_esm/errors/rpc.js +22 -122
  211. package/_esm/errors/rpc.js.map +1 -1
  212. package/_esm/errors/siwe.js +1 -7
  213. package/_esm/errors/siwe.js.map +1 -1
  214. package/_esm/errors/stateOverride.js +4 -12
  215. package/_esm/errors/stateOverride.js.map +1 -1
  216. package/_esm/errors/transaction.js +15 -63
  217. package/_esm/errors/transaction.js.map +1 -1
  218. package/_esm/errors/transport.js +1 -0
  219. package/_esm/errors/transport.js.map +1 -1
  220. package/_esm/errors/utils.js +0 -2
  221. package/_esm/errors/utils.js.map +1 -1
  222. package/_esm/errors/version.js +1 -1
  223. package/_esm/experimental/eip5792/decorators/eip5792.js +3 -3
  224. package/_esm/experimental/eip5792/decorators/eip5792.js.map +1 -1
  225. package/_esm/experimental/eip7702/actions/signAuthorization.js +80 -0
  226. package/_esm/experimental/eip7702/actions/signAuthorization.js.map +1 -0
  227. package/_esm/experimental/eip7702/decorators/eip7702.js +24 -0
  228. package/_esm/experimental/eip7702/decorators/eip7702.js.map +1 -0
  229. package/_esm/experimental/eip7702/types/authorization.js +2 -0
  230. package/_esm/experimental/eip7702/types/authorization.js.map +1 -0
  231. package/_esm/experimental/eip7702/types/rpc.js +2 -0
  232. package/_esm/experimental/eip7702/types/rpc.js.map +1 -0
  233. package/_esm/experimental/eip7702/utils/hashAuthorization.js +23 -0
  234. package/_esm/experimental/eip7702/utils/hashAuthorization.js.map +1 -0
  235. package/_esm/experimental/eip7702/utils/recoverAuthorizationAddress.js +10 -0
  236. package/_esm/experimental/eip7702/utils/recoverAuthorizationAddress.js.map +1 -0
  237. package/_esm/experimental/eip7702/utils/serializeAuthorizationList.js +21 -0
  238. package/_esm/experimental/eip7702/utils/serializeAuthorizationList.js.map +1 -0
  239. package/_esm/experimental/eip7702/utils/verifyAuthorization.js +18 -0
  240. package/_esm/experimental/eip7702/utils/verifyAuthorization.js.map +1 -0
  241. package/_esm/experimental/erc7715/decorators/erc7715.js +3 -3
  242. package/_esm/experimental/erc7715/decorators/erc7715.js.map +1 -1
  243. package/_esm/experimental/index.js +16 -4
  244. package/_esm/experimental/index.js.map +1 -1
  245. package/_esm/index.js +1 -1
  246. package/_esm/index.js.map +1 -1
  247. package/_esm/op-stack/errors/withdrawal.js +2 -14
  248. package/_esm/op-stack/errors/withdrawal.js.map +1 -1
  249. package/_esm/utils/formatters/transaction.js +20 -0
  250. package/_esm/utils/formatters/transaction.js.map +1 -1
  251. package/_esm/utils/formatters/transactionRequest.js +20 -0
  252. package/_esm/utils/formatters/transactionRequest.js.map +1 -1
  253. package/_esm/utils/transaction/assertTransaction.js +14 -3
  254. package/_esm/utils/transaction/assertTransaction.js.map +1 -1
  255. package/_esm/utils/transaction/getSerializedTransactionType.js +2 -0
  256. package/_esm/utils/transaction/getSerializedTransactionType.js.map +1 -1
  257. package/_esm/utils/transaction/getTransactionType.js +2 -0
  258. package/_esm/utils/transaction/getTransactionType.js.map +1 -1
  259. package/_esm/utils/transaction/parseTransaction.js +71 -1
  260. package/_esm/utils/transaction/parseTransaction.js.map +1 -1
  261. package/_esm/utils/transaction/serializeTransaction.js +26 -1
  262. package/_esm/utils/transaction/serializeTransaction.js.map +1 -1
  263. package/_esm/zksync/actions/deployContract.js +1 -1
  264. package/_esm/zksync/actions/sendEip712Transaction.js +4 -4
  265. package/_esm/zksync/actions/sendTransaction.js +4 -4
  266. package/_esm/zksync/actions/signEip712Transaction.js +4 -4
  267. package/_esm/zksync/actions/signTransaction.js +4 -4
  268. package/_esm/zksync/chains.js +4 -3
  269. package/_esm/zksync/chains.js.map +1 -1
  270. package/_esm/zksync/errors/bytecode.js +3 -21
  271. package/_esm/zksync/errors/bytecode.js.map +1 -1
  272. package/_esm/zksync/errors/token-is-eth.js +1 -7
  273. package/_esm/zksync/errors/token-is-eth.js.map +1 -1
  274. package/_esm/zksync/errors/transaction.js +1 -7
  275. package/_esm/zksync/errors/transaction.js.map +1 -1
  276. package/_esm/zksync/index.js +9 -1
  277. package/_esm/zksync/index.js.map +1 -1
  278. package/_esm/zksync/utils/getEip712Domain.js +1 -1
  279. package/_esm/zksync/utils/isEip712Transaction.js.map +1 -1
  280. package/_types/account-abstraction/errors/bundler.d.ts +0 -36
  281. package/_types/account-abstraction/errors/bundler.d.ts.map +1 -1
  282. package/_types/account-abstraction/errors/userOperation.d.ts +0 -4
  283. package/_types/account-abstraction/errors/userOperation.d.ts.map +1 -1
  284. package/_types/accounts/index.d.ts +1 -0
  285. package/_types/accounts/index.d.ts.map +1 -1
  286. package/_types/accounts/privateKeyToAccount.d.ts.map +1 -1
  287. package/_types/accounts/toAccount.d.ts.map +1 -1
  288. package/_types/accounts/types.d.ts +7 -3
  289. package/_types/accounts/types.d.ts.map +1 -1
  290. package/_types/accounts/utils/signAuthorization.d.ts +20 -0
  291. package/_types/accounts/utils/signAuthorization.d.ts.map +1 -0
  292. package/_types/actions/public/estimateGas.d.ts +2 -1
  293. package/_types/actions/public/estimateGas.d.ts.map +1 -1
  294. package/_types/actions/public/simulateContract.d.ts +18 -6
  295. package/_types/actions/public/simulateContract.d.ts.map +1 -1
  296. package/_types/actions/wallet/prepareTransactionRequest.d.ts +2 -2
  297. package/_types/actions/wallet/prepareTransactionRequest.d.ts.map +1 -1
  298. package/_types/actions/wallet/sendTransaction.d.ts +2 -1
  299. package/_types/actions/wallet/sendTransaction.d.ts.map +1 -1
  300. package/_types/actions/wallet/writeContract.d.ts +3 -2
  301. package/_types/actions/wallet/writeContract.d.ts.map +1 -1
  302. package/_types/celo/chainConfig.d.ts +144 -20
  303. package/_types/celo/chainConfig.d.ts.map +1 -1
  304. package/_types/celo/formatters.d.ts +72 -10
  305. package/_types/celo/formatters.d.ts.map +1 -1
  306. package/_types/celo/serializers.d.ts +1 -1
  307. package/_types/celo/serializers.d.ts.map +1 -1
  308. package/_types/chains/definitions/{zkSyncTestnet.d.ts → abstractTestnet.d.ts} +81 -27
  309. package/_types/chains/definitions/{zkSyncLocalNode.d.ts.map → abstractTestnet.d.ts.map} +1 -1
  310. package/_types/chains/definitions/ancient8.d.ts +32 -0
  311. package/_types/chains/definitions/ancient8.d.ts.map +1 -1
  312. package/_types/chains/definitions/ancient8Sepolia.d.ts +32 -0
  313. package/_types/chains/definitions/ancient8Sepolia.d.ts.map +1 -1
  314. package/_types/chains/definitions/b3Sepolia.d.ts +35 -0
  315. package/_types/chains/definitions/b3Sepolia.d.ts.map +1 -0
  316. package/_types/chains/definitions/base.d.ts +32 -0
  317. package/_types/chains/definitions/base.d.ts.map +1 -1
  318. package/_types/chains/definitions/baseGoerli.d.ts +32 -0
  319. package/_types/chains/definitions/baseGoerli.d.ts.map +1 -1
  320. package/_types/chains/definitions/baseSepolia.d.ts +32 -0
  321. package/_types/chains/definitions/baseSepolia.d.ts.map +1 -1
  322. package/_types/chains/definitions/celo.d.ts +144 -20
  323. package/_types/chains/definitions/celo.d.ts.map +1 -1
  324. package/_types/chains/definitions/celoAlfajores.d.ts +144 -20
  325. package/_types/chains/definitions/celoAlfajores.d.ts.map +1 -1
  326. package/_types/chains/definitions/dchain.d.ts +32 -0
  327. package/_types/chains/definitions/dchain.d.ts.map +1 -1
  328. package/_types/chains/definitions/dchainTestnet.d.ts +32 -0
  329. package/_types/chains/definitions/dchainTestnet.d.ts.map +1 -1
  330. package/_types/chains/definitions/fraxtal.d.ts +32 -0
  331. package/_types/chains/definitions/fraxtal.d.ts.map +1 -1
  332. package/_types/chains/definitions/fraxtalTestnet.d.ts +32 -0
  333. package/_types/chains/definitions/fraxtalTestnet.d.ts.map +1 -1
  334. package/_types/chains/definitions/funkiMainnet.d.ts +32 -0
  335. package/_types/chains/definitions/funkiMainnet.d.ts.map +1 -1
  336. package/_types/chains/definitions/funkiSepolia.d.ts +32 -0
  337. package/_types/chains/definitions/funkiSepolia.d.ts.map +1 -1
  338. package/_types/chains/definitions/lisk.d.ts +32 -0
  339. package/_types/chains/definitions/lisk.d.ts.map +1 -1
  340. package/_types/chains/definitions/liskSepolia.d.ts +32 -0
  341. package/_types/chains/definitions/liskSepolia.d.ts.map +1 -1
  342. package/_types/chains/definitions/metalL2.d.ts +32 -0
  343. package/_types/chains/definitions/metalL2.d.ts.map +1 -1
  344. package/_types/chains/definitions/modeTestnet.d.ts +32 -0
  345. package/_types/chains/definitions/modeTestnet.d.ts.map +1 -1
  346. package/_types/chains/definitions/optimism.d.ts +32 -0
  347. package/_types/chains/definitions/optimism.d.ts.map +1 -1
  348. package/_types/chains/definitions/optimismGoerli.d.ts +32 -0
  349. package/_types/chains/definitions/optimismGoerli.d.ts.map +1 -1
  350. package/_types/chains/definitions/optimismSepolia.d.ts +32 -0
  351. package/_types/chains/definitions/optimismSepolia.d.ts.map +1 -1
  352. package/_types/chains/definitions/pgn.d.ts +32 -0
  353. package/_types/chains/definitions/pgn.d.ts.map +1 -1
  354. package/_types/chains/definitions/pgnTestnet.d.ts +32 -0
  355. package/_types/chains/definitions/pgnTestnet.d.ts.map +1 -1
  356. package/_types/chains/definitions/playfiAlbireo.d.ts +64 -10
  357. package/_types/chains/definitions/playfiAlbireo.d.ts.map +1 -1
  358. package/_types/chains/definitions/rss3.d.ts +32 -0
  359. package/_types/chains/definitions/rss3.d.ts.map +1 -1
  360. package/_types/chains/definitions/rss3Sepolia.d.ts +32 -0
  361. package/_types/chains/definitions/rss3Sepolia.d.ts.map +1 -1
  362. package/_types/chains/definitions/{zkSync.d.ts → zksync.d.ts} +69 -14
  363. package/_types/chains/definitions/{zkSync.d.ts.map → zksync.d.ts.map} +1 -1
  364. package/_types/chains/definitions/{zkSyncInMemoryNode.d.ts → zksyncInMemoryNode.d.ts} +67 -13
  365. package/_types/chains/definitions/{zkSyncInMemoryNode.d.ts.map → zksyncInMemoryNode.d.ts.map} +1 -1
  366. package/_types/chains/definitions/{zkSyncLocalNode.d.ts → zksyncLocalNode.d.ts} +67 -13
  367. package/_types/chains/definitions/{zkSyncTestnet.d.ts.map → zksyncLocalNode.d.ts.map} +1 -1
  368. package/_types/chains/definitions/{zkSyncSepoliaTestnet.d.ts → zksyncSepoliaTestnet.d.ts} +70 -14
  369. package/_types/chains/definitions/{zkSyncSepoliaTestnet.d.ts.map → zksyncSepoliaTestnet.d.ts.map} +1 -1
  370. package/_types/chains/definitions/zora.d.ts +32 -0
  371. package/_types/chains/definitions/zora.d.ts.map +1 -1
  372. package/_types/chains/definitions/zoraSepolia.d.ts +32 -0
  373. package/_types/chains/definitions/zoraSepolia.d.ts.map +1 -1
  374. package/_types/chains/definitions/zoraTestnet.d.ts +32 -0
  375. package/_types/chains/definitions/zoraTestnet.d.ts.map +1 -1
  376. package/_types/chains/index.d.ts +79 -10
  377. package/_types/chains/index.d.ts.map +1 -1
  378. package/_types/errors/abi.d.ts +0 -26
  379. package/_types/errors/abi.d.ts.map +1 -1
  380. package/_types/errors/account.d.ts +0 -2
  381. package/_types/errors/account.d.ts.map +1 -1
  382. package/_types/errors/address.d.ts +0 -1
  383. package/_types/errors/address.d.ts.map +1 -1
  384. package/_types/errors/base.d.ts +7 -1
  385. package/_types/errors/base.d.ts.map +1 -1
  386. package/_types/errors/blob.d.ts +0 -4
  387. package/_types/errors/blob.d.ts.map +1 -1
  388. package/_types/errors/block.d.ts +0 -1
  389. package/_types/errors/block.d.ts.map +1 -1
  390. package/_types/errors/ccip.d.ts +0 -3
  391. package/_types/errors/ccip.d.ts.map +1 -1
  392. package/_types/errors/chain.d.ts +0 -5
  393. package/_types/errors/chain.d.ts.map +1 -1
  394. package/_types/errors/contract.d.ts +0 -6
  395. package/_types/errors/contract.d.ts.map +1 -1
  396. package/_types/errors/cursor.d.ts +0 -3
  397. package/_types/errors/cursor.d.ts.map +1 -1
  398. package/_types/errors/data.d.ts +0 -3
  399. package/_types/errors/data.d.ts.map +1 -1
  400. package/_types/errors/eip712.d.ts +0 -1
  401. package/_types/errors/eip712.d.ts.map +1 -1
  402. package/_types/errors/encoding.d.ts +0 -5
  403. package/_types/errors/encoding.d.ts.map +1 -1
  404. package/_types/errors/ens.d.ts +0 -4
  405. package/_types/errors/ens.d.ts.map +1 -1
  406. package/_types/errors/estimateGas.d.ts +0 -1
  407. package/_types/errors/estimateGas.d.ts.map +1 -1
  408. package/_types/errors/fee.d.ts +0 -3
  409. package/_types/errors/fee.d.ts.map +1 -1
  410. package/_types/errors/log.d.ts +0 -1
  411. package/_types/errors/log.d.ts.map +1 -1
  412. package/_types/errors/node.d.ts +0 -12
  413. package/_types/errors/node.d.ts.map +1 -1
  414. package/_types/errors/request.d.ts +0 -5
  415. package/_types/errors/request.d.ts.map +1 -1
  416. package/_types/errors/rpc.d.ts +2 -22
  417. package/_types/errors/rpc.d.ts.map +1 -1
  418. package/_types/errors/siwe.d.ts +0 -1
  419. package/_types/errors/siwe.d.ts.map +1 -1
  420. package/_types/errors/stateOverride.d.ts +0 -2
  421. package/_types/errors/stateOverride.d.ts.map +1 -1
  422. package/_types/errors/transaction.d.ts +0 -10
  423. package/_types/errors/transaction.d.ts.map +1 -1
  424. package/_types/errors/transport.d.ts.map +1 -1
  425. package/_types/errors/utils.d.ts +0 -1
  426. package/_types/errors/utils.d.ts.map +1 -1
  427. package/_types/errors/version.d.ts +1 -1
  428. package/_types/experimental/eip5792/decorators/eip5792.d.ts +12 -12
  429. package/_types/experimental/eip5792/decorators/eip5792.d.ts.map +1 -1
  430. package/_types/experimental/eip7702/actions/signAuthorization.d.ts +59 -0
  431. package/_types/experimental/eip7702/actions/signAuthorization.d.ts.map +1 -0
  432. package/_types/experimental/eip7702/decorators/eip7702.d.ts +69 -0
  433. package/_types/experimental/eip7702/decorators/eip7702.d.ts.map +1 -0
  434. package/_types/experimental/eip7702/types/authorization.d.ts +24 -0
  435. package/_types/experimental/eip7702/types/authorization.d.ts.map +1 -0
  436. package/_types/experimental/eip7702/types/rpc.d.ts +12 -0
  437. package/_types/experimental/eip7702/types/rpc.d.ts.map +1 -0
  438. package/_types/experimental/eip7702/utils/hashAuthorization.d.ts +21 -0
  439. package/_types/experimental/eip7702/utils/hashAuthorization.d.ts.map +1 -0
  440. package/_types/experimental/eip7702/utils/recoverAuthorizationAddress.d.ts +26 -0
  441. package/_types/experimental/eip7702/utils/recoverAuthorizationAddress.d.ts.map +1 -0
  442. package/_types/experimental/eip7702/utils/serializeAuthorizationList.d.ts +6 -0
  443. package/_types/experimental/eip7702/utils/serializeAuthorizationList.d.ts.map +1 -0
  444. package/_types/experimental/eip7702/utils/verifyAuthorization.d.ts +21 -0
  445. package/_types/experimental/eip7702/utils/verifyAuthorization.d.ts.map +1 -0
  446. package/_types/experimental/erc7715/decorators/erc7715.d.ts +6 -6
  447. package/_types/experimental/erc7715/decorators/erc7715.d.ts.map +1 -1
  448. package/_types/experimental/index.d.ts +20 -4
  449. package/_types/experimental/index.d.ts.map +1 -1
  450. package/_types/index.d.ts +3 -3
  451. package/_types/index.d.ts.map +1 -1
  452. package/_types/op-stack/chainConfig.d.ts +32 -0
  453. package/_types/op-stack/chainConfig.d.ts.map +1 -1
  454. package/_types/op-stack/errors/withdrawal.d.ts +0 -2
  455. package/_types/op-stack/errors/withdrawal.d.ts.map +1 -1
  456. package/_types/op-stack/formatters.d.ts +32 -0
  457. package/_types/op-stack/formatters.d.ts.map +1 -1
  458. package/_types/op-stack/serializers.d.ts +1 -1
  459. package/_types/op-stack/serializers.d.ts.map +1 -1
  460. package/_types/types/rpc.d.ts +9 -4
  461. package/_types/types/rpc.d.ts.map +1 -1
  462. package/_types/types/transaction.d.ts +50 -36
  463. package/_types/types/transaction.d.ts.map +1 -1
  464. package/_types/types/utils.d.ts +0 -14
  465. package/_types/types/utils.d.ts.map +1 -1
  466. package/_types/utils/formatters/transaction.d.ts +2 -1
  467. package/_types/utils/formatters/transaction.d.ts.map +1 -1
  468. package/_types/utils/formatters/transactionRequest.d.ts +2 -1
  469. package/_types/utils/formatters/transactionRequest.d.ts.map +1 -1
  470. package/_types/utils/index.d.ts +1 -1
  471. package/_types/utils/index.d.ts.map +1 -1
  472. package/_types/utils/signature/hashMessage.d.ts +2 -2
  473. package/_types/utils/signature/hashMessage.d.ts.map +1 -1
  474. package/_types/utils/transaction/assertTransaction.d.ts +3 -1
  475. package/_types/utils/transaction/assertTransaction.d.ts.map +1 -1
  476. package/_types/utils/transaction/getSerializedTransactionType.d.ts +2 -2
  477. package/_types/utils/transaction/getSerializedTransactionType.d.ts.map +1 -1
  478. package/_types/utils/transaction/getTransactionType.d.ts +12 -5
  479. package/_types/utils/transaction/getTransactionType.d.ts.map +1 -1
  480. package/_types/utils/transaction/parseTransaction.d.ts +6 -4
  481. package/_types/utils/transaction/parseTransaction.d.ts.map +1 -1
  482. package/_types/utils/transaction/serializeTransaction.d.ts +4 -2
  483. package/_types/utils/transaction/serializeTransaction.d.ts.map +1 -1
  484. package/_types/zksync/actions/deployContract.d.ts +1 -1
  485. package/_types/zksync/actions/estimateFee.d.ts +4 -4
  486. package/_types/zksync/actions/estimateGasL1ToL2.d.ts +2 -2
  487. package/_types/zksync/actions/getAllBalances.d.ts +2 -2
  488. package/_types/zksync/actions/getBaseTokenL1Address.d.ts +2 -2
  489. package/_types/zksync/actions/getBlockDetails.d.ts +5 -5
  490. package/_types/zksync/actions/getBridgehubContractAddress.d.ts +2 -2
  491. package/_types/zksync/actions/getDefaultBridgeAddresses.d.ts +2 -2
  492. package/_types/zksync/actions/getL1BatchBlockRange.d.ts +2 -2
  493. package/_types/zksync/actions/getL1BatchDetails.d.ts +5 -5
  494. package/_types/zksync/actions/getL1BatchNumber.d.ts +2 -2
  495. package/_types/zksync/actions/getL1ChainId.d.ts +2 -2
  496. package/_types/zksync/actions/getLogProof.d.ts +2 -2
  497. package/_types/zksync/actions/getMainContractAddress.d.ts +2 -2
  498. package/_types/zksync/actions/getRawBlockTransactions.d.ts +6 -6
  499. package/_types/zksync/actions/getTestnetPaymasterAddress.d.ts +2 -2
  500. package/_types/zksync/actions/getTransactionDetails.d.ts +4 -4
  501. package/_types/zksync/actions/sendEip712Transaction.d.ts +4 -4
  502. package/_types/zksync/actions/sendTransaction.d.ts +4 -4
  503. package/_types/zksync/actions/signEip712Transaction.d.ts +4 -4
  504. package/_types/zksync/actions/signTransaction.d.ts +4 -4
  505. package/_types/zksync/chainConfig.d.ts +65 -11
  506. package/_types/zksync/chainConfig.d.ts.map +1 -1
  507. package/_types/zksync/chains.d.ts +4 -3
  508. package/_types/zksync/chains.d.ts.map +1 -1
  509. package/_types/zksync/decorators/eip712.d.ts +13 -13
  510. package/_types/zksync/decorators/publicL2.d.ts +37 -37
  511. package/_types/zksync/errors/bytecode.d.ts +0 -3
  512. package/_types/zksync/errors/bytecode.d.ts.map +1 -1
  513. package/_types/zksync/errors/token-is-eth.d.ts +0 -1
  514. package/_types/zksync/errors/token-is-eth.d.ts.map +1 -1
  515. package/_types/zksync/errors/transaction.d.ts +0 -1
  516. package/_types/zksync/errors/transaction.d.ts.map +1 -1
  517. package/_types/zksync/formatters.d.ts +75 -21
  518. package/_types/zksync/formatters.d.ts.map +1 -1
  519. package/_types/zksync/index.d.ts +77 -7
  520. package/_types/zksync/index.d.ts.map +1 -1
  521. package/_types/zksync/serializers.d.ts +2 -2
  522. package/_types/zksync/serializers.d.ts.map +1 -1
  523. package/_types/zksync/types/block.d.ts +6 -6
  524. package/_types/zksync/types/chain.d.ts +2 -2
  525. package/_types/zksync/types/eip1193.d.ts +8 -8
  526. package/_types/zksync/types/eip712.d.ts +3 -3
  527. package/_types/zksync/types/fee.d.ts +2 -2
  528. package/_types/zksync/types/log.d.ts +4 -4
  529. package/_types/zksync/types/transaction.d.ts +31 -31
  530. package/_types/zksync/utils/assertEip712Request.d.ts +2 -2
  531. package/_types/zksync/utils/assertEip712Transaction.d.ts +2 -2
  532. package/_types/zksync/utils/getEip712Domain.d.ts +2 -2
  533. package/_types/zksync/utils/isEip712Transaction.d.ts +3 -3
  534. package/_types/zksync/utils/isEip712Transaction.d.ts.map +1 -1
  535. package/account-abstraction/errors/bundler.ts +36 -48
  536. package/account-abstraction/errors/userOperation.ts +6 -6
  537. package/accounts/index.ts +6 -0
  538. package/accounts/privateKeyToAccount.ts +4 -0
  539. package/accounts/toAccount.ts +1 -0
  540. package/accounts/types.ts +11 -3
  541. package/accounts/utils/signAuthorization.ts +63 -0
  542. package/actions/public/estimateGas.ts +74 -11
  543. package/actions/public/simulateContract.ts +48 -14
  544. package/actions/wallet/prepareTransactionRequest.ts +3 -1
  545. package/actions/wallet/sendTransaction.ts +33 -4
  546. package/actions/wallet/writeContract.ts +5 -3
  547. package/chains/definitions/abstractTestnet.ts +23 -0
  548. package/chains/definitions/b3Sepolia.ts +26 -0
  549. package/chains/definitions/{zkSync.ts → zksync.ts} +4 -3
  550. package/chains/definitions/{zkSyncInMemoryNode.ts → zksyncInMemoryNode.ts} +2 -2
  551. package/chains/definitions/{zkSyncLocalNode.ts → zksyncLocalNode.ts} +2 -2
  552. package/chains/definitions/{zkSyncSepoliaTestnet.ts → zksyncSepoliaTestnet.ts} +5 -3
  553. package/chains/index.ts +115 -34
  554. package/errors/abi.ts +37 -37
  555. package/errors/account.ts +2 -2
  556. package/errors/address.ts +1 -1
  557. package/errors/base.ts +41 -22
  558. package/errors/blob.ts +4 -5
  559. package/errors/block.ts +1 -2
  560. package/errors/ccip.ts +3 -3
  561. package/errors/chain.ts +9 -10
  562. package/errors/contract.ts +6 -10
  563. package/errors/cursor.ts +5 -4
  564. package/errors/data.ts +3 -3
  565. package/errors/eip712.ts +1 -1
  566. package/errors/encoding.ts +7 -5
  567. package/errors/ens.ts +6 -5
  568. package/errors/estimateGas.ts +1 -2
  569. package/errors/fee.ts +7 -5
  570. package/errors/log.ts +3 -2
  571. package/errors/node.ts +12 -17
  572. package/errors/request.ts +5 -10
  573. package/errors/rpc.ts +29 -26
  574. package/errors/siwe.ts +1 -2
  575. package/errors/stateOverride.ts +6 -4
  576. package/errors/transaction.ts +19 -19
  577. package/errors/transport.ts +1 -0
  578. package/errors/utils.ts +0 -3
  579. package/errors/version.ts +1 -1
  580. package/experimental/eip5792/decorators/eip5792.ts +13 -13
  581. package/experimental/eip7702/actions/signAuthorization.ts +136 -0
  582. package/experimental/eip7702/decorators/eip7702.ts +86 -0
  583. package/experimental/eip7702/types/authorization.ts +30 -0
  584. package/experimental/eip7702/types/rpc.ts +12 -0
  585. package/experimental/eip7702/utils/hashAuthorization.ts +60 -0
  586. package/experimental/eip7702/utils/recoverAuthorizationAddress.ts +61 -0
  587. package/experimental/eip7702/utils/serializeAuthorizationList.ts +33 -0
  588. package/experimental/eip7702/utils/verifyAuthorization.ts +52 -0
  589. package/experimental/erc7715/decorators/erc7715.ts +7 -7
  590. package/experimental/index.ts +72 -18
  591. package/index.ts +29 -4
  592. package/op-stack/errors/withdrawal.ts +2 -3
  593. package/package.json +1 -1
  594. package/types/rpc.ts +21 -1
  595. package/types/transaction.ts +103 -54
  596. package/types/utils.ts +0 -15
  597. package/utils/formatters/transaction.ts +32 -0
  598. package/utils/formatters/transactionRequest.ts +31 -0
  599. package/utils/index.ts +1 -1
  600. package/utils/signature/hashMessage.ts +2 -2
  601. package/utils/transaction/assertTransaction.ts +24 -12
  602. package/utils/transaction/getSerializedTransactionType.ts +7 -0
  603. package/utils/transaction/getTransactionType.ts +95 -60
  604. package/utils/transaction/parseTransaction.ts +127 -0
  605. package/utils/transaction/serializeTransaction.ts +66 -0
  606. package/zksync/actions/deployContract.ts +1 -1
  607. package/zksync/actions/estimateFee.ts +4 -4
  608. package/zksync/actions/estimateGasL1ToL2.ts +2 -2
  609. package/zksync/actions/getAllBalances.ts +2 -2
  610. package/zksync/actions/getBaseTokenL1Address.ts +2 -2
  611. package/zksync/actions/getBlockDetails.ts +6 -6
  612. package/zksync/actions/getBridgehubContractAddress.ts +2 -2
  613. package/zksync/actions/getDefaultBridgeAddresses.ts +2 -2
  614. package/zksync/actions/getL1BatchBlockRange.ts +2 -2
  615. package/zksync/actions/getL1BatchDetails.ts +6 -6
  616. package/zksync/actions/getL1BatchNumber.ts +2 -2
  617. package/zksync/actions/getL1ChainId.ts +2 -2
  618. package/zksync/actions/getLogProof.ts +2 -2
  619. package/zksync/actions/getMainContractAddress.ts +2 -2
  620. package/zksync/actions/getRawBlockTransactions.ts +6 -6
  621. package/zksync/actions/getTestnetPaymasterAddress.ts +2 -2
  622. package/zksync/actions/getTransactionDetails.ts +4 -4
  623. package/zksync/actions/sendEip712Transaction.ts +4 -4
  624. package/zksync/actions/sendTransaction.ts +4 -4
  625. package/zksync/actions/signEip712Transaction.ts +4 -4
  626. package/zksync/actions/signTransaction.ts +4 -4
  627. package/zksync/chains.ts +4 -3
  628. package/zksync/decorators/eip712.ts +13 -13
  629. package/zksync/decorators/publicL2.ts +37 -37
  630. package/zksync/errors/bytecode.ts +3 -3
  631. package/zksync/errors/token-is-eth.ts +1 -2
  632. package/zksync/errors/transaction.ts +1 -2
  633. package/zksync/formatters.ts +22 -22
  634. package/zksync/index.ts +111 -32
  635. package/zksync/serializers.ts +7 -7
  636. package/zksync/types/block.ts +9 -9
  637. package/zksync/types/chain.ts +5 -5
  638. package/zksync/types/eip1193.ts +8 -8
  639. package/zksync/types/eip712.ts +3 -3
  640. package/zksync/types/fee.ts +2 -2
  641. package/zksync/types/log.ts +4 -4
  642. package/zksync/types/transaction.ts +45 -45
  643. package/zksync/utils/assertEip712Request.ts +2 -2
  644. package/zksync/utils/assertEip712Transaction.ts +4 -4
  645. package/zksync/utils/getEip712Domain.ts +9 -9
  646. package/zksync/utils/isEip712Transaction.ts +8 -3
  647. package/_cjs/chains/definitions/zkSyncSepoliaTestnet.js.map +0 -1
  648. package/_cjs/chains/definitions/zkSyncTestnet.js +0 -31
  649. package/_cjs/chains/definitions/zkSyncTestnet.js.map +0 -1
  650. package/_esm/chains/definitions/zkSyncTestnet.js +0 -29
  651. package/_esm/chains/definitions/zkSyncTestnet.js.map +0 -1
  652. package/chains/definitions/zkSyncTestnet.ts +0 -29
@@ -28,13 +28,13 @@ export type FeeConflictErrorType = FeeConflictError & {
28
28
  name: 'FeeConflictError'
29
29
  }
30
30
  export class FeeConflictError extends BaseError {
31
- override name = 'FeeConflictError'
32
31
  constructor() {
33
32
  super(
34
33
  [
35
34
  'Cannot specify both a `gasPrice` and a `maxFeePerGas`/`maxPriorityFeePerGas`.',
36
35
  'Use `maxFeePerGas`/`maxPriorityFeePerGas` for EIP-1559 compatible networks, and `gasPrice` for others.',
37
36
  ].join('\n'),
37
+ { name: 'FeeConflictError' },
38
38
  )
39
39
  }
40
40
  }
@@ -43,10 +43,10 @@ export type InvalidLegacyVErrorType = InvalidLegacyVError & {
43
43
  name: 'InvalidLegacyVError'
44
44
  }
45
45
  export class InvalidLegacyVError extends BaseError {
46
- override name = 'InvalidLegacyVError'
47
-
48
46
  constructor({ v }: { v: bigint }) {
49
- super(`Invalid \`v\` value "${v}". Expected 27 or 28.`)
47
+ super(`Invalid \`v\` value "${v}". Expected 27 or 28.`, {
48
+ name: 'InvalidLegacyVError',
49
+ })
50
50
  }
51
51
  }
52
52
 
@@ -55,8 +55,6 @@ export type InvalidSerializableTransactionErrorType =
55
55
  name: 'InvalidSerializableTransactionError'
56
56
  }
57
57
  export class InvalidSerializableTransactionError extends BaseError {
58
- override name = 'InvalidSerializableTransactionError'
59
-
60
58
  constructor({ transaction }: { transaction: Record<string, unknown> }) {
61
59
  super('Cannot infer a transaction type from provided transaction.', {
62
60
  metaMessages: [
@@ -70,8 +68,10 @@ export class InvalidSerializableTransactionError extends BaseError {
70
68
  '- an EIP-1559 Transaction with `maxFeePerGas`, or',
71
69
  '- an EIP-2930 Transaction with `gasPrice` & `accessList`, or',
72
70
  '- an EIP-4844 Transaction with `blobs`, `blobVersionedHashes`, `sidecars`, or',
71
+ '- an EIP-7702 Transaction with `authorizationList`, or',
73
72
  '- a Legacy Transaction with `gasPrice`',
74
73
  ],
74
+ name: 'InvalidSerializableTransactionError',
75
75
  })
76
76
  }
77
77
  }
@@ -81,12 +81,12 @@ export type InvalidSerializedTransactionTypeErrorType =
81
81
  name: 'InvalidSerializedTransactionTypeError'
82
82
  }
83
83
  export class InvalidSerializedTransactionTypeError extends BaseError {
84
- override name = 'InvalidSerializedTransactionType'
85
-
86
84
  serializedType: Hex
87
85
 
88
86
  constructor({ serializedType }: { serializedType: Hex }) {
89
- super(`Serialized transaction type "${serializedType}" is invalid.`)
87
+ super(`Serialized transaction type "${serializedType}" is invalid.`, {
88
+ name: 'InvalidSerializedTransactionType',
89
+ })
90
90
 
91
91
  this.serializedType = serializedType
92
92
  }
@@ -97,8 +97,6 @@ export type InvalidSerializedTransactionErrorType =
97
97
  name: 'InvalidSerializedTransactionError'
98
98
  }
99
99
  export class InvalidSerializedTransactionError extends BaseError {
100
- override name = 'InvalidSerializedTransactionError'
101
-
102
100
  serializedTransaction: Hex
103
101
  type: TransactionType
104
102
 
@@ -119,6 +117,7 @@ export class InvalidSerializedTransactionError extends BaseError {
119
117
  `Serialized Transaction: "${serializedTransaction}"`,
120
118
  missing.length > 0 ? `Missing Attributes: ${missing.join(', ')}` : '',
121
119
  ].filter(Boolean),
120
+ name: 'InvalidSerializedTransactionError',
122
121
  })
123
122
 
124
123
  this.serializedTransaction = serializedTransaction
@@ -130,13 +129,12 @@ export type InvalidStorageKeySizeErrorType = InvalidStorageKeySizeError & {
130
129
  name: 'InvalidStorageKeySizeError'
131
130
  }
132
131
  export class InvalidStorageKeySizeError extends BaseError {
133
- override name = 'InvalidStorageKeySizeError'
134
-
135
132
  constructor({ storageKey }: { storageKey: Hex }) {
136
133
  super(
137
134
  `Size for storage key "${storageKey}" is invalid. Expected 32 bytes. Got ${Math.floor(
138
135
  (storageKey.length - 2) / 2,
139
136
  )} bytes.`,
137
+ { name: 'InvalidStorageKeySizeError' },
140
138
  )
141
139
  }
142
140
  }
@@ -147,8 +145,6 @@ export type TransactionExecutionErrorType = TransactionExecutionError & {
147
145
  export class TransactionExecutionError extends BaseError {
148
146
  override cause: BaseError
149
147
 
150
- override name = 'TransactionExecutionError'
151
-
152
148
  constructor(
153
149
  cause: BaseError,
154
150
  {
@@ -197,6 +193,7 @@ export class TransactionExecutionError extends BaseError {
197
193
  'Request Arguments:',
198
194
  prettyArgs,
199
195
  ].filter(Boolean) as string[],
196
+ name: 'TransactionExecutionError',
200
197
  })
201
198
  this.cause = cause
202
199
  }
@@ -206,7 +203,6 @@ export type TransactionNotFoundErrorType = TransactionNotFoundError & {
206
203
  name: 'TransactionNotFoundError'
207
204
  }
208
205
  export class TransactionNotFoundError extends BaseError {
209
- override name = 'TransactionNotFoundError'
210
206
  constructor({
211
207
  blockHash,
212
208
  blockNumber,
@@ -228,7 +224,9 @@ export class TransactionNotFoundError extends BaseError {
228
224
  if (blockNumber && index !== undefined)
229
225
  identifier = `Transaction at block number "${blockNumber}" at index "${index}"`
230
226
  if (hash) identifier = `Transaction with hash "${hash}"`
231
- super(`${identifier} could not be found.`)
227
+ super(`${identifier} could not be found.`, {
228
+ name: 'TransactionNotFoundError',
229
+ })
232
230
  }
233
231
  }
234
232
 
@@ -237,10 +235,12 @@ export type TransactionReceiptNotFoundErrorType =
237
235
  name: 'TransactionReceiptNotFoundError'
238
236
  }
239
237
  export class TransactionReceiptNotFoundError extends BaseError {
240
- override name = 'TransactionReceiptNotFoundError'
241
238
  constructor({ hash }: { hash: Hash }) {
242
239
  super(
243
240
  `Transaction receipt with hash "${hash}" could not be found. The Transaction may not be processed on a block yet.`,
241
+ {
242
+ name: 'TransactionReceiptNotFoundError',
243
+ },
244
244
  )
245
245
  }
246
246
  }
@@ -250,10 +250,10 @@ export type WaitForTransactionReceiptTimeoutErrorType =
250
250
  name: 'WaitForTransactionReceiptTimeoutError'
251
251
  }
252
252
  export class WaitForTransactionReceiptTimeoutError extends BaseError {
253
- override name = 'WaitForTransactionReceiptTimeoutError'
254
253
  constructor({ hash }: { hash: Hash }) {
255
254
  super(
256
255
  `Timed out while waiting for transaction with hash "${hash}" to be confirmed.`,
256
+ { name: 'WaitForTransactionReceiptTimeoutError' },
257
257
  )
258
258
  }
259
259
  }
@@ -9,6 +9,7 @@ export class UrlRequiredError extends BaseError {
9
9
  'No URL was provided to the Transport. Please provide a valid RPC URL to the Transport.',
10
10
  {
11
11
  docsPath: '/docs/clients/intro',
12
+ name: 'UrlRequiredError',
12
13
  },
13
14
  )
14
15
  }
package/errors/utils.ts CHANGED
@@ -1,9 +1,6 @@
1
1
  import type { Address } from 'abitype'
2
2
 
3
- import { version } from './version.js'
4
-
5
3
  export type ErrorType<name extends string = 'Error'> = Error & { name: name }
6
4
 
7
5
  export const getContractAddress = (address: Address) => address
8
6
  export const getUrl = (url: string) => url
9
- export const getVersion = () => `viem@${version}`
package/errors/version.ts CHANGED
@@ -1 +1 @@
1
- export const version = '2.18.7'
1
+ export const version = '2.19.0'
@@ -28,7 +28,7 @@ import {
28
28
  writeContracts,
29
29
  } from '../actions/writeContracts.js'
30
30
 
31
- export type WalletActionsEip5792<
31
+ export type Eip5792Actions<
32
32
  chain extends Chain | undefined = Chain | undefined,
33
33
  account extends Account | undefined = Account | undefined,
34
34
  > = {
@@ -44,12 +44,12 @@ export type WalletActionsEip5792<
44
44
  * @example
45
45
  * import { createWalletClient, custom } from 'viem'
46
46
  * import { mainnet } from 'viem/chains'
47
- * import { walletActionsEip5792 } from 'viem/experimental'
47
+ * import { eip5792Actions } from 'viem/experimental'
48
48
  *
49
49
  * const client = createWalletClient({
50
50
  * chain: mainnet,
51
51
  * transport: custom(window.ethereum),
52
- * }).extend(walletActionsEip5792())
52
+ * }).extend(eip5792Actions())
53
53
  *
54
54
  * const { receipts, status } = await client.getCallsStatus({ id: '0xdeadbeef' })
55
55
  */
@@ -68,12 +68,12 @@ export type WalletActionsEip5792<
68
68
  * @example
69
69
  * import { createWalletClient, custom } from 'viem'
70
70
  * import { mainnet } from 'viem/chains'
71
- * import { walletActionsEip5792 } from 'viem/experimental'
71
+ * import { eip5792Actions } from 'viem/experimental'
72
72
  *
73
73
  * const client = createWalletClient({
74
74
  * chain: mainnet,
75
75
  * transport: custom(window.ethereum),
76
- * }).extend(walletActionsEip5792())
76
+ * }).extend(eip5792Actions())
77
77
  *
78
78
  * const capabilities = await client.getCapabilities({
79
79
  * account: '0xA0Cf798816D4b9b9866b5330EEa46a18382f251e',
@@ -96,12 +96,12 @@ export type WalletActionsEip5792<
96
96
  * @example
97
97
  * import { createWalletClient, custom } from 'viem'
98
98
  * import { mainnet } from 'viem/chains'
99
- * import { walletActionsEip5792 } from 'viem/experimental'
99
+ * import { eip5792Actions } from 'viem/experimental'
100
100
  *
101
101
  * const client = createWalletClient({
102
102
  * chain: mainnet,
103
103
  * transport: custom(window.ethereum),
104
- * }).extend(walletActionsEip5792())
104
+ * }).extend(eip5792Actions())
105
105
  *
106
106
  * const id = await client.sendCalls({
107
107
  * account: '0xA0Cf798816D4b9b9866b5330EEa46a18382f251e',
@@ -133,12 +133,12 @@ export type WalletActionsEip5792<
133
133
  * @example
134
134
  * import { createWalletClient, custom } from 'viem'
135
135
  * import { mainnet } from 'viem/chains'
136
- * import { walletActionsEip5792 } from 'viem/experimental'
136
+ * import { eip5792Actions } from 'viem/experimental'
137
137
  *
138
138
  * const client = createWalletClient({
139
139
  * chain: mainnet,
140
140
  * transport: custom(window.ethereum),
141
- * }).extend(walletActionsEip5792())
141
+ * }).extend(eip5792Actions())
142
142
  *
143
143
  * await client.showCallsStatus({ id: '0xdeadbeef' })
144
144
  */
@@ -210,23 +210,23 @@ export type WalletActionsEip5792<
210
210
  * @example
211
211
  * import { createPublicClient, createWalletClient, http } from 'viem'
212
212
  * import { mainnet } from 'viem/chains'
213
- * import { walletActionsEip5792 } from 'viem/experimental'
213
+ * import { eip5792Actions } from 'viem/experimental'
214
214
  *
215
215
  * const walletClient = createWalletClient({
216
216
  * chain: mainnet,
217
217
  * transport: http(),
218
- * }).extend(walletActionsEip5792())
218
+ * }).extend(eip5792Actions())
219
219
  *
220
220
  * const hash = await walletClient.sendCalls({...})
221
221
  */
222
- export function walletActionsEip5792() {
222
+ export function eip5792Actions() {
223
223
  return <
224
224
  transport extends Transport,
225
225
  chain extends Chain | undefined = Chain | undefined,
226
226
  account extends Account | undefined = Account | undefined,
227
227
  >(
228
228
  client: Client<transport, chain, account>,
229
- ): WalletActionsEip5792<chain, account> => {
229
+ ): Eip5792Actions<chain, account> => {
230
230
  return {
231
231
  getCallsStatus: (parameters) => getCallsStatus(client, parameters),
232
232
  getCapabilities: ((parameters: any) =>
@@ -0,0 +1,136 @@
1
+ import type { Account } from '../../../accounts/types.js'
2
+ import {
3
+ type ParseAccountErrorType,
4
+ parseAccount,
5
+ } from '../../../accounts/utils/parseAccount.js'
6
+ import type {
7
+ SignAuthorizationErrorType as SignAuthorizationErrorType_account,
8
+ SignAuthorizationReturnType as SignAuthorizationReturnType_account,
9
+ } from '../../../accounts/utils/signAuthorization.js'
10
+ import { getChainId } from '../../../actions/public/getChainId.js'
11
+ import { getTransactionCount } from '../../../actions/public/getTransactionCount.js'
12
+ import type { Client } from '../../../clients/createClient.js'
13
+ import type { Transport } from '../../../clients/transports/createTransport.js'
14
+ import {
15
+ AccountNotFoundError,
16
+ type AccountNotFoundErrorType,
17
+ AccountTypeNotSupportedError,
18
+ type AccountTypeNotSupportedErrorType,
19
+ } from '../../../errors/account.js'
20
+ import type { ErrorType } from '../../../errors/utils.js'
21
+ import type { GetAccountParameter } from '../../../types/account.js'
22
+ import type { Chain } from '../../../types/chain.js'
23
+ import type { PartialBy } from '../../../types/utils.js'
24
+ import type { RequestErrorType } from '../../../utils/buildRequest.js'
25
+ import { getAction } from '../../../utils/getAction.js'
26
+ import type { Authorization } from '../types/authorization.js'
27
+
28
+ export type SignAuthorizationParameters<
29
+ account extends Account | undefined = Account | undefined,
30
+ > = GetAccountParameter<account> & PartialBy<Authorization, 'chainId' | 'nonce'>
31
+
32
+ export type SignAuthorizationReturnType = SignAuthorizationReturnType_account
33
+
34
+ export type SignAuthorizationErrorType =
35
+ | ParseAccountErrorType
36
+ | RequestErrorType
37
+ | AccountNotFoundErrorType
38
+ | AccountTypeNotSupportedErrorType
39
+ | SignAuthorizationErrorType_account
40
+ | ErrorType
41
+
42
+ /**
43
+ * Signs an [EIP-7702 Authorization](https://eips.ethereum.org/EIPS/eip-7702) object.
44
+ *
45
+ * With the calculated signature, you can:
46
+ * - use [`verifyAuthorization`](https://viem.sh/experimental/eip7702/verifyAuthorization) to verify the signed Authorization object,
47
+ * - use [`recoverAuthorizationAddress`](https://viem.sh/experimental/eip7702/recoverAuthorizationAddress) to recover the signing address from the signed Authorization object.
48
+ *
49
+ * @param client - Client to use
50
+ * @param parameters - {@link SignAuthorizationParameters}
51
+ * @returns The signed Authorization object. {@link SignAuthorizationReturnType}
52
+ *
53
+ * @example
54
+ * import { createClient, http } from 'viem'
55
+ * import { privateKeyToAccount } from 'viem/accounts'
56
+ * import { mainnet } from 'viem/chains'
57
+ * import { signAuthorization } from 'viem/experimental'
58
+ *
59
+ * const client = createClient({
60
+ * chain: mainnet,
61
+ * transport: http(),
62
+ * })
63
+ * const signature = await signAuthorization(client, {
64
+ * account: privateKeyToAccount('0x..'),
65
+ * address: '0xA0Cf798816D4b9b9866b5330EEa46a18382f251e',
66
+ * })
67
+ *
68
+ * @example
69
+ * // Account Hoisting
70
+ * import { createClient, http } from 'viem'
71
+ * import { privateKeyToAccount } from 'viem/accounts'
72
+ * import { mainnet } from 'viem/chains'
73
+ * import { signAuthorization } from 'viem/experimental'
74
+ *
75
+ * const client = createClient({
76
+ * account: privateKeyToAccount('0x…'),
77
+ * chain: mainnet,
78
+ * transport: http(),
79
+ * })
80
+ * const signature = await signAuthorization(client, {
81
+ * address: '0xA0Cf798816D4b9b9866b5330EEa46a18382f251e',
82
+ * })
83
+ */
84
+ export async function signAuthorization<
85
+ chain extends Chain | undefined,
86
+ account extends Account | undefined,
87
+ >(
88
+ client: Client<Transport, chain, account>,
89
+ parameters: SignAuthorizationParameters<account>,
90
+ ): Promise<SignAuthorizationReturnType> {
91
+ const {
92
+ account: account_ = client.account,
93
+ contractAddress,
94
+ chainId,
95
+ nonce,
96
+ } = parameters
97
+
98
+ if (!account_)
99
+ throw new AccountNotFoundError({
100
+ docsPath: '/experimental/eip7702/signAuthorization',
101
+ })
102
+ const account = parseAccount(account_)
103
+
104
+ if (!account.experimental_signAuthorization)
105
+ throw new AccountTypeNotSupportedError({
106
+ docsPath: '/experimental/eip7702/signAuthorization',
107
+ metaMessages: [
108
+ 'The `signAuthorization` Action does not support JSON-RPC Accounts.',
109
+ ],
110
+ type: account.type,
111
+ })
112
+
113
+ const authorization = {
114
+ contractAddress,
115
+ chainId,
116
+ nonce,
117
+ } as Authorization
118
+
119
+ if (typeof authorization.chainId === 'undefined')
120
+ authorization.chainId =
121
+ client.chain?.id ??
122
+ (await getAction(client, getChainId, 'getChainId')({}))
123
+
124
+ if (typeof authorization.nonce === 'undefined') {
125
+ authorization.nonce = await getAction(
126
+ client,
127
+ getTransactionCount,
128
+ 'getTransactionCount',
129
+ )({
130
+ address: account.address,
131
+ blockTag: 'pending',
132
+ })
133
+ }
134
+
135
+ return account.experimental_signAuthorization(authorization)
136
+ }
@@ -0,0 +1,86 @@
1
+ import type { Client } from '../../../clients/createClient.js'
2
+ import type { Transport } from '../../../clients/transports/createTransport.js'
3
+ import type { Account } from '../../../types/account.js'
4
+ import type { Chain } from '../../../types/chain.js'
5
+ import {
6
+ type SignAuthorizationParameters,
7
+ type SignAuthorizationReturnType,
8
+ signAuthorization,
9
+ } from '../actions/signAuthorization.js'
10
+
11
+ export type Eip7702Actions<
12
+ account extends Account | undefined = Account | undefined,
13
+ > = {
14
+ /**
15
+ * Signs an [EIP-7702 Authorization](https://eips.ethereum.org/EIPS/eip-7702) object.
16
+ *
17
+ * With the calculated signature, you can:
18
+ * - use [`verifyAuthorization`](https://viem.sh/experimental/eip7702/verifyAuthorization) to verify the signed Authorization object,
19
+ * - use [`recoverAuthorizationAddress`](https://viem.sh/experimental/eip7702/recoverAuthorizationAddress) to recover the signing address from the signed Authorization object.
20
+ *
21
+ * @param client - Client to use
22
+ * @param parameters - {@link SignAuthorizationParameters}
23
+ * @returns The signed Authorization object. {@link SignAuthorizationReturnType}
24
+ *
25
+ * @example
26
+ * import { createClient, http } from 'viem'
27
+ * import { privateKeyToAccount } from 'viem/accounts'
28
+ * import { mainnet } from 'viem/chains'
29
+ * import { eip7702Actions } from 'viem/experimental'
30
+ *
31
+ * const client = createClient({
32
+ * chain: mainnet,
33
+ * transport: http(),
34
+ * }).extend(eip7702Actions())
35
+ *
36
+ * const signature = await client.signAuthorization({
37
+ * account: privateKeyToAccount('0x..'),
38
+ * authorization: '0xA0Cf798816D4b9b9866b5330EEa46a18382f251e',
39
+ * })
40
+ *
41
+ * @example
42
+ * // Account Hoisting
43
+ * import { createClient, http } from 'viem'
44
+ * import { privateKeyToAccount } from 'viem/accounts'
45
+ * import { mainnet } from 'viem/chains'
46
+ * import { eip7702Actions } from 'viem/experimental'
47
+ *
48
+ * const client = createClient({
49
+ * account: privateKeyToAccount('0x…'),
50
+ * chain: mainnet,
51
+ * transport: http(),
52
+ * }).extend(eip7702Actions())
53
+ *
54
+ * const signature = await client.signAuthorization({
55
+ * authorization: '0xA0Cf798816D4b9b9866b5330EEa46a18382f251e',
56
+ * })
57
+ */
58
+ signAuthorization: (
59
+ parameters: SignAuthorizationParameters<account>,
60
+ ) => Promise<SignAuthorizationReturnType>
61
+ }
62
+
63
+ /**
64
+ * A suite of EIP-7702 Actions.
65
+ *
66
+ * @example
67
+ * import { createClient, http } from 'viem'
68
+ * import { mainnet } from 'viem/chains'
69
+ * import { eip7702Actions } from 'viem/experimental'
70
+ *
71
+ * const client = createClient({
72
+ * chain: mainnet,
73
+ * transport: http(),
74
+ * }).extend(eip7702Actions())
75
+ *
76
+ * const hash = await client.signAuthorization({ ... })
77
+ */
78
+ export function eip7702Actions() {
79
+ return <account extends Account | undefined = Account | undefined>(
80
+ client: Client<Transport, Chain | undefined, account>,
81
+ ): Eip7702Actions<account> => {
82
+ return {
83
+ signAuthorization: (parameters) => signAuthorization(client, parameters),
84
+ }
85
+ }
86
+ }
@@ -0,0 +1,30 @@
1
+ import type { Address } from 'abitype'
2
+ import type { Hex, Signature } from '../../../types/misc.js'
3
+ import type { ExactPartial } from '../../../types/utils.js'
4
+
5
+ export type Authorization<uint32 = number, signed extends boolean = false> = {
6
+ /** Address of the contract to set as code for the Authority. */
7
+ contractAddress: Address
8
+ /** Chain ID to authorize. */
9
+ chainId: uint32
10
+ /** Nonce of the Authority to authorize. */
11
+ nonce: uint32
12
+ } & (signed extends true ? Signature : ExactPartial<Signature>)
13
+ export type AuthorizationList<
14
+ uint32 = number,
15
+ signed extends boolean = false,
16
+ > = readonly Authorization<uint32, signed>[]
17
+
18
+ export type SignedAuthorization<uint32 = number> = Authorization<uint32, true>
19
+ export type SignedAuthorizationList<uint32 = number> =
20
+ readonly SignedAuthorization<uint32>[]
21
+
22
+ export type SerializedAuthorization = readonly [
23
+ chainId: Hex,
24
+ address: Hex,
25
+ nonce: Hex,
26
+ yParity: Hex,
27
+ r: Hex,
28
+ s: Hex,
29
+ ]
30
+ export type SerializedAuthorizationList = readonly SerializedAuthorization[]
@@ -0,0 +1,12 @@
1
+ import type { Address } from 'abitype'
2
+ import type { Hex, Signature } from '../../../types/misc.js'
3
+
4
+ export type RpcAuthorization = {
5
+ /** Address of the contract to set as code for the Authority. */
6
+ address: Address
7
+ /** Chain ID to authorize. */
8
+ chainId: Hex
9
+ /** Nonce of the Authority to authorize. */
10
+ nonce: Hex
11
+ } & Signature
12
+ export type RpcAuthorizationList = readonly RpcAuthorization[]
@@ -0,0 +1,60 @@
1
+ import type { ErrorType } from '../../../errors/utils.js'
2
+ import type { ByteArray, Hex } from '../../../types/misc.js'
3
+ import {
4
+ type ConcatHexErrorType,
5
+ concatHex,
6
+ } from '../../../utils/data/concat.js'
7
+ import {
8
+ type HexToBytesErrorType,
9
+ hexToBytes,
10
+ } from '../../../utils/encoding/toBytes.js'
11
+ import {
12
+ type NumberToHexErrorType,
13
+ numberToHex,
14
+ } from '../../../utils/encoding/toHex.js'
15
+ import { type ToRlpErrorType, toRlp } from '../../../utils/encoding/toRlp.js'
16
+ import {
17
+ type Keccak256ErrorType,
18
+ keccak256,
19
+ } from '../../../utils/hash/keccak256.js'
20
+ import type { Authorization } from '../types/authorization.js'
21
+
22
+ type To = 'hex' | 'bytes'
23
+
24
+ export type HashAuthorizationParameters<to extends To> = Authorization & {
25
+ /** Output format. @default "hex" */
26
+ to?: to | To | undefined
27
+ }
28
+
29
+ export type HashAuthorizationReturnType<to extends To> =
30
+ | (to extends 'bytes' ? ByteArray : never)
31
+ | (to extends 'hex' ? Hex : never)
32
+
33
+ export type HashAuthorizationErrorType =
34
+ | Keccak256ErrorType
35
+ | ConcatHexErrorType
36
+ | ToRlpErrorType
37
+ | NumberToHexErrorType
38
+ | HexToBytesErrorType
39
+ | ErrorType
40
+
41
+ /**
42
+ * Computes an Authorization hash in [EIP-7702 format](https://eips.ethereum.org/EIPS/eip-7702): `keccak256('0x05' || rlp([chain_id, address, nonce]))`.
43
+ */
44
+ export function hashAuthorization<to extends To = 'hex'>(
45
+ parameters: HashAuthorizationParameters<to>,
46
+ ): HashAuthorizationReturnType<to> {
47
+ const { chainId, contractAddress, nonce, to } = parameters
48
+ const hash = keccak256(
49
+ concatHex([
50
+ '0x05',
51
+ toRlp([
52
+ numberToHex(chainId),
53
+ contractAddress,
54
+ [nonce ? numberToHex(nonce) : '0x'],
55
+ ]),
56
+ ]),
57
+ )
58
+ if (to === 'bytes') return hexToBytes(hash) as HashAuthorizationReturnType<to>
59
+ return hash as HashAuthorizationReturnType<to>
60
+ }
@@ -0,0 +1,61 @@
1
+ import type { Address } from 'abitype'
2
+
3
+ import type { ErrorType } from '../../../errors/utils.js'
4
+ import type { ByteArray, Hex, Signature } from '../../../types/misc.js'
5
+ import type { OneOf } from '../../../types/utils.js'
6
+ import {
7
+ type RecoverAddressErrorType,
8
+ recoverAddress,
9
+ } from '../../../utils/signature/recoverAddress.js'
10
+ import type {
11
+ Authorization,
12
+ SignedAuthorization,
13
+ } from '../types/authorization.js'
14
+ import {
15
+ type HashAuthorizationErrorType,
16
+ hashAuthorization,
17
+ } from './hashAuthorization.js'
18
+
19
+ export type RecoverAuthorizationAddressParameters<
20
+ authorization extends OneOf<Authorization | SignedAuthorization> = OneOf<
21
+ Authorization | SignedAuthorization
22
+ >,
23
+ //
24
+ _signature = Hex | ByteArray | OneOf<Signature | SignedAuthorization>,
25
+ > = {
26
+ /**
27
+ * The Authorization object.
28
+ *
29
+ * - If an unsigned `authorization` is provided, the `signature` property is required.
30
+ * - If a signed `authorization` is provided, the `signature` property does not need to be provided.
31
+ */
32
+ authorization: authorization | OneOf<Authorization | SignedAuthorization>
33
+ } & (authorization extends SignedAuthorization
34
+ ? {
35
+ /** Signature of the Authorization. Not required if the `authorization` is signed. */
36
+ signature?: _signature | undefined
37
+ }
38
+ : {
39
+ /** Signature of the Authorization. Not required if the `authorization` is signed. */
40
+ signature: _signature
41
+ })
42
+
43
+ export type RecoverAuthorizationAddressReturnType = Address
44
+
45
+ export type RecoverAuthorizationAddressErrorType =
46
+ | HashAuthorizationErrorType
47
+ | RecoverAddressErrorType
48
+ | ErrorType
49
+
50
+ export async function recoverAuthorizationAddress<
51
+ const authorization extends OneOf<Authorization | SignedAuthorization>,
52
+ >(
53
+ parameters: RecoverAuthorizationAddressParameters<authorization>,
54
+ ): Promise<RecoverAuthorizationAddressReturnType> {
55
+ const { authorization, signature } = parameters
56
+
57
+ return recoverAddress({
58
+ hash: hashAuthorization(authorization as Authorization),
59
+ signature: (signature ?? authorization) as Signature,
60
+ })
61
+ }