@zerodev/sdk 5.3.25 → 5.4.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 (320) hide show
  1. package/_cjs/accounts/index.js.map +1 -1
  2. package/_cjs/accounts/kernel/createKernelAccount.js +171 -199
  3. package/_cjs/accounts/kernel/createKernelAccount.js.map +1 -1
  4. package/_cjs/accounts/kernel/utils/account/ep0_6/encodeCallData.js +13 -9
  5. package/_cjs/accounts/kernel/utils/account/ep0_6/encodeCallData.js.map +1 -1
  6. package/_cjs/accounts/kernel/utils/account/ep0_6/encodeDeployCallData.js.map +1 -1
  7. package/_cjs/accounts/kernel/utils/account/ep0_6/encodeModuleInstallCallData.js +18 -17
  8. package/_cjs/accounts/kernel/utils/account/ep0_6/encodeModuleInstallCallData.js.map +1 -1
  9. package/_cjs/accounts/kernel/utils/account/ep0_7/encodeCallData.js +12 -8
  10. package/_cjs/accounts/kernel/utils/account/ep0_7/encodeCallData.js.map +1 -1
  11. package/_cjs/accounts/kernel/utils/account/ep0_7/encodeDeployCallData.js.map +1 -1
  12. package/_cjs/accounts/kernel/utils/common/accountMetadata.js.map +1 -1
  13. package/_cjs/accounts/kernel/utils/common/getActionSelector.js +2 -2
  14. package/_cjs/accounts/kernel/utils/common/getActionSelector.js.map +1 -1
  15. package/_cjs/accounts/kernel/utils/ep0_6/encodeExecuteBatchCall.js +2 -2
  16. package/_cjs/accounts/kernel/utils/ep0_6/encodeExecuteBatchCall.js.map +1 -1
  17. package/_cjs/accounts/kernel/utils/ep0_6/encodeExecuteDelegateCall.js +1 -1
  18. package/_cjs/accounts/kernel/utils/ep0_6/encodeExecuteDelegateCall.js.map +1 -1
  19. package/_cjs/accounts/kernel/utils/ep0_6/encodeExecuteSingleCall.js +1 -1
  20. package/_cjs/accounts/kernel/utils/ep0_6/encodeExecuteSingleCall.js.map +1 -1
  21. package/_cjs/accounts/kernel/utils/ep0_7/encodeExecuteBatchCall.js +2 -2
  22. package/_cjs/accounts/kernel/utils/ep0_7/encodeExecuteBatchCall.js.map +1 -1
  23. package/_cjs/accounts/kernel/utils/ep0_7/encodeExecuteCall.js +2 -2
  24. package/_cjs/accounts/kernel/utils/ep0_7/encodeExecuteCall.js.map +1 -1
  25. package/_cjs/accounts/kernel/utils/plugins/ep0_6/getEncodedPluginsData.js.map +1 -1
  26. package/_cjs/accounts/kernel/utils/plugins/ep0_6/getPluginsEnableTypedData.js.map +1 -1
  27. package/_cjs/accounts/kernel/utils/plugins/ep0_7/getPluginsEnableTypedData.js.map +1 -1
  28. package/_cjs/accounts/kernel/v1/createKernelAccountV1.js +81 -94
  29. package/_cjs/accounts/kernel/v1/createKernelAccountV1.js.map +1 -1
  30. package/_cjs/accounts/kernel/v2/createKernelAccountV0_2.js +104 -110
  31. package/_cjs/accounts/kernel/v2/createKernelAccountV0_2.js.map +1 -1
  32. package/_cjs/accounts/utils/getCustomNonceKeyFromString.js +2 -4
  33. package/_cjs/accounts/utils/getCustomNonceKeyFromString.js.map +1 -1
  34. package/_cjs/accounts/utils/index.js +1 -7
  35. package/_cjs/accounts/utils/index.js.map +1 -1
  36. package/_cjs/accounts/utils/multisend.js.map +1 -1
  37. package/_cjs/accounts/utils/toKernelPluginManager.js +14 -16
  38. package/_cjs/accounts/utils/toKernelPluginManager.js.map +1 -1
  39. package/_cjs/actions/account-client/changeSudoValidator.js +27 -21
  40. package/_cjs/actions/account-client/changeSudoValidator.js.map +1 -1
  41. package/_cjs/actions/account-client/getKernelV3ModuleCurrentNonce.js +8 -6
  42. package/_cjs/actions/account-client/getKernelV3ModuleCurrentNonce.js.map +1 -1
  43. package/_cjs/actions/account-client/invalidateNonce.js +20 -15
  44. package/_cjs/actions/account-client/invalidateNonce.js.map +1 -1
  45. package/_cjs/actions/account-client/sendTransaction.js +42 -0
  46. package/_cjs/actions/account-client/sendTransaction.js.map +1 -0
  47. package/_cjs/actions/account-client/signMessage.js +15 -0
  48. package/_cjs/actions/account-client/signMessage.js.map +1 -0
  49. package/_cjs/actions/account-client/signTypedData.js +32 -0
  50. package/_cjs/actions/account-client/signTypedData.js.map +1 -0
  51. package/_cjs/actions/account-client/signUserOperation.js +7 -5
  52. package/_cjs/actions/account-client/signUserOperation.js.map +1 -1
  53. package/_cjs/actions/account-client/uninstallPlugin.js +13 -12
  54. package/_cjs/actions/account-client/uninstallPlugin.js.map +1 -1
  55. package/_cjs/actions/account-client/writeContract.js +21 -0
  56. package/_cjs/actions/account-client/writeContract.js.map +1 -0
  57. package/_cjs/actions/index.js +13 -3
  58. package/_cjs/actions/index.js.map +1 -1
  59. package/_cjs/actions/paymaster/estimateGasInERC20.js +4 -4
  60. package/_cjs/actions/paymaster/estimateGasInERC20.js.map +1 -1
  61. package/_cjs/actions/paymaster/sponsorUserOperation.js +4 -6
  62. package/_cjs/actions/paymaster/sponsorUserOperation.js.map +1 -1
  63. package/_cjs/actions/public/getAccountNonce.js +38 -0
  64. package/_cjs/actions/public/getAccountNonce.js.map +1 -0
  65. package/_cjs/actions/public/getSenderAddress.js +166 -0
  66. package/_cjs/actions/public/getSenderAddress.js.map +1 -0
  67. package/_cjs/actions/public/index.js +8 -0
  68. package/_cjs/actions/public/index.js.map +1 -0
  69. package/_cjs/clients/decorators/kernel.js +17 -27
  70. package/_cjs/clients/decorators/kernel.js.map +1 -1
  71. package/_cjs/clients/fallbackKernelAccountClient.js.map +1 -1
  72. package/_cjs/clients/kernelAccountClient.js +27 -45
  73. package/_cjs/clients/kernelAccountClient.js.map +1 -1
  74. package/_cjs/clients/paymasterClient.js +7 -18
  75. package/_cjs/clients/paymasterClient.js.map +1 -1
  76. package/_cjs/errors/index.js +18 -0
  77. package/_cjs/errors/index.js.map +1 -0
  78. package/_cjs/gasTokenAddresses.js +2 -1
  79. package/_cjs/gasTokenAddresses.js.map +1 -1
  80. package/_cjs/index.js.map +1 -1
  81. package/_cjs/providers/KernelEIP1193Provider.js.map +1 -1
  82. package/_cjs/types/kernel.js.map +1 -1
  83. package/_cjs/utils.js +27 -7
  84. package/_cjs/utils.js.map +1 -1
  85. package/_esm/accounts/index.js.map +1 -1
  86. package/_esm/accounts/kernel/createKernelAccount.js +181 -217
  87. package/_esm/accounts/kernel/createKernelAccount.js.map +1 -1
  88. package/_esm/accounts/kernel/utils/account/ep0_6/encodeCallData.js +13 -9
  89. package/_esm/accounts/kernel/utils/account/ep0_6/encodeCallData.js.map +1 -1
  90. package/_esm/accounts/kernel/utils/account/ep0_6/encodeDeployCallData.js.map +1 -1
  91. package/_esm/accounts/kernel/utils/account/ep0_6/encodeModuleInstallCallData.js +18 -17
  92. package/_esm/accounts/kernel/utils/account/ep0_6/encodeModuleInstallCallData.js.map +1 -1
  93. package/_esm/accounts/kernel/utils/account/ep0_7/encodeCallData.js +12 -8
  94. package/_esm/accounts/kernel/utils/account/ep0_7/encodeCallData.js.map +1 -1
  95. package/_esm/accounts/kernel/utils/account/ep0_7/encodeDeployCallData.js.map +1 -1
  96. package/_esm/accounts/kernel/utils/common/accountMetadata.js.map +1 -1
  97. package/_esm/accounts/kernel/utils/common/getActionSelector.js +2 -2
  98. package/_esm/accounts/kernel/utils/common/getActionSelector.js.map +1 -1
  99. package/_esm/accounts/kernel/utils/ep0_6/encodeExecuteBatchCall.js +2 -2
  100. package/_esm/accounts/kernel/utils/ep0_6/encodeExecuteBatchCall.js.map +1 -1
  101. package/_esm/accounts/kernel/utils/ep0_6/encodeExecuteDelegateCall.js +1 -1
  102. package/_esm/accounts/kernel/utils/ep0_6/encodeExecuteDelegateCall.js.map +1 -1
  103. package/_esm/accounts/kernel/utils/ep0_6/encodeExecuteSingleCall.js +1 -1
  104. package/_esm/accounts/kernel/utils/ep0_6/encodeExecuteSingleCall.js.map +1 -1
  105. package/_esm/accounts/kernel/utils/ep0_7/encodeExecuteBatchCall.js +2 -2
  106. package/_esm/accounts/kernel/utils/ep0_7/encodeExecuteBatchCall.js.map +1 -1
  107. package/_esm/accounts/kernel/utils/ep0_7/encodeExecuteCall.js +2 -2
  108. package/_esm/accounts/kernel/utils/ep0_7/encodeExecuteCall.js.map +1 -1
  109. package/_esm/accounts/kernel/utils/plugins/ep0_6/getEncodedPluginsData.js.map +1 -1
  110. package/_esm/accounts/kernel/utils/plugins/ep0_6/getPluginsEnableTypedData.js.map +1 -1
  111. package/_esm/accounts/kernel/utils/plugins/ep0_7/getPluginsEnableTypedData.js.map +1 -1
  112. package/_esm/accounts/kernel/v1/createKernelAccountV1.js +91 -98
  113. package/_esm/accounts/kernel/v1/createKernelAccountV1.js.map +1 -1
  114. package/_esm/accounts/kernel/v2/createKernelAccountV0_2.js +105 -118
  115. package/_esm/accounts/kernel/v2/createKernelAccountV0_2.js.map +1 -1
  116. package/_esm/accounts/utils/getCustomNonceKeyFromString.js +2 -4
  117. package/_esm/accounts/utils/getCustomNonceKeyFromString.js.map +1 -1
  118. package/_esm/accounts/utils/index.js +0 -5
  119. package/_esm/accounts/utils/index.js.map +1 -1
  120. package/_esm/accounts/utils/multisend.js.map +1 -1
  121. package/_esm/accounts/utils/toKernelPluginManager.js +14 -16
  122. package/_esm/accounts/utils/toKernelPluginManager.js.map +1 -1
  123. package/_esm/actions/account-client/changeSudoValidator.js +23 -17
  124. package/_esm/actions/account-client/changeSudoValidator.js.map +1 -1
  125. package/_esm/actions/account-client/getKernelV3ModuleCurrentNonce.js +8 -6
  126. package/_esm/actions/account-client/getKernelV3ModuleCurrentNonce.js.map +1 -1
  127. package/_esm/actions/account-client/invalidateNonce.js +20 -15
  128. package/_esm/actions/account-client/invalidateNonce.js.map +1 -1
  129. package/_esm/actions/account-client/sendTransaction.js +85 -0
  130. package/_esm/actions/account-client/sendTransaction.js.map +1 -0
  131. package/_esm/actions/account-client/signMessage.js +58 -0
  132. package/_esm/actions/account-client/signMessage.js.map +1 -0
  133. package/_esm/actions/account-client/signTypedData.js +127 -0
  134. package/_esm/actions/account-client/signTypedData.js.map +1 -0
  135. package/_esm/actions/account-client/signUserOperation.js +7 -5
  136. package/_esm/actions/account-client/signUserOperation.js.map +1 -1
  137. package/_esm/actions/account-client/uninstallPlugin.js +10 -9
  138. package/_esm/actions/account-client/uninstallPlugin.js.map +1 -1
  139. package/_esm/actions/account-client/writeContract.js +18 -0
  140. package/_esm/actions/account-client/writeContract.js.map +1 -0
  141. package/_esm/actions/index.js +6 -1
  142. package/_esm/actions/index.js.map +1 -1
  143. package/_esm/actions/paymaster/estimateGasInERC20.js +3 -3
  144. package/_esm/actions/paymaster/estimateGasInERC20.js.map +1 -1
  145. package/_esm/actions/paymaster/sponsorUserOperation.js +3 -5
  146. package/_esm/actions/paymaster/sponsorUserOperation.js.map +1 -1
  147. package/_esm/actions/public/getAccountNonce.js +61 -0
  148. package/_esm/actions/public/getAccountNonce.js.map +1 -0
  149. package/_esm/actions/public/getSenderAddress.js +191 -0
  150. package/_esm/actions/public/getSenderAddress.js.map +1 -0
  151. package/_esm/actions/public/index.js +3 -0
  152. package/_esm/actions/public/index.js.map +1 -0
  153. package/_esm/clients/decorators/kernel.js +19 -28
  154. package/_esm/clients/decorators/kernel.js.map +1 -1
  155. package/_esm/clients/fallbackKernelAccountClient.js.map +1 -1
  156. package/_esm/clients/kernelAccountClient.js +28 -46
  157. package/_esm/clients/kernelAccountClient.js.map +1 -1
  158. package/_esm/clients/paymasterClient.js +8 -19
  159. package/_esm/clients/paymasterClient.js.map +1 -1
  160. package/_esm/errors/index.js +14 -0
  161. package/_esm/errors/index.js.map +1 -0
  162. package/_esm/gasTokenAddresses.js +2 -1
  163. package/_esm/gasTokenAddresses.js.map +1 -1
  164. package/_esm/index.js.map +1 -1
  165. package/_esm/providers/KernelEIP1193Provider.js.map +1 -1
  166. package/_esm/types/kernel.js.map +1 -1
  167. package/_esm/utils.js +29 -7
  168. package/_esm/utils.js.map +1 -1
  169. package/_types/accounts/index.d.ts +2 -2
  170. package/_types/accounts/index.d.ts.map +1 -1
  171. package/_types/accounts/kernel/createKernelAccount.d.ts +21 -18
  172. package/_types/accounts/kernel/createKernelAccount.d.ts.map +1 -1
  173. package/_types/accounts/kernel/utils/account/ep0_6/encodeCallData.d.ts +8 -3
  174. package/_types/accounts/kernel/utils/account/ep0_6/encodeCallData.d.ts.map +1 -1
  175. package/_types/accounts/kernel/utils/account/ep0_6/encodeDeployCallData.d.ts +3 -2
  176. package/_types/accounts/kernel/utils/account/ep0_6/encodeDeployCallData.d.ts.map +1 -1
  177. package/_types/accounts/kernel/utils/account/ep0_6/encodeModuleInstallCallData.d.ts +0 -1
  178. package/_types/accounts/kernel/utils/account/ep0_6/encodeModuleInstallCallData.d.ts.map +1 -1
  179. package/_types/accounts/kernel/utils/account/ep0_7/encodeCallData.d.ts +8 -3
  180. package/_types/accounts/kernel/utils/account/ep0_7/encodeCallData.d.ts.map +1 -1
  181. package/_types/accounts/kernel/utils/account/ep0_7/encodeDeployCallData.d.ts +3 -2
  182. package/_types/accounts/kernel/utils/account/ep0_7/encodeDeployCallData.d.ts.map +1 -1
  183. package/_types/accounts/kernel/utils/common/accountMetadata.d.ts +2 -2
  184. package/_types/accounts/kernel/utils/common/accountMetadata.d.ts.map +1 -1
  185. package/_types/accounts/kernel/utils/common/getActionSelector.d.ts +1 -1
  186. package/_types/accounts/kernel/utils/common/getActionSelector.d.ts.map +1 -1
  187. package/_types/accounts/kernel/utils/ep0_6/encodeExecuteBatchCall.d.ts +1 -1
  188. package/_types/accounts/kernel/utils/ep0_6/encodeExecuteBatchCall.d.ts.map +1 -1
  189. package/_types/accounts/kernel/utils/ep0_7/encodeExecuteBatchCall.d.ts +1 -1
  190. package/_types/accounts/kernel/utils/ep0_7/encodeExecuteBatchCall.d.ts.map +1 -1
  191. package/_types/accounts/kernel/utils/plugins/ep0_6/getEncodedPluginsData.d.ts +2 -3
  192. package/_types/accounts/kernel/utils/plugins/ep0_6/getEncodedPluginsData.d.ts.map +1 -1
  193. package/_types/accounts/kernel/utils/plugins/ep0_6/getPluginsEnableTypedData.d.ts +4 -5
  194. package/_types/accounts/kernel/utils/plugins/ep0_6/getPluginsEnableTypedData.d.ts.map +1 -1
  195. package/_types/accounts/kernel/utils/plugins/ep0_7/getPluginsEnableTypedData.d.ts +2 -3
  196. package/_types/accounts/kernel/utils/plugins/ep0_7/getPluginsEnableTypedData.d.ts.map +1 -1
  197. package/_types/accounts/kernel/utils/types.d.ts +2 -2
  198. package/_types/accounts/kernel/utils/types.d.ts.map +1 -1
  199. package/_types/accounts/kernel/v1/createKernelAccountV1.d.ts +18 -9
  200. package/_types/accounts/kernel/v1/createKernelAccountV1.d.ts.map +1 -1
  201. package/_types/accounts/kernel/v2/createKernelAccountV0_2.d.ts +9 -7
  202. package/_types/accounts/kernel/v2/createKernelAccountV0_2.d.ts.map +1 -1
  203. package/_types/accounts/utils/getCustomNonceKeyFromString.d.ts +2 -2
  204. package/_types/accounts/utils/getCustomNonceKeyFromString.d.ts.map +1 -1
  205. package/_types/accounts/utils/index.d.ts +0 -2
  206. package/_types/accounts/utils/index.d.ts.map +1 -1
  207. package/_types/accounts/utils/multisend.d.ts +2 -2
  208. package/_types/accounts/utils/multisend.d.ts.map +1 -1
  209. package/_types/accounts/utils/toKernelPluginManager.d.ts +4 -4
  210. package/_types/accounts/utils/toKernelPluginManager.d.ts.map +1 -1
  211. package/_types/actions/account-client/changeSudoValidator.d.ts +5 -11
  212. package/_types/actions/account-client/changeSudoValidator.d.ts.map +1 -1
  213. package/_types/actions/account-client/getKernelV3ModuleCurrentNonce.d.ts +2 -5
  214. package/_types/actions/account-client/getKernelV3ModuleCurrentNonce.d.ts.map +1 -1
  215. package/_types/actions/account-client/invalidateNonce.d.ts +4 -6
  216. package/_types/actions/account-client/invalidateNonce.d.ts.map +1 -1
  217. package/_types/actions/account-client/sendTransaction.d.ts +50 -0
  218. package/_types/actions/account-client/sendTransaction.d.ts.map +1 -0
  219. package/_types/actions/account-client/signMessage.d.ts +50 -0
  220. package/_types/actions/account-client/signMessage.d.ts.map +1 -0
  221. package/_types/actions/account-client/signTypedData.d.ts +104 -0
  222. package/_types/actions/account-client/signTypedData.d.ts.map +1 -0
  223. package/_types/actions/account-client/signUserOperation.d.ts +4 -6
  224. package/_types/actions/account-client/signUserOperation.d.ts.map +1 -1
  225. package/_types/actions/account-client/uninstallPlugin.d.ts +5 -7
  226. package/_types/actions/account-client/uninstallPlugin.d.ts.map +1 -1
  227. package/_types/actions/account-client/writeContract.d.ts +4 -0
  228. package/_types/actions/account-client/writeContract.d.ts.map +1 -0
  229. package/_types/actions/index.d.ts +6 -1
  230. package/_types/actions/index.d.ts.map +1 -1
  231. package/_types/actions/paymaster/estimateGasInERC20.d.ts +1305 -4
  232. package/_types/actions/paymaster/estimateGasInERC20.d.ts.map +1 -1
  233. package/_types/actions/paymaster/sponsorUserOperation.d.ts +1314 -10
  234. package/_types/actions/paymaster/sponsorUserOperation.d.ts.map +1 -1
  235. package/_types/actions/public/getAccountNonce.d.ts +34 -0
  236. package/_types/actions/public/getAccountNonce.d.ts.map +1 -0
  237. package/_types/actions/public/getSenderAddress.d.ts +46 -0
  238. package/_types/actions/public/getSenderAddress.d.ts.map +1 -0
  239. package/_types/actions/public/index.d.ts +3 -0
  240. package/_types/actions/public/index.d.ts.map +1 -0
  241. package/_types/clients/decorators/kernel.d.ts +774 -20
  242. package/_types/clients/decorators/kernel.d.ts.map +1 -1
  243. package/_types/clients/fallbackKernelAccountClient.d.ts +255 -4
  244. package/_types/clients/fallbackKernelAccountClient.d.ts.map +1 -1
  245. package/_types/clients/kernelAccountClient.d.ts +34 -36
  246. package/_types/clients/kernelAccountClient.d.ts.map +1 -1
  247. package/_types/clients/paymasterClient.d.ts +10 -24
  248. package/_types/clients/paymasterClient.d.ts.map +1 -1
  249. package/_types/errors/index.d.ts +7 -0
  250. package/_types/errors/index.d.ts.map +1 -0
  251. package/_types/gasTokenAddresses.d.ts +1 -1
  252. package/_types/gasTokenAddresses.d.ts.map +1 -1
  253. package/_types/index.d.ts +1 -1
  254. package/_types/index.d.ts.map +1 -1
  255. package/_types/providers/KernelEIP1193Provider.d.ts +3 -4
  256. package/_types/providers/KernelEIP1193Provider.d.ts.map +1 -1
  257. package/_types/types/index.d.ts +1 -0
  258. package/_types/types/index.d.ts.map +1 -1
  259. package/_types/types/kernel.d.ts +25 -27
  260. package/_types/types/kernel.d.ts.map +1 -1
  261. package/_types/utils.d.ts +1310 -4
  262. package/_types/utils.d.ts.map +1 -1
  263. package/accounts/index.ts +5 -2
  264. package/accounts/kernel/createKernelAccount.ts +312 -357
  265. package/accounts/kernel/utils/account/ep0_6/encodeCallData.ts +22 -12
  266. package/accounts/kernel/utils/account/ep0_6/encodeDeployCallData.ts +6 -3
  267. package/accounts/kernel/utils/account/ep0_6/encodeModuleInstallCallData.ts +22 -19
  268. package/accounts/kernel/utils/account/ep0_7/encodeCallData.ts +21 -11
  269. package/accounts/kernel/utils/account/ep0_7/encodeDeployCallData.ts +6 -3
  270. package/accounts/kernel/utils/common/accountMetadata.ts +2 -7
  271. package/accounts/kernel/utils/common/getActionSelector.ts +3 -3
  272. package/accounts/kernel/utils/ep0_6/encodeExecuteBatchCall.ts +3 -3
  273. package/accounts/kernel/utils/ep0_6/encodeExecuteDelegateCall.ts +1 -1
  274. package/accounts/kernel/utils/ep0_6/encodeExecuteSingleCall.ts +1 -1
  275. package/accounts/kernel/utils/ep0_7/encodeExecuteBatchCall.ts +3 -3
  276. package/accounts/kernel/utils/ep0_7/encodeExecuteCall.ts +2 -2
  277. package/accounts/kernel/utils/plugins/ep0_6/getEncodedPluginsData.ts +2 -8
  278. package/accounts/kernel/utils/plugins/ep0_6/getPluginsEnableTypedData.ts +4 -10
  279. package/accounts/kernel/utils/plugins/ep0_7/getPluginsEnableTypedData.ts +2 -8
  280. package/accounts/kernel/utils/types.ts +2 -2
  281. package/accounts/kernel/v1/createKernelAccountV1.ts +147 -174
  282. package/accounts/kernel/v2/createKernelAccountV0_2.ts +135 -179
  283. package/accounts/utils/getCustomNonceKeyFromString.ts +3 -6
  284. package/accounts/utils/index.ts +0 -9
  285. package/accounts/utils/multisend.ts +5 -2
  286. package/accounts/utils/toKernelPluginManager.ts +23 -27
  287. package/actions/account-client/changeSudoValidator.ts +61 -85
  288. package/actions/account-client/getKernelV3ModuleCurrentNonce.ts +12 -51
  289. package/actions/account-client/invalidateNonce.ts +38 -67
  290. package/actions/account-client/sendTransaction.ts +134 -0
  291. package/actions/account-client/signMessage.ts +75 -0
  292. package/actions/account-client/signTypedData.ts +159 -0
  293. package/actions/account-client/signUserOperation.ts +31 -63
  294. package/actions/account-client/uninstallPlugin.ts +35 -54
  295. package/actions/account-client/writeContract.ts +72 -0
  296. package/actions/index.ts +15 -6
  297. package/actions/paymaster/estimateGasInERC20.ts +12 -8
  298. package/actions/paymaster/sponsorUserOperation.ts +52 -50
  299. package/actions/public/getAccountNonce.ts +77 -0
  300. package/actions/public/getSenderAddress.ts +276 -0
  301. package/actions/public/index.ts +9 -0
  302. package/clients/decorators/kernel.ts +363 -159
  303. package/clients/fallbackKernelAccountClient.ts +9 -11
  304. package/clients/kernelAccountClient.ts +142 -104
  305. package/clients/paymasterClient.ts +69 -43
  306. package/errors/index.ts +17 -0
  307. package/gasTokenAddresses.ts +3 -2
  308. package/index.ts +5 -2
  309. package/package.json +2 -3
  310. package/providers/KernelEIP1193Provider.ts +4 -7
  311. package/types/index.ts +2 -0
  312. package/types/kernel.ts +64 -63
  313. package/utils.ts +41 -13
  314. package/_cjs/actions/paymaster/sponsorUserOperationEip7677.js +0 -59
  315. package/_cjs/actions/paymaster/sponsorUserOperationEip7677.js.map +0 -1
  316. package/_esm/actions/paymaster/sponsorUserOperationEip7677.js +0 -58
  317. package/_esm/actions/paymaster/sponsorUserOperationEip7677.js.map +0 -1
  318. package/_types/actions/paymaster/sponsorUserOperationEip7677.d.ts +0 -16
  319. package/_types/actions/paymaster/sponsorUserOperationEip7677.d.ts.map +0 -1
  320. package/actions/paymaster/sponsorUserOperationEip7677.ts +0 -152
