@account-kit/smart-contracts 4.0.0-alpha.0 → 4.0.0-alpha.2

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 (264) hide show
  1. package/dist/cjs/plugindefs/multi-owner/config.js +16 -17
  2. package/dist/cjs/plugindefs/multi-owner/config.js.map +1 -1
  3. package/dist/cjs/plugindefs/multisig/config.js +15 -15
  4. package/dist/cjs/plugindefs/multisig/config.js.map +1 -1
  5. package/dist/cjs/plugindefs/session-key/config.js +17 -17
  6. package/dist/cjs/plugindefs/session-key/config.js.map +1 -1
  7. package/dist/cjs/src/index.d.ts +3 -3
  8. package/dist/cjs/src/index.js +15 -15
  9. package/dist/cjs/src/index.js.map +1 -1
  10. package/dist/cjs/src/light-account/accounts/account.js +1 -1
  11. package/dist/cjs/src/light-account/accounts/account.js.map +1 -1
  12. package/dist/cjs/src/light-account/accounts/multiOwner.js +2 -4
  13. package/dist/cjs/src/light-account/accounts/multiOwner.js.map +1 -1
  14. package/dist/cjs/src/light-account/actions/transferOwnership.d.ts +1 -1
  15. package/dist/cjs/src/light-account/actions/transferOwnership.js +2 -1
  16. package/dist/cjs/src/light-account/actions/transferOwnership.js.map +1 -1
  17. package/dist/cjs/src/light-account/actions/updateOwners.js.map +1 -1
  18. package/dist/cjs/src/light-account/clients/alchemyClient.d.ts +1 -1
  19. package/dist/cjs/src/light-account/clients/alchemyClient.js.map +1 -1
  20. package/dist/cjs/src/light-account/clients/client.js +2 -1
  21. package/dist/cjs/src/light-account/clients/client.js.map +1 -1
  22. package/dist/cjs/src/light-account/clients/multiOwnerAlchemyClient.d.ts +1 -1
  23. package/dist/cjs/src/light-account/clients/multiOwnerAlchemyClient.js.map +1 -1
  24. package/dist/cjs/src/light-account/clients/multiOwnerLightAccount.js +2 -1
  25. package/dist/cjs/src/light-account/clients/multiOwnerLightAccount.js.map +1 -1
  26. package/dist/cjs/src/light-account/decorators/lightAccount.js.map +1 -1
  27. package/dist/cjs/src/light-account/decorators/multiOwnerLightAccount.js.map +1 -1
  28. package/dist/cjs/src/light-account/utils.d.ts +3 -2
  29. package/dist/cjs/src/light-account/utils.js +34 -24
  30. package/dist/cjs/src/light-account/utils.js.map +1 -1
  31. package/dist/cjs/src/msca/account/multiOwnerAccount.js +2 -1
  32. package/dist/cjs/src/msca/account/multiOwnerAccount.js.map +1 -1
  33. package/dist/cjs/src/msca/account/multisigAccount.js +4 -3
  34. package/dist/cjs/src/msca/account/multisigAccount.js.map +1 -1
  35. package/dist/cjs/src/msca/account-loupe/decorator.js.map +1 -1
  36. package/dist/cjs/src/msca/client/alchemyClient.d.ts +1 -1
  37. package/dist/cjs/src/msca/client/alchemyClient.js.map +1 -1
  38. package/dist/cjs/src/msca/client/client.js.map +1 -1
  39. package/dist/cjs/src/msca/client/multiSigAlchemyClient.d.ts +1 -1
  40. package/dist/cjs/src/msca/client/multiSigAlchemyClient.js +1 -1
  41. package/dist/cjs/src/msca/client/multiSigAlchemyClient.js.map +1 -1
  42. package/dist/cjs/src/msca/errors.js.map +1 -1
  43. package/dist/cjs/src/msca/plugin-manager/decorator.d.ts +1 -1
  44. package/dist/cjs/src/msca/plugin-manager/decorator.js +6 -4
  45. package/dist/cjs/src/msca/plugin-manager/decorator.js.map +1 -1
  46. package/dist/cjs/src/msca/plugin-manager/installPlugin.js.map +1 -1
  47. package/dist/cjs/src/msca/plugins/multi-owner/extension.js.map +1 -1
  48. package/dist/cjs/src/msca/plugins/multi-owner/index.d.ts +1 -1
  49. package/dist/cjs/src/msca/plugins/multi-owner/index.js +2 -1
  50. package/dist/cjs/src/msca/plugins/multi-owner/index.js.map +1 -1
  51. package/dist/cjs/src/msca/plugins/multisig/actions/proposeUserOperation.js +2 -2
  52. package/dist/cjs/src/msca/plugins/multisig/actions/proposeUserOperation.js.map +1 -1
  53. package/dist/cjs/src/msca/plugins/multisig/actions/signMultisigUserOperation.js +1 -1
  54. package/dist/cjs/src/msca/plugins/multisig/actions/signMultisigUserOperation.js.map +1 -1
  55. package/dist/cjs/src/msca/plugins/multisig/extension.js.map +1 -1
  56. package/dist/cjs/src/msca/plugins/multisig/index.d.ts +1 -8
  57. package/dist/cjs/src/msca/plugins/multisig/index.js +1 -16
  58. package/dist/cjs/src/msca/plugins/multisig/index.js.map +1 -1
  59. package/dist/cjs/src/msca/plugins/multisig/middleware.d.ts +1 -1
  60. package/dist/cjs/src/msca/plugins/multisig/middleware.js +1 -1
  61. package/dist/cjs/src/msca/plugins/multisig/middleware.js.map +1 -1
  62. package/dist/cjs/src/msca/plugins/multisig/utils/combineSignatures.d.ts +3 -2
  63. package/dist/cjs/src/msca/plugins/multisig/utils/combineSignatures.js +2 -2
  64. package/dist/cjs/src/msca/plugins/multisig/utils/combineSignatures.js.map +1 -1
  65. package/dist/cjs/src/msca/plugins/multisig/utils/getSignerType.d.ts +2 -2
  66. package/dist/cjs/src/msca/plugins/multisig/utils/getSignerType.js.map +1 -1
  67. package/dist/cjs/src/msca/plugins/multisig/utils/index.d.ts +4 -0
  68. package/dist/cjs/src/msca/plugins/multisig/utils/index.js.map +1 -1
  69. package/dist/cjs/src/msca/plugins/session-key/extension.js.map +1 -1
  70. package/dist/cjs/src/msca/plugins/session-key/index.d.ts +1 -1
  71. package/dist/cjs/src/msca/plugins/session-key/index.js +3 -1
  72. package/dist/cjs/src/msca/plugins/session-key/index.js.map +1 -1
  73. package/dist/cjs/src/msca/plugins/session-key/permissions.js.map +1 -1
  74. package/dist/cjs/src/msca/plugins/session-key/signer.js.map +1 -1
  75. package/dist/cjs/src/msca/plugins/session-key/utils.d.ts +4 -2
  76. package/dist/cjs/src/msca/plugins/session-key/utils.js +3 -2
  77. package/dist/cjs/src/msca/plugins/session-key/utils.js.map +1 -1
  78. package/dist/cjs/src/msca/utils.d.ts +6 -4
  79. package/dist/cjs/src/msca/utils.js +11 -10
  80. package/dist/cjs/src/msca/utils.js.map +1 -1
  81. package/dist/esm/plugindefs/multi-owner/config.js +1 -2
  82. package/dist/esm/plugindefs/multi-owner/config.js.map +1 -1
  83. package/dist/esm/plugindefs/multisig/config.js +1 -1
  84. package/dist/esm/plugindefs/multisig/config.js.map +1 -1
  85. package/dist/esm/plugindefs/session-key/config.js +1 -1
  86. package/dist/esm/plugindefs/session-key/config.js.map +1 -1
  87. package/dist/esm/src/index.d.ts +3 -3
  88. package/dist/esm/src/index.js +2 -2
  89. package/dist/esm/src/index.js.map +1 -1
  90. package/dist/esm/src/light-account/accounts/account.js +2 -2
  91. package/dist/esm/src/light-account/accounts/account.js.map +1 -1
  92. package/dist/esm/src/light-account/accounts/multiOwner.js +3 -5
  93. package/dist/esm/src/light-account/accounts/multiOwner.js.map +1 -1
  94. package/dist/esm/src/light-account/actions/transferOwnership.d.ts +1 -1
  95. package/dist/esm/src/light-account/actions/transferOwnership.js +2 -1
  96. package/dist/esm/src/light-account/actions/transferOwnership.js.map +1 -1
  97. package/dist/esm/src/light-account/actions/updateOwners.js.map +1 -1
  98. package/dist/esm/src/light-account/clients/alchemyClient.d.ts +1 -1
  99. package/dist/esm/src/light-account/clients/alchemyClient.js.map +1 -1
  100. package/dist/esm/src/light-account/clients/client.js +2 -1
  101. package/dist/esm/src/light-account/clients/client.js.map +1 -1
  102. package/dist/esm/src/light-account/clients/multiOwnerAlchemyClient.d.ts +1 -1
  103. package/dist/esm/src/light-account/clients/multiOwnerAlchemyClient.js.map +1 -1
  104. package/dist/esm/src/light-account/clients/multiOwnerLightAccount.js +2 -1
  105. package/dist/esm/src/light-account/clients/multiOwnerLightAccount.js.map +1 -1
  106. package/dist/esm/src/light-account/decorators/lightAccount.js.map +1 -1
  107. package/dist/esm/src/light-account/decorators/multiOwnerLightAccount.js.map +1 -1
  108. package/dist/esm/src/light-account/utils.d.ts +3 -2
  109. package/dist/esm/src/light-account/utils.js +14 -5
  110. package/dist/esm/src/light-account/utils.js.map +1 -1
  111. package/dist/esm/src/msca/account/multiOwnerAccount.js +2 -1
  112. package/dist/esm/src/msca/account/multiOwnerAccount.js.map +1 -1
  113. package/dist/esm/src/msca/account/multisigAccount.js +4 -3
  114. package/dist/esm/src/msca/account/multisigAccount.js.map +1 -1
  115. package/dist/esm/src/msca/account-loupe/decorator.js.map +1 -1
  116. package/dist/esm/src/msca/client/alchemyClient.d.ts +1 -1
  117. package/dist/esm/src/msca/client/alchemyClient.js.map +1 -1
  118. package/dist/esm/src/msca/client/client.js.map +1 -1
  119. package/dist/esm/src/msca/client/multiSigAlchemyClient.d.ts +1 -1
  120. package/dist/esm/src/msca/client/multiSigAlchemyClient.js +1 -1
  121. package/dist/esm/src/msca/client/multiSigAlchemyClient.js.map +1 -1
  122. package/dist/esm/src/msca/errors.js.map +1 -1
  123. package/dist/esm/src/msca/plugin-manager/decorator.d.ts +1 -1
  124. package/dist/esm/src/msca/plugin-manager/decorator.js +6 -4
  125. package/dist/esm/src/msca/plugin-manager/decorator.js.map +1 -1
  126. package/dist/esm/src/msca/plugin-manager/installPlugin.js.map +1 -1
  127. package/dist/esm/src/msca/plugins/multi-owner/extension.js.map +1 -1
  128. package/dist/esm/src/msca/plugins/multi-owner/index.d.ts +1 -1
  129. package/dist/esm/src/msca/plugins/multi-owner/index.js +1 -1
  130. package/dist/esm/src/msca/plugins/multi-owner/index.js.map +1 -1
  131. package/dist/esm/src/msca/plugins/multisig/actions/proposeUserOperation.js +1 -1
  132. package/dist/esm/src/msca/plugins/multisig/actions/proposeUserOperation.js.map +1 -1
  133. package/dist/esm/src/msca/plugins/multisig/actions/signMultisigUserOperation.js +1 -1
  134. package/dist/esm/src/msca/plugins/multisig/actions/signMultisigUserOperation.js.map +1 -1
  135. package/dist/esm/src/msca/plugins/multisig/extension.js.map +1 -1
  136. package/dist/esm/src/msca/plugins/multisig/index.d.ts +1 -8
  137. package/dist/esm/src/msca/plugins/multisig/index.js +0 -7
  138. package/dist/esm/src/msca/plugins/multisig/index.js.map +1 -1
  139. package/dist/esm/src/msca/plugins/multisig/middleware.d.ts +1 -1
  140. package/dist/esm/src/msca/plugins/multisig/middleware.js +2 -1
  141. package/dist/esm/src/msca/plugins/multisig/middleware.js.map +1 -1
  142. package/dist/esm/src/msca/plugins/multisig/utils/combineSignatures.d.ts +3 -2
  143. package/dist/esm/src/msca/plugins/multisig/utils/combineSignatures.js +2 -2
  144. package/dist/esm/src/msca/plugins/multisig/utils/combineSignatures.js.map +1 -1
  145. package/dist/esm/src/msca/plugins/multisig/utils/getSignerType.d.ts +2 -2
  146. package/dist/esm/src/msca/plugins/multisig/utils/getSignerType.js.map +1 -1
  147. package/dist/esm/src/msca/plugins/multisig/utils/index.d.ts +4 -0
  148. package/dist/esm/src/msca/plugins/multisig/utils/index.js.map +1 -1
  149. package/dist/esm/src/msca/plugins/session-key/extension.js.map +1 -1
  150. package/dist/esm/src/msca/plugins/session-key/index.d.ts +1 -1
  151. package/dist/esm/src/msca/plugins/session-key/index.js +1 -1
  152. package/dist/esm/src/msca/plugins/session-key/index.js.map +1 -1
  153. package/dist/esm/src/msca/plugins/session-key/permissions.js.map +1 -1
  154. package/dist/esm/src/msca/plugins/session-key/signer.js.map +1 -1
  155. package/dist/esm/src/msca/plugins/session-key/utils.d.ts +4 -2
  156. package/dist/esm/src/msca/plugins/session-key/utils.js +3 -2
  157. package/dist/esm/src/msca/plugins/session-key/utils.js.map +1 -1
  158. package/dist/esm/src/msca/utils.d.ts +6 -4
  159. package/dist/esm/src/msca/utils.js +2 -1
  160. package/dist/esm/src/msca/utils.js.map +1 -1
  161. package/dist/types/plugindefs/multi-owner/config.d.ts.map +1 -1
  162. package/dist/types/src/index.d.ts +3 -3
  163. package/dist/types/src/index.d.ts.map +1 -1
  164. package/dist/types/src/light-account/accounts/account.d.ts.map +1 -1
  165. package/dist/types/src/light-account/accounts/multiOwner.d.ts.map +1 -1
  166. package/dist/types/src/light-account/actions/transferOwnership.d.ts +26 -1
  167. package/dist/types/src/light-account/actions/transferOwnership.d.ts.map +1 -1
  168. package/dist/types/src/light-account/actions/updateOwners.d.ts +24 -0
  169. package/dist/types/src/light-account/actions/updateOwners.d.ts.map +1 -1
  170. package/dist/types/src/light-account/clients/alchemyClient.d.ts +1 -1
  171. package/dist/types/src/light-account/clients/alchemyClient.d.ts.map +1 -1
  172. package/dist/types/src/light-account/clients/multiOwnerAlchemyClient.d.ts +1 -1
  173. package/dist/types/src/light-account/clients/multiOwnerAlchemyClient.d.ts.map +1 -1
  174. package/dist/types/src/light-account/decorators/lightAccount.d.ts +19 -0
  175. package/dist/types/src/light-account/decorators/lightAccount.d.ts.map +1 -1
  176. package/dist/types/src/light-account/decorators/multiOwnerLightAccount.d.ts +19 -0
  177. package/dist/types/src/light-account/decorators/multiOwnerLightAccount.d.ts.map +1 -1
  178. package/dist/types/src/light-account/utils.d.ts +11 -4
  179. package/dist/types/src/light-account/utils.d.ts.map +1 -1
  180. package/dist/types/src/msca/account/multisigAccount.d.ts.map +1 -1
  181. package/dist/types/src/msca/account-loupe/decorator.d.ts +15 -0
  182. package/dist/types/src/msca/account-loupe/decorator.d.ts.map +1 -1
  183. package/dist/types/src/msca/client/alchemyClient.d.ts +1 -1
  184. package/dist/types/src/msca/client/alchemyClient.d.ts.map +1 -1
  185. package/dist/types/src/msca/client/client.d.ts.map +1 -1
  186. package/dist/types/src/msca/client/multiSigAlchemyClient.d.ts +1 -1
  187. package/dist/types/src/msca/client/multiSigAlchemyClient.d.ts.map +1 -1
  188. package/dist/types/src/msca/errors.d.ts +12 -0
  189. package/dist/types/src/msca/errors.d.ts.map +1 -1
  190. package/dist/types/src/msca/plugin-manager/decorator.d.ts +16 -1
  191. package/dist/types/src/msca/plugin-manager/decorator.d.ts.map +1 -1
  192. package/dist/types/src/msca/plugin-manager/installPlugin.d.ts +21 -0
  193. package/dist/types/src/msca/plugin-manager/installPlugin.d.ts.map +1 -1
  194. package/dist/types/src/msca/plugins/multi-owner/extension.d.ts +15 -0
  195. package/dist/types/src/msca/plugins/multi-owner/extension.d.ts.map +1 -1
  196. package/dist/types/src/msca/plugins/multi-owner/index.d.ts +1 -1
  197. package/dist/types/src/msca/plugins/multi-owner/index.d.ts.map +1 -1
  198. package/dist/types/src/msca/plugins/multisig/actions/proposeUserOperation.d.ts.map +1 -1
  199. package/dist/types/src/msca/plugins/multisig/actions/signMultisigUserOperation.d.ts.map +1 -1
  200. package/dist/types/src/msca/plugins/multisig/extension.d.ts +13 -0
  201. package/dist/types/src/msca/plugins/multisig/extension.d.ts.map +1 -1
  202. package/dist/types/src/msca/plugins/multisig/index.d.ts +1 -8
  203. package/dist/types/src/msca/plugins/multisig/index.d.ts.map +1 -1
  204. package/dist/types/src/msca/plugins/multisig/middleware.d.ts +1 -1
  205. package/dist/types/src/msca/plugins/multisig/middleware.d.ts.map +1 -1
  206. package/dist/types/src/msca/plugins/multisig/utils/combineSignatures.d.ts +28 -2
  207. package/dist/types/src/msca/plugins/multisig/utils/combineSignatures.d.ts.map +1 -1
  208. package/dist/types/src/msca/plugins/multisig/utils/getSignerType.d.ts +21 -2
  209. package/dist/types/src/msca/plugins/multisig/utils/getSignerType.d.ts.map +1 -1
  210. package/dist/types/src/msca/plugins/multisig/utils/index.d.ts +4 -0
  211. package/dist/types/src/msca/plugins/multisig/utils/index.d.ts.map +1 -1
  212. package/dist/types/src/msca/plugins/session-key/extension.d.ts +13 -0
  213. package/dist/types/src/msca/plugins/session-key/extension.d.ts.map +1 -1
  214. package/dist/types/src/msca/plugins/session-key/index.d.ts +1 -1
  215. package/dist/types/src/msca/plugins/session-key/index.d.ts.map +1 -1
  216. package/dist/types/src/msca/plugins/session-key/permissions.d.ts +3 -0
  217. package/dist/types/src/msca/plugins/session-key/permissions.d.ts.map +1 -1
  218. package/dist/types/src/msca/plugins/session-key/signer.d.ts +1 -1
  219. package/dist/types/src/msca/plugins/session-key/signer.d.ts.map +1 -1
  220. package/dist/types/src/msca/plugins/session-key/utils.d.ts +22 -2
  221. package/dist/types/src/msca/plugins/session-key/utils.d.ts.map +1 -1
  222. package/dist/types/src/msca/utils.d.ts +43 -5
  223. package/dist/types/src/msca/utils.d.ts.map +1 -1
  224. package/package.json +5 -5
  225. package/plugindefs/multi-owner/config.ts +1 -2
  226. package/plugindefs/multisig/config.ts +1 -1
  227. package/plugindefs/session-key/config.ts +1 -1
  228. package/src/index.ts +2 -3
  229. package/src/light-account/accounts/account.ts +22 -3
  230. package/src/light-account/accounts/multiOwner.ts +26 -5
  231. package/src/light-account/actions/transferOwnership.ts +28 -5
  232. package/src/light-account/actions/updateOwners.ts +24 -0
  233. package/src/light-account/clients/alchemyClient.ts +21 -1
  234. package/src/light-account/clients/client.ts +27 -6
  235. package/src/light-account/clients/multiOwnerAlchemyClient.ts +21 -1
  236. package/src/light-account/clients/multiOwnerLightAccount.ts +27 -6
  237. package/src/light-account/decorators/lightAccount.ts +19 -0
  238. package/src/light-account/decorators/multiOwnerLightAccount.ts +19 -0
  239. package/src/light-account/utils.ts +31 -9
  240. package/src/msca/account/multiOwnerAccount.ts +36 -11
  241. package/src/msca/account/multisigAccount.ts +40 -14
  242. package/src/msca/account-loupe/decorator.ts +15 -0
  243. package/src/msca/client/alchemyClient.ts +21 -1
  244. package/src/msca/client/client.ts +46 -0
  245. package/src/msca/client/multiSigAlchemyClient.ts +26 -4
  246. package/src/msca/errors.ts +12 -0
  247. package/src/msca/plugin-manager/decorator.ts +22 -5
  248. package/src/msca/plugin-manager/installPlugin.ts +21 -0
  249. package/src/msca/plugins/multi-owner/extension.ts +15 -0
  250. package/src/msca/plugins/multi-owner/index.ts +3 -0
  251. package/src/msca/plugins/multisig/actions/proposeUserOperation.ts +1 -1
  252. package/src/msca/plugins/multisig/actions/signMultisigUserOperation.ts +1 -1
  253. package/src/msca/plugins/multisig/extension.ts +13 -0
  254. package/src/msca/plugins/multisig/index.ts +1 -12
  255. package/src/msca/plugins/multisig/middleware.ts +2 -2
  256. package/src/msca/plugins/multisig/utils/combineSignatures.ts +36 -9
  257. package/src/msca/plugins/multisig/utils/getSignerType.ts +23 -4
  258. package/src/msca/plugins/multisig/utils/index.ts +4 -0
  259. package/src/msca/plugins/session-key/extension.ts +13 -0
  260. package/src/msca/plugins/session-key/index.ts +7 -1
  261. package/src/msca/plugins/session-key/permissions.ts +3 -0
  262. package/src/msca/plugins/session-key/signer.ts +1 -2
  263. package/src/msca/plugins/session-key/utils.ts +33 -12
  264. package/src/msca/utils.ts +73 -16
