viem 2.17.11 → 2.18.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (470) hide show
  1. package/CHANGELOG.md +20 -2
  2. package/_cjs/account-abstraction/accounts/createWebAuthnCredential.js +6 -0
  3. package/_cjs/account-abstraction/accounts/createWebAuthnCredential.js.map +1 -0
  4. package/_cjs/account-abstraction/accounts/implementations/toCoinbaseSmartAccount.js +688 -0
  5. package/_cjs/account-abstraction/accounts/implementations/toCoinbaseSmartAccount.js.map +1 -0
  6. package/_cjs/account-abstraction/accounts/implementations/toSoladySmartAccount.js +704 -0
  7. package/_cjs/account-abstraction/accounts/implementations/toSoladySmartAccount.js.map +1 -0
  8. package/_cjs/account-abstraction/accounts/toSmartAccount.js +93 -0
  9. package/_cjs/account-abstraction/accounts/toSmartAccount.js.map +1 -0
  10. package/_cjs/account-abstraction/accounts/toWebAuthnAccount.js +24 -0
  11. package/_cjs/account-abstraction/accounts/toWebAuthnAccount.js.map +1 -0
  12. package/_cjs/account-abstraction/accounts/types.js +3 -0
  13. package/_cjs/account-abstraction/accounts/types.js.map +1 -0
  14. package/_cjs/account-abstraction/actions/bundler/estimateUserOperationGas.js +37 -0
  15. package/_cjs/account-abstraction/actions/bundler/estimateUserOperationGas.js.map +1 -0
  16. package/_cjs/account-abstraction/actions/bundler/getSupportedEntryPoints.js +7 -0
  17. package/_cjs/account-abstraction/actions/bundler/getSupportedEntryPoints.js.map +1 -0
  18. package/_cjs/account-abstraction/actions/bundler/getUserOperation.js +22 -0
  19. package/_cjs/account-abstraction/actions/bundler/getUserOperation.js.map +1 -0
  20. package/_cjs/account-abstraction/actions/bundler/getUserOperationReceipt.js +15 -0
  21. package/_cjs/account-abstraction/actions/bundler/getUserOperationReceipt.js.map +1 -0
  22. package/_cjs/account-abstraction/actions/bundler/prepareUserOperation.js +239 -0
  23. package/_cjs/account-abstraction/actions/bundler/prepareUserOperation.js.map +1 -0
  24. package/_cjs/account-abstraction/actions/bundler/sendUserOperation.js +36 -0
  25. package/_cjs/account-abstraction/actions/bundler/sendUserOperation.js.map +1 -0
  26. package/_cjs/account-abstraction/actions/bundler/waitForUserOperationReceipt.js +48 -0
  27. package/_cjs/account-abstraction/actions/bundler/waitForUserOperationReceipt.js.map +1 -0
  28. package/_cjs/account-abstraction/actions/paymaster/getPaymasterData.js +34 -0
  29. package/_cjs/account-abstraction/actions/paymaster/getPaymasterData.js.map +1 -0
  30. package/_cjs/account-abstraction/actions/paymaster/getPaymasterStubData.js +34 -0
  31. package/_cjs/account-abstraction/actions/paymaster/getPaymasterStubData.js.map +1 -0
  32. package/_cjs/account-abstraction/clients/createBundlerClient.js +18 -0
  33. package/_cjs/account-abstraction/clients/createBundlerClient.js.map +1 -0
  34. package/_cjs/account-abstraction/clients/createPaymasterClient.js +17 -0
  35. package/_cjs/account-abstraction/clients/createPaymasterClient.js.map +1 -0
  36. package/_cjs/account-abstraction/clients/decorators/bundler.js +24 -0
  37. package/_cjs/account-abstraction/clients/decorators/bundler.js.map +1 -0
  38. package/_cjs/account-abstraction/clients/decorators/paymaster.js +12 -0
  39. package/_cjs/account-abstraction/clients/decorators/paymaster.js.map +1 -0
  40. package/_cjs/account-abstraction/constants/abis.js +1318 -0
  41. package/_cjs/account-abstraction/constants/abis.js.map +1 -0
  42. package/_cjs/account-abstraction/constants/address.js +6 -0
  43. package/_cjs/account-abstraction/constants/address.js.map +1 -0
  44. package/_cjs/account-abstraction/errors/bundler.js +813 -0
  45. package/_cjs/account-abstraction/errors/bundler.js.map +1 -0
  46. package/_cjs/account-abstraction/errors/userOperation.js +91 -0
  47. package/_cjs/account-abstraction/errors/userOperation.js.map +1 -0
  48. package/_cjs/account-abstraction/index.js +90 -0
  49. package/_cjs/account-abstraction/index.js.map +1 -0
  50. package/_cjs/account-abstraction/types/account.js +3 -0
  51. package/_cjs/account-abstraction/types/account.js.map +1 -0
  52. package/_cjs/account-abstraction/types/entryPointVersion.js +3 -0
  53. package/_cjs/account-abstraction/types/entryPointVersion.js.map +1 -0
  54. package/_cjs/account-abstraction/types/rpc.js +3 -0
  55. package/_cjs/account-abstraction/types/rpc.js.map +1 -0
  56. package/_cjs/account-abstraction/types/userOperation.js +3 -0
  57. package/_cjs/account-abstraction/types/userOperation.js.map +1 -0
  58. package/_cjs/account-abstraction/utils/errors/getBundlerError.js +186 -0
  59. package/_cjs/account-abstraction/utils/errors/getBundlerError.js.map +1 -0
  60. package/_cjs/account-abstraction/utils/errors/getUserOperationError.js +87 -0
  61. package/_cjs/account-abstraction/utils/errors/getUserOperationError.js.map +1 -0
  62. package/_cjs/account-abstraction/utils/formatters/userOperation.js +24 -0
  63. package/_cjs/account-abstraction/utils/formatters/userOperation.js.map +1 -0
  64. package/_cjs/account-abstraction/utils/formatters/userOperationGas.js +18 -0
  65. package/_cjs/account-abstraction/utils/formatters/userOperationGas.js.map +1 -0
  66. package/_cjs/account-abstraction/utils/formatters/userOperationReceipt.js +18 -0
  67. package/_cjs/account-abstraction/utils/formatters/userOperationReceipt.js.map +1 -0
  68. package/_cjs/account-abstraction/utils/formatters/userOperationRequest.js +43 -0
  69. package/_cjs/account-abstraction/utils/formatters/userOperationRequest.js.map +1 -0
  70. package/_cjs/account-abstraction/utils/userOperation/getUserOperationHash.js +88 -0
  71. package/_cjs/account-abstraction/utils/userOperation/getUserOperationHash.js.map +1 -0
  72. package/_cjs/account-abstraction/utils/userOperation/toPackedUserOperation.js +44 -0
  73. package/_cjs/account-abstraction/utils/userOperation/toPackedUserOperation.js.map +1 -0
  74. package/_cjs/accounts/index.js.map +1 -1
  75. package/_cjs/accounts/privateKeyToAccount.js +4 -0
  76. package/_cjs/accounts/privateKeyToAccount.js.map +1 -1
  77. package/_cjs/accounts/toAccount.js +1 -0
  78. package/_cjs/accounts/toAccount.js.map +1 -1
  79. package/_cjs/accounts/utils/parseAccount.js.map +1 -1
  80. package/_cjs/accounts/utils/sign.js +8 -2
  81. package/_cjs/accounts/utils/sign.js.map +1 -1
  82. package/_cjs/accounts/utils/signMessage.js +1 -3
  83. package/_cjs/accounts/utils/signMessage.js.map +1 -1
  84. package/_cjs/accounts/utils/signTypedData.js +2 -3
  85. package/_cjs/accounts/utils/signTypedData.js.map +1 -1
  86. package/_cjs/actions/public/getLogs.js +2 -1
  87. package/_cjs/actions/public/getLogs.js.map +1 -1
  88. package/_cjs/actions/wallet/sendTransaction.js +35 -22
  89. package/_cjs/actions/wallet/sendTransaction.js.map +1 -1
  90. package/_cjs/actions/wallet/signMessage.js +1 -1
  91. package/_cjs/actions/wallet/signMessage.js.map +1 -1
  92. package/_cjs/actions/wallet/signTransaction.js +1 -2
  93. package/_cjs/actions/wallet/signTransaction.js.map +1 -1
  94. package/_cjs/actions/wallet/signTypedData.js +1 -1
  95. package/_cjs/actions/wallet/signTypedData.js.map +1 -1
  96. package/_cjs/chains/definitions/bobaSepolia.js +1 -0
  97. package/_cjs/chains/definitions/bobaSepolia.js.map +1 -1
  98. package/_cjs/chains/definitions/cronoszkEVMTestnet.js +24 -0
  99. package/_cjs/chains/definitions/cronoszkEVMTestnet.js.map +1 -0
  100. package/_cjs/chains/index.js +8 -6
  101. package/_cjs/chains/index.js.map +1 -1
  102. package/_cjs/constants/abis.js +0 -3
  103. package/_cjs/constants/abis.js.map +1 -1
  104. package/_cjs/constants/address.js +3 -1
  105. package/_cjs/constants/address.js.map +1 -1
  106. package/_cjs/errors/account.js +17 -2
  107. package/_cjs/errors/account.js.map +1 -1
  108. package/_cjs/errors/contract.js +1 -1
  109. package/_cjs/errors/contract.js.map +1 -1
  110. package/_cjs/errors/rpc.js +6 -6
  111. package/_cjs/errors/rpc.js.map +1 -1
  112. package/_cjs/errors/version.js +1 -1
  113. package/_cjs/errors/version.js.map +1 -1
  114. package/_cjs/index.js +5 -3
  115. package/_cjs/index.js.map +1 -1
  116. package/_cjs/types/eip1193.js.map +1 -1
  117. package/_cjs/utils/abi/parseEventLogs.js +70 -2
  118. package/_cjs/utils/abi/parseEventLogs.js.map +1 -1
  119. package/_cjs/utils/buildRequest.js +4 -2
  120. package/_cjs/utils/buildRequest.js.map +1 -1
  121. package/_cjs/utils/errors/getNodeError.js +1 -2
  122. package/_cjs/utils/errors/getNodeError.js.map +1 -1
  123. package/_cjs/utils/index.js +3 -1
  124. package/_cjs/utils/index.js.map +1 -1
  125. package/_cjs/utils/signature/serializeErc6492Signature.js +6 -2
  126. package/_cjs/utils/signature/serializeErc6492Signature.js.map +1 -1
  127. package/_cjs/utils/signature/serializeSignature.js +6 -2
  128. package/_cjs/utils/signature/serializeSignature.js.map +1 -1
  129. package/_cjs/utils/signature/verifyHash.js +10 -0
  130. package/_cjs/utils/signature/verifyHash.js.map +1 -0
  131. package/_esm/account-abstraction/accounts/createWebAuthnCredential.js +3 -0
  132. package/_esm/account-abstraction/accounts/createWebAuthnCredential.js.map +1 -0
  133. package/_esm/account-abstraction/accounts/implementations/toCoinbaseSmartAccount.js +709 -0
  134. package/_esm/account-abstraction/accounts/implementations/toCoinbaseSmartAccount.js.map +1 -0
  135. package/_esm/account-abstraction/accounts/implementations/toSoladySmartAccount.js +718 -0
  136. package/_esm/account-abstraction/accounts/implementations/toSoladySmartAccount.js.map +1 -0
  137. package/_esm/account-abstraction/accounts/toSmartAccount.js +96 -0
  138. package/_esm/account-abstraction/accounts/toSmartAccount.js.map +1 -0
  139. package/_esm/account-abstraction/accounts/toWebAuthnAccount.js +26 -0
  140. package/_esm/account-abstraction/accounts/toWebAuthnAccount.js.map +1 -0
  141. package/_esm/account-abstraction/accounts/types.js +2 -0
  142. package/_esm/account-abstraction/accounts/types.js.map +1 -0
  143. package/_esm/account-abstraction/actions/bundler/estimateUserOperationGas.js +61 -0
  144. package/_esm/account-abstraction/actions/bundler/estimateUserOperationGas.js.map +1 -0
  145. package/_esm/account-abstraction/actions/bundler/getSupportedEntryPoints.js +25 -0
  146. package/_esm/account-abstraction/actions/bundler/getSupportedEntryPoints.js.map +1 -0
  147. package/_esm/account-abstraction/actions/bundler/getUserOperation.js +42 -0
  148. package/_esm/account-abstraction/actions/bundler/getUserOperation.js.map +1 -0
  149. package/_esm/account-abstraction/actions/bundler/getUserOperationReceipt.js +35 -0
  150. package/_esm/account-abstraction/actions/bundler/getUserOperationReceipt.js.map +1 -0
  151. package/_esm/account-abstraction/actions/bundler/prepareUserOperation.js +323 -0
  152. package/_esm/account-abstraction/actions/bundler/prepareUserOperation.js.map +1 -0
  153. package/_esm/account-abstraction/actions/bundler/sendUserOperation.js +60 -0
  154. package/_esm/account-abstraction/actions/bundler/sendUserOperation.js.map +1 -0
  155. package/_esm/account-abstraction/actions/bundler/waitForUserOperationReceipt.js +68 -0
  156. package/_esm/account-abstraction/actions/bundler/waitForUserOperationReceipt.js.map +1 -0
  157. package/_esm/account-abstraction/actions/paymaster/getPaymasterData.js +56 -0
  158. package/_esm/account-abstraction/actions/paymaster/getPaymasterData.js.map +1 -0
  159. package/_esm/account-abstraction/actions/paymaster/getPaymasterStubData.js +56 -0
  160. package/_esm/account-abstraction/actions/paymaster/getPaymasterStubData.js.map +1 -0
  161. package/_esm/account-abstraction/clients/createBundlerClient.js +15 -0
  162. package/_esm/account-abstraction/clients/createBundlerClient.js.map +1 -0
  163. package/_esm/account-abstraction/clients/createPaymasterClient.js +14 -0
  164. package/_esm/account-abstraction/clients/createPaymasterClient.js.map +1 -0
  165. package/_esm/account-abstraction/clients/decorators/bundler.js +21 -0
  166. package/_esm/account-abstraction/clients/decorators/bundler.js.map +1 -0
  167. package/_esm/account-abstraction/clients/decorators/paymaster.js +9 -0
  168. package/_esm/account-abstraction/clients/decorators/paymaster.js.map +1 -0
  169. package/_esm/account-abstraction/constants/abis.js +1315 -0
  170. package/_esm/account-abstraction/constants/abis.js.map +1 -0
  171. package/_esm/account-abstraction/constants/address.js +3 -0
  172. package/_esm/account-abstraction/constants/address.js.map +1 -0
  173. package/_esm/account-abstraction/errors/bundler.js +774 -0
  174. package/_esm/account-abstraction/errors/bundler.js.map +1 -0
  175. package/_esm/account-abstraction/errors/userOperation.js +84 -0
  176. package/_esm/account-abstraction/errors/userOperation.js.map +1 -0
  177. package/_esm/account-abstraction/index.js +31 -0
  178. package/_esm/account-abstraction/index.js.map +1 -0
  179. package/_esm/account-abstraction/types/account.js +2 -0
  180. package/_esm/account-abstraction/types/account.js.map +1 -0
  181. package/_esm/account-abstraction/types/entryPointVersion.js +2 -0
  182. package/_esm/account-abstraction/types/entryPointVersion.js.map +1 -0
  183. package/_esm/account-abstraction/types/rpc.js +2 -0
  184. package/_esm/account-abstraction/types/rpc.js.map +1 -0
  185. package/_esm/account-abstraction/types/userOperation.js +2 -0
  186. package/_esm/account-abstraction/types/userOperation.js.map +1 -0
  187. package/_esm/account-abstraction/utils/errors/getBundlerError.js +183 -0
  188. package/_esm/account-abstraction/utils/errors/getBundlerError.js.map +1 -0
  189. package/_esm/account-abstraction/utils/errors/getUserOperationError.js +85 -0
  190. package/_esm/account-abstraction/utils/errors/getUserOperationError.js.map +1 -0
  191. package/_esm/account-abstraction/utils/formatters/userOperation.js +21 -0
  192. package/_esm/account-abstraction/utils/formatters/userOperation.js.map +1 -0
  193. package/_esm/account-abstraction/utils/formatters/userOperationGas.js +15 -0
  194. package/_esm/account-abstraction/utils/formatters/userOperationGas.js.map +1 -0
  195. package/_esm/account-abstraction/utils/formatters/userOperationReceipt.js +15 -0
  196. package/_esm/account-abstraction/utils/formatters/userOperationReceipt.js.map +1 -0
  197. package/_esm/account-abstraction/utils/formatters/userOperationRequest.js +40 -0
  198. package/_esm/account-abstraction/utils/formatters/userOperationRequest.js.map +1 -0
  199. package/_esm/account-abstraction/utils/userOperation/getUserOperationHash.js +85 -0
  200. package/_esm/account-abstraction/utils/userOperation/getUserOperationHash.js.map +1 -0
  201. package/_esm/account-abstraction/utils/userOperation/toPackedUserOperation.js +41 -0
  202. package/_esm/account-abstraction/utils/userOperation/toPackedUserOperation.js.map +1 -0
  203. package/_esm/accounts/index.js.map +1 -1
  204. package/_esm/accounts/privateKeyToAccount.js +4 -0
  205. package/_esm/accounts/privateKeyToAccount.js.map +1 -1
  206. package/_esm/accounts/toAccount.js +2 -0
  207. package/_esm/accounts/toAccount.js.map +1 -1
  208. package/_esm/accounts/utils/parseAccount.js.map +1 -1
  209. package/_esm/accounts/utils/sign.js +9 -3
  210. package/_esm/accounts/utils/sign.js.map +1 -1
  211. package/_esm/accounts/utils/signMessage.js +1 -3
  212. package/_esm/accounts/utils/signMessage.js.map +1 -1
  213. package/_esm/accounts/utils/signTypedData.js +2 -3
  214. package/_esm/accounts/utils/signTypedData.js.map +1 -1
  215. package/_esm/actions/public/getLogs.js +2 -1
  216. package/_esm/actions/public/getLogs.js.map +1 -1
  217. package/_esm/actions/wallet/sendTransaction.js +37 -24
  218. package/_esm/actions/wallet/sendTransaction.js.map +1 -1
  219. package/_esm/actions/wallet/signMessage.js +1 -1
  220. package/_esm/actions/wallet/signMessage.js.map +1 -1
  221. package/_esm/actions/wallet/signTransaction.js +1 -2
  222. package/_esm/actions/wallet/signTransaction.js.map +1 -1
  223. package/_esm/actions/wallet/signTypedData.js +1 -1
  224. package/_esm/actions/wallet/signTypedData.js.map +1 -1
  225. package/_esm/chains/definitions/bobaSepolia.js +1 -0
  226. package/_esm/chains/definitions/bobaSepolia.js.map +1 -1
  227. package/_esm/chains/definitions/cronoszkEVMTestnet.js +21 -0
  228. package/_esm/chains/definitions/cronoszkEVMTestnet.js.map +1 -0
  229. package/_esm/chains/index.js +1 -0
  230. package/_esm/chains/index.js.map +1 -1
  231. package/_esm/constants/abis.js +0 -3
  232. package/_esm/constants/abis.js.map +1 -1
  233. package/_esm/constants/address.js +2 -0
  234. package/_esm/constants/address.js.map +1 -1
  235. package/_esm/errors/account.js +15 -1
  236. package/_esm/errors/account.js.map +1 -1
  237. package/_esm/errors/contract.js +1 -1
  238. package/_esm/errors/contract.js.map +1 -1
  239. package/_esm/errors/rpc.js +6 -6
  240. package/_esm/errors/rpc.js.map +1 -1
  241. package/_esm/errors/version.js +1 -1
  242. package/_esm/errors/version.js.map +1 -1
  243. package/_esm/index.js +1 -0
  244. package/_esm/index.js.map +1 -1
  245. package/_esm/types/eip1193.js.map +1 -1
  246. package/_esm/utils/abi/parseEventLogs.js +72 -2
  247. package/_esm/utils/abi/parseEventLogs.js.map +1 -1
  248. package/_esm/utils/buildRequest.js +4 -2
  249. package/_esm/utils/buildRequest.js.map +1 -1
  250. package/_esm/utils/errors/getNodeError.js +1 -2
  251. package/_esm/utils/errors/getNodeError.js.map +1 -1
  252. package/_esm/utils/index.js +1 -0
  253. package/_esm/utils/index.js.map +1 -1
  254. package/_esm/utils/signature/serializeErc6492Signature.js +6 -2
  255. package/_esm/utils/signature/serializeErc6492Signature.js.map +1 -1
  256. package/_esm/utils/signature/serializeSignature.js +6 -2
  257. package/_esm/utils/signature/serializeSignature.js.map +1 -1
  258. package/_esm/utils/signature/verifyHash.js +19 -0
  259. package/_esm/utils/signature/verifyHash.js.map +1 -0
  260. package/_types/account-abstraction/accounts/createWebAuthnCredential.d.ts +2 -0
  261. package/_types/account-abstraction/accounts/createWebAuthnCredential.d.ts.map +1 -0
  262. package/_types/account-abstraction/accounts/implementations/toCoinbaseSmartAccount.d.ts +648 -0
  263. package/_types/account-abstraction/accounts/implementations/toCoinbaseSmartAccount.d.ts.map +1 -0
  264. package/_types/account-abstraction/accounts/implementations/toSoladySmartAccount.d.ts +464 -0
  265. package/_types/account-abstraction/accounts/implementations/toSoladySmartAccount.d.ts.map +1 -0
  266. package/_types/account-abstraction/accounts/toSmartAccount.d.ts +14 -0
  267. package/_types/account-abstraction/accounts/toSmartAccount.d.ts.map +1 -0
  268. package/_types/account-abstraction/accounts/toWebAuthnAccount.d.ts +32 -0
  269. package/_types/account-abstraction/accounts/toWebAuthnAccount.d.ts.map +1 -0
  270. package/_types/account-abstraction/accounts/types.d.ts +174 -0
  271. package/_types/account-abstraction/accounts/types.d.ts.map +1 -0
  272. package/_types/account-abstraction/actions/bundler/estimateUserOperationGas.d.ts +62 -0
  273. package/_types/account-abstraction/actions/bundler/estimateUserOperationGas.d.ts.map +1 -0
  274. package/_types/account-abstraction/actions/bundler/getSupportedEntryPoints.d.ts +30 -0
  275. package/_types/account-abstraction/actions/bundler/getSupportedEntryPoints.d.ts.map +1 -0
  276. package/_types/account-abstraction/actions/bundler/getUserOperation.d.ts +57 -0
  277. package/_types/account-abstraction/actions/bundler/getUserOperation.d.ts.map +1 -0
  278. package/_types/account-abstraction/actions/bundler/getUserOperationReceipt.d.ts +39 -0
  279. package/_types/account-abstraction/actions/bundler/getUserOperationReceipt.d.ts.map +1 -0
  280. package/_types/account-abstraction/actions/bundler/prepareUserOperation.d.ts +106 -0
  281. package/_types/account-abstraction/actions/bundler/prepareUserOperation.d.ts.map +1 -0
  282. package/_types/account-abstraction/actions/bundler/sendUserOperation.d.ts +60 -0
  283. package/_types/account-abstraction/actions/bundler/sendUserOperation.d.ts.map +1 -0
  284. package/_types/account-abstraction/actions/bundler/waitForUserOperationReceipt.d.ts +52 -0
  285. package/_types/account-abstraction/actions/bundler/waitForUserOperationReceipt.d.ts.map +1 -0
  286. package/_types/account-abstraction/actions/paymaster/getPaymasterData.d.ts +49 -0
  287. package/_types/account-abstraction/actions/paymaster/getPaymasterData.d.ts.map +1 -0
  288. package/_types/account-abstraction/actions/paymaster/getPaymasterStubData.d.ts +55 -0
  289. package/_types/account-abstraction/actions/paymaster/getPaymasterStubData.d.ts.map +1 -0
  290. package/_types/account-abstraction/clients/createBundlerClient.d.ts +66 -0
  291. package/_types/account-abstraction/clients/createBundlerClient.d.ts.map +1 -0
  292. package/_types/account-abstraction/clients/createPaymasterClient.d.ts +27 -0
  293. package/_types/account-abstraction/clients/createPaymasterClient.d.ts.map +1 -0
  294. package/_types/account-abstraction/clients/decorators/bundler.d.ts +206 -0
  295. package/_types/account-abstraction/clients/decorators/bundler.d.ts.map +1 -0
  296. package/_types/account-abstraction/clients/decorators/paymaster.d.ts +60 -0
  297. package/_types/account-abstraction/clients/decorators/paymaster.d.ts.map +1 -0
  298. package/_types/account-abstraction/constants/abis.d.ts +1468 -0
  299. package/_types/account-abstraction/constants/abis.d.ts.map +1 -0
  300. package/_types/account-abstraction/constants/address.d.ts +3 -0
  301. package/_types/account-abstraction/constants/address.d.ts.map +1 -0
  302. package/_types/account-abstraction/errors/bundler.d.ts +391 -0
  303. package/_types/account-abstraction/errors/bundler.d.ts.map +1 -0
  304. package/_types/account-abstraction/errors/userOperation.d.ts +41 -0
  305. package/_types/account-abstraction/errors/userOperation.d.ts.map +1 -0
  306. package/_types/account-abstraction/index.d.ts +34 -0
  307. package/_types/account-abstraction/index.d.ts.map +1 -0
  308. package/_types/account-abstraction/types/account.d.ts +11 -0
  309. package/_types/account-abstraction/types/account.d.ts.map +1 -0
  310. package/_types/account-abstraction/types/entryPointVersion.d.ts +9 -0
  311. package/_types/account-abstraction/types/entryPointVersion.d.ts.map +1 -0
  312. package/_types/account-abstraction/types/rpc.d.ts +9 -0
  313. package/_types/account-abstraction/types/rpc.d.ts.map +1 -0
  314. package/_types/account-abstraction/types/userOperation.d.ts +157 -0
  315. package/_types/account-abstraction/types/userOperation.d.ts.map +1 -0
  316. package/_types/account-abstraction/utils/errors/getBundlerError.d.ts +8 -0
  317. package/_types/account-abstraction/utils/errors/getBundlerError.d.ts.map +1 -0
  318. package/_types/account-abstraction/utils/errors/getUserOperationError.d.ts +15 -0
  319. package/_types/account-abstraction/utils/errors/getUserOperationError.d.ts.map +1 -0
  320. package/_types/account-abstraction/utils/formatters/userOperation.d.ts +6 -0
  321. package/_types/account-abstraction/utils/formatters/userOperation.d.ts.map +1 -0
  322. package/_types/account-abstraction/utils/formatters/userOperationGas.d.ts +6 -0
  323. package/_types/account-abstraction/utils/formatters/userOperationGas.d.ts.map +1 -0
  324. package/_types/account-abstraction/utils/formatters/userOperationReceipt.d.ts +6 -0
  325. package/_types/account-abstraction/utils/formatters/userOperationReceipt.d.ts.map +1 -0
  326. package/_types/account-abstraction/utils/formatters/userOperationRequest.d.ts +7 -0
  327. package/_types/account-abstraction/utils/formatters/userOperationRequest.d.ts.map +1 -0
  328. package/_types/account-abstraction/utils/userOperation/getUserOperationHash.d.ts +13 -0
  329. package/_types/account-abstraction/utils/userOperation/getUserOperationHash.d.ts.map +1 -0
  330. package/_types/account-abstraction/utils/userOperation/toPackedUserOperation.d.ts +3 -0
  331. package/_types/account-abstraction/utils/userOperation/toPackedUserOperation.d.ts.map +1 -0
  332. package/_types/accounts/index.d.ts.map +1 -1
  333. package/_types/accounts/privateKeyToAccount.d.ts +2 -1
  334. package/_types/accounts/privateKeyToAccount.d.ts.map +1 -1
  335. package/_types/accounts/toAccount.d.ts.map +1 -1
  336. package/_types/accounts/types.d.ts +14 -7
  337. package/_types/accounts/types.d.ts.map +1 -1
  338. package/_types/accounts/utils/parseAccount.d.ts +1 -1
  339. package/_types/accounts/utils/parseAccount.d.ts.map +1 -1
  340. package/_types/accounts/utils/sign.d.ts +9 -6
  341. package/_types/accounts/utils/sign.d.ts.map +1 -1
  342. package/_types/accounts/utils/signMessage.d.ts +1 -2
  343. package/_types/accounts/utils/signMessage.d.ts.map +1 -1
  344. package/_types/accounts/utils/signTypedData.d.ts +1 -2
  345. package/_types/accounts/utils/signTypedData.d.ts.map +1 -1
  346. package/_types/actions/public/getLogs.d.ts.map +1 -1
  347. package/_types/actions/wallet/sendTransaction.d.ts +2 -1
  348. package/_types/actions/wallet/sendTransaction.d.ts.map +1 -1
  349. package/_types/actions/wallet/signMessage.d.ts.map +1 -1
  350. package/_types/actions/wallet/signTransaction.d.ts.map +1 -1
  351. package/_types/chains/definitions/bobaSepolia.d.ts +1 -1
  352. package/_types/chains/definitions/bobaSepolia.d.ts.map +1 -1
  353. package/_types/chains/definitions/cronoszkEVMTestnet.d.ts +35 -0
  354. package/_types/chains/definitions/cronoszkEVMTestnet.d.ts.map +1 -0
  355. package/_types/chains/definitions/lisk.d.ts +2 -2
  356. package/_types/chains/definitions/playfiAlbireo.d.ts +2 -2
  357. package/_types/chains/definitions/zkSync.d.ts +2 -2
  358. package/_types/chains/definitions/zkSyncInMemoryNode.d.ts +2 -2
  359. package/_types/chains/definitions/zkSyncLocalNode.d.ts +2 -2
  360. package/_types/chains/definitions/zkSyncSepoliaTestnet.d.ts +2 -2
  361. package/_types/chains/definitions/zkSyncTestnet.d.ts +2 -2
  362. package/_types/chains/index.d.ts +1 -0
  363. package/_types/chains/index.d.ts.map +1 -1
  364. package/_types/clients/decorators/public.d.ts +1 -1
  365. package/_types/clients/decorators/public.d.ts.map +1 -1
  366. package/_types/constants/abis.d.ts +0 -3
  367. package/_types/constants/abis.d.ts.map +1 -1
  368. package/_types/constants/address.d.ts +2 -0
  369. package/_types/constants/address.d.ts.map +1 -1
  370. package/_types/errors/account.d.ts +11 -0
  371. package/_types/errors/account.d.ts.map +1 -1
  372. package/_types/errors/rpc.d.ts +9 -3
  373. package/_types/errors/rpc.d.ts.map +1 -1
  374. package/_types/errors/version.d.ts +1 -1
  375. package/_types/errors/version.d.ts.map +1 -1
  376. package/_types/index.d.ts +5 -3
  377. package/_types/index.d.ts.map +1 -1
  378. package/_types/types/eip1193.d.ts +239 -2
  379. package/_types/types/eip1193.d.ts.map +1 -1
  380. package/_types/types/multicall.d.ts +1 -1
  381. package/_types/types/multicall.d.ts.map +1 -1
  382. package/_types/utils/abi/parseEventLogs.d.ts +9 -3
  383. package/_types/utils/abi/parseEventLogs.d.ts.map +1 -1
  384. package/_types/utils/buildRequest.d.ts.map +1 -1
  385. package/_types/utils/errors/getNodeError.d.ts.map +1 -1
  386. package/_types/utils/formatters/transaction.d.ts +1 -1
  387. package/_types/utils/index.d.ts +1 -0
  388. package/_types/utils/index.d.ts.map +1 -1
  389. package/_types/utils/signature/hashTypedData.d.ts +2 -2
  390. package/_types/utils/signature/hashTypedData.d.ts.map +1 -1
  391. package/_types/utils/signature/serializeErc6492Signature.d.ts +7 -4
  392. package/_types/utils/signature/serializeErc6492Signature.d.ts.map +1 -1
  393. package/_types/utils/signature/serializeSignature.d.ts +8 -2
  394. package/_types/utils/signature/serializeSignature.d.ts.map +1 -1
  395. package/_types/utils/signature/verifyHash.d.ts +30 -0
  396. package/_types/utils/signature/verifyHash.d.ts.map +1 -0
  397. package/_types/zksync/chainConfig.d.ts +2 -2
  398. package/_types/zksync/formatters.d.ts +2 -2
  399. package/account-abstraction/accounts/createWebAuthnCredential.ts +7 -0
  400. package/account-abstraction/accounts/implementations/toCoinbaseSmartAccount.ts +817 -0
  401. package/account-abstraction/accounts/implementations/toSoladySmartAccount.ts +794 -0
  402. package/account-abstraction/accounts/toSmartAccount.ts +126 -0
  403. package/account-abstraction/accounts/toWebAuthnAccount.ts +56 -0
  404. package/account-abstraction/accounts/types.ts +208 -0
  405. package/account-abstraction/actions/bundler/estimateUserOperationGas.ts +170 -0
  406. package/account-abstraction/actions/bundler/getSupportedEntryPoints.ts +33 -0
  407. package/account-abstraction/actions/bundler/getUserOperation.ts +85 -0
  408. package/account-abstraction/actions/bundler/getUserOperationReceipt.ts +64 -0
  409. package/account-abstraction/actions/bundler/prepareUserOperation.ts +637 -0
  410. package/account-abstraction/actions/bundler/sendUserOperation.ts +149 -0
  411. package/account-abstraction/actions/bundler/waitForUserOperationReceipt.ts +139 -0
  412. package/account-abstraction/actions/paymaster/getPaymasterData.ts +135 -0
  413. package/account-abstraction/actions/paymaster/getPaymasterStubData.ts +138 -0
  414. package/account-abstraction/clients/createBundlerClient.ts +155 -0
  415. package/account-abstraction/clients/createPaymasterClient.ts +78 -0
  416. package/account-abstraction/clients/decorators/bundler.ts +296 -0
  417. package/account-abstraction/clients/decorators/paymaster.ts +81 -0
  418. package/account-abstraction/constants/abis.ts +1404 -0
  419. package/account-abstraction/constants/address.ts +4 -0
  420. package/account-abstraction/errors/bundler.ts +781 -0
  421. package/account-abstraction/errors/userOperation.ts +111 -0
  422. package/account-abstraction/index.ts +228 -0
  423. package/account-abstraction/package.json +6 -0
  424. package/account-abstraction/types/account.ts +21 -0
  425. package/account-abstraction/types/entryPointVersion.ts +24 -0
  426. package/account-abstraction/types/rpc.ts +29 -0
  427. package/account-abstraction/types/userOperation.ts +262 -0
  428. package/account-abstraction/utils/errors/getBundlerError.ts +309 -0
  429. package/account-abstraction/utils/errors/getUserOperationError.ts +153 -0
  430. package/account-abstraction/utils/formatters/userOperation.ts +31 -0
  431. package/account-abstraction/utils/formatters/userOperationGas.ts +26 -0
  432. package/account-abstraction/utils/formatters/userOperationReceipt.ts +24 -0
  433. package/account-abstraction/utils/formatters/userOperationRequest.ts +53 -0
  434. package/account-abstraction/utils/userOperation/getUserOperationHash.ts +138 -0
  435. package/account-abstraction/utils/userOperation/toPackedUserOperation.ts +64 -0
  436. package/accounts/index.ts +1 -0
  437. package/accounts/privateKeyToAccount.ts +5 -0
  438. package/accounts/toAccount.ts +3 -0
  439. package/accounts/types.ts +34 -12
  440. package/accounts/utils/parseAccount.ts +6 -3
  441. package/accounts/utils/sign.ts +24 -8
  442. package/accounts/utils/signMessage.ts +1 -7
  443. package/accounts/utils/signTypedData.ts +2 -7
  444. package/actions/public/getLogs.ts +2 -1
  445. package/actions/wallet/sendTransaction.ts +48 -27
  446. package/actions/wallet/signMessage.ts +2 -1
  447. package/actions/wallet/signTransaction.ts +1 -2
  448. package/actions/wallet/signTypedData.ts +1 -1
  449. package/chains/definitions/bobaSepolia.ts +1 -0
  450. package/chains/definitions/cronoszkEVMTestnet.ts +21 -0
  451. package/chains/index.ts +1 -0
  452. package/clients/decorators/public.ts +1 -1
  453. package/constants/abis.ts +0 -3
  454. package/constants/address.ts +4 -0
  455. package/errors/account.ts +22 -1
  456. package/errors/contract.ts +1 -1
  457. package/errors/rpc.ts +6 -6
  458. package/errors/version.ts +1 -1
  459. package/index.ts +20 -3
  460. package/package.json +7 -1
  461. package/types/eip1193.ts +314 -2
  462. package/types/multicall.ts +1 -1
  463. package/utils/abi/parseEventLogs.ts +103 -14
  464. package/utils/buildRequest.ts +4 -2
  465. package/utils/errors/getNodeError.ts +1 -2
  466. package/utils/index.ts +6 -0
  467. package/utils/signature/hashTypedData.ts +6 -6
  468. package/utils/signature/serializeErc6492Signature.ts +17 -8
  469. package/utils/signature/serializeSignature.ts +24 -4
  470. package/utils/signature/verifyHash.ts +54 -0