@@ -0,0 +1,134 @@
1
+ // Copied from: https://github.com/pimlicolabs/permissionless.js/blob/main/packages/permissionless/actions/smartAccount/sendTransaction.ts
2
+
3
+ import type {
4
+ Chain,
5
+ Client,
6
+ Hash,
7
+ SendTransactionParameters,
8
+ Transport
9
+ } from "viem"
10
+ import {
11
+ type SendUserOperationParameters,
12
+ type SmartAccount,
13
+ sendUserOperation,
14
+ waitForUserOperationReceipt
15
+ } from "viem/account-abstraction"
16
+ import { getAction, parseAccount } from "viem/utils"
17
+ import { AccountNotFoundError } from "../../errors"
18
+
19
+ /**
20
+ * Creates, signs, and sends a new transaction to the network.
21
+ * This function also allows you to sponsor this transaction if sender is a smartAccount
22
+ *
23
+ * - Docs: https://viem.sh/docs/actions/wallet/sendTransaction.html
24
+ * - Examples: https://stackblitz.com/github/wagmi-dev/viem/tree/main/examples/transactions/sending-transactions
25
+ * - JSON-RPC Methods:
26
+ * - JSON-RPC Accounts: [`eth_sendTransaction`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_sendtransaction)
27
+ * - Local Accounts: [`eth_sendRawTransaction`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_sendrawtransaction)
28
+ *
29
+ * @param client - Client to use
30
+ * @param parameters - {@link SendTransactionParameters}
31
+ * @returns The [Transaction](https://viem.sh/docs/glossary/terms.html#transaction) hash.
32
+ *
33
+ * @example
34
+ * import { createWalletClient, custom } from 'viem'
35
+ * import { mainnet } from 'viem/chains'
36
+ * import { sendTransaction } from 'viem/wallet'
37
+ *
38
+ * const client = createWalletClient({
39
+ * chain: mainnet,
40
+ * transport: custom(window.ethereum),
41
+ * })
42
+ * const hash = await sendTransaction(client, {
43
+ * account: '0xA0Cf798816D4b9b9866b5330EEa46a18382f251e',
44
+ * to: '0x70997970c51812dc3a010c7d01b50e0d17dc79c8',
45
+ * value: 1000000000000000000n,
46
+ * })
47
+ *
48
+ * @example
49
+ * // Account Hoisting
50
+ * import { createWalletClient, http } from 'viem'
51
+ * import { privateKeyToAccount } from 'viem/accounts'
52
+ * import { mainnet } from 'viem/chains'
53
+ * import { sendTransaction } from 'viem/wallet'
54
+ *
55
+ * const client = createWalletClient({
56
+ * account: privateKeyToAccount('0x…'),
57
+ * chain: mainnet,
58
+ * transport: http(),
59
+ * })
60
+ * const hash = await sendTransaction(client, {
61
+ * to: '0x70997970c51812dc3a010c7d01b50e0d17dc79c8',
62
+ * value: 1000000000000000000n,
63
+ * })
64
+ */
65
+ export async function sendTransaction<
66
+ account extends SmartAccount | undefined,
67
+ chain extends Chain | undefined,
68
+ accountOverride extends SmartAccount | undefined = undefined,
69
+ chainOverride extends Chain | undefined = Chain | undefined,
70
+ calls extends readonly unknown[] = readonly unknown[]
71
+ >(
72
+ client: Client<Transport, chain, account>,
73
+ args:
74
+ | SendTransactionParameters<chain, account, chainOverride>
75
+ | SendUserOperationParameters<account, accountOverride, calls>
76
+ ): Promise<Hash> {
77
+ let userOpHash: Hash
78
+
79
+ if ("to" in args) {
80
+ const {
81
+ account: account_ = client.account,
82
+ data,
83
+ maxFeePerGas,
84
+ maxPriorityFeePerGas,
85
+ to,
86
+ value,
87
+ nonce
88
+ } = args
89
+
90
+ if (!account_) {
91
+ throw new AccountNotFoundError({
92
+ docsPath: "/docs/actions/wallet/sendTransaction"
93
+ })
94
+ }
95
+
96
+ const account = parseAccount(account_) as SmartAccount
97
+
98
+ if (!to) throw new Error("Missing to address")
99
+
100
+ userOpHash = await getAction(
101
+ client,
102
+ sendUserOperation,
103
+ "sendUserOperation"
104
+ )({
105
+ calls: [
106
+ {
107
+ to,
108
+ value: value || BigInt(0),
109
+ data: data || "0x"
110
+ }
111
+ ],
112
+ account,
113
+ maxFeePerGas,
114
+ maxPriorityFeePerGas,
115
+ nonce: nonce ? BigInt(nonce) : undefined
116
+ })
117
+ } else {
118
+ userOpHash = await getAction(
119
+ client,
120
+ sendUserOperation,
121
+ "sendUserOperation"
122
+ )({ ...args } as SendUserOperationParameters<account, accountOverride>)
123
+ }
124
+
125
+ const userOperationReceipt = await getAction(
126
+ client,
127
+ waitForUserOperationReceipt,
128
+ "waitForUserOperationReceipt"
129
+ )({
130
+ hash: userOpHash
131
+ })
132
+
133
+ return userOperationReceipt?.receipt.transactionHash
134
+ }
@@ -0,0 +1,75 @@
1
+ // Copied from: https://github.com/pimlicolabs/permissionless.js/blob/main/packages/permissionless/actions/smartAccount/signMessage.ts
2
+
3
+ import type {
4
+ Chain,
5
+ Client,
6
+ SignMessageParameters,
7
+ SignMessageReturnType,
8
+ Transport
9
+ } from "viem"
10
+ import type { SmartAccount } from "viem/account-abstraction"
11
+ import { parseAccount } from "viem/utils"
12
+ import { AccountNotFoundError } from "../../errors"
13
+
14
+ /**
15
+ * Calculates an Ethereum-specific signature in [EIP-191 format](https://eips.ethereum.org/EIPS/eip-191): `keccak256("\x19Ethereum Signed Message:\n" + len(message) + message))`.
16
+ *
17
+ * - Docs: https://viem.sh/docs/actions/wallet/signMessage.html
18
+ * - JSON-RPC Methods:
19
+ * - JSON-RPC Accounts: [`personal_sign`](https://docs.metamask.io/guide/signing-data.html#personal-sign)
20
+ * - Local Accounts: Signs locally. No JSON-RPC request.
21
+ *
22
+ * With the calculated signature, you can:
23
+ * - use [`verifyMessage`](https://viem.sh/docs/utilities/verifyMessage.html) to verify the signature,
24
+ * - use [`recoverMessageAddress`](https://viem.sh/docs/utilities/recoverMessageAddress.html) to recover the signing address from a signature.
25
+ *
26
+ * @param client - Client to use
27
+ * @param parameters - {@link SignMessageParameters}
28
+ * @returns The signed message. {@link SignMessageReturnType}
29
+ *
30
+ * @example
31
+ * import { createWalletClient, custom } from 'viem'
32
+ * import { mainnet } from 'viem/chains'
33
+ * import { signMessage } from 'viem/wallet'
34
+ *
35
+ * const client = createWalletClient({
36
+ * chain: mainnet,
37
+ * transport: custom(window.ethereum),
38
+ * })
39
+ * const signature = await signMessage(client, {
40
+ * account: '0xA0Cf798816D4b9b9866b5330EEa46a18382f251e',
41
+ * message: 'hello world',
42
+ * })
43
+ *
44
+ * @example
45
+ * // Account Hoisting
46
+ * import { createWalletClient, custom } from 'viem'
47
+ * import { privateKeyToAccount } from 'viem/accounts'
48
+ * import { mainnet } from 'viem/chains'
49
+ * import { signMessage } from 'viem/wallet'
50
+ *
51
+ * const client = createWalletClient({
52
+ * account: privateKeyToAccount('0x…'),
53
+ * chain: mainnet,
54
+ * transport: custom(window.ethereum),
55
+ * })
56
+ * const signature = await signMessage(client, {
57
+ * message: 'hello world',
58
+ * })
59
+ */
60
+ export async function signMessage<TAccount extends SmartAccount | undefined>(
61
+ client: Client<Transport, Chain | undefined, TAccount>,
62
+ {
63
+ account: account_ = client.account,
64
+ message
65
+ }: SignMessageParameters<TAccount>
66
+ ): Promise<SignMessageReturnType> {
67
+ if (!account_)
68
+ throw new AccountNotFoundError({
69
+ docsPath: "/docs/actions/wallet/signMessage"
70
+ })
71
+
72
+ const account = parseAccount(account_) as SmartAccount
73
+
74
+ return account.signMessage({ message })
75
+ }
@@ -0,0 +1,159 @@
1
+ // Copied from: https://github.com/pimlicolabs/permissionless.js/blob/main/packages/permissionless/actions/smartAccount/signTypedData.ts
2
+
3
+ import {
4
+ type Chain,
5
+ type Client,
6
+ type SignTypedDataParameters,
7
+ type SignTypedDataReturnType,
8
+ type Transport,
9
+ type TypedData,
10
+ type TypedDataDefinition,
11
+ type TypedDataDomain,
12
+ getTypesForEIP712Domain,
13
+ validateTypedData
14
+ } from "viem"
15
+ import type { SmartAccount } from "viem/account-abstraction"
16
+ import { parseAccount } from "viem/utils"
17
+ import { AccountNotFoundError } from "../../errors"
18
+
19
+ /**
20
+ * Signs typed data and calculates an Ethereum-specific signature in [https://eips.ethereum.org/EIPS/eip-712](https://eips.ethereum.org/EIPS/eip-712): `sign(keccak256("\x19\x01" ‖ domainSeparator ‖ hashStruct(message)))`
21
+ *
22
+ * - Docs: https://viem.sh/docs/actions/wallet/signTypedData.html
23
+ * - JSON-RPC Methods:
24
+ * - JSON-RPC Accounts: [`eth_signTypedData_v4`](https://docs.metamask.io/guide/signing-data.html#signtypeddata-v4)
25
+ * - Local Accounts: Signs locally. No JSON-RPC request.
26
+ *
27
+ * @param client - Client to use
28
+ * @param parameters - {@link SignTypedDataParameters}
29
+ * @returns The signed data. {@link SignTypedDataReturnType}
30
+ *
31
+ * @example
32
+ * import { createWalletClient, custom } from 'viem'
33
+ * import { mainnet } from 'viem/chains'
34
+ * import { signTypedData } from 'viem/wallet'
35
+ *
36
+ * const client = createWalletClient({
37
+ * chain: mainnet,
38
+ * transport: custom(window.ethereum),
39
+ * })
40
+ * const signature = await signTypedData(client, {
41
+ * account: '0xA0Cf798816D4b9b9866b5330EEa46a18382f251e',
42
+ * domain: {
43
+ * name: 'Ether Mail',
44
+ * version: '1',
45
+ * chainId: 1,
46
+ * verifyingContract: '0xCcCCccccCCCCcCCCCCCcCcCccCcCCCcCcccccccC',
47
+ * },
48
+ * types: {
49
+ * Person: [
50
+ * { name: 'name', type: 'string' },
51
+ * { name: 'wallet', type: 'address' },
52
+ * ],
53
+ * Mail: [
54
+ * { name: 'from', type: 'Person' },
55
+ * { name: 'to', type: 'Person' },
56
+ * { name: 'contents', type: 'string' },
57
+ * ],
58
+ * },
59
+ * primaryType: 'Mail',
60
+ * message: {
61
+ * from: {
62
+ * name: 'Cow',
63
+ * wallet: '0xCD2a3d9F938E13CD947Ec05AbC7FE734Df8DD826',
64
+ * },
65
+ * to: {
66
+ * name: 'Bob',
67
+ * wallet: '0xbBbBBBBbbBBBbbbBbbBbbbbBBbBbbbbBbBbbBBbB',
68
+ * },
69
+ * contents: 'Hello, Bob!',
70
+ * },
71
+ * })
72
+ *
73
+ * @example
74
+ * // Account Hoisting
75
+ * import { createWalletClient, http } from 'viem'
76
+ * import { privateKeyToAccount } from 'viem/accounts'
77
+ * import { mainnet } from 'viem/chains'
78
+ * import { signTypedData } from 'viem/wallet'
79
+ *
80
+ * const client = createWalletClient({
81
+ * account: privateKeyToAccount('0x…'),
82
+ * chain: mainnet,
83
+ * transport: http(),
84
+ * })
85
+ * const signature = await signTypedData(client, {
86
+ * domain: {
87
+ * name: 'Ether Mail',
88
+ * version: '1',
89
+ * chainId: 1,
90
+ * verifyingContract: '0xCcCCccccCCCCcCCCCCCcCcCccCcCCCcCcccccccC',
91
+ * },
92
+ * types: {
93
+ * Person: [
94
+ * { name: 'name', type: 'string' },
95
+ * { name: 'wallet', type: 'address' },
96
+ * ],
97
+ * Mail: [
98
+ * { name: 'from', type: 'Person' },
99
+ * { name: 'to', type: 'Person' },
100
+ * { name: 'contents', type: 'string' },
101
+ * ],
102
+ * },
103
+ * primaryType: 'Mail',
104
+ * message: {
105
+ * from: {
106
+ * name: 'Cow',
107
+ * wallet: '0xCD2a3d9F938E13CD947Ec05AbC7FE734Df8DD826',
108
+ * },
109
+ * to: {
110
+ * name: 'Bob',
111
+ * wallet: '0xbBbBBBBbbBBBbbbBbbBbbbbBBbBbbbbBbBbbBBbB',
112
+ * },
113
+ * contents: 'Hello, Bob!',
114
+ * },
115
+ * })
116
+ */
117
+ export async function signTypedData<
118
+ const TTypedData extends TypedData | { [key: string]: unknown },
119
+ TPrimaryType extends string,
120
+ TAccount extends SmartAccount | undefined = SmartAccount | undefined
121
+ >(
122
+ client: Client<Transport, Chain | undefined, TAccount>,
123
+ {
124
+ account: account_ = client.account,
125
+ domain,
126
+ message,
127
+ primaryType,
128
+ types: types_
129
+ }: SignTypedDataParameters<TTypedData, TPrimaryType, TAccount>
130
+ ): Promise<SignTypedDataReturnType> {
131
+ if (!account_) {
132
+ throw new AccountNotFoundError({
133
+ docsPath: "/docs/actions/wallet/signMessage"
134
+ })
135
+ }
136
+
137
+ const account = parseAccount(account_) as SmartAccount
138
+
139
+ const types = {
140
+ EIP712Domain: getTypesForEIP712Domain({ domain } as {
141
+ domain: TypedDataDomain
142
+ }),
143
+ ...(types_ as TTypedData)
144
+ }
145
+
146
+ validateTypedData({
147
+ domain,
148
+ message,
149
+ primaryType,
150
+ types
151
+ } as TypedDataDefinition)
152
+
153
+ return account.signTypedData({
154
+ domain,
155
+ primaryType,
156
+ types,
157
+ message
158
+ } as TypedDataDefinition)
159
+ }
@@ -1,80 +1,48 @@
1
- import type { SmartAccount } from "permissionless/accounts"
2
- import { prepareUserOperationRequest } from "permissionless/actions/smartAccount"
3
- import type {
4
- PrepareUserOperationRequestParameters,
5
- PrepareUserOperationRequestReturnType
6
- } from "permissionless/actions/smartAccount"
7
- import type {
8
- EntryPoint,
9
- GetEntryPointVersion,
10
- Prettify,
11
- UserOperation
12
- } from "permissionless/types"
13
- import {
14
- AccountOrClientNotFoundError,
15
- parseAccount
16
- } from "permissionless/utils"
17
1
  import type { Chain, Client, Transport } from "viem"
