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

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 (306) 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 +4 -4
  8. package/dist/cjs/src/index.js +17 -17
  9. package/dist/cjs/src/index.js.map +1 -1
  10. package/dist/cjs/src/light-account/accounts/account.d.ts +5 -6
  11. package/dist/cjs/src/light-account/accounts/account.js +4 -3
  12. package/dist/cjs/src/light-account/accounts/account.js.map +1 -1
  13. package/dist/cjs/src/light-account/accounts/base.d.ts +7 -6
  14. package/dist/cjs/src/light-account/accounts/base.js +8 -8
  15. package/dist/cjs/src/light-account/accounts/base.js.map +1 -1
  16. package/dist/cjs/src/light-account/accounts/multiOwner.d.ts +5 -5
  17. package/dist/cjs/src/light-account/accounts/multiOwner.js +5 -6
  18. package/dist/cjs/src/light-account/accounts/multiOwner.js.map +1 -1
  19. package/dist/cjs/src/light-account/actions/transferOwnership.d.ts +1 -1
  20. package/dist/cjs/src/light-account/actions/transferOwnership.js +2 -1
  21. package/dist/cjs/src/light-account/actions/transferOwnership.js.map +1 -1
  22. package/dist/cjs/src/light-account/actions/updateOwners.js.map +1 -1
  23. package/dist/cjs/src/light-account/clients/alchemyClient.d.ts +1 -1
  24. package/dist/cjs/src/light-account/clients/alchemyClient.js.map +1 -1
  25. package/dist/cjs/src/light-account/clients/client.js +2 -1
  26. package/dist/cjs/src/light-account/clients/client.js.map +1 -1
  27. package/dist/cjs/src/light-account/clients/multiOwnerAlchemyClient.d.ts +2 -2
  28. package/dist/cjs/src/light-account/clients/multiOwnerAlchemyClient.js.map +1 -1
  29. package/dist/cjs/src/light-account/clients/multiOwnerLightAccount.js +2 -1
  30. package/dist/cjs/src/light-account/clients/multiOwnerLightAccount.js.map +1 -1
  31. package/dist/cjs/src/light-account/decorators/lightAccount.js.map +1 -1
  32. package/dist/cjs/src/light-account/decorators/multiOwnerLightAccount.js.map +1 -1
  33. package/dist/cjs/src/light-account/types.d.ts +23 -31
  34. package/dist/cjs/src/light-account/types.js.map +1 -1
  35. package/dist/cjs/src/light-account/utils.d.ts +7 -9
  36. package/dist/cjs/src/light-account/utils.js +63 -82
  37. package/dist/cjs/src/light-account/utils.js.map +1 -1
  38. package/dist/cjs/src/msca/account/multiOwnerAccount.js +2 -1
  39. package/dist/cjs/src/msca/account/multiOwnerAccount.js.map +1 -1
  40. package/dist/cjs/src/msca/account/multisigAccount.js +4 -3
  41. package/dist/cjs/src/msca/account/multisigAccount.js.map +1 -1
  42. package/dist/cjs/src/msca/account-loupe/decorator.js.map +1 -1
  43. package/dist/cjs/src/msca/client/alchemyClient.d.ts +1 -1
  44. package/dist/cjs/src/msca/client/alchemyClient.js.map +1 -1
  45. package/dist/cjs/src/msca/client/client.js.map +1 -1
  46. package/dist/cjs/src/msca/client/multiSigAlchemyClient.d.ts +1 -1
  47. package/dist/cjs/src/msca/client/multiSigAlchemyClient.js +1 -1
  48. package/dist/cjs/src/msca/client/multiSigAlchemyClient.js.map +1 -1
  49. package/dist/cjs/src/msca/errors.js.map +1 -1
  50. package/dist/cjs/src/msca/plugin-manager/decorator.d.ts +1 -1
  51. package/dist/cjs/src/msca/plugin-manager/decorator.js +6 -4
  52. package/dist/cjs/src/msca/plugin-manager/decorator.js.map +1 -1
  53. package/dist/cjs/src/msca/plugin-manager/installPlugin.js.map +1 -1
  54. package/dist/cjs/src/msca/plugins/multi-owner/extension.js.map +1 -1
  55. package/dist/cjs/src/msca/plugins/multi-owner/index.d.ts +1 -1
  56. package/dist/cjs/src/msca/plugins/multi-owner/index.js +2 -1
  57. package/dist/cjs/src/msca/plugins/multi-owner/index.js.map +1 -1
  58. package/dist/cjs/src/msca/plugins/multisig/actions/proposeUserOperation.js +2 -2
  59. package/dist/cjs/src/msca/plugins/multisig/actions/proposeUserOperation.js.map +1 -1
  60. package/dist/cjs/src/msca/plugins/multisig/actions/signMultisigUserOperation.js +1 -1
  61. package/dist/cjs/src/msca/plugins/multisig/actions/signMultisigUserOperation.js.map +1 -1
  62. package/dist/cjs/src/msca/plugins/multisig/extension.js.map +1 -1
  63. package/dist/cjs/src/msca/plugins/multisig/index.d.ts +1 -8
  64. package/dist/cjs/src/msca/plugins/multisig/index.js +1 -16
  65. package/dist/cjs/src/msca/plugins/multisig/index.js.map +1 -1
  66. package/dist/cjs/src/msca/plugins/multisig/middleware.d.ts +1 -1
  67. package/dist/cjs/src/msca/plugins/multisig/middleware.js +1 -1
  68. package/dist/cjs/src/msca/plugins/multisig/middleware.js.map +1 -1
  69. package/dist/cjs/src/msca/plugins/multisig/utils/combineSignatures.d.ts +3 -2
  70. package/dist/cjs/src/msca/plugins/multisig/utils/combineSignatures.js +2 -2
  71. package/dist/cjs/src/msca/plugins/multisig/utils/combineSignatures.js.map +1 -1
  72. package/dist/cjs/src/msca/plugins/multisig/utils/formatSignatures.js.map +1 -1
  73. package/dist/cjs/src/msca/plugins/multisig/utils/getSignerType.d.ts +2 -2
  74. package/dist/cjs/src/msca/plugins/multisig/utils/getSignerType.js.map +1 -1
  75. package/dist/cjs/src/msca/plugins/multisig/utils/index.d.ts +4 -0
  76. package/dist/cjs/src/msca/plugins/multisig/utils/index.js.map +1 -1
  77. package/dist/cjs/src/msca/plugins/multisig/utils/splitAggregatedSignature.d.ts +3 -2
  78. package/dist/cjs/src/msca/plugins/multisig/utils/splitAggregatedSignature.js.map +1 -1
  79. package/dist/cjs/src/msca/plugins/session-key/extension.js.map +1 -1
  80. package/dist/cjs/src/msca/plugins/session-key/index.d.ts +1 -1
  81. package/dist/cjs/src/msca/plugins/session-key/index.js +3 -1
  82. package/dist/cjs/src/msca/plugins/session-key/index.js.map +1 -1
  83. package/dist/cjs/src/msca/plugins/session-key/permissions.js.map +1 -1
  84. package/dist/cjs/src/msca/plugins/session-key/signer.js.map +1 -1
  85. package/dist/cjs/src/msca/plugins/session-key/utils.d.ts +4 -2
  86. package/dist/cjs/src/msca/plugins/session-key/utils.js +3 -2
  87. package/dist/cjs/src/msca/plugins/session-key/utils.js.map +1 -1
  88. package/dist/cjs/src/msca/utils.d.ts +6 -4
  89. package/dist/cjs/src/msca/utils.js +11 -10
  90. package/dist/cjs/src/msca/utils.js.map +1 -1
  91. package/dist/esm/plugindefs/multi-owner/config.js +1 -2
  92. package/dist/esm/plugindefs/multi-owner/config.js.map +1 -1
  93. package/dist/esm/plugindefs/multisig/config.js +1 -1
  94. package/dist/esm/plugindefs/multisig/config.js.map +1 -1
  95. package/dist/esm/plugindefs/session-key/config.js +1 -1
  96. package/dist/esm/plugindefs/session-key/config.js.map +1 -1
  97. package/dist/esm/src/index.d.ts +4 -4
  98. package/dist/esm/src/index.js +3 -3
  99. package/dist/esm/src/index.js.map +1 -1
  100. package/dist/esm/src/light-account/accounts/account.d.ts +5 -6
  101. package/dist/esm/src/light-account/accounts/account.js +5 -4
  102. package/dist/esm/src/light-account/accounts/account.js.map +1 -1
  103. package/dist/esm/src/light-account/accounts/base.d.ts +7 -6
  104. package/dist/esm/src/light-account/accounts/base.js +8 -8
  105. package/dist/esm/src/light-account/accounts/base.js.map +1 -1
  106. package/dist/esm/src/light-account/accounts/multiOwner.d.ts +5 -5
  107. package/dist/esm/src/light-account/accounts/multiOwner.js +6 -7
  108. package/dist/esm/src/light-account/accounts/multiOwner.js.map +1 -1
  109. package/dist/esm/src/light-account/actions/transferOwnership.d.ts +1 -1
  110. package/dist/esm/src/light-account/actions/transferOwnership.js +2 -1
  111. package/dist/esm/src/light-account/actions/transferOwnership.js.map +1 -1
  112. package/dist/esm/src/light-account/actions/updateOwners.js.map +1 -1
  113. package/dist/esm/src/light-account/clients/alchemyClient.d.ts +1 -1
  114. package/dist/esm/src/light-account/clients/alchemyClient.js.map +1 -1
  115. package/dist/esm/src/light-account/clients/client.js +2 -1
  116. package/dist/esm/src/light-account/clients/client.js.map +1 -1
  117. package/dist/esm/src/light-account/clients/multiOwnerAlchemyClient.d.ts +2 -2
  118. package/dist/esm/src/light-account/clients/multiOwnerAlchemyClient.js.map +1 -1
  119. package/dist/esm/src/light-account/clients/multiOwnerLightAccount.js +2 -1
  120. package/dist/esm/src/light-account/clients/multiOwnerLightAccount.js.map +1 -1
  121. package/dist/esm/src/light-account/decorators/lightAccount.js.map +1 -1
  122. package/dist/esm/src/light-account/decorators/multiOwnerLightAccount.js.map +1 -1
  123. package/dist/esm/src/light-account/types.d.ts +23 -31
  124. package/dist/esm/src/light-account/types.js.map +1 -1
  125. package/dist/esm/src/light-account/utils.d.ts +7 -9
  126. package/dist/esm/src/light-account/utils.js +60 -79
  127. package/dist/esm/src/light-account/utils.js.map +1 -1
  128. package/dist/esm/src/msca/account/multiOwnerAccount.js +2 -1
  129. package/dist/esm/src/msca/account/multiOwnerAccount.js.map +1 -1
  130. package/dist/esm/src/msca/account/multisigAccount.js +4 -3
  131. package/dist/esm/src/msca/account/multisigAccount.js.map +1 -1
  132. package/dist/esm/src/msca/account-loupe/decorator.js.map +1 -1
  133. package/dist/esm/src/msca/client/alchemyClient.d.ts +1 -1
  134. package/dist/esm/src/msca/client/alchemyClient.js.map +1 -1
  135. package/dist/esm/src/msca/client/client.js.map +1 -1
  136. package/dist/esm/src/msca/client/multiSigAlchemyClient.d.ts +1 -1
  137. package/dist/esm/src/msca/client/multiSigAlchemyClient.js +1 -1
  138. package/dist/esm/src/msca/client/multiSigAlchemyClient.js.map +1 -1
  139. package/dist/esm/src/msca/errors.js.map +1 -1
  140. package/dist/esm/src/msca/plugin-manager/decorator.d.ts +1 -1
  141. package/dist/esm/src/msca/plugin-manager/decorator.js +6 -4
  142. package/dist/esm/src/msca/plugin-manager/decorator.js.map +1 -1
  143. package/dist/esm/src/msca/plugin-manager/installPlugin.js.map +1 -1
  144. package/dist/esm/src/msca/plugins/multi-owner/extension.js.map +1 -1
  145. package/dist/esm/src/msca/plugins/multi-owner/index.d.ts +1 -1
  146. package/dist/esm/src/msca/plugins/multi-owner/index.js +1 -1
  147. package/dist/esm/src/msca/plugins/multi-owner/index.js.map +1 -1
  148. package/dist/esm/src/msca/plugins/multisig/actions/proposeUserOperation.js +1 -1
  149. package/dist/esm/src/msca/plugins/multisig/actions/proposeUserOperation.js.map +1 -1
  150. package/dist/esm/src/msca/plugins/multisig/actions/signMultisigUserOperation.js +1 -1
  151. package/dist/esm/src/msca/plugins/multisig/actions/signMultisigUserOperation.js.map +1 -1
  152. package/dist/esm/src/msca/plugins/multisig/extension.js.map +1 -1
  153. package/dist/esm/src/msca/plugins/multisig/index.d.ts +1 -8
  154. package/dist/esm/src/msca/plugins/multisig/index.js +0 -7
  155. package/dist/esm/src/msca/plugins/multisig/index.js.map +1 -1
  156. package/dist/esm/src/msca/plugins/multisig/middleware.d.ts +1 -1
  157. package/dist/esm/src/msca/plugins/multisig/middleware.js +2 -1
  158. package/dist/esm/src/msca/plugins/multisig/middleware.js.map +1 -1
  159. package/dist/esm/src/msca/plugins/multisig/utils/combineSignatures.d.ts +3 -2
  160. package/dist/esm/src/msca/plugins/multisig/utils/combineSignatures.js +2 -2
  161. package/dist/esm/src/msca/plugins/multisig/utils/combineSignatures.js.map +1 -1
  162. package/dist/esm/src/msca/plugins/multisig/utils/formatSignatures.js.map +1 -1
  163. package/dist/esm/src/msca/plugins/multisig/utils/getSignerType.d.ts +2 -2
  164. package/dist/esm/src/msca/plugins/multisig/utils/getSignerType.js.map +1 -1
  165. package/dist/esm/src/msca/plugins/multisig/utils/index.d.ts +4 -0
  166. package/dist/esm/src/msca/plugins/multisig/utils/index.js.map +1 -1
  167. package/dist/esm/src/msca/plugins/multisig/utils/splitAggregatedSignature.d.ts +3 -2
  168. package/dist/esm/src/msca/plugins/multisig/utils/splitAggregatedSignature.js.map +1 -1
  169. package/dist/esm/src/msca/plugins/session-key/extension.js.map +1 -1
  170. package/dist/esm/src/msca/plugins/session-key/index.d.ts +1 -1
  171. package/dist/esm/src/msca/plugins/session-key/index.js +1 -1
  172. package/dist/esm/src/msca/plugins/session-key/index.js.map +1 -1
  173. package/dist/esm/src/msca/plugins/session-key/permissions.js.map +1 -1
  174. package/dist/esm/src/msca/plugins/session-key/signer.js.map +1 -1
  175. package/dist/esm/src/msca/plugins/session-key/utils.d.ts +4 -2
  176. package/dist/esm/src/msca/plugins/session-key/utils.js +3 -2
  177. package/dist/esm/src/msca/plugins/session-key/utils.js.map +1 -1
  178. package/dist/esm/src/msca/utils.d.ts +6 -4
  179. package/dist/esm/src/msca/utils.js +2 -1
  180. package/dist/esm/src/msca/utils.js.map +1 -1
  181. package/dist/types/plugindefs/multi-owner/config.d.ts.map +1 -1
  182. package/dist/types/src/index.d.ts +4 -4
  183. package/dist/types/src/index.d.ts.map +1 -1
  184. package/dist/types/src/light-account/accounts/account.d.ts +5 -6
  185. package/dist/types/src/light-account/accounts/account.d.ts.map +1 -1
  186. package/dist/types/src/light-account/accounts/base.d.ts +7 -6
  187. package/dist/types/src/light-account/accounts/base.d.ts.map +1 -1
  188. package/dist/types/src/light-account/accounts/multiOwner.d.ts +5 -5
  189. package/dist/types/src/light-account/accounts/multiOwner.d.ts.map +1 -1
  190. package/dist/types/src/light-account/actions/transferOwnership.d.ts +26 -1
  191. package/dist/types/src/light-account/actions/transferOwnership.d.ts.map +1 -1
  192. package/dist/types/src/light-account/actions/updateOwners.d.ts +24 -0
  193. package/dist/types/src/light-account/actions/updateOwners.d.ts.map +1 -1
  194. package/dist/types/src/light-account/clients/alchemyClient.d.ts +1 -1
  195. package/dist/types/src/light-account/clients/alchemyClient.d.ts.map +1 -1
  196. package/dist/types/src/light-account/clients/multiOwnerAlchemyClient.d.ts +2 -2
  197. package/dist/types/src/light-account/clients/multiOwnerAlchemyClient.d.ts.map +1 -1
  198. package/dist/types/src/light-account/decorators/lightAccount.d.ts +19 -0
  199. package/dist/types/src/light-account/decorators/lightAccount.d.ts.map +1 -1
  200. package/dist/types/src/light-account/decorators/multiOwnerLightAccount.d.ts +19 -0
  201. package/dist/types/src/light-account/decorators/multiOwnerLightAccount.d.ts.map +1 -1
  202. package/dist/types/src/light-account/types.d.ts +23 -118
  203. package/dist/types/src/light-account/types.d.ts.map +1 -1
  204. package/dist/types/src/light-account/utils.d.ts +22 -44
  205. package/dist/types/src/light-account/utils.d.ts.map +1 -1
  206. package/dist/types/src/msca/account/multisigAccount.d.ts.map +1 -1
  207. package/dist/types/src/msca/account-loupe/decorator.d.ts +15 -0
  208. package/dist/types/src/msca/account-loupe/decorator.d.ts.map +1 -1
  209. package/dist/types/src/msca/client/alchemyClient.d.ts +1 -1
  210. package/dist/types/src/msca/client/alchemyClient.d.ts.map +1 -1
  211. package/dist/types/src/msca/client/client.d.ts.map +1 -1
  212. package/dist/types/src/msca/client/multiSigAlchemyClient.d.ts +1 -1
  213. package/dist/types/src/msca/client/multiSigAlchemyClient.d.ts.map +1 -1
  214. package/dist/types/src/msca/errors.d.ts +12 -0
  215. package/dist/types/src/msca/errors.d.ts.map +1 -1
  216. package/dist/types/src/msca/plugin-manager/decorator.d.ts +16 -1
  217. package/dist/types/src/msca/plugin-manager/decorator.d.ts.map +1 -1
  218. package/dist/types/src/msca/plugin-manager/installPlugin.d.ts +21 -0
  219. package/dist/types/src/msca/plugin-manager/installPlugin.d.ts.map +1 -1
  220. package/dist/types/src/msca/plugins/multi-owner/extension.d.ts +15 -0
  221. package/dist/types/src/msca/plugins/multi-owner/extension.d.ts.map +1 -1
  222. package/dist/types/src/msca/plugins/multi-owner/index.d.ts +1 -1
  223. package/dist/types/src/msca/plugins/multi-owner/index.d.ts.map +1 -1
  224. package/dist/types/src/msca/plugins/multisig/actions/proposeUserOperation.d.ts.map +1 -1
  225. package/dist/types/src/msca/plugins/multisig/actions/signMultisigUserOperation.d.ts.map +1 -1
  226. package/dist/types/src/msca/plugins/multisig/extension.d.ts +13 -0
  227. package/dist/types/src/msca/plugins/multisig/extension.d.ts.map +1 -1
  228. package/dist/types/src/msca/plugins/multisig/index.d.ts +1 -8
  229. package/dist/types/src/msca/plugins/multisig/index.d.ts.map +1 -1
  230. package/dist/types/src/msca/plugins/multisig/middleware.d.ts +7 -7
  231. package/dist/types/src/msca/plugins/multisig/middleware.d.ts.map +1 -1
  232. package/dist/types/src/msca/plugins/multisig/utils/combineSignatures.d.ts +28 -2
  233. package/dist/types/src/msca/plugins/multisig/utils/combineSignatures.d.ts.map +1 -1
  234. package/dist/types/src/msca/plugins/multisig/utils/formatSignatures.d.ts +3 -3
  235. package/dist/types/src/msca/plugins/multisig/utils/getSignerType.d.ts +21 -2
  236. package/dist/types/src/msca/plugins/multisig/utils/getSignerType.d.ts.map +1 -1
  237. package/dist/types/src/msca/plugins/multisig/utils/index.d.ts +4 -0
  238. package/dist/types/src/msca/plugins/multisig/utils/index.d.ts.map +1 -1
  239. package/dist/types/src/msca/plugins/multisig/utils/splitAggregatedSignature.d.ts +13 -12
  240. package/dist/types/src/msca/plugins/multisig/utils/splitAggregatedSignature.d.ts.map +1 -1
  241. package/dist/types/src/msca/plugins/session-key/extension.d.ts +13 -0
  242. package/dist/types/src/msca/plugins/session-key/extension.d.ts.map +1 -1
  243. package/dist/types/src/msca/plugins/session-key/index.d.ts +1 -1
  244. package/dist/types/src/msca/plugins/session-key/index.d.ts.map +1 -1
  245. package/dist/types/src/msca/plugins/session-key/permissions.d.ts +150 -1
  246. package/dist/types/src/msca/plugins/session-key/permissions.d.ts.map +1 -1
  247. package/dist/types/src/msca/plugins/session-key/signer.d.ts +72 -2
  248. package/dist/types/src/msca/plugins/session-key/signer.d.ts.map +1 -1
  249. package/dist/types/src/msca/plugins/session-key/utils.d.ts +22 -2
  250. package/dist/types/src/msca/plugins/session-key/utils.d.ts.map +1 -1
  251. package/dist/types/src/msca/utils.d.ts +48 -10
  252. package/dist/types/src/msca/utils.d.ts.map +1 -1
  253. package/package.json +7 -6
  254. package/plugindefs/multi-owner/config.ts +1 -2
  255. package/plugindefs/multisig/config.ts +1 -1
  256. package/plugindefs/session-key/config.ts +1 -1
  257. package/src/index.ts +3 -4
  258. package/src/light-account/accounts/account.ts +46 -48
  259. package/src/light-account/accounts/base.ts +39 -68
  260. package/src/light-account/accounts/multiOwner.ts +55 -48
  261. package/src/light-account/actions/transferOwnership.ts +28 -5
  262. package/src/light-account/actions/updateOwners.ts +24 -0
  263. package/src/light-account/clients/alchemyClient.ts +21 -1
  264. package/src/light-account/clients/client.ts +27 -6
  265. package/src/light-account/clients/multiOwnerAlchemyClient.ts +22 -2
  266. package/src/light-account/clients/multiOwnerLightAccount.ts +27 -6
  267. package/src/light-account/decorators/lightAccount.ts +19 -0
  268. package/src/light-account/decorators/multiOwnerLightAccount.ts +19 -0
  269. package/src/light-account/types.ts +31 -188
  270. package/src/light-account/utils.ts +99 -231
  271. package/src/msca/account/multiOwnerAccount.ts +36 -11
  272. package/src/msca/account/multisigAccount.ts +40 -14
  273. package/src/msca/account-loupe/decorator.ts +15 -0
  274. package/src/msca/client/alchemyClient.ts +21 -1
  275. package/src/msca/client/client.ts +46 -0
  276. package/src/msca/client/multiSigAlchemyClient.ts +26 -4
  277. package/src/msca/errors.ts +12 -0
  278. package/src/msca/plugin-manager/decorator.ts +22 -5
  279. package/src/msca/plugin-manager/installPlugin.ts +21 -0
  280. package/src/msca/plugins/multi-owner/extension.ts +15 -0
  281. package/src/msca/plugins/multi-owner/index.ts +3 -0
  282. package/src/msca/plugins/multisig/actions/proposeUserOperation.ts +1 -1
  283. package/src/msca/plugins/multisig/actions/signMultisigUserOperation.ts +1 -1
  284. package/src/msca/plugins/multisig/extension.ts +13 -0
  285. package/src/msca/plugins/multisig/index.ts +1 -12
  286. package/src/msca/plugins/multisig/middleware.ts +8 -8
  287. package/src/msca/plugins/multisig/utils/combineSignatures.ts +36 -9
  288. package/src/msca/plugins/multisig/utils/formatSignatures.ts +3 -3
  289. package/src/msca/plugins/multisig/utils/getSignerType.ts +23 -4
  290. package/src/msca/plugins/multisig/utils/index.ts +4 -0
  291. package/src/msca/plugins/multisig/utils/splitAggregatedSignature.ts +15 -12
  292. package/src/msca/plugins/session-key/extension.ts +13 -0
  293. package/src/msca/plugins/session-key/index.ts +7 -1
  294. package/src/msca/plugins/session-key/permissions.ts +150 -1
  295. package/src/msca/plugins/session-key/signer.ts +72 -3
  296. package/src/msca/plugins/session-key/utils.ts +33 -12
  297. package/src/msca/utils.ts +78 -21
  298. package/dist/cjs/src/light-account/schema.d.ts +0 -21
  299. package/dist/cjs/src/light-account/schema.js +0 -30
  300. package/dist/cjs/src/light-account/schema.js.map +0 -1
  301. package/dist/esm/src/light-account/schema.d.ts +0 -21
  302. package/dist/esm/src/light-account/schema.js +0 -27
  303. package/dist/esm/src/light-account/schema.js.map +0 -1
  304. package/dist/types/src/light-account/schema.d.ts +0 -22
  305. package/dist/types/src/light-account/schema.d.ts.map +0 -1
  306. package/src/light-account/schema.ts +0 -39
