viem 2.17.10 → 2.18.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (464) hide show
  1. package/CHANGELOG.md +16 -2
  2. package/README.md +6 -0
  3. package/_cjs/account-abstraction/accounts/createWebAuthnCredential.js +6 -0
  4. package/_cjs/account-abstraction/accounts/createWebAuthnCredential.js.map +1 -0
  5. package/_cjs/account-abstraction/accounts/implementations/toCoinbaseSmartAccount.js +688 -0
  6. package/_cjs/account-abstraction/accounts/implementations/toCoinbaseSmartAccount.js.map +1 -0
  7. package/_cjs/account-abstraction/accounts/implementations/toSoladySmartAccount.js +704 -0
  8. package/_cjs/account-abstraction/accounts/implementations/toSoladySmartAccount.js.map +1 -0
  9. package/_cjs/account-abstraction/accounts/toSmartAccount.js +93 -0
  10. package/_cjs/account-abstraction/accounts/toSmartAccount.js.map +1 -0
  11. package/_cjs/account-abstraction/accounts/toWebAuthnAccount.js +24 -0
  12. package/_cjs/account-abstraction/accounts/toWebAuthnAccount.js.map +1 -0
  13. package/_cjs/account-abstraction/accounts/types.js +3 -0
  14. package/_cjs/account-abstraction/accounts/types.js.map +1 -0
  15. package/_cjs/account-abstraction/actions/bundler/estimateUserOperationGas.js +37 -0
  16. package/_cjs/account-abstraction/actions/bundler/estimateUserOperationGas.js.map +1 -0
  17. package/_cjs/account-abstraction/actions/bundler/getSupportedEntryPoints.js +7 -0
  18. package/_cjs/account-abstraction/actions/bundler/getSupportedEntryPoints.js.map +1 -0
  19. package/_cjs/account-abstraction/actions/bundler/getUserOperation.js +22 -0
  20. package/_cjs/account-abstraction/actions/bundler/getUserOperation.js.map +1 -0
  21. package/_cjs/account-abstraction/actions/bundler/getUserOperationReceipt.js +15 -0
  22. package/_cjs/account-abstraction/actions/bundler/getUserOperationReceipt.js.map +1 -0
  23. package/_cjs/account-abstraction/actions/bundler/prepareUserOperation.js +239 -0
  24. package/_cjs/account-abstraction/actions/bundler/prepareUserOperation.js.map +1 -0
  25. package/_cjs/account-abstraction/actions/bundler/sendUserOperation.js +36 -0
  26. package/_cjs/account-abstraction/actions/bundler/sendUserOperation.js.map +1 -0
  27. package/_cjs/account-abstraction/actions/bundler/waitForUserOperationReceipt.js +48 -0
  28. package/_cjs/account-abstraction/actions/bundler/waitForUserOperationReceipt.js.map +1 -0
  29. package/_cjs/account-abstraction/actions/paymaster/getPaymasterData.js +34 -0
  30. package/_cjs/account-abstraction/actions/paymaster/getPaymasterData.js.map +1 -0
  31. package/_cjs/account-abstraction/actions/paymaster/getPaymasterStubData.js +34 -0
  32. package/_cjs/account-abstraction/actions/paymaster/getPaymasterStubData.js.map +1 -0
  33. package/_cjs/account-abstraction/clients/createBundlerClient.js +18 -0
  34. package/_cjs/account-abstraction/clients/createBundlerClient.js.map +1 -0
  35. package/_cjs/account-abstraction/clients/createPaymasterClient.js +17 -0
  36. package/_cjs/account-abstraction/clients/createPaymasterClient.js.map +1 -0
  37. package/_cjs/account-abstraction/clients/decorators/bundler.js +24 -0
  38. package/_cjs/account-abstraction/clients/decorators/bundler.js.map +1 -0
  39. package/_cjs/account-abstraction/clients/decorators/paymaster.js +12 -0
  40. package/_cjs/account-abstraction/clients/decorators/paymaster.js.map +1 -0
  41. package/_cjs/account-abstraction/constants/abis.js +1318 -0
  42. package/_cjs/account-abstraction/constants/abis.js.map +1 -0
  43. package/_cjs/account-abstraction/constants/address.js +6 -0
  44. package/_cjs/account-abstraction/constants/address.js.map +1 -0
  45. package/_cjs/account-abstraction/errors/bundler.js +813 -0
  46. package/_cjs/account-abstraction/errors/bundler.js.map +1 -0
  47. package/_cjs/account-abstraction/errors/userOperation.js +91 -0
  48. package/_cjs/account-abstraction/errors/userOperation.js.map +1 -0
  49. package/_cjs/account-abstraction/index.js +90 -0
  50. package/_cjs/account-abstraction/index.js.map +1 -0
  51. package/_cjs/account-abstraction/types/account.js +3 -0
  52. package/_cjs/account-abstraction/types/account.js.map +1 -0
  53. package/_cjs/account-abstraction/types/entryPointVersion.js +3 -0
  54. package/_cjs/account-abstraction/types/entryPointVersion.js.map +1 -0
  55. package/_cjs/account-abstraction/types/rpc.js +3 -0
  56. package/_cjs/account-abstraction/types/rpc.js.map +1 -0
  57. package/_cjs/account-abstraction/types/userOperation.js +3 -0
  58. package/_cjs/account-abstraction/types/userOperation.js.map +1 -0
  59. package/_cjs/account-abstraction/utils/errors/getBundlerError.js +186 -0
  60. package/_cjs/account-abstraction/utils/errors/getBundlerError.js.map +1 -0
  61. package/_cjs/account-abstraction/utils/errors/getUserOperationError.js +87 -0
  62. package/_cjs/account-abstraction/utils/errors/getUserOperationError.js.map +1 -0
  63. package/_cjs/account-abstraction/utils/formatters/userOperation.js +24 -0
  64. package/_cjs/account-abstraction/utils/formatters/userOperation.js.map +1 -0
  65. package/_cjs/account-abstraction/utils/formatters/userOperationGas.js +18 -0
  66. package/_cjs/account-abstraction/utils/formatters/userOperationGas.js.map +1 -0
  67. package/_cjs/account-abstraction/utils/formatters/userOperationReceipt.js +18 -0
  68. package/_cjs/account-abstraction/utils/formatters/userOperationReceipt.js.map +1 -0
  69. package/_cjs/account-abstraction/utils/formatters/userOperationRequest.js +43 -0
  70. package/_cjs/account-abstraction/utils/formatters/userOperationRequest.js.map +1 -0
  71. package/_cjs/account-abstraction/utils/userOperation/getUserOperationHash.js +88 -0
  72. package/_cjs/account-abstraction/utils/userOperation/getUserOperationHash.js.map +1 -0
  73. package/_cjs/account-abstraction/utils/userOperation/toPackedUserOperation.js +44 -0
  74. package/_cjs/account-abstraction/utils/userOperation/toPackedUserOperation.js.map +1 -0
  75. package/_cjs/accounts/index.js +1 -3
  76. package/_cjs/accounts/index.js.map +1 -1
  77. package/_cjs/accounts/privateKeyToAccount.js +4 -0
  78. package/_cjs/accounts/privateKeyToAccount.js.map +1 -1
  79. package/_cjs/accounts/toAccount.js +1 -0
  80. package/_cjs/accounts/toAccount.js.map +1 -1
  81. package/_cjs/accounts/utils/parseAccount.js.map +1 -1
  82. package/_cjs/accounts/utils/sign.js +8 -2
  83. package/_cjs/accounts/utils/sign.js.map +1 -1
  84. package/_cjs/accounts/utils/signMessage.js +1 -3
  85. package/_cjs/accounts/utils/signMessage.js.map +1 -1
  86. package/_cjs/accounts/utils/signTypedData.js +2 -3
  87. package/_cjs/accounts/utils/signTypedData.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 +23 -0
  97. package/_cjs/chains/definitions/bobaSepolia.js.map +1 -0
  98. package/_cjs/chains/index.js +9 -7
  99. package/_cjs/chains/index.js.map +1 -1
  100. package/_cjs/clients/decorators/public.js.map +1 -1
  101. package/_cjs/clients/decorators/wallet.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/buildRequest.js +4 -2
  118. package/_cjs/utils/buildRequest.js.map +1 -1
  119. package/_cjs/utils/errors/getNodeError.js +1 -2
  120. package/_cjs/utils/errors/getNodeError.js.map +1 -1
  121. package/_cjs/utils/index.js +3 -1
  122. package/_cjs/utils/index.js.map +1 -1
  123. package/_cjs/utils/signature/serializeErc6492Signature.js +6 -2
  124. package/_cjs/utils/signature/serializeErc6492Signature.js.map +1 -1
  125. package/_cjs/utils/signature/serializeSignature.js +6 -2
  126. package/_cjs/utils/signature/serializeSignature.js.map +1 -1
  127. package/_cjs/utils/signature/verifyHash.js +10 -0
  128. package/_cjs/utils/signature/verifyHash.js.map +1 -0
  129. package/_esm/account-abstraction/accounts/createWebAuthnCredential.js +3 -0
  130. package/_esm/account-abstraction/accounts/createWebAuthnCredential.js.map +1 -0
  131. package/_esm/account-abstraction/accounts/implementations/toCoinbaseSmartAccount.js +709 -0
  132. package/_esm/account-abstraction/accounts/implementations/toCoinbaseSmartAccount.js.map +1 -0
  133. package/_esm/account-abstraction/accounts/implementations/toSoladySmartAccount.js +718 -0
  134. package/_esm/account-abstraction/accounts/implementations/toSoladySmartAccount.js.map +1 -0
  135. package/_esm/account-abstraction/accounts/toSmartAccount.js +96 -0
  136. package/_esm/account-abstraction/accounts/toSmartAccount.js.map +1 -0
  137. package/_esm/account-abstraction/accounts/toWebAuthnAccount.js +26 -0
  138. package/_esm/account-abstraction/accounts/toWebAuthnAccount.js.map +1 -0
  139. package/_esm/account-abstraction/accounts/types.js +2 -0
  140. package/_esm/account-abstraction/accounts/types.js.map +1 -0
  141. package/_esm/account-abstraction/actions/bundler/estimateUserOperationGas.js +61 -0
  142. package/_esm/account-abstraction/actions/bundler/estimateUserOperationGas.js.map +1 -0
  143. package/_esm/account-abstraction/actions/bundler/getSupportedEntryPoints.js +25 -0
  144. package/_esm/account-abstraction/actions/bundler/getSupportedEntryPoints.js.map +1 -0
  145. package/_esm/account-abstraction/actions/bundler/getUserOperation.js +42 -0
  146. package/_esm/account-abstraction/actions/bundler/getUserOperation.js.map +1 -0
  147. package/_esm/account-abstraction/actions/bundler/getUserOperationReceipt.js +35 -0
  148. package/_esm/account-abstraction/actions/bundler/getUserOperationReceipt.js.map +1 -0
  149. package/_esm/account-abstraction/actions/bundler/prepareUserOperation.js +323 -0
  150. package/_esm/account-abstraction/actions/bundler/prepareUserOperation.js.map +1 -0
  151. package/_esm/account-abstraction/actions/bundler/sendUserOperation.js +60 -0
  152. package/_esm/account-abstraction/actions/bundler/sendUserOperation.js.map +1 -0
  153. package/_esm/account-abstraction/actions/bundler/waitForUserOperationReceipt.js +68 -0
  154. package/_esm/account-abstraction/actions/bundler/waitForUserOperationReceipt.js.map +1 -0
  155. package/_esm/account-abstraction/actions/paymaster/getPaymasterData.js +56 -0
  156. package/_esm/account-abstraction/actions/paymaster/getPaymasterData.js.map +1 -0
  157. package/_esm/account-abstraction/actions/paymaster/getPaymasterStubData.js +56 -0
  158. package/_esm/account-abstraction/actions/paymaster/getPaymasterStubData.js.map +1 -0
  159. package/_esm/account-abstraction/clients/createBundlerClient.js +15 -0
  160. package/_esm/account-abstraction/clients/createBundlerClient.js.map +1 -0
  161. package/_esm/account-abstraction/clients/createPaymasterClient.js +14 -0
  162. package/_esm/account-abstraction/clients/createPaymasterClient.js.map +1 -0
  163. package/_esm/account-abstraction/clients/decorators/bundler.js +21 -0
  164. package/_esm/account-abstraction/clients/decorators/bundler.js.map +1 -0
  165. package/_esm/account-abstraction/clients/decorators/paymaster.js +9 -0
  166. package/_esm/account-abstraction/clients/decorators/paymaster.js.map +1 -0
  167. package/_esm/account-abstraction/constants/abis.js +1315 -0
  168. package/_esm/account-abstraction/constants/abis.js.map +1 -0
  169. package/_esm/account-abstraction/constants/address.js +3 -0
  170. package/_esm/account-abstraction/constants/address.js.map +1 -0
  171. package/_esm/account-abstraction/errors/bundler.js +774 -0
  172. package/_esm/account-abstraction/errors/bundler.js.map +1 -0
  173. package/_esm/account-abstraction/errors/userOperation.js +84 -0
  174. package/_esm/account-abstraction/errors/userOperation.js.map +1 -0
  175. package/_esm/account-abstraction/index.js +31 -0
  176. package/_esm/account-abstraction/index.js.map +1 -0
  177. package/_esm/account-abstraction/types/account.js +2 -0
  178. package/_esm/account-abstraction/types/account.js.map +1 -0
  179. package/_esm/account-abstraction/types/entryPointVersion.js +2 -0
  180. package/_esm/account-abstraction/types/entryPointVersion.js.map +1 -0
  181. package/_esm/account-abstraction/types/rpc.js +2 -0
  182. package/_esm/account-abstraction/types/rpc.js.map +1 -0
  183. package/_esm/account-abstraction/types/userOperation.js +2 -0
  184. package/_esm/account-abstraction/types/userOperation.js.map +1 -0
  185. package/_esm/account-abstraction/utils/errors/getBundlerError.js +183 -0
  186. package/_esm/account-abstraction/utils/errors/getBundlerError.js.map +1 -0
  187. package/_esm/account-abstraction/utils/errors/getUserOperationError.js +85 -0
  188. package/_esm/account-abstraction/utils/errors/getUserOperationError.js.map +1 -0
  189. package/_esm/account-abstraction/utils/formatters/userOperation.js +21 -0
  190. package/_esm/account-abstraction/utils/formatters/userOperation.js.map +1 -0
  191. package/_esm/account-abstraction/utils/formatters/userOperationGas.js +15 -0
  192. package/_esm/account-abstraction/utils/formatters/userOperationGas.js.map +1 -0
  193. package/_esm/account-abstraction/utils/formatters/userOperationReceipt.js +15 -0
  194. package/_esm/account-abstraction/utils/formatters/userOperationReceipt.js.map +1 -0
  195. package/_esm/account-abstraction/utils/formatters/userOperationRequest.js +40 -0
  196. package/_esm/account-abstraction/utils/formatters/userOperationRequest.js.map +1 -0
  197. package/_esm/account-abstraction/utils/userOperation/getUserOperationHash.js +85 -0
  198. package/_esm/account-abstraction/utils/userOperation/getUserOperationHash.js.map +1 -0
  199. package/_esm/account-abstraction/utils/userOperation/toPackedUserOperation.js +41 -0
  200. package/_esm/account-abstraction/utils/userOperation/toPackedUserOperation.js.map +1 -0
  201. package/_esm/accounts/index.js +0 -1
  202. package/_esm/accounts/index.js.map +1 -1
  203. package/_esm/accounts/privateKeyToAccount.js +4 -0
  204. package/_esm/accounts/privateKeyToAccount.js.map +1 -1
  205. package/_esm/accounts/toAccount.js +2 -0
  206. package/_esm/accounts/toAccount.js.map +1 -1
  207. package/_esm/accounts/utils/parseAccount.js.map +1 -1
  208. package/_esm/accounts/utils/sign.js +9 -3
  209. package/_esm/accounts/utils/sign.js.map +1 -1
  210. package/_esm/accounts/utils/signMessage.js +1 -3
  211. package/_esm/accounts/utils/signMessage.js.map +1 -1
  212. package/_esm/accounts/utils/signTypedData.js +2 -3
  213. package/_esm/accounts/utils/signTypedData.js.map +1 -1
  214. package/_esm/actions/wallet/sendTransaction.js +37 -24
  215. package/_esm/actions/wallet/sendTransaction.js.map +1 -1
  216. package/_esm/actions/wallet/signMessage.js +1 -1
  217. package/_esm/actions/wallet/signMessage.js.map +1 -1
  218. package/_esm/actions/wallet/signTransaction.js +1 -2
  219. package/_esm/actions/wallet/signTransaction.js.map +1 -1
  220. package/_esm/actions/wallet/signTypedData.js +1 -1
  221. package/_esm/actions/wallet/signTypedData.js.map +1 -1
  222. package/_esm/chains/definitions/bobaSepolia.js +20 -0
  223. package/_esm/chains/definitions/bobaSepolia.js.map +1 -0
  224. package/_esm/chains/index.js +1 -0
  225. package/_esm/chains/index.js.map +1 -1
  226. package/_esm/clients/decorators/public.js.map +1 -1
  227. package/_esm/clients/decorators/wallet.js.map +1 -1
  228. package/_esm/constants/abis.js +0 -3
  229. package/_esm/constants/abis.js.map +1 -1
  230. package/_esm/constants/address.js +2 -0
  231. package/_esm/constants/address.js.map +1 -1
  232. package/_esm/errors/account.js +15 -1
  233. package/_esm/errors/account.js.map +1 -1
  234. package/_esm/errors/contract.js +1 -1
  235. package/_esm/errors/contract.js.map +1 -1
  236. package/_esm/errors/rpc.js +6 -6
  237. package/_esm/errors/rpc.js.map +1 -1
  238. package/_esm/errors/version.js +1 -1
  239. package/_esm/errors/version.js.map +1 -1
  240. package/_esm/index.js +1 -0
  241. package/_esm/index.js.map +1 -1
  242. package/_esm/types/eip1193.js.map +1 -1
  243. package/_esm/utils/buildRequest.js +4 -2
  244. package/_esm/utils/buildRequest.js.map +1 -1
  245. package/_esm/utils/errors/getNodeError.js +1 -2
  246. package/_esm/utils/errors/getNodeError.js.map +1 -1
  247. package/_esm/utils/index.js +1 -0
  248. package/_esm/utils/index.js.map +1 -1
  249. package/_esm/utils/signature/serializeErc6492Signature.js +6 -2
  250. package/_esm/utils/signature/serializeErc6492Signature.js.map +1 -1
  251. package/_esm/utils/signature/serializeSignature.js +6 -2
  252. package/_esm/utils/signature/serializeSignature.js.map +1 -1
  253. package/_esm/utils/signature/verifyHash.js +19 -0
  254. package/_esm/utils/signature/verifyHash.js.map +1 -0
  255. package/_types/account-abstraction/accounts/createWebAuthnCredential.d.ts +2 -0
  256. package/_types/account-abstraction/accounts/createWebAuthnCredential.d.ts.map +1 -0
  257. package/_types/account-abstraction/accounts/implementations/toCoinbaseSmartAccount.d.ts +648 -0
  258. package/_types/account-abstraction/accounts/implementations/toCoinbaseSmartAccount.d.ts.map +1 -0
  259. package/_types/account-abstraction/accounts/implementations/toSoladySmartAccount.d.ts +464 -0
  260. package/_types/account-abstraction/accounts/implementations/toSoladySmartAccount.d.ts.map +1 -0
  261. package/_types/account-abstraction/accounts/toSmartAccount.d.ts +14 -0
  262. package/_types/account-abstraction/accounts/toSmartAccount.d.ts.map +1 -0
  263. package/_types/account-abstraction/accounts/toWebAuthnAccount.d.ts +32 -0
  264. package/_types/account-abstraction/accounts/toWebAuthnAccount.d.ts.map +1 -0
  265. package/_types/account-abstraction/accounts/types.d.ts +174 -0
  266. package/_types/account-abstraction/accounts/types.d.ts.map +1 -0
  267. package/_types/account-abstraction/actions/bundler/estimateUserOperationGas.d.ts +62 -0
  268. package/_types/account-abstraction/actions/bundler/estimateUserOperationGas.d.ts.map +1 -0
  269. package/_types/account-abstraction/actions/bundler/getSupportedEntryPoints.d.ts +30 -0
  270. package/_types/account-abstraction/actions/bundler/getSupportedEntryPoints.d.ts.map +1 -0
  271. package/_types/account-abstraction/actions/bundler/getUserOperation.d.ts +57 -0
  272. package/_types/account-abstraction/actions/bundler/getUserOperation.d.ts.map +1 -0
  273. package/_types/account-abstraction/actions/bundler/getUserOperationReceipt.d.ts +39 -0
  274. package/_types/account-abstraction/actions/bundler/getUserOperationReceipt.d.ts.map +1 -0
  275. package/_types/account-abstraction/actions/bundler/prepareUserOperation.d.ts +106 -0
  276. package/_types/account-abstraction/actions/bundler/prepareUserOperation.d.ts.map +1 -0
  277. package/_types/account-abstraction/actions/bundler/sendUserOperation.d.ts +60 -0
  278. package/_types/account-abstraction/actions/bundler/sendUserOperation.d.ts.map +1 -0
  279. package/_types/account-abstraction/actions/bundler/waitForUserOperationReceipt.d.ts +52 -0
  280. package/_types/account-abstraction/actions/bundler/waitForUserOperationReceipt.d.ts.map +1 -0
  281. package/_types/account-abstraction/actions/paymaster/getPaymasterData.d.ts +49 -0
  282. package/_types/account-abstraction/actions/paymaster/getPaymasterData.d.ts.map +1 -0
  283. package/_types/account-abstraction/actions/paymaster/getPaymasterStubData.d.ts +55 -0
  284. package/_types/account-abstraction/actions/paymaster/getPaymasterStubData.d.ts.map +1 -0
  285. package/_types/account-abstraction/clients/createBundlerClient.d.ts +66 -0
  286. package/_types/account-abstraction/clients/createBundlerClient.d.ts.map +1 -0
  287. package/_types/account-abstraction/clients/createPaymasterClient.d.ts +27 -0
  288. package/_types/account-abstraction/clients/createPaymasterClient.d.ts.map +1 -0
  289. package/_types/account-abstraction/clients/decorators/bundler.d.ts +206 -0
  290. package/_types/account-abstraction/clients/decorators/bundler.d.ts.map +1 -0
  291. package/_types/account-abstraction/clients/decorators/paymaster.d.ts +60 -0
  292. package/_types/account-abstraction/clients/decorators/paymaster.d.ts.map +1 -0
  293. package/_types/account-abstraction/constants/abis.d.ts +1468 -0
  294. package/_types/account-abstraction/constants/abis.d.ts.map +1 -0
  295. package/_types/account-abstraction/constants/address.d.ts +3 -0
  296. package/_types/account-abstraction/constants/address.d.ts.map +1 -0
  297. package/_types/account-abstraction/errors/bundler.d.ts +391 -0
  298. package/_types/account-abstraction/errors/bundler.d.ts.map +1 -0
  299. package/_types/account-abstraction/errors/userOperation.d.ts +41 -0
  300. package/_types/account-abstraction/errors/userOperation.d.ts.map +1 -0
  301. package/_types/account-abstraction/index.d.ts +34 -0
  302. package/_types/account-abstraction/index.d.ts.map +1 -0
  303. package/_types/account-abstraction/types/account.d.ts +11 -0
  304. package/_types/account-abstraction/types/account.d.ts.map +1 -0
  305. package/_types/account-abstraction/types/entryPointVersion.d.ts +9 -0
  306. package/_types/account-abstraction/types/entryPointVersion.d.ts.map +1 -0
  307. package/_types/account-abstraction/types/rpc.d.ts +9 -0
  308. package/_types/account-abstraction/types/rpc.d.ts.map +1 -0
  309. package/_types/account-abstraction/types/userOperation.d.ts +157 -0
  310. package/_types/account-abstraction/types/userOperation.d.ts.map +1 -0
  311. package/_types/account-abstraction/utils/errors/getBundlerError.d.ts +8 -0
  312. package/_types/account-abstraction/utils/errors/getBundlerError.d.ts.map +1 -0
  313. package/_types/account-abstraction/utils/errors/getUserOperationError.d.ts +15 -0
  314. package/_types/account-abstraction/utils/errors/getUserOperationError.d.ts.map +1 -0
  315. package/_types/account-abstraction/utils/formatters/userOperation.d.ts +6 -0
  316. package/_types/account-abstraction/utils/formatters/userOperation.d.ts.map +1 -0
  317. package/_types/account-abstraction/utils/formatters/userOperationGas.d.ts +6 -0
  318. package/_types/account-abstraction/utils/formatters/userOperationGas.d.ts.map +1 -0
  319. package/_types/account-abstraction/utils/formatters/userOperationReceipt.d.ts +6 -0
  320. package/_types/account-abstraction/utils/formatters/userOperationReceipt.d.ts.map +1 -0
  321. package/_types/account-abstraction/utils/formatters/userOperationRequest.d.ts +7 -0
  322. package/_types/account-abstraction/utils/formatters/userOperationRequest.d.ts.map +1 -0
  323. package/_types/account-abstraction/utils/userOperation/getUserOperationHash.d.ts +13 -0
  324. package/_types/account-abstraction/utils/userOperation/getUserOperationHash.d.ts.map +1 -0
  325. package/_types/account-abstraction/utils/userOperation/toPackedUserOperation.d.ts +3 -0
  326. package/_types/account-abstraction/utils/userOperation/toPackedUserOperation.d.ts.map +1 -0
  327. package/_types/accounts/index.d.ts +0 -1
  328. package/_types/accounts/index.d.ts.map +1 -1
  329. package/_types/accounts/privateKeyToAccount.d.ts +2 -1
  330. package/_types/accounts/privateKeyToAccount.d.ts.map +1 -1
  331. package/_types/accounts/toAccount.d.ts.map +1 -1
  332. package/_types/accounts/types.d.ts +14 -7
  333. package/_types/accounts/types.d.ts.map +1 -1
  334. package/_types/accounts/utils/parseAccount.d.ts +1 -1
  335. package/_types/accounts/utils/parseAccount.d.ts.map +1 -1
  336. package/_types/accounts/utils/sign.d.ts +9 -6
  337. package/_types/accounts/utils/sign.d.ts.map +1 -1
  338. package/_types/accounts/utils/signMessage.d.ts +1 -2
  339. package/_types/accounts/utils/signMessage.d.ts.map +1 -1
  340. package/_types/accounts/utils/signTypedData.d.ts +1 -2
  341. package/_types/accounts/utils/signTypedData.d.ts.map +1 -1
  342. package/_types/actions/wallet/sendTransaction.d.ts +2 -1
  343. package/_types/actions/wallet/sendTransaction.d.ts.map +1 -1
  344. package/_types/actions/wallet/signMessage.d.ts.map +1 -1
  345. package/_types/actions/wallet/signTransaction.d.ts.map +1 -1
  346. package/_types/chains/definitions/bobaSepolia.d.ts +35 -0
  347. package/_types/chains/definitions/bobaSepolia.d.ts.map +1 -0
  348. package/_types/chains/definitions/lisk.d.ts +2 -2
  349. package/_types/chains/definitions/playfiAlbireo.d.ts +2 -2
  350. package/_types/chains/definitions/zkSync.d.ts +2 -2
  351. package/_types/chains/definitions/zkSyncInMemoryNode.d.ts +2 -2
  352. package/_types/chains/definitions/zkSyncLocalNode.d.ts +2 -2
  353. package/_types/chains/definitions/zkSyncSepoliaTestnet.d.ts +2 -2
  354. package/_types/chains/definitions/zkSyncTestnet.d.ts +2 -2
  355. package/_types/chains/index.d.ts +1 -0
  356. package/_types/chains/index.d.ts.map +1 -1
  357. package/_types/clients/decorators/public.d.ts +2 -2
  358. package/_types/clients/decorators/public.d.ts.map +1 -1
  359. package/_types/clients/decorators/wallet.d.ts +1 -1
  360. package/_types/clients/decorators/wallet.d.ts.map +1 -1
  361. package/_types/constants/abis.d.ts +0 -3
  362. package/_types/constants/abis.d.ts.map +1 -1
  363. package/_types/constants/address.d.ts +2 -0
  364. package/_types/constants/address.d.ts.map +1 -1
  365. package/_types/errors/account.d.ts +11 -0
  366. package/_types/errors/account.d.ts.map +1 -1
  367. package/_types/errors/rpc.d.ts +9 -3
  368. package/_types/errors/rpc.d.ts.map +1 -1
  369. package/_types/errors/version.d.ts +1 -1
  370. package/_types/errors/version.d.ts.map +1 -1
  371. package/_types/index.d.ts +5 -3
  372. package/_types/index.d.ts.map +1 -1
  373. package/_types/types/eip1193.d.ts +239 -2
  374. package/_types/types/eip1193.d.ts.map +1 -1
  375. package/_types/types/multicall.d.ts +1 -1
  376. package/_types/types/multicall.d.ts.map +1 -1
  377. package/_types/types/utils.d.ts +2 -2
  378. package/_types/types/utils.d.ts.map +1 -1
  379. package/_types/utils/buildRequest.d.ts.map +1 -1
  380. package/_types/utils/errors/getNodeError.d.ts.map +1 -1
  381. package/_types/utils/formatters/transaction.d.ts +1 -1
  382. package/_types/utils/index.d.ts +1 -0
  383. package/_types/utils/index.d.ts.map +1 -1
  384. package/_types/utils/signature/hashTypedData.d.ts +2 -2
  385. package/_types/utils/signature/hashTypedData.d.ts.map +1 -1
  386. package/_types/utils/signature/serializeErc6492Signature.d.ts +7 -4
  387. package/_types/utils/signature/serializeErc6492Signature.d.ts.map +1 -1
  388. package/_types/utils/signature/serializeSignature.d.ts +8 -2
  389. package/_types/utils/signature/serializeSignature.d.ts.map +1 -1
  390. package/_types/utils/signature/verifyHash.d.ts +30 -0
  391. package/_types/utils/signature/verifyHash.d.ts.map +1 -0
  392. package/_types/zksync/chainConfig.d.ts +2 -2
  393. package/_types/zksync/formatters.d.ts +2 -2
  394. package/account-abstraction/accounts/createWebAuthnCredential.ts +7 -0
  395. package/account-abstraction/accounts/implementations/toCoinbaseSmartAccount.ts +817 -0
  396. package/account-abstraction/accounts/implementations/toSoladySmartAccount.ts +794 -0
  397. package/account-abstraction/accounts/toSmartAccount.ts +126 -0
  398. package/account-abstraction/accounts/toWebAuthnAccount.ts +56 -0
  399. package/account-abstraction/accounts/types.ts +208 -0
  400. package/account-abstraction/actions/bundler/estimateUserOperationGas.ts +170 -0
  401. package/account-abstraction/actions/bundler/getSupportedEntryPoints.ts +33 -0
  402. package/account-abstraction/actions/bundler/getUserOperation.ts +85 -0
  403. package/account-abstraction/actions/bundler/getUserOperationReceipt.ts +64 -0
  404. package/account-abstraction/actions/bundler/prepareUserOperation.ts +637 -0
  405. package/account-abstraction/actions/bundler/sendUserOperation.ts +149 -0
  406. package/account-abstraction/actions/bundler/waitForUserOperationReceipt.ts +139 -0
  407. package/account-abstraction/actions/paymaster/getPaymasterData.ts +135 -0
  408. package/account-abstraction/actions/paymaster/getPaymasterStubData.ts +138 -0
  409. package/account-abstraction/clients/createBundlerClient.ts +155 -0
  410. package/account-abstraction/clients/createPaymasterClient.ts +78 -0
  411. package/account-abstraction/clients/decorators/bundler.ts +296 -0
  412. package/account-abstraction/clients/decorators/paymaster.ts +81 -0
  413. package/account-abstraction/constants/abis.ts +1404 -0
  414. package/account-abstraction/constants/address.ts +4 -0
  415. package/account-abstraction/errors/bundler.ts +781 -0
  416. package/account-abstraction/errors/userOperation.ts +111 -0
  417. package/account-abstraction/index.ts +228 -0
  418. package/account-abstraction/package.json +6 -0
  419. package/account-abstraction/types/account.ts +21 -0
  420. package/account-abstraction/types/entryPointVersion.ts +24 -0
  421. package/account-abstraction/types/rpc.ts +29 -0
  422. package/account-abstraction/types/userOperation.ts +262 -0
  423. package/account-abstraction/utils/errors/getBundlerError.ts +309 -0
  424. package/account-abstraction/utils/errors/getUserOperationError.ts +153 -0
  425. package/account-abstraction/utils/formatters/userOperation.ts +31 -0
  426. package/account-abstraction/utils/formatters/userOperationGas.ts +26 -0
  427. package/account-abstraction/utils/formatters/userOperationReceipt.ts +24 -0
  428. package/account-abstraction/utils/formatters/userOperationRequest.ts +53 -0
  429. package/account-abstraction/utils/userOperation/getUserOperationHash.ts +138 -0
  430. package/account-abstraction/utils/userOperation/toPackedUserOperation.ts +64 -0
  431. package/accounts/index.ts +1 -1
  432. package/accounts/privateKeyToAccount.ts +5 -0
  433. package/accounts/toAccount.ts +3 -0
  434. package/accounts/types.ts +34 -12
  435. package/accounts/utils/parseAccount.ts +6 -3
  436. package/accounts/utils/sign.ts +24 -8
  437. package/accounts/utils/signMessage.ts +1 -7
  438. package/accounts/utils/signTypedData.ts +2 -7
  439. package/actions/wallet/sendTransaction.ts +48 -27
  440. package/actions/wallet/signMessage.ts +2 -1
  441. package/actions/wallet/signTransaction.ts +1 -2
  442. package/actions/wallet/signTypedData.ts +1 -1
  443. package/chains/definitions/bobaSepolia.ts +20 -0
  444. package/chains/index.ts +1 -0
  445. package/clients/decorators/public.ts +2 -3
  446. package/clients/decorators/wallet.ts +1 -2
  447. package/constants/abis.ts +0 -3
  448. package/constants/address.ts +4 -0
  449. package/errors/account.ts +22 -1
  450. package/errors/contract.ts +1 -1
  451. package/errors/rpc.ts +6 -6
  452. package/errors/version.ts +1 -1
  453. package/index.ts +20 -3
  454. package/package.json +7 -1
  455. package/types/eip1193.ts +314 -2
  456. package/types/multicall.ts +1 -1
  457. package/types/utils.ts +6 -5
  458. package/utils/buildRequest.ts +4 -2
  459. package/utils/errors/getNodeError.ts +1 -2
  460. package/utils/index.ts +6 -0
  461. package/utils/signature/hashTypedData.ts +6 -6
  462. package/utils/signature/serializeErc6492Signature.ts +17 -8
  463. package/utils/signature/serializeSignature.ts +24 -4
  464. package/utils/signature/verifyHash.ts +54 -0