18
- import { getAction } from "viem/utils"
2
+ import {
3
+ type PrepareUserOperationParameters,
4
+ type PrepareUserOperationReturnType,
5
+ type SmartAccount,
6
+ type UserOperation,
7
+ prepareUserOperation
8
+ } from "viem/account-abstraction"
9
+ import { getAction, parseAccount } from "viem/utils"
10
+ import { AccountNotFoundError } from "../../errors"
19
11
 
20
12
  export type SignUserOperationParameters<
21
- entryPoint extends EntryPoint,
22
- TTransport extends Transport = Transport,
23
- TChain extends Chain | undefined = Chain | undefined,
24
- TAccount extends
25
- | SmartAccount<entryPoint, string, TTransport, TChain>
26
- | undefined =
27
- | SmartAccount<entryPoint, string, TTransport, TChain>
28
- | undefined
29
- > = PrepareUserOperationRequestParameters<
30
- entryPoint,
31
- TTransport,
32
- TChain,
33
- TAccount
34
- >
13
+ account extends SmartAccount | undefined = SmartAccount | undefined,
14
+ accountOverride extends SmartAccount | undefined = SmartAccount | undefined,
15
+ calls extends readonly unknown[] = readonly unknown[]
16
+ > = PrepareUserOperationParameters<account, accountOverride, calls>
35
17
 