@@ -80,6 +80,28 @@ export function createMultiOwnerModularAccountClient<
80
80
  >
81
81
  >;
82
82
 
83
+ /**
84
+ * Creates a multi-owner modular account client with the provided parameters including account, transport, chain, and additional client configuration. This function uses a modular account and extends it with various plugin actions.
85
+ *
86
+ * @example
87
+ * ```ts
88
+ * import { createMultiOwnerModularAccountClient } from "@account-kit/smart-contracts";
89
+ * import { LocalAccountSigner } from "@aa-sdk/core";
90
+ * import { sepolia } from "viem/chains";
91
+ * import { http, generatePrivateKey } from "viem"
92
+ *
93
+ * const accountClient = await createMultiOwnerModularAccountClient({
94
+ * chain: sepolia,
95
+ * transport: http("RPC_URL"),
96
+ * account: {
97
+ * signer: LocalAccountSigner.privateKeyToAccountSigner(generatePrivateKey())
98
+ * }
99
+ * });
100
+ * ```
101
+ *
102
+ * @param {CreateMultiOwnerModularAccountClientParams} config The parameters for creating the multi-owner modular account client
103
+ * @returns {Promise<SmartAccountClient>} A promise that resolves to a `SmartAccountClient` instance with extended plugin actions
104
+ */
83
105
  export async function createMultiOwnerModularAccountClient({
84
106
  account,
85
107
  transport,
@@ -121,6 +143,30 @@ export function createMultisigModularAccountClient<
121
143
  >
122
144
  >;
123
145
 
146
+ /**
147
+ * Creates a multisig modular account client using the provided parameters including account details, transport, chain, and additional client configuration. This function constructs the multisig modular account and extends it with various actions to create a comprehensive client.
148
+ *
149
+ * @example
150
+ * ```ts
151
+ * import { createMultisigModularAccountClient } from "@account-kit/smart-contracts";
152
+ * import { LocalAccountSigner } from "@aa-sdk/core";
153
+ * import { sepolia } from "viem/chains";
154
+ * import { http, generatePrivateKey } from "viem"
155
+ *
156
+ * const accountClient = await createMultisigModularAccountClient({
157
+ * chain: sepolia,
158
+ * transport: http("RPC_URL"),
159
+ * account: {
160
+ * signer: LocalAccountSigner.privateKeyToAccountSigner(generatePrivateKey()),
161
+ * owners: [...], // other owners on the account
162
+ * threshold: 2, // 2 of N signatures
163
+ * }
164
+ * });
165
+ * ```
166
+ *
167
+ * @param {CreateMultisigModularAccountClientParams} config the parameters for configuring the multisig modular account client
168
+ * @returns {Promise<SmartAccountClient<Transport, Chain, MultisigModularAccount<SmartAccountSigner>, {}, SmartAccountClientRpcSchema, MultisigUserOperationContext>>} a promise that resolves to a `SmartAccountClient` object extended with the multisig modular account and additional actions
169
+ */
124
170
  export async function createMultisigModularAccountClient({
125
171
  account,
126
172
  transport,
@@ -1,3 +1,7 @@
1
+ import {
2
+ smartAccountClientActions,
3
+ type SmartAccountSigner,
4
+ } from "@aa-sdk/core";
1
5
  import {
2
6
  AlchemyProviderConfigSchema,
3
7
  createAlchemyPublicRpcClient,
@@ -19,10 +23,6 @@ import {
19
23
  type MultisigUserOperationContext,
20
24
  type PluginManagerActions,
21
25
  } from "@account-kit/smart-contracts";
22
- import {
23
- smartAccountClientActions,
24
- type SmartAccountSigner,
25
- } from "@aa-sdk/core";
26
26
  import {
27
27
  custom,
28
28
  type Chain,
@@ -65,6 +65,28 @@ export function createMultisigAccountAlchemyClient<
65
65
  >
66
66
  >;
67
67
 
68
+ /**
69
+ * Creates an Alchemy client for a multisig account using the provided configuration.
70
+ *
71
+ * @example
72
+ * ```ts
73
+ * import { createMultisigAccountAlchemyClient } from "@account-kit/smart-contracts";
74
+ * import { sepolia } from "@account-kit/infra";
75
+ * import { LocalAccountSigner } from "@aa-sdk/core";
76
+ * import { generatePrivateKey } from "viem"
77
+ *
78
+ * const alchemyAccountClient = await createMultisigAccountAlchemyClient({
79
+ * apiKey: "your-api-key",
80
+ * chain: sepolia,
81
+ * signer: LocalAccountSigner.privateKeyToAccountSigner(generatePrivateKey()),
82
+ * owners: [...], // other owners on the account
83
+ * threshold: 2, // 2 of N signatures
84
+ * });
85
+ * ```
86
+ *
87
+ * @param {AlchemyMultisigAccountClientConfig} config The configuration for the Alchemy multisig account client
88
+ * @returns {Promise<AlchemySmartAccountClient<Transport, Chain | undefined, MultisigModularAccount<SmartAccountSigner>, MultisigPluginActions<MultisigModularAccount<SmartAccountSigner>> & PluginManagerActions<MultisigModularAccount<SmartAccountSigner>> & AccountLoupeActions<MultisigModularAccount<SmartAccountSigner>>, MultisigUserOperationContext>>} A promise that resolves to an Alchemy Smart Account Client for multisig accounts with extended functionalities.
89
+ */
68
90
  export async function createMultisigAccountAlchemyClient(
69
91
  config: AlchemyMultisigAccountClientConfig
70
92
  ): Promise<
@@ -1,5 +1,8 @@
1
1
  import { BaseError } from "@aa-sdk/core";
2
2
 
3
+ /**
4
+ * Error thrown when the aggregated signature is invalid
5
+ */
3
6
  export class InvalidAggregatedSignatureError extends BaseError {
4
7
  override name = "InvalidAggregatedSignatureError";
5
8
  constructor() {
@@ -7,6 +10,9 @@ export class InvalidAggregatedSignatureError extends BaseError {
7
10
  }
8
11
  }
9
12
 
13
+ /**
14
+ * Error thrown when the context signature is invalid
15
+ */
10
16
  export class InvalidContextSignatureError extends BaseError {
11
17
  override name = "InvalidContextSignatureError";
12
18
  constructor() {
@@ -14,6 +20,9 @@ export class InvalidContextSignatureError extends BaseError {
14
20
  }
15
21
  }
16
22
 
23
+ /**
24
+ * Error thrown when the expected account is not a multisig modular account
25
+ */
17
26
  export class MultisigAccountExpectedError extends BaseError {
18
27
  override name = "MultisigAccountExpectedError";
19
28
  constructor() {
@@ -21,6 +30,9 @@ export class MultisigAccountExpectedError extends BaseError {
21
30
  }
22
31
  }
23
32
 
33
+ /**
34
+ * Error thrown when a multisig user op is missing a signature
35
+ */
24
36
  export class MultisigMissingSignatureError extends BaseError {
25
37
  override name = "MultisigMissingSignatureError";
26
38
  constructor() {
@@ -27,7 +27,22 @@ export type PluginManagerActions<
27
27
  ) => Promise<SendUserOperationResult<TEntryPointVersion>>;
28
28
  };
29
29
 
30
- export const pluginManagerActions: <
30
+ /**
31
+ * Provides actions for managing plugins on a given client, including installing and uninstalling plugins.
32
+ * NOTE: this is provided by default when using a modular account client
33
+ *
34
+ * @example
35
+ * ```ts
36
+ * import { pluginManagerActions } from "@account-kit/smart-contracts";
37
+ * import { createSmartAccountClient } from "@aa-sdk/core";
38
+ *
39
+ * const client = createSmartAccountClient(...).extend(pluginManagerActions);
40
+ * ```
41
+ *
42
+ * @param {Client<TTransport, TChain, TAccount>} client The client instance on which to manage plugins
43
+ * @returns {PluginManagerActions<TAccount>} An object containing functions to install and uninstall plugins
44
+ */
45
+ export function pluginManagerActions<
31
46
  TTransport extends Transport = Transport,
32
47
  TChain extends Chain | undefined = Chain | undefined,
33
48
  TAccount extends SmartContractAccount | undefined =
@@ -35,7 +50,9 @@ export const pluginManagerActions: <
35
50
  | undefined
36
51
  >(
37
52
  client: Client<TTransport, TChain, TAccount>
38
- ) => PluginManagerActions<TAccount> = (client) => ({
39
- installPlugin: async (params) => installPlugin(client, params),
40
- uninstallPlugin: async (params) => uninstallPlugin(client, params),
41
- });
53
+ ): PluginManagerActions<TAccount> {
54
+ return {
55
+ installPlugin: async (params) => installPlugin(client, params),
56
+ uninstallPlugin: async (params) => uninstallPlugin(client, params),
57
+ };
58
+ }
@@ -40,6 +40,27 @@ export type InstallPluginParams<
40
40
  GetAccountParameter<TAccount> &
41
41
  GetContextParameter<TContext>;
42
42
 
43
+ /**
44
+ * Installs a plugin on a smart account via the client, sending the user operation with the appropriate parameters.
45
+ * NOTE: it's recommended to just use the installPlugin action returned from generated plugins
46
+ *
47
+ * @example
48
+ * ```ts
49
+ * import { installPlugin, createModularAccountAlchemyClient } from "@account-kit/smart-contracts";
50
+ *
51
+ * const client = createModularAccountAlchemyClient(...);
52
+ *
53
+ * const hash = await installPlugin(client, {
54
+ * pluginAddress: "0x...",
55
+ * manifestHash: "0x...",
56
+ * dependencies: [], // this is defined by the plugin you're installing
57
+ * });
58
+ * ```
59
+ *
60
+ * @param {Client<TTransport, TChain, TAccount>} client The client configured to the smart account on which the plugin will be installed
61
+ * @param {InstallPluginParams<TAccount, TContext>} params The parameters required to install the plugin, including overrides, context, and account information
62
+ * @returns {Promise<any>} A promise that resolves once the plugin installation operation is sent
63
+ */
43
64
  export async function installPlugin<
44
65
  TTransport extends Transport = Transport,
45
66
  TChain extends Chain | undefined = Chain | undefined,
@@ -33,6 +33,21 @@ export type MultiOwnerPluginActions<
33
33
  }
34
34
  : {});
35
35
 
36
+ /**
37
+ * Creates actions for the MultiOwner plugin, including reading owners and checking ownership.
38
+ * NOTE: this is already added to the client returned from createMultiOwnerModularAccountClient
39
+ *
40
+ * @example
41
+ * ```ts
42
+ * import { multiOwnerPluginActions } from "@account-kit/smart-contracts";
43
+ * import { createSmartAccountClient } from "@aa-sdk/core";
44
+ *
45
+ * const client = createSmartAccountClient(...).extend(multiOwnerPluginActions);
46
+ * ```
47
+ *
48
+ * @param {Client<TTransport, TChain, TAccount>} client the client instance containing the transport, chain, and account information
49
+ * @returns {MultiOwnerPluginActions<TAccount>} an object containing the actions for the MultiOwner plugin, such as `readOwners` and `isOwnerOf`
50
+ */
36
51
  export const multiOwnerPluginActions: <
37
52
  TTransport extends Transport = Transport,
38
53
  TChain extends Chain | undefined = Chain | undefined,
@@ -1,6 +1,9 @@
1
1
  export type * from "./extension.js";
2
2
  export { multiOwnerPluginActions } from "./extension.js";
3
+
3
4
  export {
5
+ MultiOwnerPlugin,
4
6
  MultiOwnerPluginAbi,
5
7
  MultiOwnerPluginExecutionFunctionAbi,
8
+ type InstallMultiOwnerPluginParams,
6
9
  } from "./plugin.js";
@@ -10,8 +10,8 @@ import {
10
10
  type UserOperationOverrides,
11
11
  } from "@aa-sdk/core";
12
12
  import { type Chain, type Client, type Transport } from "viem";
13
- import { splitAggregatedSignature } from "../index.js";
14
13
  import { type ProposeUserOperationResult } from "../types.js";
14
+ import { splitAggregatedSignature } from "../utils/splitAggregatedSignature.js";
15
15
 
16
16
  export async function proposeUserOperation<
17
17
  TTransport extends Transport = Transport,
@@ -8,11 +8,11 @@ import {
8
8
  } from "@aa-sdk/core";
9
9
  import { type Chain, type Client, type Transport } from "viem";
10
10
  import { MultisigMissingSignatureError } from "../../../errors.js";
11
- import { combineSignatures, splitAggregatedSignature } from "../index.js";
12
11
  import {
13
12
  type SignMultisigUserOperationParams,
14
13
  type SignMultisigUserOperationResult,
15
14
  } from "../types.js";
15
+ import { combineSignatures, splitAggregatedSignature } from "../utils/index.js";
16
16
 
17
17
  export async function signMultisigUserOperation<
18
18
  TTransport extends Transport = Transport,
@@ -58,6 +58,19 @@ export type MultisigPluginActions<
58
58
  }
59
59
  : {});
60
60
 
61
+ /**
62
+ * Provides actions for managing a multisig plugin within the specified client, including reading owners, checking ownership, getting the threshold, proposing user operations, and signing multisig user operations.
63
+ *
64
+ * @example
65
+ * ```ts
66
+ * import { createModularAccountAlchemyClient, multisigPluginActions } from "@account-kit/smart-contracts";
67
+ *
68
+ * const client = createModularAccountAlchemyClient(...).extend(multisigPluginActions);
69
+ * ```
70
+ *
71
+ * @param {Client<TTransport, TChain, TAccount>} client The client instance configured with transport, chain, and account information
72
+ * @returns {MultisigPluginActions<TAccount>} An object containing methods to perform actions related to the multisig plugin
73
+ */
61
74
  export const multisigPluginActions: <
62
75
  TTransport extends Transport = Transport,
63
76
  TChain extends Chain | undefined = Chain | undefined,
@@ -1,8 +1,3 @@
1
- export { getThreshold } from "./actions/getThreshold.js";
2
- export { isOwnerOf } from "./actions/isOwnerOf.js";
3
- export { proposeUserOperation } from "./actions/proposeUserOperation.js";
4
- export { readOwners } from "./actions/readOwners.js";
5
- export { signMultisigUserOperation } from "./actions/signMultisigUserOperation.js";
6
1
  export type * from "./extension.js";
7
2
  export { multisigPluginActions } from "./extension.js";
8
3
  export { multisigSignatureMiddleware } from "./middleware.js";
@@ -10,12 +5,6 @@ export {
10
5
  MultisigPlugin,
11
6
  MultisigPluginAbi,
12
7
  MultisigPluginExecutionFunctionAbi,
8
+ type InstallMultisigPluginParams,
13
9
  } from "./plugin.js";
14
10
  export type * from "./types.js";
15
- export { type SignerType } from "./types.js";
16
- export {
17
- combineSignatures,
18
- formatSignatures,
19
- getSignerType,
20
- splitAggregatedSignature,
21
- } from "./utils/index.js";
@@ -15,12 +15,12 @@ import {
15
15
  InvalidContextSignatureError,
16
16
  MultisigAccountExpectedError,
17
17
  } from "../../errors.js";
18
+ import { type MultisigUserOperationContext } from "./types.js";
18
19
  import {
19
20
  combineSignatures,
20
21
  getSignerType,
21
22
  splitAggregatedSignature,
22
- type MultisigUserOperationContext,
23
- } from "./index.js";
23
+ } from "./utils/index.js";
24
24
 
25
25
  /**
26
26
  * A signer middleware to be used with Multisig Account Clients.
@@ -2,23 +2,50 @@ import { type Hex, concat, pad } from "viem";
2
2
  import type { Signature } from "../types.js";
3
3
  import { formatSignatures } from "./formatSignatures.js";
4
4
 
5
- export const combineSignatures = ({
6
- signatures,
7
- upperLimitMaxFeePerGas,
8
- upperLimitMaxPriorityFeePerGas,
9
- upperLimitPvg,
10
- usingMaxValues,
11
- }: {
5
+ export type CombineSignaturesParams = {
12
6
  upperLimitPvg: Hex;
13
7
  upperLimitMaxFeePerGas: Hex;
14
8
  upperLimitMaxPriorityFeePerGas: Hex;
15
9
  signatures: Signature[];
16
10
  usingMaxValues: boolean;
17
- }) => {
11
+ };
12
+
13
+ /**
14
+ * Combines multiple signatures with provided upper limit values for gas fees and returns the concatenated result.
15
+ *
16
+ * @example
17
+ * ```ts
18
+ * import { combineSignatures } from "@account-kit/smart-contracts";
19
+ *
20
+ * const combinedSignature = combineSignatures({
21
+ * // this is the upper limit pre-verification gas
22
+ * upperLimitPvg: "0x01",
23
+ * upperLimitMaxFeePerGas: "0x02",
24
+ * upperLimitMaxPriorityFeePerGas: "0x03",
25
+ * signatures: [{
26
+ * signerType: "EOA",
27
+ * userOpSigType: "UPPERLIMIT",
28
+ * signer: `0x...`,
29
+ * signature: `0x...`,
30
+ * }]
31
+ * usingMaxValues: false,
32
+ * });
33
+ * ```
34
+ *
35
+ * @param {CombineSignaturesParams} params The function parameters
36
+ * @returns {Hex} The concatenated result of padding and formatting the provided values and signatures
37
+ */
38
+ export function combineSignatures({
39
+ signatures,
40
+ upperLimitMaxFeePerGas,
41
+ upperLimitMaxPriorityFeePerGas,
42
+ upperLimitPvg,
43
+ usingMaxValues,
44
+ }: CombineSignaturesParams): Hex {
18
45
  return concat([
19
46
  pad(upperLimitPvg),
20
47
  pad(upperLimitMaxFeePerGas),
21
48
  pad(upperLimitMaxPriorityFeePerGas),
22
49
  formatSignatures(signatures, usingMaxValues),
23
50
  ]);
24
- };
51
+ }
@@ -1,12 +1,12 @@
1
- import type { SmartContractAccount, SmartAccountSigner } from "@aa-sdk/core";
1
+ import type { SmartAccountSigner, SmartContractAccount } from "@aa-sdk/core";
2
2
  import {
3
- type Transport,
4
3
  type Chain,
5
4
  type Client,
6
- type PublicRpcSchema,
7
- type PublicActions,
8
5
  type Hex,
6
+ type PublicActions,
7
+ type PublicRpcSchema,
9
8
  size,
9
+ type Transport,
10
10
  } from "viem";
11
11
  import type { SignerType } from "../types";
12
12
 
@@ -29,6 +29,25 @@ type GetSignerTypeParams<
29
29
  client: TClient;
30
30
  };
31
31
 
32
+ /**
33
+ * Determines the type of signer (Externally Owned Account (EOA) or CONTRACT) based on the provided client, signature, and signer.
34
+ *
35
+ * @example
36
+ * ```ts
37
+ * import { getSignerType } from "@account-kit/smart-contracts";
38
+ * import { LocalAccountSigner } from "@aa-sdk/core";
39
+ * import { createPublicClient, generatePrivateKey } from "viem";
40
+ *
41
+ * const signer = LocalAccountSigner.privateKeyToAccountSigner(generatePrivateKey());
42
+ * const client = createPublicClient(...);
43
+ * const signature = signer.signMessage("Hello World");
44
+ *
45
+ * const signerType = await getSignerType({ client, signature, signer }); // EOA
46
+ * ```
47
+ *
48
+ * @param {GetSignerTypeParams<TTransport, TChain>} params the parameters including the client, signature, and signer
49
+ * @returns {Promise<SignerType>} A promise that resolves to the signer type, which is either "EOA" or "CONTRACT"
50
+ */
32
51
  export const getSignerType = async <
33
52
  TTransport extends Transport = Transport,
34
53
  TChain extends Chain | undefined = Chain | undefined
@@ -1,4 +1,8 @@
1
+ export type * from "./combineSignatures.js";
1
2
  export { combineSignatures } from "./combineSignatures.js";
3
+ export type * from "./formatSignatures.js";
2
4
  export { formatSignatures } from "./formatSignatures.js";
5
+ export type * from "./getSignerType.js";
3
6
  export { getSignerType } from "./getSignerType.js";
7
+ export type * from "./splitAggregatedSignature.js";
4
8
  export { splitAggregatedSignature } from "./splitAggregatedSignature.js";
@@ -82,6 +82,19 @@ export type SessionKeyPluginActions<
82
82
  }
