viem 2.17.11 → 2.18.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (470) hide show
  1. package/CHANGELOG.md +20 -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.map +1 -1
  75. package/_cjs/accounts/privateKeyToAccount.js +4 -0
  76. package/_cjs/accounts/privateKeyToAccount.js.map +1 -1
  77. package/_cjs/accounts/toAccount.js +1 -0
  78. package/_cjs/accounts/toAccount.js.map +1 -1
  79. package/_cjs/accounts/utils/parseAccount.js.map +1 -1
  80. package/_cjs/accounts/utils/sign.js +8 -2
  81. package/_cjs/accounts/utils/sign.js.map +1 -1
  82. package/_cjs/accounts/utils/signMessage.js +1 -3
  83. package/_cjs/accounts/utils/signMessage.js.map +1 -1
  84. package/_cjs/accounts/utils/signTypedData.js +2 -3
  85. package/_cjs/accounts/utils/signTypedData.js.map +1 -1
  86. package/_cjs/actions/public/getLogs.js +2 -1
  87. package/_cjs/actions/public/getLogs.js.map +1 -1
  88. package/_cjs/actions/wallet/sendTransaction.js +35 -22
  89. package/_cjs/actions/wallet/sendTransaction.js.map +1 -1
  90. package/_cjs/actions/wallet/signMessage.js +1 -1
  91. package/_cjs/actions/wallet/signMessage.js.map +1 -1
  92. package/_cjs/actions/wallet/signTransaction.js +1 -2
  93. package/_cjs/actions/wallet/signTransaction.js.map +1 -1
  94. package/_cjs/actions/wallet/signTypedData.js +1 -1
  95. package/_cjs/actions/wallet/signTypedData.js.map +1 -1
  96. package/_cjs/chains/definitions/bobaSepolia.js +1 -0
  97. package/_cjs/chains/definitions/bobaSepolia.js.map +1 -1
  98. package/_cjs/chains/definitions/cronoszkEVMTestnet.js +24 -0
  99. package/_cjs/chains/definitions/cronoszkEVMTestnet.js.map +1 -0
  100. package/_cjs/chains/index.js +8 -6
  101. package/_cjs/chains/index.js.map +1 -1
  102. package/_cjs/constants/abis.js +0 -3
  103. package/_cjs/constants/abis.js.map +1 -1
  104. package/_cjs/constants/address.js +3 -1
  105. package/_cjs/constants/address.js.map +1 -1
  106. package/_cjs/errors/account.js +17 -2
  107. package/_cjs/errors/account.js.map +1 -1
  108. package/_cjs/errors/contract.js +1 -1
  109. package/_cjs/errors/contract.js.map +1 -1
  110. package/_cjs/errors/rpc.js +6 -6
  111. package/_cjs/errors/rpc.js.map +1 -1
  112. package/_cjs/errors/version.js +1 -1
  113. package/_cjs/errors/version.js.map +1 -1
  114. package/_cjs/index.js +5 -3
  115. package/_cjs/index.js.map +1 -1
  116. package/_cjs/types/eip1193.js.map +1 -1
  117. package/_cjs/utils/abi/parseEventLogs.js +70 -2
  118. package/_cjs/utils/abi/parseEventLogs.js.map +1 -1
  119. package/_cjs/utils/buildRequest.js +4 -2
  120. package/_cjs/utils/buildRequest.js.map +1 -1
  121. package/_cjs/utils/errors/getNodeError.js +1 -2
  122. package/_cjs/utils/errors/getNodeError.js.map +1 -1
  123. package/_cjs/utils/index.js +3 -1
  124. package/_cjs/utils/index.js.map +1 -1
  125. package/_cjs/utils/signature/serializeErc6492Signature.js +6 -2
  126. package/_cjs/utils/signature/serializeErc6492Signature.js.map +1 -1
  127. package/_cjs/utils/signature/serializeSignature.js +6 -2
  128. package/_cjs/utils/signature/serializeSignature.js.map +1 -1
  129. package/_cjs/utils/signature/verifyHash.js +10 -0
  130. package/_cjs/utils/signature/verifyHash.js.map +1 -0
  131. package/_esm/account-abstraction/accounts/createWebAuthnCredential.js +3 -0
  132. package/_esm/account-abstraction/accounts/createWebAuthnCredential.js.map +1 -0
  133. package/_esm/account-abstraction/accounts/implementations/toCoinbaseSmartAccount.js +709 -0
  134. package/_esm/account-abstraction/accounts/implementations/toCoinbaseSmartAccount.js.map +1 -0
  135. package/_esm/account-abstraction/accounts/implementations/toSoladySmartAccount.js +718 -0
  136. package/_esm/account-abstraction/accounts/implementations/toSoladySmartAccount.js.map +1 -0
  137. package/_esm/account-abstraction/accounts/toSmartAccount.js +96 -0
  138. package/_esm/account-abstraction/accounts/toSmartAccount.js.map +1 -0
  139. package/_esm/account-abstraction/accounts/toWebAuthnAccount.js +26 -0
  140. package/_esm/account-abstraction/accounts/toWebAuthnAccount.js.map +1 -0
  141. package/_esm/account-abstraction/accounts/types.js +2 -0
  142. package/_esm/account-abstraction/accounts/types.js.map +1 -0
  143. package/_esm/account-abstraction/actions/bundler/estimateUserOperationGas.js +61 -0
  144. package/_esm/account-abstraction/actions/bundler/estimateUserOperationGas.js.map +1 -0
  145. package/_esm/account-abstraction/actions/bundler/getSupportedEntryPoints.js +25 -0
  146. package/_esm/account-abstraction/actions/bundler/getSupportedEntryPoints.js.map +1 -0
  147. package/_esm/account-abstraction/actions/bundler/getUserOperation.js +42 -0
  148. package/_esm/account-abstraction/actions/bundler/getUserOperation.js.map +1 -0
  149. package/_esm/account-abstraction/actions/bundler/getUserOperationReceipt.js +35 -0
  150. package/_esm/account-abstraction/actions/bundler/getUserOperationReceipt.js.map +1 -0
  151. package/_esm/account-abstraction/actions/bundler/prepareUserOperation.js +323 -0
  152. package/_esm/account-abstraction/actions/bundler/prepareUserOperation.js.map +1 -0
  153. package/_esm/account-abstraction/actions/bundler/sendUserOperation.js +60 -0
  154. package/_esm/account-abstraction/actions/bundler/sendUserOperation.js.map +1 -0
  155. package/_esm/account-abstraction/actions/bundler/waitForUserOperationReceipt.js +68 -0
  156. package/_esm/account-abstraction/actions/bundler/waitForUserOperationReceipt.js.map +1 -0
  157. package/_esm/account-abstraction/actions/paymaster/getPaymasterData.js +56 -0
  158. package/_esm/account-abstraction/actions/paymaster/getPaymasterData.js.map +1 -0
  159. package/_esm/account-abstraction/actions/paymaster/getPaymasterStubData.js +56 -0
  160. package/_esm/account-abstraction/actions/paymaster/getPaymasterStubData.js.map +1 -0
  161. package/_esm/account-abstraction/clients/createBundlerClient.js +15 -0
  162. package/_esm/account-abstraction/clients/createBundlerClient.js.map +1 -0
  163. package/_esm/account-abstraction/clients/createPaymasterClient.js +14 -0
  164. package/_esm/account-abstraction/clients/createPaymasterClient.js.map +1 -0
  165. package/_esm/account-abstraction/clients/decorators/bundler.js +21 -0
  166. package/_esm/account-abstraction/clients/decorators/bundler.js.map +1 -0
  167. package/_esm/account-abstraction/clients/decorators/paymaster.js +9 -0
  168. package/_esm/account-abstraction/clients/decorators/paymaster.js.map +1 -0
  169. package/_esm/account-abstraction/constants/abis.js +1315 -0
  170. package/_esm/account-abstraction/constants/abis.js.map +1 -0
  171. package/_esm/account-abstraction/constants/address.js +3 -0
  172. package/_esm/account-abstraction/constants/address.js.map +1 -0
  173. package/_esm/account-abstraction/errors/bundler.js +774 -0
  174. package/_esm/account-abstraction/errors/bundler.js.map +1 -0
  175. package/_esm/account-abstraction/errors/userOperation.js +84 -0
  176. package/_esm/account-abstraction/errors/userOperation.js.map +1 -0
  177. package/_esm/account-abstraction/index.js +31 -0
  178. package/_esm/account-abstraction/index.js.map +1 -0
  179. package/_esm/account-abstraction/types/account.js +2 -0
  180. package/_esm/account-abstraction/types/account.js.map +1 -0
  181. package/_esm/account-abstraction/types/entryPointVersion.js +2 -0
  182. package/_esm/account-abstraction/types/entryPointVersion.js.map +1 -0
  183. package/_esm/account-abstraction/types/rpc.js +2 -0
  184. package/_esm/account-abstraction/types/rpc.js.map +1 -0
  185. package/_esm/account-abstraction/types/userOperation.js +2 -0
  186. package/_esm/account-abstraction/types/userOperation.js.map +1 -0
  187. package/_esm/account-abstraction/utils/errors/getBundlerError.js +183 -0
  188. package/_esm/account-abstraction/utils/errors/getBundlerError.js.map +1 -0
  189. package/_esm/account-abstraction/utils/errors/getUserOperationError.js +85 -0
  190. package/_esm/account-abstraction/utils/errors/getUserOperationError.js.map +1 -0
  191. package/_esm/account-abstraction/utils/formatters/userOperation.js +21 -0
  192. package/_esm/account-abstraction/utils/formatters/userOperation.js.map +1 -0
  193. package/_esm/account-abstraction/utils/formatters/userOperationGas.js +15 -0
  194. package/_esm/account-abstraction/utils/formatters/userOperationGas.js.map +1 -0
  195. package/_esm/account-abstraction/utils/formatters/userOperationReceipt.js +15 -0
  196. package/_esm/account-abstraction/utils/formatters/userOperationReceipt.js.map +1 -0
  197. package/_esm/account-abstraction/utils/formatters/userOperationRequest.js +40 -0
  198. package/_esm/account-abstraction/utils/formatters/userOperationRequest.js.map +1 -0
  199. package/_esm/account-abstraction/utils/userOperation/getUserOperationHash.js +85 -0
  200. package/_esm/account-abstraction/utils/userOperation/getUserOperationHash.js.map +1 -0
  201. package/_esm/account-abstraction/utils/userOperation/toPackedUserOperation.js +41 -0
  202. package/_esm/account-abstraction/utils/userOperation/toPackedUserOperation.js.map +1 -0
  203. package/_esm/accounts/index.js.map +1 -1
  204. package/_esm/accounts/privateKeyToAccount.js +4 -0
  205. package/_esm/accounts/privateKeyToAccount.js.map +1 -1
  206. package/_esm/accounts/toAccount.js +2 -0
  207. package/_esm/accounts/toAccount.js.map +1 -1
  208. package/_esm/accounts/utils/parseAccount.js.map +1 -1
  209. package/_esm/accounts/utils/sign.js +9 -3
  210. package/_esm/accounts/utils/sign.js.map +1 -1
  211. package/_esm/accounts/utils/signMessage.js +1 -3
  212. package/_esm/accounts/utils/signMessage.js.map +1 -1
  213. package/_esm/accounts/utils/signTypedData.js +2 -3
  214. package/_esm/accounts/utils/signTypedData.js.map +1 -1
  215. package/_esm/actions/public/getLogs.js +2 -1
  216. package/_esm/actions/public/getLogs.js.map +1 -1
  217. package/_esm/actions/wallet/sendTransaction.js +37 -24
  218. package/_esm/actions/wallet/sendTransaction.js.map +1 -1
  219. package/_esm/actions/wallet/signMessage.js +1 -1
  220. package/_esm/actions/wallet/signMessage.js.map +1 -1
  221. package/_esm/actions/wallet/signTransaction.js +1 -2
  222. package/_esm/actions/wallet/signTransaction.js.map +1 -1
  223. package/_esm/actions/wallet/signTypedData.js +1 -1
  224. package/_esm/actions/wallet/signTypedData.js.map +1 -1
  225. package/_esm/chains/definitions/bobaSepolia.js +1 -0
  226. package/_esm/chains/definitions/bobaSepolia.js.map +1 -1
  227. package/_esm/chains/definitions/cronoszkEVMTestnet.js +21 -0
  228. package/_esm/chains/definitions/cronoszkEVMTestnet.js.map +1 -0
  229. package/_esm/chains/index.js +1 -0
  230. package/_esm/chains/index.js.map +1 -1
  231. package/_esm/constants/abis.js +0 -3
  232. package/_esm/constants/abis.js.map +1 -1
  233. package/_esm/constants/address.js +2 -0
  234. package/_esm/constants/address.js.map +1 -1
  235. package/_esm/errors/account.js +15 -1
  236. package/_esm/errors/account.js.map +1 -1
  237. package/_esm/errors/contract.js +1 -1
  238. package/_esm/errors/contract.js.map +1 -1
  239. package/_esm/errors/rpc.js +6 -6
  240. package/_esm/errors/rpc.js.map +1 -1
  241. package/_esm/errors/version.js +1 -1
  242. package/_esm/errors/version.js.map +1 -1
  243. package/_esm/index.js +1 -0
  244. package/_esm/index.js.map +1 -1
  245. package/_esm/types/eip1193.js.map +1 -1
  246. package/_esm/utils/abi/parseEventLogs.js +72 -2
  247. package/_esm/utils/abi/parseEventLogs.js.map +1 -1
  248. package/_esm/utils/buildRequest.js +4 -2
  249. package/_esm/utils/buildRequest.js.map +1 -1
  250. package/_esm/utils/errors/getNodeError.js +1 -2
  251. package/_esm/utils/errors/getNodeError.js.map +1 -1
  252. package/_esm/utils/index.js +1 -0
  253. package/_esm/utils/index.js.map +1 -1
  254. package/_esm/utils/signature/serializeErc6492Signature.js +6 -2
  255. package/_esm/utils/signature/serializeErc6492Signature.js.map +1 -1
  256. package/_esm/utils/signature/serializeSignature.js +6 -2
  257. package/_esm/utils/signature/serializeSignature.js.map +1 -1
  258. package/_esm/utils/signature/verifyHash.js +19 -0
  259. package/_esm/utils/signature/verifyHash.js.map +1 -0
  260. package/_types/account-abstraction/accounts/createWebAuthnCredential.d.ts +2 -0
  261. package/_types/account-abstraction/accounts/createWebAuthnCredential.d.ts.map +1 -0
  262. package/_types/account-abstraction/accounts/implementations/toCoinbaseSmartAccount.d.ts +648 -0
  263. package/_types/account-abstraction/accounts/implementations/toCoinbaseSmartAccount.d.ts.map +1 -0
  264. package/_types/account-abstraction/accounts/implementations/toSoladySmartAccount.d.ts +464 -0
  265. package/_types/account-abstraction/accounts/implementations/toSoladySmartAccount.d.ts.map +1 -0
  266. package/_types/account-abstraction/accounts/toSmartAccount.d.ts +14 -0
  267. package/_types/account-abstraction/accounts/toSmartAccount.d.ts.map +1 -0
  268. package/_types/account-abstraction/accounts/toWebAuthnAccount.d.ts +32 -0
  269. package/_types/account-abstraction/accounts/toWebAuthnAccount.d.ts.map +1 -0
  270. package/_types/account-abstraction/accounts/types.d.ts +174 -0
  271. package/_types/account-abstraction/accounts/types.d.ts.map +1 -0
  272. package/_types/account-abstraction/actions/bundler/estimateUserOperationGas.d.ts +62 -0
  273. package/_types/account-abstraction/actions/bundler/estimateUserOperationGas.d.ts.map +1 -0
  274. package/_types/account-abstraction/actions/bundler/getSupportedEntryPoints.d.ts +30 -0
  275. package/_types/account-abstraction/actions/bundler/getSupportedEntryPoints.d.ts.map +1 -0
  276. package/_types/account-abstraction/actions/bundler/getUserOperation.d.ts +57 -0
  277. package/_types/account-abstraction/actions/bundler/getUserOperation.d.ts.map +1 -0
  278. package/_types/account-abstraction/actions/bundler/getUserOperationReceipt.d.ts +39 -0
  279. package/_types/account-abstraction/actions/bundler/getUserOperationReceipt.d.ts.map +1 -0
  280. package/_types/account-abstraction/actions/bundler/prepareUserOperation.d.ts +106 -0
  281. package/_types/account-abstraction/actions/bundler/prepareUserOperation.d.ts.map +1 -0
  282. package/_types/account-abstraction/actions/bundler/sendUserOperation.d.ts +60 -0
  283. package/_types/account-abstraction/actions/bundler/sendUserOperation.d.ts.map +1 -0
  284. package/_types/account-abstraction/actions/bundler/waitForUserOperationReceipt.d.ts +52 -0
  285. package/_types/account-abstraction/actions/bundler/waitForUserOperationReceipt.d.ts.map +1 -0
  286. package/_types/account-abstraction/actions/paymaster/getPaymasterData.d.ts +49 -0
  287. package/_types/account-abstraction/actions/paymaster/getPaymasterData.d.ts.map +1 -0
  288. package/_types/account-abstraction/actions/paymaster/getPaymasterStubData.d.ts +55 -0
  289. package/_types/account-abstraction/actions/paymaster/getPaymasterStubData.d.ts.map +1 -0
  290. package/_types/account-abstraction/clients/createBundlerClient.d.ts +66 -0
  291. package/_types/account-abstraction/clients/createBundlerClient.d.ts.map +1 -0
  292. package/_types/account-abstraction/clients/createPaymasterClient.d.ts +27 -0
  293. package/_types/account-abstraction/clients/createPaymasterClient.d.ts.map +1 -0
  294. package/_types/account-abstraction/clients/decorators/bundler.d.ts +206 -0
  295. package/_types/account-abstraction/clients/decorators/bundler.d.ts.map +1 -0
  296. package/_types/account-abstraction/clients/decorators/paymaster.d.ts +60 -0
  297. package/_types/account-abstraction/clients/decorators/paymaster.d.ts.map +1 -0
  298. package/_types/account-abstraction/constants/abis.d.ts +1468 -0
  299. package/_types/account-abstraction/constants/abis.d.ts.map +1 -0
  300. package/_types/account-abstraction/constants/address.d.ts +3 -0
  301. package/_types/account-abstraction/constants/address.d.ts.map +1 -0
  302. package/_types/account-abstraction/errors/bundler.d.ts +391 -0
  303. package/_types/account-abstraction/errors/bundler.d.ts.map +1 -0
  304. package/_types/account-abstraction/errors/userOperation.d.ts +41 -0
  305. package/_types/account-abstraction/errors/userOperation.d.ts.map +1 -0
  306. package/_types/account-abstraction/index.d.ts +34 -0
  307. package/_types/account-abstraction/index.d.ts.map +1 -0
  308. package/_types/account-abstraction/types/account.d.ts +11 -0
  309. package/_types/account-abstraction/types/account.d.ts.map +1 -0
  310. package/_types/account-abstraction/types/entryPointVersion.d.ts +9 -0
  311. package/_types/account-abstraction/types/entryPointVersion.d.ts.map +1 -0
  312. package/_types/account-abstraction/types/rpc.d.ts +9 -0
  313. package/_types/account-abstraction/types/rpc.d.ts.map +1 -0
  314. package/_types/account-abstraction/types/userOperation.d.ts +157 -0
  315. package/_types/account-abstraction/types/userOperation.d.ts.map +1 -0
  316. package/_types/account-abstraction/utils/errors/getBundlerError.d.ts +8 -0
  317. package/_types/account-abstraction/utils/errors/getBundlerError.d.ts.map +1 -0
  318. package/_types/account-abstraction/utils/errors/getUserOperationError.d.ts +15 -0
  319. package/_types/account-abstraction/utils/errors/getUserOperationError.d.ts.map +1 -0
  320. package/_types/account-abstraction/utils/formatters/userOperation.d.ts +6 -0
  321. package/_types/account-abstraction/utils/formatters/userOperation.d.ts.map +1 -0
  322. package/_types/account-abstraction/utils/formatters/userOperationGas.d.ts +6 -0
  323. package/_types/account-abstraction/utils/formatters/userOperationGas.d.ts.map +1 -0
  324. package/_types/account-abstraction/utils/formatters/userOperationReceipt.d.ts +6 -0
  325. package/_types/account-abstraction/utils/formatters/userOperationReceipt.d.ts.map +1 -0
  326. package/_types/account-abstraction/utils/formatters/userOperationRequest.d.ts +7 -0
  327. package/_types/account-abstraction/utils/formatters/userOperationRequest.d.ts.map +1 -0
  328. package/_types/account-abstraction/utils/userOperation/getUserOperationHash.d.ts +13 -0
  329. package/_types/account-abstraction/utils/userOperation/getUserOperationHash.d.ts.map +1 -0
  330. package/_types/account-abstraction/utils/userOperation/toPackedUserOperation.d.ts +3 -0
  331. package/_types/account-abstraction/utils/userOperation/toPackedUserOperation.d.ts.map +1 -0
  332. package/_types/accounts/index.d.ts.map +1 -1
  333. package/_types/accounts/privateKeyToAccount.d.ts +2 -1
  334. package/_types/accounts/privateKeyToAccount.d.ts.map +1 -1
  335. package/_types/accounts/toAccount.d.ts.map +1 -1
  336. package/_types/accounts/types.d.ts +14 -7
  337. package/_types/accounts/types.d.ts.map +1 -1
  338. package/_types/accounts/utils/parseAccount.d.ts +1 -1
  339. package/_types/accounts/utils/parseAccount.d.ts.map +1 -1
  340. package/_types/accounts/utils/sign.d.ts +9 -6
  341. package/_types/accounts/utils/sign.d.ts.map +1 -1
  342. package/_types/accounts/utils/signMessage.d.ts +1 -2
  343. package/_types/accounts/utils/signMessage.d.ts.map +1 -1
  344. package/_types/accounts/utils/signTypedData.d.ts +1 -2
  345. package/_types/accounts/utils/signTypedData.d.ts.map +1 -1
  346. package/_types/actions/public/getLogs.d.ts.map +1 -1
  347. package/_types/actions/wallet/sendTransaction.d.ts +2 -1
  348. package/_types/actions/wallet/sendTransaction.d.ts.map +1 -1
  349. package/_types/actions/wallet/signMessage.d.ts.map +1 -1
  350. package/_types/actions/wallet/signTransaction.d.ts.map +1 -1
  351. package/_types/chains/definitions/bobaSepolia.d.ts +1 -1
  352. package/_types/chains/definitions/bobaSepolia.d.ts.map +1 -1
  353. package/_types/chains/definitions/cronoszkEVMTestnet.d.ts +35 -0
  354. package/_types/chains/definitions/cronoszkEVMTestnet.d.ts.map +1 -0
  355. package/_types/chains/definitions/lisk.d.ts +2 -2
  356. package/_types/chains/definitions/playfiAlbireo.d.ts +2 -2
  357. package/_types/chains/definitions/zkSync.d.ts +2 -2
  358. package/_types/chains/definitions/zkSyncInMemoryNode.d.ts +2 -2
  359. package/_types/chains/definitions/zkSyncLocalNode.d.ts +2 -2
  360. package/_types/chains/definitions/zkSyncSepoliaTestnet.d.ts +2 -2
  361. package/_types/chains/definitions/zkSyncTestnet.d.ts +2 -2
  362. package/_types/chains/index.d.ts +1 -0
  363. package/_types/chains/index.d.ts.map +1 -1
  364. package/_types/clients/decorators/public.d.ts +1 -1
  365. package/_types/clients/decorators/public.d.ts.map +1 -1
  366. package/_types/constants/abis.d.ts +0 -3
  367. package/_types/constants/abis.d.ts.map +1 -1
  368. package/_types/constants/address.d.ts +2 -0
  369. package/_types/constants/address.d.ts.map +1 -1
  370. package/_types/errors/account.d.ts +11 -0
  371. package/_types/errors/account.d.ts.map +1 -1
  372. package/_types/errors/rpc.d.ts +9 -3
  373. package/_types/errors/rpc.d.ts.map +1 -1
  374. package/_types/errors/version.d.ts +1 -1
  375. package/_types/errors/version.d.ts.map +1 -1
  376. package/_types/index.d.ts +5 -3
  377. package/_types/index.d.ts.map +1 -1
  378. package/_types/types/eip1193.d.ts +239 -2
  379. package/_types/types/eip1193.d.ts.map +1 -1
  380. package/_types/types/multicall.d.ts +1 -1
  381. package/_types/types/multicall.d.ts.map +1 -1
  382. package/_types/utils/abi/parseEventLogs.d.ts +9 -3
  383. package/_types/utils/abi/parseEventLogs.d.ts.map +1 -1
  384. package/_types/utils/buildRequest.d.ts.map +1 -1
  385. package/_types/utils/errors/getNodeError.d.ts.map +1 -1
  386. package/_types/utils/formatters/transaction.d.ts +1 -1
  387. package/_types/utils/index.d.ts +1 -0
  388. package/_types/utils/index.d.ts.map +1 -1
  389. package/_types/utils/signature/hashTypedData.d.ts +2 -2
  390. package/_types/utils/signature/hashTypedData.d.ts.map +1 -1
  391. package/_types/utils/signature/serializeErc6492Signature.d.ts +7 -4
  392. package/_types/utils/signature/serializeErc6492Signature.d.ts.map +1 -1
  393. package/_types/utils/signature/serializeSignature.d.ts +8 -2
  394. package/_types/utils/signature/serializeSignature.d.ts.map +1 -1
  395. package/_types/utils/signature/verifyHash.d.ts +30 -0
  396. package/_types/utils/signature/verifyHash.d.ts.map +1 -0
  397. package/_types/zksync/chainConfig.d.ts +2 -2
  398. package/_types/zksync/formatters.d.ts +2 -2
  399. package/account-abstraction/accounts/createWebAuthnCredential.ts +7 -0
  400. package/account-abstraction/accounts/implementations/toCoinbaseSmartAccount.ts +817 -0
  401. package/account-abstraction/accounts/implementations/toSoladySmartAccount.ts +794 -0
  402. package/account-abstraction/accounts/toSmartAccount.ts +126 -0
  403. package/account-abstraction/accounts/toWebAuthnAccount.ts +56 -0
  404. package/account-abstraction/accounts/types.ts +208 -0
  405. package/account-abstraction/actions/bundler/estimateUserOperationGas.ts +170 -0
  406. package/account-abstraction/actions/bundler/getSupportedEntryPoints.ts +33 -0
  407. package/account-abstraction/actions/bundler/getUserOperation.ts +85 -0
  408. package/account-abstraction/actions/bundler/getUserOperationReceipt.ts +64 -0
  409. package/account-abstraction/actions/bundler/prepareUserOperation.ts +637 -0
  410. package/account-abstraction/actions/bundler/sendUserOperation.ts +149 -0
  411. package/account-abstraction/actions/bundler/waitForUserOperationReceipt.ts +139 -0
  412. package/account-abstraction/actions/paymaster/getPaymasterData.ts +135 -0
  413. package/account-abstraction/actions/paymaster/getPaymasterStubData.ts +138 -0
  414. package/account-abstraction/clients/createBundlerClient.ts +155 -0
  415. package/account-abstraction/clients/createPaymasterClient.ts +78 -0
  416. package/account-abstraction/clients/decorators/bundler.ts +296 -0
  417. package/account-abstraction/clients/decorators/paymaster.ts +81 -0
  418. package/account-abstraction/constants/abis.ts +1404 -0
  419. package/account-abstraction/constants/address.ts +4 -0
  420. package/account-abstraction/errors/bundler.ts +781 -0
  421. package/account-abstraction/errors/userOperation.ts +111 -0
  422. package/account-abstraction/index.ts +228 -0
  423. package/account-abstraction/package.json +6 -0
  424. package/account-abstraction/types/account.ts +21 -0
  425. package/account-abstraction/types/entryPointVersion.ts +24 -0
  426. package/account-abstraction/types/rpc.ts +29 -0
  427. package/account-abstraction/types/userOperation.ts +262 -0
  428. package/account-abstraction/utils/errors/getBundlerError.ts +309 -0
  429. package/account-abstraction/utils/errors/getUserOperationError.ts +153 -0
  430. package/account-abstraction/utils/formatters/userOperation.ts +31 -0
  431. package/account-abstraction/utils/formatters/userOperationGas.ts +26 -0
  432. package/account-abstraction/utils/formatters/userOperationReceipt.ts +24 -0
  433. package/account-abstraction/utils/formatters/userOperationRequest.ts +53 -0
  434. package/account-abstraction/utils/userOperation/getUserOperationHash.ts +138 -0
  435. package/account-abstraction/utils/userOperation/toPackedUserOperation.ts +64 -0
  436. package/accounts/index.ts +1 -0
  437. package/accounts/privateKeyToAccount.ts +5 -0
  438. package/accounts/toAccount.ts +3 -0
  439. package/accounts/types.ts +34 -12
  440. package/accounts/utils/parseAccount.ts +6 -3
  441. package/accounts/utils/sign.ts +24 -8
  442. package/accounts/utils/signMessage.ts +1 -7
  443. package/accounts/utils/signTypedData.ts +2 -7
  444. package/actions/public/getLogs.ts +2 -1
  445. package/actions/wallet/sendTransaction.ts +48 -27
  446. package/actions/wallet/signMessage.ts +2 -1
  447. package/actions/wallet/signTransaction.ts +1 -2
  448. package/actions/wallet/signTypedData.ts +1 -1
  449. package/chains/definitions/bobaSepolia.ts +1 -0
  450. package/chains/definitions/cronoszkEVMTestnet.ts +21 -0
  451. package/chains/index.ts +1 -0
  452. package/clients/decorators/public.ts +1 -1
  453. package/constants/abis.ts +0 -3
  454. package/constants/address.ts +4 -0
  455. package/errors/account.ts +22 -1
  456. package/errors/contract.ts +1 -1
  457. package/errors/rpc.ts +6 -6
  458. package/errors/version.ts +1 -1
  459. package/index.ts +20 -3
  460. package/package.json +7 -1
  461. package/types/eip1193.ts +314 -2
  462. package/types/multicall.ts +1 -1
  463. package/utils/abi/parseEventLogs.ts +103 -14
  464. package/utils/buildRequest.ts +4 -2
  465. package/utils/errors/getNodeError.ts +1 -2
  466. package/utils/index.ts +6 -0
  467. package/utils/signature/hashTypedData.ts +6 -6
  468. package/utils/signature/serializeErc6492Signature.ts +17 -8
  469. package/utils/signature/serializeSignature.ts +24 -4
  470. package/utils/signature/verifyHash.ts +54 -0