36
- export type SignUserOperationReturnType<entryPoint extends EntryPoint> =
37
- PrepareUserOperationRequestReturnType<entryPoint>
18
+ export type SignUserOperationReturnType = PrepareUserOperationReturnType
38
19
 
39
20
  export async function signUserOperation<
40
- entryPoint extends EntryPoint,
41
- TTransport extends Transport = Transport,
42
- TChain extends Chain | undefined = Chain | undefined,
43
- TAccount extends
44
- | SmartAccount<entryPoint, string, TTransport, TChain>
45
- | undefined =
46
- | SmartAccount<entryPoint, string, TTransport, TChain>
47
- | undefined
21
+ account extends SmartAccount | undefined = SmartAccount | undefined,
22
+ chain extends Chain | undefined = Chain | undefined,
23
+ accountOverride extends SmartAccount | undefined = undefined,
24
+ calls extends readonly unknown[] = readonly unknown[]
48
25
  >(
49
- client: Client<TTransport, TChain, TAccount>,
50
- args: Prettify<
51
- SignUserOperationParameters<entryPoint, TTransport, TChain, TAccount>
52
- >
53
- ): Promise<SignUserOperationReturnType<entryPoint>> {
26
+ client: Client<Transport, chain, account>,
27
+ args: SignUserOperationParameters<account, accountOverride, calls>
28
+ ): Promise<SignUserOperationReturnType> {
54
29
  const { account: account_ = client.account } = args
55
- if (!account_) throw new AccountOrClientNotFoundError()
30
+ if (!account_)
31
+ throw new AccountNotFoundError({
32
+ docsPath: "/docs/actions/wallet/sendTransaction"
33
+ })
56
34
 
57
- const account = parseAccount(account_) as SmartAccount<
58
- entryPoint,
59
- string,
60
- TTransport,
61
- TChain
62
- >
35
+ const account = parseAccount(account_) as SmartAccount
63
36
 
64
37
  const userOperation = await getAction(
65
38
  client,
66
- prepareUserOperationRequest<entryPoint, TTransport, TChain, TAccount>,
67
- "prepareUserOperationRequest"
68
- )({ ...args, account } as PrepareUserOperationRequestParameters<
69
- entryPoint,
70
- TTransport,
71
- TChain,
72
- TAccount
73
- >)
39
+ prepareUserOperation,
40
+ "prepareUserOperation"
41
+ )({ ...args, account } as PrepareUserOperationParameters)
74
42
 
