viem 2.17.11 → 2.18.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (439) hide show
  1. package/CHANGELOG.md +8 -2
  2. package/_cjs/account-abstraction/accounts/createWebAuthnCredential.js +6 -0
  3. package/_cjs/account-abstraction/accounts/createWebAuthnCredential.js.map +1 -0
  4. package/_cjs/account-abstraction/accounts/implementations/toCoinbaseSmartAccount.js +688 -0
  5. package/_cjs/account-abstraction/accounts/implementations/toCoinbaseSmartAccount.js.map +1 -0
  6. package/_cjs/account-abstraction/accounts/implementations/toSoladySmartAccount.js +704 -0
  7. package/_cjs/account-abstraction/accounts/implementations/toSoladySmartAccount.js.map +1 -0
  8. package/_cjs/account-abstraction/accounts/toSmartAccount.js +93 -0
  9. package/_cjs/account-abstraction/accounts/toSmartAccount.js.map +1 -0
  10. package/_cjs/account-abstraction/accounts/toWebAuthnAccount.js +24 -0
  11. package/_cjs/account-abstraction/accounts/toWebAuthnAccount.js.map +1 -0
  12. package/_cjs/account-abstraction/accounts/types.js +3 -0
  13. package/_cjs/account-abstraction/accounts/types.js.map +1 -0
  14. package/_cjs/account-abstraction/actions/bundler/estimateUserOperationGas.js +37 -0
  15. package/_cjs/account-abstraction/actions/bundler/estimateUserOperationGas.js.map +1 -0
  16. package/_cjs/account-abstraction/actions/bundler/getSupportedEntryPoints.js +7 -0
  17. package/_cjs/account-abstraction/actions/bundler/getSupportedEntryPoints.js.map +1 -0
  18. package/_cjs/account-abstraction/actions/bundler/getUserOperation.js +22 -0
  19. package/_cjs/account-abstraction/actions/bundler/getUserOperation.js.map +1 -0
  20. package/_cjs/account-abstraction/actions/bundler/getUserOperationReceipt.js +15 -0
  21. package/_cjs/account-abstraction/actions/bundler/getUserOperationReceipt.js.map +1 -0
  22. package/_cjs/account-abstraction/actions/bundler/prepareUserOperation.js +239 -0
  23. package/_cjs/account-abstraction/actions/bundler/prepareUserOperation.js.map +1 -0
  24. package/_cjs/account-abstraction/actions/bundler/sendUserOperation.js +36 -0
  25. package/_cjs/account-abstraction/actions/bundler/sendUserOperation.js.map +1 -0
  26. package/_cjs/account-abstraction/actions/bundler/waitForUserOperationReceipt.js +48 -0
  27. package/_cjs/account-abstraction/actions/bundler/waitForUserOperationReceipt.js.map +1 -0
  28. package/_cjs/account-abstraction/actions/paymaster/getPaymasterData.js +34 -0
  29. package/_cjs/account-abstraction/actions/paymaster/getPaymasterData.js.map +1 -0
  30. package/_cjs/account-abstraction/actions/paymaster/getPaymasterStubData.js +34 -0
  31. package/_cjs/account-abstraction/actions/paymaster/getPaymasterStubData.js.map +1 -0
  32. package/_cjs/account-abstraction/clients/createBundlerClient.js +18 -0
  33. package/_cjs/account-abstraction/clients/createBundlerClient.js.map +1 -0
  34. package/_cjs/account-abstraction/clients/createPaymasterClient.js +17 -0
  35. package/_cjs/account-abstraction/clients/createPaymasterClient.js.map +1 -0
  36. package/_cjs/account-abstraction/clients/decorators/bundler.js +24 -0
  37. package/_cjs/account-abstraction/clients/decorators/bundler.js.map +1 -0
  38. package/_cjs/account-abstraction/clients/decorators/paymaster.js +12 -0
  39. package/_cjs/account-abstraction/clients/decorators/paymaster.js.map +1 -0
  40. package/_cjs/account-abstraction/constants/abis.js +1318 -0
  41. package/_cjs/account-abstraction/constants/abis.js.map +1 -0
  42. package/_cjs/account-abstraction/constants/address.js +6 -0
  43. package/_cjs/account-abstraction/constants/address.js.map +1 -0
  44. package/_cjs/account-abstraction/errors/bundler.js +813 -0
  45. package/_cjs/account-abstraction/errors/bundler.js.map +1 -0
  46. package/_cjs/account-abstraction/errors/userOperation.js +91 -0
  47. package/_cjs/account-abstraction/errors/userOperation.js.map +1 -0
  48. package/_cjs/account-abstraction/index.js +90 -0
  49. package/_cjs/account-abstraction/index.js.map +1 -0
  50. package/_cjs/account-abstraction/types/account.js +3 -0
  51. package/_cjs/account-abstraction/types/account.js.map +1 -0
  52. package/_cjs/account-abstraction/types/entryPointVersion.js +3 -0
  53. package/_cjs/account-abstraction/types/entryPointVersion.js.map +1 -0
  54. package/_cjs/account-abstraction/types/rpc.js +3 -0
  55. package/_cjs/account-abstraction/types/rpc.js.map +1 -0
  56. package/_cjs/account-abstraction/types/userOperation.js +3 -0
  57. package/_cjs/account-abstraction/types/userOperation.js.map +1 -0
  58. package/_cjs/account-abstraction/utils/errors/getBundlerError.js +186 -0
  59. package/_cjs/account-abstraction/utils/errors/getBundlerError.js.map +1 -0
  60. package/_cjs/account-abstraction/utils/errors/getUserOperationError.js +87 -0
  61. package/_cjs/account-abstraction/utils/errors/getUserOperationError.js.map +1 -0
  62. package/_cjs/account-abstraction/utils/formatters/userOperation.js +24 -0
  63. package/_cjs/account-abstraction/utils/formatters/userOperation.js.map +1 -0
  64. package/_cjs/account-abstraction/utils/formatters/userOperationGas.js +18 -0
  65. package/_cjs/account-abstraction/utils/formatters/userOperationGas.js.map +1 -0
  66. package/_cjs/account-abstraction/utils/formatters/userOperationReceipt.js +18 -0
  67. package/_cjs/account-abstraction/utils/formatters/userOperationReceipt.js.map +1 -0
  68. package/_cjs/account-abstraction/utils/formatters/userOperationRequest.js +43 -0
  69. package/_cjs/account-abstraction/utils/formatters/userOperationRequest.js.map +1 -0
  70. package/_cjs/account-abstraction/utils/userOperation/getUserOperationHash.js +88 -0
  71. package/_cjs/account-abstraction/utils/userOperation/getUserOperationHash.js.map +1 -0
  72. package/_cjs/account-abstraction/utils/userOperation/toPackedUserOperation.js +44 -0
  73. package/_cjs/account-abstraction/utils/userOperation/toPackedUserOperation.js.map +1 -0
  74. package/_cjs/accounts/index.js +1 -3
  75. package/_cjs/accounts/index.js.map +1 -1
  76. package/_cjs/accounts/privateKeyToAccount.js +4 -0
  77. package/_cjs/accounts/privateKeyToAccount.js.map +1 -1
  78. package/_cjs/accounts/toAccount.js +1 -0
  79. package/_cjs/accounts/toAccount.js.map +1 -1
  80. package/_cjs/accounts/utils/parseAccount.js.map +1 -1
  81. package/_cjs/accounts/utils/sign.js +8 -2
  82. package/_cjs/accounts/utils/sign.js.map +1 -1
  83. package/_cjs/accounts/utils/signMessage.js +1 -3
  84. package/_cjs/accounts/utils/signMessage.js.map +1 -1
  85. package/_cjs/accounts/utils/signTypedData.js +2 -3
  86. package/_cjs/accounts/utils/signTypedData.js.map +1 -1
  87. package/_cjs/actions/wallet/sendTransaction.js +35 -22
  88. package/_cjs/actions/wallet/sendTransaction.js.map +1 -1
  89. package/_cjs/actions/wallet/signMessage.js +1 -1
  90. package/_cjs/actions/wallet/signMessage.js.map +1 -1
  91. package/_cjs/actions/wallet/signTransaction.js +1 -2
  92. package/_cjs/actions/wallet/signTransaction.js.map +1 -1
  93. package/_cjs/actions/wallet/signTypedData.js +1 -1
  94. package/_cjs/actions/wallet/signTypedData.js.map +1 -1
  95. package/_cjs/constants/abis.js +0 -3
  96. package/_cjs/constants/abis.js.map +1 -1
  97. package/_cjs/constants/address.js +3 -1
  98. package/_cjs/constants/address.js.map +1 -1
  99. package/_cjs/errors/account.js +17 -2
  100. package/_cjs/errors/account.js.map +1 -1
  101. package/_cjs/errors/contract.js +1 -1
  102. package/_cjs/errors/contract.js.map +1 -1
  103. package/_cjs/errors/rpc.js +6 -6
  104. package/_cjs/errors/rpc.js.map +1 -1
  105. package/_cjs/errors/version.js +1 -1
  106. package/_cjs/errors/version.js.map +1 -1
  107. package/_cjs/index.js +5 -3
  108. package/_cjs/index.js.map +1 -1
  109. package/_cjs/types/eip1193.js.map +1 -1
  110. package/_cjs/utils/buildRequest.js +4 -2
  111. package/_cjs/utils/buildRequest.js.map +1 -1
  112. package/_cjs/utils/errors/getNodeError.js +1 -2
  113. package/_cjs/utils/errors/getNodeError.js.map +1 -1
  114. package/_cjs/utils/index.js +3 -1
  115. package/_cjs/utils/index.js.map +1 -1
  116. package/_cjs/utils/signature/serializeErc6492Signature.js +6 -2
  117. package/_cjs/utils/signature/serializeErc6492Signature.js.map +1 -1
  118. package/_cjs/utils/signature/serializeSignature.js +6 -2
  119. package/_cjs/utils/signature/serializeSignature.js.map +1 -1
  120. package/_cjs/utils/signature/verifyHash.js +10 -0
  121. package/_cjs/utils/signature/verifyHash.js.map +1 -0
  122. package/_esm/account-abstraction/accounts/createWebAuthnCredential.js +3 -0
  123. package/_esm/account-abstraction/accounts/createWebAuthnCredential.js.map +1 -0
  124. package/_esm/account-abstraction/accounts/implementations/toCoinbaseSmartAccount.js +709 -0
  125. package/_esm/account-abstraction/accounts/implementations/toCoinbaseSmartAccount.js.map +1 -0
  126. package/_esm/account-abstraction/accounts/implementations/toSoladySmartAccount.js +718 -0
  127. package/_esm/account-abstraction/accounts/implementations/toSoladySmartAccount.js.map +1 -0
  128. package/_esm/account-abstraction/accounts/toSmartAccount.js +96 -0
  129. package/_esm/account-abstraction/accounts/toSmartAccount.js.map +1 -0
  130. package/_esm/account-abstraction/accounts/toWebAuthnAccount.js +26 -0
  131. package/_esm/account-abstraction/accounts/toWebAuthnAccount.js.map +1 -0
  132. package/_esm/account-abstraction/accounts/types.js +2 -0
  133. package/_esm/account-abstraction/accounts/types.js.map +1 -0
  134. package/_esm/account-abstraction/actions/bundler/estimateUserOperationGas.js +61 -0
  135. package/_esm/account-abstraction/actions/bundler/estimateUserOperationGas.js.map +1 -0
  136. package/_esm/account-abstraction/actions/bundler/getSupportedEntryPoints.js +25 -0
  137. package/_esm/account-abstraction/actions/bundler/getSupportedEntryPoints.js.map +1 -0
  138. package/_esm/account-abstraction/actions/bundler/getUserOperation.js +42 -0
  139. package/_esm/account-abstraction/actions/bundler/getUserOperation.js.map +1 -0
  140. package/_esm/account-abstraction/actions/bundler/getUserOperationReceipt.js +35 -0
  141. package/_esm/account-abstraction/actions/bundler/getUserOperationReceipt.js.map +1 -0
  142. package/_esm/account-abstraction/actions/bundler/prepareUserOperation.js +323 -0
  143. package/_esm/account-abstraction/actions/bundler/prepareUserOperation.js.map +1 -0
  144. package/_esm/account-abstraction/actions/bundler/sendUserOperation.js +60 -0
  145. package/_esm/account-abstraction/actions/bundler/sendUserOperation.js.map +1 -0
  146. package/_esm/account-abstraction/actions/bundler/waitForUserOperationReceipt.js +68 -0
  147. package/_esm/account-abstraction/actions/bundler/waitForUserOperationReceipt.js.map +1 -0
  148. package/_esm/account-abstraction/actions/paymaster/getPaymasterData.js +56 -0
  149. package/_esm/account-abstraction/actions/paymaster/getPaymasterData.js.map +1 -0
  150. package/_esm/account-abstraction/actions/paymaster/getPaymasterStubData.js +56 -0
  151. package/_esm/account-abstraction/actions/paymaster/getPaymasterStubData.js.map +1 -0
  152. package/_esm/account-abstraction/clients/createBundlerClient.js +15 -0
  153. package/_esm/account-abstraction/clients/createBundlerClient.js.map +1 -0
  154. package/_esm/account-abstraction/clients/createPaymasterClient.js +14 -0
  155. package/_esm/account-abstraction/clients/createPaymasterClient.js.map +1 -0
  156. package/_esm/account-abstraction/clients/decorators/bundler.js +21 -0
  157. package/_esm/account-abstraction/clients/decorators/bundler.js.map +1 -0
  158. package/_esm/account-abstraction/clients/decorators/paymaster.js +9 -0
  159. package/_esm/account-abstraction/clients/decorators/paymaster.js.map +1 -0
  160. package/_esm/account-abstraction/constants/abis.js +1315 -0
  161. package/_esm/account-abstraction/constants/abis.js.map +1 -0
  162. package/_esm/account-abstraction/constants/address.js +3 -0
  163. package/_esm/account-abstraction/constants/address.js.map +1 -0
  164. package/_esm/account-abstraction/errors/bundler.js +774 -0
  165. package/_esm/account-abstraction/errors/bundler.js.map +1 -0
  166. package/_esm/account-abstraction/errors/userOperation.js +84 -0
  167. package/_esm/account-abstraction/errors/userOperation.js.map +1 -0
  168. package/_esm/account-abstraction/index.js +31 -0
  169. package/_esm/account-abstraction/index.js.map +1 -0
  170. package/_esm/account-abstraction/types/account.js +2 -0
  171. package/_esm/account-abstraction/types/account.js.map +1 -0
  172. package/_esm/account-abstraction/types/entryPointVersion.js +2 -0
  173. package/_esm/account-abstraction/types/entryPointVersion.js.map +1 -0
  174. package/_esm/account-abstraction/types/rpc.js +2 -0
  175. package/_esm/account-abstraction/types/rpc.js.map +1 -0
  176. package/_esm/account-abstraction/types/userOperation.js +2 -0
  177. package/_esm/account-abstraction/types/userOperation.js.map +1 -0
  178. package/_esm/account-abstraction/utils/errors/getBundlerError.js +183 -0
  179. package/_esm/account-abstraction/utils/errors/getBundlerError.js.map +1 -0
  180. package/_esm/account-abstraction/utils/errors/getUserOperationError.js +85 -0
  181. package/_esm/account-abstraction/utils/errors/getUserOperationError.js.map +1 -0
  182. package/_esm/account-abstraction/utils/formatters/userOperation.js +21 -0
  183. package/_esm/account-abstraction/utils/formatters/userOperation.js.map +1 -0
  184. package/_esm/account-abstraction/utils/formatters/userOperationGas.js +15 -0
  185. package/_esm/account-abstraction/utils/formatters/userOperationGas.js.map +1 -0
  186. package/_esm/account-abstraction/utils/formatters/userOperationReceipt.js +15 -0
  187. package/_esm/account-abstraction/utils/formatters/userOperationReceipt.js.map +1 -0
  188. package/_esm/account-abstraction/utils/formatters/userOperationRequest.js +40 -0
  189. package/_esm/account-abstraction/utils/formatters/userOperationRequest.js.map +1 -0
  190. package/_esm/account-abstraction/utils/userOperation/getUserOperationHash.js +85 -0
  191. package/_esm/account-abstraction/utils/userOperation/getUserOperationHash.js.map +1 -0
  192. package/_esm/account-abstraction/utils/userOperation/toPackedUserOperation.js +41 -0
  193. package/_esm/account-abstraction/utils/userOperation/toPackedUserOperation.js.map +1 -0
  194. package/_esm/accounts/index.js +0 -1
  195. package/_esm/accounts/index.js.map +1 -1
  196. package/_esm/accounts/privateKeyToAccount.js +4 -0
  197. package/_esm/accounts/privateKeyToAccount.js.map +1 -1
  198. package/_esm/accounts/toAccount.js +2 -0
  199. package/_esm/accounts/toAccount.js.map +1 -1
  200. package/_esm/accounts/utils/parseAccount.js.map +1 -1
  201. package/_esm/accounts/utils/sign.js +9 -3
  202. package/_esm/accounts/utils/sign.js.map +1 -1
  203. package/_esm/accounts/utils/signMessage.js +1 -3
  204. package/_esm/accounts/utils/signMessage.js.map +1 -1
  205. package/_esm/accounts/utils/signTypedData.js +2 -3
  206. package/_esm/accounts/utils/signTypedData.js.map +1 -1
  207. package/_esm/actions/wallet/sendTransaction.js +37 -24
  208. package/_esm/actions/wallet/sendTransaction.js.map +1 -1
  209. package/_esm/actions/wallet/signMessage.js +1 -1
  210. package/_esm/actions/wallet/signMessage.js.map +1 -1
  211. package/_esm/actions/wallet/signTransaction.js +1 -2
  212. package/_esm/actions/wallet/signTransaction.js.map +1 -1
  213. package/_esm/actions/wallet/signTypedData.js +1 -1
  214. package/_esm/actions/wallet/signTypedData.js.map +1 -1
  215. package/_esm/constants/abis.js +0 -3
  216. package/_esm/constants/abis.js.map +1 -1
  217. package/_esm/constants/address.js +2 -0
  218. package/_esm/constants/address.js.map +1 -1
  219. package/_esm/errors/account.js +15 -1
  220. package/_esm/errors/account.js.map +1 -1
  221. package/_esm/errors/contract.js +1 -1
  222. package/_esm/errors/contract.js.map +1 -1
  223. package/_esm/errors/rpc.js +6 -6
  224. package/_esm/errors/rpc.js.map +1 -1
  225. package/_esm/errors/version.js +1 -1
  226. package/_esm/errors/version.js.map +1 -1
  227. package/_esm/index.js +1 -0
  228. package/_esm/index.js.map +1 -1
  229. package/_esm/types/eip1193.js.map +1 -1
  230. package/_esm/utils/buildRequest.js +4 -2
  231. package/_esm/utils/buildRequest.js.map +1 -1
  232. package/_esm/utils/errors/getNodeError.js +1 -2
  233. package/_esm/utils/errors/getNodeError.js.map +1 -1
  234. package/_esm/utils/index.js +1 -0
  235. package/_esm/utils/index.js.map +1 -1
  236. package/_esm/utils/signature/serializeErc6492Signature.js +6 -2
  237. package/_esm/utils/signature/serializeErc6492Signature.js.map +1 -1
  238. package/_esm/utils/signature/serializeSignature.js +6 -2
  239. package/_esm/utils/signature/serializeSignature.js.map +1 -1
  240. package/_esm/utils/signature/verifyHash.js +19 -0
  241. package/_esm/utils/signature/verifyHash.js.map +1 -0
  242. package/_types/account-abstraction/accounts/createWebAuthnCredential.d.ts +2 -0
  243. package/_types/account-abstraction/accounts/createWebAuthnCredential.d.ts.map +1 -0
  244. package/_types/account-abstraction/accounts/implementations/toCoinbaseSmartAccount.d.ts +648 -0
  245. package/_types/account-abstraction/accounts/implementations/toCoinbaseSmartAccount.d.ts.map +1 -0
  246. package/_types/account-abstraction/accounts/implementations/toSoladySmartAccount.d.ts +464 -0
  247. package/_types/account-abstraction/accounts/implementations/toSoladySmartAccount.d.ts.map +1 -0
  248. package/_types/account-abstraction/accounts/toSmartAccount.d.ts +14 -0
  249. package/_types/account-abstraction/accounts/toSmartAccount.d.ts.map +1 -0
  250. package/_types/account-abstraction/accounts/toWebAuthnAccount.d.ts +32 -0
  251. package/_types/account-abstraction/accounts/toWebAuthnAccount.d.ts.map +1 -0
  252. package/_types/account-abstraction/accounts/types.d.ts +174 -0
  253. package/_types/account-abstraction/accounts/types.d.ts.map +1 -0
  254. package/_types/account-abstraction/actions/bundler/estimateUserOperationGas.d.ts +62 -0
  255. package/_types/account-abstraction/actions/bundler/estimateUserOperationGas.d.ts.map +1 -0
  256. package/_types/account-abstraction/actions/bundler/getSupportedEntryPoints.d.ts +30 -0
  257. package/_types/account-abstraction/actions/bundler/getSupportedEntryPoints.d.ts.map +1 -0
  258. package/_types/account-abstraction/actions/bundler/getUserOperation.d.ts +57 -0
  259. package/_types/account-abstraction/actions/bundler/getUserOperation.d.ts.map +1 -0
  260. package/_types/account-abstraction/actions/bundler/getUserOperationReceipt.d.ts +39 -0
  261. package/_types/account-abstraction/actions/bundler/getUserOperationReceipt.d.ts.map +1 -0
  262. package/_types/account-abstraction/actions/bundler/prepareUserOperation.d.ts +106 -0
  263. package/_types/account-abstraction/actions/bundler/prepareUserOperation.d.ts.map +1 -0
  264. package/_types/account-abstraction/actions/bundler/sendUserOperation.d.ts +60 -0
  265. package/_types/account-abstraction/actions/bundler/sendUserOperation.d.ts.map +1 -0
  266. package/_types/account-abstraction/actions/bundler/waitForUserOperationReceipt.d.ts +52 -0
  267. package/_types/account-abstraction/actions/bundler/waitForUserOperationReceipt.d.ts.map +1 -0
  268. package/_types/account-abstraction/actions/paymaster/getPaymasterData.d.ts +49 -0
  269. package/_types/account-abstraction/actions/paymaster/getPaymasterData.d.ts.map +1 -0
  270. package/_types/account-abstraction/actions/paymaster/getPaymasterStubData.d.ts +55 -0
  271. package/_types/account-abstraction/actions/paymaster/getPaymasterStubData.d.ts.map +1 -0
  272. package/_types/account-abstraction/clients/createBundlerClient.d.ts +66 -0
  273. package/_types/account-abstraction/clients/createBundlerClient.d.ts.map +1 -0
  274. package/_types/account-abstraction/clients/createPaymasterClient.d.ts +27 -0
  275. package/_types/account-abstraction/clients/createPaymasterClient.d.ts.map +1 -0
  276. package/_types/account-abstraction/clients/decorators/bundler.d.ts +206 -0
  277. package/_types/account-abstraction/clients/decorators/bundler.d.ts.map +1 -0
  278. package/_types/account-abstraction/clients/decorators/paymaster.d.ts +60 -0
  279. package/_types/account-abstraction/clients/decorators/paymaster.d.ts.map +1 -0
  280. package/_types/account-abstraction/constants/abis.d.ts +1468 -0
  281. package/_types/account-abstraction/constants/abis.d.ts.map +1 -0
  282. package/_types/account-abstraction/constants/address.d.ts +3 -0
  283. package/_types/account-abstraction/constants/address.d.ts.map +1 -0
  284. package/_types/account-abstraction/errors/bundler.d.ts +391 -0
  285. package/_types/account-abstraction/errors/bundler.d.ts.map +1 -0
  286. package/_types/account-abstraction/errors/userOperation.d.ts +41 -0
  287. package/_types/account-abstraction/errors/userOperation.d.ts.map +1 -0
  288. package/_types/account-abstraction/index.d.ts +34 -0
  289. package/_types/account-abstraction/index.d.ts.map +1 -0
  290. package/_types/account-abstraction/types/account.d.ts +11 -0
  291. package/_types/account-abstraction/types/account.d.ts.map +1 -0
  292. package/_types/account-abstraction/types/entryPointVersion.d.ts +9 -0
  293. package/_types/account-abstraction/types/entryPointVersion.d.ts.map +1 -0
  294. package/_types/account-abstraction/types/rpc.d.ts +9 -0
  295. package/_types/account-abstraction/types/rpc.d.ts.map +1 -0
  296. package/_types/account-abstraction/types/userOperation.d.ts +157 -0
  297. package/_types/account-abstraction/types/userOperation.d.ts.map +1 -0
  298. package/_types/account-abstraction/utils/errors/getBundlerError.d.ts +8 -0
  299. package/_types/account-abstraction/utils/errors/getBundlerError.d.ts.map +1 -0
  300. package/_types/account-abstraction/utils/errors/getUserOperationError.d.ts +15 -0
  301. package/_types/account-abstraction/utils/errors/getUserOperationError.d.ts.map +1 -0
  302. package/_types/account-abstraction/utils/formatters/userOperation.d.ts +6 -0
  303. package/_types/account-abstraction/utils/formatters/userOperation.d.ts.map +1 -0
  304. package/_types/account-abstraction/utils/formatters/userOperationGas.d.ts +6 -0
  305. package/_types/account-abstraction/utils/formatters/userOperationGas.d.ts.map +1 -0
  306. package/_types/account-abstraction/utils/formatters/userOperationReceipt.d.ts +6 -0
  307. package/_types/account-abstraction/utils/formatters/userOperationReceipt.d.ts.map +1 -0
  308. package/_types/account-abstraction/utils/formatters/userOperationRequest.d.ts +7 -0
  309. package/_types/account-abstraction/utils/formatters/userOperationRequest.d.ts.map +1 -0
  310. package/_types/account-abstraction/utils/userOperation/getUserOperationHash.d.ts +13 -0
  311. package/_types/account-abstraction/utils/userOperation/getUserOperationHash.d.ts.map +1 -0
  312. package/_types/account-abstraction/utils/userOperation/toPackedUserOperation.d.ts +3 -0
  313. package/_types/account-abstraction/utils/userOperation/toPackedUserOperation.d.ts.map +1 -0
  314. package/_types/accounts/index.d.ts +0 -1
  315. package/_types/accounts/index.d.ts.map +1 -1
  316. package/_types/accounts/privateKeyToAccount.d.ts +2 -1
  317. package/_types/accounts/privateKeyToAccount.d.ts.map +1 -1
  318. package/_types/accounts/toAccount.d.ts.map +1 -1
  319. package/_types/accounts/types.d.ts +14 -7
  320. package/_types/accounts/types.d.ts.map +1 -1
  321. package/_types/accounts/utils/parseAccount.d.ts +1 -1
  322. package/_types/accounts/utils/parseAccount.d.ts.map +1 -1
  323. package/_types/accounts/utils/sign.d.ts +9 -6
  324. package/_types/accounts/utils/sign.d.ts.map +1 -1
  325. package/_types/accounts/utils/signMessage.d.ts +1 -2
  326. package/_types/accounts/utils/signMessage.d.ts.map +1 -1
  327. package/_types/accounts/utils/signTypedData.d.ts +1 -2
  328. package/_types/accounts/utils/signTypedData.d.ts.map +1 -1
  329. package/_types/actions/wallet/sendTransaction.d.ts +2 -1
  330. package/_types/actions/wallet/sendTransaction.d.ts.map +1 -1
  331. package/_types/actions/wallet/signMessage.d.ts.map +1 -1
  332. package/_types/actions/wallet/signTransaction.d.ts.map +1 -1
  333. package/_types/chains/definitions/lisk.d.ts +2 -2
  334. package/_types/chains/definitions/playfiAlbireo.d.ts +2 -2
  335. package/_types/chains/definitions/zkSync.d.ts +2 -2
  336. package/_types/chains/definitions/zkSyncInMemoryNode.d.ts +2 -2
  337. package/_types/chains/definitions/zkSyncLocalNode.d.ts +2 -2
  338. package/_types/chains/definitions/zkSyncSepoliaTestnet.d.ts +2 -2
  339. package/_types/chains/definitions/zkSyncTestnet.d.ts +2 -2
  340. package/_types/clients/decorators/public.d.ts +1 -1
  341. package/_types/clients/decorators/public.d.ts.map +1 -1
  342. package/_types/constants/abis.d.ts +0 -3
  343. package/_types/constants/abis.d.ts.map +1 -1
  344. package/_types/constants/address.d.ts +2 -0
  345. package/_types/constants/address.d.ts.map +1 -1
  346. package/_types/errors/account.d.ts +11 -0
  347. package/_types/errors/account.d.ts.map +1 -1
  348. package/_types/errors/rpc.d.ts +9 -3
  349. package/_types/errors/rpc.d.ts.map +1 -1
  350. package/_types/errors/version.d.ts +1 -1
  351. package/_types/errors/version.d.ts.map +1 -1
  352. package/_types/index.d.ts +5 -3
  353. package/_types/index.d.ts.map +1 -1
  354. package/_types/types/eip1193.d.ts +239 -2
  355. package/_types/types/eip1193.d.ts.map +1 -1
  356. package/_types/types/multicall.d.ts +1 -1
  357. package/_types/types/multicall.d.ts.map +1 -1
  358. package/_types/utils/buildRequest.d.ts.map +1 -1
  359. package/_types/utils/errors/getNodeError.d.ts.map +1 -1
  360. package/_types/utils/formatters/transaction.d.ts +1 -1
  361. package/_types/utils/index.d.ts +1 -0
  362. package/_types/utils/index.d.ts.map +1 -1
  363. package/_types/utils/signature/hashTypedData.d.ts +2 -2
  364. package/_types/utils/signature/hashTypedData.d.ts.map +1 -1
  365. package/_types/utils/signature/serializeErc6492Signature.d.ts +7 -4
  366. package/_types/utils/signature/serializeErc6492Signature.d.ts.map +1 -1
  367. package/_types/utils/signature/serializeSignature.d.ts +8 -2
  368. package/_types/utils/signature/serializeSignature.d.ts.map +1 -1
  369. package/_types/utils/signature/verifyHash.d.ts +30 -0
  370. package/_types/utils/signature/verifyHash.d.ts.map +1 -0
  371. package/_types/zksync/chainConfig.d.ts +2 -2
  372. package/_types/zksync/formatters.d.ts +2 -2
  373. package/account-abstraction/accounts/createWebAuthnCredential.ts +7 -0
  374. package/account-abstraction/accounts/implementations/toCoinbaseSmartAccount.ts +817 -0
  375. package/account-abstraction/accounts/implementations/toSoladySmartAccount.ts +794 -0
  376. package/account-abstraction/accounts/toSmartAccount.ts +126 -0
  377. package/account-abstraction/accounts/toWebAuthnAccount.ts +56 -0
  378. package/account-abstraction/accounts/types.ts +208 -0
  379. package/account-abstraction/actions/bundler/estimateUserOperationGas.ts +170 -0
  380. package/account-abstraction/actions/bundler/getSupportedEntryPoints.ts +33 -0
  381. package/account-abstraction/actions/bundler/getUserOperation.ts +85 -0
  382. package/account-abstraction/actions/bundler/getUserOperationReceipt.ts +64 -0
  383. package/account-abstraction/actions/bundler/prepareUserOperation.ts +637 -0
  384. package/account-abstraction/actions/bundler/sendUserOperation.ts +149 -0
  385. package/account-abstraction/actions/bundler/waitForUserOperationReceipt.ts +139 -0
  386. package/account-abstraction/actions/paymaster/getPaymasterData.ts +135 -0
  387. package/account-abstraction/actions/paymaster/getPaymasterStubData.ts +138 -0
  388. package/account-abstraction/clients/createBundlerClient.ts +155 -0
  389. package/account-abstraction/clients/createPaymasterClient.ts +78 -0
  390. package/account-abstraction/clients/decorators/bundler.ts +296 -0
  391. package/account-abstraction/clients/decorators/paymaster.ts +81 -0
  392. package/account-abstraction/constants/abis.ts +1404 -0
  393. package/account-abstraction/constants/address.ts +4 -0
  394. package/account-abstraction/errors/bundler.ts +781 -0
  395. package/account-abstraction/errors/userOperation.ts +111 -0
  396. package/account-abstraction/index.ts +228 -0
  397. package/account-abstraction/package.json +6 -0
  398. package/account-abstraction/types/account.ts +21 -0
  399. package/account-abstraction/types/entryPointVersion.ts +24 -0
  400. package/account-abstraction/types/rpc.ts +29 -0
  401. package/account-abstraction/types/userOperation.ts +262 -0
  402. package/account-abstraction/utils/errors/getBundlerError.ts +309 -0
  403. package/account-abstraction/utils/errors/getUserOperationError.ts +153 -0
  404. package/account-abstraction/utils/formatters/userOperation.ts +31 -0
  405. package/account-abstraction/utils/formatters/userOperationGas.ts +26 -0
  406. package/account-abstraction/utils/formatters/userOperationReceipt.ts +24 -0
  407. package/account-abstraction/utils/formatters/userOperationRequest.ts +53 -0
  408. package/account-abstraction/utils/userOperation/getUserOperationHash.ts +138 -0
  409. package/account-abstraction/utils/userOperation/toPackedUserOperation.ts +64 -0
  410. package/accounts/index.ts +1 -1
  411. package/accounts/privateKeyToAccount.ts +5 -0
  412. package/accounts/toAccount.ts +3 -0
  413. package/accounts/types.ts +34 -12
  414. package/accounts/utils/parseAccount.ts +6 -3
  415. package/accounts/utils/sign.ts +24 -8
  416. package/accounts/utils/signMessage.ts +1 -7
  417. package/accounts/utils/signTypedData.ts +2 -7
  418. package/actions/wallet/sendTransaction.ts +48 -27
  419. package/actions/wallet/signMessage.ts +2 -1
  420. package/actions/wallet/signTransaction.ts +1 -2
  421. package/actions/wallet/signTypedData.ts +1 -1
  422. package/clients/decorators/public.ts +1 -1
  423. package/constants/abis.ts +0 -3
  424. package/constants/address.ts +4 -0
  425. package/errors/account.ts +22 -1
  426. package/errors/contract.ts +1 -1
  427. package/errors/rpc.ts +6 -6
  428. package/errors/version.ts +1 -1
  429. package/index.ts +20 -3
  430. package/package.json +7 -1
  431. package/types/eip1193.ts +314 -2
  432. package/types/multicall.ts +1 -1
  433. package/utils/buildRequest.ts +4 -2
  434. package/utils/errors/getNodeError.ts +1 -2
  435. package/utils/index.ts +6 -0
  436. package/utils/signature/hashTypedData.ts +6 -6
  437. package/utils/signature/serializeErc6492Signature.ts +17 -8
  438. package/utils/signature/serializeSignature.ts +24 -4
  439. package/utils/signature/verifyHash.ts +54 -0
