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,138 @@
1
+ import type { Address } from 'abitype'
2
+ import type { Hash } from '../../../types/misc.js'
3
+ import { encodeAbiParameters } from '../../../utils/abi/encodeAbiParameters.js'
4
+ import { concat } from '../../../utils/data/concat.js'
5
+ import { pad } from '../../../utils/data/pad.js'
6
+ import { numberToHex } from '../../../utils/encoding/toHex.js'
7
+ import { keccak256 } from '../../../utils/hash/keccak256.js'
8
+ import type { EntryPointVersion } from '../../types/entryPointVersion.js'
9
+ import type { UserOperation } from '../../types/userOperation.js'
10
+
11
+ export type GetUserOperationHashParameters<
12
+ entryPointVersion extends EntryPointVersion = EntryPointVersion,
13
+ > = {
14
+ chainId: number
15
+ entryPointAddress: Address
16
+ entryPointVersion: entryPointVersion | EntryPointVersion
17
+ userOperation: UserOperation<entryPointVersion>
18
+ }
19
+
20
+ export type GetUserOperationHashReturnType = Hash
21
+
22
+ export function getUserOperationHash<
23
+ entryPointVersion extends EntryPointVersion,
24
+ >(
25
+ parameters: GetUserOperationHashParameters<entryPointVersion>,
26
+ ): GetUserOperationHashReturnType {
27
+ const { chainId, entryPointAddress, entryPointVersion } = parameters
28
+ const userOperation = parameters.userOperation as UserOperation
29
+ const {
30
+ callData,
31
+ callGasLimit,
32
+ initCode,
33
+ maxFeePerGas,
34
+ maxPriorityFeePerGas,
35
+ nonce,
36
+ paymasterAndData,
37
+ preVerificationGas,
38
+ sender,
39
+ verificationGasLimit,
40
+ } = userOperation
41
+
42
+ const packedUserOp = (() => {
43
+ if (entryPointVersion === '0.6') {
44
+ return encodeAbiParameters(
45
+ [
46
+ { type: 'address' },
47
+ { type: 'uint256' },
48
+ { type: 'bytes32' },
49
+ { type: 'bytes32' },
50
+ { type: 'uint256' },
51
+ { type: 'uint256' },
52
+ { type: 'uint256' },
53
+ { type: 'uint256' },
54
+ { type: 'uint256' },
55
+ { type: 'bytes32' },
56
+ ],
57
+ [
58
+ sender,
59
+ nonce,
60
+ keccak256(initCode ?? '0x'),
61
+ keccak256(callData ?? '0x'),
62
+ callGasLimit,
63
+ verificationGasLimit,
64
+ preVerificationGas,
65
+ maxFeePerGas,
66
+ maxPriorityFeePerGas,
67
+ keccak256(paymasterAndData ?? '0x'),
68
+ ],
69
+ )
70
+ }
71
+
72
+ if (entryPointVersion === '0.7') {
73
+ const accountGasLimits = concat([
74
+ pad(numberToHex(userOperation.verificationGasLimit), { size: 16 }),
75
+ pad(numberToHex(userOperation.callGasLimit), { size: 16 }),
76
+ ])
77
+ const callData_hashed = keccak256(callData)
78
+ const gasFees = concat([
79
+ pad(numberToHex(userOperation.maxPriorityFeePerGas), { size: 16 }),
80
+ pad(numberToHex(userOperation.maxFeePerGas), { size: 16 }),
81
+ ])
82
+ const initCode_hashed = keccak256(
83
+ userOperation.factory && userOperation.factoryData
84
+ ? concat([userOperation.factory, userOperation.factoryData])
85
+ : '0x',
86
+ )
87
+ const paymasterAndData_hashed = keccak256(
88
+ userOperation.paymaster
89
+ ? concat([
90
+ userOperation.paymaster,
91
+ pad(
92
+ numberToHex(userOperation.paymasterVerificationGasLimit || 0),
93
+ {
94
+ size: 16,
95
+ },
96
+ ),
97
+ pad(numberToHex(userOperation.paymasterPostOpGasLimit || 0), {
98
+ size: 16,
99
+ }),
100
+ userOperation.paymasterData || '0x',
101
+ ])
102
+ : '0x',
103
+ )
104
+
105
+ return encodeAbiParameters(
106
+ [
107
+ { type: 'address' },
108
+ { type: 'uint256' },
109
+ { type: 'bytes32' },
110
+ { type: 'bytes32' },
111
+ { type: 'bytes32' },
112
+ { type: 'uint256' },
113
+ { type: 'bytes32' },
114
+ { type: 'bytes32' },
115
+ ],
116
+ [
117
+ sender,
118
+ nonce,
119
+ initCode_hashed,
120
+ callData_hashed,
121
+ accountGasLimits,
122
+ preVerificationGas,
123
+ gasFees,
124
+ paymasterAndData_hashed,
125
+ ],
126
+ )
127
+ }
128
+
129
+ throw new Error(`entryPointVersion "${entryPointVersion}" not supported.`)
130
+ })()
131
+
132
+ return keccak256(
133
+ encodeAbiParameters(
134
+ [{ type: 'bytes32' }, { type: 'address' }, { type: 'uint256' }],
135
+ [keccak256(packedUserOp), entryPointAddress, BigInt(chainId)],
136
+ ),
137
+ )
138
+ }
@@ -0,0 +1,64 @@
1
+ import { concat } from '../../../utils/data/concat.js'
2
+ import { pad } from '../../../utils/data/pad.js'
3
+ import { numberToHex } from '../../../utils/index.js'
4
+ import type {
5
+ PackedUserOperation,
6
+ UserOperation,
7
+ } from '../../types/userOperation.js'
8
+
9
+ export function toPackedUserOperation(
10
+ userOperation: UserOperation,
11
+ ): PackedUserOperation {
12
+ const {
13
+ callGasLimit,
14
+ callData,
15
+ factory,
16
+ factoryData,
17
+ maxPriorityFeePerGas,
18
+ maxFeePerGas,
19
+ paymaster,
20
+ paymasterData,
21
+ paymasterPostOpGasLimit,
22
+ paymasterVerificationGasLimit,
23
+ sender,
24
+ signature = '0x',
25
+ verificationGasLimit,
26
+ } = userOperation
27
+
28
+ const accountGasLimits = concat([
29
+ pad(numberToHex(verificationGasLimit || 0n), { size: 16 }),
30
+ pad(numberToHex(callGasLimit || 0n), { size: 16 }),
31
+ ])
32
+ const initCode =
33
+ factory && factoryData ? concat([factory, factoryData]) : '0x'
34
+ const gasFees = concat([
35
+ pad(numberToHex(maxPriorityFeePerGas || 0n), { size: 16 }),
36
+ pad(numberToHex(maxFeePerGas || 0n), { size: 16 }),
37
+ ])
38
+ const nonce = userOperation.nonce ?? 0n
39
+ const paymasterAndData = paymaster
40
+ ? concat([
41
+ paymaster,
42
+ pad(numberToHex(paymasterVerificationGasLimit || 0n), {
43
+ size: 16,
44
+ }),
45
+ pad(numberToHex(paymasterPostOpGasLimit || 0n), {
46
+ size: 16,
47
+ }),
48
+ paymasterData || '0x',
49
+ ])
50
+ : '0x'
51
+ const preVerificationGas = userOperation.preVerificationGas ?? 0n
52
+
53
+ return {
54
+ accountGasLimits,
55
+ callData,
56
+ initCode,
57
+ gasFees,
58
+ nonce,
59
+ paymasterAndData,
60
+ preVerificationGas,
61
+ sender,
62
+ signature,
63
+ }
64
+ }
package/accounts/index.ts CHANGED
@@ -35,7 +35,7 @@ export {
35
35
  type PrivateKeyToAccountErrorType,
36
36
  privateKeyToAccount,
37
37
  } from './privateKeyToAccount.js'