@@ -0,0 +1,817 @@
1
+ import { type Address, type TypedData, parseAbi } from 'abitype'
2
+ import {
3
+ type WebAuthnData,
4
+ parseSignature as parseP256Signature,
5
+ } from 'webauthn-p256'
6
+
7
+ import type { LocalAccount } from '../../../accounts/types.js'
8
+ import { readContract } from '../../../actions/public/readContract.js'
9
+ import type { Client } from '../../../clients/createClient.js'
10
+ import { entryPoint06Address } from '../../../constants/address.js'
11
+ import { BaseError } from '../../../errors/base.js'
12
+ import type { Hash, Hex } from '../../../types/misc.js'
13
+ import type { TypedDataDefinition } from '../../../types/typedData.js'
14
+ import type { Assign, OneOf, Prettify } from '../../../types/utils.js'
15
+ import { encodeAbiParameters } from '../../../utils/abi/encodeAbiParameters.js'
16
+ import { encodeFunctionData } from '../../../utils/abi/encodeFunctionData.js'
17
+ import { encodePacked } from '../../../utils/abi/encodePacked.js'
18
+ import { pad } from '../../../utils/data/pad.js'
19
+ import { size } from '../../../utils/data/size.js'
20
+ import { stringToHex } from '../../../utils/encoding/toHex.js'
21
+ import { hashMessage } from '../../../utils/signature/hashMessage.js'
22
+ import { hashTypedData } from '../../../utils/signature/hashTypedData.js'
23
+ import { parseSignature } from '../../../utils/signature/parseSignature.js'
24
+ import { entryPoint06Abi } from '../../constants/abis.js'
25
+ import type { UserOperation } from '../../types/userOperation.js'
26
+ import { getUserOperationHash } from '../../utils/userOperation/getUserOperationHash.js'
27
+ import { toSmartAccount } from '../toSmartAccount.js'
28
+ import type {
29
+ SmartAccount,
30
+ SmartAccountImplementation,
31
+ WebAuthnAccount,
32
+ } from '../types.js'
33
+
34
+ export type ToCoinbaseSmartAccountParameters = {
35
+ address?: Address | undefined
36
+ client: Client
37
+ owners: readonly OneOf<LocalAccount | WebAuthnAccount>[]
38
+ nonce?: bigint | undefined
39
+ }
40
+
41
+ export type ToCoinbaseSmartAccountReturnType = Prettify<
42
+ SmartAccount<CoinbaseSmartAccountImplementation>
43
+ >
44
+
45
+ export type CoinbaseSmartAccountImplementation = Assign<
46
+ SmartAccountImplementation<
47
+ typeof entryPoint06Abi,
48
+ '0.6',
49
+ { abi: typeof abi; factory: { abi: typeof factoryAbi; address: Address } }
50
+ >,
51
+ { sign: NonNullable<SmartAccountImplementation['sign']> }
52
+ >
53
+
54
+ /**
55
+ * @description Create a Coinbase Smart Account.
56
+ *
57
+ * @param parameters - {@link ToCoinbaseSmartAccountParameters}
58
+ * @returns Coinbase Smart Account. {@link ToCoinbaseSmartAccountReturnType}
59
+ *
60
+ * @example
61
+ * import { toCoinbaseSmartAccount } from 'viem/account-abstraction'
62
+ * import { privateKeyToAccount } from 'viem/accounts'
63
+ * import { client } from './client.js'
64
+ *
65
+ * const account = toCoinbaseSmartAccount({
66
+ * client,
67
+ * owners: [privateKeyToAccount('0x...')],
68
+ * })
69
+ */
70
+ export async function toCoinbaseSmartAccount(
71
+ parameters: ToCoinbaseSmartAccountParameters,
72
+ ): Promise<ToCoinbaseSmartAccountReturnType> {
73
+ const { address, client, owners, nonce = 0n } = parameters
74
+
75
+ const entryPoint = {
76
+ abi: entryPoint06Abi,
77
+ address: entryPoint06Address,
78
+ version: '0.6',
79
+ } as const
80
+ const factory = {
81
+ abi: factoryAbi,
82
+ address: '0x0ba5ed0c6aa8c49038f819e587e2633c4a9f428a',
83
+ } as const
84
+
85
+ const owners_bytes = owners.map((owner) =>
86
+ owner.type === 'webAuthn' ? owner.publicKey : pad(owner.address),
87
+ )
88
+
89
+ const owner = owners[0]
90
+
91
+ return toSmartAccount({
92
+ client,
93
+ entryPoint,
94
+
95
+ extend: { abi, factory },
96
+
97
+ async encodeCalls(calls) {
98
+ if (calls.length === 1)
99
+ return encodeFunctionData({
100
+ abi,
101
+ functionName: 'execute',
102
+ args: [calls[0].to, calls[0].value ?? 0n, calls[0].data ?? '0x'],
103
+ })
104
+ return encodeFunctionData({
105
+ abi,
106
+ functionName: 'executeBatch',
107
+ args: [
108
+ calls.map((call) => ({
109
+ data: call.data ?? '0x',
110
+ target: call.to,
111
+ value: call.value ?? 0n,
112
+ })),
113
+ ],
114
+ })
115
+ },
116
+
117
+ async getAddress() {
118
+ if (address) return address
119
+ return await readContract(client, {
120
+ ...factory,
121
+ functionName: 'getAddress',
122
+ args: [owners_bytes, nonce],
123
+ })
124
+ },
125
+
126
+ async getFactoryArgs() {
127
+ const factoryData = encodeFunctionData({
128
+ abi: factory.abi,
129
+ functionName: 'createAccount',
130
+ args: [owners_bytes, nonce],
131
+ })
132
+ return { factory: factory.address, factoryData }
133
+ },
134
+
135
+ async getNonce({ key = 0n } = {}) {
136
+ const address = await this.getAddress()
137
+ const nonce = await readContract(client, {
138
+ abi: parseAbi([
139
+ 'function getNonce(address, uint192) pure returns (uint256)',
140
+ ]),
141
+ address: entryPoint.address,
142
+ functionName: 'getNonce',
143
+ args: [address, key],
144
+ })
145
+ return nonce
146
+ },
147
+
148
+ async getStubSignature() {
149
+ if (owner.type === 'webAuthn')
150
+ return '0x0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000012000000000000000000000000000000000000000000000000000000000000000170000000000000000000000000000000000000000000000000000000000000001949fc7c88032b9fcb5f6efc7a7b8c63668eae9871b765e23123bb473ff57aa831a7c0d9276168ebcc29f2875a0239cffdf2a9cd1c2007c5c77c071db9264df1d000000000000000000000000000000000000000000000000000000000000002549960de5880e8c687434170f6476605b8fe4aeb9a28632c7995cf3ba831d97630500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008a7b2274797065223a22776562617574686e2e676574222c226368616c6c656e6765223a2273496a396e6164474850596759334b7156384f7a4a666c726275504b474f716d59576f4d57516869467773222c226f726967696e223a2268747470733a2f2f7369676e2e636f696e626173652e636f6d222c2263726f73734f726967696e223a66616c73657d00000000000000000000000000000000000000000000'
151
+ return wrapSignature({
152
+ signature:
153
+ '0xfffffffffffffffffffffffffffffff0000000000000000000000000000000007aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa1c',
154
+ })
155
+ },
156
+
157
+ async sign(parameters) {
158
+ const address = await this.getAddress()
159
+
160
+ const hash = toReplaySafeHash({
161
+ address,
162
+ chainId: client.chain!.id,
163
+ hash: parameters.hash,
164
+ })
165
+
166
+ const signature = await sign({ hash, owner })
167
+
168
+ return wrapSignature({
169
+ signature,
170
+ })
171
+ },
172
+
173
+ async signMessage(parameters) {
174
+ const { message } = parameters
175
+ const address = await this.getAddress()
176
+
177
+ const hash = toReplaySafeHash({
178
+ address,
179
+ chainId: client.chain!.id,
180
+ hash: hashMessage(message),
181
+ })
182
+
183
+ const signature = await sign({ hash, owner })
184
+
185
+ return wrapSignature({
186
+ signature,
187
+ })
188
+ },
189
+
190
+ async signTypedData(parameters) {
191
+ const { domain, types, primaryType, message } =
192
+ parameters as TypedDataDefinition<TypedData, string>
193
+ const address = await this.getAddress()
194
+
195
+ const hash = toReplaySafeHash({
196
+ address,
197
+ chainId: client.chain!.id,
198
+ hash: hashTypedData({
199
+ domain,
200
+ message,
201
+ primaryType,
202
+ types,
203
+ }),
204
+ })
205
+
206
+ const signature = await sign({ hash, owner })
207
+
208
+ return wrapSignature({
209
+ signature,
210
+ })
211
+ },
212
+
213
+ async signUserOperation(parameters) {
214
+ const { chainId = client.chain!.id, ...userOperation } = parameters
215
+
216
+ const address = await this.getAddress()
217
+ const hash = getUserOperationHash({
218
+ chainId,
219
+ entryPointAddress: entryPoint.address,
220
+ entryPointVersion: entryPoint.version,
221
+ userOperation: {
222
+ ...(userOperation as unknown as UserOperation),
223
+ sender: address,
224
+ },
225
+ })
226
+
227
+ const signature = await sign({ hash, owner })
228
+
229
+ return wrapSignature({
230
+ signature,
231
+ })
232
+ },
233
+
234
+ userOperation: {
235
+ async estimateGas(userOperation) {
236
+ if (owner.type !== 'webAuthn') return
237
+
238
+ // Accounts with WebAuthn owner require a minimum verification gas limit of 800,000.
239
+ return {
240
+ verificationGasLimit: BigInt(
241
+ Math.max(Number(userOperation.verificationGasLimit ?? 0n), 800_000),
242
+ ),
243
+ }
244
+ },
245
+ },
246
+ })
247
+ }
248
+
249
+ /////////////////////////////////////////////////////////////////////////////////////////////
250
+ // Utilities
251
+ /////////////////////////////////////////////////////////////////////////////////////////////
252
+
253
+ /** @internal */
254
+ export async function sign({
255
+ hash,
256
+ owner,
257
+ }: { hash: Hash; owner: OneOf<LocalAccount | WebAuthnAccount> }) {
258
+ // WebAuthn Account (Passkey)
259
+ if (owner.type === 'webAuthn') {
260
+ const { signature, webauthn } = await owner.sign({
261
+ hash,
262
+ })
263
+ return toWebAuthnSignature({ signature, webauthn })
264
+ }
265
+
266
+ if (owner.sign) return owner.sign({ hash })
267
+
268
+ throw new BaseError('`owner` does not support raw sign.')
269
+ }
270
+
271
+ /** @internal */
272
+ export function toReplaySafeHash({
273
+ address,
274
+ chainId,
275
+ hash,
276
+ }: { address: Address; chainId: number; hash: Hash }) {
277
+ return hashTypedData({
278
+ domain: {
279
+ chainId,
280
+ name: 'Coinbase Smart Wallet',
281
+ verifyingContract: address,
282
+ version: '1',
283
+ },
284
+ types: {
285
+ CoinbaseSmartWalletMessage: [
286
+ {
287
+ name: 'hash',
288
+ type: 'bytes32',
289
+ },
290
+ ],
291
+ },
292
+ primaryType: 'CoinbaseSmartWalletMessage',
293
+ message: {
294
+ hash,
295
+ },
296
+ })
297
+ }
298
+
299
+ /** @internal */
300
+ export function toWebAuthnSignature({
301
+ webauthn,
302
+ signature,
303
+ }: {
304
+ webauthn: WebAuthnData
305
+ signature: Hex
306
+ }) {
307
+ const { r, s } = parseP256Signature(signature)
308
+ return encodeAbiParameters(
309
+ [
310
+ {
311
+ components: [
312
+ {
313
+ name: 'authenticatorData',
314
+ type: 'bytes',
315
+ },
316
+ { name: 'clientDataJSON', type: 'bytes' },
317
+ { name: 'challengeIndex', type: 'uint256' },
318
+ { name: 'typeIndex', type: 'uint256' },
319
+ {
320
+ name: 'r',
321
+ type: 'uint256',
322
+ },
323
+ {
324
+ name: 's',
325
+ type: 'uint256',
326
+ },
327
+ ],
328
+ type: 'tuple',
329
+ },
330
+ ],
331
+ [
332
+ {
333
+ authenticatorData: webauthn.authenticatorData,
334
+ clientDataJSON: stringToHex(webauthn.clientDataJSON),
335
+ challengeIndex: BigInt(webauthn.challengeIndex),
336
+ typeIndex: BigInt(webauthn.typeIndex),
337
+ r,
338
+ s,
339
+ },
340
+ ],
341
+ )
342
+ }
343
+
344
+ /** @internal */
345
+ export function wrapSignature(parameters: {
346
+ ownerIndex?: number | undefined
347
+ signature: Hex
348
+ }) {
349
+ const { ownerIndex = 0 } = parameters
350
+ const signatureData = (() => {
351
+ if (size(parameters.signature) !== 65) return parameters.signature
352
+ const signature = parseSignature(parameters.signature)
353
+ return encodePacked(
354
+ ['bytes32', 'bytes32', 'uint8'],
355
+ [signature.r, signature.s, signature.yParity === 0 ? 27 : 28],
356
+ )
357
+ })()
358
+ return encodeAbiParameters(
359
+ [
360
+ {
361
+ components: [
362
+ {
363
+ name: 'ownerIndex',
364
+ type: 'uint8',
365
+ },
366
+ {
367
+ name: 'signatureData',
368
+ type: 'bytes',
369
+ },
370
+ ],
371
+ type: 'tuple',
372
+ },
373
+ ],
374
+ [
375
+ {
376
+ ownerIndex,
377
+ signatureData,
378
+ },
379
+ ],
380
+ )
381
+ }
382
+
383
+ /////////////////////////////////////////////////////////////////////////////////////////////
384
+ // Constants
385
+ /////////////////////////////////////////////////////////////////////////////////////////////
386
+
387
+ const abi = [
388
+ { inputs: [], stateMutability: 'nonpayable', type: 'constructor' },
389
+ {
390
+ inputs: [{ name: 'owner', type: 'bytes' }],
391
+ name: 'AlreadyOwner',
392
+ type: 'error',
393
+ },
394
+ { inputs: [], name: 'Initialized', type: 'error' },
395
+ {
396
+ inputs: [{ name: 'owner', type: 'bytes' }],
397
+ name: 'InvalidEthereumAddressOwner',
398
+ type: 'error',
399
+ },
400
+ {
401
+ inputs: [{ name: 'key', type: 'uint256' }],
402
+ name: 'InvalidNonceKey',
403
+ type: 'error',
404
+ },
405
+ {
406
+ inputs: [{ name: 'owner', type: 'bytes' }],
407
+ name: 'InvalidOwnerBytesLength',
408
+ type: 'error',
409
+ },
410
+ { inputs: [], name: 'LastOwner', type: 'error' },
411
+ {
412
+ inputs: [{ name: 'index', type: 'uint256' }],
413
+ name: 'NoOwnerAtIndex',
414
+ type: 'error',
415
+ },
416
+ {
417
+ inputs: [{ name: 'ownersRemaining', type: 'uint256' }],
418
+ name: 'NotLastOwner',
419
+ type: 'error',
420
+ },
421
+ {
422
+ inputs: [{ name: 'selector', type: 'bytes4' }],
423
+ name: 'SelectorNotAllowed',
424
+ type: 'error',
425
+ },
426
+ { inputs: [], name: 'Unauthorized', type: 'error' },
427
+ { inputs: [], name: 'UnauthorizedCallContext', type: 'error' },
428
+ { inputs: [], name: 'UpgradeFailed', type: 'error' },
429
+ {
430
+ inputs: [
431
+ { name: 'index', type: 'uint256' },
432
+ { name: 'expectedOwner', type: 'bytes' },
433
+ { name: 'actualOwner', type: 'bytes' },
434
+ ],
435
+ name: 'WrongOwnerAtIndex',
436
+ type: 'error',
437
+ },
438
+ {
439
+ anonymous: false,
440
+ inputs: [
441
+ {
442
+ indexed: true,
443
+
444
+ name: 'index',
445
+ type: 'uint256',
446
+ },
447
+ { indexed: false, name: 'owner', type: 'bytes' },
448
+ ],
449
+ name: 'AddOwner',
450
+ type: 'event',
451
+ },
452
+ {
453
+ anonymous: false,
454
+ inputs: [
455
+ {
456
+ indexed: true,
457
+
458
+ name: 'index',
459
+ type: 'uint256',
460
+ },
461
+ { indexed: false, name: 'owner', type: 'bytes' },
462
+ ],
463
+ name: 'RemoveOwner',
464
+ type: 'event',
465
+ },
466
+ {
467
+ anonymous: false,
468
+ inputs: [
469
+ {
470
+ indexed: true,
471
+
472
+ name: 'implementation',
473
+ type: 'address',
474
+ },
475
+ ],
476
+ name: 'Upgraded',
477
+ type: 'event',
478
+ },
479
+ { stateMutability: 'payable', type: 'fallback' },
480
+ {
481
+ inputs: [],
482
+ name: 'REPLAYABLE_NONCE_KEY',
483
+ outputs: [{ name: '', type: 'uint256' }],
484
+ stateMutability: 'view',
485
+ type: 'function',
486
+ },
487
+ {
488
+ inputs: [{ name: 'owner', type: 'address' }],
489
+ name: 'addOwnerAddress',
490
+ outputs: [],
491
+ stateMutability: 'nonpayable',
492
+ type: 'function',
493
+ },
494
+ {
495
+ inputs: [
496
+ { name: 'x', type: 'bytes32' },
497
+ { name: 'y', type: 'bytes32' },
498
+ ],
499
+ name: 'addOwnerPublicKey',
500
+ outputs: [],
501
+ stateMutability: 'nonpayable',
502
+ type: 'function',
503
+ },
504
+ {
505
+ inputs: [{ name: 'functionSelector', type: 'bytes4' }],
506
+ name: 'canSkipChainIdValidation',
507
+ outputs: [{ name: '', type: 'bool' }],
508
+ stateMutability: 'pure',
509
+ type: 'function',
510
+ },
511
+ {
512
+ inputs: [],
513
+ name: 'domainSeparator',
514
+ outputs: [{ name: '', type: 'bytes32' }],
515
+ stateMutability: 'view',
516
+ type: 'function',
517
+ },
518
+ {
519
+ inputs: [],
520
+ name: 'eip712Domain',
521
+ outputs: [
522
+ { name: 'fields', type: 'bytes1' },
523
+ { name: 'name', type: 'string' },
524
+ { name: 'version', type: 'string' },
525
+ { name: 'chainId', type: 'uint256' },
526
+ { name: 'verifyingContract', type: 'address' },
527
+ { name: 'salt', type: 'bytes32' },
528
+ { name: 'extensions', type: 'uint256[]' },
529
+ ],
530
+ stateMutability: 'view',
531
+ type: 'function',
532
+ },
533
+ {
534
+ inputs: [],
535
+ name: 'entryPoint',
536
+ outputs: [{ name: '', type: 'address' }],
537
+ stateMutability: 'view',
538
+ type: 'function',
539
+ },
540
+ {
541
+ inputs: [
542
+ { name: 'target', type: 'address' },
543
+ { name: 'value', type: 'uint256' },
544
+ { name: 'data', type: 'bytes' },
545
+ ],
546
+ name: 'execute',
547
+ outputs: [],
548
+ stateMutability: 'payable',
549
+ type: 'function',
550
+ },
551
+ {
552
+ inputs: [
553
+ {
554
+ components: [
555
+ { name: 'target', type: 'address' },
556
+ { name: 'value', type: 'uint256' },
557
+ { name: 'data', type: 'bytes' },
558
+ ],
559
+
560
+ name: 'calls',
561
+ type: 'tuple[]',
562
+ },
563
+ ],
564
+ name: 'executeBatch',
565
+ outputs: [],
566
+ stateMutability: 'payable',
567
+ type: 'function',
568
+ },
569
+ {
570
+ inputs: [{ name: 'calls', type: 'bytes[]' }],
571
+ name: 'executeWithoutChainIdValidation',
572
+ outputs: [],
573
+ stateMutability: 'payable',
574
+ type: 'function',
575
+ },
576
+ {
577
+ inputs: [
578
+ {
579
+ components: [
580
+ { name: 'sender', type: 'address' },
581
+ { name: 'nonce', type: 'uint256' },
582
+ { name: 'initCode', type: 'bytes' },
583
+ { name: 'callData', type: 'bytes' },
584
+ { name: 'callGasLimit', type: 'uint256' },
585
+ {
586
+ name: 'verificationGasLimit',
587
+ type: 'uint256',
588
+ },
589
+ {
590
+ name: 'preVerificationGas',
591
+ type: 'uint256',
592
+ },
593
+ { name: 'maxFeePerGas', type: 'uint256' },
594
+ {
595
+ name: 'maxPriorityFeePerGas',
596
+ type: 'uint256',
597
+ },
598
+ { name: 'paymasterAndData', type: 'bytes' },
599
+ { name: 'signature', type: 'bytes' },
600
+ ],
601
+
602
+ name: 'userOp',
603
+ type: 'tuple',
604
+ },
605
+ ],
606
+ name: 'getUserOpHashWithoutChainId',
607
+ outputs: [{ name: '', type: 'bytes32' }],
608
+ stateMutability: 'view',
609
+ type: 'function',
610
+ },
611
+ {
612
+ inputs: [],
613
+ name: 'implementation',
614
+ outputs: [{ name: '$', type: 'address' }],
615
+ stateMutability: 'view',
616
+ type: 'function',
617
+ },
618
+ {
619
+ inputs: [{ name: 'owners', type: 'bytes[]' }],
620
+ name: 'initialize',
621
+ outputs: [],
622
+ stateMutability: 'payable',
623
+ type: 'function',
624
+ },
625
+ {
626
+ inputs: [{ name: 'account', type: 'address' }],
627
+ name: 'isOwnerAddress',
628
+ outputs: [{ name: '', type: 'bool' }],
629
+ stateMutability: 'view',
630
+ type: 'function',
631
+ },
632
+ {
633
+ inputs: [{ name: 'account', type: 'bytes' }],
634
+ name: 'isOwnerBytes',
635
+ outputs: [{ name: '', type: 'bool' }],
636
+ stateMutability: 'view',
637
+ type: 'function',
638
+ },
639
+ {
640
+ inputs: [
641
+ { name: 'x', type: 'bytes32' },
642
+ { name: 'y', type: 'bytes32' },
643
+ ],
644
+ name: 'isOwnerPublicKey',
645
+ outputs: [{ name: '', type: 'bool' }],
646
+ stateMutability: 'view',
647
+ type: 'function',
648
+ },
649
+ {
650
+ inputs: [
651
+ { name: 'hash', type: 'bytes32' },
652
+ { name: 'signature', type: 'bytes' },
653
+ ],
654
+ name: 'isValidSignature',
655
+ outputs: [{ name: 'result', type: 'bytes4' }],
656
+ stateMutability: 'view',
657
+ type: 'function',
658
+ },
659
+ {
660
+ inputs: [],
661
+ name: 'nextOwnerIndex',
662
+ outputs: [{ name: '', type: 'uint256' }],
663
+ stateMutability: 'view',
664
+ type: 'function',
665
+ },
666
+ {
667
+ inputs: [{ name: 'index', type: 'uint256' }],
668
+ name: 'ownerAtIndex',
669
+ outputs: [{ name: '', type: 'bytes' }],
670
+ stateMutability: 'view',
671
+ type: 'function',
672
+ },
673
+ {
674
+ inputs: [],
675
+ name: 'ownerCount',
676
+ outputs: [{ name: '', type: 'uint256' }],
677
+ stateMutability: 'view',
678
+ type: 'function',
679
+ },
680
+ {
681
+ inputs: [],
682
+ name: 'proxiableUUID',
683
+ outputs: [{ name: '', type: 'bytes32' }],
684
+ stateMutability: 'view',
685
+ type: 'function',
686
+ },
687
+ {
688
+ inputs: [
689
+ { name: 'index', type: 'uint256' },
690
+ { name: 'owner', type: 'bytes' },
691
+ ],
692
+ name: 'removeLastOwner',
693
+ outputs: [],
694
+ stateMutability: 'nonpayable',
695
+ type: 'function',
696
+ },
697
+ {
698
+ inputs: [
699
+ { name: 'index', type: 'uint256' },
700
+ { name: 'owner', type: 'bytes' },
701
+ ],
702
+ name: 'removeOwnerAtIndex',
703
+ outputs: [],
704
+ stateMutability: 'nonpayable',
705
+ type: 'function',
706
+ },
707
+ {
708
+ inputs: [],
709
+ name: 'removedOwnersCount',
710
+ outputs: [{ name: '', type: 'uint256' }],
711
+ stateMutability: 'view',
712
+ type: 'function',
713
+ },
714
+ {
715
+ inputs: [{ name: 'hash', type: 'bytes32' }],
716
+ name: 'replaySafeHash',
717
+ outputs: [{ name: '', type: 'bytes32' }],
718
+ stateMutability: 'view',
719
+ type: 'function',
720
+ },
721
+ {
722
+ inputs: [
723
+ { name: 'newImplementation', type: 'address' },
724
+ { name: 'data', type: 'bytes' },
725
+ ],
726
+ name: 'upgradeToAndCall',
727
+ outputs: [],
728
+ stateMutability: 'payable',
729
+ type: 'function',
730
+ },
731
+ {
732
+ inputs: [
733
+ {
734
+ components: [
735
+ { name: 'sender', type: 'address' },
736
+ { name: 'nonce', type: 'uint256' },
737
+ { name: 'initCode', type: 'bytes' },
738
+ { name: 'callData', type: 'bytes' },
739
+ { name: 'callGasLimit', type: 'uint256' },
740
+ {
741
+ name: 'verificationGasLimit',
742
+ type: 'uint256',
743
+ },
744
+ {
745
+ name: 'preVerificationGas',
746
+ type: 'uint256',
747
+ },
748
+ { name: 'maxFeePerGas', type: 'uint256' },
749
+ {
750
+ name: 'maxPriorityFeePerGas',
751
+ type: 'uint256',
752
+ },
753
+ { name: 'paymasterAndData', type: 'bytes' },
754
+ { name: 'signature', type: 'bytes' },
755
+ ],
756
+
757
+ name: 'userOp',
758
+ type: 'tuple',
759
+ },
760
+ { name: 'userOpHash', type: 'bytes32' },
761
+ { name: 'missingAccountFunds', type: 'uint256' },
762
+ ],
763
+ name: 'validateUserOp',
764
+ outputs: [{ name: 'validationData', type: 'uint256' }],
765
+ stateMutability: 'nonpayable',
766
+ type: 'function',
767
+ },
768
+ { stateMutability: 'payable', type: 'receive' },
769
+ ] as const
770
+
771
+ const factoryAbi = [
772
+ {
773
+ inputs: [{ name: 'implementation_', type: 'address' }],
774
+ stateMutability: 'payable',
775
+ type: 'constructor',
776
+ },
777
+ { inputs: [], name: 'OwnerRequired', type: 'error' },
778
+ {
779
+ inputs: [
780
+ { name: 'owners', type: 'bytes[]' },
781
+ { name: 'nonce', type: 'uint256' },
782
+ ],
783
+ name: 'createAccount',
784
+ outputs: [
785
+ {
786
+ name: 'account',
787
+ type: 'address',
788
+ },
789
+ ],
790
+ stateMutability: 'payable',
791
+ type: 'function',
792
+ },
793
+ {
794
+ inputs: [
795
+ { name: 'owners', type: 'bytes[]' },
796
+ { name: 'nonce', type: 'uint256' },
797
+ ],
798
+ name: 'getAddress',
799
+ outputs: [{ name: '', type: 'address' }],
800
+ stateMutability: 'view',
801
+ type: 'function',
802
+ },
803
+ {
804
+ inputs: [],
805
+ name: 'implementation',
806
+ outputs: [{ name: '', type: 'address' }],
807
+ stateMutability: 'view',
808
+ type: 'function',
809
+ },
810
+ {
811
+ inputs: [],
812
+ name: 'initCodeHash',
813
+ outputs: [{ name: '', type: 'bytes32' }],
814
+ stateMutability: 'view',
815
+ type: 'function',
816
+ },
817
+ ] as const