package/errors/account.ts CHANGED
@@ -9,7 +9,7 @@ export class AccountNotFoundError extends BaseError {
9
9
  super(
10
10
  [
11
11
  'Could not find an Account to execute with this Action.',
12
- 'Please provide an Account with the `account` argument on the Action, or by supplying an `account` to the WalletClient.',
12
+ 'Please provide an Account with the `account` argument on the Action, or by supplying an `account` to the Client.',
13
13
  ].join('\n'),
14
14
  {
15
15
  docsPath,
@@ -18,3 +18,24 @@ export class AccountNotFoundError extends BaseError {
18
18
  )
19
19
  }
20
20
  }
21
+
22
+ export type AccountTypeNotSupportedErrorType = AccountTypeNotSupportedError & {
23
+ name: 'AccountTypeNotSupportedError'
24
+ }
25
+ export class AccountTypeNotSupportedError extends BaseError {
26
+ override name = 'AccountTypeNotSupportedError'
27
+ constructor({
28
+ docsPath,
29
+ metaMessages,
30
+ type,
31
+ }: {
32
+ docsPath?: string | undefined
33
+ metaMessages?: string[] | undefined
34
+ type: string
35
+ }) {
36
+ super(`Account type "${type}" is not supported.`, {
37
+ docsPath,
38
+ metaMessages,
39
+ })
40
+ }
41
+ }
@@ -152,7 +152,7 @@ export class ContractFunctionExecutionError extends BaseError {
152
152
  docsPath,
153
153
  metaMessages: [
154
154
  ...(cause.metaMessages ? [...cause.metaMessages, ' '] : []),
155
- 'Contract Call:',
155
+ prettyArgs && 'Contract Call:',
156
156
  prettyArgs,
157
157
  ].filter(Boolean) as string[],
158
158
  },
package/errors/rpc.ts CHANGED
@@ -148,10 +148,10 @@ export class MethodNotFoundRpcError extends RpcError {
148
148
  override name = 'MethodNotFoundRpcError'
149
149
  static code = -32601 as const
150
150
 
151
- constructor(cause: Error) {
151
+ constructor(cause: Error, { method }: { method?: string } = {}) {
152
152
  super(cause, {
153
153
  code: MethodNotFoundRpcError.code,
154
- shortMessage: 'The method does not exist / is not available.',
154
+ shortMessage: `The method${method ? ` "${method}"` : ''} does not exist / is not available.`,
155
155
  })
156
156
  }
157
157
  }
@@ -301,10 +301,10 @@ export class MethodNotSupportedRpcError extends RpcError {
301
301
  override name = 'MethodNotSupportedRpcError'
302
302
  static code = -32004 as const
303
303
 
304
- constructor(cause: Error) {
304
+ constructor(cause: Error, { method }: { method?: string } = {}) {
305
305
  super(cause, {
306
306
  code: MethodNotSupportedRpcError.code,
307
- shortMessage: 'Method is not implemented.',
307
+ shortMessage: `Method${method ? ` "${method}"` : ''} is not implemented.`,
308
308
  })
309
309
  }
310
310
  }
@@ -409,10 +409,10 @@ export class UnsupportedProviderMethodError extends ProviderRpcError {
409
409
  override name = 'UnsupportedProviderMethodError'
410
410
  static code = 4200 as const
411
411
 
412
- constructor(cause: Error) {
412
+ constructor(cause: Error, { method }: { method?: string } = {}) {
413
413
  super(cause, {
414
414
  code: UnsupportedProviderMethodError.code,
415
- shortMessage: 'The Provider does not support the requested method.',
415
+ shortMessage: `The Provider does not support the requested method${method ? ` " ${method}"` : ''}.`,
416
416
  })
417
417
  }
418
418
  }
package/errors/version.ts CHANGED
@@ -1 +1 @@
1
- export const version = '2.17.11'
1
+ export const version = '2.18.0'
package/index.ts CHANGED
@@ -439,9 +439,9 @@ export type {
439
439
  WatchAssetReturnType,
440
440
  } from './actions/wallet/watchAsset.js'
441
441
  export type {
442
- VerifyHashErrorType,
443
- VerifyHashParameters,
444
- VerifyHashReturnType,
442
+ VerifyHashErrorType as VerifyHashActionErrorType,
443
+ VerifyHashParameters as VerifyHashActionParameters,
444
+ VerifyHashReturnType as VerifyHashActionReturnType,
445
445
  } from './actions/public/verifyHash.js'
446
446
  export type {
447
447
  VerifyTypedDataErrorType as VerifyTypedDataActionErrorType,
@@ -1004,6 +1004,8 @@ export type {
1004
1004
  } from './types/misc.js'
1005
1005
  export type {
1006
1006
  AddEthereumChainParameter,
1007
+ BundlerRpcSchema,
1008
+ DebugBundlerRpcSchema,
1007
1009
  EIP1193EventMap,
1008
1010
  EIP1193Events,
1009
1011
  EIP1193Parameters,
@@ -1294,6 +1296,8 @@ export {
1294
1296
  type SerializeSignatureErrorType as SignatureToHexErrorType,
1295
1297
  /** @deprecated Use `serializeSignature` instead. */
1296
1298
  serializeSignature as signatureToHex,
1299
+ type SerializeSignatureParameters,
1300
+ type SerializeSignatureReturnType,
1297
1301
  type SerializeSignatureErrorType,
1298
1302
  serializeSignature,
1299
1303
  } from './utils/signature/serializeSignature.js'
@@ -1306,6 +1310,12 @@ export {
1306
1310
  type ToRlpErrorType,
1307
1311
  type ToRlpReturnType,
1308
1312
  } from './utils/encoding/toRlp.js'
1313
+ export {
1314
+ type VerifyHashErrorType,
1315
+ type VerifyHashParameters,
1316
+ type VerifyHashReturnType,
1317
+ verifyHash,
1318
+ } from './utils/signature/verifyHash.js'
1309
1319
  export {
1310
1320
  type VerifyMessageErrorType,
1311
1321
  type VerifyMessageParameters,
@@ -1686,3 +1696,10 @@ export {
1686
1696
  createNonceManager,
1687
1697
  nonceManager,
1688
1698
  } from './utils/nonceManager.js'
1699
+ export type {
1700
+ RpcEstimateUserOperationGasReturnType,
1701
+ RpcGetUserOperationByHashReturnType,
1702
+ RpcUserOperation,
1703
+ RpcUserOperationReceipt,
1704
+ RpcUserOperationRequest,
1705
+ } from './account-abstraction/types/rpc.js'
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "viem",
3
3
  "description": "TypeScript Interface for Ethereum",
4
- "version": "2.17.11",
4
+ "version": "2.18.0",
5
5
  "main": "./_cjs/index.js",
6
6
  "module": "./_esm/index.js",
7
7
  "types": "./_types/index.d.ts",
@@ -24,6 +24,11 @@
24
24
  "import": "./_esm/index.js",
25
25
  "default": "./_cjs/index.js"
26
26
  },
27
+ "./account-abstraction": {
28
+ "types": "./_types/account-abstraction/index.d.ts",
29
+ "import": "./_esm/account-abstraction/index.js",
30
+ "default": "./_cjs/account-abstraction/index.js"
31
+ },
27
32
  "./accounts": {
28
33
  "types": "./_types/accounts/index.d.ts",
29
34
  "import": "./_esm/accounts/index.js",
@@ -163,6 +168,7 @@
163
168
  "@scure/bip39": "1.3.0",
164
169
  "abitype": "1.0.5",
165
170
  "isows": "1.0.4",
171
+ "webauthn-p256": "0.0.5",
166
172
  "ws": "8.17.1"
167
173
  },
168
174
  "license": "MIT",
package/types/eip1193.ts CHANGED
@@ -1,5 +1,11 @@
1
1
  import type { Address } from 'abitype'
2
2
 
3
+ import type {
4
+ RpcEstimateUserOperationGasReturnType,
5
+ RpcGetUserOperationByHashReturnType,
6
+ RpcUserOperation,
7
+ RpcUserOperationReceipt,
8
+ } from '../account-abstraction/types/rpc.js'
3
9
  import type { BlockTag } from './block.js'
4
10
  import type { Hash, Hex, LogTopic } from './misc.js'
5
11
  import type { RpcStateOverride } from './rpc.js'
@@ -16,12 +22,17 @@ import type {
16
22
  RpcTransactionRequest as TransactionRequest,
17
23
  RpcUncle as Uncle,
18
24
  } from './rpc.js'
19
- import type { ExactPartial, OneOf, Prettify } from './utils.js'
25
+ import type { ExactPartial, OneOf, PartialBy, Prettify } from './utils.js'
20
26
 
21
27
  //////////////////////////////////////////////////
22
28
  // Provider
23
29
 
24
- export type EIP1474Methods = [...PublicRpcSchema, ...WalletRpcSchema]
30
+ export type EIP1474Methods = [
31
+ ...PublicRpcSchema,
32
+ ...WalletRpcSchema,
33
+ ...BundlerRpcSchema,
34
+ ...PaymasterRpcSchema,
35
+ ]
25
36
 
26
37
  export type EIP1193Provider = Prettify<
27
38
  EIP1193Events & {
@@ -228,6 +239,307 @@ export type WatchAssetParams = {
228
239
  }
229
240
  }
230
241
 
242
+ export type BundlerRpcSchema = [
243
+ /**
244
+ * @description Returns the chain ID associated with the current network
245
+ *
246
+ * @link https://eips.ethereum.org/EIPS/eip-4337#-eth_chainid
247
+ */
248
+ {
249
+ Method: 'eth_chainId'
250
+ Parameters?: undefined
251
+ ReturnType: Hex
252
+ },
253
+ /**
254
+ * @description Estimate the gas values for a UserOperation.
255
+ *
256
+ * @link https://eips.ethereum.org/EIPS/eip-4337#-eth_estimateuseroperationgas
257
+ *
258
+ * @example
259
+ * provider.request({
260
+ * method: 'eth_estimateUserOperationGas',
261
+ * params: [{ ... }]
262
+ * })
263
+ * // => { ... }
264
+ */
265
+ {
266
+ Method: 'eth_estimateUserOperationGas'
267
+ Parameters:
268
+ | [userOperation: RpcUserOperation, entrypoint: Address]
269
+ | [
270
+ userOperation: RpcUserOperation,
271
+ entrypoint: Address,
272
+ stateOverrideSet: RpcStateOverride,
273
+ ]
274
+ ReturnType: RpcEstimateUserOperationGasReturnType
275
+ },
276
+ /**
277
+ * @description Return a UserOperation based on a hash.
278
+ *
279
+ * @link https://eips.ethereum.org/EIPS/eip-4337#-eth_getuseroperationbyhash
280
+ *
281
+ * @example
282
+ * provider.request({
283
+ * method: 'eth_getUserOperationByHash',
284
+ * params: ['0x...']
285
+ * })
286
+ * // => { ... }
287
+ */
288
+ {
289
+ Method: 'eth_getUserOperationByHash'
290
+ Parameters: [hash: Hash]
291
+ ReturnType: RpcGetUserOperationByHashReturnType | null
292
+ },
293
+ /**
294
+ * @description Return a UserOperation receipt based on a hash.
295
+ *
296
+ * @link https://eips.ethereum.org/EIPS/eip-4337#-eth_getuseroperationreceipt
297
+ *
298
+ * @example
299
+ * provider.request({
300
+ * method: 'eth_getUserOperationReceipt',
301
+ * params: ['0x...']
302
+ * })
303
+ * // => { ... }
304
+ */
305
+ {
306
+ Method: 'eth_getUserOperationReceipt'
307
+ Parameters: [hash: Hash]
308
+ ReturnType: RpcUserOperationReceipt | null
309
+ },
310
+ /**
311
+ * @description Submits a User Operation object to the User Operation pool of the client.
312
+ *
313
+ * @link https://eips.ethereum.org/EIPS/eip-4337#-eth_senduseroperation
314
+ *
315
+ * @example
316
+ * provider.request({
317
+ * method: 'eth_sendUserOperation',
318
+ * params: [{ ... }]
319
+ * })
320
+ * // => '0x...'
321
+ */
322
+ {
323
+ Method: 'eth_sendUserOperation'
324
+ Parameters: [userOperation: RpcUserOperation, entrypoint: Address]
325
+ ReturnType: Hash
326
+ },
327
+ /**
328
+ * @description Return the list of supported entry points by the client.
329
+ *
330
+ * @link https://eips.ethereum.org/EIPS/eip-4337#-eth_supportedentrypoints
331
+ */
332
+ {
333
+ Method: 'eth_supportedEntryPoints'
334
+ Parameters?: undefined
335
+ ReturnType: readonly Address[]
336
+ },
337
+ ]
338
+
339
+ export type DebugBundlerRpcSchema = [
340
+ /**
341
+ * @description Clears the bundler mempool and reputation data of paymasters/accounts/factories/aggregators.
342
+ *
343
+ * @link https://github.com/eth-infinitism/bundler-spec/blob/a247b5de59a702063ea5b09d6136f119a061642b/src/debug/debug.yaml#L1
344
+ */
345
+ {
346
+ Method: 'debug_bundler_clearState'
347
+ Parameters?: undefined
348
+ ReturnType: undefined
349
+ },
350
+ /**
351
+ * @description Returns the current mempool
352
+ *
353
+ * @link https://github.com/eth-infinitism/bundler-spec/blob/a247b5de59a702063ea5b09d6136f119a061642b/src/debug/debug.yaml#L8
354
+ */
355
+ {
356
+ Method: 'debug_bundler_dumpMempool'
357
+ Parameters: [entryPoint: Address]
358
+ ReturnType: readonly { userOp: RpcUserOperation }[]
359
+ },
360
+ /**
361
+ * @description Forces the bundler to execute the entire current mempool.
362
+ *
363
+ * @link https://github.com/eth-infinitism/bundler-spec/blob/a247b5de59a702063ea5b09d6136f119a061642b/src/debug/debug.yaml#L19
364
+ */
365
+ {
366
+ Method: 'debug_bundler_sendBundleNow'
367
+ Parameters?: undefined
368
+ ReturnType: Hash
369
+ },
370
+ /**
371
+ * @description Toggles bundling mode between 'auto' and 'manual'
372
+ *
373
+ * @link https://github.com/eth-infinitism/bundler-spec/blob/a247b5de59a702063ea5b09d6136f119a061642b/src/debug/debug.yaml#L26
374
+ */
375
+ {
376
+ Method: 'debug_bundler_setBundlingMode'
377
+ Parameters: [mode: 'auto' | 'manual']
378
+ ReturnType: undefined
379
+ },
380
+ /**
381
+ * @description Sets reputation of given addresses.
382
+ *
383
+ * @link https://github.com/eth-infinitism/bundler-spec/blob/a247b5de59a702063ea5b09d6136f119a061642b/src/debug/debug.yaml#L37
384
+ */
385
+ {
386
+ Method: 'debug_bundler_setReputation'
387
+ Parameters: [
388
+ reputations: readonly {
389
+ address: Address
390
+ opsSeen: Hex
391
+ opsIncluded: Hex
392
+ }[],
393
+ entryPoint: Address,
394
+ ]
395
+ ReturnType: undefined
396
+ },
397
+ /**
398
+ * @description Returns the reputation data of all observed addresses.
399
+ *
400
+ * @link https://github.com/eth-infinitism/bundler-spec/blob/a247b5de59a702063ea5b09d6136f119a061642b/src/debug/debug.yaml#L52
401
+ */
402
+ {
403
+ Method: 'debug_bundler_dumpReputation'
404
+ Parameters: [entryPoint: Address]
405
+ ReturnType: readonly {
406
+ address: Address
407
+ opsSeen: Hex
408
+ opsIncluded: Hex
409
+ }[]
410
+ },
411
+ /**
412
+ * @description Add a bulk of UserOps into the mempool
413
+ *
414
+ * @link https://github.com/eth-infinitism/bundler-spec/blob/a247b5de59a702063ea5b09d6136f119a061642b/src/debug/debug.yaml#L64
415
+ */
416
+ {
417
+ Method: 'debug_bundler_addUserOps'
418
+ Parameters: [userOps: readonly RpcUserOperation[], entryPoint: Address]
419
+ ReturnType: undefined
420
+ },
421
+ ]
422
+
423
+ export type PaymasterRpcSchema = [
424
+ /**
425
+ * @description Returns the chain ID associated with the current network
426
+ *
427
+ * @link https://eips.ethereum.org/EIPS/eip-4337#-eth_chainid
428
+ */
429
+ {
430
+ Method: 'pm_getPaymasterStubData'
431
+ Parameters?: [
432
+ userOperation: OneOf<
433
+ | PartialBy<
434
+ Pick<
435
+ RpcUserOperation<'0.6'>,
436
+ | 'callData'
437
+ | 'callGasLimit'
438
+ | 'initCode'
439
+ | 'maxFeePerGas'
440
+ | 'maxPriorityFeePerGas'
441
+ | 'nonce'
442
+ | 'sender'
443
+ | 'preVerificationGas'
444
+ | 'verificationGasLimit'
445
+ >,
446
+ | 'callGasLimit'
447
+ | 'initCode'
448
+ | 'maxFeePerGas'
449
+ | 'maxPriorityFeePerGas'
450
+ | 'preVerificationGas'
451
+ | 'verificationGasLimit'
452
+ >
453
+ | PartialBy<
454
+ Pick<
455
+ RpcUserOperation<'0.7'>,
456
+ | 'callData'
457
+ | 'callGasLimit'
458
+ | 'factory'
459
+ | 'factoryData'
460
+ | 'maxFeePerGas'
461
+ | 'maxPriorityFeePerGas'
462
+ | 'nonce'
463
+ | 'sender'
464
+ | 'preVerificationGas'
465
+ | 'verificationGasLimit'
466
+ >,
467
+ | 'callGasLimit'
468
+ | 'factory'
469
+ | 'factoryData'
470
+ | 'maxFeePerGas'
471
+ | 'maxPriorityFeePerGas'
472
+ | 'preVerificationGas'
473
+ | 'verificationGasLimit'
474
+ >
475
+ >,
476
+ entrypoint: Address,
477
+ chainId: Hex,
478
+ context: unknown,
479
+ ]
480
+ ReturnType: OneOf<
481
+ | { paymasterAndData: Hex }
482
+ | {
483
+ paymaster: Address
484
+ paymasterData: Hex
485
+ paymasterVerificationGasLimit: Hex
486
+ paymasterPostOpGasLimit: Hex
487
+ }
488
+ > & {
489
+ sponsor?: { name: string; icon?: string | undefined } | undefined
490
+ isFinal?: boolean | undefined
491
+ }
492
+ },
493
+ /**
494
+ * @description Returns values to be used in paymaster-related fields of a signed user operation.
495
+ *
496
+ * @link https://github.com/ethereum/ERCs/blob/master/ERCS/erc-7677.md#pm_getpaymasterdata
497
+ */
498
+ {
499
+ Method: 'pm_getPaymasterData'
500
+ Parameters?: [
501
+ userOperation:
502
+ | Pick<
503
+ RpcUserOperation<'0.6'>,
504
+ | 'callData'
505
+ | 'callGasLimit'
506
+ | 'initCode'
507
+ | 'maxFeePerGas'
508
+ | 'maxPriorityFeePerGas'
509
+ | 'nonce'
510
+ | 'sender'
511
+ | 'preVerificationGas'
512
+ | 'verificationGasLimit'
513
+ >
514
+ | Pick<
515
+ RpcUserOperation<'0.7'>,
516
+ | 'callData'
517
+ | 'callGasLimit'
518
+ | 'factory'
519
+ | 'factoryData'
520
+ | 'maxFeePerGas'
521
+ | 'maxPriorityFeePerGas'
522
+ | 'nonce'
523
+ | 'sender'
524
+ | 'preVerificationGas'
525
+ | 'verificationGasLimit'
526
+ >,
527
+ entrypoint: Address,
528
+ chainId: Hex,
529
+ context: unknown,
530
+ ]
531
+ ReturnType: OneOf<
532
+ | { paymasterAndData: Hex }
533
+ | {
534
+ paymaster: Address
535
+ paymasterData: Hex
536
+ paymasterVerificationGasLimit: Hex
537
+ paymasterPostOpGasLimit: Hex
538
+ }
539
+ >
540
+ },
541
+ ]
542
+
231
543
  export type PublicRpcSchema = [
232
544
  /**
233
545
  * @description Returns the version of the current client
@@ -127,7 +127,7 @@ export type MulticallResponse<
127
127
  : result
128
128
 
129
129
  // infer contract parameters from `unknown`
130
- type GetMulticallContractParameters<
130
+ export type GetMulticallContractParameters<
131
131
  contract,
132
132
  mutability extends AbiStateMutability,
133
133
  > = contract extends { abi: infer abi extends Abi } // 1. Check if `abi` is const-asserted or defined inline
@@ -129,7 +129,7 @@ export function buildRequest<request extends (args: any) => Promise<any>>(
129
129
  throw new InvalidRequestRpcError(err)
130
130
  // -32601
131
131
  case MethodNotFoundRpcError.code:
132
- throw new MethodNotFoundRpcError(err)
132
+ throw new MethodNotFoundRpcError(err, { method: args.method })
133
133
  // -32602
134
134
  case InvalidParamsRpcError.code:
135
135
  throw new InvalidParamsRpcError(err)
@@ -150,7 +150,9 @@ export function buildRequest<request extends (args: any) => Promise<any>>(
150
150
  throw new TransactionRejectedRpcError(err)
151
151
  // -32004
152
152
  case MethodNotSupportedRpcError.code:
153
- throw new MethodNotSupportedRpcError(err)
153
+ throw new MethodNotSupportedRpcError(err, {
154
+ method: args.method,
155
+ })
154
156
  // -32005
155
157
  case LimitExceededRpcError.code:
156
158
  throw new LimitExceededRpcError(err)
@@ -71,12 +71,11 @@ export function getNodeError(
71
71
  (e) => (e as { code: number }).code === ExecutionRevertedError.code,
72
72
  )
73
73
  : err
74
- if (executionRevertedError instanceof BaseError) {
74
+ if (executionRevertedError instanceof BaseError)
75
75
  return new ExecutionRevertedError({
76
76
  cause: err,
77
77
  message: executionRevertedError.details,
78
78
  }) as any
79
- }
80
79
  if (ExecutionRevertedError.nodeMessage.test(message))
81
80
  return new ExecutionRevertedError({
82
81
  cause: err,
package/utils/index.ts CHANGED
@@ -434,6 +434,12 @@ export {
434
434
  type RecoverTypedDataAddressReturnType,
435
435
  recoverTypedDataAddress,
436
436
  } from './signature/recoverTypedDataAddress.js'
437
+ export {
438
+ type VerifyHashErrorType,
439
+ type VerifyHashParameters,
440
+ type VerifyHashReturnType,
441
+ verifyHash,
442
+ } from './signature/verifyHash.js'
437
443
  export {
438
444
  type VerifyMessageErrorType,
439
445
  type VerifyMessageParameters,
@@ -109,7 +109,7 @@ export function hashStruct({
109
109
  }: {
110
110
  data: Record<string, unknown>
111
111
  primaryType: string
112
- types: Record<string, MessageTypeProperty[]>
112
+ types: Record<string, readonly MessageTypeProperty[]>
113
113
  }) {
114
114
  const encoded = encodeData({
115
115
  data,
@@ -132,7 +132,7 @@ function encodeData({
132
132
  }: {
133
133
  data: Record<string, unknown>
134
134
  primaryType: string
135
- types: Record<string, MessageTypeProperty[]>
135
+ types: Record<string, readonly MessageTypeProperty[]>
136
136
  }) {
137
137
  const encodedTypes: AbiParameter[] = [{ type: 'bytes32' }]
138
138
  const encodedValues: unknown[] = [hashType({ primaryType, types })]
@@ -162,7 +162,7 @@ function hashType({
162
162
  types,
163
163
  }: {
164
164
  primaryType: string
165
- types: Record<string, MessageTypeProperty[]>
165
+ types: Record<string, readonly MessageTypeProperty[]>
166
166
  }) {
167
167
  const encodedHashType = toHex(encodeType({ primaryType, types }))
168
168
  return keccak256(encodedHashType)
@@ -175,7 +175,7 @@ export function encodeType({
175
175
  types,
176
176
  }: {
177
177
  primaryType: string
178
- types: Record<string, MessageTypeProperty[]>
178
+ types: Record<string, readonly MessageTypeProperty[]>
179
179
  }) {
180
180
  let result = ''
181
181
  const unsortedDeps = findTypeDependencies({ primaryType, types })
@@ -199,7 +199,7 @@ function findTypeDependencies(
199
199
  types,
200
200
  }: {
201
201
  primaryType: string
202
- types: Record<string, MessageTypeProperty[]>
202
+ types: Record<string, readonly MessageTypeProperty[]>
203
203
  },
204
204
  results: Set<string> = new Set(),
205
205
  ): Set<string> {
@@ -229,7 +229,7 @@ function encodeField({
229
229
  type,
230
230
  value,
231
231
  }: {
232
- types: Record<string, MessageTypeProperty[]>
232
+ types: Record<string, readonly MessageTypeProperty[]>
233
233
  name: string
234
234
  type: string
235
235
  value: any
@@ -1,20 +1,26 @@
1
1
  import type { Address } from 'abitype'
2
2
  import { erc6492MagicBytes } from '../../constants/bytes.js'
3
3
  import type { ErrorType } from '../../errors/utils.js'
4
- import type { Hex } from '../../types/misc.js'
4
+ import type { ByteArray, Hex } from '../../types/misc.js'
5
5
  import { encodeAbiParameters } from '../abi/encodeAbiParameters.js'
6
6
  import { concatHex } from '../data/concat.js'
7
+ import { hexToBytes } from '../encoding/toBytes.js'
7
8
 
8
- export type SerializeErc6492SignatureParameters = {
9
+ type To = 'bytes' | 'hex'
10
+
11
+ export type SerializeErc6492SignatureParameters<to extends To = 'hex'> = {
9
12
  /** The ERC-4337 Account Factory address to use for counterfactual verification. */
10
13
  address: Address
11
14
  /** Calldata to pass to deploy account (if not deployed) for counterfactual verification. */
12
15
  data: Hex
13
16
  /** The original signature. */
14
17
  signature: Hex
18
+ to?: to | To | undefined
15
19
  }
16
20
 
17
- export type SerializeErc6492SignatureReturnType = Hex
21
+ export type SerializeErc6492SignatureReturnType<to extends To = 'hex'> =
22
+ | (to extends 'hex' ? Hex : never)
23
+ | (to extends 'bytes' ? ByteArray : never)
18
24
 
19
25
  export type SerializeErc6492SignatureErrorType = ErrorType
20
26
 
@@ -28,15 +34,18 @@ export type SerializeErc6492SignatureErrorType = ErrorType
28
34
  * serializeSignature({ address: '0x...', data: '0x...', signature: '0x...' })
29
35
  * // '0x000000000000000000000000cafebabecafebabecafebabecafebabecafebabe000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000004deadbeef000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000041a461f509887bd19e312c0c58467ce8ff8e300d3c1a90b608a760c5b80318eaf15fe57c96f9175d6cd4daad4663763baa7e78836e067d0163e9a2ccf2ff753f5b1b000000000000000000000000000000000000000000000000000000000000006492649264926492649264926492649264926492649264926492649264926492'
30
36
  */
31
- export function serializeErc6492Signature(
32
- parameters: SerializeErc6492SignatureParameters,
33
- ): SerializeErc6492SignatureReturnType {
34
- const { address, data, signature } = parameters
35
- return concatHex([
37
+ export function serializeErc6492Signature<to extends To = 'hex'>(
38
+ parameters: SerializeErc6492SignatureParameters<to>,
39
+ ): SerializeErc6492SignatureReturnType<to> {
40
+ const { address, data, signature, to = 'hex' } = parameters
41
+ const signature_ = concatHex([
36
42
  encodeAbiParameters(
37
43
  [{ type: 'address' }, { type: 'bytes' }, { type: 'bytes' }],
38
44
  [address, data, signature],
39
45
  ),
40
46
  erc6492MagicBytes,
41
47
  ])
48
+
49
+ if (to === 'hex') return signature_ as SerializeErc6492SignatureReturnType<to>
50
+ return hexToBytes(signature_) as SerializeErc6492SignatureReturnType<to>
42
51
  }