38
- export { type ToAccountErrorType, toAccount } from './toAccount.js'
38
+
39
39
  export type {
40
40
  Account,
41
41
  AccountSource,
@@ -11,6 +11,7 @@ import {
11
11
  type PublicKeyToAddressErrorType,
12
12
  publicKeyToAddress,
13
13
  } from './utils/publicKeyToAddress.js'
14
+ import { type SignErrorType, sign } from './utils/sign.js'
14
15
  import { type SignMessageErrorType, signMessage } from './utils/signMessage.js'
15
16
  import {
16
17
  type SignTransactionErrorType,
@@ -29,6 +30,7 @@ export type PrivateKeyToAccountErrorType =
29
30
  | ToAccountErrorType
30
31
  | ToHexErrorType
31
32
  | PublicKeyToAddressErrorType
33
+ | SignErrorType
32
34
  | SignMessageErrorType
33
35
  | SignTransactionErrorType
34
36
  | SignTypedDataErrorType
@@ -50,6 +52,9 @@ export function privateKeyToAccount(
50
52
  const account = toAccount({
51
53
  address,
52
54
  nonceManager,
55
+ async sign({ hash }) {
56
+ return sign({ hash, privateKey, to: 'hex' })
57
+ },
53
58
  async signMessage({ message }) {
54
59
  return signMessage({ message, privateKey })
55
60
  },
@@ -1,3 +1,5 @@
1
+ // TODO(v3): Rename to `toLocalAccount` + add `source` property to define source (privateKey, mnemonic, hdKey, etc).
2
+
1
3
  import type { Address } from 'abitype'
2
4
 
3
5
  import {
@@ -48,6 +50,7 @@ export function toAccount<accountSource extends AccountSource>(
48
50
  return {
49
51
  address: source.address,
50
52
  nonceManager: source.nonceManager,
53
+ sign: source.sign,
51
54
  signMessage: source.signMessage,
52
55
  signTransaction: source.signTransaction,
53
56
  signTypedData: source.signTypedData,
package/accounts/types.ts CHANGED
@@ -1,5 +1,6 @@
1
1
  import type { Address, TypedData } from 'abitype'
2
2
 
3
+ import type { SmartAccount } from '../account-abstraction/accounts/types.js'
3
4
  import type { HDKey } from '../types/account.js'
4
5
  import type { Hash, Hex, SignableMessage } from '../types/misc.js'
5
6
  import type {
@@ -7,19 +8,25 @@ import type {
7
8
  TransactionSerialized,
8
9
  } from '../types/transaction.js'
9
10
  import type { TypedDataDefinition } from '../types/typedData.js'
10
- import type { IsNarrowable, OneOf } from '../types/utils.js'
11
+ import type { IsNarrowable, OneOf, Prettify } from '../types/utils.js'
11
12
  import type { NonceManager } from '../utils/nonceManager.js'
12
13
  import type { GetTransactionType } from '../utils/transaction/getTransactionType.js'
13
14
  import type { SerializeTransactionFn } from '../utils/transaction/serializeTransaction.js'
14
15
 
15
16
  export type Account<address extends Address = Address> = OneOf<
16
- JsonRpcAccount<address> | LocalAccount<string, address>
17
+ JsonRpcAccount<address> | LocalAccount<string, address> | SmartAccount
17
18
  >
18
19
 
20
+ ///////////////////////////////////////////////////////////////////////////////////////////////////
21
+ // Sources
22
+ ///////////////////////////////////////////////////////////////////////////////////////////////////
23
+
19
24
  export type AccountSource = Address | CustomSource
20
25
  export type CustomSource = {
21
26
  address: Address
22
27
  nonceManager?: NonceManager | undefined
28
+ // TODO(v3): Make `sign` required.
29
+ sign?: (({ hash }: { hash: Hash }) => Promise<Hash>) | undefined
23
30
  signMessage: ({ message }: { message: SignableMessage }) => Promise<Hash>
24
31
  signTransaction: <
25
32
  serializer extends
@@ -48,6 +55,10 @@ export type CustomSource = {
48
55
  ) => Promise<Hash>
49
56
  }
50
57
 
58
+ ///////////////////////////////////////////////////////////////////////////////////////////////////
59
+ // Accounts
60
+ ///////////////////////////////////////////////////////////////////////////////////////////////////
61
+
51
62
  export type JsonRpcAccount<address extends Address = Address> = {
52
63
  address: address
53
64
  type: 'json-rpc'
@@ -56,16 +67,22 @@ export type JsonRpcAccount<address extends Address = Address> = {
56
67
  export type LocalAccount<
57
68
  source extends string = string,
58
69
  address extends Address = Address,
59
- > = CustomSource & {
60
- address: address
61
- publicKey: Hex
62
- source: source
63
- type: 'local'
64
- }
70
+ > = Prettify<
71
+ CustomSource & {
72
+ address: address
73
+ publicKey: Hex
74
+ source: source
75
+ type: 'local'
76
+ }
77
+ >
65
78
 
66
- export type HDAccount = LocalAccount<'hd'> & {
67
- getHdKey(): HDKey
68
- }
79
+ export type HDAccount = Prettify<
80
+ LocalAccount<'hd'> & {
81
+ getHdKey(): HDKey
82
+ // TODO(v3): This will be redundant.
83
+ sign: NonNullable<CustomSource['sign']>
84
+ }
85
+ >
69
86
 
70
87
  export type HDOptions =
71
88
  | {
@@ -85,4 +102,9 @@ export type HDOptions =
85
102
  path: `m/44'/60'/${string}`
86
103
  }
87
104
 
88
- export type PrivateKeyAccount = LocalAccount<'privateKey'>
105
+ export type PrivateKeyAccount = Prettify<
106
+ LocalAccount<'privateKey'> & {
107
+ // TODO(v3): This will be redundant.
108
+ sign: NonNullable<CustomSource['sign']>
109
+ }
110
+ >
@@ -5,7 +5,10 @@ import type { Account } from '../types.js'
5
5
 
6
6
  export type ParseAccountErrorType = ErrorType
7
7
 
8
- export function parseAccount(account: Address | Account): Account {
9
- if (typeof account === 'string') return { address: account, type: 'json-rpc' }
10
- return account
8
+ export function parseAccount<accountOrAddress extends Address | Account>(
9
+ account: accountOrAddress,
10
+ ): accountOrAddress extends Address ? Account : accountOrAddress {
11
+ if (typeof account === 'string')
12
+ return { address: account, type: 'json-rpc' } as any
13
+ return account as any
11
14
  }
@@ -3,17 +3,27 @@
3
3
  import { secp256k1 } from '@noble/curves/secp256k1'
4
4
 
5
5
  import type { ErrorType } from '../../errors/utils.js'
6
- import type { Hex, Signature } from '../../types/misc.js'
7
- import { type ToHexErrorType, numberToHex } from '../../utils/encoding/toHex.js'
6
+ import type { ByteArray, Hex, Signature } from '../../types/misc.js'
7
+ import {
8
+ type NumberToHexErrorType,
9
+ numberToHex,
10
+ } from '../../utils/encoding/toHex.js'
11
+ import { serializeSignature } from '../../utils/signature/serializeSignature.js'
8
12
 
9
- export type SignParameters = {
13
+ type To = 'object' | 'bytes' | 'hex'
14
+
15
+ export type SignParameters<to extends To = 'object'> = {
10
16
  hash: Hex
11
17
  privateKey: Hex
18
+ to?: to | To | undefined
12
19
  }
13
20
 
14
- export type SignReturnType = Signature
21
+ export type SignReturnType<to extends To = 'object'> =
22
+ | (to extends 'object' ? Signature : never)
23
+ | (to extends 'bytes' ? ByteArray : never)
24
+ | (to extends 'hex' ? Hex : never)
15
25
 
16
- export type SignErrorType = ToHexErrorType | ErrorType
26
+ export type SignErrorType = NumberToHexErrorType | ErrorType
17
27
 
18
28
  /**
19
29
  * @description Signs a hash with a given private key.
@@ -23,15 +33,21 @@ export type SignErrorType = ToHexErrorType | ErrorType
23
33
  *
24
34
  * @returns The signature.
25
35
  */
26
- export async function sign({
36
+ export async function sign<to extends To = 'object'>({
27
37
  hash,
28
38
  privateKey,
29
- }: SignParameters): Promise<SignReturnType> {
39
+ to = 'object',
40
+ }: SignParameters<to>): Promise<SignReturnType<to>> {
30
41
  const { r, s, recovery } = secp256k1.sign(hash.slice(2), privateKey.slice(2))
31
- return {
42
+ const signature = {
32
43
  r: numberToHex(r, { size: 32 }),
33
44
  s: numberToHex(s, { size: 32 }),
34
45
  v: recovery ? 28n : 27n,
35
46
  yParity: recovery,
36
47
  }
48
+ return (() => {
49
+ if (to === 'bytes' || to === 'hex')
50
+ return serializeSignature({ ...signature, to })
51
+ return signature
52
+ })() as SignReturnType<to>
37
53
  }
@@ -4,10 +4,6 @@ import {
4
4
  type HashMessageErrorType,
5
5
  hashMessage,
6
6
  } from '../../utils/signature/hashMessage.js'
7
- import {
8
- type SerializeSignatureErrorType,
9
- serializeSignature,
10
- } from '../../utils/signature/serializeSignature.js'
11
7
 
12
8
  import { type SignErrorType, sign } from './sign.js'
13
9
 
@@ -23,7 +19,6 @@ export type SignMessageReturnType = Hex
23
19
  export type SignMessageErrorType =
24
20
  | SignErrorType
25
21
  | HashMessageErrorType
26
- | SerializeSignatureErrorType
27
22
  | ErrorType
28
23
 
29
24
  /**
@@ -36,6 +31,5 @@ export async function signMessage({
36
31
  message,
37
32
  privateKey,
38
33
  }: SignMessageParameters): Promise<SignMessageReturnType> {
39
- const signature = await sign({ hash: hashMessage(message), privateKey })
40
- return serializeSignature(signature)
34
+ return await sign({ hash: hashMessage(message), privateKey, to: 'hex' })
41
35
  }
@@ -6,10 +6,6 @@ import {
6
6
  type HashTypedDataErrorType,
7
7
  hashTypedData,
8
8
  } from '../../utils/signature/hashTypedData.js'
9
- import {
10
- type SerializeSignatureErrorType,
11
- serializeSignature,
12
- } from '../../utils/signature/serializeSignature.js'
13
9
 
14
10
  import type { ErrorType } from '../../errors/utils.js'
15
11
  import { type SignErrorType, sign } from './sign.js'
@@ -27,7 +23,6 @@ export type SignTypedDataReturnType = Hex
27
23
  export type SignTypedDataErrorType =
28
24
  | HashTypedDataErrorType
29
25
  | SignErrorType
30
- | SerializeSignatureErrorType
31
26
  | ErrorType
32
27
 
33
28
  /**
@@ -44,9 +39,9 @@ export async function signTypedData<
44
39
  ): Promise<SignTypedDataReturnType> {
45
40
  const { privateKey, ...typedData } =
46
41
  parameters as unknown as SignTypedDataParameters
47
- const signature = await sign({
42
+ return await sign({
48
43
  hash: hashTypedData(typedData),
49
44
  privateKey,
45
+ to: 'hex',
50
46
  })
51
- return serializeSignature(signature)
52
47
  }
@@ -6,7 +6,12 @@ import {
6
6
  import type { SignTransactionErrorType } from '../../accounts/utils/signTransaction.js'
7
7
  import type { Client } from '../../clients/createClient.js'
8
8
  import type { Transport } from '../../clients/transports/createTransport.js'
9
- import { AccountNotFoundError } from '../../errors/account.js'
9
+ import {
10
+ AccountNotFoundError,
11
+ type AccountNotFoundErrorType,
12
+ AccountTypeNotSupportedError,
13
+ type AccountTypeNotSupportedErrorType,
14
+ } from '../../errors/account.js'
10
15
  import type { BaseError } from '../../errors/base.js'
11
16
  import type { ErrorType } from '../../errors/utils.js'
12
17
  import type { GetAccountParameter } from '../../types/account.js'
@@ -73,6 +78,8 @@ export type SendTransactionReturnType = Hash
73
78
  export type SendTransactionErrorType =
74
79
  | ParseAccountErrorType
75
80
  | GetTransactionErrorReturnType<
81
+ | AccountNotFoundErrorType
82
+ | AccountTypeNotSupportedErrorType
76
83
  | AssertCurrentChainErrorType
77
84
  | AssertRequestErrorType
78
85
  | GetChainIdErrorType
@@ -172,6 +179,36 @@ export async function sendTransaction<
172
179
  })
173
180
  }
174
181
 
182
+ if (account.type === 'json-rpc') {
183
+ const chainFormat = client.chain?.formatters?.transactionRequest?.format
184
+ const format = chainFormat || formatTransactionRequest
185
+
186
+ const request = format({
187
+ // Pick out extra data that might exist on the chain's transaction request type.
188
+ ...extract(rest, { format: chainFormat }),
189
+ accessList,
190
+ blobs,
191
+ chainId,
192
+ data,
193
+ from: account.address,
194
+ gas,
195
+ gasPrice,
196
+ maxFeePerBlobGas,
197
+ maxFeePerGas,
198
+ maxPriorityFeePerGas,
199
+ nonce,
200
+ to,
201
+ value,
202
+ } as TransactionRequest)
203
+ return await client.request(
204
+ {
205
+ method: 'eth_sendTransaction',
206
+ params: [request],
207
+ },
208
+ { retryCount: 0 },
209
+ )
210
+ }
211
+
175
212
  if (account.type === 'local') {
176
213
  // Prepare the request for signing (assign appropriate fees, etc.)
177
214
  const request = await getAction(
@@ -210,34 +247,18 @@ export async function sendTransaction<
210
247
  })
211
248
  }
212
249
 
213
- const chainFormat = client.chain?.formatters?.transactionRequest?.format
214
- const format = chainFormat || formatTransactionRequest
250
+ if (account.type === 'smart')
251
+ throw new AccountTypeNotSupportedError({
252
+ metaMessages: [
253
+ 'Consider using the `sendUserOperation` Action instead.',
254
+ ],
255
+ docsPath: '/docs/actions/bundler/sendUserOperation',
256
+ type: 'smart',
257
+ })
215
258
 
216
- const request = format({
217
- // Pick out extra data that might exist on the chain's transaction request type.
218
- ...extract(rest, { format: chainFormat }),
219
- accessList,
220
- blobs,
221
- chainId,
222
- data,
223
- from: account.address,
224
- gas,
225
- gasPrice,
226
- maxFeePerBlobGas,
227
- maxFeePerGas,
228
- maxPriorityFeePerGas,
229
- nonce,
230
- to,
231
- value,
232
- } as TransactionRequest)
233
- return await client.request(
234
- {
235
- method: 'eth_sendTransaction',
236
- params: [request],
237
- },
238
- { retryCount: 0 },
239
- )
259
+ throw new Error('incompatible account type.')
240
260
  } catch (err) {
261
+ if (err instanceof AccountTypeNotSupportedError) throw err
241
262
  throw getTransactionError(err as BaseError, {
242
263
  ...parameters,
243
264
  account,
@@ -94,7 +94,8 @@ export async function signMessage<
94
94
  docsPath: '/docs/actions/wallet/signMessage',
95
95
  })
96
96
  const account = parseAccount(account_)
97
- if (account.type === 'local') return account.signMessage({ message })
97
+
98
+ if (account.signMessage) return account.signMessage({ message })
98
99
 
99
100
  const message_ = (() => {
100
101
  if (typeof message === 'string') return stringToHex(message)
@@ -155,7 +155,7 @@ export async function signTransaction<
155
155
  const format =
156
156
  formatters?.transactionRequest?.format || formatTransactionRequest
157
157
 
158
- if (account.type === 'local') {
158
+ if (account.signTransaction)
159
159
  return account.signTransaction(
160
160
  {
161
161
  ...transaction,
@@ -163,7 +163,6 @@ export async function signTransaction<
163
163
  } as TransactionSerializable,
164
164
  { serializer: client.chain?.serializers?.transaction },
165
165
  ) as Promise<SignTransactionReturnType>
166
- }
167
166
 
168
167
  return await client.request(
169
168
  {
@@ -181,7 +181,7 @@ export async function signTypedData<
181
181
  // as we can't statically check this with TypeScript.
182
182
  validateTypedData({ domain, message, primaryType, types })
183
183
 
184
- if (account.type === 'local')
184
+ if (account.signTypedData)
185
185
  return account.signTypedData({ domain, message, primaryType, types })
186
186
 
187
187
  const typedData = serializeTypedData({ domain, message, primaryType, types })
@@ -0,0 +1,20 @@
1
+ import { defineChain } from '../../utils/chain/defineChain.js'
2
+
3
+ export const bobaSepolia = /*#__PURE__*/ defineChain({
4
+ id: 28882,
5
+ name: 'Boba Sepolia',
6
+ nativeCurrency: {
7
+ name: 'Ether',
8
+ symbol: 'ETH',
9
+ decimals: 18,
10
+ },
11
+ rpcUrls: {
12
+ default: { http: ['https://sepolia.boba.network'] },
13
+ },
14
+ blockExplorers: {
15
+ default: {
16
+ name: 'BOBAScan',
17
+ url: 'https://testnet.bobascan.com',
18
+ },
19
+ },
20
+ })
package/chains/index.ts CHANGED
@@ -40,6 +40,7 @@ export { blast } from './definitions/blast.js'
40
40
  export { blastSepolia } from './definitions/blastSepolia.js'
41
41
  export { bob } from './definitions/bob.js'
42
42
  export { boba } from './definitions/boba.js'
43
+ export { bobaSepolia } from './definitions/bobaSepolia.js'
43
44
  export { bronos } from './definitions/bronos.js'
44
45
  export { bronosTestnet } from './definitions/bronosTestnet.js'
45
46
  export { bsc } from './definitions/bsc.js'
@@ -945,7 +945,7 @@ export type PublicActions<
945
945
  type extends FeeValuesType = 'eip1559',
946
946
  >(
947
947
  args?: EstimateFeesPerGasParameters<chain, chainOverride, type> | undefined,
948
- ) => Promise<EstimateFeesPerGasReturnType>
948
+ ) => Promise<EstimateFeesPerGasReturnType<type>>
949
949
  /**
950
950
  * Returns a list of logs or hashes based on a [Filter](/docs/glossary/terms#filter) since the last time it was called.
951
951
  *
@@ -1417,11 +1417,10 @@ export type PublicActions<
1417
1417
  >,
1418
1418
  ) => Promise<
1419
1419
  PrepareTransactionRequestReturnType<
1420
- Chain,
1420
+ chain,
1421
1421
  account,
1422
1422
  chainOverride,
1423
1423
  accountOverride,
1424
- // @ts-expect-error
1425
1424
  request
1426
1425
  >
1427
1426
  >