@@ -0,0 +1,149 @@
1
+ import type { Address, Narrow } from 'abitype'
2
+ import { parseAccount } from '../../../accounts/utils/parseAccount.js'
3
+ import type { Client } from '../../../clients/createClient.js'
4
+ import type { Transport } from '../../../clients/transports/createTransport.js'
5
+ import { AccountNotFoundError } from '../../../errors/account.js'
6
+ import type { BaseError } from '../../../errors/base.js'
7
+ import type { ErrorType } from '../../../errors/utils.js'
8
+ import type { Chain } from '../../../types/chain.js'
9
+ import type { Hex } from '../../../types/misc.js'
10
+ import type { Assign, OneOf } from '../../../types/utils.js'
11
+ import type { RequestErrorType } from '../../../utils/buildRequest.js'
12
+ import { getAction } from '../../../utils/getAction.js'
13
+ import type { SmartAccount } from '../../accounts/types.js'
14
+ import type { PaymasterActions } from '../../clients/decorators/paymaster.js'
15
+ import type {
16
+ DeriveSmartAccount,
17
+ GetSmartAccountParameter,
18
+ } from '../../types/account.js'
19
+ import type {
20
+ DeriveEntryPointVersion,
21
+ EntryPointVersion,
22
+ } from '../../types/entryPointVersion.js'
23
+ import type {
24
+ UserOperation,
25
+ UserOperationCalls,
26
+ UserOperationRequest,
27
+ } from '../../types/userOperation.js'
28
+ import { getUserOperationError } from '../../utils/errors/getUserOperationError.js'
29
+ import {
30
+ type FormatUserOperationRequestErrorType,
31
+ formatUserOperationRequest,
32
+ } from '../../utils/formatters/userOperationRequest.js'
33
+ import {
34
+ type PrepareUserOperationErrorType,
35
+ type PrepareUserOperationParameters,
36
+ prepareUserOperation,
37
+ } from './prepareUserOperation.js'
38
+
39
+ export type SendUserOperationParameters<
40
+ account extends SmartAccount | undefined = SmartAccount | undefined,
41
+ accountOverride extends SmartAccount | undefined = SmartAccount | undefined,
42
+ calls extends readonly unknown[] = readonly unknown[],
43
+ //
44
+ _derivedAccount extends SmartAccount | undefined = DeriveSmartAccount<
45
+ account,
46
+ accountOverride
47
+ >,
48
+ _derivedVersion extends
49
+ EntryPointVersion = DeriveEntryPointVersion<_derivedAccount>,
50
+ > = Assign<
51
+ UserOperationRequest<_derivedVersion>,
52
+ OneOf<{ calls: UserOperationCalls<Narrow<calls>> } | { callData: Hex }> & {
53
+ paymaster?:
54
+ | Address
55
+ | true
56
+ | {
57
+ /** Retrieves paymaster-related User Operation properties to be used for sending the User Operation. */
58
+ getPaymasterData?: PaymasterActions['getPaymasterData'] | undefined
59
+ /** Retrieves paymaster-related User Operation properties to be used for gas estimation. */
60
+ getPaymasterStubData?:
61
+ | PaymasterActions['getPaymasterStubData']
62
+ | undefined
63
+ }
64
+ | undefined
65
+ /** Paymaster context to pass to `getPaymasterData` and `getPaymasterStubData` calls. */
66
+ paymasterContext?: unknown
67
+ }
68
+ > &
69
+ GetSmartAccountParameter<account, accountOverride>
70
+
71
+ export type SendUserOperationReturnType = Hex
72
+
73
+ export type SendUserOperationErrorType =
74
+ | FormatUserOperationRequestErrorType
75
+ | PrepareUserOperationErrorType
76
+ | RequestErrorType
77
+ | ErrorType
78
+
79
+ /**
80
+ * Broadcasts a User Operation to the Bundler.
81
+ *
82
+ * - Docs: https://viem.sh/actions/bundler/sendUserOperation
83
+ *
84
+ * @param client - Client to use
85
+ * @param parameters - {@link SendUserOperationParameters}
86
+ * @returns The User Operation hash. {@link SendUserOperationReturnType}
87
+ *
88
+ * @example
89
+ * import { createBundlerClient, http, parseEther } from 'viem'
90
+ * import { mainnet } from 'viem/chains'
91
+ * import { toSmartAccount } from 'viem/accounts'
92
+ * import { sendUserOperation } from 'viem/actions'
93
+ *
94
+ * const account = await toSmartAccount({ ... })
95
+ *
96
+ * const bundlerClient = createBundlerClient({
97
+ * chain: mainnet,
98
+ * transport: http(),
99
+ * })
100
+ *
101
+ * const values = await sendUserOperation(bundlerClient, {
102
+ * account,
103
+ * calls: [{ to: '0x...', value: parseEther('1') }],
104
+ * })
105
+ */
106
+ export async function sendUserOperation<
107
+ const calls extends readonly unknown[],
108
+ account extends SmartAccount | undefined,
109
+ accountOverride extends SmartAccount | undefined = undefined,
110
+ >(
111
+ client: Client<Transport, Chain | undefined, account>,
112
+ parameters: SendUserOperationParameters<account, accountOverride, calls>,
113
+ ) {
114
+ const { account: account_ = client.account } = parameters
115
+
116
+ if (!account_) throw new AccountNotFoundError()
117
+ const account = parseAccount(account_)
118
+
119
+ const request = await getAction(
120
+ client,
121
+ prepareUserOperation,
122
+ 'prepareUserOperation',
123
+ )(parameters as unknown as PrepareUserOperationParameters)
124
+
125
+ const signature =
126
+ parameters.signature ||
127
+ (await account.signUserOperation(request as UserOperation))
128
+
129
+ const rpcParameters = formatUserOperationRequest({
130
+ ...request,
131
+ signature,
132
+ } as UserOperation)
133
+
134
+ try {
135
+ return await client.request(
136
+ {
137
+ method: 'eth_sendUserOperation',
138
+ params: [rpcParameters, account.entryPoint.address],
139
+ },
140
+ { retryCount: 0 },
141
+ )
142
+ } catch (error) {
143
+ throw getUserOperationError(error as BaseError, {
144
+ ...(request as UserOperation),
145
+ calls: parameters.calls,
146
+ signature,
147
+ })
148
+ }
149
+ }
@@ -0,0 +1,139 @@
1
+ import type { Client } from '../../../clients/createClient.js'
2
+ import type { Transport } from '../../../clients/transports/createTransport.js'
3
+ import type { ErrorType } from '../../../errors/utils.js'
4
+ import type { Hash } from '../../../types/misc.js'
5
+ import type { Prettify } from '../../../types/utils.js'
6
+ import { getAction } from '../../../utils/getAction.js'
7
+ import { type ObserveErrorType, observe } from '../../../utils/observe.js'
8
+ import { type PollErrorType, poll } from '../../../utils/poll.js'
9
+ import { stringify } from '../../../utils/stringify.js'
10
+ import {
11
+ WaitForUserOperationReceiptTimeoutError,
12
+ type WaitForUserOperationReceiptTimeoutErrorType,
13
+ } from '../../errors/userOperation.js'
14
+ import type { UserOperationReceipt } from '../../types/userOperation.js'
15
+ import {
16
+ type GetUserOperationReceiptErrorType,
17
+ getUserOperationReceipt,
18
+ } from './getUserOperationReceipt.js'
19
+
20
+ export type WaitForUserOperationReceiptParameters = {
21
+ /** The hash of the User Operation. */
22
+ hash: Hash
23
+ /**
24
+ * Polling frequency (in ms). Defaults to the client's pollingInterval config.
25
+ * @default client.pollingInterval
26
+ */
27
+ pollingInterval?: number | undefined
28
+ /**
29
+ * The number of times to retry.
30
+ * @default 6
31
+ */
32
+ retryCount?: number | undefined
33
+ /** Optional timeout (in ms) to wait before stopping polling. */
34
+ timeout?: number | undefined
35
+ }
36
+
37
+ export type WaitForUserOperationReceiptReturnType =
38
+ Prettify<UserOperationReceipt>
39
+
40
+ export type WaitForUserOperationReceiptErrorType =
41
+ | WaitForUserOperationReceiptTimeoutErrorType
42
+ | PollErrorType
43
+ | ObserveErrorType
44
+ | ErrorType
45
+
46
+ /**
47
+ * Waits for the User Operation to be included on a [Block](https://viem.sh/docs/glossary/terms#block) (one confirmation), and then returns the User Operation receipt.
48
+ *
49
+ * - Docs: https://viem.sh/docs/actions/bundler/waitForUserOperationReceipt
50
+ *
51
+ * @param client - Client to use
52
+ * @param parameters - {@link WaitForUserOperationReceiptParameters}
53
+ * @returns The receipt. {@link WaitForUserOperationReceiptReturnType}
54
+ *
55
+ * @example
56
+ * import { createBundlerClient, http } from 'viem'
57
+ * import { mainnet } from 'viem/chains'
58
+ * import { waitForUserOperationReceipt } from 'viem/actions'
59
+ *
60
+ * const client = createBundlerClient({
61
+ * chain: mainnet,
62
+ * transport: http(),
63
+ * })
64
+ *
65
+ * const receipt = await waitForUserOperationReceipt(client, {
66
+ * hash: '0x4ca7ee652d57678f26e887c149ab0735f41de37bcad58c9f6d3ed5824f15b74d',
67
+ * })
68
+ */
69
+ export function waitForUserOperationReceipt(
70
+ client: Client<Transport>,
71
+ parameters: WaitForUserOperationReceiptParameters,
72
+ ): Promise<WaitForUserOperationReceiptReturnType> {
73
+ const {
74
+ hash,
75
+ pollingInterval = client.pollingInterval,
76
+ retryCount,
77
+ timeout = 120_000,
78
+ } = parameters
79
+
80
+ let count = 0
81
+ const observerId = stringify([
82
+ 'waitForUserOperationReceipt',
83
+ client.uid,
84
+ hash,
85
+ ])
86
+
87
+ return new Promise((resolve, reject) => {
88
+ const unobserve = observe(observerId, { resolve, reject }, (emit) => {
89
+ const done = (fn: () => void) => {
90
+ unpoll()
91
+ fn()
92
+ unobserve()
93
+ }
94
+
95
+ const unpoll = poll(
96
+ async () => {
97
+ if (retryCount && count >= retryCount)
98
+ done(() =>
99
+ emit.reject(
100
+ new WaitForUserOperationReceiptTimeoutError({ hash }),
101
+ ),
102
+ )
103
+
104
+ try {
105
+ const receipt = await getAction(
106
+ client,
107
+ getUserOperationReceipt,
108
+ 'getUserOperationReceipt',
109
+ )({ hash })
110
+ done(() => emit.resolve(receipt))
111
+ } catch (err) {
112
+ const error = err as GetUserOperationReceiptErrorType
113
+ if (error.name !== 'UserOperationReceiptNotFoundError')
114
+ done(() => emit.reject(error))
115
+ }
116
+
117
+ count++
118
+ },
119
+ {
120
+ emitOnBegin: true,
121
+ interval: pollingInterval,
122
+ },
123
+ )
124
+
125
+ if (timeout)
126
+ setTimeout(
127
+ () =>
128
+ done(() =>
129
+ emit.reject(
130
+ new WaitForUserOperationReceiptTimeoutError({ hash }),
131
+ ),
132
+ ),
133
+ timeout,
134
+ )
135
+
136
+ return unpoll
137
+ })
138
+ })
139
+ }
@@ -0,0 +1,135 @@
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 { Hex } from '../../../types/misc.js'
6
+ import type { OneOf, PartialBy, Prettify } from '../../../types/utils.js'
7
+ import { hexToBigInt } from '../../../utils/encoding/fromHex.js'
8
+ import { numberToHex } from '../../../utils/encoding/toHex.js'
9
+ import type { UserOperation } from '../../types/userOperation.js'
10
+ import {
11
+ type FormatUserOperationRequestErrorType,
12
+ formatUserOperationRequest,
13
+ } from '../../utils/formatters/userOperationRequest.js'
14
+
15
+ export type GetPaymasterDataParameters = OneOf<
16
+ | PartialBy<
17
+ Pick<
18
+ UserOperation<'0.6'>,
19
+ | 'callData'
20
+ | 'callGasLimit'
21
+ | 'initCode'
22
+ | 'maxFeePerGas'
23
+ | 'maxPriorityFeePerGas'
24
+ | 'nonce'
25
+ | 'sender'
26
+ | 'preVerificationGas'
27
+ | 'verificationGasLimit'
28
+ >,
29
+ | 'callGasLimit'
30
+ | 'initCode'
31
+ | 'maxFeePerGas'
32
+ | 'maxPriorityFeePerGas'
33
+ | 'preVerificationGas'
34
+ | 'verificationGasLimit'
35
+ >
36
+ | PartialBy<
37
+ Pick<
38
+ UserOperation<'0.7'>,
39
+ | 'callData'
40
+ | 'callGasLimit'
41
+ | 'factory'
42
+ | 'factoryData'
43
+ | 'maxFeePerGas'
44
+ | 'maxPriorityFeePerGas'
45
+ | 'nonce'
46
+ | 'sender'
47
+ | 'preVerificationGas'
48
+ | 'verificationGasLimit'
49
+ >,
50
+ | 'callGasLimit'
51
+ | 'factory'
52
+ | 'factoryData'
53
+ | 'maxFeePerGas'
54
+ | 'maxPriorityFeePerGas'
55
+ | 'preVerificationGas'
56
+ | 'verificationGasLimit'
57
+ >
58
+ > & {
59
+ context?: unknown | undefined
60
+ chainId: number
61
+ entryPointAddress: Address
62
+ }
63
+
64
+ export type GetPaymasterDataReturnType = Prettify<
65
+ OneOf<
66
+ | { paymasterAndData: Hex }
67
+ | {
68
+ paymaster: Address
69
+ paymasterData: Hex
70
+ paymasterVerificationGasLimit: bigint
71
+ paymasterPostOpGasLimit: bigint
72
+ }
73
+ >
74
+ >
75
+
76
+ export type GetPaymasterDataErrorType =
77
+ | FormatUserOperationRequestErrorType
78
+ | ErrorType
79
+
80
+ /**
81
+ * Retrieves paymaster-related User Operation properties to be used for sending the User Operation.
82
+ *
83
+ * - Docs: https://viem.sh/account-abstraction/actions/paymaster/getPaymasterData
84
+ *
85
+ * @param client - Client to use
86
+ * @param parameters - {@link GetPaymasterDataParameters}
87
+ * @returns Paymaster-related User Operation properties. {@link GetPaymasterDataReturnType}
88
+ *
89
+ * @example
90
+ * import { http } from 'viem'
91
+ * import { createPaymasterClient, getPaymasterData } from 'viem/account-abstraction'
92
+ *
93
+ * const paymasterClient = createPaymasterClient({
94
+ * transport: http('https://...'),
95
+ * })
96
+ *
97
+ * const userOperation = { ... }
98
+ *
99
+ * const values = await getPaymasterData(paymasterClient, {
100
+ * chainId: 1,
101
+ * entryPointAddress: '0x...',
102
+ * ...userOperation,
103
+ * })
104
+ */
105
+ export async function getPaymasterData(
106
+ client: Client<Transport>,
107
+ parameters: GetPaymasterDataParameters,
108
+ ): Promise<GetPaymasterDataReturnType> {
109
+ const { chainId, entryPointAddress, context, ...userOperation } = parameters
110
+ const request = formatUserOperationRequest(userOperation)
111
+ const { paymasterPostOpGasLimit, paymasterVerificationGasLimit, ...rest } =
112
+ await client.request({
113
+ method: 'pm_getPaymasterData',
114
+ params: [
115
+ {
116
+ ...request,
117
+ callGasLimit: request.callGasLimit ?? '0x0',
118
+ verificationGasLimit: request.verificationGasLimit ?? '0x0',
119
+ preVerificationGas: request.preVerificationGas ?? '0x0',
120
+ },
121
+ entryPointAddress,
122
+ numberToHex(chainId),
123
+ context,
124
+ ],
125
+ })
126
+ return {
127
+ ...rest,
128
+ ...(paymasterPostOpGasLimit && {
129
+ paymasterPostOpGasLimit: hexToBigInt(paymasterPostOpGasLimit),
130
+ }),
131
+ ...(paymasterVerificationGasLimit && {
132
+ paymasterVerificationGasLimit: hexToBigInt(paymasterVerificationGasLimit),
133
+ }),
134
+ } as unknown as GetPaymasterDataReturnType
135
+ }
@@ -0,0 +1,138 @@
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 { Hex } from '../../../types/misc.js'
6
+ import type { OneOf, PartialBy, Prettify } from '../../../types/utils.js'
7
+ import { hexToBigInt } from '../../../utils/encoding/fromHex.js'
8
+ import { numberToHex } from '../../../utils/encoding/toHex.js'
9
+ import type { UserOperation } from '../../types/userOperation.js'
10
+ import {
11
+ type FormatUserOperationRequestErrorType,
12
+ formatUserOperationRequest,
13
+ } from '../../utils/formatters/userOperationRequest.js'
14
+
15
+ export type GetPaymasterStubDataParameters = OneOf<
16
+ | PartialBy<
17
+ Pick<
18
+ UserOperation<'0.6'>,
19
+ | 'callData'
20
+ | 'callGasLimit'
21
+ | 'initCode'
22
+ | 'maxFeePerGas'
23
+ | 'maxPriorityFeePerGas'
24
+ | 'nonce'
25
+ | 'sender'
26
+ | 'preVerificationGas'
27
+ | 'verificationGasLimit'
28
+ >,
29
+ | 'callGasLimit'
30
+ | 'initCode'
31
+ | 'maxFeePerGas'
32
+ | 'maxPriorityFeePerGas'
33
+ | 'preVerificationGas'
34
+ | 'verificationGasLimit'
35
+ >
36
+ | PartialBy<
37
+ Pick<
38
+ UserOperation<'0.7'>,
39
+ | 'callData'
40
+ | 'callGasLimit'
41
+ | 'factory'
42
+ | 'factoryData'
43
+ | 'maxFeePerGas'
44
+ | 'maxPriorityFeePerGas'
45
+ | 'nonce'
46
+ | 'sender'
47
+ | 'preVerificationGas'
48
+ | 'verificationGasLimit'
49
+ >,
50
+ | 'callGasLimit'
51
+ | 'factory'
52
+ | 'factoryData'
53
+ | 'maxFeePerGas'
54
+ | 'maxPriorityFeePerGas'
55
+ | 'preVerificationGas'
56
+ | 'verificationGasLimit'
57
+ >
58
+ > & {
59
+ context?: unknown | undefined
60
+ chainId: number
61
+ entryPointAddress: Address
62
+ }
63
+
64
+ export type GetPaymasterStubDataReturnType = Prettify<
65
+ OneOf<
66
+ | { paymasterAndData: Hex }
67
+ | {
68
+ paymaster: Address
69
+ paymasterData: Hex
70
+ paymasterVerificationGasLimit: bigint
71
+ paymasterPostOpGasLimit: bigint
72
+ }
73
+ > & {
74
+ sponsor?: { name: string; icon?: string | undefined } | undefined
75
+ isFinal?: boolean | undefined
76
+ }
77
+ >
78
+
79
+ export type GetPaymasterStubDataErrorType =
80
+ | FormatUserOperationRequestErrorType
81
+ | ErrorType
82
+
83
+ /**
84
+ * Retrieves paymaster-related User Operation properties to be used for gas estimation.
85
+ *
86
+ * - Docs: https://viem.sh/account-abstraction/actions/paymaster/getPaymasterStubData
87
+ *
88
+ * @param client - Client to use
89
+ * @param parameters - {@link GetPaymasterStubDataParameters}
90
+ * @returns Paymaster-related User Operation properties. {@link GetPaymasterStubDataReturnType}
91
+ *
92
+ * @example
93
+ * import { http } from 'viem'
94
+ * import { createPaymasterClient, getPaymasterStubData } from 'viem/account-abstraction'
95
+ *
96
+ * const paymasterClient = createPaymasterClient({
97
+ * transport: http('https://...'),
98
+ * })
99
+ *
100
+ * const userOperation = { ... }
101
+ *
102
+ * const values = await getPaymasterStubData(paymasterClient, {
103
+ * chainId: 1,
104
+ * entryPointAddress: '0x...',
105
+ * ...userOperation,
106
+ * })
107
+ */
108
+ export async function getPaymasterStubData(
109
+ client: Client<Transport>,
110
+ parameters: GetPaymasterStubDataParameters,
111
+ ): Promise<GetPaymasterStubDataReturnType> {
112
+ const { chainId, entryPointAddress, context, ...userOperation } = parameters
113
+ const request = formatUserOperationRequest(userOperation)
114
+ const { paymasterPostOpGasLimit, paymasterVerificationGasLimit, ...rest } =
115
+ await client.request({
116
+ method: 'pm_getPaymasterStubData',
117
+ params: [
118
+ {
119
+ ...request,
120
+ callGasLimit: request.callGasLimit ?? '0x0',
121
+ verificationGasLimit: request.verificationGasLimit ?? '0x0',
122
+ preVerificationGas: request.preVerificationGas ?? '0x0',
123
+ },
124
+ entryPointAddress,
125
+ numberToHex(chainId),
126
+ context,
127
+ ],
128
+ })
129
+ return {
130
+ ...rest,
131
+ ...(paymasterPostOpGasLimit && {
132
+ paymasterPostOpGasLimit: hexToBigInt(paymasterPostOpGasLimit),
133
+ }),
134
+ ...(paymasterVerificationGasLimit && {
135
+ paymasterVerificationGasLimit: hexToBigInt(paymasterVerificationGasLimit),
136
+ }),
137
+ } as unknown as GetPaymasterStubDataReturnType
138
+ }