@zerodev/sdk 4.6.0 → 5.0.0-beta.0

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 (703) hide show
  1. package/_cjs/accounts/addressToEmptyAccount.js +25 -0
  2. package/_cjs/accounts/addressToEmptyAccount.js.map +1 -0
  3. package/_cjs/accounts/index.js +12 -0
  4. package/_cjs/accounts/index.js.map +1 -0
  5. package/{dist/cjs/kernel-zerodev/abis → _cjs/accounts/kernel/abi}/KernelAccountAbi.js +256 -158
  6. package/_cjs/accounts/kernel/abi/KernelAccountAbi.js.map +1 -0
  7. package/{dist/cjs/kernel-zerodev/abis → _cjs/accounts/kernel/abi}/KernelFactoryAbi.js +87 -87
  8. package/_cjs/accounts/kernel/abi/KernelFactoryAbi.js.map +1 -0
  9. package/{dist/cjs/kernel-zerodev/abis → _cjs/accounts/kernel/abi}/TokenActionsAbi.js +18 -18
  10. package/_cjs/accounts/kernel/abi/TokenActionsAbi.js.map +1 -0
  11. package/_cjs/accounts/kernel/createKernelAccount.js +299 -0
  12. package/_cjs/accounts/kernel/createKernelAccount.js.map +1 -0
  13. package/_cjs/accounts/utils/index.js +6 -0
  14. package/_cjs/accounts/utils/index.js.map +1 -0
  15. package/_cjs/accounts/utils/toKernelPluginManager.js +124 -0
  16. package/_cjs/accounts/utils/toKernelPluginManager.js.map +1 -0
  17. package/_cjs/actions/account-client/signUserOperation.js +16 -0
  18. package/_cjs/actions/account-client/signUserOperation.js.map +1 -0
  19. package/_cjs/actions/index.js +8 -0
  20. package/_cjs/actions/index.js.map +1 -0
  21. package/_cjs/actions/paymaster/sponsorUserOperation.js +42 -0
  22. package/_cjs/actions/paymaster/sponsorUserOperation.js.map +1 -0
  23. package/_cjs/clients/decorators/index.js +6 -0
  24. package/_cjs/clients/decorators/index.js.map +1 -0
  25. package/_cjs/clients/decorators/kernel.js +19 -0
  26. package/_cjs/clients/decorators/kernel.js.map +1 -0
  27. package/_cjs/clients/index.js +8 -0
  28. package/_cjs/clients/index.js.map +1 -0
  29. package/_cjs/clients/kernelAccountClient.js +20 -0
  30. package/_cjs/clients/kernelAccountClient.js.map +1 -0
  31. package/_cjs/clients/paymasterClient.js +17 -0
  32. package/_cjs/clients/paymasterClient.js.map +1 -0
  33. package/_cjs/constants.js +12 -0
  34. package/_cjs/constants.js.map +1 -0
  35. package/_cjs/index.js +27 -0
  36. package/_cjs/index.js.map +1 -0
  37. package/_cjs/package.json +1 -0
  38. package/_cjs/types/index.js +6 -0
  39. package/_cjs/types/index.js.map +1 -0
  40. package/_cjs/types/kernel.js +10 -0
  41. package/_cjs/types/kernel.js.map +1 -0
  42. package/_cjs/utils.js +30 -0
  43. package/_cjs/utils.js.map +1 -0
  44. package/_esm/accounts/addressToEmptyAccount.js +21 -0
  45. package/_esm/accounts/addressToEmptyAccount.js.map +1 -0
  46. package/_esm/accounts/index.js +4 -0
  47. package/_esm/accounts/index.js.map +1 -0
  48. package/_esm/accounts/kernel/abi/KernelAccountAbi.js +796 -0
  49. package/_esm/accounts/kernel/abi/KernelAccountAbi.js.map +1 -0
  50. package/{dist/esm/kernel-zerodev/abis → _esm/accounts/kernel/abi}/KernelFactoryAbi.js +87 -87
  51. package/_esm/accounts/kernel/abi/KernelFactoryAbi.js.map +1 -0
  52. package/{dist/esm/kernel-zerodev/abis → _esm/accounts/kernel/abi}/TokenActionsAbi.js +18 -18
  53. package/_esm/accounts/kernel/abi/TokenActionsAbi.js.map +1 -0
  54. package/_esm/accounts/kernel/createKernelAccount.js +344 -0
  55. package/_esm/accounts/kernel/createKernelAccount.js.map +1 -0
  56. package/_esm/accounts/utils/index.js +3 -0
  57. package/_esm/accounts/utils/index.js.map +1 -0
  58. package/_esm/accounts/utils/toKernelPluginManager.js +124 -0
  59. package/_esm/accounts/utils/toKernelPluginManager.js.map +1 -0
  60. package/_esm/actions/account-client/signUserOperation.js +12 -0
  61. package/_esm/actions/account-client/signUserOperation.js.map +1 -0
  62. package/_esm/actions/index.js +3 -0
  63. package/_esm/actions/index.js.map +1 -0
  64. package/_esm/actions/paymaster/sponsorUserOperation.js +41 -0
  65. package/_esm/actions/paymaster/sponsorUserOperation.js.map +1 -0
  66. package/_esm/clients/decorators/index.js +2 -0
  67. package/_esm/clients/decorators/index.js.map +1 -0
  68. package/_esm/clients/decorators/kernel.js +14 -0
  69. package/_esm/clients/decorators/kernel.js.map +1 -0
  70. package/_esm/clients/index.js +3 -0
  71. package/_esm/clients/index.js.map +1 -0
  72. package/_esm/clients/kernelAccountClient.js +17 -0
  73. package/_esm/clients/kernelAccountClient.js.map +1 -0
  74. package/_esm/clients/paymasterClient.js +30 -0
  75. package/_esm/clients/paymasterClient.js.map +1 -0
  76. package/_esm/constants.js +10 -0
  77. package/_esm/constants.js.map +1 -0
  78. package/_esm/index.js +13 -0
  79. package/_esm/index.js.map +1 -0
  80. package/_esm/package.json +1 -0
  81. package/_esm/types/index.js +2 -0
  82. package/_esm/types/index.js.map +1 -0
  83. package/_esm/types/kernel.js +8 -0
  84. package/_esm/types/kernel.js.map +1 -0
  85. package/_esm/utils.js +25 -0
  86. package/_esm/utils.js.map +1 -0
  87. package/_types/accounts/addressToEmptyAccount.d.ts +4 -0
  88. package/_types/accounts/addressToEmptyAccount.d.ts.map +1 -0
  89. package/_types/accounts/index.d.ts +4 -0
  90. package/_types/accounts/index.d.ts.map +1 -0
  91. package/{dist/cjs/kernel-zerodev/abis → _types/accounts/kernel/abi}/KernelAccountAbi.d.ts +82 -0
  92. package/{dist/types/kernel-zerodev/abis → _types/accounts/kernel/abi}/KernelAccountAbi.d.ts.map +1 -1
  93. package/{dist/types/kernel-zerodev/abis → _types/accounts/kernel/abi}/KernelFactoryAbi.d.ts.map +1 -1
  94. package/_types/accounts/kernel/abi/TokenActionsAbi.d.ts.map +1 -0
  95. package/_types/accounts/kernel/createKernelAccount.d.ts +89 -0
  96. package/_types/accounts/kernel/createKernelAccount.d.ts.map +1 -0
  97. package/_types/accounts/utils/index.d.ts +3 -0
  98. package/_types/accounts/utils/index.d.ts.map +1 -0
  99. package/_types/accounts/utils/toKernelPluginManager.d.ts +5 -0
  100. package/_types/accounts/utils/toKernelPluginManager.d.ts.map +1 -0
  101. package/_types/actions/account-client/signUserOperation.d.ts +10 -0
  102. package/_types/actions/account-client/signUserOperation.d.ts.map +1 -0
  103. package/_types/actions/index.d.ts +3 -0
  104. package/_types/actions/index.d.ts.map +1 -0
  105. package/_types/actions/paymaster/sponsorUserOperation.d.ts +21 -0
  106. package/_types/actions/paymaster/sponsorUserOperation.d.ts.map +1 -0
  107. package/_types/clients/decorators/index.d.ts +2 -0
  108. package/_types/clients/decorators/index.d.ts.map +1 -0
  109. package/_types/clients/decorators/kernel.d.ts +25 -0
  110. package/_types/clients/decorators/kernel.d.ts.map +1 -0
  111. package/_types/clients/index.d.ts +3 -0
  112. package/_types/clients/index.d.ts.map +1 -0
  113. package/_types/clients/kernelAccountClient.d.ts +280 -0
  114. package/_types/clients/kernelAccountClient.d.ts.map +1 -0
  115. package/_types/clients/paymasterClient.d.ts +36 -0
  116. package/_types/clients/paymasterClient.d.ts.map +1 -0
  117. package/_types/constants.d.ts +8 -0
  118. package/_types/constants.d.ts.map +1 -0
  119. package/_types/index.d.ts +12 -0
  120. package/_types/index.d.ts.map +1 -0
  121. package/_types/types/index.d.ts +3 -0
  122. package/_types/types/index.d.ts.map +1 -0
  123. package/_types/types/kernel.d.ts +81 -0
  124. package/_types/types/kernel.d.ts.map +1 -0
  125. package/_types/utils.d.ts +12 -0
  126. package/_types/utils.d.ts.map +1 -0
  127. package/accounts/addressToEmptyAccount.ts +24 -0
  128. package/accounts/index.ts +8 -0
  129. package/{dist/esm/kernel-zerodev/abis/KernelAccountAbi.js → accounts/kernel/abi/KernelAccountAbi.ts} +264 -159
  130. package/accounts/kernel/abi/KernelFactoryAbi.ts +380 -0
  131. package/accounts/kernel/abi/TokenActionsAbi.ts +81 -0
  132. package/accounts/kernel/createKernelAccount.ts +465 -0
  133. package/accounts/utils/index.ts +2 -0
  134. package/accounts/utils/toKernelPluginManager.ts +173 -0
  135. package/actions/account-client/signUserOperation.ts +59 -0
  136. package/actions/index.ts +11 -0
  137. package/actions/paymaster/sponsorUserOperation.ts +85 -0
  138. package/clients/decorators/index.ts +4 -0
  139. package/clients/decorators/kernel.ts +78 -0
  140. package/clients/index.ts +9 -0
  141. package/clients/kernelAccountClient.ts +78 -0
  142. package/clients/paymasterClient.ts +53 -0
  143. package/constants.ts +12 -0
  144. package/index.ts +36 -0
  145. package/package.json +76 -60
  146. package/types/index.ts +12 -0
  147. package/types/kernel.ts +116 -0
  148. package/utils.ts +41 -0
  149. package/README.md +0 -5
  150. package/dist/cjs/index.d.ts +0 -22
  151. package/dist/cjs/index.js +0 -61
  152. package/dist/cjs/index.js.map +0 -1
  153. package/dist/cjs/kernel-zerodev/abis/ERC165SessionKeyValidatorAbi.d.ts +0 -162
  154. package/dist/cjs/kernel-zerodev/abis/ERC165SessionKeyValidatorAbi.js +0 -215
  155. package/dist/cjs/kernel-zerodev/abis/ERC165SessionKeyValidatorAbi.js.map +0 -1
  156. package/dist/cjs/kernel-zerodev/abis/ERC20Abi.d.ts +0 -231
  157. package/dist/cjs/kernel-zerodev/abis/ERC20Abi.js +0 -157
  158. package/dist/cjs/kernel-zerodev/abis/ERC20Abi.js.map +0 -1
  159. package/dist/cjs/kernel-zerodev/abis/ESCDAValidatorAbi.d.ts +0 -158
  160. package/dist/cjs/kernel-zerodev/abis/ESCDAValidatorAbi.js +0 -210
  161. package/dist/cjs/kernel-zerodev/abis/ESCDAValidatorAbi.js.map +0 -1
  162. package/dist/cjs/kernel-zerodev/abis/KernelAccountAbi.js.map +0 -1
  163. package/dist/cjs/kernel-zerodev/abis/KernelFactoryAbi.d.ts +0 -293
  164. package/dist/cjs/kernel-zerodev/abis/KernelFactoryAbi.js.map +0 -1
  165. package/dist/cjs/kernel-zerodev/abis/KillSwitchValidatorAbi.d.ts +0 -150
  166. package/dist/cjs/kernel-zerodev/abis/KillSwitchValidatorAbi.js +0 -200
  167. package/dist/cjs/kernel-zerodev/abis/KillSwitchValidatorAbi.js.map +0 -1
  168. package/dist/cjs/kernel-zerodev/abis/MultiSendAbi.d.ts +0 -15
  169. package/dist/cjs/kernel-zerodev/abis/MultiSendAbi.js +0 -24
  170. package/dist/cjs/kernel-zerodev/abis/MultiSendAbi.js.map +0 -1
  171. package/dist/cjs/kernel-zerodev/abis/RecoveryActionAbi.d.ts +0 -15
  172. package/dist/cjs/kernel-zerodev/abis/RecoveryActionAbi.js +0 -24
  173. package/dist/cjs/kernel-zerodev/abis/RecoveryActionAbi.js.map +0 -1
  174. package/dist/cjs/kernel-zerodev/abis/SessionKeyValidatorAbi.d.ts +0 -212
  175. package/dist/cjs/kernel-zerodev/abis/SessionKeyValidatorAbi.js +0 -281
  176. package/dist/cjs/kernel-zerodev/abis/SessionKeyValidatorAbi.js.map +0 -1
  177. package/dist/cjs/kernel-zerodev/abis/Test_ERC20Abi.d.ts +0 -237
  178. package/dist/cjs/kernel-zerodev/abis/Test_ERC20Abi.js +0 -161
  179. package/dist/cjs/kernel-zerodev/abis/Test_ERC20Abi.js.map +0 -1
  180. package/dist/cjs/kernel-zerodev/abis/Test_ERC721Abi.d.ts +0 -287
  181. package/dist/cjs/kernel-zerodev/abis/Test_ERC721Abi.js +0 -377
  182. package/dist/cjs/kernel-zerodev/abis/Test_ERC721Abi.js.map +0 -1
  183. package/dist/cjs/kernel-zerodev/abis/TokenActionsAbi.d.ts +0 -63
  184. package/dist/cjs/kernel-zerodev/abis/TokenActionsAbi.js.map +0 -1
  185. package/dist/cjs/kernel-zerodev/abis/WeightedValidatorAbi.d.ts +0 -340
  186. package/dist/cjs/kernel-zerodev/abis/WeightedValidatorAbi.js +0 -446
  187. package/dist/cjs/kernel-zerodev/abis/WeightedValidatorAbi.js.map +0 -1
  188. package/dist/cjs/kernel-zerodev/abis/index.d.ts +0 -8
  189. package/dist/cjs/kernel-zerodev/abis/index.js +0 -18
  190. package/dist/cjs/kernel-zerodev/abis/index.js.map +0 -1
  191. package/dist/cjs/kernel-zerodev/account.d.ts +0 -51
  192. package/dist/cjs/kernel-zerodev/account.js +0 -321
  193. package/dist/cjs/kernel-zerodev/account.js.map +0 -1
  194. package/dist/cjs/kernel-zerodev/api/index.d.ts +0 -5
  195. package/dist/cjs/kernel-zerodev/api/index.js +0 -68
  196. package/dist/cjs/kernel-zerodev/api/index.js.map +0 -1
  197. package/dist/cjs/kernel-zerodev/client/create-client.d.ts +0 -12
  198. package/dist/cjs/kernel-zerodev/client/create-client.js +0 -54
  199. package/dist/cjs/kernel-zerodev/client/create-client.js.map +0 -1
  200. package/dist/cjs/kernel-zerodev/constants.d.ts +0 -31
  201. package/dist/cjs/kernel-zerodev/constants.js +0 -78
  202. package/dist/cjs/kernel-zerodev/constants.js.map +0 -1
  203. package/dist/cjs/kernel-zerodev/errors.d.ts +0 -5
  204. package/dist/cjs/kernel-zerodev/errors.js +0 -12
  205. package/dist/cjs/kernel-zerodev/errors.js.map +0 -1
  206. package/dist/cjs/kernel-zerodev/ethers-provider/account-signer.d.ts +0 -31
  207. package/dist/cjs/kernel-zerodev/ethers-provider/account-signer.js +0 -147
  208. package/dist/cjs/kernel-zerodev/ethers-provider/account-signer.js.map +0 -1
  209. package/dist/cjs/kernel-zerodev/ethers-provider/ethers-provider.d.ts +0 -22
  210. package/dist/cjs/kernel-zerodev/ethers-provider/ethers-provider.js +0 -116
  211. package/dist/cjs/kernel-zerodev/ethers-provider/ethers-provider.js.map +0 -1
  212. package/dist/cjs/kernel-zerodev/middleware/gas-estimator.d.ts +0 -19
  213. package/dist/cjs/kernel-zerodev/middleware/gas-estimator.js +0 -153
  214. package/dist/cjs/kernel-zerodev/middleware/gas-estimator.js.map +0 -1
  215. package/dist/cjs/kernel-zerodev/middleware/paymaster.d.ts +0 -5
  216. package/dist/cjs/kernel-zerodev/middleware/paymaster.js +0 -63
  217. package/dist/cjs/kernel-zerodev/middleware/paymaster.js.map +0 -1
  218. package/dist/cjs/kernel-zerodev/owner/getCustodialOwner.d.ts +0 -11
  219. package/dist/cjs/kernel-zerodev/owner/getCustodialOwner.js +0 -80
  220. package/dist/cjs/kernel-zerodev/owner/getCustodialOwner.js.map +0 -1
  221. package/dist/cjs/kernel-zerodev/owner/getRPCProviderOwner.d.ts +0 -2
  222. package/dist/cjs/kernel-zerodev/owner/getRPCProviderOwner.js +0 -18
  223. package/dist/cjs/kernel-zerodev/owner/getRPCProviderOwner.js.map +0 -1
  224. package/dist/cjs/kernel-zerodev/owner/index.d.ts +0 -2
  225. package/dist/cjs/kernel-zerodev/owner/index.js +0 -8
  226. package/dist/cjs/kernel-zerodev/owner/index.js.map +0 -1
  227. package/dist/cjs/kernel-zerodev/owner/passkey/createPasskeyOwner.d.ts +0 -8
  228. package/dist/cjs/kernel-zerodev/owner/passkey/createPasskeyOwner.js +0 -74
  229. package/dist/cjs/kernel-zerodev/owner/passkey/createPasskeyOwner.js.map +0 -1
  230. package/dist/cjs/kernel-zerodev/owner/passkey/exceptions.d.ts +0 -3
  231. package/dist/cjs/kernel-zerodev/owner/passkey/exceptions.js +0 -16
  232. package/dist/cjs/kernel-zerodev/owner/passkey/exceptions.js.map +0 -1
  233. package/dist/cjs/kernel-zerodev/owner/passkey/getAutocompletePasskeyOwner.d.ts +0 -6
  234. package/dist/cjs/kernel-zerodev/owner/passkey/getAutocompletePasskeyOwner.js +0 -48
  235. package/dist/cjs/kernel-zerodev/owner/passkey/getAutocompletePasskeyOwner.js.map +0 -1
  236. package/dist/cjs/kernel-zerodev/owner/passkey/getPasskeyOwner.d.ts +0 -7
  237. package/dist/cjs/kernel-zerodev/owner/passkey/getPasskeyOwner.js +0 -44
  238. package/dist/cjs/kernel-zerodev/owner/passkey/getPasskeyOwner.js.map +0 -1
  239. package/dist/cjs/kernel-zerodev/owner/passkey/index.d.ts +0 -4
  240. package/dist/cjs/kernel-zerodev/owner/passkey/index.js +0 -12
  241. package/dist/cjs/kernel-zerodev/owner/passkey/index.js.map +0 -1
  242. package/dist/cjs/kernel-zerodev/owner/passkey/types.d.ts +0 -12
  243. package/dist/cjs/kernel-zerodev/owner/passkey/types.js +0 -3
  244. package/dist/cjs/kernel-zerodev/owner/passkey/types.js.map +0 -1
  245. package/dist/cjs/kernel-zerodev/owner/passkey/utils.d.ts +0 -14
  246. package/dist/cjs/kernel-zerodev/owner/passkey/utils.js +0 -114
  247. package/dist/cjs/kernel-zerodev/owner/passkey/utils.js.map +0 -1
  248. package/dist/cjs/kernel-zerodev/paymaster/base.d.ts +0 -18
  249. package/dist/cjs/kernel-zerodev/paymaster/base.js +0 -63
  250. package/dist/cjs/kernel-zerodev/paymaster/base.js.map +0 -1
  251. package/dist/cjs/kernel-zerodev/paymaster/index.d.ts +0 -3
  252. package/dist/cjs/kernel-zerodev/paymaster/index.js +0 -10
  253. package/dist/cjs/kernel-zerodev/paymaster/index.js.map +0 -1
  254. package/dist/cjs/kernel-zerodev/paymaster/token-paymaster.d.ts +0 -15
  255. package/dist/cjs/kernel-zerodev/paymaster/token-paymaster.js +0 -188
  256. package/dist/cjs/kernel-zerodev/paymaster/token-paymaster.js.map +0 -1
  257. package/dist/cjs/kernel-zerodev/paymaster/types.d.ts +0 -29
  258. package/dist/cjs/kernel-zerodev/paymaster/types.js +0 -3
  259. package/dist/cjs/kernel-zerodev/paymaster/types.js.map +0 -1
  260. package/dist/cjs/kernel-zerodev/paymaster/verifying-paymaster.d.ts +0 -8
  261. package/dist/cjs/kernel-zerodev/paymaster/verifying-paymaster.js +0 -22
  262. package/dist/cjs/kernel-zerodev/paymaster/verifying-paymaster.js.map +0 -1
  263. package/dist/cjs/kernel-zerodev/provider.d.ts +0 -57
  264. package/dist/cjs/kernel-zerodev/provider.js +0 -387
  265. package/dist/cjs/kernel-zerodev/provider.js.map +0 -1
  266. package/dist/cjs/kernel-zerodev/signer/empty-account.d.ts +0 -10
  267. package/dist/cjs/kernel-zerodev/signer/empty-account.js +0 -43
  268. package/dist/cjs/kernel-zerodev/signer/empty-account.js.map +0 -1
  269. package/dist/cjs/kernel-zerodev/types.d.ts +0 -7
  270. package/dist/cjs/kernel-zerodev/types.js +0 -3
  271. package/dist/cjs/kernel-zerodev/types.js.map +0 -1
  272. package/dist/cjs/kernel-zerodev/utils/ERC4337-utils.d.ts +0 -5
  273. package/dist/cjs/kernel-zerodev/utils/ERC4337-utils.js +0 -106
  274. package/dist/cjs/kernel-zerodev/utils/ERC4337-utils.js.map +0 -1
  275. package/dist/cjs/kernel-zerodev/utils/calc-pre-verification-gas.d.ts +0 -15
  276. package/dist/cjs/kernel-zerodev/utils/calc-pre-verification-gas.js +0 -33
  277. package/dist/cjs/kernel-zerodev/utils/calc-pre-verification-gas.js.map +0 -1
  278. package/dist/cjs/kernel-zerodev/utils/custom-chains.d.ts +0 -58
  279. package/dist/cjs/kernel-zerodev/utils/custom-chains.js +0 -57
  280. package/dist/cjs/kernel-zerodev/utils/custom-chains.js.map +0 -1
  281. package/dist/cjs/kernel-zerodev/utils.d.ts +0 -20
  282. package/dist/cjs/kernel-zerodev/utils.js +0 -119
  283. package/dist/cjs/kernel-zerodev/utils.js.map +0 -1
  284. package/dist/cjs/kernel-zerodev/validator/base.d.ts +0 -57
  285. package/dist/cjs/kernel-zerodev/validator/base.js +0 -285
  286. package/dist/cjs/kernel-zerodev/validator/base.js.map +0 -1
  287. package/dist/cjs/kernel-zerodev/validator/ecdsa-validator.d.ts +0 -20
  288. package/dist/cjs/kernel-zerodev/validator/ecdsa-validator.js +0 -97
  289. package/dist/cjs/kernel-zerodev/validator/ecdsa-validator.js.map +0 -1
  290. package/dist/cjs/kernel-zerodev/validator/erc165-session-key-validator.d.ts +0 -29
  291. package/dist/cjs/kernel-zerodev/validator/erc165-session-key-validator.js +0 -118
  292. package/dist/cjs/kernel-zerodev/validator/erc165-session-key-validator.js.map +0 -1
  293. package/dist/cjs/kernel-zerodev/validator/index.d.ts +0 -8
  294. package/dist/cjs/kernel-zerodev/validator/index.js +0 -21
  295. package/dist/cjs/kernel-zerodev/validator/index.js.map +0 -1
  296. package/dist/cjs/kernel-zerodev/validator/kill-switch-validator.d.ts +0 -22
  297. package/dist/cjs/kernel-zerodev/validator/kill-switch-validator.js +0 -122
  298. package/dist/cjs/kernel-zerodev/validator/kill-switch-validator.js.map +0 -1
  299. package/dist/cjs/kernel-zerodev/validator/recovery-validator.d.ts +0 -56
  300. package/dist/cjs/kernel-zerodev/validator/recovery-validator.js +0 -349
  301. package/dist/cjs/kernel-zerodev/validator/recovery-validator.js.map +0 -1
  302. package/dist/cjs/kernel-zerodev/validator/session-key-validator.d.ts +0 -84
  303. package/dist/cjs/kernel-zerodev/validator/session-key-validator.js +0 -501
  304. package/dist/cjs/kernel-zerodev/validator/session-key-validator.js.map +0 -1
  305. package/dist/cjs/kernel-zerodev/validator/types.d.ts +0 -56
  306. package/dist/cjs/kernel-zerodev/validator/types.js +0 -3
  307. package/dist/cjs/kernel-zerodev/validator/types.js.map +0 -1
  308. package/dist/cjs/kernel-zerodev/validator-provider/base.d.ts +0 -29
  309. package/dist/cjs/kernel-zerodev/validator-provider/base.js +0 -129
  310. package/dist/cjs/kernel-zerodev/validator-provider/base.js.map +0 -1
  311. package/dist/cjs/kernel-zerodev/validator-provider/ecdsa-provider.d.ts +0 -8
  312. package/dist/cjs/kernel-zerodev/validator-provider/ecdsa-provider.js +0 -60
  313. package/dist/cjs/kernel-zerodev/validator-provider/ecdsa-provider.js.map +0 -1
  314. package/dist/cjs/kernel-zerodev/validator-provider/erc165-session-key-provider.d.ts +0 -8
  315. package/dist/cjs/kernel-zerodev/validator-provider/erc165-session-key-provider.js +0 -64
  316. package/dist/cjs/kernel-zerodev/validator-provider/erc165-session-key-provider.js.map +0 -1
  317. package/dist/cjs/kernel-zerodev/validator-provider/index.d.ts +0 -8
  318. package/dist/cjs/kernel-zerodev/validator-provider/index.js +0 -21
  319. package/dist/cjs/kernel-zerodev/validator-provider/index.js.map +0 -1
  320. package/dist/cjs/kernel-zerodev/validator-provider/kill-switch-provider.d.ts +0 -8
  321. package/dist/cjs/kernel-zerodev/validator-provider/kill-switch-provider.js +0 -64
  322. package/dist/cjs/kernel-zerodev/validator-provider/kill-switch-provider.js.map +0 -1
  323. package/dist/cjs/kernel-zerodev/validator-provider/recovery-provider.d.ts +0 -27
  324. package/dist/cjs/kernel-zerodev/validator-provider/recovery-provider.js +0 -278
  325. package/dist/cjs/kernel-zerodev/validator-provider/recovery-provider.js.map +0 -1
  326. package/dist/cjs/kernel-zerodev/validator-provider/session-key-provider.d.ts +0 -18
  327. package/dist/cjs/kernel-zerodev/validator-provider/session-key-provider.js +0 -114
  328. package/dist/cjs/kernel-zerodev/validator-provider/session-key-provider.js.map +0 -1
  329. package/dist/cjs/kernel-zerodev/validator-provider/types.d.ts +0 -29
  330. package/dist/cjs/kernel-zerodev/validator-provider/types.js +0 -3
  331. package/dist/cjs/kernel-zerodev/validator-provider/types.js.map +0 -1
  332. package/dist/cjs/package.json +0 -1
  333. package/dist/esm/index.d.ts +0 -22
  334. package/dist/esm/index.js +0 -17
  335. package/dist/esm/index.js.map +0 -1
  336. package/dist/esm/kernel-zerodev/abis/ERC165SessionKeyValidatorAbi.d.ts +0 -162
  337. package/dist/esm/kernel-zerodev/abis/ERC165SessionKeyValidatorAbi.js +0 -212
  338. package/dist/esm/kernel-zerodev/abis/ERC165SessionKeyValidatorAbi.js.map +0 -1
  339. package/dist/esm/kernel-zerodev/abis/ERC20Abi.d.ts +0 -231
  340. package/dist/esm/kernel-zerodev/abis/ERC20Abi.js +0 -154
  341. package/dist/esm/kernel-zerodev/abis/ERC20Abi.js.map +0 -1
  342. package/dist/esm/kernel-zerodev/abis/ESCDAValidatorAbi.d.ts +0 -158
  343. package/dist/esm/kernel-zerodev/abis/ESCDAValidatorAbi.js +0 -207
  344. package/dist/esm/kernel-zerodev/abis/ESCDAValidatorAbi.js.map +0 -1
  345. package/dist/esm/kernel-zerodev/abis/KernelAccountAbi.d.ts +0 -534
  346. package/dist/esm/kernel-zerodev/abis/KernelAccountAbi.js.map +0 -1
  347. package/dist/esm/kernel-zerodev/abis/KernelFactoryAbi.d.ts +0 -293
  348. package/dist/esm/kernel-zerodev/abis/KernelFactoryAbi.js.map +0 -1
  349. package/dist/esm/kernel-zerodev/abis/KillSwitchValidatorAbi.d.ts +0 -150
  350. package/dist/esm/kernel-zerodev/abis/KillSwitchValidatorAbi.js +0 -197
  351. package/dist/esm/kernel-zerodev/abis/KillSwitchValidatorAbi.js.map +0 -1
  352. package/dist/esm/kernel-zerodev/abis/MultiSendAbi.d.ts +0 -15
  353. package/dist/esm/kernel-zerodev/abis/MultiSendAbi.js +0 -21
  354. package/dist/esm/kernel-zerodev/abis/MultiSendAbi.js.map +0 -1
  355. package/dist/esm/kernel-zerodev/abis/RecoveryActionAbi.d.ts +0 -15
  356. package/dist/esm/kernel-zerodev/abis/RecoveryActionAbi.js +0 -21
  357. package/dist/esm/kernel-zerodev/abis/RecoveryActionAbi.js.map +0 -1
  358. package/dist/esm/kernel-zerodev/abis/SessionKeyValidatorAbi.d.ts +0 -212
  359. package/dist/esm/kernel-zerodev/abis/SessionKeyValidatorAbi.js +0 -278
  360. package/dist/esm/kernel-zerodev/abis/SessionKeyValidatorAbi.js.map +0 -1
  361. package/dist/esm/kernel-zerodev/abis/Test_ERC20Abi.d.ts +0 -237
  362. package/dist/esm/kernel-zerodev/abis/Test_ERC20Abi.js +0 -158
  363. package/dist/esm/kernel-zerodev/abis/Test_ERC20Abi.js.map +0 -1
  364. package/dist/esm/kernel-zerodev/abis/Test_ERC721Abi.d.ts +0 -287
  365. package/dist/esm/kernel-zerodev/abis/Test_ERC721Abi.js +0 -374
  366. package/dist/esm/kernel-zerodev/abis/Test_ERC721Abi.js.map +0 -1
  367. package/dist/esm/kernel-zerodev/abis/TokenActionsAbi.d.ts +0 -63
  368. package/dist/esm/kernel-zerodev/abis/TokenActionsAbi.js.map +0 -1
  369. package/dist/esm/kernel-zerodev/abis/WeightedValidatorAbi.d.ts +0 -340
  370. package/dist/esm/kernel-zerodev/abis/WeightedValidatorAbi.js +0 -443
  371. package/dist/esm/kernel-zerodev/abis/WeightedValidatorAbi.js.map +0 -1
  372. package/dist/esm/kernel-zerodev/abis/index.d.ts +0 -8
  373. package/dist/esm/kernel-zerodev/abis/index.js +0 -9
  374. package/dist/esm/kernel-zerodev/abis/index.js.map +0 -1
  375. package/dist/esm/kernel-zerodev/account.d.ts +0 -51
  376. package/dist/esm/kernel-zerodev/account.js +0 -317
  377. package/dist/esm/kernel-zerodev/account.js.map +0 -1
  378. package/dist/esm/kernel-zerodev/api/index.d.ts +0 -5
  379. package/dist/esm/kernel-zerodev/api/index.js +0 -58
  380. package/dist/esm/kernel-zerodev/api/index.js.map +0 -1
  381. package/dist/esm/kernel-zerodev/client/create-client.d.ts +0 -12
  382. package/dist/esm/kernel-zerodev/client/create-client.js +0 -50
  383. package/dist/esm/kernel-zerodev/client/create-client.js.map +0 -1
  384. package/dist/esm/kernel-zerodev/constants.d.ts +0 -31
  385. package/dist/esm/kernel-zerodev/constants.js +0 -75
  386. package/dist/esm/kernel-zerodev/constants.js.map +0 -1
  387. package/dist/esm/kernel-zerodev/errors.d.ts +0 -5
  388. package/dist/esm/kernel-zerodev/errors.js +0 -6
  389. package/dist/esm/kernel-zerodev/errors.js.map +0 -1
  390. package/dist/esm/kernel-zerodev/ethers-provider/account-signer.d.ts +0 -31
  391. package/dist/esm/kernel-zerodev/ethers-provider/account-signer.js +0 -145
  392. package/dist/esm/kernel-zerodev/ethers-provider/account-signer.js.map +0 -1
  393. package/dist/esm/kernel-zerodev/ethers-provider/ethers-provider.d.ts +0 -22
  394. package/dist/esm/kernel-zerodev/ethers-provider/ethers-provider.js +0 -112
  395. package/dist/esm/kernel-zerodev/ethers-provider/ethers-provider.js.map +0 -1
  396. package/dist/esm/kernel-zerodev/middleware/gas-estimator.d.ts +0 -19
  397. package/dist/esm/kernel-zerodev/middleware/gas-estimator.js +0 -146
  398. package/dist/esm/kernel-zerodev/middleware/gas-estimator.js.map +0 -1
  399. package/dist/esm/kernel-zerodev/middleware/paymaster.d.ts +0 -5
  400. package/dist/esm/kernel-zerodev/middleware/paymaster.js +0 -59
  401. package/dist/esm/kernel-zerodev/middleware/paymaster.js.map +0 -1
  402. package/dist/esm/kernel-zerodev/owner/getCustodialOwner.d.ts +0 -11
  403. package/dist/esm/kernel-zerodev/owner/getCustodialOwner.js +0 -73
  404. package/dist/esm/kernel-zerodev/owner/getCustodialOwner.js.map +0 -1
  405. package/dist/esm/kernel-zerodev/owner/getRPCProviderOwner.d.ts +0 -2
  406. package/dist/esm/kernel-zerodev/owner/getRPCProviderOwner.js +0 -15
  407. package/dist/esm/kernel-zerodev/owner/getRPCProviderOwner.js.map +0 -1
  408. package/dist/esm/kernel-zerodev/owner/index.d.ts +0 -2
  409. package/dist/esm/kernel-zerodev/owner/index.js +0 -3
  410. package/dist/esm/kernel-zerodev/owner/index.js.map +0 -1
  411. package/dist/esm/kernel-zerodev/owner/passkey/createPasskeyOwner.d.ts +0 -8
  412. package/dist/esm/kernel-zerodev/owner/passkey/createPasskeyOwner.js +0 -67
  413. package/dist/esm/kernel-zerodev/owner/passkey/createPasskeyOwner.js.map +0 -1
  414. package/dist/esm/kernel-zerodev/owner/passkey/exceptions.d.ts +0 -3
  415. package/dist/esm/kernel-zerodev/owner/passkey/exceptions.js +0 -12
  416. package/dist/esm/kernel-zerodev/owner/passkey/exceptions.js.map +0 -1
  417. package/dist/esm/kernel-zerodev/owner/passkey/getAutocompletePasskeyOwner.d.ts +0 -6
  418. package/dist/esm/kernel-zerodev/owner/passkey/getAutocompletePasskeyOwner.js +0 -41
  419. package/dist/esm/kernel-zerodev/owner/passkey/getAutocompletePasskeyOwner.js.map +0 -1
  420. package/dist/esm/kernel-zerodev/owner/passkey/getPasskeyOwner.d.ts +0 -7
  421. package/dist/esm/kernel-zerodev/owner/passkey/getPasskeyOwner.js +0 -37
  422. package/dist/esm/kernel-zerodev/owner/passkey/getPasskeyOwner.js.map +0 -1
  423. package/dist/esm/kernel-zerodev/owner/passkey/index.d.ts +0 -4
  424. package/dist/esm/kernel-zerodev/owner/passkey/index.js +0 -5
  425. package/dist/esm/kernel-zerodev/owner/passkey/index.js.map +0 -1
  426. package/dist/esm/kernel-zerodev/owner/passkey/types.d.ts +0 -12
  427. package/dist/esm/kernel-zerodev/owner/passkey/types.js +0 -2
  428. package/dist/esm/kernel-zerodev/owner/passkey/types.js.map +0 -1
  429. package/dist/esm/kernel-zerodev/owner/passkey/utils.d.ts +0 -14
  430. package/dist/esm/kernel-zerodev/owner/passkey/utils.js +0 -100
  431. package/dist/esm/kernel-zerodev/owner/passkey/utils.js.map +0 -1
  432. package/dist/esm/kernel-zerodev/paymaster/base.d.ts +0 -18
  433. package/dist/esm/kernel-zerodev/paymaster/base.js +0 -56
  434. package/dist/esm/kernel-zerodev/paymaster/base.js.map +0 -1
  435. package/dist/esm/kernel-zerodev/paymaster/index.d.ts +0 -3
  436. package/dist/esm/kernel-zerodev/paymaster/index.js +0 -7
  437. package/dist/esm/kernel-zerodev/paymaster/index.js.map +0 -1
  438. package/dist/esm/kernel-zerodev/paymaster/token-paymaster.d.ts +0 -15
  439. package/dist/esm/kernel-zerodev/paymaster/token-paymaster.js +0 -182
  440. package/dist/esm/kernel-zerodev/paymaster/token-paymaster.js.map +0 -1
  441. package/dist/esm/kernel-zerodev/paymaster/types.d.ts +0 -29
  442. package/dist/esm/kernel-zerodev/paymaster/types.js +0 -2
  443. package/dist/esm/kernel-zerodev/paymaster/types.js.map +0 -1
  444. package/dist/esm/kernel-zerodev/paymaster/verifying-paymaster.d.ts +0 -8
  445. package/dist/esm/kernel-zerodev/paymaster/verifying-paymaster.js +0 -18
  446. package/dist/esm/kernel-zerodev/paymaster/verifying-paymaster.js.map +0 -1
  447. package/dist/esm/kernel-zerodev/provider.d.ts +0 -57
  448. package/dist/esm/kernel-zerodev/provider.js +0 -383
  449. package/dist/esm/kernel-zerodev/provider.js.map +0 -1
  450. package/dist/esm/kernel-zerodev/signer/empty-account.d.ts +0 -10
  451. package/dist/esm/kernel-zerodev/signer/empty-account.js +0 -40
  452. package/dist/esm/kernel-zerodev/signer/empty-account.js.map +0 -1
  453. package/dist/esm/kernel-zerodev/types.d.ts +0 -7
  454. package/dist/esm/kernel-zerodev/types.js +0 -2
  455. package/dist/esm/kernel-zerodev/types.js.map +0 -1
  456. package/dist/esm/kernel-zerodev/utils/ERC4337-utils.d.ts +0 -5
  457. package/dist/esm/kernel-zerodev/utils/ERC4337-utils.js +0 -100
  458. package/dist/esm/kernel-zerodev/utils/ERC4337-utils.js.map +0 -1
  459. package/dist/esm/kernel-zerodev/utils/calc-pre-verification-gas.d.ts +0 -15
  460. package/dist/esm/kernel-zerodev/utils/calc-pre-verification-gas.js +0 -29
  461. package/dist/esm/kernel-zerodev/utils/calc-pre-verification-gas.js.map +0 -1
  462. package/dist/esm/kernel-zerodev/utils/custom-chains.d.ts +0 -58
  463. package/dist/esm/kernel-zerodev/utils/custom-chains.js +0 -54
  464. package/dist/esm/kernel-zerodev/utils/custom-chains.js.map +0 -1
  465. package/dist/esm/kernel-zerodev/utils.d.ts +0 -20
  466. package/dist/esm/kernel-zerodev/utils.js +0 -85
  467. package/dist/esm/kernel-zerodev/utils.js.map +0 -1
  468. package/dist/esm/kernel-zerodev/validator/base.d.ts +0 -57
  469. package/dist/esm/kernel-zerodev/validator/base.js +0 -282
  470. package/dist/esm/kernel-zerodev/validator/base.js.map +0 -1
  471. package/dist/esm/kernel-zerodev/validator/ecdsa-validator.d.ts +0 -20
  472. package/dist/esm/kernel-zerodev/validator/ecdsa-validator.js +0 -93
  473. package/dist/esm/kernel-zerodev/validator/ecdsa-validator.js.map +0 -1
  474. package/dist/esm/kernel-zerodev/validator/erc165-session-key-validator.d.ts +0 -29
  475. package/dist/esm/kernel-zerodev/validator/erc165-session-key-validator.js +0 -114
  476. package/dist/esm/kernel-zerodev/validator/erc165-session-key-validator.js.map +0 -1
  477. package/dist/esm/kernel-zerodev/validator/index.d.ts +0 -8
  478. package/dist/esm/kernel-zerodev/validator/index.js +0 -14
  479. package/dist/esm/kernel-zerodev/validator/index.js.map +0 -1
  480. package/dist/esm/kernel-zerodev/validator/kill-switch-validator.d.ts +0 -22
  481. package/dist/esm/kernel-zerodev/validator/kill-switch-validator.js +0 -118
  482. package/dist/esm/kernel-zerodev/validator/kill-switch-validator.js.map +0 -1
  483. package/dist/esm/kernel-zerodev/validator/recovery-validator.d.ts +0 -56
  484. package/dist/esm/kernel-zerodev/validator/recovery-validator.js +0 -344
  485. package/dist/esm/kernel-zerodev/validator/recovery-validator.js.map +0 -1
  486. package/dist/esm/kernel-zerodev/validator/session-key-validator.d.ts +0 -84
  487. package/dist/esm/kernel-zerodev/validator/session-key-validator.js +0 -496
  488. package/dist/esm/kernel-zerodev/validator/session-key-validator.js.map +0 -1
  489. package/dist/esm/kernel-zerodev/validator/types.d.ts +0 -56
  490. package/dist/esm/kernel-zerodev/validator/types.js +0 -3
  491. package/dist/esm/kernel-zerodev/validator/types.js.map +0 -1
  492. package/dist/esm/kernel-zerodev/validator-provider/base.d.ts +0 -29
  493. package/dist/esm/kernel-zerodev/validator-provider/base.js +0 -126
  494. package/dist/esm/kernel-zerodev/validator-provider/base.js.map +0 -1
  495. package/dist/esm/kernel-zerodev/validator-provider/ecdsa-provider.d.ts +0 -8
  496. package/dist/esm/kernel-zerodev/validator-provider/ecdsa-provider.js +0 -56
  497. package/dist/esm/kernel-zerodev/validator-provider/ecdsa-provider.js.map +0 -1
  498. package/dist/esm/kernel-zerodev/validator-provider/erc165-session-key-provider.d.ts +0 -8
  499. package/dist/esm/kernel-zerodev/validator-provider/erc165-session-key-provider.js +0 -60
  500. package/dist/esm/kernel-zerodev/validator-provider/erc165-session-key-provider.js.map +0 -1
  501. package/dist/esm/kernel-zerodev/validator-provider/index.d.ts +0 -8
  502. package/dist/esm/kernel-zerodev/validator-provider/index.js +0 -14
  503. package/dist/esm/kernel-zerodev/validator-provider/index.js.map +0 -1
  504. package/dist/esm/kernel-zerodev/validator-provider/kill-switch-provider.d.ts +0 -8
  505. package/dist/esm/kernel-zerodev/validator-provider/kill-switch-provider.js +0 -60
  506. package/dist/esm/kernel-zerodev/validator-provider/kill-switch-provider.js.map +0 -1
  507. package/dist/esm/kernel-zerodev/validator-provider/recovery-provider.d.ts +0 -27
  508. package/dist/esm/kernel-zerodev/validator-provider/recovery-provider.js +0 -275
  509. package/dist/esm/kernel-zerodev/validator-provider/recovery-provider.js.map +0 -1
  510. package/dist/esm/kernel-zerodev/validator-provider/session-key-provider.d.ts +0 -18
  511. package/dist/esm/kernel-zerodev/validator-provider/session-key-provider.js +0 -110
  512. package/dist/esm/kernel-zerodev/validator-provider/session-key-provider.js.map +0 -1
  513. package/dist/esm/kernel-zerodev/validator-provider/types.d.ts +0 -29
  514. package/dist/esm/kernel-zerodev/validator-provider/types.js +0 -2
  515. package/dist/esm/kernel-zerodev/validator-provider/types.js.map +0 -1
  516. package/dist/esm/package.json +0 -1
  517. package/dist/types/index.d.ts +0 -23
  518. package/dist/types/index.d.ts.map +0 -1
  519. package/dist/types/kernel-zerodev/abis/ERC165SessionKeyValidatorAbi.d.ts +0 -163
  520. package/dist/types/kernel-zerodev/abis/ERC165SessionKeyValidatorAbi.d.ts.map +0 -1
  521. package/dist/types/kernel-zerodev/abis/ERC20Abi.d.ts +0 -232
  522. package/dist/types/kernel-zerodev/abis/ERC20Abi.d.ts.map +0 -1
  523. package/dist/types/kernel-zerodev/abis/ESCDAValidatorAbi.d.ts +0 -159
  524. package/dist/types/kernel-zerodev/abis/ESCDAValidatorAbi.d.ts.map +0 -1
  525. package/dist/types/kernel-zerodev/abis/KernelAccountAbi.d.ts +0 -535
  526. package/dist/types/kernel-zerodev/abis/KillSwitchValidatorAbi.d.ts +0 -151
  527. package/dist/types/kernel-zerodev/abis/KillSwitchValidatorAbi.d.ts.map +0 -1
  528. package/dist/types/kernel-zerodev/abis/MultiSendAbi.d.ts +0 -16
  529. package/dist/types/kernel-zerodev/abis/MultiSendAbi.d.ts.map +0 -1
  530. package/dist/types/kernel-zerodev/abis/RecoveryActionAbi.d.ts +0 -16
  531. package/dist/types/kernel-zerodev/abis/RecoveryActionAbi.d.ts.map +0 -1
  532. package/dist/types/kernel-zerodev/abis/SessionKeyValidatorAbi.d.ts +0 -213
  533. package/dist/types/kernel-zerodev/abis/SessionKeyValidatorAbi.d.ts.map +0 -1
  534. package/dist/types/kernel-zerodev/abis/Test_ERC20Abi.d.ts +0 -238
  535. package/dist/types/kernel-zerodev/abis/Test_ERC20Abi.d.ts.map +0 -1
  536. package/dist/types/kernel-zerodev/abis/Test_ERC721Abi.d.ts +0 -288
  537. package/dist/types/kernel-zerodev/abis/Test_ERC721Abi.d.ts.map +0 -1
  538. package/dist/types/kernel-zerodev/abis/TokenActionsAbi.d.ts.map +0 -1
  539. package/dist/types/kernel-zerodev/abis/WeightedValidatorAbi.d.ts +0 -341
  540. package/dist/types/kernel-zerodev/abis/WeightedValidatorAbi.d.ts.map +0 -1
  541. package/dist/types/kernel-zerodev/abis/index.d.ts +0 -9
  542. package/dist/types/kernel-zerodev/abis/index.d.ts.map +0 -1
  543. package/dist/types/kernel-zerodev/account.d.ts +0 -52
  544. package/dist/types/kernel-zerodev/account.d.ts.map +0 -1
  545. package/dist/types/kernel-zerodev/api/index.d.ts +0 -6
  546. package/dist/types/kernel-zerodev/api/index.d.ts.map +0 -1
  547. package/dist/types/kernel-zerodev/client/create-client.d.ts +0 -13
  548. package/dist/types/kernel-zerodev/client/create-client.d.ts.map +0 -1
  549. package/dist/types/kernel-zerodev/constants.d.ts +0 -32
  550. package/dist/types/kernel-zerodev/constants.d.ts.map +0 -1
  551. package/dist/types/kernel-zerodev/errors.d.ts +0 -6
  552. package/dist/types/kernel-zerodev/errors.d.ts.map +0 -1
  553. package/dist/types/kernel-zerodev/ethers-provider/account-signer.d.ts +0 -32
  554. package/dist/types/kernel-zerodev/ethers-provider/account-signer.d.ts.map +0 -1
  555. package/dist/types/kernel-zerodev/ethers-provider/ethers-provider.d.ts +0 -23
  556. package/dist/types/kernel-zerodev/ethers-provider/ethers-provider.d.ts.map +0 -1
  557. package/dist/types/kernel-zerodev/middleware/gas-estimator.d.ts +0 -20
  558. package/dist/types/kernel-zerodev/middleware/gas-estimator.d.ts.map +0 -1
  559. package/dist/types/kernel-zerodev/middleware/paymaster.d.ts +0 -6
  560. package/dist/types/kernel-zerodev/middleware/paymaster.d.ts.map +0 -1
  561. package/dist/types/kernel-zerodev/owner/getCustodialOwner.d.ts +0 -12
  562. package/dist/types/kernel-zerodev/owner/getCustodialOwner.d.ts.map +0 -1
  563. package/dist/types/kernel-zerodev/owner/getRPCProviderOwner.d.ts +0 -3
  564. package/dist/types/kernel-zerodev/owner/getRPCProviderOwner.d.ts.map +0 -1
  565. package/dist/types/kernel-zerodev/owner/index.d.ts +0 -3
  566. package/dist/types/kernel-zerodev/owner/index.d.ts.map +0 -1
  567. package/dist/types/kernel-zerodev/owner/passkey/createPasskeyOwner.d.ts +0 -9
  568. package/dist/types/kernel-zerodev/owner/passkey/createPasskeyOwner.d.ts.map +0 -1
  569. package/dist/types/kernel-zerodev/owner/passkey/exceptions.d.ts +0 -4
  570. package/dist/types/kernel-zerodev/owner/passkey/exceptions.d.ts.map +0 -1
  571. package/dist/types/kernel-zerodev/owner/passkey/getAutocompletePasskeyOwner.d.ts +0 -7
  572. package/dist/types/kernel-zerodev/owner/passkey/getAutocompletePasskeyOwner.d.ts.map +0 -1
  573. package/dist/types/kernel-zerodev/owner/passkey/getPasskeyOwner.d.ts +0 -8
  574. package/dist/types/kernel-zerodev/owner/passkey/getPasskeyOwner.d.ts.map +0 -1
  575. package/dist/types/kernel-zerodev/owner/passkey/index.d.ts +0 -5
  576. package/dist/types/kernel-zerodev/owner/passkey/index.d.ts.map +0 -1
  577. package/dist/types/kernel-zerodev/owner/passkey/types.d.ts +0 -13
  578. package/dist/types/kernel-zerodev/owner/passkey/types.d.ts.map +0 -1
  579. package/dist/types/kernel-zerodev/owner/passkey/utils.d.ts +0 -15
  580. package/dist/types/kernel-zerodev/owner/passkey/utils.d.ts.map +0 -1
  581. package/dist/types/kernel-zerodev/paymaster/base.d.ts +0 -19
  582. package/dist/types/kernel-zerodev/paymaster/base.d.ts.map +0 -1
  583. package/dist/types/kernel-zerodev/paymaster/index.d.ts +0 -4
  584. package/dist/types/kernel-zerodev/paymaster/index.d.ts.map +0 -1
  585. package/dist/types/kernel-zerodev/paymaster/token-paymaster.d.ts +0 -16
  586. package/dist/types/kernel-zerodev/paymaster/token-paymaster.d.ts.map +0 -1
  587. package/dist/types/kernel-zerodev/paymaster/types.d.ts +0 -30
  588. package/dist/types/kernel-zerodev/paymaster/types.d.ts.map +0 -1
  589. package/dist/types/kernel-zerodev/paymaster/verifying-paymaster.d.ts +0 -9
  590. package/dist/types/kernel-zerodev/paymaster/verifying-paymaster.d.ts.map +0 -1
  591. package/dist/types/kernel-zerodev/provider.d.ts +0 -58
  592. package/dist/types/kernel-zerodev/provider.d.ts.map +0 -1
  593. package/dist/types/kernel-zerodev/signer/empty-account.d.ts +0 -11
  594. package/dist/types/kernel-zerodev/signer/empty-account.d.ts.map +0 -1
  595. package/dist/types/kernel-zerodev/types.d.ts +0 -8
  596. package/dist/types/kernel-zerodev/types.d.ts.map +0 -1
  597. package/dist/types/kernel-zerodev/utils/ERC4337-utils.d.ts +0 -6
  598. package/dist/types/kernel-zerodev/utils/ERC4337-utils.d.ts.map +0 -1
  599. package/dist/types/kernel-zerodev/utils/calc-pre-verification-gas.d.ts +0 -16
  600. package/dist/types/kernel-zerodev/utils/calc-pre-verification-gas.d.ts.map +0 -1
  601. package/dist/types/kernel-zerodev/utils/custom-chains.d.ts +0 -59
  602. package/dist/types/kernel-zerodev/utils/custom-chains.d.ts.map +0 -1
  603. package/dist/types/kernel-zerodev/utils.d.ts +0 -21
  604. package/dist/types/kernel-zerodev/utils.d.ts.map +0 -1
  605. package/dist/types/kernel-zerodev/validator/base.d.ts +0 -58
  606. package/dist/types/kernel-zerodev/validator/base.d.ts.map +0 -1
  607. package/dist/types/kernel-zerodev/validator/ecdsa-validator.d.ts +0 -21
  608. package/dist/types/kernel-zerodev/validator/ecdsa-validator.d.ts.map +0 -1
  609. package/dist/types/kernel-zerodev/validator/erc165-session-key-validator.d.ts +0 -30
  610. package/dist/types/kernel-zerodev/validator/erc165-session-key-validator.d.ts.map +0 -1
  611. package/dist/types/kernel-zerodev/validator/index.d.ts +0 -9
  612. package/dist/types/kernel-zerodev/validator/index.d.ts.map +0 -1
  613. package/dist/types/kernel-zerodev/validator/kill-switch-validator.d.ts +0 -23
  614. package/dist/types/kernel-zerodev/validator/kill-switch-validator.d.ts.map +0 -1
  615. package/dist/types/kernel-zerodev/validator/recovery-validator.d.ts +0 -57
  616. package/dist/types/kernel-zerodev/validator/recovery-validator.d.ts.map +0 -1
  617. package/dist/types/kernel-zerodev/validator/session-key-validator.d.ts +0 -85
  618. package/dist/types/kernel-zerodev/validator/session-key-validator.d.ts.map +0 -1
  619. package/dist/types/kernel-zerodev/validator/types.d.ts +0 -57
  620. package/dist/types/kernel-zerodev/validator/types.d.ts.map +0 -1
  621. package/dist/types/kernel-zerodev/validator-provider/base.d.ts +0 -30
  622. package/dist/types/kernel-zerodev/validator-provider/base.d.ts.map +0 -1
  623. package/dist/types/kernel-zerodev/validator-provider/ecdsa-provider.d.ts +0 -9
  624. package/dist/types/kernel-zerodev/validator-provider/ecdsa-provider.d.ts.map +0 -1
  625. package/dist/types/kernel-zerodev/validator-provider/erc165-session-key-provider.d.ts +0 -9
  626. package/dist/types/kernel-zerodev/validator-provider/erc165-session-key-provider.d.ts.map +0 -1
  627. package/dist/types/kernel-zerodev/validator-provider/index.d.ts +0 -9
  628. package/dist/types/kernel-zerodev/validator-provider/index.d.ts.map +0 -1
  629. package/dist/types/kernel-zerodev/validator-provider/kill-switch-provider.d.ts +0 -9
  630. package/dist/types/kernel-zerodev/validator-provider/kill-switch-provider.d.ts.map +0 -1
  631. package/dist/types/kernel-zerodev/validator-provider/recovery-provider.d.ts +0 -28
  632. package/dist/types/kernel-zerodev/validator-provider/recovery-provider.d.ts.map +0 -1
  633. package/dist/types/kernel-zerodev/validator-provider/session-key-provider.d.ts +0 -19
  634. package/dist/types/kernel-zerodev/validator-provider/session-key-provider.d.ts.map +0 -1
  635. package/dist/types/kernel-zerodev/validator-provider/types.d.ts +0 -30
  636. package/dist/types/kernel-zerodev/validator-provider/types.d.ts.map +0 -1
  637. package/passkey/package.json +0 -5
  638. package/src/index.ts +0 -50
  639. package/src/kernel-zerodev/__tests__/config/index.ts +0 -19
  640. package/src/kernel-zerodev/__tests__/mocks/mock-signer.ts +0 -24
  641. package/src/kernel-zerodev/abis/ERC165SessionKeyValidatorAbi.ts +0 -211
  642. package/src/kernel-zerodev/abis/ERC20Abi.ts +0 -153
  643. package/src/kernel-zerodev/abis/ESCDAValidatorAbi.ts +0 -206
  644. package/src/kernel-zerodev/abis/KernelAccountAbi.ts +0 -691
  645. package/src/kernel-zerodev/abis/KernelFactoryAbi.ts +0 -380
  646. package/src/kernel-zerodev/abis/KillSwitchValidatorAbi.ts +0 -196
  647. package/src/kernel-zerodev/abis/MultiSendAbi.ts +0 -20
  648. package/src/kernel-zerodev/abis/RecoveryActionAbi.ts +0 -20
  649. package/src/kernel-zerodev/abis/SessionKeyValidatorAbi.ts +0 -277
  650. package/src/kernel-zerodev/abis/Test_ERC20Abi.ts +0 -157
  651. package/src/kernel-zerodev/abis/Test_ERC721Abi.ts +0 -373
  652. package/src/kernel-zerodev/abis/TokenActionsAbi.ts +0 -81
  653. package/src/kernel-zerodev/abis/WeightedValidatorAbi.ts +0 -442
  654. package/src/kernel-zerodev/abis/index.ts +0 -17
  655. package/src/kernel-zerodev/account.ts +0 -392
  656. package/src/kernel-zerodev/api/index.ts +0 -84
  657. package/src/kernel-zerodev/client/create-client.ts +0 -80
  658. package/src/kernel-zerodev/constants.ts +0 -114
  659. package/src/kernel-zerodev/errors.ts +0 -13
  660. package/src/kernel-zerodev/ethers-provider/account-signer.ts +0 -185
  661. package/src/kernel-zerodev/ethers-provider/ethers-provider.ts +0 -149
  662. package/src/kernel-zerodev/middleware/gas-estimator.ts +0 -213
  663. package/src/kernel-zerodev/middleware/paymaster.ts +0 -86
  664. package/src/kernel-zerodev/owner/getCustodialOwner.ts +0 -131
  665. package/src/kernel-zerodev/owner/getRPCProviderOwner.ts +0 -26
  666. package/src/kernel-zerodev/owner/index.ts +0 -2
  667. package/src/kernel-zerodev/owner/passkey/createPasskeyOwner.ts +0 -107
  668. package/src/kernel-zerodev/owner/passkey/exceptions.ts +0 -3
  669. package/src/kernel-zerodev/owner/passkey/getAutocompletePasskeyOwner.ts +0 -81
  670. package/src/kernel-zerodev/owner/passkey/getPasskeyOwner.ts +0 -75
  671. package/src/kernel-zerodev/owner/passkey/index.ts +0 -4
  672. package/src/kernel-zerodev/owner/passkey/types.ts +0 -18
  673. package/src/kernel-zerodev/owner/passkey/utils.ts +0 -174
  674. package/src/kernel-zerodev/paymaster/base.ts +0 -90
  675. package/src/kernel-zerodev/paymaster/index.ts +0 -9
  676. package/src/kernel-zerodev/paymaster/token-paymaster.ts +0 -251
  677. package/src/kernel-zerodev/paymaster/types.ts +0 -40
  678. package/src/kernel-zerodev/paymaster/verifying-paymaster.ts +0 -32
  679. package/src/kernel-zerodev/provider.ts +0 -485
  680. package/src/kernel-zerodev/signer/empty-account.ts +0 -27
  681. package/src/kernel-zerodev/types.ts +0 -8
  682. package/src/kernel-zerodev/utils/ERC4337-utils.ts +0 -161
  683. package/src/kernel-zerodev/utils/calc-pre-verification-gas.ts +0 -88
  684. package/src/kernel-zerodev/utils/custom-chains.ts +0 -55
  685. package/src/kernel-zerodev/utils.ts +0 -155
  686. package/src/kernel-zerodev/validator/base.ts +0 -320
  687. package/src/kernel-zerodev/validator/ecdsa-validator.ts +0 -122
  688. package/src/kernel-zerodev/validator/erc165-session-key-validator.ts +0 -151
  689. package/src/kernel-zerodev/validator/index.ts +0 -22
  690. package/src/kernel-zerodev/validator/kill-switch-validator.ts +0 -160
  691. package/src/kernel-zerodev/validator/recovery-validator.ts +0 -429
  692. package/src/kernel-zerodev/validator/session-key-validator.ts +0 -696
  693. package/src/kernel-zerodev/validator/types.ts +0 -129
  694. package/src/kernel-zerodev/validator-provider/base.ts +0 -178
  695. package/src/kernel-zerodev/validator-provider/ecdsa-provider.ts +0 -64
  696. package/src/kernel-zerodev/validator-provider/erc165-session-key-provider.ts +0 -71
  697. package/src/kernel-zerodev/validator-provider/index.ts +0 -22
  698. package/src/kernel-zerodev/validator-provider/kill-switch-provider.ts +0 -71
  699. package/src/kernel-zerodev/validator-provider/recovery-provider.ts +0 -373
  700. package/src/kernel-zerodev/validator-provider/session-key-provider.ts +0 -150
  701. package/src/kernel-zerodev/validator-provider/types.ts +0 -42
  702. /package/{dist/types/kernel-zerodev/abis → _types/accounts/kernel/abi}/KernelFactoryAbi.d.ts +0 -0
  703. /package/{dist/types/kernel-zerodev/abis → _types/accounts/kernel/abi}/TokenActionsAbi.d.ts +0 -0
