@zerodev/sdk 4.0.2-alpha.23

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (393) hide show
  1. package/README.md +450 -0
  2. package/dist/cjs/index.d.ts +21 -0
  3. package/dist/cjs/index.js +50 -0
  4. package/dist/cjs/index.js.map +1 -0
  5. package/dist/cjs/kernel-zerodev/abis/ERC165SessionKeyValidatorAbi.d.ts +162 -0
  6. package/dist/cjs/kernel-zerodev/abis/ERC165SessionKeyValidatorAbi.js +215 -0
  7. package/dist/cjs/kernel-zerodev/abis/ERC165SessionKeyValidatorAbi.js.map +1 -0
  8. package/dist/cjs/kernel-zerodev/abis/ERC20Abi.d.ts +39 -0
  9. package/dist/cjs/kernel-zerodev/abis/ERC20Abi.js +157 -0
  10. package/dist/cjs/kernel-zerodev/abis/ERC20Abi.js.map +1 -0
  11. package/dist/cjs/kernel-zerodev/abis/ESCDAValidatorAbi.d.ts +158 -0
  12. package/dist/cjs/kernel-zerodev/abis/ESCDAValidatorAbi.js +210 -0
  13. package/dist/cjs/kernel-zerodev/abis/ESCDAValidatorAbi.js.map +1 -0
  14. package/dist/cjs/kernel-zerodev/abis/KernelAccountAbi.d.ts +496 -0
  15. package/dist/cjs/kernel-zerodev/abis/KernelAccountAbi.js +646 -0
  16. package/dist/cjs/kernel-zerodev/abis/KernelAccountAbi.js.map +1 -0
  17. package/dist/cjs/kernel-zerodev/abis/KernelFactoryAbi.d.ts +293 -0
  18. package/dist/cjs/kernel-zerodev/abis/KernelFactoryAbi.js +384 -0
  19. package/dist/cjs/kernel-zerodev/abis/KernelFactoryAbi.js.map +1 -0
  20. package/dist/cjs/kernel-zerodev/abis/KillSwitchValidatorAbi.d.ts +150 -0
  21. package/dist/cjs/kernel-zerodev/abis/KillSwitchValidatorAbi.js +200 -0
  22. package/dist/cjs/kernel-zerodev/abis/KillSwitchValidatorAbi.js.map +1 -0
  23. package/dist/cjs/kernel-zerodev/abis/MultiSendAbi.d.ts +15 -0
  24. package/dist/cjs/kernel-zerodev/abis/MultiSendAbi.js +24 -0
  25. package/dist/cjs/kernel-zerodev/abis/MultiSendAbi.js.map +1 -0
  26. package/dist/cjs/kernel-zerodev/abis/Test_ERC20Abi.d.ts +39 -0
  27. package/dist/cjs/kernel-zerodev/abis/Test_ERC20Abi.js +161 -0
  28. package/dist/cjs/kernel-zerodev/abis/Test_ERC20Abi.js.map +1 -0
  29. package/dist/cjs/kernel-zerodev/abis/Test_ERC721Abi.d.ts +287 -0
  30. package/dist/cjs/kernel-zerodev/abis/Test_ERC721Abi.js +377 -0
  31. package/dist/cjs/kernel-zerodev/abis/Test_ERC721Abi.js.map +1 -0
  32. package/dist/cjs/kernel-zerodev/abis/TokenActionsAbi.d.ts +63 -0
  33. package/dist/cjs/kernel-zerodev/abis/TokenActionsAbi.js +85 -0
  34. package/dist/cjs/kernel-zerodev/abis/TokenActionsAbi.js.map +1 -0
  35. package/dist/cjs/kernel-zerodev/abis/index.d.ts +8 -0
  36. package/dist/cjs/kernel-zerodev/abis/index.js +18 -0
  37. package/dist/cjs/kernel-zerodev/abis/index.js.map +1 -0
  38. package/dist/cjs/kernel-zerodev/account.d.ts +36 -0
  39. package/dist/cjs/kernel-zerodev/account.js +239 -0
  40. package/dist/cjs/kernel-zerodev/account.js.map +1 -0
  41. package/dist/cjs/kernel-zerodev/api/index.d.ts +1 -0
  42. package/dist/cjs/kernel-zerodev/api/index.js +24 -0
  43. package/dist/cjs/kernel-zerodev/api/index.js.map +1 -0
  44. package/dist/cjs/kernel-zerodev/client/create-client.d.ts +11 -0
  45. package/dist/cjs/kernel-zerodev/client/create-client.js +21 -0
  46. package/dist/cjs/kernel-zerodev/client/create-client.js.map +1 -0
  47. package/dist/cjs/kernel-zerodev/constants.d.ts +23 -0
  48. package/dist/cjs/kernel-zerodev/constants.js +45 -0
  49. package/dist/cjs/kernel-zerodev/constants.js.map +1 -0
  50. package/dist/cjs/kernel-zerodev/errors.d.ts +5 -0
  51. package/dist/cjs/kernel-zerodev/errors.js +12 -0
  52. package/dist/cjs/kernel-zerodev/errors.js.map +1 -0
  53. package/dist/cjs/kernel-zerodev/ethers-provider/ethers-provider.d.ts +21 -0
  54. package/dist/cjs/kernel-zerodev/ethers-provider/ethers-provider.js +94 -0
  55. package/dist/cjs/kernel-zerodev/ethers-provider/ethers-provider.js.map +1 -0
  56. package/dist/cjs/kernel-zerodev/middleware/gas-estimator.d.ts +15 -0
  57. package/dist/cjs/kernel-zerodev/middleware/gas-estimator.js +132 -0
  58. package/dist/cjs/kernel-zerodev/middleware/gas-estimator.js.map +1 -0
  59. package/dist/cjs/kernel-zerodev/middleware/paymaster.d.ts +5 -0
  60. package/dist/cjs/kernel-zerodev/middleware/paymaster.js +43 -0
  61. package/dist/cjs/kernel-zerodev/middleware/paymaster.js.map +1 -0
  62. package/dist/cjs/kernel-zerodev/paymaster/base.d.ts +16 -0
  63. package/dist/cjs/kernel-zerodev/paymaster/base.js +58 -0
  64. package/dist/cjs/kernel-zerodev/paymaster/base.js.map +1 -0
  65. package/dist/cjs/kernel-zerodev/paymaster/index.d.ts +3 -0
  66. package/dist/cjs/kernel-zerodev/paymaster/index.js +10 -0
  67. package/dist/cjs/kernel-zerodev/paymaster/index.js.map +1 -0
  68. package/dist/cjs/kernel-zerodev/paymaster/token-paymaster.d.ts +14 -0
  69. package/dist/cjs/kernel-zerodev/paymaster/token-paymaster.js +173 -0
  70. package/dist/cjs/kernel-zerodev/paymaster/token-paymaster.js.map +1 -0
  71. package/dist/cjs/kernel-zerodev/paymaster/types.d.ts +29 -0
  72. package/dist/cjs/kernel-zerodev/paymaster/types.js +3 -0
  73. package/dist/cjs/kernel-zerodev/paymaster/types.js.map +1 -0
  74. package/dist/cjs/kernel-zerodev/paymaster/verifying-paymaster.d.ts +8 -0
  75. package/dist/cjs/kernel-zerodev/paymaster/verifying-paymaster.js +31 -0
  76. package/dist/cjs/kernel-zerodev/paymaster/verifying-paymaster.js.map +1 -0
  77. package/dist/cjs/kernel-zerodev/provider.d.ts +41 -0
  78. package/dist/cjs/kernel-zerodev/provider.js +225 -0
  79. package/dist/cjs/kernel-zerodev/provider.js.map +1 -0
  80. package/dist/cjs/kernel-zerodev/signer/zd-local-account.d.ts +13 -0
  81. package/dist/cjs/kernel-zerodev/signer/zd-local-account.js +61 -0
  82. package/dist/cjs/kernel-zerodev/signer/zd-local-account.js.map +1 -0
  83. package/dist/cjs/kernel-zerodev/types.d.ts +7 -0
  84. package/dist/cjs/kernel-zerodev/types.js +3 -0
  85. package/dist/cjs/kernel-zerodev/types.js.map +1 -0
  86. package/dist/cjs/kernel-zerodev/utils/ERC4337-utils.d.ts +5 -0
  87. package/dist/cjs/kernel-zerodev/utils/ERC4337-utils.js +106 -0
  88. package/dist/cjs/kernel-zerodev/utils/ERC4337-utils.js.map +1 -0
  89. package/dist/cjs/kernel-zerodev/utils/calc-pre-verification-gas.d.ts +15 -0
  90. package/dist/cjs/kernel-zerodev/utils/calc-pre-verification-gas.js +33 -0
  91. package/dist/cjs/kernel-zerodev/utils/calc-pre-verification-gas.js.map +1 -0
  92. package/dist/cjs/kernel-zerodev/utils.d.ts +21 -0
  93. package/dist/cjs/kernel-zerodev/utils.js +108 -0
  94. package/dist/cjs/kernel-zerodev/utils.js.map +1 -0
  95. package/dist/cjs/kernel-zerodev/validator/base.d.ts +53 -0
  96. package/dist/cjs/kernel-zerodev/validator/base.js +248 -0
  97. package/dist/cjs/kernel-zerodev/validator/base.js.map +1 -0
  98. package/dist/cjs/kernel-zerodev/validator/ecdsa-validator.d.ts +19 -0
  99. package/dist/cjs/kernel-zerodev/validator/ecdsa-validator.js +93 -0
  100. package/dist/cjs/kernel-zerodev/validator/ecdsa-validator.js.map +1 -0
  101. package/dist/cjs/kernel-zerodev/validator/erc165-session-key-validator.d.ts +27 -0
  102. package/dist/cjs/kernel-zerodev/validator/erc165-session-key-validator.js +103 -0
  103. package/dist/cjs/kernel-zerodev/validator/erc165-session-key-validator.js.map +1 -0
  104. package/dist/cjs/kernel-zerodev/validator/index.d.ts +6 -0
  105. package/dist/cjs/kernel-zerodev/validator/index.js +15 -0
  106. package/dist/cjs/kernel-zerodev/validator/index.js.map +1 -0
  107. package/dist/cjs/kernel-zerodev/validator/kill-switch-validator.d.ts +21 -0
  108. package/dist/cjs/kernel-zerodev/validator/kill-switch-validator.js +110 -0
  109. package/dist/cjs/kernel-zerodev/validator/kill-switch-validator.js.map +1 -0
  110. package/dist/cjs/kernel-zerodev/validator/types.d.ts +17 -0
  111. package/dist/cjs/kernel-zerodev/validator/types.js +3 -0
  112. package/dist/cjs/kernel-zerodev/validator/types.js.map +1 -0
  113. package/dist/cjs/kernel-zerodev/validator-provider/base.d.ts +28 -0
  114. package/dist/cjs/kernel-zerodev/validator-provider/base.js +94 -0
  115. package/dist/cjs/kernel-zerodev/validator-provider/base.js.map +1 -0
  116. package/dist/cjs/kernel-zerodev/validator-provider/ecdsa-provider.d.ts +8 -0
  117. package/dist/cjs/kernel-zerodev/validator-provider/ecdsa-provider.js +60 -0
  118. package/dist/cjs/kernel-zerodev/validator-provider/ecdsa-provider.js.map +1 -0
  119. package/dist/cjs/kernel-zerodev/validator-provider/erc165-session-key-provider.d.ts +8 -0
  120. package/dist/cjs/kernel-zerodev/validator-provider/erc165-session-key-provider.js +64 -0
  121. package/dist/cjs/kernel-zerodev/validator-provider/erc165-session-key-provider.js.map +1 -0
  122. package/dist/cjs/kernel-zerodev/validator-provider/index.d.ts +6 -0
  123. package/dist/cjs/kernel-zerodev/validator-provider/index.js +15 -0
  124. package/dist/cjs/kernel-zerodev/validator-provider/index.js.map +1 -0
  125. package/dist/cjs/kernel-zerodev/validator-provider/kill-switch-provider.d.ts +8 -0
  126. package/dist/cjs/kernel-zerodev/validator-provider/kill-switch-provider.js +64 -0
  127. package/dist/cjs/kernel-zerodev/validator-provider/kill-switch-provider.js.map +1 -0
  128. package/dist/cjs/kernel-zerodev/validator-provider/types.d.ts +21 -0
  129. package/dist/cjs/kernel-zerodev/validator-provider/types.js +3 -0
  130. package/dist/cjs/kernel-zerodev/validator-provider/types.js.map +1 -0
  131. package/dist/cjs/package.json +1 -0
  132. package/dist/esm/index.d.ts +21 -0
  133. package/dist/esm/index.js +13 -0
  134. package/dist/esm/index.js.map +1 -0
  135. package/dist/esm/kernel-zerodev/abis/ERC165SessionKeyValidatorAbi.d.ts +162 -0
  136. package/dist/esm/kernel-zerodev/abis/ERC165SessionKeyValidatorAbi.js +212 -0
  137. package/dist/esm/kernel-zerodev/abis/ERC165SessionKeyValidatorAbi.js.map +1 -0
  138. package/dist/esm/kernel-zerodev/abis/ERC20Abi.d.ts +39 -0
  139. package/dist/esm/kernel-zerodev/abis/ERC20Abi.js +154 -0
  140. package/dist/esm/kernel-zerodev/abis/ERC20Abi.js.map +1 -0
  141. package/dist/esm/kernel-zerodev/abis/ESCDAValidatorAbi.d.ts +158 -0
  142. package/dist/esm/kernel-zerodev/abis/ESCDAValidatorAbi.js +207 -0
  143. package/dist/esm/kernel-zerodev/abis/ESCDAValidatorAbi.js.map +1 -0
  144. package/dist/esm/kernel-zerodev/abis/KernelAccountAbi.d.ts +496 -0
  145. package/dist/esm/kernel-zerodev/abis/KernelAccountAbi.js +643 -0
  146. package/dist/esm/kernel-zerodev/abis/KernelAccountAbi.js.map +1 -0
  147. package/dist/esm/kernel-zerodev/abis/KernelFactoryAbi.d.ts +293 -0
  148. package/dist/esm/kernel-zerodev/abis/KernelFactoryAbi.js +381 -0
  149. package/dist/esm/kernel-zerodev/abis/KernelFactoryAbi.js.map +1 -0
  150. package/dist/esm/kernel-zerodev/abis/KillSwitchValidatorAbi.d.ts +150 -0
  151. package/dist/esm/kernel-zerodev/abis/KillSwitchValidatorAbi.js +197 -0
  152. package/dist/esm/kernel-zerodev/abis/KillSwitchValidatorAbi.js.map +1 -0
  153. package/dist/esm/kernel-zerodev/abis/MultiSendAbi.d.ts +15 -0
  154. package/dist/esm/kernel-zerodev/abis/MultiSendAbi.js +21 -0
  155. package/dist/esm/kernel-zerodev/abis/MultiSendAbi.js.map +1 -0
  156. package/dist/esm/kernel-zerodev/abis/Test_ERC20Abi.d.ts +39 -0
  157. package/dist/esm/kernel-zerodev/abis/Test_ERC20Abi.js +158 -0
  158. package/dist/esm/kernel-zerodev/abis/Test_ERC20Abi.js.map +1 -0
  159. package/dist/esm/kernel-zerodev/abis/Test_ERC721Abi.d.ts +287 -0
  160. package/dist/esm/kernel-zerodev/abis/Test_ERC721Abi.js +374 -0
  161. package/dist/esm/kernel-zerodev/abis/Test_ERC721Abi.js.map +1 -0
  162. package/dist/esm/kernel-zerodev/abis/TokenActionsAbi.d.ts +63 -0
  163. package/dist/esm/kernel-zerodev/abis/TokenActionsAbi.js +82 -0
  164. package/dist/esm/kernel-zerodev/abis/TokenActionsAbi.js.map +1 -0
  165. package/dist/esm/kernel-zerodev/abis/index.d.ts +8 -0
  166. package/dist/esm/kernel-zerodev/abis/index.js +9 -0
  167. package/dist/esm/kernel-zerodev/abis/index.js.map +1 -0
  168. package/dist/esm/kernel-zerodev/account.d.ts +36 -0
  169. package/dist/esm/kernel-zerodev/account.js +234 -0
  170. package/dist/esm/kernel-zerodev/account.js.map +1 -0
  171. package/dist/esm/kernel-zerodev/api/index.d.ts +1 -0
  172. package/dist/esm/kernel-zerodev/api/index.js +17 -0
  173. package/dist/esm/kernel-zerodev/api/index.js.map +1 -0
  174. package/dist/esm/kernel-zerodev/client/create-client.d.ts +11 -0
  175. package/dist/esm/kernel-zerodev/client/create-client.js +17 -0
  176. package/dist/esm/kernel-zerodev/client/create-client.js.map +1 -0
  177. package/dist/esm/kernel-zerodev/constants.d.ts +23 -0
  178. package/dist/esm/kernel-zerodev/constants.js +42 -0
  179. package/dist/esm/kernel-zerodev/constants.js.map +1 -0
  180. package/dist/esm/kernel-zerodev/errors.d.ts +5 -0
  181. package/dist/esm/kernel-zerodev/errors.js +6 -0
  182. package/dist/esm/kernel-zerodev/errors.js.map +1 -0
  183. package/dist/esm/kernel-zerodev/ethers-provider/ethers-provider.d.ts +21 -0
  184. package/dist/esm/kernel-zerodev/ethers-provider/ethers-provider.js +90 -0
  185. package/dist/esm/kernel-zerodev/ethers-provider/ethers-provider.js.map +1 -0
  186. package/dist/esm/kernel-zerodev/middleware/gas-estimator.d.ts +15 -0
  187. package/dist/esm/kernel-zerodev/middleware/gas-estimator.js +124 -0
  188. package/dist/esm/kernel-zerodev/middleware/gas-estimator.js.map +1 -0
  189. package/dist/esm/kernel-zerodev/middleware/paymaster.d.ts +5 -0
  190. package/dist/esm/kernel-zerodev/middleware/paymaster.js +39 -0
  191. package/dist/esm/kernel-zerodev/middleware/paymaster.js.map +1 -0
  192. package/dist/esm/kernel-zerodev/paymaster/base.d.ts +16 -0
  193. package/dist/esm/kernel-zerodev/paymaster/base.js +51 -0
  194. package/dist/esm/kernel-zerodev/paymaster/base.js.map +1 -0
  195. package/dist/esm/kernel-zerodev/paymaster/index.d.ts +3 -0
  196. package/dist/esm/kernel-zerodev/paymaster/index.js +7 -0
  197. package/dist/esm/kernel-zerodev/paymaster/index.js.map +1 -0
  198. package/dist/esm/kernel-zerodev/paymaster/token-paymaster.d.ts +14 -0
  199. package/dist/esm/kernel-zerodev/paymaster/token-paymaster.js +168 -0
  200. package/dist/esm/kernel-zerodev/paymaster/token-paymaster.js.map +1 -0
  201. package/dist/esm/kernel-zerodev/paymaster/types.d.ts +29 -0
  202. package/dist/esm/kernel-zerodev/paymaster/types.js +2 -0
  203. package/dist/esm/kernel-zerodev/paymaster/types.js.map +1 -0
  204. package/dist/esm/kernel-zerodev/paymaster/verifying-paymaster.d.ts +8 -0
  205. package/dist/esm/kernel-zerodev/paymaster/verifying-paymaster.js +27 -0
  206. package/dist/esm/kernel-zerodev/paymaster/verifying-paymaster.js.map +1 -0
  207. package/dist/esm/kernel-zerodev/provider.d.ts +41 -0
  208. package/dist/esm/kernel-zerodev/provider.js +222 -0
  209. package/dist/esm/kernel-zerodev/provider.js.map +1 -0
  210. package/dist/esm/kernel-zerodev/signer/zd-local-account.d.ts +13 -0
  211. package/dist/esm/kernel-zerodev/signer/zd-local-account.js +58 -0
  212. package/dist/esm/kernel-zerodev/signer/zd-local-account.js.map +1 -0
  213. package/dist/esm/kernel-zerodev/types.d.ts +7 -0
  214. package/dist/esm/kernel-zerodev/types.js +2 -0
  215. package/dist/esm/kernel-zerodev/types.js.map +1 -0
  216. package/dist/esm/kernel-zerodev/utils/ERC4337-utils.d.ts +5 -0
  217. package/dist/esm/kernel-zerodev/utils/ERC4337-utils.js +100 -0
  218. package/dist/esm/kernel-zerodev/utils/ERC4337-utils.js.map +1 -0
  219. package/dist/esm/kernel-zerodev/utils/calc-pre-verification-gas.d.ts +15 -0
  220. package/dist/esm/kernel-zerodev/utils/calc-pre-verification-gas.js +29 -0
  221. package/dist/esm/kernel-zerodev/utils/calc-pre-verification-gas.js.map +1 -0
  222. package/dist/esm/kernel-zerodev/utils.d.ts +21 -0
  223. package/dist/esm/kernel-zerodev/utils.js +96 -0
  224. package/dist/esm/kernel-zerodev/utils.js.map +1 -0
  225. package/dist/esm/kernel-zerodev/validator/base.d.ts +53 -0
  226. package/dist/esm/kernel-zerodev/validator/base.js +245 -0
  227. package/dist/esm/kernel-zerodev/validator/base.js.map +1 -0
  228. package/dist/esm/kernel-zerodev/validator/ecdsa-validator.d.ts +19 -0
  229. package/dist/esm/kernel-zerodev/validator/ecdsa-validator.js +89 -0
  230. package/dist/esm/kernel-zerodev/validator/ecdsa-validator.js.map +1 -0
  231. package/dist/esm/kernel-zerodev/validator/erc165-session-key-validator.d.ts +27 -0
  232. package/dist/esm/kernel-zerodev/validator/erc165-session-key-validator.js +99 -0
  233. package/dist/esm/kernel-zerodev/validator/erc165-session-key-validator.js.map +1 -0
  234. package/dist/esm/kernel-zerodev/validator/index.d.ts +6 -0
  235. package/dist/esm/kernel-zerodev/validator/index.js +10 -0
  236. package/dist/esm/kernel-zerodev/validator/index.js.map +1 -0
  237. package/dist/esm/kernel-zerodev/validator/kill-switch-validator.d.ts +21 -0
  238. package/dist/esm/kernel-zerodev/validator/kill-switch-validator.js +106 -0
  239. package/dist/esm/kernel-zerodev/validator/kill-switch-validator.js.map +1 -0
  240. package/dist/esm/kernel-zerodev/validator/types.d.ts +17 -0
  241. package/dist/esm/kernel-zerodev/validator/types.js +2 -0
  242. package/dist/esm/kernel-zerodev/validator/types.js.map +1 -0
  243. package/dist/esm/kernel-zerodev/validator-provider/base.d.ts +28 -0
  244. package/dist/esm/kernel-zerodev/validator-provider/base.js +91 -0
  245. package/dist/esm/kernel-zerodev/validator-provider/base.js.map +1 -0
  246. package/dist/esm/kernel-zerodev/validator-provider/ecdsa-provider.d.ts +8 -0
  247. package/dist/esm/kernel-zerodev/validator-provider/ecdsa-provider.js +56 -0
  248. package/dist/esm/kernel-zerodev/validator-provider/ecdsa-provider.js.map +1 -0
  249. package/dist/esm/kernel-zerodev/validator-provider/erc165-session-key-provider.d.ts +8 -0
  250. package/dist/esm/kernel-zerodev/validator-provider/erc165-session-key-provider.js +60 -0
  251. package/dist/esm/kernel-zerodev/validator-provider/erc165-session-key-provider.js.map +1 -0
  252. package/dist/esm/kernel-zerodev/validator-provider/index.d.ts +6 -0
  253. package/dist/esm/kernel-zerodev/validator-provider/index.js +10 -0
  254. package/dist/esm/kernel-zerodev/validator-provider/index.js.map +1 -0
  255. package/dist/esm/kernel-zerodev/validator-provider/kill-switch-provider.d.ts +8 -0
  256. package/dist/esm/kernel-zerodev/validator-provider/kill-switch-provider.js +60 -0
  257. package/dist/esm/kernel-zerodev/validator-provider/kill-switch-provider.js.map +1 -0
  258. package/dist/esm/kernel-zerodev/validator-provider/types.d.ts +21 -0
  259. package/dist/esm/kernel-zerodev/validator-provider/types.js +2 -0
  260. package/dist/esm/kernel-zerodev/validator-provider/types.js.map +1 -0
  261. package/dist/esm/package.json +1 -0
  262. package/dist/types/index.d.ts +22 -0
  263. package/dist/types/index.d.ts.map +1 -0
  264. package/dist/types/kernel-zerodev/abis/ERC165SessionKeyValidatorAbi.d.ts +163 -0
  265. package/dist/types/kernel-zerodev/abis/ERC165SessionKeyValidatorAbi.d.ts.map +1 -0
  266. package/dist/types/kernel-zerodev/abis/ERC20Abi.d.ts +40 -0
  267. package/dist/types/kernel-zerodev/abis/ERC20Abi.d.ts.map +1 -0
  268. package/dist/types/kernel-zerodev/abis/ESCDAValidatorAbi.d.ts +159 -0
  269. package/dist/types/kernel-zerodev/abis/ESCDAValidatorAbi.d.ts.map +1 -0
  270. package/dist/types/kernel-zerodev/abis/KernelAccountAbi.d.ts +497 -0
  271. package/dist/types/kernel-zerodev/abis/KernelAccountAbi.d.ts.map +1 -0
  272. package/dist/types/kernel-zerodev/abis/KernelFactoryAbi.d.ts +294 -0
  273. package/dist/types/kernel-zerodev/abis/KernelFactoryAbi.d.ts.map +1 -0
  274. package/dist/types/kernel-zerodev/abis/KillSwitchValidatorAbi.d.ts +151 -0
  275. package/dist/types/kernel-zerodev/abis/KillSwitchValidatorAbi.d.ts.map +1 -0
  276. package/dist/types/kernel-zerodev/abis/MultiSendAbi.d.ts +16 -0
  277. package/dist/types/kernel-zerodev/abis/MultiSendAbi.d.ts.map +1 -0
  278. package/dist/types/kernel-zerodev/abis/Test_ERC20Abi.d.ts +40 -0
  279. package/dist/types/kernel-zerodev/abis/Test_ERC20Abi.d.ts.map +1 -0
  280. package/dist/types/kernel-zerodev/abis/Test_ERC721Abi.d.ts +288 -0
  281. package/dist/types/kernel-zerodev/abis/Test_ERC721Abi.d.ts.map +1 -0
  282. package/dist/types/kernel-zerodev/abis/TokenActionsAbi.d.ts +64 -0
  283. package/dist/types/kernel-zerodev/abis/TokenActionsAbi.d.ts.map +1 -0
  284. package/dist/types/kernel-zerodev/abis/index.d.ts +9 -0
  285. package/dist/types/kernel-zerodev/abis/index.d.ts.map +1 -0
  286. package/dist/types/kernel-zerodev/account.d.ts +37 -0
  287. package/dist/types/kernel-zerodev/account.d.ts.map +1 -0
  288. package/dist/types/kernel-zerodev/api/index.d.ts +2 -0
  289. package/dist/types/kernel-zerodev/api/index.d.ts.map +1 -0
  290. package/dist/types/kernel-zerodev/client/create-client.d.ts +12 -0
  291. package/dist/types/kernel-zerodev/client/create-client.d.ts.map +1 -0
  292. package/dist/types/kernel-zerodev/constants.d.ts +24 -0
  293. package/dist/types/kernel-zerodev/constants.d.ts.map +1 -0
  294. package/dist/types/kernel-zerodev/errors.d.ts +6 -0
  295. package/dist/types/kernel-zerodev/errors.d.ts.map +1 -0
  296. package/dist/types/kernel-zerodev/ethers-provider/ethers-provider.d.ts +39 -0
  297. package/dist/types/kernel-zerodev/ethers-provider/ethers-provider.d.ts.map +1 -0
  298. package/dist/types/kernel-zerodev/middleware/gas-estimator.d.ts +20 -0
  299. package/dist/types/kernel-zerodev/middleware/gas-estimator.d.ts.map +1 -0
  300. package/dist/types/kernel-zerodev/middleware/paymaster.d.ts +6 -0
  301. package/dist/types/kernel-zerodev/middleware/paymaster.d.ts.map +1 -0
  302. package/dist/types/kernel-zerodev/paymaster/base.d.ts +17 -0
  303. package/dist/types/kernel-zerodev/paymaster/base.d.ts.map +1 -0
  304. package/dist/types/kernel-zerodev/paymaster/index.d.ts +4 -0
  305. package/dist/types/kernel-zerodev/paymaster/index.d.ts.map +1 -0
  306. package/dist/types/kernel-zerodev/paymaster/token-paymaster.d.ts +15 -0
  307. package/dist/types/kernel-zerodev/paymaster/token-paymaster.d.ts.map +1 -0
  308. package/dist/types/kernel-zerodev/paymaster/types.d.ts +30 -0
  309. package/dist/types/kernel-zerodev/paymaster/types.d.ts.map +1 -0
  310. package/dist/types/kernel-zerodev/paymaster/verifying-paymaster.d.ts +9 -0
  311. package/dist/types/kernel-zerodev/paymaster/verifying-paymaster.d.ts.map +1 -0
  312. package/dist/types/kernel-zerodev/provider.d.ts +42 -0
  313. package/dist/types/kernel-zerodev/provider.d.ts.map +1 -0
  314. package/dist/types/kernel-zerodev/signer/zd-local-account.d.ts +14 -0
  315. package/dist/types/kernel-zerodev/signer/zd-local-account.d.ts.map +1 -0
  316. package/dist/types/kernel-zerodev/types.d.ts +8 -0
  317. package/dist/types/kernel-zerodev/types.d.ts.map +1 -0
  318. package/dist/types/kernel-zerodev/utils/ERC4337-utils.d.ts +18 -0
  319. package/dist/types/kernel-zerodev/utils/ERC4337-utils.d.ts.map +1 -0
  320. package/dist/types/kernel-zerodev/utils/calc-pre-verification-gas.d.ts +44 -0
  321. package/dist/types/kernel-zerodev/utils/calc-pre-verification-gas.d.ts.map +1 -0
  322. package/dist/types/kernel-zerodev/utils.d.ts +22 -0
  323. package/dist/types/kernel-zerodev/utils.d.ts.map +1 -0
  324. package/dist/types/kernel-zerodev/validator/base.d.ts +54 -0
  325. package/dist/types/kernel-zerodev/validator/base.d.ts.map +1 -0
  326. package/dist/types/kernel-zerodev/validator/ecdsa-validator.d.ts +20 -0
  327. package/dist/types/kernel-zerodev/validator/ecdsa-validator.d.ts.map +1 -0
  328. package/dist/types/kernel-zerodev/validator/erc165-session-key-validator.d.ts +28 -0
  329. package/dist/types/kernel-zerodev/validator/erc165-session-key-validator.d.ts.map +1 -0
  330. package/dist/types/kernel-zerodev/validator/index.d.ts +7 -0
  331. package/dist/types/kernel-zerodev/validator/index.d.ts.map +1 -0
  332. package/dist/types/kernel-zerodev/validator/kill-switch-validator.d.ts +22 -0
  333. package/dist/types/kernel-zerodev/validator/kill-switch-validator.d.ts.map +1 -0
  334. package/dist/types/kernel-zerodev/validator/types.d.ts +18 -0
  335. package/dist/types/kernel-zerodev/validator/types.d.ts.map +1 -0
  336. package/dist/types/kernel-zerodev/validator-provider/base.d.ts +29 -0
  337. package/dist/types/kernel-zerodev/validator-provider/base.d.ts.map +1 -0
  338. package/dist/types/kernel-zerodev/validator-provider/ecdsa-provider.d.ts +9 -0
  339. package/dist/types/kernel-zerodev/validator-provider/ecdsa-provider.d.ts.map +1 -0
  340. package/dist/types/kernel-zerodev/validator-provider/erc165-session-key-provider.d.ts +9 -0
  341. package/dist/types/kernel-zerodev/validator-provider/erc165-session-key-provider.d.ts.map +1 -0
  342. package/dist/types/kernel-zerodev/validator-provider/index.d.ts +7 -0
  343. package/dist/types/kernel-zerodev/validator-provider/index.d.ts.map +1 -0
  344. package/dist/types/kernel-zerodev/validator-provider/kill-switch-provider.d.ts +9 -0
  345. package/dist/types/kernel-zerodev/validator-provider/kill-switch-provider.d.ts.map +1 -0
  346. package/dist/types/kernel-zerodev/validator-provider/types.d.ts +22 -0
  347. package/dist/types/kernel-zerodev/validator-provider/types.d.ts.map +1 -0
  348. package/package.json +70 -0
  349. package/src/index.ts +41 -0
  350. package/src/kernel-zerodev/__tests__/mocks/mock-signer-validator.ts +20 -0
  351. package/src/kernel-zerodev/__tests__/mocks/mock-signer.ts +14 -0
  352. package/src/kernel-zerodev/abis/ERC165SessionKeyValidatorAbi.ts +211 -0
  353. package/src/kernel-zerodev/abis/ERC20Abi.ts +153 -0
  354. package/src/kernel-zerodev/abis/ESCDAValidatorAbi.ts +206 -0
  355. package/src/kernel-zerodev/abis/KernelAccountAbi.ts +642 -0
  356. package/src/kernel-zerodev/abis/KernelFactoryAbi.ts +380 -0
  357. package/src/kernel-zerodev/abis/KillSwitchValidatorAbi.ts +196 -0
  358. package/src/kernel-zerodev/abis/MultiSendAbi.ts +20 -0
  359. package/src/kernel-zerodev/abis/Test_ERC20Abi.ts +157 -0
  360. package/src/kernel-zerodev/abis/Test_ERC721Abi.ts +373 -0
  361. package/src/kernel-zerodev/abis/TokenActionsAbi.ts +81 -0
  362. package/src/kernel-zerodev/abis/index.ts +17 -0
  363. package/src/kernel-zerodev/account.ts +308 -0
  364. package/src/kernel-zerodev/api/index.ts +25 -0
  365. package/src/kernel-zerodev/client/create-client.ts +37 -0
  366. package/src/kernel-zerodev/constants.ts +71 -0
  367. package/src/kernel-zerodev/errors.ts +13 -0
  368. package/src/kernel-zerodev/ethers-provider/ethers-provider.ts +118 -0
  369. package/src/kernel-zerodev/middleware/gas-estimator.ts +183 -0
  370. package/src/kernel-zerodev/middleware/paymaster.ts +66 -0
  371. package/src/kernel-zerodev/paymaster/base.ts +76 -0
  372. package/src/kernel-zerodev/paymaster/index.ts +9 -0
  373. package/src/kernel-zerodev/paymaster/token-paymaster.ts +209 -0
  374. package/src/kernel-zerodev/paymaster/types.ts +36 -0
  375. package/src/kernel-zerodev/paymaster/verifying-paymaster.ts +38 -0
  376. package/src/kernel-zerodev/provider.ts +307 -0
  377. package/src/kernel-zerodev/signer/zd-local-account.ts +63 -0
  378. package/src/kernel-zerodev/types.ts +8 -0
  379. package/src/kernel-zerodev/utils/ERC4337-utils.ts +161 -0
  380. package/src/kernel-zerodev/utils/calc-pre-verification-gas.ts +88 -0
  381. package/src/kernel-zerodev/utils.ts +166 -0
  382. package/src/kernel-zerodev/validator/base.ts +273 -0
  383. package/src/kernel-zerodev/validator/ecdsa-validator.ts +117 -0
  384. package/src/kernel-zerodev/validator/erc165-session-key-validator.ts +127 -0
  385. package/src/kernel-zerodev/validator/index.ts +12 -0
  386. package/src/kernel-zerodev/validator/kill-switch-validator.ts +142 -0
  387. package/src/kernel-zerodev/validator/types.ts +36 -0
  388. package/src/kernel-zerodev/validator-provider/base.ts +140 -0
  389. package/src/kernel-zerodev/validator-provider/ecdsa-provider.ts +61 -0
  390. package/src/kernel-zerodev/validator-provider/erc165-session-key-provider.ts +68 -0
  391. package/src/kernel-zerodev/validator-provider/index.ts +12 -0
  392. package/src/kernel-zerodev/validator-provider/kill-switch-provider.ts +68 -0
  393. package/src/kernel-zerodev/validator-provider/types.ts +26 -0