@@ -19,15 +19,23 @@ export type SplitAggregateSignatureParams<
19
19
  account: SmartContractAccount;
20
20
  request: UserOperationRequest<TEntryPointVersion>;
21
21
  };
22
+
23
+ export type SplitAggregateSignatureResult = {
24
+ upperLimitPvg: Hex;
25
+ upperLimitMaxFeePerGas: Hex;
26
+ upperLimitMaxPriorityFeePerGas: Hex;
27
+ signatures: Signature[];
28
+ };
29
+
22
30
  /**
23
31
  * Takes an aggregated signature and threshold and splits it into its components
24
32
  *
25
- * @param args - the arguments for the split
26
- * @param args.aggregateSignature - the aggregated signature to split
27
- * @param args.threshold - the threshold for the signature
28
- * @param args.account - the account which the signature is valid for
29
- * @param args.request - the user operation request that the signature is for
30
- * @returns the signature split into its upper limits and current signatures
33
+ * @param {SplitAggregateSignatureParams<TAccount>} args - the arguments for the split
34
+ * @param {Hex} args.aggregateSignature - the aggregated signature to split
35
+ * @param {number} args.threshold - the threshold for the signature
36
+ * @param {SmartContractAccount} args.account - the account which the signature is valid for
37
+ * @param {UserOperationRequest<TEntryPointVersion>} args.request - the user operation request that the signature is for
38
+ * @returns {Promise<SplitAggregateSignatureResult>} the signature split into its upper limits and current signatures
31
39
  */