@@ -1,84 +0,0 @@
1
- import { type Address, type Hex, type SmartAccountSigner, type UserOperationRequest, type SignTypedDataParams, type Abi } from "@alchemy/aa-core";
2
- import { KernelBaseValidator, type KernelBaseValidatorParams, type ValidatorPluginData } from "./base.js";
3
- import { type GetAbiItemParameters } from "viem";
4
- import { MerkleTree } from "merkletreejs";
5
- import type { GetAbiItemReturnType } from "viem/dist/types/utils/abi/getAbiItem.js";
6
- import type { GeneratePermissionFromArgsParameters } from "./types.js";
7
- import { Operation } from "../provider.js";
8
- export interface SessionKeyValidatorParams extends KernelBaseValidatorParams {
9
- sessionKey: SmartAccountSigner;
10
- sessionKeyData: SessionKeyData;
11
- }
12
- export type SessionKeyParams = Pick<SessionKeyValidatorParams, "sessionKeyData" | "enableSignature"> & ValidatorPluginData & {
13
- sessionPrivateKey?: Hex;
14
- initCode?: Hex;
15
- accountAddress?: Address;
16
- };
17
- export declare enum ParamOperator {
18
- EQUAL = 0,
19
- GREATER_THAN = 1,
20
- LESS_THAN = 2,
21
- GREATER_THAN_OR_EQUAL = 3,
22
- LESS_THAN_OR_EQUAL = 4,
23
- NOT_EQUAL = 5
24
- }
25
- export type SessionNonces = {
26
- lastNonce: bigint;
27
- invalidNonce: bigint;
28
- };
29
- export type ExecutionRule = {
30
- validAfter: number;
31
- interval: number;
32
- runs: number;
33
- };
34
- export interface ParamRules {
35
- offset: number;
36
- condition: ParamOperator;
37
- param: Hex;
38
- }
39
- export type Permission = {
40
- target: Address;
41
- index?: number;
42
- rules?: ParamRules[];
43
- sig?: Hex;
44
- valueLimit?: bigint;
45
- executionRule?: ExecutionRule;
46
- operation?: Operation;
47
- };
48
- export interface SessionKeyData {
49
- validUntil: number;
50
- validAfter: number;
51
- paymaster?: Address;
52
- permissions?: Permission[];
53
- }
54
- export declare function getAbiItem<TAbi extends Abi | readonly unknown[], TItemName extends string>({ abi, args, name, }: GetAbiItemParameters<TAbi, TItemName>): GetAbiItemReturnType<TAbi, TItemName>;
55
- export declare function getPermissionFromABI<TAbi extends Abi | readonly unknown[], TFunctionName extends string | undefined = string>({ abi, target, args, functionName, valueLimit, operation, }: GeneratePermissionFromArgsParameters<TAbi, TFunctionName>): Permission;
56
- export declare class SessionKeyValidator extends KernelBaseValidator {
57
- protected sessionKey: SmartAccountSigner;
58
- sessionKeyData: SessionKeyData;
59
- merkleTree: MerkleTree;
60
- constructor(params: SessionKeyValidatorParams);
61
- static init(params: SessionKeyValidatorParams): Promise<SessionKeyValidator>;
62
- shouldDelegateViaFallback(): boolean;
63
- findMatchingPermissions(callData: Hex): Permission | Permission[] | undefined;
64
- private filterPermissions;
65
- private filterByOperation;
66
- private filterBySignature;
67
- private findPermissionByRule;
68
- private getFormattedHex;
69
- private evaluateRuleCondition;
70
- getMerkleTree(): MerkleTree;
71
- encodePermissionData(permission: Permission | Permission[], merkleProof?: string[] | string[][]): Hex;
72
- getSessionData(): SessionKeyParams;
73
- signer(): Promise<SmartAccountSigner>;
74
- getSessionNonces(kernelAccountAddress: Address): Promise<SessionNonces>;
75
- getEnableData(kernelAccountAddress?: Address, enabledLastNonce?: bigint): Promise<Hex>;
76
- isPluginEnabled(kernelAccountAddress: Address, selector: Hex): Promise<boolean>;
77
- getDummyUserOpSignature(callData: Hex): Promise<Hex>;
78
- private getEncodedPermissionProofData;
79
- encodeEnable(sessionKeyEnableData: Hex): Hex;
80
- encodeDisable(sessionKey: Hex): Hex;
81
- signMessage(message: string | Uint8Array): Promise<Hex>;
82
- signTypedData(params: SignTypedDataParams): Promise<Hex>;
83
- signUserOp(userOp: UserOperationRequest): Promise<Hex>;
84
- }
@@ -1,501 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.SessionKeyValidator = exports.getPermissionFromABI = exports.getAbiItem = exports.ParamOperator = void 0;
4
- const aa_core_1 = require("@alchemy/aa-core");
5
- const base_js_1 = require("./base.js");
6
- const viem_1 = require("viem");
7
- const utils_1 = require("viem/utils");
8
- const SessionKeyValidatorAbi_js_1 = require("../abis/SessionKeyValidatorAbi.js");
9
- const constants_js_1 = require("../constants.js");
10
- const KernelAccountAbi_js_1 = require("../abis/KernelAccountAbi.js");
11
- const merkletreejs_1 = require("merkletreejs");
12
- const index_js_1 = require("../api/index.js");
13
- const utils_js_1 = require("../utils.js");
14
- const provider_js_1 = require("../provider.js");
15
- BigInt.prototype.toJSON = function () {
16
- return this.toString();
17
- };
18
- var ParamOperator;
19
- (function (ParamOperator) {
20
- ParamOperator[ParamOperator["EQUAL"] = 0] = "EQUAL";
21
- ParamOperator[ParamOperator["GREATER_THAN"] = 1] = "GREATER_THAN";
22
- ParamOperator[ParamOperator["LESS_THAN"] = 2] = "LESS_THAN";
23
- ParamOperator[ParamOperator["GREATER_THAN_OR_EQUAL"] = 3] = "GREATER_THAN_OR_EQUAL";
24
- ParamOperator[ParamOperator["LESS_THAN_OR_EQUAL"] = 4] = "LESS_THAN_OR_EQUAL";
25
- ParamOperator[ParamOperator["NOT_EQUAL"] = 5] = "NOT_EQUAL";
26
- })(ParamOperator || (exports.ParamOperator = ParamOperator = {}));
27
- function getAbiItem({ abi, args = [], name, }) {
28
- const abiItems = abi.filter((x) => "name" in x && x.name === name);
29
- if (abiItems.length === 0)
30
- return undefined;
31
- if (abiItems.length === 1)
32
- return abiItems[0];
33
- const abiItemsParamFiltered = [];
34
- for (const abiItem of abiItems) {
35
- if (!("inputs" in abiItem))
36
- continue;
37
- if (!args || args.length === 0) {
38
- if (!abiItem.inputs || abiItem.inputs.length === 0)
39
- return abiItem;
40
- continue;
41
- }
42
- if (!abiItem.inputs)
43
- continue;
44
- if (abiItem.inputs.length === 0)
45
- continue;
46
- if (abiItem.inputs.length !== args.length)
47
- continue;
48
- abiItemsParamFiltered.push(abiItem);
49
- }
50
- if (abiItemsParamFiltered.length === 0)
51
- return abiItems[0];
52
- else if (abiItemsParamFiltered.length === 1)
53
- return abiItemsParamFiltered[0];
54
- else
55
- throw Error(`Couldn't parse funtion signature using params, set appropriate one from below:\n${abiItemsParamFiltered
56
- .map((item) => (0, utils_1.formatAbiItem)(item))
57
- .reduce((a, c) => `${a}\n${c}`)}`);
58
- }
59
- exports.getAbiItem = getAbiItem;
60
- function getPermissionFromABI({ abi, target, args, functionName, valueLimit, operation, }) {
61
- const abiItem = getAbiItem({
62
- abi,
63
- args,
64
- name: functionName,
65
- });
66
- if (abiItem.type !== "function") {
67
- throw Error(`${functionName} not found in abi`);
68
- }
69
- const functionSelector = (0, viem_1.getFunctionSelector)(abiItem);
70
- let paramRules = [];
71
- if (args && Array.isArray(args)) {
72
- paramRules = args
73
- .map((arg, i) => arg && {
74
- param: (0, viem_1.pad)((0, viem_1.isHex)(arg.value)
75
- ? arg.value
76
- : (0, viem_1.toHex)(arg.value), { size: 32 }),
77
- offset: i * 32,
78
- condition: arg.operator,
79
- })
80
- .filter((rule) => rule);
81
- }
82
- return {
83
- sig: functionSelector,
84
- rules: paramRules,
85
- target,
86
- valueLimit: valueLimit ?? 0n,
87
- operation: operation ?? provider_js_1.Operation.Call,
88
- };
89
- }
90
- exports.getPermissionFromABI = getPermissionFromABI;
91
- class SessionKeyValidator extends base_js_1.KernelBaseValidator {
92
- constructor(params) {
93
- super(params);
94
- Object.defineProperty(this, "sessionKey", {
95
- enumerable: true,
96
- configurable: true,
97
- writable: true,
98
- value: void 0
99
- });
100
- Object.defineProperty(this, "sessionKeyData", {
101
- enumerable: true,
102
- configurable: true,
103
- writable: true,
104
- value: void 0
105
- });
106
- Object.defineProperty(this, "merkleTree", {
107
- enumerable: true,
108
- configurable: true,
109
- writable: true,
110
- value: void 0
111
- });
112
- this.sessionKey = params.sessionKey;
113
- this.sessionKeyData = {
114
- ...params.sessionKeyData,
115
- validAfter: params.sessionKeyData.validAfter ?? 0,
116
- validUntil: params.sessionKeyData.validUntil ?? 0,
117
- paymaster: params.sessionKeyData.paymaster ?? viem_1.zeroAddress,
118
- };
119
- this.sessionKeyData.permissions = this.sessionKeyData.permissions?.map((perm, index) => ({
120
- ...perm,
121
- valueLimit: perm.valueLimit ?? 0n,
122
- sig: perm.sig ?? (0, viem_1.pad)("0x", { size: 4 }),
123
- rules: perm.rules ?? [],
124
- index,
125
- executionRule: perm.executionRule ?? {
126
- validAfter: 0,
127
- interval: 0,
128
- runs: 0,
129
- },
130
- operation: perm.operation ?? provider_js_1.Operation.Call,
131
- }));
132
- this.merkleTree = this.getMerkleTree();
133
- this.selector =
134
- params.selector ??
135
- (0, viem_1.getFunctionSelector)("execute(address, uint256, bytes, uint8)");
136
- this.executor = params.executor ?? viem_1.zeroAddress;
137
- this.mode = params.mode ?? base_js_1.ValidatorMode.plugin;
138
- }
139
- static async init(params) {
140
- const chainId = await (0, index_js_1.getChainId)(params.projectId);
141
- if (!chainId) {
142
- throw new Error("ChainId not found");
143
- }
144
- const chain = (0, utils_js_1.getChain)(chainId);
145
- const instance = new SessionKeyValidator({ ...params, chain });
146
- return instance;
147
- }
148
- shouldDelegateViaFallback() {
149
- return this.merkleTree.getHexRoot() === (0, viem_1.pad)("0x00", { size: 32 });
150
- }
151
- findMatchingPermissions(callData) {
152
- try {
153
- const { functionName, args } = (0, viem_1.decodeFunctionData)({
154
- abi: KernelAccountAbi_js_1.KernelAccountAbi,
155
- data: callData,
156
- });
157
- if (functionName !== "execute" && functionName !== "executeBatch")
158
- return undefined;
159
- if (functionName === "execute") {
160
- const [to, value, data] = args;
161
- return this.filterPermissions([to], [data], [value])?.[0];
162
- }
163
- else if (functionName === "executeBatch") {
164
- let targets = [], values = [], dataArray = [];
165
- args[0].forEach((arg) => {
166
- targets.push(arg.to);
167
- values.push(arg.value);
168
- dataArray.push(arg.data);
169
- });
170
- return this.filterPermissions(targets, dataArray, values);
171
- }
172
- else {
173
- throw Error("Invalid function");
174
- }
175
- }
176
- catch (error) {
177
- return undefined;
178
- }
179
- }
180
- filterPermissions(targets, dataArray, values) {
181
- if (targets.length !== dataArray.length ||
182
- targets.length !== values.length) {
183
- throw Error("Invalid arguments");
184
- }
185
- const filteredPermissions = targets.map((target, index) => {
186
- const permissionsList = this.sessionKeyData.permissions;
187
- if (!permissionsList || !permissionsList.length)
188
- return undefined;
189
- const targetToMatch = target.toLowerCase();
190
- let targetPermissions = permissionsList.filter((permission) => permission.target.toLowerCase() === targetToMatch ||
191
- permission.target.toLowerCase() === viem_1.zeroAddress.toLowerCase());
192
- if (!targetPermissions.length)
193
- return undefined;
194
- const operationPermissions = this.filterByOperation(targetPermissions, provider_js_1.Operation.Call);
195
- if (!operationPermissions.length)
196
- return undefined;
197
- const signaturePermissions = this.filterBySignature(targetPermissions, dataArray[index].slice(0, 10).toLowerCase());
198
- const valueLimitPermissions = signaturePermissions.filter((permission) => (permission.valueLimit ?? 0n) >= values[index]);
199
- if (!valueLimitPermissions.length)
200
- return undefined;
201
- const sortedPermissions = valueLimitPermissions.sort((a, b) => {
202
- if ((b.valueLimit ?? 0n) > (a.valueLimit ?? 0n)) {
203
- return 1;
204
- }
205
- else if ((b.valueLimit ?? 0n) < (a.valueLimit ?? 0n)) {
206
- return -1;
207
- }
208
- else {
209
- return 0;
210
- }
211
- });
212
- return this.findPermissionByRule(sortedPermissions, dataArray[index]);
213
- });
214
- return filteredPermissions.every((permission) => permission !== undefined)
215
- ? filteredPermissions
216
- : undefined;
217
- }
218
- filterByOperation(permissions, operation) {
219
- return permissions.filter((permission) => permission.operation === operation || provider_js_1.Operation.Call === operation);
220
- }
221
- filterBySignature(permissions, signature) {
222
- return permissions.filter((permission) => (permission.sig ?? (0, viem_1.pad)("0x", { size: 4 })).toLowerCase() === signature);
223
- }
224
- findPermissionByRule(permissions, data) {
225
- return permissions.find((permission) => {
226
- for (const rule of permission.rules ?? []) {
227
- const dataParam = this.getFormattedHex("0x" + data.slice(10 + rule.offset * 2, 10 + rule.offset * 2 + 64));
228
- const ruleParam = this.getFormattedHex(rule.param);
229
- if (!this.evaluateRuleCondition(dataParam, ruleParam, rule.condition)) {
230
- return false;
231
- }
232
- }
233
- return true;
234
- });
235
- }
236
- getFormattedHex(value) {
237
- return (0, viem_1.pad)((0, viem_1.isHex)(value) ? value : (0, viem_1.toHex)(value), {
238
- size: 32,
239
- }).toLowerCase();
240
- }
241
- evaluateRuleCondition(dataParam, ruleParam, condition) {
242
- switch (condition) {
243
- case ParamOperator.EQUAL:
244
- return dataParam === ruleParam;
245
- case ParamOperator.GREATER_THAN:
246
- return dataParam > ruleParam;
247
- case ParamOperator.LESS_THAN:
248
- return dataParam < ruleParam;
249
- case ParamOperator.GREATER_THAN_OR_EQUAL:
250
- return dataParam >= ruleParam;
251
- case ParamOperator.LESS_THAN_OR_EQUAL:
252
- return dataParam <= ruleParam;
253
- case ParamOperator.NOT_EQUAL:
254
- return dataParam !== ruleParam;
255
- default:
256
- return false;
257
- }
258
- }
259
- getMerkleTree() {
260
- const permissionPacked = this.sessionKeyData.permissions?.map((permission) => this.encodePermissionData(permission));
261
- if (permissionPacked && permissionPacked.length === 1)
262
- permissionPacked.push(permissionPacked[0]);
263
- return permissionPacked && permissionPacked.length !== 0
264
- ? new merkletreejs_1.MerkleTree(permissionPacked, viem_1.keccak256, {
265
- hashLeaves: true,
266
- sortPairs: true,
267
- })
268
- : new merkletreejs_1.MerkleTree([(0, viem_1.pad)("0x00", { size: 32 })], viem_1.keccak256, {
269
- hashLeaves: false,
270
- complete: true,
271
- });
272
- }
273
- encodePermissionData(permission, merkleProof) {
274
- let permissionParam = {
275
- components: [
276
- {
277
- name: "index",
278
- type: "uint32",
279
- },
280
- {
281
- name: "target",
282
- type: "address",
283
- },
284
- {
285
- name: "sig",
286
- type: "bytes4",
287
- },
288
- {
289
- name: "valueLimit",
290
- type: "uint256",
291
- },
292
- {
293
- components: [
294
- {
295
- name: "offset",
296
- type: "uint256",
297
- },
298
- {
299
- internalType: "enum ParamCondition",
300
- name: "condition",
301
- type: "uint8",
302
- },
303
- {
304
- name: "param",
305
- type: "bytes32",
306
- },
307
- ],
308
- name: "rules",
309
- type: "tuple[]",
310
- },
311
- {
312
- components: [
313
- {
314
- name: "interval",
315
- type: "uint48",
316
- },
317
- {
318
- name: "runs",
319
- type: "uint48",
320
- },
321
- {
322
- internalType: "ValidAfter",
323
- name: "validAfter",
324
- type: "uint48",
325
- },
326
- ],
327
- name: "executionRule",
328
- type: "tuple",
329
- },
330
- {
331
- internalType: "enum Operation",
332
- name: "operation",
333
- type: "uint8",
334
- },
335
- ],
336
- name: "permission",
337
- type: Array.isArray(permission) ? "tuple[]" : "tuple",
338
- };
339
- let params;
340
- let values;
341
- if (merkleProof) {
342
- params = [
343
- permissionParam,
344
- {
345
- name: "merkleProof",
346
- type: Array.isArray(merkleProof[0]) ? "bytes32[][]" : "bytes32[]",
347
- },
348
- ];
349
- values = [permission, merkleProof];
350
- }
351
- else {
352
- params = [permissionParam];
353
- values = [permission];
354
- }
355
- return (0, viem_1.encodeAbiParameters)(params, values);
356
- }
357
- getSessionData() {
358
- if (!this.selector || !this.executor) {
359
- throw Error("Plugin Validator data params uninitialised");
360
- }
361
- return {
362
- selector: this.selector,
363
- executor: this.executor,
364
- validUntil: this.validUntil,
365
- validAfter: this.validAfter,
366
- sessionKeyData: this.sessionKeyData,
367
- enableSignature: this.enableSignature,
368
- };
369
- }
370
- async signer() {
371
- return await Promise.resolve(this.sessionKey);
372
- }
373
- async getSessionNonces(kernelAccountAddress) {
374
- if (!this.publicClient) {
375
- throw new Error("Validator uninitialized: PublicClient missing");
376
- }
377
- const nonce = await this.publicClient.readContract({
378
- abi: SessionKeyValidatorAbi_js_1.SessionKeyValidatorAbi,
379
- address: this.validatorAddress,
380
- functionName: "nonces",
381
- args: [kernelAccountAddress],
382
- });
383
- return { lastNonce: nonce[0], invalidNonce: nonce[1] };
384
- }
385
- async getEnableData(kernelAccountAddress, enabledLastNonce) {
386
- if (!this.merkleTree) {
387
- throw Error("SessionKeyValidator: MerkleTree not generated");
388
- }
389
- if (!kernelAccountAddress) {
390
- throw Error("SessionKeyValidator: Kernel account address not provided");
391
- }
392
- const lastNonce = enabledLastNonce ??
393
- (await this.getSessionNonces(kernelAccountAddress)).lastNonce + 1n;
394
- return (0, viem_1.concat)([
395
- await this.sessionKey.getAddress(),
396
- (0, viem_1.pad)(this.merkleTree.getHexRoot(), { size: 32 }),
397
- (0, viem_1.pad)((0, viem_1.toHex)(this.sessionKeyData.validAfter), { size: 6 }),
398
- (0, viem_1.pad)((0, viem_1.toHex)(this.sessionKeyData.validUntil), { size: 6 }),
399
- this.sessionKeyData.paymaster,
400
- (0, viem_1.pad)((0, viem_1.toHex)(lastNonce), { size: 32 }),
401
- ]);
402
- }
403
- async isPluginEnabled(kernelAccountAddress, selector) {
404
- if (!this.publicClient) {
405
- throw new Error("Validator uninitialized: PublicClient missing");
406
- }
407
- const execDetail = await this.publicClient.readContract({
408
- abi: KernelAccountAbi_js_1.KernelAccountAbi,
409
- address: kernelAccountAddress,
410
- functionName: "getExecution",
411
- args: [selector],
412
- });
413
- const enableData = await this.publicClient.readContract({
414
- abi: SessionKeyValidatorAbi_js_1.SessionKeyValidatorAbi,
415
- address: this.validatorAddress,
416
- functionName: "sessionData",
417
- args: [await this.sessionKey.getAddress(), kernelAccountAddress],
418
- });
419
- const enableDataHex = (0, viem_1.concatHex)([
420
- await this.sessionKey.getAddress(),
421
- (0, viem_1.pad)(enableData[0], { size: 32 }),
422
- (0, viem_1.pad)((0, viem_1.toHex)(enableData[1]), { size: 6 }),
423
- (0, viem_1.pad)((0, viem_1.toHex)(enableData[2]), { size: 6 }),
424
- enableData[3],
425
- (0, viem_1.pad)((0, viem_1.toHex)(enableData[4]), { size: 32 }),
426
- ]);
427
- return (execDetail.validator.toLowerCase() ===
428
- this.validatorAddress.toLowerCase() &&
429
- enableDataHex.toLowerCase() ===
430
- (await this.getEnableData(kernelAccountAddress, enableData[4])).toLowerCase());
431
- }
432
- async getDummyUserOpSignature(callData) {
433
- return (0, viem_1.concatHex)([
434
- await this.sessionKey.getAddress(),
435
- constants_js_1.DUMMY_ECDSA_SIG,
436
- this.getEncodedPermissionProofData(callData),
437
- ]);
438
- }
439
- getEncodedPermissionProofData(callData) {
440
- const matchingPermission = this.findMatchingPermissions(callData);
441
- if (!matchingPermission && !this.shouldDelegateViaFallback()) {
442
- throw Error("SessionKeyValidator: No matching permission found for the userOp");
443
- }
444
- const encodedPermissionData = this.sessionKeyData.permissions &&
445
- this.sessionKeyData.permissions.length !== 0 &&
446
- matchingPermission
447
- ? this.encodePermissionData(matchingPermission)
448
- : "0x";
449
- let merkleProof = [];
450
- if (Array.isArray(matchingPermission)) {
451
- let encodedPerms = matchingPermission.map((permission) => (0, viem_1.keccak256)(this.encodePermissionData(permission)));
452
- merkleProof = encodedPerms.map((perm) => this.merkleTree.getHexProof(perm));
453
- }
454
- else if (matchingPermission) {
455
- merkleProof = this.merkleTree.getHexProof((0, viem_1.keccak256)(encodedPermissionData));
456
- }
457
- return this.sessionKeyData.permissions &&
458
- this.sessionKeyData.permissions.length !== 0 &&
459
- matchingPermission
460
- ? this.encodePermissionData(matchingPermission, merkleProof)
461
- : "0x";
462
- }
463
- encodeEnable(sessionKeyEnableData) {
464
- return (0, viem_1.encodeFunctionData)({
465
- abi: SessionKeyValidatorAbi_js_1.SessionKeyValidatorAbi,
466
- functionName: "enable",
467
- args: [sessionKeyEnableData],
468
- });
469
- }
470
- encodeDisable(sessionKey) {
471
- return (0, viem_1.encodeFunctionData)({
472
- abi: SessionKeyValidatorAbi_js_1.SessionKeyValidatorAbi,
473
- functionName: "disable",
474
- args: [sessionKey],
475
- });
476
- }
477
- async signMessage(message) {
478
- return await this.sessionKey.signMessage(message);
479
- }
480
- async signTypedData(params) {
481
- return (0, utils_js_1.fixSignedData)(await this.sessionKey.signTypedData(params));
482
- }
483
- async signUserOp(userOp) {
484
- if (!this.chain) {
485
- throw new Error("Validator uninitialized");
486
- }
487
- const hash = (0, aa_core_1.getUserOperationHash)({
488
- ...userOp,
489
- signature: "0x",
490
- }, this.entryPointAddress, BigInt(this.chain.id));
491
- const formattedMessage = typeof hash === "string" ? (0, viem_1.toBytes)(hash) : hash;
492
- const signature = (0, viem_1.concat)([
493
- await this.sessionKey.getAddress(),
494
- await this.sessionKey.signMessage(formattedMessage),
495
- this.getEncodedPermissionProofData(userOp.callData),
496
- ]);
497
- return signature;
498
- }
499
- }
500
- exports.SessionKeyValidator = SessionKeyValidator;
501
- //# sourceMappingURL=session-key-validator.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"session-key-validator.js","sourceRoot":"","sources":["../../../../src/kernel-zerodev/validator/session-key-validator.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n getUserOperationHash,\n type Address,\n type Hex,\n type SmartAccountSigner,\n type UserOperationRequest,\n type SignTypedDataParams,\n type Abi,\n} from \"@alchemy/aa-core\";\nimport {\n KernelBaseValidator,\n ValidatorMode,\n type KernelBaseValidatorParams,\n type ValidatorPluginData,\n} from \"./base.js\";\nimport {\n encodeFunctionData,\n toBytes,\n concat,\n pad,\n toHex,\n encodeAbiParameters,\n concatHex,\n zeroAddress,\n decodeFunctionData,\n isHex,\n getFunctionSelector,\n type GetAbiItemParameters,\n keccak256,\n} from \"viem\";\nimport { formatAbiItem } from \"viem/utils\";\nimport { SessionKeyValidatorAbi } from \"../abis/SessionKeyValidatorAbi.js\";\nimport { DUMMY_ECDSA_SIG } from \"../constants.js\";\nimport { KernelAccountAbi } from \"../abis/KernelAccountAbi.js\";\nimport { MerkleTree } from \"merkletreejs\";\nimport { getChainId } from \"../api/index.js\";\nimport { fixSignedData, getChain } from \"../utils.js\";\nimport type { GetAbiItemReturnType } from \"viem/dist/types/utils/abi/getAbiItem.js\";\nimport { type AbiFunction } from \"abitype\";\nimport type {\n CombinedArgs,\n GeneratePermissionFromArgsParameters,\n} from \"./types.js\";\nimport { Operation } from \"../provider.js\";\n\n// We need to be able to serialize bigint to transmit session key over\n// the network.\n// Using this trick: https://github.com/GoogleChromeLabs/jsbi/issues/30#issuecomment-1006086291\n(BigInt.prototype as any).toJSON = function () {\n return this.toString();\n};\n\nexport interface SessionKeyValidatorParams extends KernelBaseValidatorParams {\n sessionKey: SmartAccountSigner;\n sessionKeyData: SessionKeyData;\n}\n\nexport type SessionKeyParams = Pick<\n SessionKeyValidatorParams,\n \"sessionKeyData\" | \"enableSignature\"\n> &\n ValidatorPluginData & {\n sessionPrivateKey?: Hex;\n initCode?: Hex;\n accountAddress?: Address;\n };\n\nexport enum ParamOperator {\n EQUAL = 0,\n GREATER_THAN = 1,\n LESS_THAN = 2,\n GREATER_THAN_OR_EQUAL = 3,\n LESS_THAN_OR_EQUAL = 4,\n NOT_EQUAL = 5,\n}\n\nexport type SessionNonces = {\n lastNonce: bigint;\n invalidNonce: bigint;\n};\n\nexport type ExecutionRule = {\n validAfter: number; // 48 bits\n interval: number; // 48 bits\n runs: number; // 48 bits\n};\nexport interface ParamRules {\n offset: number;\n condition: ParamOperator;\n param: Hex;\n}\n\nexport type Permission = {\n target: Address;\n index?: number;\n rules?: ParamRules[];\n sig?: Hex;\n valueLimit?: bigint;\n executionRule?: ExecutionRule;\n operation?: Operation;\n};\n\nexport interface SessionKeyData {\n validUntil: number;\n validAfter: number;\n paymaster?: Address;\n permissions?: Permission[];\n}\n\nexport function getAbiItem<\n TAbi extends Abi | readonly unknown[],\n TItemName extends string\n>({\n abi,\n args = [],\n name,\n}: GetAbiItemParameters<TAbi, TItemName>): GetAbiItemReturnType<\n TAbi,\n TItemName\n> {\n const abiItems = (abi as Abi).filter((x) => \"name\" in x && x.name === name);\n if (abiItems.length === 0) return undefined as any;\n if (abiItems.length === 1) return abiItems[0] as any;\n const abiItemsParamFiltered = [];\n for (const abiItem of abiItems) {\n if (!(\"inputs\" in abiItem)) continue;\n if (!args || args.length === 0) {\n if (!abiItem.inputs || abiItem.inputs.length === 0) return abiItem as any;\n continue;\n }\n if (!abiItem.inputs) continue;\n if (abiItem.inputs.length === 0) continue;\n if (abiItem.inputs.length !== args.length) continue;\n abiItemsParamFiltered.push(abiItem);\n }\n if (abiItemsParamFiltered.length === 0) return abiItems[0] as any;\n else if (abiItemsParamFiltered.length === 1)\n return abiItemsParamFiltered[0] as any;\n else\n throw Error(\n `Couldn't parse funtion signature using params, set appropriate one from below:\\n${abiItemsParamFiltered\n .map((item) => formatAbiItem(item))\n .reduce((a, c) => `${a}\\n${c}`)}`\n );\n}\n\nexport function getPermissionFromABI<\n TAbi extends Abi | readonly unknown[],\n TFunctionName extends string | undefined = string\n>({\n abi,\n target,\n args,\n functionName,\n valueLimit,\n operation,\n}: GeneratePermissionFromArgsParameters<TAbi, TFunctionName>): Permission {\n const abiItem = getAbiItem({\n abi,\n args,\n name: functionName,\n } as GetAbiItemParameters);\n if (abiItem.type !== \"function\") {\n throw Error(`${functionName} not found in abi`);\n }\n const functionSelector = getFunctionSelector(abiItem);\n let paramRules: ParamRules[] = [];\n if (args && Array.isArray(args)) {\n paramRules = (args as CombinedArgs<AbiFunction[\"inputs\"]>)\n .map(\n (arg, i) =>\n arg && {\n param: pad(\n isHex(arg.value)\n ? arg.value\n : toHex(arg.value as Parameters<typeof toHex>[0]),\n { size: 32 }\n ),\n offset: i * 32,\n condition: arg.operator,\n }\n )\n .filter((rule) => rule) as ParamRules[];\n }\n return {\n sig: functionSelector,\n rules: paramRules,\n target,\n valueLimit: valueLimit ?? 0n,\n operation: operation ?? Operation.Call,\n };\n}\n\nexport class SessionKeyValidator extends KernelBaseValidator {\n protected sessionKey: SmartAccountSigner;\n sessionKeyData: SessionKeyData;\n merkleTree: MerkleTree;\n\n constructor(params: SessionKeyValidatorParams) {\n super(params);\n this.sessionKey = params.sessionKey;\n this.sessionKeyData = {\n ...params.sessionKeyData,\n validAfter: params.sessionKeyData.validAfter ?? 0,\n validUntil: params.sessionKeyData.validUntil ?? 0,\n paymaster: params.sessionKeyData.paymaster ?? zeroAddress,\n };\n this.sessionKeyData.permissions = this.sessionKeyData.permissions?.map(\n (perm, index) => ({\n ...perm,\n valueLimit: perm.valueLimit ?? 0n,\n sig: perm.sig ?? pad(\"0x\", { size: 4 }),\n rules: perm.rules ?? [],\n index,\n executionRule: perm.executionRule ?? {\n validAfter: 0,\n interval: 0,\n runs: 0,\n },\n operation: perm.operation ?? Operation.Call,\n })\n );\n this.merkleTree = this.getMerkleTree();\n this.selector =\n params.selector ??\n getFunctionSelector(\"execute(address, uint256, bytes, uint8)\");\n this.executor = params.executor ?? zeroAddress;\n this.mode = params.mode ?? ValidatorMode.plugin;\n }\n\n public static async init(\n params: SessionKeyValidatorParams\n ): Promise<SessionKeyValidator> {\n const chainId = await getChainId(params.projectId);\n if (!chainId) {\n throw new Error(\"ChainId not found\");\n }\n const chain = getChain(chainId);\n const instance = new SessionKeyValidator({ ...params, chain });\n return instance;\n }\n\n shouldDelegateViaFallback(): boolean {\n return this.merkleTree.getHexRoot() === pad(\"0x00\", { size: 32 });\n }\n\n findMatchingPermissions(\n callData: Hex\n ): Permission | Permission[] | undefined {\n try {\n const { functionName, args } = decodeFunctionData({\n abi: KernelAccountAbi,\n data: callData,\n });\n\n if (functionName !== \"execute\" && functionName !== \"executeBatch\")\n return undefined;\n if (functionName === \"execute\") {\n const [to, value, data] = args;\n return this.filterPermissions([to], [data], [value])?.[0];\n } else if (functionName === \"executeBatch\") {\n let targets: Hex[] = [],\n values: bigint[] = [],\n dataArray: Hex[] = [];\n args[0].forEach((arg) => {\n targets.push(arg.to);\n values.push(arg.value);\n dataArray.push(arg.data);\n });\n return this.filterPermissions(targets, dataArray, values);\n } else {\n throw Error(\"Invalid function\");\n }\n } catch (error) {\n return undefined;\n }\n }\n\n private filterPermissions(\n targets: Address[],\n dataArray: Hex[],\n values: bigint[]\n ): Permission[] | undefined {\n if (\n targets.length !== dataArray.length ||\n targets.length !== values.length\n ) {\n throw Error(\"Invalid arguments\");\n }\n const filteredPermissions = targets.map((target, index) => {\n const permissionsList = this.sessionKeyData.permissions;\n if (!permissionsList || !permissionsList.length) return undefined;\n\n const targetToMatch = target.toLowerCase();\n\n // Filter permissions by target\n let targetPermissions = permissionsList.filter(\n (permission) =>\n permission.target.toLowerCase() === targetToMatch ||\n permission.target.toLowerCase() === zeroAddress.toLowerCase()\n );\n\n if (!targetPermissions.length) return undefined;\n\n const operationPermissions = this.filterByOperation(\n targetPermissions,\n // [TODO]: Check if we need to pass operation from userOp after Kernel v2.3 in\n Operation.Call\n );\n\n if (!operationPermissions.length) return undefined;\n\n const signaturePermissions = this.filterBySignature(\n targetPermissions,\n dataArray[index].slice(0, 10).toLowerCase()\n );\n\n const valueLimitPermissions = signaturePermissions.filter(\n (permission) => (permission.valueLimit ?? 0n) >= values[index]\n );\n\n if (!valueLimitPermissions.length) return undefined;\n\n const sortedPermissions = valueLimitPermissions.sort((a, b) => {\n if ((b.valueLimit ?? 0n) > (a.valueLimit ?? 0n)) {\n return 1;\n } else if ((b.valueLimit ?? 0n) < (a.valueLimit ?? 0n)) {\n return -1;\n } else {\n return 0;\n }\n });\n\n return this.findPermissionByRule(sortedPermissions, dataArray[index]);\n });\n return filteredPermissions.every((permission) => permission !== undefined)\n ? (filteredPermissions as Permission[])\n : undefined;\n }\n\n private filterByOperation(\n permissions: Permission[],\n operation: Operation\n ): Permission[] {\n return permissions.filter(\n (permission) =>\n permission.operation === operation || Operation.Call === operation\n );\n }\n\n private filterBySignature(\n permissions: Permission[],\n signature: string\n ): Permission[] {\n return permissions.filter(\n (permission) =>\n (permission.sig ?? pad(\"0x\", { size: 4 })).toLowerCase() === signature\n );\n }\n\n private findPermissionByRule(\n permissions: Permission[],\n data: string\n ): Permission | undefined {\n return permissions.find((permission) => {\n for (const rule of permission.rules ?? []) {\n const dataParam: Hex = this.getFormattedHex(\n \"0x\" + data.slice(10 + rule.offset * 2, 10 + rule.offset * 2 + 64)\n );\n const ruleParam: Hex = this.getFormattedHex(rule.param);\n\n if (!this.evaluateRuleCondition(dataParam, ruleParam, rule.condition)) {\n return false;\n }\n }\n return true;\n });\n }\n\n private getFormattedHex(value: string): Hex {\n return pad(isHex(value) ? value : toHex(value), {\n size: 32,\n }).toLowerCase() as Hex;\n }\n\n private evaluateRuleCondition(\n dataParam: Hex,\n ruleParam: Hex,\n condition: ParamOperator\n ): boolean {\n switch (condition) {\n case ParamOperator.EQUAL:\n return dataParam === ruleParam;\n case ParamOperator.GREATER_THAN:\n return dataParam > ruleParam;\n case ParamOperator.LESS_THAN:\n return dataParam < ruleParam;\n case ParamOperator.GREATER_THAN_OR_EQUAL:\n return dataParam >= ruleParam;\n case ParamOperator.LESS_THAN_OR_EQUAL:\n return dataParam <= ruleParam;\n case ParamOperator.NOT_EQUAL:\n return dataParam !== ruleParam;\n default:\n return false;\n }\n }\n\n getMerkleTree(): MerkleTree {\n const permissionPacked = this.sessionKeyData.permissions?.map(\n (permission) => this.encodePermissionData(permission)\n );\n\n // Having one leaf returns empty array in getProof(). To hack it we push the leaf twice\n // issue - https://github.com/merkletreejs/merkletreejs/issues/58\n if (permissionPacked && permissionPacked.length === 1)\n permissionPacked.push(permissionPacked[0]);\n\n return permissionPacked && permissionPacked.length !== 0\n ? new MerkleTree(permissionPacked, keccak256, {\n hashLeaves: true,\n sortPairs: true,\n })\n : new MerkleTree([pad(\"0x00\", { size: 32 })], keccak256, {\n hashLeaves: false,\n complete: true,\n });\n }\n\n encodePermissionData(\n permission: Permission | Permission[],\n merkleProof?: string[] | string[][]\n ): Hex {\n let permissionParam = {\n components: [\n {\n name: \"index\",\n type: \"uint32\",\n },\n {\n name: \"target\",\n type: \"address\",\n },\n {\n name: \"sig\",\n type: \"bytes4\",\n },\n {\n name: \"valueLimit\",\n type: \"uint256\",\n },\n {\n components: [\n {\n name: \"offset\",\n type: \"uint256\",\n },\n {\n internalType: \"enum ParamCondition\",\n name: \"condition\",\n type: \"uint8\",\n },\n {\n name: \"param\",\n type: \"bytes32\",\n },\n ],\n name: \"rules\",\n type: \"tuple[]\",\n },\n {\n components: [\n {\n name: \"interval\",\n type: \"uint48\",\n },\n {\n name: \"runs\",\n type: \"uint48\",\n },\n {\n internalType: \"ValidAfter\",\n name: \"validAfter\",\n type: \"uint48\",\n },\n ],\n name: \"executionRule\",\n type: \"tuple\",\n },\n {\n internalType: \"enum Operation\",\n name: \"operation\",\n type: \"uint8\",\n },\n ],\n name: \"permission\",\n type: Array.isArray(permission) ? \"tuple[]\" : \"tuple\",\n };\n let params;\n let values;\n if (merkleProof) {\n params = [\n permissionParam,\n {\n name: \"merkleProof\",\n type: Array.isArray(merkleProof[0]) ? \"bytes32[][]\" : \"bytes32[]\",\n },\n ];\n values = [permission, merkleProof];\n } else {\n params = [permissionParam];\n values = [permission];\n }\n return encodeAbiParameters(params, values);\n }\n\n getSessionData(): SessionKeyParams {\n if (!this.selector || !this.executor) {\n throw Error(\"Plugin Validator data params uninitialised\");\n }\n return {\n selector: this.selector,\n executor: this.executor,\n validUntil: this.validUntil,\n validAfter: this.validAfter,\n sessionKeyData: this.sessionKeyData,\n enableSignature: this.enableSignature,\n };\n }\n\n async signer(): Promise<SmartAccountSigner> {\n return await Promise.resolve(this.sessionKey);\n }\n\n async getSessionNonces(\n kernelAccountAddress: Address\n ): Promise<SessionNonces> {\n if (!this.publicClient) {\n throw new Error(\"Validator uninitialized: PublicClient missing\");\n }\n const nonce = await this.publicClient.readContract({\n abi: SessionKeyValidatorAbi,\n address: this.validatorAddress,\n functionName: \"nonces\",\n args: [kernelAccountAddress],\n });\n return { lastNonce: nonce[0], invalidNonce: nonce[1] };\n }\n\n async getEnableData(\n kernelAccountAddress?: Address,\n enabledLastNonce?: bigint\n ): Promise<Hex> {\n if (!this.merkleTree) {\n throw Error(\"SessionKeyValidator: MerkleTree not generated\");\n }\n if (!kernelAccountAddress) {\n throw Error(\"SessionKeyValidator: Kernel account address not provided\");\n }\n const lastNonce =\n enabledLastNonce ??\n (await this.getSessionNonces(kernelAccountAddress)).lastNonce + 1n;\n return concat([\n await this.sessionKey.getAddress(),\n pad(this.merkleTree.getHexRoot() as Hex, { size: 32 }),\n pad(toHex(this.sessionKeyData.validAfter), { size: 6 }),\n pad(toHex(this.sessionKeyData.validUntil), { size: 6 }),\n this.sessionKeyData.paymaster!,\n pad(toHex(lastNonce), { size: 32 }),\n ]);\n }\n\n async isPluginEnabled(\n kernelAccountAddress: Address,\n selector: Hex\n ): Promise<boolean> {\n if (!this.publicClient) {\n throw new Error(\"Validator uninitialized: PublicClient missing\");\n }\n const execDetail = await this.publicClient.readContract({\n abi: KernelAccountAbi,\n address: kernelAccountAddress,\n functionName: \"getExecution\",\n args: [selector],\n });\n const enableData = await this.publicClient.readContract({\n abi: SessionKeyValidatorAbi,\n address: this.validatorAddress,\n functionName: \"sessionData\",\n args: [await this.sessionKey.getAddress(), kernelAccountAddress],\n });\n const enableDataHex = concatHex([\n await this.sessionKey.getAddress(),\n pad(enableData[0], { size: 32 }),\n pad(toHex(enableData[1]), { size: 6 }),\n pad(toHex(enableData[2]), { size: 6 }),\n enableData[3],\n pad(toHex(enableData[4]), { size: 32 }),\n ]);\n return (\n execDetail.validator.toLowerCase() ===\n this.validatorAddress.toLowerCase() &&\n enableDataHex.toLowerCase() ===\n (\n await this.getEnableData(kernelAccountAddress, enableData[4])\n ).toLowerCase()\n );\n }\n\n async getDummyUserOpSignature(callData: Hex): Promise<Hex> {\n return concatHex([\n await this.sessionKey.getAddress(),\n DUMMY_ECDSA_SIG,\n this.getEncodedPermissionProofData(callData),\n ]);\n }\n\n private getEncodedPermissionProofData(callData: Hex): Hex {\n const matchingPermission = this.findMatchingPermissions(callData);\n if (!matchingPermission && !this.shouldDelegateViaFallback()) {\n throw Error(\n \"SessionKeyValidator: No matching permission found for the userOp\"\n );\n }\n const encodedPermissionData =\n this.sessionKeyData.permissions &&\n this.sessionKeyData.permissions.length !== 0 &&\n matchingPermission\n ? this.encodePermissionData(matchingPermission)\n : \"0x\";\n let merkleProof: string[] | string[][] = [];\n if (Array.isArray(matchingPermission)) {\n let encodedPerms = matchingPermission.map((permission) =>\n keccak256(this.encodePermissionData(permission))\n );\n merkleProof = encodedPerms.map((perm) =>\n this.merkleTree.getHexProof(perm)\n );\n } else if (matchingPermission) {\n merkleProof = this.merkleTree.getHexProof(\n keccak256(encodedPermissionData)\n );\n }\n return this.sessionKeyData.permissions &&\n this.sessionKeyData.permissions.length !== 0 &&\n matchingPermission\n ? this.encodePermissionData(matchingPermission, merkleProof)\n : \"0x\";\n }\n\n encodeEnable(sessionKeyEnableData: Hex): Hex {\n return encodeFunctionData({\n abi: SessionKeyValidatorAbi,\n functionName: \"enable\",\n args: [sessionKeyEnableData],\n });\n }\n\n encodeDisable(sessionKey: Hex): Hex {\n return encodeFunctionData({\n abi: SessionKeyValidatorAbi,\n functionName: \"disable\",\n args: [sessionKey],\n });\n }\n\n async signMessage(message: string | Uint8Array): Promise<Hex> {\n return await this.sessionKey.signMessage(message);\n }\n\n async signTypedData(params: SignTypedDataParams): Promise<Hex> {\n return fixSignedData(await this.sessionKey.signTypedData(params));\n }\n\n async signUserOp(userOp: UserOperationRequest): Promise<Hex> {\n if (!this.chain) {\n throw new Error(\"Validator uninitialized\");\n }\n const hash = getUserOperationHash(\n {\n ...userOp,\n signature: \"0x\",\n },\n this.entryPointAddress,\n BigInt(this.chain.id)\n );\n const formattedMessage = typeof hash === \"string\" ? toBytes(hash) : hash;\n\n const signature = concat([\n await this.sessionKey.getAddress(),\n await this.sessionKey.signMessage(formattedMessage),\n this.getEncodedPermissionProofData(userOp.callData),\n ]);\n return signature;\n }\n}\n"]}