75
43
  userOperation.signature = await account.signUserOperation(
76
- userOperation as UserOperation<GetEntryPointVersion<entryPoint>>
44
+ userOperation as UserOperation
77
45
  )
78
46
 
79
- return userOperation as SignUserOperationReturnType<entryPoint>
47
+ return userOperation
80
48
  }
@@ -1,67 +1,49 @@
1
+ import type { Chain, Client, Hash, Hex, Transport } from "viem"
1
2
  import {
2
- type SendTransactionsWithPaymasterParameters,
3
- sendTransactions
4
- } from "permissionless/actions/smartAccount"
5
- import type { EntryPoint, Prettify } from "permissionless/types"
3
+ type SendUserOperationParameters,
4
+ type SmartAccount,
5
+ sendUserOperation
6
+ } from "viem/account-abstraction"
6
7
  import {
7
- AccountOrClientNotFoundError,
8
+ concatHex,
9
+ encodeFunctionData,
10
+ getAction,
11
+ pad,
8
12
  parseAccount
9
- } from "permissionless/utils"
10
- import type { Chain, Client, Hash, Hex, Transport } from "viem"
11
- import { concatHex, encodeFunctionData, getAction, pad } from "viem/utils"
12
- import type { KernelSmartAccount } from "../../accounts/index.js"
13
+ } from "viem/utils"
13
14
  import { KernelV3AccountAbi } from "../../accounts/kernel/abi/kernel_v_3_0_0/KernelAccountAbi.js"