@@ -0,0 +1,308 @@
1
+ import type { Address } from "abitype";
2
+ import {
3
+ concatHex,
4
+ encodeAbiParameters,
5
+ encodeFunctionData,
6
+ type FallbackTransport,
7
+ hashMessage,
8
+ type Hex,
9
+ toBytes,
10
+ type Transport,
11
+ pad,
12
+ toHex,
13
+ getContract,
14
+ type PublicClient,
15
+ } from "viem";
16
+ import { parseAbiParameters } from "abitype";
17
+ import { KernelBaseValidator, ValidatorMode } from "./validator/base.js";
18
+ import { KernelAccountAbi } from "./abis/KernelAccountAbi.js";
19
+ import { KernelFactoryAbi } from "./abis/KernelFactoryAbi.js";
20
+ import {
21
+ type BaseSmartAccountParams,
22
+ BaseSmartContractAccount,
23
+ type SmartAccountSigner,
24
+ type BatchUserOperationCallData,
25
+ type UserOperationRequest,
26
+ defineReadOnly,
27
+ getChain,
28
+ } from "@alchemy/aa-core";
29
+ import {
30
+ BUNDLER_URL,
31
+ ENTRYPOINT_ADDRESS,
32
+ KERNEL_FACTORY_ADDRESS,
33
+ KERNEL_IMPL_ADDRESS,
34
+ MULTISEND_ADDR,
35
+ } from "./constants.js";
36
+ import { encodeMultiSend } from "./utils.js";
37
+ import { MultiSendAbi } from "./abis/MultiSendAbi.js";
38
+ import { polygonMumbai } from "viem/chains";
39
+ import { getChainId } from "./api/index.js";
40
+ import { createZeroDevPublicErc4337Client } from "./client/create-client.js";
41
+ import type { PaymasterAndBundlerProviders } from "./paymaster/types.js";
42
+ import type { KillSwitchValidator } from "./validator/kill-switch-validator.js";
43
+
44
+ export interface KernelSmartAccountParams<
45
+ TTransport extends Transport | FallbackTransport = Transport
46
+ > extends Partial<BaseSmartAccountParams<TTransport>> {
47
+ projectId: string;
48
+ owner: SmartAccountSigner;
49
+ factoryAddress?: Address;
50
+ index?: bigint;
51
+ validator?: KernelBaseValidator;
52
+ bundlerProvider?: PaymasterAndBundlerProviders;
53
+ }
54
+
55
+ export function isKernelAccount(
56
+ account: any
57
+ ): account is KernelSmartContractAccount {
58
+ return account && account.connectValidator !== undefined;
59
+ }
60
+
61
+ export class KernelSmartContractAccount<
62
+ TTransport extends Transport | FallbackTransport = Transport
63
+ > extends BaseSmartContractAccount<TTransport> {
64
+ private owner: SmartAccountSigner;
65
+ private readonly factoryAddress: Address;
66
+ private readonly index: bigint;
67
+ validator?: KernelBaseValidator;
68
+
69
+ constructor(params: KernelSmartAccountParams) {
70
+ super({
71
+ ...params,
72
+ entryPointAddress: params.entryPointAddress ?? ENTRYPOINT_ADDRESS,
73
+ chain: params.chain ?? polygonMumbai,
74
+ rpcClient: params.rpcClient ?? BUNDLER_URL,
75
+ });
76
+ this.index = params.index ?? 0n;
77
+ this.owner = params.owner;
78
+ this.factoryAddress = params.factoryAddress ?? KERNEL_FACTORY_ADDRESS;
79
+ this.validator = params.validator;
80
+ }
81
+
82
+ public static async init(
83
+ params: KernelSmartAccountParams
84
+ ): Promise<KernelSmartContractAccount> {
85
+ const chainId = await getChainId(params.projectId);
86
+ if (!chainId) {
87
+ throw new Error("ChainId not found");
88
+ }
89
+ const chain = getChain(chainId);
90
+ const rpcClient =
91
+ typeof params.rpcClient === "string"
92
+ ? createZeroDevPublicErc4337Client({
93
+ chain,
94
+ rpcUrl: params.rpcClient ?? BUNDLER_URL,
95
+ projectId: params.projectId,
96
+ bundlerProvider: params.bundlerProvider,
97
+ })
98
+ : params.rpcClient;
99
+ const instance = new KernelSmartContractAccount({
100
+ ...params,
101
+ chain,
102
+ rpcClient,
103
+ });
104
+ return instance;
105
+ }
106
+
107
+ async getAddress(): Promise<Address> {
108
+ if (!this.validator) {
109
+ throw new Error("Validator not connected");
110
+ }
111
+ if (!this.accountAddress) {
112
+ try {
113
+ const initializeData = encodeFunctionData({
114
+ abi: KernelAccountAbi,
115
+ functionName: "initialize",
116
+ args: [
117
+ this.validator.getAddress(),
118
+ await this.validator.getEnableData(),
119
+ ],
120
+ });
121
+ const kernelFactory = getContract({
122
+ abi: KernelFactoryAbi,
123
+ address: KERNEL_FACTORY_ADDRESS,
124
+ publicClient: this.rpcProvider as PublicClient,
125
+ });
126
+ return await kernelFactory.read.getAccountAddress([
127
+ initializeData,
128
+ this.index,
129
+ ]);
130
+ } catch (error) {
131
+ throw new Error(`getCounterFactualAddress failed: ${error}`);
132
+ }
133
+ }
134
+
135
+ return this.accountAddress;
136
+ }
137
+
138
+ connectValidator(validator: KernelBaseValidator): this {
139
+ defineReadOnly(this, "validator", validator);
140
+ return this;
141
+ }
142
+
143
+ getValidator(): KernelBaseValidator {
144
+ if (!this.validator) {
145
+ throw new Error("Validator not connected");
146
+ }
147
+ return this.validator;
148
+ }
149
+
150
+ getDummySignature(): Hex {
151
+ return "0x00000000870fe151d548a1c527c3804866fab30abf28ed17b79d5fc5149f19ca0819fefc3c57f3da4fdf9b10fab3f2f3dca536467ae44943b9dbb8433efe7760ddd72aaa1c";
152
+ }
153
+
154
+ async getDynamicDummySignature(
155
+ kernelAccountAddress: Address,
156
+ calldata: Hex
157
+ ): Promise<Hex> {
158
+ if (!this.validator) {
159
+ throw new Error("Validator not connected");
160
+ }
161
+
162
+ const dummyECDSASig =
163
+ "0xfffffffffffffffffffffffffffffff0000000000000000000000000000000007aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa1c";
164
+ const validatorMode = await this.validator.resolveValidatorMode(
165
+ kernelAccountAddress,
166
+ calldata
167
+ );
168
+ if (validatorMode === ValidatorMode.enable) {
169
+ const enableData = await this.validator.getEnableData();
170
+ const enableDataLength = enableData.length / 2 - 1;
171
+ const enableSigLength = 65;
172
+ const staticDummySig = concatHex([
173
+ "0x000000000000000000000000",
174
+ this.validator.getAddress(),
175
+ "0x53dd285022D1512635823952d109dB39467a457E",
176
+ ]);
177
+ const pausedUntil = await (
178
+ this.validator as KillSwitchValidator
179
+ ).getPausedUntil();
180
+
181
+ return concatHex([
182
+ ValidatorMode.enable,
183
+ staticDummySig,
184
+ pad(toHex(enableDataLength), { size: 32 }),
185
+ enableData,
186
+ pad(toHex(enableSigLength), { size: 32 }),
187
+ dummyECDSASig,
188
+ pad(toHex(pausedUntil), { size: 6 }),
189
+ dummyECDSASig,
190
+ ]);
191
+ }
192
+ return concatHex([validatorMode, dummyECDSASig]);
193
+ }
194
+
195
+ async encodeExecute(target: Hex, value: bigint, data: Hex): Promise<Hex> {
196
+ if (!this.validator) {
197
+ throw new Error("Validator not connected");
198
+ }
199
+ if (target.toLowerCase() === this.accountAddress?.toLowerCase()) {
200
+ return data;
201
+ } else {
202
+ return this.encodeExecuteAction(target, value, data, 0);
203
+ }
204
+ }
205
+
206
+ async encodeBatchExecute(
207
+ _txs: BatchUserOperationCallData
208
+ ): Promise<`0x${string}`> {
209
+ const multiSendCalldata = encodeFunctionData({
210
+ abi: MultiSendAbi,
211
+ functionName: "multiSend",
212
+ args: [encodeMultiSend(_txs)],
213
+ });
214
+ return await this.encodeExecuteDelegate(
215
+ MULTISEND_ADDR,
216
+ BigInt(0),
217
+ multiSendCalldata
218
+ );
219
+ }
220
+
221
+ async encodeExecuteDelegate(
222
+ target: Hex,
223
+ value: bigint,
224
+ data: Hex
225
+ ): Promise<Hex> {
226
+ return this.encodeExecuteAction(target, value, data, 1);
227
+ }
228
+
229
+ async signWithEip6492(msg: string | Uint8Array): Promise<Hex> {
230
+ try {
231
+ const formattedMessage = typeof msg === "string" ? toBytes(msg) : msg;
232
+ let sig = await this.owner.signMessage(
233
+ toBytes(hashMessage({ raw: formattedMessage }))
234
+ );
235
+ // If the account is undeployed, use ERC-6492
236
+ if (!(await this.isAccountDeployed())) {
237
+ sig = (encodeAbiParameters(
238
+ parseAbiParameters("address, bytes, bytes"),
239
+ [this.factoryAddress, await this.getFactoryInitCode(), sig]
240
+ ) +
241
+ "6492649264926492649264926492649264926492649264926492649264926492") as Hex; // magic suffix
242
+ }
243
+
244
+ return sig;
245
+ } catch (err: any) {
246
+ console.error("Got Error - ", err.message);
247
+ throw new Error("Message Signing with EIP6492 failed");
248
+ }
249
+ }
250
+
251
+ async signMessage(msg: Uint8Array | string): Promise<Hex> {
252
+ if (!this.validator) {
253
+ throw new Error("Validator not connected");
254
+ }
255
+ const formattedMessage = typeof msg === "string" ? toBytes(msg) : msg;
256
+ return await this.validator.signMessage(formattedMessage);
257
+ }
258
+
259
+ signUserOp(userOp: UserOperationRequest): Promise<Hex> {
260
+ if (!this.validator) {
261
+ throw new Error("Validator not connected");
262
+ }
263
+ return this.validator.signUserOp(userOp);
264
+ }
265
+
266
+ protected encodeExecuteAction(
267
+ target: Hex,
268
+ value: bigint,
269
+ data: Hex,
270
+ code: number
271
+ ): Hex {
272
+ return encodeFunctionData({
273
+ abi: KernelAccountAbi,
274
+ functionName: "execute",
275
+ args: [target, value, data, code],
276
+ });
277
+ }
278
+ protected async getAccountInitCode(): Promise<Hex> {
279
+ return concatHex([this.factoryAddress, await this.getFactoryInitCode()]);
280
+ }
281
+
282
+ protected async getFactoryInitCode(): Promise<Hex> {
283
+ if (!this.validator) {
284
+ throw new Error("Validator not connected");
285
+ }
286
+ try {
287
+ return encodeFunctionData({
288
+ abi: KernelFactoryAbi,
289
+ functionName: "createAccount",
290
+ args: [
291
+ KERNEL_IMPL_ADDRESS,
292
+ encodeFunctionData({
293
+ abi: KernelAccountAbi,
294
+ functionName: "initialize",
295
+ args: [
296
+ this.validator.getAddress(),
297
+ await this.validator.getEnableData(),
298
+ ],
299
+ }),
300
+ this.index,
301
+ ],
302
+ });
303
+ } catch (err: any) {
304
+ console.error("err occurred:", err.message);
305
+ throw new Error("Factory Code generation failed");
306
+ }
307
+ }
308
+ }
@@ -0,0 +1,25 @@
1
+ import axios from "axios";
2
+ import { BACKEND_URL } from "../constants.js";
3
+
4
+ export const getChainId = async (
5
+ projectId: string,
6
+ backendUrl?: string
7
+ ): Promise<number | undefined> => {
8
+ try {
9
+ const {
10
+ data: { chainId },
11
+ } = await axios.post(
12
+ `${backendUrl ?? BACKEND_URL}/v1/projects/get-chain-id`,
13
+ {
14
+ projectId,
15
+ },
16
+ {
17
+ headers: { "Content-Type": "application/json" },
18
+ }
19
+ );
20
+ return chainId;
21
+ } catch (error) {
22
+ console.log(error);
23
+ return undefined;
24
+ }
25
+ };
@@ -0,0 +1,37 @@
1
+ import {
2
+ createPublicErc4337FromClient,
3
+ type HttpTransport,
4
+ type PublicErc4337Client,
5
+ } from "@alchemy/aa-core";
6
+ import { http, createPublicClient, type Chain } from "viem";
7
+ import { BUNDLER_URL } from "../constants.js";
8
+ import type { PaymasterAndBundlerProviders } from "../paymaster/types.js";
9
+
10
+ interface ZeroDevClientConfig {
11
+ chain: Chain;
12
+ projectId: string;
13
+ rpcUrl?: string;
14
+ bundlerProvider?: PaymasterAndBundlerProviders;
15
+ }
16
+
17
+ export const createZeroDevPublicErc4337Client = ({
18
+ chain,
19
+ rpcUrl,
20
+ projectId,
21
+ bundlerProvider,
22
+ }: ZeroDevClientConfig): PublicErc4337Client<HttpTransport> => {
23
+ let client = createPublicErc4337FromClient(
24
+ createPublicClient({
25
+ chain,
26
+ transport: http(rpcUrl, {
27
+ fetchOptions: {
28
+ headers: rpcUrl === BUNDLER_URL ? { projectId, bundlerProvider } : {},
29
+ },
30
+ name: "Connected bundler network",
31
+ key: "connected-bundler-network",
32
+ }),
33
+ })
34
+ );
35
+
36
+ return client;
37
+ };
@@ -0,0 +1,71 @@
1
+ import { parseUnits, type Hex } from "viem";
2
+ import type { IGasTokenAddresses } from "./paymaster/types.js";
3
+ import { polygon } from "viem/chains";
4
+
5
+ export const DEFAULT_SEND_TX_MAX_RETRIES = 3;
6
+ export const DEFAULT_SEND_TX_RETRY_INTERVAL_MS = 1_80_000; // 3 minutes
7
+ export const BUNDLER_URL = "https://v0-6-meta-bundler.onrender.com";
8
+ export const PAYMASTER_URL = "https://v0-6-paymaster.onrender.com";
9
+ export const ENTRYPOINT_ADDRESS: Hex =
10
+ "0x5FF137D4b0FDCD49DcA30c7CF57E578a026d2789";
11
+ export const MULTISEND_ADDR: Hex = "0x8ae01fcf7c655655ff2c6ef907b8b4718ab4e17c";
12
+ export const BACKEND_URL = "https://backend-vikp.onrender.com";
13
+ export const API_URL = "https://prod-api.zerodev.app";
14
+ export const ECDSA_VALIDATOR_ADDRESS =
15
+ "0xd9AB5096a832b9ce79914329DAEE236f8Eea0390";
16
+ export const KERNEL_FACTORY_ADDRESS =
17
+ "0x85DF6Dc686FBDcAc7da61651D116fc71B2246B50";
18
+ export const KERNEL_IMPL_ADDRESS = "0xD2063bE7C610eb55492C05385743edDbf5b6B951";
19
+ export const KILL_SWITCH_VALIDATOR_ADDRESS =
20
+ "0x2db0DbfDf90Dbe2859158Aa71db1FcDCb3E579c8";
21
+ export const KILL_SWITCH_ACTION = "0xf5aa34DD2cba311947e143183ED325A4A8C674Af";
22
+ export const DUMMY_ECDSA_SIG =
23
+ "0xfffffffffffffffffffffffffffffff0000000000000000000000000000000007aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa1c";
24
+ export const ERC165_SESSION_KEY_VALIDATOR_ADDRESS =
25
+ "0xe149290800De29D4b0BF9dB82c508255D81902E6";
26
+ export const TOKEN_ACTION = "0x2087C7FfD0d0DAE80a00EE74325aBF3449e0eaf1";
27
+
28
+ export const gasTokenChainAddresses: IGasTokenAddresses = {
29
+ USDC: {
30
+ 1: "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48",
31
+ // 5: "0x2f3A40A3db8a7e3D09B0adfEfbCe4f6F81927557",
32
+ 137: "0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174",
33
+ // 80001: "",
34
+ // 420: "0x7F5c764cBc14f9669B88837ca1490cCa17c31607",
35
+ 42161: "0xFF970A61A04b1cA14834A43f5dE4533eBDDB5CC8",
36
+ // 421613: "",
37
+ 43114: "0xB97EF9Ef8734C71904D8002F8b6Bc66Dd9c48a6E",
38
+ // 43113: "",
39
+ // 56: "",
40
+ // 97: ""
41
+ },
42
+ PEPE: {
43
+ 1: "0x6982508145454Ce325dDbE47a25d4ec3d2311933",
44
+ },
45
+ };
46
+
47
+ export const ERC20_APPROVAL_AMOUNT: { [key: string]: bigint } = {
48
+ // ETH
49
+ [gasTokenChainAddresses["USDC"][1]]: parseUnits("100", 6),
50
+
51
+ // Goerli
52
+ [gasTokenChainAddresses["USDC"][5]]: parseUnits("100", 6),
53
+
54
+ // Polygon
55
+ [gasTokenChainAddresses["USDC"][137]]: parseUnits("10", 6),
56
+
57
+ // Arbitrum
58
+ [gasTokenChainAddresses["USDC"][42161]]: parseUnits("10", 6),
59
+
60
+ // Avalanche
61
+ [gasTokenChainAddresses["USDC"][43114]]: parseUnits("10", 6),
62
+
63
+ // ETH
64
+ [gasTokenChainAddresses["PEPE"][1]]: parseUnits("50000000", 18),
65
+
66
+ "0x3870419Ba2BBf0127060bCB37f69A1b1C090992B": parseUnits("100", 18),
67
+ };
68
+
69
+ export const minPriorityFeePerBidDefaults = new Map<number, bigint>([
70
+ [polygon.id, 30_000_000_000n],
71
+ ]);
@@ -0,0 +1,13 @@
1
+ const ErrTransactionFailedGasChecks = Error("Transaction failed gas checks");
2
+ const InvalidOperation = Error("Invalid operation");
3
+ const IncorrectCallDataForTokenPaymaster = Error(
4
+ "Incorrect callData for token paymaster"
5
+ );
6
+ const AccountNotConnected = Error("Account not connected");
7
+
8
+ export {
9
+ ErrTransactionFailedGasChecks,
10
+ InvalidOperation,
11
+ IncorrectCallDataForTokenPaymaster,
12
+ AccountNotConnected,
13
+ };
@@ -0,0 +1,118 @@
1
+ import { getChainId } from "../api/index.js";
2
+ import {
3
+ SmartAccountProvider,
4
+ getChain,
5
+ type HttpTransport,
6
+ BaseSmartContractAccount,
7
+ defineReadOnly,
8
+ type AccountMiddlewareFn,
9
+ type FeeDataMiddleware,
10
+ type GasEstimatorMiddleware,
11
+ type PaymasterAndDataMiddleware,
12
+ type PublicErc4337Client,
13
+ } from "@alchemy/aa-core";
14
+ import { AccountSigner } from "@alchemy/aa-ethers";
15
+ import { JsonRpcProvider } from "@ethersproject/providers";
16
+ import type { SupportedValidators } from "../validator/types.js";
17
+ import type { ValidatorProviderParamsMap } from "../validator-provider/types.js";
18
+ import { ValidatorProviders } from "../validator-provider/index.js";
19
+ import { withZeroDevPaymasterAndData } from "../middleware/paymaster.js";
20
+
21
+ export class ZeroDevEthersProvider<
22
+ V extends SupportedValidators
23
+ > extends JsonRpcProvider {
24
+ readonly accountProvider: SmartAccountProvider<HttpTransport>;
25
+ constructor(validatorType: V, params: ValidatorProviderParamsMap[V]) {
26
+ super();
27
+ let accountProvider = new ValidatorProviders[validatorType](params);
28
+ if (params.usePaymaster === undefined || params.usePaymaster) {
29
+ accountProvider = withZeroDevPaymasterAndData(
30
+ accountProvider,
31
+ params.opts?.paymasterConfig ?? { policy: "VERIFYING_PAYMASTER" }
32
+ ) as typeof accountProvider;
33
+ }
34
+ this.accountProvider = accountProvider;
35
+ }
36
+
37
+ public static async init<V extends SupportedValidators>(
38
+ validatorType: V,
39
+ params: ValidatorProviderParamsMap[V]
40
+ ): Promise<ZeroDevEthersProvider<V>> {
41
+ const chainId = await getChainId(params.projectId);
42
+ if (!chainId) {
43
+ throw new Error("ChainId not found");
44
+ }
45
+ const chain = getChain(chainId);
46
+ const instance = new ZeroDevEthersProvider(validatorType, {
47
+ ...params,
48
+ opts: {
49
+ ...params.opts,
50
+ providerConfig: {
51
+ chain,
52
+ ...params.opts?.providerConfig,
53
+ },
54
+ },
55
+ });
56
+
57
+ return instance;
58
+ }
59
+
60
+ /**
61
+ * Rewrites the send method to use the account provider's EIP-1193
62
+ * compliant request method
63
+ *
64
+ * @param method - the RPC method to call
65
+ * @param params - the params required by the RPC method
66
+ * @returns the result of the RPC call
67
+ */
68
+ send(method: string, params: any[]): Promise<any> {
69
+ return this.accountProvider.request({ method, params });
70
+ }
71
+
72
+ /**
73
+ * Connects the Provider to an Account and returns a Signer
74
+ *
75
+ * @param fn - a function that takes the account provider's rpcClient and returns a BaseSmartContractAccount
76
+ * @returns an {@link AccountSigner} that can be used to sign and send user operations
77
+ */
78
+ connectToAccount(
79
+ fn: (rpcClient: PublicErc4337Client) => BaseSmartContractAccount
80
+ ): AccountSigner {
81
+ defineReadOnly(this, "accountProvider", this.accountProvider.connect(fn));
82
+ return this.getAccountSigner();
83
+ }
84
+
85
+ /**
86
+ * @returns an {@link AccountSigner} using this as the underlying provider
87
+ */
88
+ getAccountSigner(): AccountSigner {
89
+ return new AccountSigner(this);
90
+ }
91
+
92
+ withPaymasterMiddleware = (overrides: {
93
+ dummyPaymasterDataMiddleware?: PaymasterAndDataMiddleware;
94
+ paymasterDataMiddleware?: PaymasterAndDataMiddleware;
95
+ }): this => {
96
+ this.accountProvider.withPaymasterMiddleware(overrides);
97
+ return this;
98
+ };
99
+
100
+ withGasEstimator = (override: GasEstimatorMiddleware): this => {
101
+ this.accountProvider.withGasEstimator(override);
102
+ return this;
103
+ };
104
+
105
+ withFeeDataGetter = (override: FeeDataMiddleware): this => {
106
+ this.accountProvider.withFeeDataGetter(override);
107
+ return this;
108
+ };
109
+
110
+ withCustomMiddleware = (override: AccountMiddlewareFn): this => {
111
+ this.accountProvider.withCustomMiddleware(override);
112
+ return this;
113
+ };
114
+
115
+ getPublicErc4337Client(): PublicErc4337Client {
116
+ return this.accountProvider.rpcClient;
117
+ }
118
+ }