@@ -0,0 +1,126 @@
1
+ import type { Abi } from 'abitype'
2
+
3
+ import { getCode } from '../../actions/public/getCode.js'
4
+ import type { Prettify } from '../../types/utils.js'
5
+ import { getAction } from '../../utils/getAction.js'
6
+ import { createNonceManager } from '../../utils/nonceManager.js'
7
+ import { serializeErc6492Signature } from '../../utils/signature/serializeErc6492Signature.js'
8
+ import type { EntryPointVersion } from '../types/entryPointVersion.js'
9
+ import type { SmartAccount, SmartAccountImplementation } from './types.js'
10
+
11
+ export type ToSmartAccountParameters<
12
+ entryPointAbi extends Abi | readonly unknown[] = Abi,
13
+ entryPointVersion extends EntryPointVersion = EntryPointVersion,
14
+ extend extends object = object,
15
+ > = SmartAccountImplementation<entryPointAbi, entryPointVersion, extend>
16
+
17
+ export type ToSmartAccountReturnType<
18
+ implementation extends
19
+ SmartAccountImplementation = SmartAccountImplementation,
20
+ > = Prettify<SmartAccount<implementation>>
21
+
22
+ /**
23
+ * @description Creates a Smart Account with a provided account implementation.
24
+ *
25
+ * @param parameters - {@link ToSmartAccountParameters}
26
+ * @returns A Smart Account. {@link ToSmartAccountReturnType}
27
+ */
28
+ export async function toSmartAccount<
29
+ implementation extends SmartAccountImplementation,
30
+ >(
31
+ implementation: implementation,
32
+ ): Promise<ToSmartAccountReturnType<implementation>> {
33
+ const { extend, ...rest } = implementation
34
+
35
+ let deployed = false
36
+
37
+ const address = await implementation.getAddress()
38
+
39
+ const nonceKeyManager = createNonceManager({
40
+ source: {
41
+ get() {
42
+ return Date.now()
43
+ },
44
+ set() {},
45
+ },
46
+ })
47
+
48
+ return {
49
+ ...extend,
50
+ ...rest,
51
+ address,
52
+ async getFactoryArgs() {
53
+ if ('isDeployed' in this && (await this.isDeployed()))
54
+ return { factory: undefined, factoryData: undefined }
55
+ return implementation.getFactoryArgs()
56
+ },
57
+ async getNonce(parameters) {
58
+ const key =
59
+ parameters?.key ??
60
+ BigInt(
61
+ await nonceKeyManager.consume({
62
+ address,
63
+ chainId: implementation.client.chain!.id!,
64
+ client: implementation.client,
65
+ }),
66
+ )
67
+ return await implementation.getNonce({ ...parameters, key })
68
+ },
69
+ async isDeployed() {
70
+ if (deployed) return true
71
+ const code = await getAction(
72
+ implementation.client,
73
+ getCode,
74
+ 'getCode',
75
+ )({
76
+ address,
77
+ })
78
+ deployed = Boolean(code)
79
+ return deployed
80
+ },
81
+ ...(implementation.sign
82
+ ? {
83
+ async sign(parameters) {
84
+ const [{ factory, factoryData }, signature] = await Promise.all([
85
+ this.getFactoryArgs(),
86
+ implementation.sign!(parameters),
87
+ ])
88
+ if (factory && factoryData)
89
+ return serializeErc6492Signature({
90
+ address: factory,
91
+ data: factoryData,
92
+ signature,
93
+ })
94
+ return signature
95
+ },
96
+ }
97
+ : {}),
98
+ async signMessage(parameters) {
99
+ const [{ factory, factoryData }, signature] = await Promise.all([
100
+ this.getFactoryArgs(),
101
+ implementation.signMessage(parameters),
102
+ ])
103
+ if (factory && factoryData)
104
+ return serializeErc6492Signature({
105
+ address: factory,
106
+ data: factoryData,
107
+ signature,
108
+ })
109
+ return signature
110
+ },
111
+ async signTypedData(parameters) {
112
+ const [{ factory, factoryData }, signature] = await Promise.all([
113
+ this.getFactoryArgs(),
114
+ implementation.signTypedData(parameters),
115
+ ])
116
+ if (factory && factoryData)
117
+ return serializeErc6492Signature({
118
+ address: factory,
119
+ data: factoryData,
120
+ signature,
121
+ })
122
+ return signature
123
+ },
124
+ type: 'smart',
125
+ } as ToSmartAccountReturnType<implementation>
126
+ }
@@ -0,0 +1,56 @@
1
+ import { type P256Credential, type SignParameters, sign } from 'webauthn-p256'
2
+
3
+ import type { ErrorType } from '../../errors/utils.js'
4
+ import { hashMessage } from '../../utils/signature/hashMessage.js'
5
+ import { hashTypedData } from '../../utils/signature/hashTypedData.js'
6
+ import type { WebAuthnAccount } from './types.js'
7
+
8
+ export type ToWebAuthnAccountParameters = {
9
+ /**
10
+ * The WebAuthn P256 credential to use.
11
+ */
12
+ credential: {
13
+ id: P256Credential['id']
14
+ publicKey: P256Credential['publicKey']
15
+ }
16
+ /**
17
+ * Credential request function. Useful for environments that do not support
18
+ * the WebAuthn API natively (i.e. React Native or testing environments).
19
+ *
20
+ * @default window.navigator.credentials.get
21
+ */
22
+ getFn?: SignParameters['getFn'] | undefined
23
+ /**
24
+ * The relying party identifier to use.
25
+ */
26
+ rpId?: SignParameters['rpId'] | undefined
27
+ }
28
+
29
+ export type ToWebAuthnAccountReturnType = WebAuthnAccount
30
+
31
+ export type ToWebAuthnAccountErrorType = ErrorType
32
+
33
+ /**
34
+ * @description Creates an Account from a WebAuthn Credential.
35
+ *
36
+ * @returns A WebAuthn Account.
37
+ */
38
+ export function toWebAuthnAccount(
39
+ parameters: ToWebAuthnAccountParameters,
40
+ ): WebAuthnAccount {
41
+ const { getFn, rpId } = parameters
42
+ const { id, publicKey } = parameters.credential
43
+ return {
44
+ publicKey,
45
+ async sign({ hash }) {
46
+ return sign({ credentialId: id, getFn, hash, rpId })
47
+ },
48
+ async signMessage({ message }) {
49
+ return this.sign({ hash: hashMessage(message) })
50
+ },
51
+ async signTypedData(parameters) {
52
+ return this.sign({ hash: hashTypedData(parameters) })
53
+ },
54
+ type: 'webAuthn',
55
+ }
56
+ }
@@ -0,0 +1,208 @@
1
+ import type { Abi, Address, TypedData } from 'abitype'
2
+ import type { SignReturnType as WebAuthnSignReturnType } from 'webauthn-p256'
3
+
4
+ import type { Client } from '../../clients/createClient.js'
5
+ import type { Hash, Hex, SignableMessage } from '../../types/misc.js'
6
+ import type { TypedDataDefinition } from '../../types/typedData.js'
7
+ import type { Assign, ExactPartial, UnionPartialBy } from '../../types/utils.js'
8
+ import type { EntryPointVersion } from '../types/entryPointVersion.js'
9
+ import type {
10
+ EstimateUserOperationGasReturnType,
11
+ UserOperation,
12
+ UserOperationRequest,
13
+ } from '../types/userOperation.js'
14
+
15
+ type Call = {
16
+ to: Hex
17
+ data?: Hex | undefined
18
+ value?: bigint | undefined
19
+ }
20
+
21
+ export type SmartAccountImplementation<
22
+ entryPointAbi extends Abi | readonly unknown[] = Abi,
23
+ entryPointVersion extends EntryPointVersion = EntryPointVersion,
24
+ extend extends object = object,
25
+ > = {
26
+ /** Client used to retrieve Smart Account data, and perform signing (if owner is a JSON-RPC Account). */
27
+ client: Client
28
+ /** Compatible EntryPoint of the Smart Account. */
29
+ entryPoint: {
30
+ /** Compatible EntryPoint ABI. */
31
+ abi: entryPointAbi
32
+ /** Compatible EntryPoint address. */
33
+ address: Address
34
+ /** Compatible EntryPoint version. */
35
+ version: entryPointVersion
36
+ }
37
+ /** Extend the Smart Account with custom properties. */
38
+ extend?: extend | undefined
39
+ /**
40
+ * Retrieves the Smart Account's address.
41
+ *
42
+ * @example
43
+ * ```ts
44
+ * const address = await account.getAddress()
45
+ * // '0x...'
46
+ * ```
47
+ */
48
+ getAddress: () => Promise<Address>
49
+ /**
50
+ * Encodes the calls into calldata for executing a User Operation.
51
+ *
52
+ * @example
53
+ * ```ts
54
+ * const callData = await account.encodeCalls([
55
+ * { to: '0x...', data: '0x...' },
56
+ * { to: '0x...', data: '0x...', value: 100n },
57
+ * ])
58
+ * // '0x...'
59
+ * ```
60
+ */
61
+ encodeCalls: (calls: readonly Call[]) => Promise<Hex>
62
+ /**
63
+ * Retrieves the calldata for factory call to deploy a Smart Account.
64
+ * If the Smart Account has already been deployed, this will return undefined values.
65
+ *
66
+ * @example Counterfactual account
67
+ * ```ts
68
+ * const { factory, factoryData } = await account.getFactoryArgs()
69
+ * // { factory: '0x...', factoryData: '0x...' }
70
+ * ```
71
+ *
72
+ * @example Deployed account
73
+ * ```ts
74
+ * const { factory, factoryData } = await account.getFactoryArgs()
75
+ * // { factory: undefined, factoryData: undefined }
76
+ * ```
77
+ */
78
+ getFactoryArgs: () => Promise<{
79
+ factory?: Address | undefined
80
+ factoryData?: Hex | undefined
81
+ }>
82
+ /**
83
+ * Retrieves the nonce of the Account.
84
+ *
85
+ * @example
86
+ * ```ts
87
+ * const nonce = await account.getNonce()
88
+ * // 1n
89
+ * ```
90
+ */
91
+ getNonce: (
92
+ parameters?: { key?: bigint | undefined } | undefined,
93
+ ) => Promise<bigint>
94
+ /**
95
+ * Retrieves the User Operation "stub" signature for gas estimation.
96
+ *
97
+ * ```ts
98
+ * const signature = await account.getStubSignature()
99
+ * // '0x...'
100
+ * ```
101
+ */
102
+ getStubSignature: () => Promise<Hex>
103
+ /**
104
+ * Signs a hash via the Smart Account's owner.
105
+ *
106
+ * @example
107
+ * ```ts
108
+ * const signature = await account.sign({
109
+ * hash: '0x...'
110
+ * })
111
+ * // '0x...'
112
+ * ```
113
+ */
114
+ sign?: ((parameters: { hash: Hash }) => Promise<Hex>) | undefined
115
+ /**
116
+ * Signs a [EIP-191 Personal Sign message](https://eips.ethereum.org/EIPS/eip-191).
117
+ *
118
+ * @example
119
+ * ```ts
120
+ * const signature = await account.signMessage({
121
+ * message: 'Hello, World!'
122
+ * })
123
+ * // '0x...'
124
+ * ```
125
+ */
126
+ signMessage: (parameters: { message: SignableMessage }) => Promise<Hex>
127
+ /**
128
+ * Signs [EIP-712 Typed Data](https://eips.ethereum.org/EIPS/eip-712).
129
+ *
130
+ * @example
131
+ * ```ts
132
+ * const signature = await account.signTypedData({
133
+ * domain,
134
+ * types,
135
+ * primaryType: 'Mail',
136
+ * message,
137
+ * })
138
+ * ```
139
+ */
140
+ signTypedData: <
141
+ const typedData extends TypedData | Record<string, unknown>,
142
+ primaryType extends keyof typedData | 'EIP712Domain' = keyof typedData,
143
+ >(
144
+ parameters: TypedDataDefinition<typedData, primaryType>,
145
+ ) => Promise<Hex>
146
+ /**
147
+ * Signs the User Operation.
148
+ *
149
+ * @example
150
+ * ```ts
151
+ * const signature = await account.signUserOperation({
152
+ * chainId: 1,
153
+ * userOperation,
154
+ * })
155
+ * ```
156
+ */
157
+ signUserOperation: (
158
+ parameters: UnionPartialBy<UserOperation, 'sender'> & {
159
+ chainId?: number | undefined
160
+ },
161
+ ) => Promise<Hex>
162
+ /** User Operation configuration properties. */
163
+ userOperation?:
164
+ | {
165
+ /** Prepares gas properties for the User Operation request. */
166
+ estimateGas?:
167
+ | ((
168
+ userOperation: UserOperationRequest,
169
+ ) => Promise<
170
+ ExactPartial<EstimateUserOperationGasReturnType> | undefined
171
+ >)
172
+ | undefined
173
+ }
174
+ | undefined
175
+ }
176
+
177
+ export type SmartAccount<
178
+ implementation extends
179
+ SmartAccountImplementation = SmartAccountImplementation,
180
+ > = Assign<
181
+ implementation['extend'],
182
+ Assign<
183
+ implementation,
184
+ {
185
+ /** Address of the Smart Account. */
186
+ address: Address
187
+ /** Whether or not the Smart Account has been deployed. */
188
+ isDeployed: () => Promise<boolean>
189
+ /** Type of account. */
190
+ type: 'smart'
191
+ }
192
+ >
193
+ >
194
+
195
+ export type WebAuthnAccount = {
196
+ publicKey: Hex
197
+ sign: ({ hash }: { hash: Hash }) => Promise<WebAuthnSignReturnType>
198
+ signMessage: ({
199
+ message,
200
+ }: { message: SignableMessage }) => Promise<WebAuthnSignReturnType>
201
+ signTypedData: <
202
+ const typedData extends TypedDataDefinition | Record<string, unknown>,
203
+ primaryType extends keyof typedData | 'EIP712Domain' = keyof typedData,
204
+ >(
205
+ typedDataDefinition: TypedDataDefinition<typedData, primaryType>,
206
+ ) => Promise<WebAuthnSignReturnType>
207
+ type: 'webAuthn'
208
+ }
@@ -0,0 +1,170 @@
1
+ import type { Address, Narrow } from 'abitype'
2
+ import {
3
+ type ParseAccountErrorType,
4
+ parseAccount,
5
+ } from '../../../accounts/utils/parseAccount.js'
6
+ import type { Client } from '../../../clients/createClient.js'
7
+ import type { Transport } from '../../../clients/transports/createTransport.js'
8
+ import { AccountNotFoundError } from '../../../errors/account.js'
9
+ import type { BaseError } from '../../../errors/base.js'
10
+ import type { ErrorType } from '../../../errors/utils.js'
11
+ import type { Chain } from '../../../types/chain.js'
12
+ import type { Hex } from '../../../types/misc.js'
13
+ import type { Assign, OneOf, Prettify } from '../../../types/utils.js'
14
+ import type { RequestErrorType } from '../../../utils/buildRequest.js'
15
+ import { getAction } from '../../../utils/getAction.js'
16
+ import type { SmartAccount } from '../../accounts/types.js'
17
+ import type { PaymasterActions } from '../../clients/decorators/paymaster.js'
18
+ import type {
19
+ DeriveSmartAccount,
20
+ GetSmartAccountParameter,
21
+ } from '../../types/account.js'
22
+ import type {
23
+ DeriveEntryPointVersion,
24
+ EntryPointVersion,
25
+ } from '../../types/entryPointVersion.js'
26
+ import type {
27
+ EstimateUserOperationGasReturnType as EstimateUserOperationGasReturnType_,
28
+ UserOperation,
29
+ UserOperationCalls,
30
+ UserOperationRequest,
31
+ } from '../../types/userOperation.js'
32
+ import { getUserOperationError } from '../../utils/errors/getUserOperationError.js'
33
+ import {
34
+ type FormatUserOperationGasErrorType,
35
+ formatUserOperationGas,
36
+ } from '../../utils/formatters/userOperationGas.js'
37
+ import {
38
+ type FormatUserOperationRequestErrorType,
39
+ formatUserOperationRequest,
40
+ } from '../../utils/formatters/userOperationRequest.js'
41
+ import {
42
+ type PrepareUserOperationErrorType,
43
+ type PrepareUserOperationParameters,
44
+ prepareUserOperation,
45
+ } from './prepareUserOperation.js'
46
+
47
+ export type EstimateUserOperationGasParameters<
48
+ account extends SmartAccount | undefined = SmartAccount | undefined,
49
+ accountOverride extends SmartAccount | undefined = SmartAccount | undefined,
50
+ calls extends readonly unknown[] = readonly unknown[],
51
+ //
52
+ _derivedAccount extends SmartAccount | undefined = DeriveSmartAccount<
53
+ account,
54
+ accountOverride
55
+ >,
56
+ _derivedVersion extends
57
+ EntryPointVersion = DeriveEntryPointVersion<_derivedAccount>,
58
+ > = Assign<
59
+ UserOperationRequest<_derivedVersion>,
60
+ OneOf<{ calls: UserOperationCalls<Narrow<calls>> } | { callData: Hex }> & {
61
+ paymaster?:
62
+ | Address
63
+ | true
64
+ | {
65
+ /** Retrieves paymaster-related User Operation properties to be used for sending the User Operation. */
66
+ getPaymasterData?: PaymasterActions['getPaymasterData'] | undefined
67
+ /** Retrieves paymaster-related User Operation properties to be used for gas estimation. */
68
+ getPaymasterStubData?:
69
+ | PaymasterActions['getPaymasterStubData']
70
+ | undefined
71
+ }
72
+ | undefined
73
+ /** Paymaster context to pass to `getPaymasterData` and `getPaymasterStubData` calls. */
74
+ paymasterContext?: unknown | undefined
75
+ }
76
+ > &
77
+ GetSmartAccountParameter<account, accountOverride>
78
+
79
+ export type EstimateUserOperationGasReturnType<
80
+ account extends SmartAccount | undefined = SmartAccount | undefined,
81
+ accountOverride extends SmartAccount | undefined = SmartAccount | undefined,
82
+ //
83
+ _derivedAccount extends SmartAccount | undefined = DeriveSmartAccount<
84
+ account,
85
+ accountOverride
86
+ >,
87
+ _derivedVersion extends
88
+ EntryPointVersion = DeriveEntryPointVersion<_derivedAccount>,
89
+ > = Prettify<EstimateUserOperationGasReturnType_<_derivedVersion>>
90
+
91
+ export type EstimateUserOperationGasErrorType =
92
+ | ParseAccountErrorType
93
+ | PrepareUserOperationErrorType
94
+ | FormatUserOperationRequestErrorType
95
+ | FormatUserOperationGasErrorType
96
+ | RequestErrorType
97
+ | ErrorType
98
+
99
+ /**
100
+ * Returns an estimate of gas values necessary to execute the User Operation.
101
+ *
102
+ * - Docs: https://viem.sh/actions/bundler/estimateUserOperationGas
103
+ *
104
+ * @param client - Client to use
105
+ * @param parameters - {@link EstimateUserOperationGasParameters}
106
+ * @returns The gas estimate (in wei). {@link EstimateUserOperationGasReturnType}
107
+ *
108
+ * @example
109
+ * import { createBundlerClient, http, parseEther } from 'viem'
110
+ * import { toSmartAccount } from 'viem/accounts'
111
+ * import { mainnet } from 'viem/chains'
112
+ * import { estimateUserOperationGas } from 'viem/actions'
113
+ *
114
+ * const account = await toSmartAccount({ ... })
115
+ *
116
+ * const bundlerClient = createBundlerClient({
117
+ * chain: mainnet,
118
+ * transport: http(),
119
+ * })
120
+ *
121
+ * const values = await estimateUserOperationGas(bundlerClient, {
122
+ * account,
123
+ * calls: [{ to: '0x...', value: parseEther('1') }],
124
+ * })
125
+ */
126
+ export async function estimateUserOperationGas<
127
+ const calls extends readonly unknown[],
128
+ account extends SmartAccount | undefined,
129
+ accountOverride extends SmartAccount | undefined = undefined,
130
+ >(
131
+ client: Client<Transport, Chain | undefined, account>,
132
+ parameters: EstimateUserOperationGasParameters<
133
+ account,
134
+ accountOverride,
135
+ calls
136
+ >,
137
+ ): Promise<EstimateUserOperationGasReturnType<account, accountOverride>> {
138
+ const { account: account_ = client.account } = parameters
139
+
140
+ if (!account_) throw new AccountNotFoundError()
141
+ const account = parseAccount(account_)
142
+
143
+ const request = await getAction(
144
+ client,
145
+ prepareUserOperation,
146
+ 'prepareUserOperation',
147
+ )({
148
+ ...parameters,
149
+ parameters: ['factory', 'nonce', 'paymaster', 'signature'],
150
+ } as unknown as PrepareUserOperationParameters)
151
+
152
+ try {
153
+ const result = await client.request({
154
+ method: 'eth_estimateUserOperationGas',
155
+ params: [
156
+ formatUserOperationRequest(request as UserOperation),
157
+ account.entryPoint.address,
158
+ ],
159
+ })
160
+ return formatUserOperationGas(result) as EstimateUserOperationGasReturnType<
161
+ account,
162
+ accountOverride
163
+ >
164
+ } catch (error) {
165
+ throw getUserOperationError(error as BaseError, {
166
+ ...(request as UserOperation),
167
+ calls: parameters.calls,
168
+ })
169
+ }
170
+ }
@@ -0,0 +1,33 @@
1
+ import type { Address } from 'abitype'
2
+ import type { Client } from '../../../clients/createClient.js'
3
+ import type { Transport } from '../../../clients/transports/createTransport.js'
4
+ import type { ErrorType } from '../../../errors/utils.js'
5
+ import type { RequestErrorType } from '../../../utils/buildRequest.js'
6
+
7
+ export type GetSupportedEntryPointsReturnType = readonly Address[]
8
+ export type GetSupportedEntryPointsErrorType = RequestErrorType | ErrorType
9
+
10
+ /**
11
+ * Returns the EntryPoints that the bundler supports.
12
+ *
13
+ * - Docs: https://viem.sh/actions/bundler/getSupportedEntryPoints
14
+ *
15
+ * @param client - Client to use
16
+ * @param parameters - {@link GetSupportedEntryPointsParameters}
17
+ * @returns Supported Entry Points. {@link GetSupportedEntryPointsReturnType}
18
+ *
19
+ * @example
20
+ * import { createBundlerClient, http, parseEther } from 'viem'
21
+ * import { mainnet } from 'viem/chains'
22
+ * import { getSupportedEntryPoints } from 'viem/actions'
23
+ *
24
+ * const bundlerClient = createBundlerClient({
25
+ * chain: mainnet,
26
+ * transport: http(),
27
+ * })
28
+ *
29
+ * const addresses = await getSupportedEntryPoints(bundlerClient)
30
+ */
31
+ export function getSupportedEntryPoints(client: Client<Transport>) {
32
+ return client.request({ method: 'eth_supportedEntryPoints' })
33
+ }
@@ -0,0 +1,85 @@
1
+ import type { Address } from 'abitype'
2
+ import type { Client } from '../../../clients/createClient.js'
3
+ import type { Transport } from '../../../clients/transports/createTransport.js'
4
+ import type { ErrorType } from '../../../errors/utils.js'
5
+ import type { Hash } from '../../../types/misc.js'
6
+ import type { Prettify } from '../../../types/utils.js'
7
+ import type { RequestErrorType } from '../../../utils/buildRequest.js'
8
+ import {
9
+ UserOperationNotFoundError,
10
+ type UserOperationNotFoundErrorType,
11
+ } from '../../errors/userOperation.js'
12
+ import type { UserOperation } from '../../types/userOperation.js'
13
+ import { formatUserOperation } from '../../utils/formatters/userOperation.js'
14
+
15
+ export type GetUserOperationParameters = {
16
+ /** The hash of the User Operation. */
17
+ hash: Hash
18
+ }
19
+
20
+ export type GetUserOperationReturnType = Prettify<{
21
+ /** The block hash the User Operation was included on. */
22
+ blockHash: Hash
23
+ /** The block number the User Operation was included on. */
24
+ blockNumber: bigint
25
+ /** The EntryPoint which handled the User Operation. */
26
+ entryPoint: Address
27
+ /** The hash of the transaction which included the User Operation. */
28
+ transactionHash: Hash
29
+ /** The User Operation. */
30
+ userOperation: UserOperation
31
+ }>
32
+
33
+ export type GetUserOperationErrorType =
34
+ | RequestErrorType
35
+ | UserOperationNotFoundErrorType
36
+ | ErrorType
37
+
38
+ /**
39
+ * Retrieves information about a User Operation given a hash.
40
+ *
41
+ * - Docs: https://viem.sh/docs/actions/bundler/getUserOperation
42
+ *
43
+ * @param client - Client to use
44
+ * @param parameters - {@link GetUserOperationParameters}
45
+ * @returns The receipt. {@link GetUserOperationReturnType}
46
+ *
47
+ * @example
48
+ * import { createBundlerClient, http } from 'viem'
49
+ * import { mainnet } from 'viem/chains'
50
+ * import { getUserOperation } from 'viem/actions
51
+ *
52
+ * const client = createBundlerClient({
53
+ * chain: mainnet,
54
+ * transport: http(),
55
+ * })
56
+ *
57
+ * const receipt = await getUserOperation(client, {
58
+ * hash: '0x4ca7ee652d57678f26e887c149ab0735f41de37bcad58c9f6d3ed5824f15b74d',
59
+ * })
60
+ */
61
+ export async function getUserOperation(
62
+ client: Client<Transport>,
63
+ { hash }: GetUserOperationParameters,
64
+ ) {
65
+ const result = await client.request(
66
+ {
67
+ method: 'eth_getUserOperationByHash',
68
+ params: [hash],
69
+ },
70
+ { dedupe: true },
71
+ )
72
+
73
+ if (!result) throw new UserOperationNotFoundError({ hash })
74
+
75
+ const { blockHash, blockNumber, entryPoint, transactionHash, userOperation } =
76
+ result
77
+
78
+ return {
79
+ blockHash,
80
+ blockNumber: BigInt(blockNumber),
81
+ entryPoint,
82
+ transactionHash,
83
+ userOperation: formatUserOperation(userOperation),
84
+ }
85
+ }