14
15
  import { VALIDATOR_TYPE } from "../../constants.js"
16
+ import { AccountNotFoundError } from "../../errors/index.js"
15
17
  import type {
16
18
  KernelValidator,
17
19
  KernelValidatorHook
18
20
  } from "../../types/kernel.js"
19
21
 
20
22
  export type UninstallPluginParameters<
21
- entryPoint extends EntryPoint,
22
- TTransport extends Transport = Transport,
23
- TChain extends Chain | undefined = Chain | undefined,
24
- TAccount extends
25
- | KernelSmartAccount<entryPoint, TTransport, TChain>
26
- | undefined =
27
- | KernelSmartAccount<entryPoint, TTransport, TChain>
28
- | undefined
29
- > = Prettify<
30
- SendTransactionsWithPaymasterParameters<
31
- entryPoint,
32
- TTransport,
33
- TChain,
34
- TAccount
35
- > & {
36
- plugin: KernelValidator<entryPoint, string>
37
- hook?: KernelValidatorHook
38
- }
39
- >
23
+ account extends SmartAccount | undefined = SmartAccount | undefined,
24
+ accountOverride extends SmartAccount | undefined = undefined,
25
+ calls extends readonly unknown[] = readonly unknown[]
26
+ > = Partial<SendUserOperationParameters<account, accountOverride, calls>> & {
27
+ plugin: KernelValidator<string>
28
+ hook?: KernelValidatorHook
29
+ }
40
30
 