83
83
  : {});
84
84
 
85
+ /**
86
+ * Creates actions for managing session keys in a smart contract associated with a client, including adding, removing, rotating, and updating session key permissions.
87
+ *
88
+ * @example
89
+ * ```ts
90
+ * import { createModularAccountAlchemyClient, sessionKeyPluginActions } from "@account-kit/smart-contracts";
91
+ *
92
+ * const client = createModularAccountAlchemyClient(...).extend(sessionKeyPluginActions);
93
+ * ```
94
+ *
95
+ * @param {Client<TTransport, TChain, TAccount>} client The client instance to use for managing session keys
96
+ * @returns {SessionKeyPluginActions<TAccount>} An object containing methods for session key management and interaction with the smart contract
97
+ */
85
98
  export const sessionKeyPluginActions: <
86
99
  TTransport extends Transport = Transport,
87
100
  TChain extends Chain | undefined = Chain | undefined,
@@ -1,3 +1,9 @@
1
1
  export type * from "./extension.js";
2
2
  export { sessionKeyPluginActions } from "./extension.js";
3
- export { SessionKeyPlugin } from "./plugin.js";
3
+
4
+ export {
5
+ SessionKeyPlugin,
6
+ SessionKeyPluginAbi,
7
+ SessionKeyPluginExecutionFunctionAbi,
8
+ type InstallSessionKeyPluginParams,
9
+ } from "./plugin.js";
@@ -56,6 +56,9 @@ export type GasSpendLimit = {
56
56
  refreshInterval?: number;
57
57
  };