32
40
  export const splitAggregatedSignature = async <
33
41
  TAccount extends SmartContractAccount | undefined =
@@ -35,12 +43,7 @@ export const splitAggregatedSignature = async <
35
43
  | undefined
36
44
  >(
37
45
  args: SplitAggregateSignatureParams<TAccount>
38
- ): Promise<{
39
- upperLimitPvg: Hex;
40
- upperLimitMaxFeePerGas: Hex;
41
- upperLimitMaxPriorityFeePerGas: Hex;
42
- signatures: Signature[];
43
- }> => {
46
+ ): Promise<SplitAggregateSignatureResult> => {
44
47
  const { aggregatedSignature, threshold, account, request } = args;
45
48
  if (aggregatedSignature.length < 192 + (65 * threshold - 1)) {
46
49
  throw new InvalidAggregatedSignatureError();
@@ -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;
@@ -67,46 +70,192 @@ export class SessionKeyPermissionsBuilder {
67
70
  private _gasSpendLimit?: GasSpendLimit;
68
71
  private _requiredPaymaster?: Address;
69
72
 
73
+ /**
74
+ * Sets the access control type for the contract and returns the current instance for method chaining.
75
+ *
76
+ * @example
77
+ * ```ts
78
+ * import { SessionKeyPermissionsBuilder } from "@account-kit/smart-contracts";
79
+ *
80
+ * const builder = new SessionKeyPermissionsBuilder();
81
+ * builder.setContractAccessControlType(SessionKeyAccessListType.ALLOWLIST);
82
+ * ```
83
+ *
84
+ * @param {SessionKeyAccessListType} aclType The access control type for the session key
85
+ * @returns {SessionKeyPermissionsBuilder} The current instance for method chaining
86
+ */
70
87
  public setContractAccessControlType(aclType: SessionKeyAccessListType) {
71
88
  this._contractAccessControlType = aclType;
72
89
  return this;
73
90
  }
74
91
 
92
+ /**
93
+ * Adds a contract access entry to the internal list of contract address access entries.
94
+ *
95
+ * @example
96
+ * ```ts
97
+ * import { SessionKeyPermissionsBuilder } from "@account-kit/smart-contracts";
98
+ *
99
+ * const builder = new SessionKeyPermissionsBuilder();
100
+ * builder.addContractAddressAccessEntry({
101
+ * contractAddress: "0x1234",
102
+ * isOnList: true,
103
+ * checkSelectors: true,
104
+ * });
105
+ * ```
106
+ *
107
+ * @param {ContractAccessEntry} entry the contract access entry to be added
108
+ * @returns {SessionKeyPermissionsBuilder} the instance of the current class for chaining
109
+ */
75
110
  public addContractAddressAccessEntry(entry: ContractAccessEntry) {
76
111
  this._contractAddressAccessEntrys.push(entry);
77
112
  return this;
78
113
  }
79
114
 
115
+ /**
116
+ * Adds a contract method entry to the `_contractMethodAccessEntrys` array.
117
+ *
118
+ * @example
119
+ * ```ts
120
+ * import { SessionKeyPermissionsBuilder } from "@account-kit/smart-contracts";
121
+ *
122
+ * const builder = new SessionKeyPermissionsBuilder();
123
+ * builder.addContractAddressAccessEntry({
124
+ * contractAddress: "0x1234",
125
+ * methodSelector: "0x45678",
126
+ * isOnList: true,
127
+ * });
128
+ * ```
129
+ *
130
+ * @param {ContractMethodEntry} entry The contract method entry to be added
131
+ * @returns {SessionKeyPermissionsBuilder} The instance of the class for method chaining
132
+ */
80
133
  public addContractFunctionAccessEntry(entry: ContractMethodEntry) {
81
134
  this._contractMethodAccessEntrys.push(entry);
82
135
  return this;
83
136
  }
84
137
 
138
+ /**
139
+ * Sets the time range for an object and returns the object itself for chaining.
140
+ *
141
+ * @example
142
+ * ```ts
143
+ * import { SessionKeyPermissionsBuilder } from "@account-kit/smart-contracts";
144
+ *
145
+ * const builder = new SessionKeyPermissionsBuilder();
146
+ * builder.setTimeRange({
147
+ * validFrom: Date.now(),
148
+ * validUntil: Date.now() + (15 * 60 * 1000),
149
+ * });
150
+ * ```
151
+ *
152
+ * @param {TimeRange} timeRange The time range to be set
153
+ * @returns {SessionKeyPermissionsBuilder} The current object for method chaining
154
+ */
85
155
  public setTimeRange(timeRange: TimeRange) {
86
156
  this._timeRange = timeRange;
87
157
  return this;
88
158
  }
89
159
 
160
+ /**
161
+ * Sets the native token spend limit and returns the instance for chaining.
162
+ *
163
+ * @example
164
+ * ```ts
165
+ * import { SessionKeyPermissionsBuilder } from "@account-kit/smart-contracts";
166
+ *
167
+ * const builder = new SessionKeyPermissionsBuilder();
168
+ * builder.setNativeTokenSpendLimit({
169
+ * spendLimit: 1000000000000000000n,
170
+ * refreshInterval: 3600,
171
+ * });
172
+ * ```
173
+ *
174
+ * @param {NativeTokenLimit} limit The limit to set for native token spending
175
+ * @returns {SessionKeyPermissionsBuilder} The instance for chaining
176
+ */
90
177
  public setNativeTokenSpendLimit(limit: NativeTokenLimit) {
91
178
  this._nativeTokenSpendLimit = limit;
92
179
  return this;
93
180
  }
94
181
 
182
+ /**
183
+ * Adds an ERC20 token spend limit to the list of limits and returns the updated object.
184
+ *
185
+ * @example
186
+ * ```ts
187
+ * import { SessionKeyPermissionsBuilder } from "@account-kit/smart-contracts";
188
+ *
189
+ * const builder = new SessionKeyPermissionsBuilder();
190
+ * builder.addErc20TokenSpendLimit({
191
+ * tokenAddress: "0x1234",
192
+ * spendLimit: 1000000000000000000n,
193
+ * refreshInterval: 3600,
194
+ * });
195
+ * ```
196
+ *
197
+ * @param {Erc20TokenLimit} limit The ERC20 token spend limit to be added
198
+ * @returns {object} The updated object with the new ERC20 token spend limit
199
+ */
95
200
  public addErc20TokenSpendLimit(limit: Erc20TokenLimit) {
96
201
  this._erc20TokenSpendLimits.push(limit);
97
202
  return this;
98
203
  }
99
204
 
100
- public setGasSpendLimit(limit: GasSpendLimit) {
205
+ /**
206
+ * Sets the gas spend limit and returns the current instance for method chaining.
207
+ *
208
+ * @example
209
+ * ```ts
210
+ * import { SessionKeyPermissionsBuilder } from "@account-kit/smart-contracts";
211
+ *
212
+ * const builder = new SessionKeyPermissionsBuilder();
213
+ * builder.setGasSpendLimit({
214
+ * spendLimit: 1000000000000000000n,
215
+ * refreshInterval: 3600,
216
+ * });
217
+ * ```
218
+ *
219
+ * @param {GasSpendLimit} limit - The gas spend limit to be set
220
+ * @returns {SessionKeyPermissionsBuilder} The current instance for chaining
221
+ */ public setGasSpendLimit(limit: GasSpendLimit) {
101
222
  this._gasSpendLimit = limit;
102
223
  return this;
103
224
  }
104
225
 
226
+ /**
227
+ * Sets the required paymaster address.
228
+ *
229
+ * @example
230
+ * ```ts
231
+ * import { SessionKeyPermissionsBuilder } from "@account-kit/smart-contracts";
232
+ *
233
+ * const builder = new SessionKeyPermissionsBuilder();
234
+ * builder.setRequiredPaymaster("0x1234");
235
+ * ```
236
+ *
237
+ * @param {Address} paymaster the address of the paymaster to be set
238
+ * @returns {SessionKeyPermissionsBuilder} the current instance for method chaining
239
+ */
105
240
  public setRequiredPaymaster(paymaster: Address) {
106
241
  this._requiredPaymaster = paymaster;
107
242
  return this;
108
243
  }
109
244
 
245
+ /**
246
+ * Encodes various function calls into an array of hexadecimal strings based on the provided permissions and limits.
247
+ *
248
+ * @example
249
+ * ```ts
250
+ * import { SessionKeyPermissionsBuilder } from "@account-kit/smart-contracts";
251
+ *
252
+ * const builder = new SessionKeyPermissionsBuilder();
253
+ * builder.setRequiredPaymaster("0x1234");
254
+ * const encoded = builder.encode();
255
+ * ```
256
+ *
257
+ * @returns {Hex[]} An array of encoded hexadecimal strings representing the function calls for setting access control, permissions, and limits.
258
+ */
110
259
  public encode(): Hex[] {
111
260
  return [
112
261
  encodeFunctionData({
@@ -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
  {
@@ -34,6 +33,18 @@ export class SessionKeySigner
34
33
  private storageType: "local-storage" | "session-storage" | Storage;
35
34
  private storageKey: string;
36
35
 
36
+ /**
37
+ * Initializes a new instance of a session key signer with the provided configuration. This will set the `signerType`, `storageKey`, and `storageType`. It will also manage the session key, either fetching it from storage or generating a new one if it doesn't exist.
38
+ *
39
+ * @example
40
+ * ```ts
41
+ * import { SessionKeySigner } from "@account-kit/smart-contracts";
42
+ *
43
+ * const signer = new SessionKeySigner();
44
+ * ```
45
+ *
46
+ * @param {SessionKeySignerConfig} config_ the configuration for initializing the session key signer
47
+ */
37
48
  constructor(config_: SessionKeySignerConfig = {}) {
38
49
  const config = SessionKeySignerSchema.parse(config_);
39
50
  this.signerType = `${SESSION_KEY_SIGNER_TYPE_PFX}`;
@@ -61,16 +72,66 @@ export class SessionKeySigner
61
72
  this.inner = LocalAccountSigner.privateKeyToAccountSigner(sessionKey);
62
73
  }
63
74
 
75
+ /**
76
+ * An async function that retrieves the address using the inner object's `getAddress` method.
77
+ *
78
+ * @example
79
+ * ```ts
80
+ * import { SessionKeySigner } from "@account-kit/smart-contracts";
81
+ *
82
+ * const signer = new SessionKeySigner();
83
+ * const sessionKeyAddress = await signer.getAddress();
84
+ * ```
85
+ *
86
+ * @returns {Promise<string>} A promise that resolves to the address as a string
87
+ */
64
88
  getAddress: () => Promise<`0x${string}`> = async () => {
65
89
  return this.inner.getAddress();
66
90
  };
67
91
 
92
+ /**
93
+ * Signs a message using the inner signer.
94
+ *
95
+ * @example
96
+ * ```ts
97
+ * import { SessionKeySigner } from "@account-kit/smart-contracts";
98
+ *
99
+ * const signer = new SessionKeySigner();
100
+ * const sessionKeyAddress = await signer.signMessage("hello");
101
+ * ```
102
+ *
103
+ * @param {SignableMessage} msg The message to sign
104
+ * @returns {Promise<Hex>} A promise that resolves to the signed message
105
+ */
68
106
  signMessage: (msg: SignableMessage) => Promise<`0x${string}`> = async (
69
107
  msg
70
108
  ) => {
71
109
  return this.inner.signMessage(msg);
72
110
  };
73
111
 
112
+ /**
113
+ * Signs the provided typed data using the inner signer.
114
+ *
115
+ * @example
116
+ * ```ts
117
+ * import { SessionKeySigner } from "@account-kit/smart-contracts";
118
+ *
119
+ * const signer = new SessionKeySigner();
120
+ * console.log(await signer.signTypedData({
121
+ * types: {
122
+ * "Message": [{ name: "content", type: "string" }]
123
+ * },
124
+ * primaryType: "Message",
125
+ * message: { content: "Hello" },
126
+ * }));
127
+ * ```
128
+ *
129
+ * @template TTypedData - The typed data type, which extends `TypedData` or a record of unknown keys to unknown values.
130
+ * @template TPrimaryType - The primary type of the typed data.
131
+ *
132
+ * @param {TypedDataDefinition<TTypedData, TPrimaryType>} params The parameters containing the typed data definition and primary type.
133
+ * @returns {Promise<string>} A promise that resolves to the signed typed data as a string.
134
+ */
74
135
  signTypedData = async <
75
136
  const TTypedData extends TypedData | { [key: string]: unknown },
76
137
  TPrimaryType extends string = string
@@ -83,7 +144,15 @@ export class SessionKeySigner
83
144
  /**
84
145
  * Generates a new private key and stores it in the storage.
85
146
  *
86
- * @returns The public address of the new key.
147
+ * @example
148
+ * ```ts
149
+ * import { SessionKeySigner } from "@account-kit/smart-contracts";
150
+ *
151
+ * const signer = new SessionKeySigner();
152
+ * const newSessionKey = signer.generateNewKey();
153
+ * ```
154
+ *
155
+ * @returns {Address} The public address of the new key.
87
156
  */
88
157
  generateNewKey = () => {
89
158
  const storage =
@@ -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
+ }
package/src/msca/utils.ts CHANGED
@@ -1,6 +1,14 @@
1
1
  import {
2
2
  AccountNotFoundError,
3
3
  ChainNotFoundError,
4
+ type GetAccountParameter,
5
+ type SmartAccountClient,
6
+ type SmartAccountSigner,
7
+ type SmartContractAccount,
8
+ type SmartContractAccountWithSigner,
9
+ type UpgradeToData,
10
+ } from "@aa-sdk/core";
11
+ import {
4
12
  arbitrum,
5
13
  arbitrumSepolia,
6
14
  base,
@@ -11,13 +19,7 @@ import {
11
19
  polygon,
12
20
  polygonAmoy,
13
21
  sepolia,
14
- type GetAccountParameter,
15
- type SmartAccountClient,
16
- type SmartAccountSigner,
17
- type SmartContractAccount,
18
- type SmartContractAccountWithSigner,
19
- type UpgradeToData,
20
- } from "@aa-sdk/core";
22
+ } from "@account-kit/infra";
21
23
  import type { Address, Chain, Transport } from "viem";
22
24
  import {
23
25
  custom,
@@ -37,10 +39,10 @@ import {
37
39
  import { MultiOwnerPlugin } from "./plugins/multi-owner/plugin.js";
38
40
 
39
41
  /**
40
- * Utility method returning the default multi sig msca factory address given a {@link Chain} object
42
+ * Utility method returning the default multi sig msca factory address given a chain
41
43
  *
42
- * @param chain - a {@link Chain} object
43
- * @returns a {@link Address} for the given chain
44
+ * @param {Chain} chain the chain object for which to get the address
45
+ * @returns {Address} the address for the given chain
44
46
  * @throws if the chain doesn't have an address currently deployed
45
47
  */
46
48
  export const getDefaultMultisigModularAccountFactoryAddress = (
@@ -63,10 +65,10 @@ export const getDefaultMultisigModularAccountFactoryAddress = (
63
65
  };
64
66
 
65
67
  /**
66
- * Utility method returning the default multi owner msca factory address given a {@link Chain} object
68
+ * Utility method returning the default multi owner msca factory address given a chain
67
69
  *
68
- * @param chain - a {@link Chain} object
69
- * @returns a {@link Address} for the given chain
70
+ * @param {Chain} chain the chain object for which to get the address
71
+ * @returns {Address} the address for the given chain
70
72
  * @throws if the chain doesn't have an address currently deployed
71
73
  */
72
74
  export const getDefaultMultiOwnerModularAccountFactoryAddress = (
@@ -78,6 +80,30 @@ export const getDefaultMultiOwnerModularAccountFactoryAddress = (
78
80
  }
79
81
  };
80
82
 
83
+ export type GetMSCAUpgradeToData<
84
+ TSigner extends SmartAccountSigner = SmartAccountSigner,
85
+ TAccount extends
86
+ | SmartContractAccountWithSigner<string, TSigner>
87
+ | undefined = SmartContractAccountWithSigner<string, TSigner> | undefined
88
+ > = {
89
+ multiOwnerPluginAddress?: Address;
90
+ } & GetAccountParameter<TAccount>;
91
+
92
+ /**
93
+ * Retrieves the data necessary to upgrade to a Multi-Signature Contract Account (MSCA) and provides a method to create a Multi-Owner Modular Account.
94
+ *
95
+ * @example
96
+ * ```ts
97
+ * import { createLightAccountClient, getMSCAUpgradeToData } from "@account-kit/smart-contracts";
98
+ *
99
+ * const client = createLightAccountClient(...);
100
+ * const upgradeData = await getMSCAUpgradeToData(client, {});
101
+ * ```
102
+ *
103
+ * @param {SmartAccountClient<TTransport, TChain, TAccount>} client The smart account client
104
+ * @param {GetMSCAUpgradeToData<TSigner, TAccount>} args The arguments required for the upgrade
105
+ * @returns {Promise<UpgradeToData & { createMAAccount: () => Promise<MultiOwnerModularAccount<TSigner>>}>} A promise that resolves to upgrade data augmented with a function to create a Multi-Owner Modular Account
106
+ */
81
107
  export async function getMSCAUpgradeToData<
82
108
  TTransport extends Transport = Transport,
83
109
  TChain extends Chain | undefined = Chain | undefined,
@@ -87,9 +113,7 @@ export async function getMSCAUpgradeToData<
87
113
  | undefined = SmartContractAccountWithSigner<string, TSigner> | undefined
88
114
  >(
89
115
  client: SmartAccountClient<TTransport, TChain, TAccount>,
90
- args: {
91
- multiOwnerPluginAddress?: Address;
92
- } & GetAccountParameter<TAccount>
116
+ args: GetMSCAUpgradeToData<TSigner, TAccount>
93
117
  ): Promise<
94
118
  UpgradeToData & {
95
119
  createMAAccount: () => Promise<MultiOwnerModularAccount<TSigner>>;
@@ -125,6 +149,39 @@ export async function getMSCAUpgradeToData<
125
149
  };
126
150
  }
127
151
 
152
+ export type GetMAInitializationDataParams<
153
+ TTransport extends Transport = Transport,
154
+ TChain extends Chain | undefined = Chain | undefined,
155
+ TAccount extends SmartContractAccount | undefined =
156
+ | SmartContractAccount
157
+ | undefined
158
+ > = {
159
+ multiOwnerPluginAddress?: Address;
160
+ client: SmartAccountClient<TTransport, TChain, TAccount>;
161
+ signerAddress: Address | Address[];
162
+ };
163
+
164
+ /**
165
+ * Retrieves the initialization data for a multi-owner modular account. Throws an error if the client's chain is not found or if the multi-owner plugin address is not retrievable.
166
+ *
167
+ * @example
168
+ * ```ts
169
+ * import { getMAInitializationData } from "@account-kit/smart-contracts";
170
+ * import { createSmartAccountClient } from "@aa-sdk/core";
171
+ *
172
+ * const client = createSmartAccountClient(...);
173
+ * const initializationData = await getMAInitializationData({
174
+ * client,
175
+ * signerAddress: "0x...", // or array of signers
176
+ * });
177
+ * ```
178
+ *
179
+ * @param {GetMAInitializationDataParams<TTransport, TChain, TAccount>} params the parameters for getting initialization data
180
+ * @param {SmartAccountClient<TTransport, TChain, TAccount>} params.client the smart account client
181
+ * @param {Address | Address[]} params.signerAddress the address of the signer or an array of signer addresses
182
+ * @param {Address} [params.multiOwnerPluginAddress] optional address of the multi-owner plugin
183
+ * @returns {Promise<UpgradeToData>} a promise that resolves to the initialization data required for upgrading to a multi-owner modular account
184
+ */
128
185
  export async function getMAInitializationData<
129
186
  TTransport extends Transport = Transport,
130
187
  TChain extends Chain | undefined = Chain | undefined,
@@ -135,11 +192,11 @@ export async function getMAInitializationData<
135
192
  client,
136
193
  multiOwnerPluginAddress,
137
194
  signerAddress,
138
- }: {
139
- multiOwnerPluginAddress?: Address;
140
- client: SmartAccountClient<TTransport, TChain, TAccount>;
141
- signerAddress: Address | Address[];
142
- }): Promise<UpgradeToData> {
195
+ }: GetMAInitializationDataParams<
196
+ TTransport,
197
+ TChain,
198
+ TAccount
199
+ >): Promise<UpgradeToData> {
143
200
  if (!client.chain) {
144
201
  throw new ChainNotFoundError();
145
202
  }
@@ -1,21 +0,0 @@
1
- import { z } from "zod";
2
- import type { LightAccountVersion } from "./types.js";
3
- export declare const LightAccountFactoryConfigSchema: z.ZodObject<{
4
- signer: z.ZodType<import("@aa-sdk/core").SmartAccountSigner<any>, z.ZodTypeDef, import("@aa-sdk/core").SmartAccountSigner<any>>;
5
- accountAddress: z.ZodOptional<z.ZodEffects<z.ZodString, `0x${string}`, string>>;
6
- initCode: z.ZodOptional<z.ZodEffects<z.ZodString, `0x${string}`, string>>;
7
- factoryAddress: z.ZodOptional<z.ZodEffects<z.ZodString, `0x${string}`, string>>;
8
- version: z.ZodOptional<z.ZodEffects<z.ZodString, LightAccountVersion, string>>;
9
- }, "strip", z.ZodTypeAny, {
10
- signer: import("@aa-sdk/core").SmartAccountSigner<any>;
11
- accountAddress?: `0x${string}` | undefined;
12
- initCode?: `0x${string}` | undefined;
13
- factoryAddress?: `0x${string}` | undefined;
14
- version?: LightAccountVersion | undefined;
15
- }, {
16
- signer: import("@aa-sdk/core").SmartAccountSigner<any>;
17
- accountAddress?: string | undefined;
18
- initCode?: string | undefined;
19
- factoryAddress?: string | undefined;
20
- version?: string | undefined;
21
- }>;
@@ -1,30 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.LightAccountFactoryConfigSchema = void 0;
4
- const core_1 = require("@aa-sdk/core");
5
- const zod_1 = require("abitype/zod");
6
- const viem_1 = require("viem");
7
- const zod_2 = require("zod");
8
- const utils_js_1 = require("./utils.js");
9
- const isLightAccountVersion = (x) => {
10
- if (typeof x === "string" &&
11
- Object.keys(Object.values(utils_js_1.AccountVersionRegistry).flat()).includes(x)) {
12
- return true;
13
- }
14
- return false;
15
- };
16
- exports.LightAccountFactoryConfigSchema = zod_2.z.object({
17
- signer: core_1.SignerSchema,
18
- accountAddress: zod_1.Address.optional().describe("Optional override for the account address."),
19
- initCode: zod_2.z
20
- .string()
21
- .refine(viem_1.isHex, "initCode must be a valid hex.")
22
- .optional()
23
- .describe("Optional override for the account init code."),
24
- factoryAddress: zod_1.Address.optional().describe("Optional override for the factory address which deploys the smart account."),
25
- version: zod_2.z
26
- .string()
27
- .refine(isLightAccountVersion, "Version must be a valid Light Account version.")
28
- .optional(),
29
- });
30
- //# sourceMappingURL=schema.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../../../src/light-account/schema.ts"],"names":[],"mappings":";;;AAAA,uCAA4C;AAC5C,qCAAsC;AACtC,+BAA6B;AAC7B,6BAAwB;AAExB,yCAAoD;AAEpD,MAAM,qBAAqB,GAAG,CAAC,CAAU,EAA4B,EAAE;IACrE,IACE,OAAO,CAAC,KAAK,QAAQ;QACrB,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,iCAAsB,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EACrE,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC,CAAC;AAEW,QAAA,+BAA+B,GAAG,OAAC,CAAC,MAAM,CAAC;IACtD,MAAM,EAAE,mBAAY;IACpB,cAAc,EAAE,aAAO,CAAC,QAAQ,EAAE,CAAC,QAAQ,CACzC,4CAA4C,CAC7C;IACD,QAAQ,EAAE,OAAC;SACR,MAAM,EAAE;SACR,MAAM,CAAC,YAAK,EAAE,+BAA+B,CAAC;SAC9C,QAAQ,EAAE;SACV,QAAQ,CAAC,8CAA8C,CAAC;IAC3D,cAAc,EAAE,aAAO,CAAC,QAAQ,EAAE,CAAC,QAAQ,CACzC,4EAA4E,CAC7E;IACD,OAAO,EAAE,OAAC;SACP,MAAM,EAAE;SACR,MAAM,CACL,qBAAqB,EACrB,gDAAgD,CACjD;SACA,QAAQ,EAAE;CACd,CAAC,CAAC","sourcesContent":["import { SignerSchema } from \"@aa-sdk/core\";\nimport { Address } from \"abitype/zod\";\nimport { isHex } from \"viem\";\nimport { z } from \"zod\";\nimport type { LightAccountVersion } from \"./types.js\";\nimport { AccountVersionRegistry } from \"./utils.js\";\n\nconst isLightAccountVersion = (x: unknown): x is LightAccountVersion => {\n if (\n typeof x === \"string\" &&\n Object.keys(Object.values(AccountVersionRegistry).flat()).includes(x)\n ) {\n return true;\n }\n\n return false;\n};\n\nexport const LightAccountFactoryConfigSchema = z.object({\n signer: SignerSchema,\n accountAddress: Address.optional().describe(\n \"Optional override for the account address.\"\n ),\n initCode: z\n .string()\n .refine(isHex, \"initCode must be a valid hex.\")\n .optional()\n .describe(\"Optional override for the account init code.\"),\n factoryAddress: Address.optional().describe(\n \"Optional override for the factory address which deploys the smart account.\"\n ),\n version: z\n .string()\n .refine<LightAccountVersion>(\n isLightAccountVersion,\n \"Version must be a valid Light Account version.\"\n )\n .optional(),\n});\n"]}