41
31
  export async function uninstallPlugin<
42
- entryPoint extends EntryPoint,
43
- TTransport extends Transport = Transport,
44
- TChain extends Chain | undefined = Chain | undefined,
45
- TAccount extends
46
- | KernelSmartAccount<entryPoint, TTransport, TChain>
47
- | undefined =
48
- | KernelSmartAccount<entryPoint, TTransport, TChain>
49
- | undefined
32
+ account extends SmartAccount | undefined,
33
+ chain extends Chain | undefined,
34
+ accountOverride extends SmartAccount | undefined = undefined,
35
+ calls extends readonly unknown[] = readonly unknown[]
50
36
  >(
51
- client: Client<TTransport, TChain, TAccount>,
52
- args: Prettify<
53
- UninstallPluginParameters<entryPoint, TTransport, TChain, TAccount>
54
- >
37
+ client: Client<Transport, chain, account>,
38
+ args: UninstallPluginParameters<account, accountOverride, calls>
55
39
  ): Promise<Hash> {
56
- const {
57
- account: account_ = client.account,
58
- middleware,
59
- plugin,
60
- hook
61
- } = args
62
- if (!account_) throw new AccountOrClientNotFoundError()
40
+ const { account: account_ = client.account, plugin, hook } = args
41
+ if (!account_)
42
+ throw new AccountNotFoundError({
43
+ docsPath: "/docs/actions/wallet/sendTransaction"
44
+ })
63
45
 
64
- const account = parseAccount(account_) as KernelSmartAccount<entryPoint>
46
+ const account = parseAccount(account_) as SmartAccount
65
47
 
66
48
  let validatorId: Hex
67
49
  if (
@@ -85,11 +67,11 @@ export async function uninstallPlugin<
85
67
  const hookData = (await hook?.getEnableData(account.address)) ?? "0x"
86
68
  return await getAction(
87
69
  client,
88
- sendTransactions<TTransport, TChain, TAccount, entryPoint>,
89
- "sendTransactions"
70
+ sendUserOperation,
71
+ "sendUserOperation"
90
72
  )({
91
73
  ...args,
92
- transactions: [
74
+ calls: [
93
75
  {
94
76
  to: account.address,
95
77
  data: encodeFunctionData({
@@ -100,7 +82,6 @@ export async function uninstallPlugin<
100
82
  value: 0n
101
83
  }
102
84
  ],
103
- account,
104
- middleware
105
- })
85
+ account
86
+ } as SendUserOperationParameters)
106
87
  }
@@ -0,0 +1,72 @@
1
+ // Copied from: https://github.com/pimlicolabs/permissionless.js/blob/main/packages/permissionless/actions/smartAccount/writeContract.ts
2
+
3
+ import {
4
+ type Abi,
5
+ type Chain,
6
+ type Client,
7
+ type ContractFunctionArgs,
8
+ type ContractFunctionName,
9
+ type EncodeFunctionDataParameters,
10
+ type Hash,
11
+ type SendTransactionParameters,
12
+ type Transport,
13
+ type WriteContractParameters,
14
+ encodeFunctionData
15
+ } from "viem"
16
+ import type { SmartAccount } from "viem/account-abstraction"
17
+ import { getAction } from "viem/utils"
18
+ import { sendTransaction } from "./sendTransaction.js"
19
+
20
+ export async function writeContract<
21
+ TChain extends Chain | undefined,
22
+ TAccount extends SmartAccount | undefined,
23
+ const TAbi extends Abi | readonly unknown[],
24
+ TFunctionName extends ContractFunctionName<
25
+ TAbi,
26
+ "nonpayable" | "payable"
27
+ > = ContractFunctionName<TAbi, "nonpayable" | "payable">,
28
+ TArgs extends ContractFunctionArgs<
29
+ TAbi,
30
+ "nonpayable" | "payable",
31
+ TFunctionName
32
+ > = ContractFunctionArgs<TAbi, "nonpayable" | "payable", TFunctionName>,
33
+ TChainOverride extends Chain | undefined = undefined
34
+ >(
35
+ client: Client<Transport, TChain, TAccount>,
36
+ {
37
+ abi,
38
+ address,
39
+ args,
40
+ dataSuffix,
41
+ functionName,
42
+ ...request
43
+ }: WriteContractParameters<
44
+ TAbi,
45
+ TFunctionName,
46
+ TArgs,
47
+ TChain,
48
+ TAccount,
49
+ TChainOverride
50
+ >
51
+ ): Promise<Hash> {
52
+ const data = encodeFunctionData<TAbi, TFunctionName>({
53
+ abi,
54
+ args,
55
+ functionName
56
+ } as EncodeFunctionDataParameters<TAbi, TFunctionName>)
57
+
58
+ const hash = await getAction(
59
+ client,
60
+ sendTransaction<TAccount, undefined, undefined>,
61
+ "sendTransaction"
62
+ )({
63
+ data: `${data}${dataSuffix ? dataSuffix.replace("0x", "") : ""}`,
64
+ to: address,
65
+ ...request
66
+ } as unknown as SendTransactionParameters<
67
+ Chain | undefined,
68
+ TAccount,
69
+ undefined
70
+ >)
71
+ return hash
72
+ }