58
58
 
59
+ /**
60
+ * A builder for creating the hex-encoded data for updating session key permissions.
61
+ */
59
62
  export class SessionKeyPermissionsBuilder {
60
63
  private _contractAccessControlType: SessionKeyAccessListType =
61
64
  SessionKeyAccessListType.ALLOWLIST;
@@ -18,14 +18,13 @@ export const SessionKeySignerSchema = z.object({
18
18
  });
19
19
 
20
20
  export type SessionKeySignerConfig = z.input<typeof SessionKeySignerSchema>;
21
+ export const SESSION_KEY_SIGNER_TYPE_PFX = "alchemy:session-key";
21
22
 
22
23
  /**
23
24
  * A simple session key signer that uses localStorage or sessionStorage to store
24
25
  * a private key. If the key is not found, it will generate a new one and store
25
26
  * it in the storage.
26
27
  */
27
-
28
- export const SESSION_KEY_SIGNER_TYPE_PFX = "alchemy:session-key";
29
28
  export class SessionKeySigner
30
29
  implements SmartAccountSigner<LocalAccountSigner<PrivateKeyAccount>>
31
30
  {
@@ -3,9 +3,34 @@ import { AccountNotFoundError } from "@aa-sdk/core";
3
3
  import type { Address, Chain, Client, Transport } from "viem";
4
4
  import { SessionKeyPlugin } from "./plugin.js";
5
5
 
6
- // find predecessors for each keys and returned the struct `ISessionKeyPlugin.SessionKeyToRemove[]`
7
- // where SessionKeyToRemove = { sessionKey: Address, predecessor: Hex }
8
- export const buildSessionKeysToRemoveStruct: <
6
+ type BuildSessionKeysToRemoveStructParams<
7
+ TAccount extends SmartContractAccount | undefined =
8
+ | SmartContractAccount
9
+ | undefined
10
+ > = {
11
+ keys: ReadonlyArray<Address>;
12
+ pluginAddress?: Address;
13
+ } & GetAccountParameter<TAccount>;
14
+
15
+ /**
16
+ * Finds predecessors for each provided key and returns them in the struct `ISessionKeyPlugin.SessionKeyToRemove[]`.
17
+ *
18
+ * @example
19
+ * ```ts
20
+ * import { buildSessionKeysToRemoveStruct } from "@account-kit/smart-contracts";
21
+ *
22
+ * const client = createSmartAccountClient(...);
23
+ *
24
+ * const keysToRemove = await buildSessionKeysToRemoveStruct(client, {
25
+ * keys: ["0x...", "0x..."],
26
+ * });
27
+ * ```
28
+ *
29
+ * @param {Client<TTransport, TChain, TAccount>} client The client instance used to interact with the smart account
30
+ * @param {BuildSessionKeysToRemoveStructParams<TAccount>} args Arguments to configure the session key removal process
31
+ * @returns {Promise<{ sessionKey: Address; predecessor: Address }[]>} A promise that resolves to an array of objects each containing a session key and its predecessor
32
+ */
33
+ export async function buildSessionKeysToRemoveStruct<
9
34
  TTransport extends Transport = Transport,
10
35
  TChain extends Chain | undefined = Chain | undefined,
11
36
  TAccount extends SmartContractAccount | undefined =
@@ -13,14 +38,10 @@ export const buildSessionKeysToRemoveStruct: <
13
38
  | undefined
14
39
  >(
15
40
  client: Client<TTransport, TChain, TAccount>,
16
- args: {
17
- keys: ReadonlyArray<Address>;
18
- pluginAddress?: Address;
19
- } & GetAccountParameter<TAccount>
20
- ) => Promise<{ sessionKey: Address; predecessor: Address }[]> = async (
21
- client,
22
- { keys, pluginAddress, account = client.account }
23
- ) => {
41
+ args: BuildSessionKeysToRemoveStructParams
42
+ ): Promise<{ sessionKey: Address; predecessor: Address }[]> {
43
+ const { keys, pluginAddress, account = client.account } = args;
44
+
24
45
  if (!account) throw new AccountNotFoundError();
25
46
 
26
47
  const contract = SessionKeyPlugin.getContract(client, pluginAddress);
@@ -37,4 +58,4 @@ export const buildSessionKeysToRemoveStruct: <
37
58
  sessionKey: key,
38
59
  predecessor,
39
60
  }));
40
- };
61
+ }