@account-kit/smart-contracts 4.0.0-alpha.9 → 4.0.0-beta.1

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 (389) hide show
  1. package/dist/esm/plugindefs/multi-owner/config.js +2 -2
  2. package/dist/esm/plugindefs/multi-owner/config.js.map +1 -1
  3. package/dist/esm/plugindefs/multisig/config.js +2 -2
  4. package/dist/esm/plugindefs/multisig/config.js.map +1 -1
  5. package/dist/esm/plugindefs/session-key/config.js +2 -3
  6. package/dist/esm/plugindefs/session-key/config.js.map +1 -1
  7. package/dist/esm/src/index.d.ts +1 -1
  8. package/dist/esm/src/index.js +4 -1
  9. package/dist/esm/src/index.js.map +1 -1
  10. package/dist/esm/src/light-account/accounts/account.js +20 -0
  11. package/dist/esm/src/light-account/accounts/account.js.map +1 -1
  12. package/dist/esm/src/light-account/accounts/base.js +8 -0
  13. package/dist/esm/src/light-account/accounts/base.js.map +1 -1
  14. package/dist/esm/src/light-account/accounts/multiOwner.js +22 -0
  15. package/dist/esm/src/light-account/accounts/multiOwner.js.map +1 -1
  16. package/dist/esm/src/light-account/actions/transferOwnership.d.ts +25 -0
  17. package/dist/esm/src/light-account/actions/transferOwnership.js +25 -0
  18. package/dist/esm/src/light-account/actions/transferOwnership.js.map +1 -1
  19. package/dist/esm/src/light-account/actions/updateOwners.d.ts +24 -0
  20. package/dist/esm/src/light-account/actions/updateOwners.js +24 -0
  21. package/dist/esm/src/light-account/actions/updateOwners.js.map +1 -1
  22. package/dist/esm/src/light-account/clients/alchemyClient.js +20 -0
  23. package/dist/esm/src/light-account/clients/alchemyClient.js.map +1 -1
  24. package/dist/esm/src/light-account/clients/client.d.ts +1 -2
  25. package/dist/esm/src/light-account/clients/client.js +23 -3
  26. package/dist/esm/src/light-account/clients/client.js.map +1 -1
  27. package/dist/esm/src/light-account/clients/multiOwnerAlchemyClient.js +20 -0
  28. package/dist/esm/src/light-account/clients/multiOwnerAlchemyClient.js.map +1 -1
  29. package/dist/esm/src/light-account/clients/multiOwnerLightAccount.d.ts +1 -2
  30. package/dist/esm/src/light-account/clients/multiOwnerLightAccount.js +23 -3
  31. package/dist/esm/src/light-account/clients/multiOwnerLightAccount.js.map +1 -1
  32. package/dist/esm/src/light-account/decorators/lightAccount.d.ts +19 -0
  33. package/dist/esm/src/light-account/decorators/lightAccount.js +19 -0
  34. package/dist/esm/src/light-account/decorators/lightAccount.js.map +1 -1
  35. package/dist/esm/src/light-account/decorators/multiOwnerLightAccount.d.ts +19 -0
  36. package/dist/esm/src/light-account/decorators/multiOwnerLightAccount.js +19 -0
  37. package/dist/esm/src/light-account/decorators/multiOwnerLightAccount.js.map +1 -1
  38. package/dist/esm/src/light-account/types.d.ts +4 -0
  39. package/dist/esm/src/light-account/utils.d.ts +46 -0
  40. package/dist/esm/src/light-account/utils.js +46 -0
  41. package/dist/esm/src/light-account/utils.js.map +1 -1
  42. package/dist/esm/src/msca/account/multiOwnerAccount.js +23 -0
  43. package/dist/esm/src/msca/account/multiOwnerAccount.js.map +1 -1
  44. package/dist/esm/src/msca/account/multisigAccount.js +24 -0
  45. package/dist/esm/src/msca/account/multisigAccount.js.map +1 -1
  46. package/dist/esm/src/msca/account-loupe/decorator.d.ts +15 -0
  47. package/dist/esm/src/msca/account-loupe/decorator.js +15 -0
  48. package/dist/esm/src/msca/account-loupe/decorator.js.map +1 -1
  49. package/dist/esm/src/msca/client/alchemyClient.js +20 -0
  50. package/dist/esm/src/msca/client/alchemyClient.js.map +1 -1
  51. package/dist/esm/src/msca/client/client.d.ts +2 -6
  52. package/dist/esm/src/msca/client/client.js +50 -6
  53. package/dist/esm/src/msca/client/client.js.map +1 -1
  54. package/dist/esm/src/msca/client/multiSigAlchemyClient.js +22 -0
  55. package/dist/esm/src/msca/client/multiSigAlchemyClient.js.map +1 -1
  56. package/dist/esm/src/msca/errors.d.ts +12 -0
  57. package/dist/esm/src/msca/errors.js +12 -0
  58. package/dist/esm/src/msca/errors.js.map +1 -1
  59. package/dist/esm/src/msca/plugin-manager/decorator.d.ts +15 -0
  60. package/dist/esm/src/msca/plugin-manager/decorator.js +15 -0
  61. package/dist/esm/src/msca/plugin-manager/decorator.js.map +1 -1
  62. package/dist/esm/src/msca/plugin-manager/installPlugin.d.ts +21 -0
  63. package/dist/esm/src/msca/plugin-manager/installPlugin.js +22 -0
  64. package/dist/esm/src/msca/plugin-manager/installPlugin.js.map +1 -1
  65. package/dist/esm/src/msca/plugins/multi-owner/extension.d.ts +15 -0
  66. package/dist/esm/src/msca/plugins/multi-owner/extension.js +19 -0
  67. package/dist/esm/src/msca/plugins/multi-owner/extension.js.map +1 -1
  68. package/dist/esm/src/msca/plugins/multi-owner/plugin.js.map +1 -1
  69. package/dist/esm/src/msca/plugins/multisig/actions/isOwnerOf.js +2 -0
  70. package/dist/esm/src/msca/plugins/multisig/actions/isOwnerOf.js.map +1 -1
  71. package/dist/esm/src/msca/plugins/multisig/actions/proposeUserOperation.js +2 -0
  72. package/dist/esm/src/msca/plugins/multisig/actions/proposeUserOperation.js.map +1 -1
  73. package/dist/esm/src/msca/plugins/multisig/actions/readOwners.js +2 -0
  74. package/dist/esm/src/msca/plugins/multisig/actions/readOwners.js.map +1 -1
  75. package/dist/esm/src/msca/plugins/multisig/actions/signMultisigUserOperation.js +3 -0
  76. package/dist/esm/src/msca/plugins/multisig/actions/signMultisigUserOperation.js.map +1 -1
  77. package/dist/esm/src/msca/plugins/multisig/extension.d.ts +13 -0
  78. package/dist/esm/src/msca/plugins/multisig/extension.js +13 -0
  79. package/dist/esm/src/msca/plugins/multisig/extension.js.map +1 -1
  80. package/dist/esm/src/msca/plugins/multisig/middleware.d.ts +12 -0
  81. package/dist/esm/src/msca/plugins/multisig/middleware.js +15 -0
  82. package/dist/esm/src/msca/plugins/multisig/middleware.js.map +1 -1
  83. package/dist/esm/src/msca/plugins/multisig/plugin.js.map +1 -1
  84. package/dist/esm/src/msca/plugins/multisig/signer.js +2 -0
  85. package/dist/esm/src/msca/plugins/multisig/signer.js.map +1 -1
  86. package/dist/esm/src/msca/plugins/multisig/utils/combineSignatures.d.ts +25 -0
  87. package/dist/esm/src/msca/plugins/multisig/utils/combineSignatures.js +25 -0
  88. package/dist/esm/src/msca/plugins/multisig/utils/combineSignatures.js.map +1 -1
  89. package/dist/esm/src/msca/plugins/multisig/utils/formatSignatures.d.ts +10 -0
  90. package/dist/esm/src/msca/plugins/multisig/utils/formatSignatures.js +11 -0
  91. package/dist/esm/src/msca/plugins/multisig/utils/formatSignatures.js.map +1 -1
  92. package/dist/esm/src/msca/plugins/multisig/utils/getSignerType.d.ts +19 -0
  93. package/dist/esm/src/msca/plugins/multisig/utils/getSignerType.js +19 -0
  94. package/dist/esm/src/msca/plugins/multisig/utils/getSignerType.js.map +1 -1
  95. package/dist/esm/src/msca/plugins/multisig/utils/splitAggregatedSignature.d.ts +10 -0
  96. package/dist/esm/src/msca/plugins/multisig/utils/splitAggregatedSignature.js +20 -0
  97. package/dist/esm/src/msca/plugins/multisig/utils/splitAggregatedSignature.js.map +1 -1
  98. package/dist/esm/src/msca/plugins/session-key/debug-session-key-bytecode.d.ts +7 -0
  99. package/dist/esm/src/msca/plugins/session-key/debug-session-key-bytecode.js +7 -0
  100. package/dist/esm/src/msca/plugins/session-key/debug-session-key-bytecode.js.map +1 -1
  101. package/dist/esm/src/msca/plugins/session-key/extension.d.ts +13 -0
  102. package/dist/esm/src/msca/plugins/session-key/extension.js +23 -0
  103. package/dist/esm/src/msca/plugins/session-key/extension.js.map +1 -1
  104. package/dist/esm/src/msca/plugins/session-key/permissions.d.ts +150 -1
  105. package/dist/esm/src/msca/plugins/session-key/permissions.js +150 -1
  106. package/dist/esm/src/msca/plugins/session-key/permissions.js.map +1 -1
  107. package/dist/esm/src/msca/plugins/session-key/plugin.js.map +1 -1
  108. package/dist/esm/src/msca/plugins/session-key/signer.d.ts +81 -1
  109. package/dist/esm/src/msca/plugins/session-key/signer.js +80 -0
  110. package/dist/esm/src/msca/plugins/session-key/signer.js.map +1 -1
  111. package/dist/esm/src/msca/plugins/session-key/utils.d.ts +18 -0
  112. package/dist/esm/src/msca/plugins/session-key/utils.js +18 -0
  113. package/dist/esm/src/msca/plugins/session-key/utils.js.map +1 -1
  114. package/dist/esm/src/msca/utils.d.ts +50 -0
  115. package/dist/esm/src/msca/utils.js +50 -0
  116. package/dist/esm/src/msca/utils.js.map +1 -1
  117. package/dist/types/plugindefs/multi-owner/config.d.ts.map +1 -1
  118. package/dist/types/plugindefs/multisig/config.d.ts.map +1 -1
  119. package/dist/types/plugindefs/session-key/config.d.ts.map +1 -1
  120. package/dist/types/src/index.d.ts +1 -1
  121. package/dist/types/src/index.d.ts.map +1 -1
  122. package/dist/types/src/light-account/clients/client.d.ts +1 -2
  123. package/dist/types/src/light-account/clients/client.d.ts.map +1 -1
  124. package/dist/types/src/light-account/clients/multiOwnerLightAccount.d.ts +1 -2
  125. package/dist/types/src/light-account/clients/multiOwnerLightAccount.d.ts.map +1 -1
  126. package/dist/types/src/msca/client/client.d.ts +2 -6
  127. package/dist/types/src/msca/client/client.d.ts.map +1 -1
  128. package/dist/types/src/msca/plugins/multi-owner/plugin.d.ts.map +1 -1
  129. package/dist/types/src/msca/plugins/multisig/plugin.d.ts.map +1 -1
  130. package/dist/types/src/msca/plugins/session-key/plugin.d.ts.map +1 -1
  131. package/dist/types/src/msca/plugins/session-key/signer.d.ts +1 -1
  132. package/dist/types/src/msca/plugins/session-key/signer.d.ts.map +1 -1
  133. package/package.json +12 -15
  134. package/plugindefs/multi-owner/config.ts +4 -5
  135. package/plugindefs/multisig/config.ts +4 -5
  136. package/plugindefs/session-key/config.ts +4 -6
  137. package/src/index.ts +1 -0
  138. package/src/light-account/clients/client.ts +8 -13
  139. package/src/light-account/clients/multiOwnerLightAccount.ts +11 -13
  140. package/src/msca/client/client.ts +24 -36
  141. package/src/msca/plugins/multi-owner/plugin.ts +5 -1
  142. package/src/msca/plugins/multisig/plugin.ts +5 -1
  143. package/src/msca/plugins/session-key/plugin.ts +5 -1
  144. package/src/msca/plugins/session-key/signer.ts +1 -1
  145. package/dist/cjs/package.json +0 -1
  146. package/dist/cjs/plugindefs/index.d.ts +0 -3
  147. package/dist/cjs/plugindefs/index.js +0 -10
  148. package/dist/cjs/plugindefs/index.js.map +0 -1
  149. package/dist/cjs/plugindefs/multi-owner/abi.d.ts +0 -698
  150. package/dist/cjs/plugindefs/multi-owner/abi.js +0 -612
  151. package/dist/cjs/plugindefs/multi-owner/abi.js.map +0 -1
  152. package/dist/cjs/plugindefs/multi-owner/config.d.ts +0 -2
  153. package/dist/cjs/plugindefs/multi-owner/config.js +0 -31
  154. package/dist/cjs/plugindefs/multi-owner/config.js.map +0 -1
  155. package/dist/cjs/plugindefs/multisig/abi.d.ts +0 -791
  156. package/dist/cjs/plugindefs/multisig/abi.js +0 -1031
  157. package/dist/cjs/plugindefs/multisig/abi.js.map +0 -1
  158. package/dist/cjs/plugindefs/multisig/config.d.ts +0 -2
  159. package/dist/cjs/plugindefs/multisig/config.js +0 -30
  160. package/dist/cjs/plugindefs/multisig/config.js.map +0 -1
  161. package/dist/cjs/plugindefs/session-key/abi.d.ts +0 -1061
  162. package/dist/cjs/plugindefs/session-key/abi.js +0 -916
  163. package/dist/cjs/plugindefs/session-key/abi.js.map +0 -1
  164. package/dist/cjs/plugindefs/session-key/config.d.ts +0 -2
  165. package/dist/cjs/plugindefs/session-key/config.js +0 -43
  166. package/dist/cjs/plugindefs/session-key/config.js.map +0 -1
  167. package/dist/cjs/plugindefs/types.d.ts +0 -15
  168. package/dist/cjs/plugindefs/types.js +0 -3
  169. package/dist/cjs/plugindefs/types.js.map +0 -1
  170. package/dist/cjs/src/index.d.ts +0 -53
  171. package/dist/cjs/src/index.js +0 -105
  172. package/dist/cjs/src/index.js.map +0 -1
  173. package/dist/cjs/src/light-account/abis/LightAccountAbi_v1.d.ts +0 -532
  174. package/dist/cjs/src/light-account/abis/LightAccountAbi_v1.js +0 -382
  175. package/dist/cjs/src/light-account/abis/LightAccountAbi_v1.js.map +0 -1
  176. package/dist/cjs/src/light-account/abis/LightAccountAbi_v2.d.ts +0 -491
  177. package/dist/cjs/src/light-account/abis/LightAccountAbi_v2.js +0 -358
  178. package/dist/cjs/src/light-account/abis/LightAccountAbi_v2.js.map +0 -1
  179. package/dist/cjs/src/light-account/abis/LightAccountFactoryAbi_v1.d.ts +0 -55
  180. package/dist/cjs/src/light-account/abis/LightAccountFactoryAbi_v1.js +0 -78
  181. package/dist/cjs/src/light-account/abis/LightAccountFactoryAbi_v1.js.map +0 -1
  182. package/dist/cjs/src/light-account/abis/LightAccountFactoryAbi_v2.d.ts +0 -256
  183. package/dist/cjs/src/light-account/abis/LightAccountFactoryAbi_v2.js +0 -213
  184. package/dist/cjs/src/light-account/abis/LightAccountFactoryAbi_v2.js.map +0 -1
  185. package/dist/cjs/src/light-account/abis/MultiOwnerLightAccountAbi.d.ts +0 -507
  186. package/dist/cjs/src/light-account/abis/MultiOwnerLightAccountAbi.js +0 -375
  187. package/dist/cjs/src/light-account/abis/MultiOwnerLightAccountAbi.js.map +0 -1
  188. package/dist/cjs/src/light-account/abis/MultiOwnerLightAccountFactoryAbi.d.ts +0 -286
  189. package/dist/cjs/src/light-account/abis/MultiOwnerLightAccountFactoryAbi.js +0 -232
  190. package/dist/cjs/src/light-account/abis/MultiOwnerLightAccountFactoryAbi.js.map +0 -1
  191. package/dist/cjs/src/light-account/accounts/account.d.ts +0 -17
  192. package/dist/cjs/src/light-account/accounts/account.js +0 -79
  193. package/dist/cjs/src/light-account/accounts/account.js.map +0 -1
  194. package/dist/cjs/src/light-account/accounts/base.d.ts +0 -15
  195. package/dist/cjs/src/light-account/accounts/base.js +0 -143
  196. package/dist/cjs/src/light-account/accounts/base.js.map +0 -1
  197. package/dist/cjs/src/light-account/accounts/multiOwner.d.ts +0 -18
  198. package/dist/cjs/src/light-account/accounts/multiOwner.js +0 -80
  199. package/dist/cjs/src/light-account/accounts/multiOwner.js.map +0 -1
  200. package/dist/cjs/src/light-account/actions/transferOwnership.d.ts +0 -8
  201. package/dist/cjs/src/light-account/actions/transferOwnership.js +0 -28
  202. package/dist/cjs/src/light-account/actions/transferOwnership.js.map +0 -1
  203. package/dist/cjs/src/light-account/actions/updateOwners.d.ts +0 -9
  204. package/dist/cjs/src/light-account/actions/updateOwners.js +0 -27
  205. package/dist/cjs/src/light-account/actions/updateOwners.js.map +0 -1
  206. package/dist/cjs/src/light-account/clients/alchemyClient.d.ts +0 -6
  207. package/dist/cjs/src/light-account/clients/alchemyClient.js +0 -25
  208. package/dist/cjs/src/light-account/clients/alchemyClient.js.map +0 -1
  209. package/dist/cjs/src/light-account/clients/client.d.ts +0 -10
  210. package/dist/cjs/src/light-account/clients/client.js +0 -22
  211. package/dist/cjs/src/light-account/clients/client.js.map +0 -1
  212. package/dist/cjs/src/light-account/clients/multiOwnerAlchemyClient.d.ts +0 -6
  213. package/dist/cjs/src/light-account/clients/multiOwnerAlchemyClient.js +0 -25
  214. package/dist/cjs/src/light-account/clients/multiOwnerAlchemyClient.js.map +0 -1
  215. package/dist/cjs/src/light-account/clients/multiOwnerLightAccount.d.ts +0 -10
  216. package/dist/cjs/src/light-account/clients/multiOwnerLightAccount.js +0 -22
  217. package/dist/cjs/src/light-account/clients/multiOwnerLightAccount.js.map +0 -1
  218. package/dist/cjs/src/light-account/decorators/lightAccount.d.ts +0 -8
  219. package/dist/cjs/src/light-account/decorators/lightAccount.js +0 -9
  220. package/dist/cjs/src/light-account/decorators/lightAccount.js.map +0 -1
  221. package/dist/cjs/src/light-account/decorators/multiOwnerLightAccount.d.ts +0 -8
  222. package/dist/cjs/src/light-account/decorators/multiOwnerLightAccount.js +0 -9
  223. package/dist/cjs/src/light-account/decorators/multiOwnerLightAccount.js.map +0 -1
  224. package/dist/cjs/src/light-account/e2e-tests/constants.d.ts +0 -6
  225. package/dist/cjs/src/light-account/e2e-tests/constants.js +0 -10
  226. package/dist/cjs/src/light-account/e2e-tests/constants.js.map +0 -1
  227. package/dist/cjs/src/light-account/types.d.ts +0 -31
  228. package/dist/cjs/src/light-account/types.js +0 -3
  229. package/dist/cjs/src/light-account/types.js.map +0 -1
  230. package/dist/cjs/src/light-account/utils.d.ts +0 -10
  231. package/dist/cjs/src/light-account/utils.js +0 -108
  232. package/dist/cjs/src/light-account/utils.js.map +0 -1
  233. package/dist/cjs/src/msca/abis/IAccountLoupe.d.ts +0 -79
  234. package/dist/cjs/src/msca/abis/IAccountLoupe.js +0 -82
  235. package/dist/cjs/src/msca/abis/IAccountLoupe.js.map +0 -1
  236. package/dist/cjs/src/msca/abis/IPlugin.d.ts +0 -474
  237. package/dist/cjs/src/msca/abis/IPlugin.js +0 -400
  238. package/dist/cjs/src/msca/abis/IPlugin.js.map +0 -1
  239. package/dist/cjs/src/msca/abis/IPluginManager.d.ts +0 -101
  240. package/dist/cjs/src/msca/abis/IPluginManager.js +0 -109
  241. package/dist/cjs/src/msca/abis/IPluginManager.js.map +0 -1
  242. package/dist/cjs/src/msca/abis/IStandardExecutor.d.ts +0 -50
  243. package/dist/cjs/src/msca/abis/IStandardExecutor.js +0 -35
  244. package/dist/cjs/src/msca/abis/IStandardExecutor.js.map +0 -1
  245. package/dist/cjs/src/msca/abis/MultiOwnerModularAccountFactory.d.ts +0 -234
  246. package/dist/cjs/src/msca/abis/MultiOwnerModularAccountFactory.js +0 -194
  247. package/dist/cjs/src/msca/abis/MultiOwnerModularAccountFactory.js.map +0 -1
  248. package/dist/cjs/src/msca/abis/MultisigModularAccountFactory.d.ts +0 -246
  249. package/dist/cjs/src/msca/abis/MultisigModularAccountFactory.js +0 -320
  250. package/dist/cjs/src/msca/abis/MultisigModularAccountFactory.js.map +0 -1
  251. package/dist/cjs/src/msca/abis/UpgradeableModularAccount.d.ts +0 -880
  252. package/dist/cjs/src/msca/abis/UpgradeableModularAccount.js +0 -649
  253. package/dist/cjs/src/msca/abis/UpgradeableModularAccount.js.map +0 -1
  254. package/dist/cjs/src/msca/account/multiOwnerAccount.d.ts +0 -12
  255. package/dist/cjs/src/msca/account/multiOwnerAccount.js +0 -60
  256. package/dist/cjs/src/msca/account/multiOwnerAccount.js.map +0 -1
  257. package/dist/cjs/src/msca/account/multisigAccount.d.ts +0 -17
  258. package/dist/cjs/src/msca/account/multisigAccount.js +0 -71
  259. package/dist/cjs/src/msca/account/multisigAccount.js.map +0 -1
  260. package/dist/cjs/src/msca/account/standardExecutor.d.ts +0 -2
  261. package/dist/cjs/src/msca/account/standardExecutor.js +0 -28
  262. package/dist/cjs/src/msca/account/standardExecutor.js.map +0 -1
  263. package/dist/cjs/src/msca/account-loupe/decorator.d.ts +0 -16
  264. package/dist/cjs/src/msca/account-loupe/decorator.js +0 -66
  265. package/dist/cjs/src/msca/account-loupe/decorator.js.map +0 -1
  266. package/dist/cjs/src/msca/account-loupe/types.d.ts +0 -16
  267. package/dist/cjs/src/msca/account-loupe/types.js +0 -3
  268. package/dist/cjs/src/msca/account-loupe/types.js.map +0 -1
  269. package/dist/cjs/src/msca/client/alchemyClient.d.ts +0 -6
  270. package/dist/cjs/src/msca/client/alchemyClient.js +0 -28
  271. package/dist/cjs/src/msca/client/alchemyClient.js.map +0 -1
  272. package/dist/cjs/src/msca/client/client.d.ts +0 -17
  273. package/dist/cjs/src/msca/client/client.js +0 -49
  274. package/dist/cjs/src/msca/client/client.js.map +0 -1
  275. package/dist/cjs/src/msca/client/multiSigAlchemyClient.d.ts +0 -6
  276. package/dist/cjs/src/msca/client/multiSigAlchemyClient.js +0 -31
  277. package/dist/cjs/src/msca/client/multiSigAlchemyClient.js.map +0 -1
  278. package/dist/cjs/src/msca/e2e-tests/constants.d.ts +0 -3
  279. package/dist/cjs/src/msca/e2e-tests/constants.js +0 -7
  280. package/dist/cjs/src/msca/e2e-tests/constants.js.map +0 -1
  281. package/dist/cjs/src/msca/errors.d.ts +0 -17
  282. package/dist/cjs/src/msca/errors.js +0 -53
  283. package/dist/cjs/src/msca/errors.js.map +0 -1
  284. package/dist/cjs/src/msca/plugin-manager/decorator.d.ts +0 -11
  285. package/dist/cjs/src/msca/plugin-manager/decorator.js +0 -13
  286. package/dist/cjs/src/msca/plugin-manager/decorator.js.map +0 -1
  287. package/dist/cjs/src/msca/plugin-manager/installPlugin.d.ts +0 -11
  288. package/dist/cjs/src/msca/plugin-manager/installPlugin.js +0 -48
  289. package/dist/cjs/src/msca/plugin-manager/installPlugin.js.map +0 -1
  290. package/dist/cjs/src/msca/plugin-manager/uninstallPlugin.d.ts +0 -9
  291. package/dist/cjs/src/msca/plugin-manager/uninstallPlugin.js +0 -35
  292. package/dist/cjs/src/msca/plugin-manager/uninstallPlugin.js.map +0 -1
  293. package/dist/cjs/src/msca/plugins/multi-owner/extension.d.ts +0 -13
  294. package/dist/cjs/src/msca/plugins/multi-owner/extension.js +0 -26
  295. package/dist/cjs/src/msca/plugins/multi-owner/extension.js.map +0 -1
  296. package/dist/cjs/src/msca/plugins/multi-owner/index.d.ts +0 -3
  297. package/dist/cjs/src/msca/plugins/multi-owner/index.js +0 -10
  298. package/dist/cjs/src/msca/plugins/multi-owner/index.js.map +0 -1
  299. package/dist/cjs/src/msca/plugins/multi-owner/plugin.d.ts +0 -793
  300. package/dist/cjs/src/msca/plugins/multi-owner/plugin.js +0 -695
  301. package/dist/cjs/src/msca/plugins/multi-owner/plugin.js.map +0 -1
  302. package/dist/cjs/src/msca/plugins/multi-owner/signer.d.ts +0 -215
  303. package/dist/cjs/src/msca/plugins/multi-owner/signer.js +0 -47
  304. package/dist/cjs/src/msca/plugins/multi-owner/signer.js.map +0 -1
  305. package/dist/cjs/src/msca/plugins/multisig/actions/getThreshold.d.ts +0 -4
  306. package/dist/cjs/src/msca/plugins/multisig/actions/getThreshold.js +0 -20
  307. package/dist/cjs/src/msca/plugins/multisig/actions/getThreshold.js.map +0 -1
  308. package/dist/cjs/src/msca/plugins/multisig/actions/isOwnerOf.d.ts +0 -6
  309. package/dist/cjs/src/msca/plugins/multisig/actions/isOwnerOf.js +0 -15
  310. package/dist/cjs/src/msca/plugins/multisig/actions/isOwnerOf.js.map +0 -1
  311. package/dist/cjs/src/msca/plugins/multisig/actions/proposeUserOperation.d.ts +0 -4
  312. package/dist/cjs/src/msca/plugins/multisig/actions/proposeUserOperation.js +0 -47
  313. package/dist/cjs/src/msca/plugins/multisig/actions/proposeUserOperation.js.map +0 -1
  314. package/dist/cjs/src/msca/plugins/multisig/actions/readOwners.d.ts +0 -4
  315. package/dist/cjs/src/msca/plugins/multisig/actions/readOwners.js +0 -15
  316. package/dist/cjs/src/msca/plugins/multisig/actions/readOwners.js.map +0 -1
  317. package/dist/cjs/src/msca/plugins/multisig/actions/signMultisigUserOperation.d.ts +0 -4
  318. package/dist/cjs/src/msca/plugins/multisig/actions/signMultisigUserOperation.js +0 -54
  319. package/dist/cjs/src/msca/plugins/multisig/actions/signMultisigUserOperation.js.map +0 -1
  320. package/dist/cjs/src/msca/plugins/multisig/extension.d.ts +0 -17
  321. package/dist/cjs/src/msca/plugins/multisig/extension.js +0 -19
  322. package/dist/cjs/src/msca/plugins/multisig/extension.js.map +0 -1
  323. package/dist/cjs/src/msca/plugins/multisig/index.d.ts +0 -5
  324. package/dist/cjs/src/msca/plugins/multisig/index.js +0 -12
  325. package/dist/cjs/src/msca/plugins/multisig/index.js.map +0 -1
  326. package/dist/cjs/src/msca/plugins/multisig/middleware.d.ts +0 -3
  327. package/dist/cjs/src/msca/plugins/multisig/middleware.js +0 -97
  328. package/dist/cjs/src/msca/plugins/multisig/middleware.js.map +0 -1
  329. package/dist/cjs/src/msca/plugins/multisig/plugin.d.ts +0 -892
  330. package/dist/cjs/src/msca/plugins/multisig/plugin.js +0 -740
  331. package/dist/cjs/src/msca/plugins/multisig/plugin.js.map +0 -1
  332. package/dist/cjs/src/msca/plugins/multisig/signer.d.ts +0 -223
  333. package/dist/cjs/src/msca/plugins/multisig/signer.js +0 -57
  334. package/dist/cjs/src/msca/plugins/multisig/signer.js.map +0 -1
  335. package/dist/cjs/src/msca/plugins/multisig/types.d.ts +0 -34
  336. package/dist/cjs/src/msca/plugins/multisig/types.js +0 -3
  337. package/dist/cjs/src/msca/plugins/multisig/types.js.map +0 -1
  338. package/dist/cjs/src/msca/plugins/multisig/utils/combineSignatures.d.ts +0 -10
  339. package/dist/cjs/src/msca/plugins/multisig/utils/combineSignatures.js +0 -15
  340. package/dist/cjs/src/msca/plugins/multisig/utils/combineSignatures.js.map +0 -1
  341. package/dist/cjs/src/msca/plugins/multisig/utils/formatSignatures.d.ts +0 -2
  342. package/dist/cjs/src/msca/plugins/multisig/utils/formatSignatures.js +0 -42
  343. package/dist/cjs/src/msca/plugins/multisig/utils/formatSignatures.js.map +0 -1
  344. package/dist/cjs/src/msca/plugins/multisig/utils/getSignerType.d.ts +0 -10
  345. package/dist/cjs/src/msca/plugins/multisig/utils/getSignerType.js +0 -13
  346. package/dist/cjs/src/msca/plugins/multisig/utils/getSignerType.js.map +0 -1
  347. package/dist/cjs/src/msca/plugins/multisig/utils/index.d.ts +0 -8
  348. package/dist/cjs/src/msca/plugins/multisig/utils/index.js +0 -12
  349. package/dist/cjs/src/msca/plugins/multisig/utils/index.js.map +0 -1
  350. package/dist/cjs/src/msca/plugins/multisig/utils/splitAggregatedSignature.d.ts +0 -16
  351. package/dist/cjs/src/msca/plugins/multisig/utils/splitAggregatedSignature.js +0 -74
  352. package/dist/cjs/src/msca/plugins/multisig/utils/splitAggregatedSignature.js.map +0 -1
  353. package/dist/cjs/src/msca/plugins/session-key/SessionKeyPermissionsUpdatesAbi.d.ts +0 -117
  354. package/dist/cjs/src/msca/plugins/session-key/SessionKeyPermissionsUpdatesAbi.js +0 -115
  355. package/dist/cjs/src/msca/plugins/session-key/SessionKeyPermissionsUpdatesAbi.js.map +0 -1
  356. package/dist/cjs/src/msca/plugins/session-key/debug-session-key-bytecode.d.ts +0 -1
  357. package/dist/cjs/src/msca/plugins/session-key/debug-session-key-bytecode.js +0 -5
  358. package/dist/cjs/src/msca/plugins/session-key/debug-session-key-bytecode.js.map +0 -1
  359. package/dist/cjs/src/msca/plugins/session-key/extension.d.ts +0 -30
  360. package/dist/cjs/src/msca/plugins/session-key/extension.js +0 -156
  361. package/dist/cjs/src/msca/plugins/session-key/extension.js.map +0 -1
  362. package/dist/cjs/src/msca/plugins/session-key/index.d.ts +0 -3
  363. package/dist/cjs/src/msca/plugins/session-key/index.js +0 -10
  364. package/dist/cjs/src/msca/plugins/session-key/index.js.map +0 -1
  365. package/dist/cjs/src/msca/plugins/session-key/permissions.d.ts +0 -53
  366. package/dist/cjs/src/msca/plugins/session-key/permissions.js +0 -153
  367. package/dist/cjs/src/msca/plugins/session-key/permissions.js.map +0 -1
  368. package/dist/cjs/src/msca/plugins/session-key/plugin.d.ts +0 -1200
  369. package/dist/cjs/src/msca/plugins/session-key/plugin.js +0 -1044
  370. package/dist/cjs/src/msca/plugins/session-key/plugin.js.map +0 -1
  371. package/dist/cjs/src/msca/plugins/session-key/signer.d.ts +0 -233
  372. package/dist/cjs/src/msca/plugins/session-key/signer.js +0 -101
  373. package/dist/cjs/src/msca/plugins/session-key/signer.js.map +0 -1
  374. package/dist/cjs/src/msca/plugins/session-key/utils.d.ts +0 -11
  375. package/dist/cjs/src/msca/plugins/session-key/utils.js +0 -22
  376. package/dist/cjs/src/msca/plugins/session-key/utils.js.map +0 -1
  377. package/dist/cjs/src/msca/plugins/types.d.ts +0 -12
  378. package/dist/cjs/src/msca/plugins/types.js +0 -3
  379. package/dist/cjs/src/msca/plugins/types.js.map +0 -1
  380. package/dist/cjs/src/msca/utils.d.ts +0 -17
  381. package/dist/cjs/src/msca/utils.js +0 -99
  382. package/dist/cjs/src/msca/utils.js.map +0 -1
  383. package/dist/esm/package.json +0 -1
  384. package/dist/esm/src/light-account/e2e-tests/constants.d.ts +0 -6
  385. package/dist/esm/src/light-account/e2e-tests/constants.js +0 -7
  386. package/dist/esm/src/light-account/e2e-tests/constants.js.map +0 -1
  387. package/dist/types/src/light-account/e2e-tests/constants.d.ts +0 -7
  388. package/dist/types/src/light-account/e2e-tests/constants.d.ts.map +0 -1
  389. package/src/light-account/e2e-tests/constants.ts +0 -8
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../src/light-account/utils.ts"],"names":[],"mappings":"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","sourcesContent":["import type { GetEntryPointFromAccount } from \"@aa-sdk/core\";\nimport { fromHex, type Address, type Chain } from \"viem\";\nimport type { LightAccountBase } from \"./accounts/base\";\nimport type {\n LightAccountType,\n LightAccountVersion,\n LightAccountVersionConfig,\n LightAccountVersionConfigs,\n} from \"./types\";\n\n/**\n * Account version registry interface that defines the light account versions\n * and the version definition for each light account type\n *\n */\nexport const AccountVersionRegistry: LightAccountVersionConfigs = {\n LightAccount: {\n \"v1.0.1\": {\n entryPointVersion: \"0.6.0\",\n addresses: {\n default: {\n factory:\n \"0x000000893A26168158fbeaDD9335Be5bC96592E2\".toLowerCase() as Address,\n impl: \"0xc1b2fc4197c9187853243e6e4eb5a4af8879a1c0\".toLowerCase() as Address,\n },\n },\n },\n \"v1.0.2\": {\n entryPointVersion: \"0.6.0\",\n addresses: {\n default: {\n factory:\n \"0x00000055C0b4fA41dde26A74435ff03692292FBD\".toLowerCase() as Address,\n impl: \"0x5467b1947F47d0646704EB801E075e72aeAe8113\".toLowerCase() as Address,\n },\n },\n },\n \"v1.1.0\": {\n entryPointVersion: \"0.6.0\",\n addresses: {\n default: {\n factory:\n \"0x00004EC70002a32400f8ae005A26081065620D20\".toLowerCase() as Address,\n impl: \"0xae8c656ad28F2B59a196AB61815C16A0AE1c3cba\".toLowerCase() as Address,\n },\n },\n },\n \"v2.0.0\": {\n entryPointVersion: \"0.7.0\",\n addresses: {\n default: {\n factory:\n \"0x0000000000400CdFef5E2714E63d8040b700BC24\".toLowerCase() as Address,\n impl: \"0x8E8e658E22B12ada97B402fF0b044D6A325013C7\".toLowerCase() as Address,\n },\n },\n },\n },\n MultiOwnerLightAccount: {\n \"v2.0.0\": {\n entryPointVersion: \"0.7.0\",\n addresses: {\n default: {\n factory:\n \"0x000000000019d2Ee9F2729A65AfE20bb0020AefC\".toLowerCase() as Address,\n impl: \"0xd2c27F9eE8E4355f71915ffD5568cB3433b6823D\".toLowerCase() as Address,\n },\n },\n },\n },\n};\n\n/**\n * Get the default light account version for the given light account type\n *\n * @template {LightAccountType} TLightAccountType\n * @returns {LightAccountVersion<TLightAccountType>} the default version for the given light account type\n */\nexport const defaultLightAccountVersion = <\n TLightAccountType extends LightAccountType\n>(): LightAccountVersion<TLightAccountType> => \"v2.0.0\";\n\n/**\n * Utility method returning the default light account factory address given a Chain object\n *\n * @param {Chain} chain - a Chain object\n * @param {LightAccountVersion} version - the version of the light account to get the factory address for\n * @returns {Address} an for the given chain\n * @throws if the chain doesn't have an address currently deployed\n */\nexport const getDefaultLightAccountFactoryAddress = (\n chain: Chain,\n version: LightAccountVersion<\"LightAccount\">\n): Address => {\n return (\n AccountVersionRegistry.LightAccount[version].addresses.overrides?.[chain.id]\n ?.factory ??\n AccountVersionRegistry.LightAccount[version].addresses.default.factory\n );\n};\n\n/**\n * Utility method returning the default multi owner light account factory address given a Chain object\n *\n * @param {Chain} chain - a Chain object\n * @param {string} version - the version of the light account to get the factory address for\n * @returns {Address} an Address for the given chain\n */\nexport const getDefaultMultiOwnerLightAccountFactoryAddress = (\n chain: Chain,\n version: LightAccountVersion<\"MultiOwnerLightAccount\">\n) => {\n return (\n AccountVersionRegistry.MultiOwnerLightAccount[version].addresses\n .overrides?.[chain.id]?.factory ??\n AccountVersionRegistry.MultiOwnerLightAccount[version].addresses.default\n .factory\n );\n};\n\n/**\n * Can be used to check if the account with one of the following implementation addresses\n * to not support 1271 signing.\n *\n * Light accounts with versions v1.0.1 and v1.0.2 do not support 1271 signing.\n */\nexport const LightAccountUnsupported1271Impls = [\n AccountVersionRegistry.LightAccount[\"v1.0.1\"],\n AccountVersionRegistry.LightAccount[\"v1.0.2\"],\n];\n\n/**\n * Can be used to check if the account with one of the following factory addresses\n * to not support 1271 signing.\n *\n * Light accounts with versions v1.0.1 and v1.0.2 do not support 1271 signing.\n */\nexport const LightAccountUnsupported1271Factories = new Set(\n LightAccountUnsupported1271Impls.map((x) => [\n x.addresses.default.factory,\n ...Object.values(x.addresses.overrides ?? {}).map((z) => z.factory),\n ]).flat()\n);\n\n/**\n * Get the light account version definition for the given light account and chain\n *\n * @template {LightAccountBase} TAccount\n * @param {LightAccountBase} account the light account to get the version for\n * @param {Chain} chain - the chain to get the version for\n * @returns {Promise<LightAccountVersionConfig>} the light account version definition for the given light account and chain\n */\nexport async function getLightAccountVersionForAccount<\n TAccount extends LightAccountBase\n>(account: TAccount, chain: Chain): Promise<LightAccountVersionConfig> {\n const accountType = account.source as LightAccountType;\n const factoryAddress = await account.getFactoryAddress();\n const implAddress = await account.getImplementationAddress();\n const implToVersion = new Map(\n Object.entries(AccountVersionRegistry[accountType]).map((pair) => {\n const [version, def] = pair as [\n LightAccountVersion<LightAccountType>,\n LightAccountVersionConfig<GetEntryPointFromAccount<TAccount>>\n ];\n\n if (\n def.addresses.overrides != null &&\n chain.id in def.addresses.overrides!\n ) {\n return [def.addresses.overrides[chain.id].impl, version];\n }\n\n return [def.addresses.default.impl, version];\n })\n );\n\n const factoryToVersion = new Map(\n Object.entries(AccountVersionRegistry[accountType]).map((pair) => {\n const [version, def] = pair as [\n LightAccountVersion<LightAccountType>,\n LightAccountVersionConfig<GetEntryPointFromAccount<TAccount>>\n ];\n\n if (\n def.addresses.overrides != null &&\n chain.id in def.addresses.overrides!\n ) {\n return [def.addresses.overrides[chain.id].factory, version];\n }\n\n return [def.addresses.default.factory, version];\n })\n );\n\n const version =\n fromHex(implAddress, \"bigint\") === 0n\n ? factoryToVersion.get(factoryAddress.toLowerCase() as Address)\n : implToVersion.get(implAddress.toLowerCase() as Address);\n\n if (!version) {\n throw new Error(\n `Could not determine ${account.source} version for chain ${chain.id}`\n );\n }\n\n return AccountVersionRegistry[accountType][version];\n}\n"]}
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../src/light-account/utils.ts"],"names":[],"mappings":"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","sourcesContent":["import type { GetEntryPointFromAccount } from \"@aa-sdk/core\";\nimport { fromHex, type Address, type Chain } from \"viem\";\nimport type { LightAccountBase } from \"./accounts/base\";\nimport type {\n LightAccountType,\n LightAccountVersion,\n LightAccountVersionConfig,\n LightAccountVersionConfigs,\n} from \"./types\";\n\n/**\n * Account version registry interface that defines the light account versions\n * and the version definition for each light account type\n *\n */\nexport const AccountVersionRegistry: LightAccountVersionConfigs = {\n LightAccount: {\n \"v1.0.1\": {\n entryPointVersion: \"0.6.0\",\n addresses: {\n default: {\n factory:\n \"0x000000893A26168158fbeaDD9335Be5bC96592E2\".toLowerCase() as Address,\n impl: \"0xc1b2fc4197c9187853243e6e4eb5a4af8879a1c0\".toLowerCase() as Address,\n },\n },\n },\n \"v1.0.2\": {\n entryPointVersion: \"0.6.0\",\n addresses: {\n default: {\n factory:\n \"0x00000055C0b4fA41dde26A74435ff03692292FBD\".toLowerCase() as Address,\n impl: \"0x5467b1947F47d0646704EB801E075e72aeAe8113\".toLowerCase() as Address,\n },\n },\n },\n \"v1.1.0\": {\n entryPointVersion: \"0.6.0\",\n addresses: {\n default: {\n factory:\n \"0x00004EC70002a32400f8ae005A26081065620D20\".toLowerCase() as Address,\n impl: \"0xae8c656ad28F2B59a196AB61815C16A0AE1c3cba\".toLowerCase() as Address,\n },\n },\n },\n \"v2.0.0\": {\n entryPointVersion: \"0.7.0\",\n addresses: {\n default: {\n factory:\n \"0x0000000000400CdFef5E2714E63d8040b700BC24\".toLowerCase() as Address,\n impl: \"0x8E8e658E22B12ada97B402fF0b044D6A325013C7\".toLowerCase() as Address,\n },\n },\n },\n },\n MultiOwnerLightAccount: {\n \"v2.0.0\": {\n entryPointVersion: \"0.7.0\",\n addresses: {\n default: {\n factory:\n \"0x000000000019d2Ee9F2729A65AfE20bb0020AefC\".toLowerCase() as Address,\n impl: \"0xd2c27F9eE8E4355f71915ffD5568cB3433b6823D\".toLowerCase() as Address,\n },\n },\n },\n },\n};\n\n/**\n * Get the default light account version for the given light account type\n *\n * @template {LightAccountType} TLightAccountType\n * @returns {LightAccountVersion<TLightAccountType>} the default version for the given light account type\n */\nexport const defaultLightAccountVersion = <\n TLightAccountType extends LightAccountType\n>(): LightAccountVersion<TLightAccountType> => \"v2.0.0\";\n\n/**\n * Utility method returning the default light account factory address given a Chain object\n *\n * @param {Chain} chain - a Chain object\n * @param {LightAccountVersion} version - the version of the light account to get the factory address for\n * @returns {Address} an for the given chain\n * @throws if the chain doesn't have an address currently deployed\n */\nexport const getDefaultLightAccountFactoryAddress = (\n chain: Chain,\n version: LightAccountVersion<\"LightAccount\">\n): Address => {\n return (\n AccountVersionRegistry.LightAccount[version].addresses.overrides?.[chain.id]\n ?.factory ??\n AccountVersionRegistry.LightAccount[version].addresses.default.factory\n );\n};\n\n/**\n * Utility method returning the default multi owner light account factory address given a Chain object\n *\n * @param {Chain} chain - a Chain object\n * @param {string} version - the version of the light account to get the factory address for\n * @returns {Address} an Address for the given chain\n */\nexport const getDefaultMultiOwnerLightAccountFactoryAddress = (\n chain: Chain,\n version: LightAccountVersion<\"MultiOwnerLightAccount\">\n) => {\n return (\n AccountVersionRegistry.MultiOwnerLightAccount[version].addresses\n .overrides?.[chain.id]?.factory ??\n AccountVersionRegistry.MultiOwnerLightAccount[version].addresses.default\n .factory\n );\n};\n\n/**\n * Can be used to check if the account with one of the following implementation addresses\n * to not support 1271 signing.\n *\n * Light accounts with versions v1.0.1 and v1.0.2 do not support 1271 signing.\n */\nexport const LightAccountUnsupported1271Impls = [\n AccountVersionRegistry.LightAccount[\"v1.0.1\"],\n AccountVersionRegistry.LightAccount[\"v1.0.2\"],\n];\n\n/**\n * Can be used to check if the account with one of the following factory addresses\n * to not support 1271 signing.\n *\n * Light accounts with versions v1.0.1 and v1.0.2 do not support 1271 signing.\n */\nexport const LightAccountUnsupported1271Factories = new Set(\n LightAccountUnsupported1271Impls.map((x) => [\n x.addresses.default.factory,\n ...Object.values(x.addresses.overrides ?? {}).map((z) => z.factory),\n ]).flat()\n);\n\n/**\n * Get the light account version definition for the given light account and chain\n *\n * @template {LightAccountBase} TAccount\n * @param {LightAccountBase} account the light account to get the version for\n * @param {Chain} chain - the chain to get the version for\n * @returns {Promise<LightAccountVersionConfig>} the light account version definition for the given light account and chain\n */\nexport async function getLightAccountVersionForAccount<\n TAccount extends LightAccountBase\n>(account: TAccount, chain: Chain): Promise<LightAccountVersionConfig> {\n const accountType = account.source as LightAccountType;\n const factoryAddress = await account.getFactoryAddress();\n const implAddress = await account.getImplementationAddress();\n const implToVersion = new Map(\n Object.entries(AccountVersionRegistry[accountType]).map((pair) => {\n const [version, def] = pair as [\n LightAccountVersion<LightAccountType>,\n LightAccountVersionConfig<GetEntryPointFromAccount<TAccount>>\n ];\n\n if (\n def.addresses.overrides != null &&\n chain.id in def.addresses.overrides!\n ) {\n return [def.addresses.overrides[chain.id].impl, version];\n }\n\n return [def.addresses.default.impl, version];\n })\n );\n\n const factoryToVersion = new Map(\n Object.entries(AccountVersionRegistry[accountType]).map((pair) => {\n const [version, def] = pair as [\n LightAccountVersion<LightAccountType>,\n LightAccountVersionConfig<GetEntryPointFromAccount<TAccount>>\n ];\n\n if (\n def.addresses.overrides != null &&\n chain.id in def.addresses.overrides!\n ) {\n return [def.addresses.overrides[chain.id].factory, version];\n }\n\n return [def.addresses.default.factory, version];\n })\n );\n\n const version =\n fromHex(implAddress, \"bigint\") === 0n\n ? factoryToVersion.get(factoryAddress.toLowerCase() as Address)\n : implToVersion.get(implAddress.toLowerCase() as Address);\n\n if (!version) {\n throw new Error(\n `Could not determine ${account.source} version for chain ${chain.id}`\n );\n }\n\n return AccountVersionRegistry[accountType][version];\n}\n"]}
@@ -4,6 +4,27 @@ import { MultiOwnerModularAccountFactoryAbi } from "../abis/MultiOwnerModularAcc
4
4
  import { multiOwnerMessageSigner } from "../plugins/multi-owner/signer.js";
5
5
  import { getDefaultMultiOwnerModularAccountFactoryAddress } from "../utils.js";
6
6
  import { standardExecutor } from "./standardExecutor.js";
7
+ /**
8
+ * Creates a multi-owner modular account with the given parameters, including transport, chain, signer, account address, initialization code, entry point, factory address, owners, and salt.
9
+ * Ensures that the owners are unique, ordered, and non-zero.
10
+ *
11
+ * @example
12
+ * ```ts
13
+ * import { createMultiOwnerModularAccount } from "@account-kit/smart-contracts";
14
+ * import { LocalAccountSigner } from "@aa-sdk/core";
15
+ * import { sepolia } from "viem/chains";
16
+ * import { http, generatePrivateKey } from "viem"
17
+ *
18
+ * const account = await createMultiOwnerModularAccount({
19
+ * chain: sepolia,
20
+ * transport: http("RPC_URL"),
21
+ * signer: LocalAccountSigner.privateKeyToAccountSigner(generatePrivateKey())
22
+ * });
23
+ * ```
24
+ *
25
+ * @param {CreateMultiOwnerModularAccountParams} config Configuration parameters for creating a multi-owner modular account
26
+ * @returns {Promise<MultiOwnerModularAccount>} A promise that resolves to a `MultiOwnerModularAccount` object containing the created account information and methods
27
+ */
7
28
  export async function createMultiOwnerModularAccount(config) {
8
29
  const { transport, chain, signer, accountAddress, initCode, entryPoint = getEntryPoint(chain, { version: "0.6.0" }), factoryAddress = getDefaultMultiOwnerModularAccountFactoryAddress(chain), owners = [], salt = 0n, } = config;
9
30
  const client = createBundlerClient({
@@ -14,7 +35,9 @@ export async function createMultiOwnerModularAccount(config) {
14
35
  if (initCode) {
15
36
  return initCode;
16
37
  }
38
+ // NOTE: the current signer connected will be one of the owners as well
17
39
  const ownerAddress = await signer.getAddress();
40
+ // owners need to be dedupe + ordered in ascending order and not == to zero address
18
41
  const owners_ = Array.from(new Set([...owners, ownerAddress]))
19
42
  .filter((x) => hexToBigInt(x) !== 0n)
20
43
  .sort((a, b) => {
@@ -1 +1 @@
1
- {"version":3,"file":"multiOwnerAccount.js","sourceRoot":"","sources":["../../../../../src/msca/account/multiOwnerAccount.ts"],"names":[],"mappings":"AAMA,OAAO,EACL,mBAAmB,EACnB,iBAAiB,EACjB,aAAa,EACb,sBAAsB,GACvB,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,SAAS,EACT,kBAAkB,EAClB,WAAW,GAKZ,MAAM,MAAM,CAAC;AACd,OAAO,EAAE,kCAAkC,EAAE,MAAM,4CAA4C,CAAC;AAChG,OAAO,EAAE,uBAAuB,EAAE,MAAM,kCAAkC,CAAC;AAC3E,OAAO,EAAE,gDAAgD,EAAE,MAAM,aAAa,CAAC;AAC/E,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AA6DzD,MAAM,CAAC,KAAK,UAAU,8BAA8B,CAClD,MAA4C;IAE5C,MAAM,EACJ,SAAS,EACT,KAAK,EACL,MAAM,EACN,cAAc,EACd,QAAQ,EACR,UAAU,GAAG,aAAa,CAAC,KAAK,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EACvD,cAAc,GAAG,gDAAgD,CAAC,KAAK,CAAC,EACxE,MAAM,GAAG,EAAE,EACX,IAAI,GAAG,EAAE,GACV,GAAG,MAAM,CAAC;IAEX,MAAM,MAAM,GAAG,mBAAmB,CAAC;QACjC,SAAS;QACT,KAAK;KACN,CAAC,CAAC;IAEH,MAAM,kBAAkB,GAAG,KAAK,IAAI,EAAE;QACpC,IAAI,QAAQ,EAAE,CAAC;YACb,OAAO,QAAQ,CAAC;QAClB,CAAC;QAGD,MAAM,YAAY,GAAG,MAAM,MAAM,CAAC,UAAU,EAAE,CAAC;QAE/C,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC;aAC3D,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC;aACpC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;YACb,MAAM,OAAO,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;YAC/B,MAAM,OAAO,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;YAE/B,OAAO,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC5D,CAAC,CAAC,CAAC;QAEL,OAAO,SAAS,CAAC;YACf,cAAc;YACd,kBAAkB,CAAC;gBACjB,GAAG,EAAE,kCAAkC;gBACvC,YAAY,EAAE,eAAe;gBAC7B,IAAI,EAAE,CAAC,IAAI,EAAE,OAAO,CAAC;aACtB,CAAC;SACH,CAAC,CAAC;IACL,CAAC,CAAC;IAEF,MAAM,eAAe,GAAG,MAAM,iBAAiB,CAAC;QAC9C,MAAM;QACN,UAAU;QACV,cAAc;QACd,kBAAkB;KACnB,CAAC,CAAC;IAEH,MAAM,WAAW,GAAG,MAAM,sBAAsB,CAAC;QAC/C,SAAS;QACT,KAAK;QACL,UAAU;QACV,cAAc,EAAE,eAAe;QAC/B,MAAM,EAAE,0BAA0B;QAClC,kBAAkB;QAClB,GAAG,gBAAgB;QACnB,GAAG,uBAAuB,CAAC,MAAM,EAAE,eAAe,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC;KAClE,CAAC,CAAC;IAEH,OAAO;QACL,GAAG,WAAW;QACd,SAAS,EAAE,MAAM,MAAM,CAAC,UAAU,EAAE;QACpC,SAAS,EAAE,GAAG,EAAE,CAAC,MAAM;KACxB,CAAC;AACJ,CAAC","sourcesContent":["import type {\n EntryPointParameter,\n SmartAccountSigner,\n SmartContractAccountWithSigner,\n ToSmartContractAccountParams,\n} from \"@aa-sdk/core\";\nimport {\n createBundlerClient,\n getAccountAddress,\n getEntryPoint,\n toSmartContractAccount,\n} from \"@aa-sdk/core\";\nimport {\n concatHex,\n encodeFunctionData,\n hexToBigInt,\n type Address,\n type Chain,\n type Hex,\n type Transport,\n} from \"viem\";\nimport { MultiOwnerModularAccountFactoryAbi } from \"../abis/MultiOwnerModularAccountFactory.js\";\nimport { multiOwnerMessageSigner } from \"../plugins/multi-owner/signer.js\";\nimport { getDefaultMultiOwnerModularAccountFactoryAddress } from \"../utils.js\";\nimport { standardExecutor } from \"./standardExecutor.js\";\n\nexport type MultiOwnerModularAccount<\n TSigner extends SmartAccountSigner = SmartAccountSigner\n> = SmartContractAccountWithSigner<\n \"MultiOwnerModularAccount\",\n TSigner,\n \"0.6.0\"\n>;\n\n// [!region CreateMultiOwnerModularAccountParams]\nexport type CreateMultiOwnerModularAccountParams<\n TTransport extends Transport = Transport,\n TSigner extends SmartAccountSigner = SmartAccountSigner,\n TEntryPointVersion extends \"0.6.0\" = \"0.6.0\"\n> = Pick<\n ToSmartContractAccountParams<\n \"MultiOwnerModularAccount\",\n TTransport,\n Chain,\n TEntryPointVersion\n >,\n \"transport\" | \"chain\"\n> & {\n signer: TSigner;\n salt?: bigint;\n factoryAddress?: Address;\n initCode?: Hex;\n owners?: Address[];\n accountAddress?: Address;\n} & EntryPointParameter<TEntryPointVersion, Chain>;\n// [!endregion CreateMultiOwnerModularAccountParams]\n\nexport async function createMultiOwnerModularAccount<\n TTransport extends Transport = Transport,\n TSigner extends SmartAccountSigner = SmartAccountSigner\n>(\n config: CreateMultiOwnerModularAccountParams<TTransport, TSigner>\n): Promise<MultiOwnerModularAccount<TSigner>>;\n\n/**\n * Creates a multi-owner modular account with the given parameters, including transport, chain, signer, account address, initialization code, entry point, factory address, owners, and salt.\n * Ensures that the owners are unique, ordered, and non-zero.\n *\n * @example\n * ```ts\n * import { createMultiOwnerModularAccount } from \"@account-kit/smart-contracts\";\n * import { LocalAccountSigner } from \"@aa-sdk/core\";\n * import { sepolia } from \"viem/chains\";\n * import { http, generatePrivateKey } from \"viem\"\n *\n * const account = await createMultiOwnerModularAccount({\n * chain: sepolia,\n * transport: http(\"RPC_URL\"),\n * signer: LocalAccountSigner.privateKeyToAccountSigner(generatePrivateKey())\n * });\n * ```\n *\n * @param {CreateMultiOwnerModularAccountParams} config Configuration parameters for creating a multi-owner modular account\n * @returns {Promise<MultiOwnerModularAccount>} A promise that resolves to a `MultiOwnerModularAccount` object containing the created account information and methods\n */\nexport async function createMultiOwnerModularAccount(\n config: CreateMultiOwnerModularAccountParams\n): Promise<MultiOwnerModularAccount> {\n const {\n transport,\n chain,\n signer,\n accountAddress,\n initCode,\n entryPoint = getEntryPoint(chain, { version: \"0.6.0\" }),\n factoryAddress = getDefaultMultiOwnerModularAccountFactoryAddress(chain),\n owners = [],\n salt = 0n,\n } = config;\n\n const client = createBundlerClient({\n transport,\n chain,\n });\n\n const getAccountInitCode = async () => {\n if (initCode) {\n return initCode;\n }\n\n // NOTE: the current signer connected will be one of the owners as well\n const ownerAddress = await signer.getAddress();\n // owners need to be dedupe + ordered in ascending order and not == to zero address\n const owners_ = Array.from(new Set([...owners, ownerAddress]))\n .filter((x) => hexToBigInt(x) !== 0n)\n .sort((a, b) => {\n const bigintA = hexToBigInt(a);\n const bigintB = hexToBigInt(b);\n\n return bigintA < bigintB ? -1 : bigintA > bigintB ? 1 : 0;\n });\n\n return concatHex([\n factoryAddress,\n encodeFunctionData({\n abi: MultiOwnerModularAccountFactoryAbi,\n functionName: \"createAccount\",\n args: [salt, owners_],\n }),\n ]);\n };\n\n const _accountAddress = await getAccountAddress({\n client,\n entryPoint,\n accountAddress,\n getAccountInitCode,\n });\n\n const baseAccount = await toSmartContractAccount({\n transport,\n chain,\n entryPoint,\n accountAddress: _accountAddress,\n source: `MultiOwnerModularAccount`,\n getAccountInitCode,\n ...standardExecutor,\n ...multiOwnerMessageSigner(client, _accountAddress, () => signer),\n });\n\n return {\n ...baseAccount,\n publicKey: await signer.getAddress(),\n getSigner: () => signer,\n };\n}\n"]}
1
+ {"version":3,"file":"multiOwnerAccount.js","sourceRoot":"","sources":["../../../../../src/msca/account/multiOwnerAccount.ts"],"names":[],"mappings":"AAMA,OAAO,EACL,mBAAmB,EACnB,iBAAiB,EACjB,aAAa,EACb,sBAAsB,GACvB,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,SAAS,EACT,kBAAkB,EAClB,WAAW,GAKZ,MAAM,MAAM,CAAC;AACd,OAAO,EAAE,kCAAkC,EAAE,MAAM,4CAA4C,CAAC;AAChG,OAAO,EAAE,uBAAuB,EAAE,MAAM,kCAAkC,CAAC;AAC3E,OAAO,EAAE,gDAAgD,EAAE,MAAM,aAAa,CAAC;AAC/E,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAwCzD;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,CAAC,KAAK,UAAU,8BAA8B,CAClD,MAA4C;IAE5C,MAAM,EACJ,SAAS,EACT,KAAK,EACL,MAAM,EACN,cAAc,EACd,QAAQ,EACR,UAAU,GAAG,aAAa,CAAC,KAAK,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EACvD,cAAc,GAAG,gDAAgD,CAAC,KAAK,CAAC,EACxE,MAAM,GAAG,EAAE,EACX,IAAI,GAAG,EAAE,GACV,GAAG,MAAM,CAAC;IAEX,MAAM,MAAM,GAAG,mBAAmB,CAAC;QACjC,SAAS;QACT,KAAK;KACN,CAAC,CAAC;IAEH,MAAM,kBAAkB,GAAG,KAAK,IAAI,EAAE;QACpC,IAAI,QAAQ,EAAE,CAAC;YACb,OAAO,QAAQ,CAAC;QAClB,CAAC;QAED,uEAAuE;QACvE,MAAM,YAAY,GAAG,MAAM,MAAM,CAAC,UAAU,EAAE,CAAC;QAC/C,mFAAmF;QACnF,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC;aAC3D,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC;aACpC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;YACb,MAAM,OAAO,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;YAC/B,MAAM,OAAO,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;YAE/B,OAAO,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC5D,CAAC,CAAC,CAAC;QAEL,OAAO,SAAS,CAAC;YACf,cAAc;YACd,kBAAkB,CAAC;gBACjB,GAAG,EAAE,kCAAkC;gBACvC,YAAY,EAAE,eAAe;gBAC7B,IAAI,EAAE,CAAC,IAAI,EAAE,OAAO,CAAC;aACtB,CAAC;SACH,CAAC,CAAC;IACL,CAAC,CAAC;IAEF,MAAM,eAAe,GAAG,MAAM,iBAAiB,CAAC;QAC9C,MAAM;QACN,UAAU;QACV,cAAc;QACd,kBAAkB;KACnB,CAAC,CAAC;IAEH,MAAM,WAAW,GAAG,MAAM,sBAAsB,CAAC;QAC/C,SAAS;QACT,KAAK;QACL,UAAU;QACV,cAAc,EAAE,eAAe;QAC/B,MAAM,EAAE,0BAA0B;QAClC,kBAAkB;QAClB,GAAG,gBAAgB;QACnB,GAAG,uBAAuB,CAAC,MAAM,EAAE,eAAe,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC;KAClE,CAAC,CAAC;IAEH,OAAO;QACL,GAAG,WAAW;QACd,SAAS,EAAE,MAAM,MAAM,CAAC,UAAU,EAAE;QACpC,SAAS,EAAE,GAAG,EAAE,CAAC,MAAM;KACxB,CAAC;AACJ,CAAC","sourcesContent":["import type {\n EntryPointParameter,\n SmartAccountSigner,\n SmartContractAccountWithSigner,\n ToSmartContractAccountParams,\n} from \"@aa-sdk/core\";\nimport {\n createBundlerClient,\n getAccountAddress,\n getEntryPoint,\n toSmartContractAccount,\n} from \"@aa-sdk/core\";\nimport {\n concatHex,\n encodeFunctionData,\n hexToBigInt,\n type Address,\n type Chain,\n type Hex,\n type Transport,\n} from \"viem\";\nimport { MultiOwnerModularAccountFactoryAbi } from \"../abis/MultiOwnerModularAccountFactory.js\";\nimport { multiOwnerMessageSigner } from \"../plugins/multi-owner/signer.js\";\nimport { getDefaultMultiOwnerModularAccountFactoryAddress } from \"../utils.js\";\nimport { standardExecutor } from \"./standardExecutor.js\";\n\nexport type MultiOwnerModularAccount<\n TSigner extends SmartAccountSigner = SmartAccountSigner\n> = SmartContractAccountWithSigner<\n \"MultiOwnerModularAccount\",\n TSigner,\n \"0.6.0\"\n>;\n\n// [!region CreateMultiOwnerModularAccountParams]\nexport type CreateMultiOwnerModularAccountParams<\n TTransport extends Transport = Transport,\n TSigner extends SmartAccountSigner = SmartAccountSigner,\n TEntryPointVersion extends \"0.6.0\" = \"0.6.0\"\n> = Pick<\n ToSmartContractAccountParams<\n \"MultiOwnerModularAccount\",\n TTransport,\n Chain,\n TEntryPointVersion\n >,\n \"transport\" | \"chain\"\n> & {\n signer: TSigner;\n salt?: bigint;\n factoryAddress?: Address;\n initCode?: Hex;\n owners?: Address[];\n accountAddress?: Address;\n} & EntryPointParameter<TEntryPointVersion, Chain>;\n// [!endregion CreateMultiOwnerModularAccountParams]\n\nexport async function createMultiOwnerModularAccount<\n TTransport extends Transport = Transport,\n TSigner extends SmartAccountSigner = SmartAccountSigner\n>(\n config: CreateMultiOwnerModularAccountParams<TTransport, TSigner>\n): Promise<MultiOwnerModularAccount<TSigner>>;\n\n/**\n * Creates a multi-owner modular account with the given parameters, including transport, chain, signer, account address, initialization code, entry point, factory address, owners, and salt.\n * Ensures that the owners are unique, ordered, and non-zero.\n *\n * @example\n * ```ts\n * import { createMultiOwnerModularAccount } from \"@account-kit/smart-contracts\";\n * import { LocalAccountSigner } from \"@aa-sdk/core\";\n * import { sepolia } from \"viem/chains\";\n * import { http, generatePrivateKey } from \"viem\"\n *\n * const account = await createMultiOwnerModularAccount({\n * chain: sepolia,\n * transport: http(\"RPC_URL\"),\n * signer: LocalAccountSigner.privateKeyToAccountSigner(generatePrivateKey())\n * });\n * ```\n *\n * @param {CreateMultiOwnerModularAccountParams} config Configuration parameters for creating a multi-owner modular account\n * @returns {Promise<MultiOwnerModularAccount>} A promise that resolves to a `MultiOwnerModularAccount` object containing the created account information and methods\n */\nexport async function createMultiOwnerModularAccount(\n config: CreateMultiOwnerModularAccountParams\n): Promise<MultiOwnerModularAccount> {\n const {\n transport,\n chain,\n signer,\n accountAddress,\n initCode,\n entryPoint = getEntryPoint(chain, { version: \"0.6.0\" }),\n factoryAddress = getDefaultMultiOwnerModularAccountFactoryAddress(chain),\n owners = [],\n salt = 0n,\n } = config;\n\n const client = createBundlerClient({\n transport,\n chain,\n });\n\n const getAccountInitCode = async () => {\n if (initCode) {\n return initCode;\n }\n\n // NOTE: the current signer connected will be one of the owners as well\n const ownerAddress = await signer.getAddress();\n // owners need to be dedupe + ordered in ascending order and not == to zero address\n const owners_ = Array.from(new Set([...owners, ownerAddress]))\n .filter((x) => hexToBigInt(x) !== 0n)\n .sort((a, b) => {\n const bigintA = hexToBigInt(a);\n const bigintB = hexToBigInt(b);\n\n return bigintA < bigintB ? -1 : bigintA > bigintB ? 1 : 0;\n });\n\n return concatHex([\n factoryAddress,\n encodeFunctionData({\n abi: MultiOwnerModularAccountFactoryAbi,\n functionName: \"createAccount\",\n args: [salt, owners_],\n }),\n ]);\n };\n\n const _accountAddress = await getAccountAddress({\n client,\n entryPoint,\n accountAddress,\n getAccountInitCode,\n });\n\n const baseAccount = await toSmartContractAccount({\n transport,\n chain,\n entryPoint,\n accountAddress: _accountAddress,\n source: `MultiOwnerModularAccount`,\n getAccountInitCode,\n ...standardExecutor,\n ...multiOwnerMessageSigner(client, _accountAddress, () => signer),\n });\n\n return {\n ...baseAccount,\n publicKey: await signer.getAddress(),\n getSigner: () => signer,\n };\n}\n"]}
@@ -5,6 +5,28 @@ import { multisigSignMethods } from "../plugins/multisig/signer.js";
5
5
  import { getDefaultMultisigModularAccountFactoryAddress } from "../utils.js";
6
6
  import { standardExecutor } from "./standardExecutor.js";
7
7
  export const MULTISIG_ACCOUNT_SOURCE = "MultisigModularAccount";
8
+ /**
9
+ * Creates a multisig modular account using the provided parameters, including transport, chain, signer, account address, and other account settings. It configures the account with multiple owners and the specified threshold.
10
+ *
11
+ * @example
12
+ * ```ts
13
+ * import { createMultisigModularAccount } from "@account-kit/smart-contracts";
14
+ * import { LocalAccountSigner } from "@aa-sdk/core";
15
+ * import { sepolia } from "viem/chains";
16
+ * import { http, generatePrivateKey } from "viem"
17
+ *
18
+ * const account = await createMultisigModularAccount({
19
+ * chain: sepolia,
20
+ * transport: http("RPC_URL"),
21
+ * signer: LocalAccountSigner.privateKeyToAccountSigner(generatePrivateKey()),
22
+ * owners: [...], // other owners on the account
23
+ * threshold: 2, // 2 of N signatures
24
+ * });
25
+ * ```
26
+ *
27
+ * @param {CreateMultisigModularAccountParams} config The parameters for creating a multisig modular account.
28
+ * @returns {Promise<MultisigModularAccount>} A promise that resolves to a `MultisigModularAccount` object containing the created account information and methods.
29
+ */
8
30
  export async function createMultisigModularAccount(config) {
9
31
  const { transport, chain, signer, accountAddress: accountAddress_, initCode, entryPoint = getEntryPoint(chain, { version: "0.6.0" }), factoryAddress = getDefaultMultisigModularAccountFactoryAddress(chain), owners = [], salt = 0n, threshold, } = config;
10
32
  const client = createBundlerClient({
@@ -15,7 +37,9 @@ export async function createMultisigModularAccount(config) {
15
37
  if (initCode) {
16
38
  return initCode;
17
39
  }
40
+ // NOTE: the current signer connected will be one of the sigs as well
18
41
  const sigAddress = await signer.getAddress();
42
+ // sigs need to be deduped + ordered in ascending order and !== to zero address
19
43
  const sigs_ = Array.from(new Set([...owners, sigAddress]))
20
44
  .filter((x) => hexToBigInt(x) !== 0n)
21
45
  .sort((a, b) => {
@@ -1 +1 @@
1
- {"version":3,"file":"multisigAccount.js","sourceRoot":"","sources":["../../../../../src/msca/account/multisigAccount.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n createBundlerClient,\n getAccountAddress,\n getEntryPoint,\n toSmartContractAccount,\n type Address,\n type EntryPointParameter,\n type SmartAccountSigner,\n type SmartContractAccount,\n type SmartContractAccountWithSigner,\n type ToSmartContractAccountParams,\n} from \"@aa-sdk/core\";\nimport {\n concatHex,\n encodeFunctionData,\n hexToBigInt,\n type Chain,\n type Hex,\n type Transport,\n} from \"viem\";\nimport { MultisigModularAccountFactoryAbi } from \"../abis/MultisigModularAccountFactory.js\";\nimport { multisigSignMethods } from \"../plugins/multisig/signer.js\";\nimport { getDefaultMultisigModularAccountFactoryAddress } from \"../utils.js\";\nimport { standardExecutor } from \"./standardExecutor.js\";\n\nexport const MULTISIG_ACCOUNT_SOURCE = \"MultisigModularAccount\";\n\nexport type MultisigModularAccount<\n TSigner extends SmartAccountSigner = SmartAccountSigner\n> = SmartContractAccountWithSigner<\n typeof MULTISIG_ACCOUNT_SOURCE,\n TSigner,\n \"0.6.0\"\n> & {\n getLocalThreshold: () => bigint;\n};\n\nexport type CreateMultisigModularAccountParams<\n TTransport extends Transport = Transport,\n TSigner extends SmartAccountSigner = SmartAccountSigner,\n TEntryPointVersion extends \"0.6.0\" = \"0.6.0\"\n> = Pick<\n ToSmartContractAccountParams<\n \"MultisigModularAccount\",\n TTransport,\n Chain,\n TEntryPointVersion\n >,\n \"transport\" | \"chain\"\n> & {\n signer: TSigner;\n salt?: bigint;\n factoryAddress?: Address;\n initCode?: Hex;\n threshold: bigint;\n owners?: Address[];\n accountAddress?: Address;\n} & EntryPointParameter<TEntryPointVersion, Chain>;\n\nexport async function createMultisigModularAccount<\n TTransport extends Transport = Transport,\n TSigner extends SmartAccountSigner = SmartAccountSigner\n>(\n config: CreateMultisigModularAccountParams<TTransport, TSigner>\n): Promise<MultisigModularAccount<TSigner>>;\n\n/**\n * Creates a multisig modular account using the provided parameters, including transport, chain, signer, account address, and other account settings. It configures the account with multiple owners and the specified threshold.\n *\n * @example\n * ```ts\n * import { createMultisigModularAccount } from \"@account-kit/smart-contracts\";\n * import { LocalAccountSigner } from \"@aa-sdk/core\";\n * import { sepolia } from \"viem/chains\";\n * import { http, generatePrivateKey } from \"viem\"\n *\n * const account = await createMultisigModularAccount({\n * chain: sepolia,\n * transport: http(\"RPC_URL\"),\n * signer: LocalAccountSigner.privateKeyToAccountSigner(generatePrivateKey()),\n * owners: [...], // other owners on the account\n * threshold: 2, // 2 of N signatures\n * });\n * ```\n *\n * @param {CreateMultisigModularAccountParams} config The parameters for creating a multisig modular account.\n * @returns {Promise<MultisigModularAccount>} A promise that resolves to a `MultisigModularAccount` object containing the created account information and methods.\n */\nexport async function createMultisigModularAccount(\n config: CreateMultisigModularAccountParams\n): Promise<MultisigModularAccount> {\n const {\n transport,\n chain,\n signer,\n accountAddress: accountAddress_,\n initCode,\n entryPoint = getEntryPoint(chain, { version: \"0.6.0\" }),\n factoryAddress = getDefaultMultisigModularAccountFactoryAddress(chain),\n owners = [],\n salt = 0n,\n threshold,\n } = config;\n\n const client = createBundlerClient({\n transport,\n chain,\n });\n\n const getAccountInitCode = async () => {\n if (initCode) {\n return initCode;\n }\n\n // NOTE: the current signer connected will be one of the sigs as well\n const sigAddress = await signer.getAddress();\n // sigs need to be deduped + ordered in ascending order and !== to zero address\n const sigs_ = Array.from(new Set([...owners, sigAddress]))\n .filter((x) => hexToBigInt(x) !== 0n)\n .sort((a, b) => {\n const bigintA = hexToBigInt(a);\n const bigintB = hexToBigInt(b);\n\n return bigintA < bigintB ? -1 : bigintA > bigintB ? 1 : 0;\n });\n\n return concatHex([\n factoryAddress,\n encodeFunctionData({\n abi: MultisigModularAccountFactoryAbi,\n functionName: \"createAccount\",\n args: [salt, sigs_, threshold],\n }),\n ]);\n };\n\n const accountAddress = await getAccountAddress({\n client,\n entryPoint,\n accountAddress: accountAddress_,\n getAccountInitCode,\n });\n\n const baseAccount = await toSmartContractAccount({\n transport,\n chain,\n entryPoint,\n accountAddress,\n source: MULTISIG_ACCOUNT_SOURCE,\n getAccountInitCode,\n ...standardExecutor,\n ...multisigSignMethods({\n client,\n accountAddress,\n threshold,\n signer: () => signer,\n }),\n });\n\n return {\n ...baseAccount,\n getLocalThreshold: () => threshold,\n publicKey: await signer.getAddress(),\n getSigner: () => signer,\n };\n}\n\nexport const isMultisigModularAccount = (\n acct: SmartContractAccount\n): acct is MultisigModularAccount => {\n return acct.source === MULTISIG_ACCOUNT_SOURCE;\n};\n"]}
1
+ {"version":3,"file":"multisigAccount.js","sourceRoot":"","sources":["../../../../../src/msca/account/multisigAccount.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n createBundlerClient,\n getAccountAddress,\n getEntryPoint,\n toSmartContractAccount,\n type Address,\n type EntryPointParameter,\n type SmartAccountSigner,\n type SmartContractAccount,\n type SmartContractAccountWithSigner,\n type ToSmartContractAccountParams,\n} from \"@aa-sdk/core\";\nimport {\n concatHex,\n encodeFunctionData,\n hexToBigInt,\n type Chain,\n type Hex,\n type Transport,\n} from \"viem\";\nimport { MultisigModularAccountFactoryAbi } from \"../abis/MultisigModularAccountFactory.js\";\nimport { multisigSignMethods } from \"../plugins/multisig/signer.js\";\nimport { getDefaultMultisigModularAccountFactoryAddress } from \"../utils.js\";\nimport { standardExecutor } from \"./standardExecutor.js\";\n\nexport const MULTISIG_ACCOUNT_SOURCE = \"MultisigModularAccount\";\n\nexport type MultisigModularAccount<\n TSigner extends SmartAccountSigner = SmartAccountSigner\n> = SmartContractAccountWithSigner<\n typeof MULTISIG_ACCOUNT_SOURCE,\n TSigner,\n \"0.6.0\"\n> & {\n getLocalThreshold: () => bigint;\n};\n\nexport type CreateMultisigModularAccountParams<\n TTransport extends Transport = Transport,\n TSigner extends SmartAccountSigner = SmartAccountSigner,\n TEntryPointVersion extends \"0.6.0\" = \"0.6.0\"\n> = Pick<\n ToSmartContractAccountParams<\n \"MultisigModularAccount\",\n TTransport,\n Chain,\n TEntryPointVersion\n >,\n \"transport\" | \"chain\"\n> & {\n signer: TSigner;\n salt?: bigint;\n factoryAddress?: Address;\n initCode?: Hex;\n threshold: bigint;\n owners?: Address[];\n accountAddress?: Address;\n} & EntryPointParameter<TEntryPointVersion, Chain>;\n\nexport async function createMultisigModularAccount<\n TTransport extends Transport = Transport,\n TSigner extends SmartAccountSigner = SmartAccountSigner\n>(\n config: CreateMultisigModularAccountParams<TTransport, TSigner>\n): Promise<MultisigModularAccount<TSigner>>;\n\n/**\n * Creates a multisig modular account using the provided parameters, including transport, chain, signer, account address, and other account settings. It configures the account with multiple owners and the specified threshold.\n *\n * @example\n * ```ts\n * import { createMultisigModularAccount } from \"@account-kit/smart-contracts\";\n * import { LocalAccountSigner } from \"@aa-sdk/core\";\n * import { sepolia } from \"viem/chains\";\n * import { http, generatePrivateKey } from \"viem\"\n *\n * const account = await createMultisigModularAccount({\n * chain: sepolia,\n * transport: http(\"RPC_URL\"),\n * signer: LocalAccountSigner.privateKeyToAccountSigner(generatePrivateKey()),\n * owners: [...], // other owners on the account\n * threshold: 2, // 2 of N signatures\n * });\n * ```\n *\n * @param {CreateMultisigModularAccountParams} config The parameters for creating a multisig modular account.\n * @returns {Promise<MultisigModularAccount>} A promise that resolves to a `MultisigModularAccount` object containing the created account information and methods.\n */\nexport async function createMultisigModularAccount(\n config: CreateMultisigModularAccountParams\n): Promise<MultisigModularAccount> {\n const {\n transport,\n chain,\n signer,\n accountAddress: accountAddress_,\n initCode,\n entryPoint = getEntryPoint(chain, { version: \"0.6.0\" }),\n factoryAddress = getDefaultMultisigModularAccountFactoryAddress(chain),\n owners = [],\n salt = 0n,\n threshold,\n } = config;\n\n const client = createBundlerClient({\n transport,\n chain,\n });\n\n const getAccountInitCode = async () => {\n if (initCode) {\n return initCode;\n }\n\n // NOTE: the current signer connected will be one of the sigs as well\n const sigAddress = await signer.getAddress();\n // sigs need to be deduped + ordered in ascending order and !== to zero address\n const sigs_ = Array.from(new Set([...owners, sigAddress]))\n .filter((x) => hexToBigInt(x) !== 0n)\n .sort((a, b) => {\n const bigintA = hexToBigInt(a);\n const bigintB = hexToBigInt(b);\n\n return bigintA < bigintB ? -1 : bigintA > bigintB ? 1 : 0;\n });\n\n return concatHex([\n factoryAddress,\n encodeFunctionData({\n abi: MultisigModularAccountFactoryAbi,\n functionName: \"createAccount\",\n args: [salt, sigs_, threshold],\n }),\n ]);\n };\n\n const accountAddress = await getAccountAddress({\n client,\n entryPoint,\n accountAddress: accountAddress_,\n getAccountInitCode,\n });\n\n const baseAccount = await toSmartContractAccount({\n transport,\n chain,\n entryPoint,\n accountAddress,\n source: MULTISIG_ACCOUNT_SOURCE,\n getAccountInitCode,\n ...standardExecutor,\n ...multisigSignMethods({\n client,\n accountAddress,\n threshold,\n signer: () => signer,\n }),\n });\n\n return {\n ...baseAccount,\n getLocalThreshold: () => threshold,\n publicKey: await signer.getAddress(),\n getSigner: () => signer,\n };\n}\n\nexport const isMultisigModularAccount = (\n acct: SmartContractAccount\n): acct is MultisigModularAccount => {\n return acct.source === MULTISIG_ACCOUNT_SOURCE;\n};\n"]}
@@ -13,4 +13,19 @@ export type AccountLoupeActions<TAccount extends SmartContractAccount | undefine
13
13
  } & GetAccountParameter<TAccount>): Promise<Readonly<PreValidationHooks>>;
14
14
  getInstalledPlugins(args: GetAccountParameter<TAccount>): Promise<ReadonlyArray<Address>>;
15
15
  };
16
+ /**
17
+ * Provides a set of actions for account loupe operations using the specified client.
18
+ * NOTE: this is already added to the client when using any of the Modular Account Clients.
19
+ *
20
+ * @example
21
+ * ```ts
22
+ * import { accountLoupeActions } from "@account-kit/smart-contracts";
23
+ * import { createSmartAccountClient } from "@aa-sdk/core";
24
+ *
25
+ * const client = createSmartAccountClient(...).extend(accountLoupeActions);
26
+ * ```
27
+ *
28
+ * @param {Client<TTransport, TChain, TAccount>} client the client to be used for executing the account loupe actions
29
+ * @returns {AccountLoupeActions<TAccount>} an object containing account loupe actions like `getExecutionFunctionConfig`, `getExecutionHooks`, `getPreValidationHooks`, and `getInstalledPlugins`
30
+ */
16
31
  export declare const accountLoupeActions: <TTransport extends Transport = Transport, TChain extends Chain | undefined = Chain | undefined, TAccount extends SmartContractAccount | undefined = SmartContractAccount | undefined>(client: Client<TTransport, TChain, TAccount>) => AccountLoupeActions<TAccount>;
@@ -1,5 +1,20 @@
1
1
  import { AccountNotFoundError, IncompatibleClientError, isSmartAccountClient, } from "@aa-sdk/core";
2
2
  import { IAccountLoupeAbi } from "../abis/IAccountLoupe.js";
3
+ /**
4
+ * Provides a set of actions for account loupe operations using the specified client.
5
+ * NOTE: this is already added to the client when using any of the Modular Account Clients.
6
+ *
7
+ * @example
8
+ * ```ts
9
+ * import { accountLoupeActions } from "@account-kit/smart-contracts";
10
+ * import { createSmartAccountClient } from "@aa-sdk/core";
11
+ *
12
+ * const client = createSmartAccountClient(...).extend(accountLoupeActions);
13
+ * ```
14
+ *
15
+ * @param {Client<TTransport, TChain, TAccount>} client the client to be used for executing the account loupe actions
16
+ * @returns {AccountLoupeActions<TAccount>} an object containing account loupe actions like `getExecutionFunctionConfig`, `getExecutionHooks`, `getPreValidationHooks`, and `getInstalledPlugins`
17
+ */
3
18
  export const accountLoupeActions = (client) => ({
4
19
  getExecutionFunctionConfig: async ({ selector, account = client.account, }) => {
5
20
  if (!account) {
@@ -1 +1 @@
1
- {"version":3,"file":"decorator.js","sourceRoot":"","sources":["../../../../../src/msca/account-loupe/decorator.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,oBAAoB,EACpB,uBAAuB,EACvB,oBAAoB,GAGrB,MAAM,cAAc,CAAC;AAEtB,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AA4D5D,MAAM,CAAC,MAAM,mBAAmB,GAQK,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IAChD,0BAA0B,EAAE,KAAK,EAAE,EACjC,QAAQ,EACR,OAAO,GAAG,MAAM,CAAC,OAAO,GACzB,EAAE,EAAE;QACH,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,IAAI,oBAAoB,EAAE,CAAC;QACnC,CAAC;QAED,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,EAAE,CAAC;YAClC,MAAM,IAAI,uBAAuB,CAC/B,oBAAoB,EACpB,4BAA4B,EAC5B,MAAM,CACP,CAAC;QACJ,CAAC;QAED,OAAO,MAAM,CAAC,YAAY,CAAC;YACzB,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,GAAG,EAAE,gBAAgB;YACrB,YAAY,EAAE,4BAA4B;YAC1C,IAAI,EAAE,CAAC,QAAQ,CAAC;SACjB,CAAC,CAAC;IACL,CAAC;IAED,iBAAiB,EAAE,KAAK,EAAE,EAAE,QAAQ,EAAE,OAAO,GAAG,MAAM,CAAC,OAAO,EAAE,EAAE,EAAE;QAClE,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,IAAI,oBAAoB,EAAE,CAAC;QACnC,CAAC;QAED,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,EAAE,CAAC;YAClC,MAAM,IAAI,uBAAuB,CAC/B,oBAAoB,EACpB,mBAAmB,EACnB,MAAM,CACP,CAAC;QACJ,CAAC;QAED,OAAO,MAAM,CAAC,YAAY,CAAC;YACzB,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,GAAG,EAAE,gBAAgB;YACrB,YAAY,EAAE,mBAAmB;YACjC,IAAI,EAAE,CAAC,QAAQ,CAAC;SACjB,CAAC,CAAC;IACL,CAAC;IAED,qBAAqB,EAAE,KAAK,EAAE,EAAE,QAAQ,EAAE,OAAO,GAAG,MAAM,CAAC,OAAO,EAAE,EAAE,EAAE;QACtE,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,IAAI,oBAAoB,EAAE,CAAC;QACnC,CAAC;QAED,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,EAAE,CAAC;YAClC,MAAM,IAAI,uBAAuB,CAC/B,oBAAoB,EACpB,uBAAuB,EACvB,MAAM,CACP,CAAC;QACJ,CAAC;QAED,OAAO,MAAM,CAAC,YAAY,CAAC;YACzB,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,GAAG,EAAE,gBAAgB;YACrB,YAAY,EAAE,uBAAuB;YACrC,IAAI,EAAE,CAAC,QAAQ,CAAC;SACjB,CAAC,CAAC;IACL,CAAC;IAED,mBAAmB,EAAE,KAAK,EAAE,EAAE,OAAO,GAAG,MAAM,CAAC,OAAO,EAAE,EAAE,EAAE;QAC1D,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,IAAI,oBAAoB,EAAE,CAAC;QACnC,CAAC;QAED,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,EAAE,CAAC;YAClC,MAAM,IAAI,uBAAuB,CAC/B,oBAAoB,EACpB,qBAAqB,EACrB,MAAM,CACP,CAAC;QACJ,CAAC;QAED,OAAO,MAAM;aACV,YAAY,CAAC;YACZ,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,GAAG,EAAE,gBAAgB;YACrB,YAAY,EAAE,qBAAqB;SACpC,CAAC;aACD,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;IACrB,CAAC;CACF,CAAC,CAAC","sourcesContent":["import {\n AccountNotFoundError,\n IncompatibleClientError,\n isSmartAccountClient,\n type GetAccountParameter,\n type SmartContractAccount,\n} from \"@aa-sdk/core\";\nimport type { Address, Chain, Client, Hash, Transport } from \"viem\";\nimport { IAccountLoupeAbi } from \"../abis/IAccountLoupe.js\";\nimport type {\n ExecutionFunctionConfig,\n ExecutionHooks,\n FunctionReference,\n PreValidationHooks,\n} from \"./types.js\";\n\nexport type AccountLoupeActions<\n TAccount extends SmartContractAccount | undefined =\n | SmartContractAccount\n | undefined\n> = {\n /// @notice Gets the validation functions and plugin address for a selector\n /// @dev If the selector is a native function, the plugin address will be the address of the account\n /// @param selector The selector to get the configuration for\n /// @return The configuration for this selector\n getExecutionFunctionConfig(\n args: { selector: FunctionReference } & GetAccountParameter<TAccount>\n ): Promise<ExecutionFunctionConfig>;\n\n /// @notice Gets the pre and post execution hooks for a selector\n /// @param selector The selector to get the hooks for\n /// @return The pre and post execution hooks for this selector\n getExecutionHooks(\n args: {\n selector: FunctionReference;\n } & GetAccountParameter<TAccount>\n ): Promise<ReadonlyArray<ExecutionHooks>>;\n\n /// @notice Gets the pre user op and runtime validation hooks associated with a selector\n /// @param selector The selector to get the hooks for\n /// @return preUserOpValidationHooks The pre user op validation hooks for this selector\n /// @return preRuntimeValidationHooks The pre runtime validation hooks for this selector\n getPreValidationHooks(\n args: { selector: Hash } & GetAccountParameter<TAccount>\n ): Promise<Readonly<PreValidationHooks>>;\n\n /// @notice Gets an array of all installed plugins\n /// @return The addresses of all installed plugins\n getInstalledPlugins(\n args: GetAccountParameter<TAccount>\n ): Promise<ReadonlyArray<Address>>;\n};\n\n/**\n * Provides a set of actions for account loupe operations using the specified client.\n * NOTE: this is already added to the client when using any of the Modular Account Clients.\n *\n * @example\n * ```ts\n * import { accountLoupeActions } from \"@account-kit/smart-contracts\";\n * import { createSmartAccountClient } from \"@aa-sdk/core\";\n *\n * const client = createSmartAccountClient(...).extend(accountLoupeActions);\n * ```\n *\n * @param {Client<TTransport, TChain, TAccount>} client the client to be used for executing the account loupe actions\n * @returns {AccountLoupeActions<TAccount>} an object containing account loupe actions like `getExecutionFunctionConfig`, `getExecutionHooks`, `getPreValidationHooks`, and `getInstalledPlugins`\n */\nexport const accountLoupeActions: <\n TTransport extends Transport = Transport,\n TChain extends Chain | undefined = Chain | undefined,\n TAccount extends SmartContractAccount | undefined =\n | SmartContractAccount\n | undefined\n>(\n client: Client<TTransport, TChain, TAccount>\n) => AccountLoupeActions<TAccount> = (client) => ({\n getExecutionFunctionConfig: async ({\n selector,\n account = client.account,\n }) => {\n if (!account) {\n throw new AccountNotFoundError();\n }\n\n if (!isSmartAccountClient(client)) {\n throw new IncompatibleClientError(\n \"SmartAccountClient\",\n \"getExecutionFunctionConfig\",\n client\n );\n }\n\n return client.readContract({\n address: account.address,\n abi: IAccountLoupeAbi,\n functionName: \"getExecutionFunctionConfig\",\n args: [selector],\n });\n },\n\n getExecutionHooks: async ({ selector, account = client.account }) => {\n if (!account) {\n throw new AccountNotFoundError();\n }\n\n if (!isSmartAccountClient(client)) {\n throw new IncompatibleClientError(\n \"SmartAccountClient\",\n \"getExecutionHooks\",\n client\n );\n }\n\n return client.readContract({\n address: account.address,\n abi: IAccountLoupeAbi,\n functionName: \"getExecutionHooks\",\n args: [selector],\n });\n },\n\n getPreValidationHooks: async ({ selector, account = client.account }) => {\n if (!account) {\n throw new AccountNotFoundError();\n }\n\n if (!isSmartAccountClient(client)) {\n throw new IncompatibleClientError(\n \"SmartAccountClient\",\n \"getPreValidationHooks\",\n client\n );\n }\n\n return client.readContract({\n address: account.address,\n abi: IAccountLoupeAbi,\n functionName: \"getPreValidationHooks\",\n args: [selector],\n });\n },\n\n getInstalledPlugins: async ({ account = client.account }) => {\n if (!account) {\n throw new AccountNotFoundError();\n }\n\n if (!isSmartAccountClient(client)) {\n throw new IncompatibleClientError(\n \"SmartAccountClient\",\n \"getInstalledPlugins\",\n client\n );\n }\n\n return client\n .readContract({\n address: account.address,\n abi: IAccountLoupeAbi,\n functionName: \"getInstalledPlugins\",\n })\n .catch(() => []);\n },\n});\n"]}
1
+ {"version":3,"file":"decorator.js","sourceRoot":"","sources":["../../../../../src/msca/account-loupe/decorator.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n AccountNotFoundError,\n IncompatibleClientError,\n isSmartAccountClient,\n type GetAccountParameter,\n type SmartContractAccount,\n} from \"@aa-sdk/core\";\nimport type { Address, Chain, Client, Hash, Transport } from \"viem\";\nimport { IAccountLoupeAbi } from \"../abis/IAccountLoupe.js\";\nimport type {\n ExecutionFunctionConfig,\n ExecutionHooks,\n FunctionReference,\n PreValidationHooks,\n} from \"./types.js\";\n\nexport type AccountLoupeActions<\n TAccount extends SmartContractAccount | undefined =\n | SmartContractAccount\n | undefined\n> = {\n /// @notice Gets the validation functions and plugin address for a selector\n /// @dev If the selector is a native function, the plugin address will be the address of the account\n /// @param selector The selector to get the configuration for\n /// @return The configuration for this selector\n getExecutionFunctionConfig(\n args: { selector: FunctionReference } & GetAccountParameter<TAccount>\n ): Promise<ExecutionFunctionConfig>;\n\n /// @notice Gets the pre and post execution hooks for a selector\n /// @param selector The selector to get the hooks for\n /// @return The pre and post execution hooks for this selector\n getExecutionHooks(\n args: {\n selector: FunctionReference;\n } & GetAccountParameter<TAccount>\n ): Promise<ReadonlyArray<ExecutionHooks>>;\n\n /// @notice Gets the pre user op and runtime validation hooks associated with a selector\n /// @param selector The selector to get the hooks for\n /// @return preUserOpValidationHooks The pre user op validation hooks for this selector\n /// @return preRuntimeValidationHooks The pre runtime validation hooks for this selector\n getPreValidationHooks(\n args: { selector: Hash } & GetAccountParameter<TAccount>\n ): Promise<Readonly<PreValidationHooks>>;\n\n /// @notice Gets an array of all installed plugins\n /// @return The addresses of all installed plugins\n getInstalledPlugins(\n args: GetAccountParameter<TAccount>\n ): Promise<ReadonlyArray<Address>>;\n};\n\n/**\n * Provides a set of actions for account loupe operations using the specified client.\n * NOTE: this is already added to the client when using any of the Modular Account Clients.\n *\n * @example\n * ```ts\n * import { accountLoupeActions } from \"@account-kit/smart-contracts\";\n * import { createSmartAccountClient } from \"@aa-sdk/core\";\n *\n * const client = createSmartAccountClient(...).extend(accountLoupeActions);\n * ```\n *\n * @param {Client<TTransport, TChain, TAccount>} client the client to be used for executing the account loupe actions\n * @returns {AccountLoupeActions<TAccount>} an object containing account loupe actions like `getExecutionFunctionConfig`, `getExecutionHooks`, `getPreValidationHooks`, and `getInstalledPlugins`\n */\nexport const accountLoupeActions: <\n TTransport extends Transport = Transport,\n TChain extends Chain | undefined = Chain | undefined,\n TAccount extends SmartContractAccount | undefined =\n | SmartContractAccount\n | undefined\n>(\n client: Client<TTransport, TChain, TAccount>\n) => AccountLoupeActions<TAccount> = (client) => ({\n getExecutionFunctionConfig: async ({\n selector,\n account = client.account,\n }) => {\n if (!account) {\n throw new AccountNotFoundError();\n }\n\n if (!isSmartAccountClient(client)) {\n throw new IncompatibleClientError(\n \"SmartAccountClient\",\n \"getExecutionFunctionConfig\",\n client\n );\n }\n\n return client.readContract({\n address: account.address,\n abi: IAccountLoupeAbi,\n functionName: \"getExecutionFunctionConfig\",\n args: [selector],\n });\n },\n\n getExecutionHooks: async ({ selector, account = client.account }) => {\n if (!account) {\n throw new AccountNotFoundError();\n }\n\n if (!isSmartAccountClient(client)) {\n throw new IncompatibleClientError(\n \"SmartAccountClient\",\n \"getExecutionHooks\",\n client\n );\n }\n\n return client.readContract({\n address: account.address,\n abi: IAccountLoupeAbi,\n functionName: \"getExecutionHooks\",\n args: [selector],\n });\n },\n\n getPreValidationHooks: async ({ selector, account = client.account }) => {\n if (!account) {\n throw new AccountNotFoundError();\n }\n\n if (!isSmartAccountClient(client)) {\n throw new IncompatibleClientError(\n \"SmartAccountClient\",\n \"getPreValidationHooks\",\n client\n );\n }\n\n return client.readContract({\n address: account.address,\n abi: IAccountLoupeAbi,\n functionName: \"getPreValidationHooks\",\n args: [selector],\n });\n },\n\n getInstalledPlugins: async ({ account = client.account }) => {\n if (!account) {\n throw new AccountNotFoundError();\n }\n\n if (!isSmartAccountClient(client)) {\n throw new IncompatibleClientError(\n \"SmartAccountClient\",\n \"getInstalledPlugins\",\n client\n );\n }\n\n return client\n .readContract({\n address: account.address,\n abi: IAccountLoupeAbi,\n functionName: \"getInstalledPlugins\",\n })\n .catch(() => []);\n },\n});\n"]}
@@ -1,6 +1,26 @@
1
1
  import { AlchemyProviderConfigSchema, createAlchemyPublicRpcClient, createAlchemySmartAccountClientFromExisting, } from "@account-kit/infra";
2
2
  import { accountLoupeActions, createMultiOwnerModularAccount, multiOwnerPluginActions, pluginManagerActions, } from "@account-kit/smart-contracts";
3
3
  import { custom, } from "viem";
4
+ /**
5
+ * Creates a modular account Alchemy client with the provided configuration.
6
+ *
7
+ * @example
8
+ * ```ts
9
+ * import { createModularAccountAlchemyClient } from "@account-kit/smart-contracts";
10
+ * import { sepolia } from "@account-kit/infra";
11
+ * import { LocalAccountSigner } from "@aa-sdk/core";
12
+ * import { generatePrivateKey } from "viem"
13
+ *
14
+ * const alchemyAccountClient = await createModularAccountAlchemyClient({
15
+ * apiKey: "your-api-key",
16
+ * chain: sepolia,
17
+ * signer: LocalAccountSigner.privateKeyToAccountSigner(generatePrivateKey())
18
+ * });
19
+ * ```
20
+ *
21
+ * @param {AlchemyModularAccountClientConfig} config The configuration for creating the Alchemy client
22
+ * @returns {Promise<AlchemySmartAccountClient>} A promise that resolves to an `AlchemySmartAccountClient` configured with the desired plugins and actions
23
+ */
4
24
  export async function createModularAccountAlchemyClient(config) {
5
25
  const { chain, opts, ...connectionConfig } = AlchemyProviderConfigSchema.parse(config);
6
26
  const client = createAlchemyPublicRpcClient({
@@ -1 +1 @@
1
- {"version":3,"file":"alchemyClient.js","sourceRoot":"","sources":["../../../../../src/msca/client/alchemyClient.ts"],"names":[],"mappings":"AACA,OAAO,EACL,2BAA2B,EAC3B,4BAA4B,EAC5B,2CAA2C,GAG5C,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,mBAAmB,EACnB,8BAA8B,EAC9B,uBAAuB,EACvB,oBAAoB,GAOrB,MAAM,8BAA8B,CAAC;AACtC,OAAO,EACL,MAAM,GAKP,MAAM,MAAM,CAAC;AAgDd,MAAM,CAAC,KAAK,UAAU,iCAAiC,CACrD,MAAyC;IAEzC,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,gBAAgB,EAAE,GACxC,2BAA2B,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAE5C,MAAM,MAAM,GAAG,4BAA4B,CAAC;QAC1C,KAAK;QACL,gBAAgB;KACjB,CAAC,CAAC;IAEH,MAAM,OAAO,GAAG,MAAM,8BAA8B,CAAC;QACnD,SAAS,EAAE,MAAM,CAAC,MAAM,CAAC;QACzB,GAAG,MAAM;KACV,CAAC,CAAC;IAEH,OAAO,2CAA2C,CAAC;QACjD,GAAG,MAAM;QACT,MAAM;QACN,OAAO;QACP,IAAI;KACL,CAAC;SACC,MAAM,CAAC,uBAAuB,CAAC;SAC/B,MAAM,CAAC,oBAAoB,CAAC;SAC5B,MAAM,CAAC,mBAAmB,CAAC,CAAC;AACjC,CAAC","sourcesContent":["import type { SmartAccountSigner } from \"@aa-sdk/core\";\nimport {\n AlchemyProviderConfigSchema,\n createAlchemyPublicRpcClient,\n createAlchemySmartAccountClientFromExisting,\n type AlchemySmartAccountClient,\n type AlchemySmartAccountClientConfig,\n} from \"@account-kit/infra\";\nimport {\n accountLoupeActions,\n createMultiOwnerModularAccount,\n multiOwnerPluginActions,\n pluginManagerActions,\n type AccountLoupeActions,\n type CreateMultiOwnerModularAccountParams,\n type LightAccount,\n type MultiOwnerModularAccount,\n type MultiOwnerPluginActions,\n type PluginManagerActions,\n} from \"@account-kit/smart-contracts\";\nimport {\n custom,\n type Chain,\n type CustomTransport,\n type HttpTransport,\n type Transport,\n} from \"viem\";\n\nexport type AlchemyModularAccountClientConfig<\n TSigner extends SmartAccountSigner = SmartAccountSigner\n> = Omit<\n CreateMultiOwnerModularAccountParams<HttpTransport, TSigner>,\n \"transport\" | \"chain\"\n> &\n Omit<\n AlchemySmartAccountClientConfig<Transport, Chain, LightAccount<TSigner>>,\n \"account\"\n >;\n\nexport function createModularAccountAlchemyClient<\n TSigner extends SmartAccountSigner = SmartAccountSigner\n>(\n params: AlchemyModularAccountClientConfig<TSigner>\n): Promise<\n AlchemySmartAccountClient<\n CustomTransport,\n Chain | undefined,\n MultiOwnerModularAccount<TSigner>,\n MultiOwnerPluginActions<MultiOwnerModularAccount<TSigner>> &\n PluginManagerActions<MultiOwnerModularAccount<TSigner>> &\n AccountLoupeActions<MultiOwnerModularAccount<TSigner>>\n >\n>;\n\n/**\n * Creates a modular account Alchemy client with the provided configuration.\n *\n * @example\n * ```ts\n * import { createModularAccountAlchemyClient } from \"@account-kit/smart-contracts\";\n * import { sepolia } from \"@account-kit/infra\";\n * import { LocalAccountSigner } from \"@aa-sdk/core\";\n * import { generatePrivateKey } from \"viem\"\n *\n * const alchemyAccountClient = await createModularAccountAlchemyClient({\n * apiKey: \"your-api-key\",\n * chain: sepolia,\n * signer: LocalAccountSigner.privateKeyToAccountSigner(generatePrivateKey())\n * });\n * ```\n *\n * @param {AlchemyModularAccountClientConfig} config The configuration for creating the Alchemy client\n * @returns {Promise<AlchemySmartAccountClient>} A promise that resolves to an `AlchemySmartAccountClient` configured with the desired plugins and actions\n */\nexport async function createModularAccountAlchemyClient(\n config: AlchemyModularAccountClientConfig\n): Promise<AlchemySmartAccountClient> {\n const { chain, opts, ...connectionConfig } =\n AlchemyProviderConfigSchema.parse(config);\n\n const client = createAlchemyPublicRpcClient({\n chain,\n connectionConfig,\n });\n\n const account = await createMultiOwnerModularAccount({\n transport: custom(client),\n ...config,\n });\n\n return createAlchemySmartAccountClientFromExisting({\n ...config,\n client,\n account,\n opts,\n })\n .extend(multiOwnerPluginActions)\n .extend(pluginManagerActions)\n .extend(accountLoupeActions);\n}\n"]}
1
+ {"version":3,"file":"alchemyClient.js","sourceRoot":"","sources":["../../../../../src/msca/client/alchemyClient.ts"],"names":[],"mappings":"AACA,OAAO,EACL,2BAA2B,EAC3B,4BAA4B,EAC5B,2CAA2C,GAG5C,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,mBAAmB,EACnB,8BAA8B,EAC9B,uBAAuB,EACvB,oBAAoB,GAOrB,MAAM,8BAA8B,CAAC;AACtC,OAAO,EACL,MAAM,GAKP,MAAM,MAAM,CAAC;AA4Bd;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,CAAC,KAAK,UAAU,iCAAiC,CACrD,MAAyC;IAEzC,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,gBAAgB,EAAE,GACxC,2BAA2B,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAE5C,MAAM,MAAM,GAAG,4BAA4B,CAAC;QAC1C,KAAK;QACL,gBAAgB;KACjB,CAAC,CAAC;IAEH,MAAM,OAAO,GAAG,MAAM,8BAA8B,CAAC;QACnD,SAAS,EAAE,MAAM,CAAC,MAAM,CAAC;QACzB,GAAG,MAAM;KACV,CAAC,CAAC;IAEH,OAAO,2CAA2C,CAAC;QACjD,GAAG,MAAM;QACT,MAAM;QACN,OAAO;QACP,IAAI;KACL,CAAC;SACC,MAAM,CAAC,uBAAuB,CAAC;SAC/B,MAAM,CAAC,oBAAoB,CAAC;SAC5B,MAAM,CAAC,mBAAmB,CAAC,CAAC;AACjC,CAAC","sourcesContent":["import type { SmartAccountSigner } from \"@aa-sdk/core\";\nimport {\n AlchemyProviderConfigSchema,\n createAlchemyPublicRpcClient,\n createAlchemySmartAccountClientFromExisting,\n type AlchemySmartAccountClient,\n type AlchemySmartAccountClientConfig,\n} from \"@account-kit/infra\";\nimport {\n accountLoupeActions,\n createMultiOwnerModularAccount,\n multiOwnerPluginActions,\n pluginManagerActions,\n type AccountLoupeActions,\n type CreateMultiOwnerModularAccountParams,\n type LightAccount,\n type MultiOwnerModularAccount,\n type MultiOwnerPluginActions,\n type PluginManagerActions,\n} from \"@account-kit/smart-contracts\";\nimport {\n custom,\n type Chain,\n type CustomTransport,\n type HttpTransport,\n type Transport,\n} from \"viem\";\n\nexport type AlchemyModularAccountClientConfig<\n TSigner extends SmartAccountSigner = SmartAccountSigner\n> = Omit<\n CreateMultiOwnerModularAccountParams<HttpTransport, TSigner>,\n \"transport\" | \"chain\"\n> &\n Omit<\n AlchemySmartAccountClientConfig<Transport, Chain, LightAccount<TSigner>>,\n \"account\"\n >;\n\nexport function createModularAccountAlchemyClient<\n TSigner extends SmartAccountSigner = SmartAccountSigner\n>(\n params: AlchemyModularAccountClientConfig<TSigner>\n): Promise<\n AlchemySmartAccountClient<\n CustomTransport,\n Chain | undefined,\n MultiOwnerModularAccount<TSigner>,\n MultiOwnerPluginActions<MultiOwnerModularAccount<TSigner>> &\n PluginManagerActions<MultiOwnerModularAccount<TSigner>> &\n AccountLoupeActions<MultiOwnerModularAccount<TSigner>>\n >\n>;\n\n/**\n * Creates a modular account Alchemy client with the provided configuration.\n *\n * @example\n * ```ts\n * import { createModularAccountAlchemyClient } from \"@account-kit/smart-contracts\";\n * import { sepolia } from \"@account-kit/infra\";\n * import { LocalAccountSigner } from \"@aa-sdk/core\";\n * import { generatePrivateKey } from \"viem\"\n *\n * const alchemyAccountClient = await createModularAccountAlchemyClient({\n * apiKey: \"your-api-key\",\n * chain: sepolia,\n * signer: LocalAccountSigner.privateKeyToAccountSigner(generatePrivateKey())\n * });\n * ```\n *\n * @param {AlchemyModularAccountClientConfig} config The configuration for creating the Alchemy client\n * @returns {Promise<AlchemySmartAccountClient>} A promise that resolves to an `AlchemySmartAccountClient` configured with the desired plugins and actions\n */\nexport async function createModularAccountAlchemyClient(\n config: AlchemyModularAccountClientConfig\n): Promise<AlchemySmartAccountClient> {\n const { chain, opts, ...connectionConfig } =\n AlchemyProviderConfigSchema.parse(config);\n\n const client = createAlchemyPublicRpcClient({\n chain,\n connectionConfig,\n });\n\n const account = await createMultiOwnerModularAccount({\n transport: custom(client),\n ...config,\n });\n\n return createAlchemySmartAccountClientFromExisting({\n ...config,\n client,\n account,\n opts,\n })\n .extend(multiOwnerPluginActions)\n .extend(pluginManagerActions)\n .extend(accountLoupeActions);\n}\n"]}
@@ -7,11 +7,7 @@ import { type CreateMultisigModularAccountParams, type MultisigModularAccount }
7
7
  import { type PluginManagerActions } from "../plugin-manager/decorator.js";
8
8
  import { type MultiOwnerPluginActions } from "../plugins/multi-owner/index.js";
9
9
  import { type MultisigPluginActions, type MultisigUserOperationContext } from "../plugins/multisig/index.js";
10
- export type CreateMultiOwnerModularAccountClientParams<TTransport extends Transport = Transport, TChain extends Chain | undefined = Chain | undefined, TSigner extends SmartAccountSigner = SmartAccountSigner> = {
11
- account: Omit<CreateMultiOwnerModularAccountParams<TTransport, TSigner>, "transport" | "chain">;
12
- } & Omit<CreateLightAccountClientParams<TTransport, TChain, TSigner>, "account">;
13
- export type CreateMultisigModularAccountClientParams<TTransport extends Transport = Transport, TChain extends Chain | undefined = Chain | undefined, TSigner extends SmartAccountSigner = SmartAccountSigner> = {
14
- account: Omit<CreateMultisigModularAccountParams<TTransport, TSigner>, "transport" | "chain">;
15
- } & Omit<CreateLightAccountClientParams<TTransport, TChain, TSigner>, "account">;
10
+ export type CreateMultiOwnerModularAccountClientParams<TTransport extends Transport = Transport, TChain extends Chain | undefined = Chain | undefined, TSigner extends SmartAccountSigner = SmartAccountSigner> = Omit<CreateMultiOwnerModularAccountParams<TTransport, TSigner>, "transport" | "chain"> & Omit<CreateLightAccountClientParams<TTransport, TChain, TSigner>, "account">;
11
+ export type CreateMultisigModularAccountClientParams<TTransport extends Transport = Transport, TChain extends Chain | undefined = Chain | undefined, TSigner extends SmartAccountSigner = SmartAccountSigner> = Omit<CreateMultisigModularAccountParams<TTransport, TSigner>, "transport" | "chain"> & Omit<CreateLightAccountClientParams<TTransport, TChain, TSigner>, "account">;
16
12
  export declare function createMultiOwnerModularAccountClient<TChain extends Chain | undefined = Chain | undefined, TSigner extends SmartAccountSigner = SmartAccountSigner>(args: CreateMultiOwnerModularAccountClientParams<Transport, TChain, TSigner>): Promise<SmartAccountClient<CustomTransport, Chain, MultiOwnerModularAccount<TSigner>, MultiOwnerPluginActions<MultiOwnerModularAccount<TSigner>> & PluginManagerActions<MultiOwnerModularAccount<TSigner>> & AccountLoupeActions<MultiOwnerModularAccount<TSigner>>>>;
17
13
  export declare function createMultisigModularAccountClient<TChain extends Chain | undefined = Chain | undefined, TSigner extends SmartAccountSigner = SmartAccountSigner>(args: CreateMultisigModularAccountClientParams<Transport, TChain, TSigner>): Promise<SmartAccountClient<CustomTransport, Chain, MultisigModularAccount<TSigner>, MultisigPluginActions<MultisigModularAccount<TSigner>> & PluginManagerActions<MultisigModularAccount<TSigner>> & AccountLoupeActions<MultisigModularAccount<TSigner>>, SmartAccountClientRpcSchema, MultisigUserOperationContext>>;
@@ -7,14 +7,35 @@ import { pluginManagerActions, } from "../plugin-manager/decorator.js";
7
7
  import { multiOwnerPluginActions, } from "../plugins/multi-owner/index.js";
8
8
  import { multisigPluginActions, } from "../plugins/multisig/index.js";
9
9
  import { multisigSignatureMiddleware } from "../plugins/multisig/middleware.js";
10
- export async function createMultiOwnerModularAccountClient({ account, transport, chain, ...clientConfig }) {
10
+ /**
11
+ * 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.
12
+ *
13
+ * @example
14
+ * ```ts
15
+ * import { createMultiOwnerModularAccountClient } from "@account-kit/smart-contracts";
16
+ * import { LocalAccountSigner } from "@aa-sdk/core";
17
+ * import { sepolia } from "viem/chains";
18
+ * import { http } from "viem";
19
+ * import { generatePrivateKey } from "viem/accounts";
20
+ *
21
+ * const accountClient = await createMultiOwnerModularAccountClient({
22
+ * chain: sepolia,
23
+ * transport: http("RPC_URL"),
24
+ * signer: LocalAccountSigner.privateKeyToAccountSigner(generatePrivateKey())
25
+ * });
26
+ * ```
27
+ *
28
+ * @param {CreateMultiOwnerModularAccountClientParams} config The parameters for creating the multi-owner modular account client
29
+ * @returns {Promise<SmartAccountClient>} A promise that resolves to a `SmartAccountClient` instance with extended plugin actions
30
+ */
31
+ export async function createMultiOwnerModularAccountClient({ transport, chain, ...params }) {
11
32
  const modularAccount = await createMultiOwnerModularAccount({
12
- ...account,
33
+ ...params,
13
34
  transport,
14
35
  chain,
15
36
  });
16
37
  return createSmartAccountClient({
17
- ...clientConfig,
38
+ ...params,
18
39
  transport,
19
40
  chain,
20
41
  account: modularAccount,
@@ -23,14 +44,37 @@ export async function createMultiOwnerModularAccountClient({ account, transport,
23
44
  .extend(multiOwnerPluginActions)
24
45
  .extend(accountLoupeActions);
25
46
  }
26
- export async function createMultisigModularAccountClient({ account, transport, chain, ...clientConfig }) {
47
+ /**
48
+ * 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.
49
+ *
50
+ * @example
51
+ * ```ts
52
+ * import { createMultisigModularAccountClient } from "@account-kit/smart-contracts";
53
+ * import { LocalAccountSigner } from "@aa-sdk/core";
54
+ * import { sepolia } from "viem/chains";
55
+ * import { http } from "viem"
56
+ * import { generatePrivateKey } from "viem/accounts";
57
+ *
58
+ * const accountClient = await createMultisigModularAccountClient({
59
+ * chain: sepolia,
60
+ * transport: http("RPC_URL"),
61
+ * signer: LocalAccountSigner.privateKeyToAccountSigner(generatePrivateKey()),
62
+ * owners: [], // other owners on the account
63
+ * threshold: 2, // 2 of N signatures
64
+ * });
65
+ * ```
66
+ *
67
+ * @param {CreateMultisigModularAccountClientParams} config the parameters for configuring the multisig modular account client
68
+ * @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
69
+ */
70
+ export async function createMultisigModularAccountClient({ transport, chain, ...params }) {
27
71
  const modularAccount = await createMultisigModularAccount({
28
- ...account,
72
+ ...params,
29
73
  transport,
30
74
  chain,
31
75
  });
32
76
  const client = createSmartAccountClient({
33
- ...clientConfig,
77
+ ...params,
34
78
  transport,
35
79
  chain,
36
80
  account: modularAccount,
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../../../../../src/msca/client/client.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,wBAAwB,EACxB,yBAAyB,GAI1B,MAAM,cAAc,CAAC;AACtB,OAAO,EAAoD,MAAM,MAAM,CAAC;AAExE,OAAO,EACL,mBAAmB,GAEpB,MAAM,+BAA+B,CAAC;AACvC,OAAO,EACL,8BAA8B,GAG/B,MAAM,iCAAiC,CAAC;AACzC,OAAO,EACL,4BAA4B,GAG7B,MAAM,+BAA+B,CAAC;AACvC,OAAO,EACL,oBAAoB,GAErB,MAAM,gCAAgC,CAAC;AACxC,OAAO,EACL,uBAAuB,GAExB,MAAM,iCAAiC,CAAC;AACzC,OAAO,EACL,qBAAqB,GAGtB,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAAE,2BAA2B,EAAE,MAAM,mCAAmC,CAAC;AAoEhF,MAAM,CAAC,KAAK,UAAU,oCAAoC,CAAC,EACzD,OAAO,EACP,SAAS,EACT,KAAK,EACL,GAAG,YAAY,EAC4B;IAC3C,MAAM,cAAc,GAAG,MAAM,8BAA8B,CAAC;QAC1D,GAAG,OAAO;QACV,SAAS;QACT,KAAK;KACN,CAAC,CAAC;IAEH,OAAO,wBAAwB,CAAC;QAC9B,GAAG,YAAY;QACf,SAAS;QACT,KAAK;QACL,OAAO,EAAE,cAAc;KACxB,CAAC;SACC,MAAM,CAAC,oBAAoB,CAAC;SAC5B,MAAM,CAAC,uBAAuB,CAAC;SAC/B,MAAM,CAAC,mBAAmB,CAAC,CAAC;AACjC,CAAC;AA4CD,MAAM,CAAC,KAAK,UAAU,kCAAkC,CAAC,EACvD,OAAO,EACP,SAAS,EACT,KAAK,EACL,GAAG,YAAY,EAC0B;IAUzC,MAAM,cAAc,GAAG,MAAM,4BAA4B,CAAC;QACxD,GAAG,OAAO;QACV,SAAS;QACT,KAAK;KACN,CAAC,CAAC;IAEH,MAAM,MAAM,GAAG,wBAAwB,CAAC;QACtC,GAAG,YAAY;QACf,SAAS;QACT,KAAK;QACL,OAAO,EAAE,cAAc;QACvB,iBAAiB,EAAE,2BAA2B;KAC/C,CAAC;SACC,MAAM,CAAC,yBAAyB,CAAC;SACjC,MAAM,CAAC,oBAAoB,CAAC;SAC5B,MAAM,CAAC,qBAAqB,CAAC;SAC7B,MAAM,CAAC,mBAAmB,CAAC,CAAC;IAE/B,OAAO,MAAM,CAAC;AAChB,CAAC","sourcesContent":["import {\n createSmartAccountClient,\n smartAccountClientActions,\n type SmartAccountClient,\n type SmartAccountClientRpcSchema,\n type SmartAccountSigner,\n} from \"@aa-sdk/core\";\nimport { type Chain, type CustomTransport, type Transport } from \"viem\";\nimport type { CreateLightAccountClientParams } from \"../../light-account/clients/client.js\";\nimport {\n accountLoupeActions,\n type AccountLoupeActions,\n} from \"../account-loupe/decorator.js\";\nimport {\n createMultiOwnerModularAccount,\n type CreateMultiOwnerModularAccountParams,\n type MultiOwnerModularAccount,\n} from \"../account/multiOwnerAccount.js\";\nimport {\n createMultisigModularAccount,\n type CreateMultisigModularAccountParams,\n type MultisigModularAccount,\n} from \"../account/multisigAccount.js\";\nimport {\n pluginManagerActions,\n type PluginManagerActions,\n} from \"../plugin-manager/decorator.js\";\nimport {\n multiOwnerPluginActions,\n type MultiOwnerPluginActions,\n} from \"../plugins/multi-owner/index.js\";\nimport {\n multisigPluginActions,\n type MultisigPluginActions,\n type MultisigUserOperationContext,\n} from \"../plugins/multisig/index.js\";\nimport { multisigSignatureMiddleware } from \"../plugins/multisig/middleware.js\";\n\nexport type CreateMultiOwnerModularAccountClientParams<\n TTransport extends Transport = Transport,\n TChain extends Chain | undefined = Chain | undefined,\n TSigner extends SmartAccountSigner = SmartAccountSigner\n> = {\n account: Omit<\n CreateMultiOwnerModularAccountParams<TTransport, TSigner>,\n \"transport\" | \"chain\"\n >;\n} & Omit<\n CreateLightAccountClientParams<TTransport, TChain, TSigner>,\n \"account\"\n>;\n\nexport type CreateMultisigModularAccountClientParams<\n TTransport extends Transport = Transport,\n TChain extends Chain | undefined = Chain | undefined,\n TSigner extends SmartAccountSigner = SmartAccountSigner\n> = {\n account: Omit<\n CreateMultisigModularAccountParams<TTransport, TSigner>,\n \"transport\" | \"chain\"\n >;\n} & Omit<\n CreateLightAccountClientParams<TTransport, TChain, TSigner>,\n \"account\"\n>;\n\nexport function createMultiOwnerModularAccountClient<\n TChain extends Chain | undefined = Chain | undefined,\n TSigner extends SmartAccountSigner = SmartAccountSigner\n>(\n args: CreateMultiOwnerModularAccountClientParams<Transport, TChain, TSigner>\n): Promise<\n SmartAccountClient<\n CustomTransport,\n Chain,\n MultiOwnerModularAccount<TSigner>,\n MultiOwnerPluginActions<MultiOwnerModularAccount<TSigner>> &\n PluginManagerActions<MultiOwnerModularAccount<TSigner>> &\n AccountLoupeActions<MultiOwnerModularAccount<TSigner>>\n >\n>;\n\n/**\n * 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.\n *\n * @example\n * ```ts\n * import { createMultiOwnerModularAccountClient } from \"@account-kit/smart-contracts\";\n * import { LocalAccountSigner } from \"@aa-sdk/core\";\n * import { sepolia } from \"viem/chains\";\n * import { http, generatePrivateKey } from \"viem\"\n *\n * const accountClient = await createMultiOwnerModularAccountClient({\n * chain: sepolia,\n * transport: http(\"RPC_URL\"),\n * account: {\n * signer: LocalAccountSigner.privateKeyToAccountSigner(generatePrivateKey())\n * }\n * });\n * ```\n *\n * @param {CreateMultiOwnerModularAccountClientParams} config The parameters for creating the multi-owner modular account client\n * @returns {Promise<SmartAccountClient>} A promise that resolves to a `SmartAccountClient` instance with extended plugin actions\n */\nexport async function createMultiOwnerModularAccountClient({\n account,\n transport,\n chain,\n ...clientConfig\n}: CreateMultiOwnerModularAccountClientParams): Promise<SmartAccountClient> {\n const modularAccount = await createMultiOwnerModularAccount({\n ...account,\n transport,\n chain,\n });\n\n return createSmartAccountClient({\n ...clientConfig,\n transport,\n chain,\n account: modularAccount,\n })\n .extend(pluginManagerActions)\n .extend(multiOwnerPluginActions)\n .extend(accountLoupeActions);\n}\n\nexport function createMultisigModularAccountClient<\n TChain extends Chain | undefined = Chain | undefined,\n TSigner extends SmartAccountSigner = SmartAccountSigner\n>(\n args: CreateMultisigModularAccountClientParams<Transport, TChain, TSigner>\n): Promise<\n SmartAccountClient<\n CustomTransport,\n Chain,\n MultisigModularAccount<TSigner>,\n MultisigPluginActions<MultisigModularAccount<TSigner>> &\n PluginManagerActions<MultisigModularAccount<TSigner>> &\n AccountLoupeActions<MultisigModularAccount<TSigner>>,\n SmartAccountClientRpcSchema,\n MultisigUserOperationContext\n >\n>;\n\n/**\n * 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.\n *\n * @example\n * ```ts\n * import { createMultisigModularAccountClient } from \"@account-kit/smart-contracts\";\n * import { LocalAccountSigner } from \"@aa-sdk/core\";\n * import { sepolia } from \"viem/chains\";\n * import { http, generatePrivateKey } from \"viem\"\n *\n * const accountClient = await createMultisigModularAccountClient({\n * chain: sepolia,\n * transport: http(\"RPC_URL\"),\n * account: {\n * signer: LocalAccountSigner.privateKeyToAccountSigner(generatePrivateKey()),\n * owners: [...], // other owners on the account\n * threshold: 2, // 2 of N signatures\n * }\n * });\n * ```\n *\n * @param {CreateMultisigModularAccountClientParams} config the parameters for configuring the multisig modular account client\n * @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\n */\nexport async function createMultisigModularAccountClient({\n account,\n transport,\n chain,\n ...clientConfig\n}: CreateMultisigModularAccountClientParams): Promise<\n SmartAccountClient<\n Transport,\n Chain,\n MultisigModularAccount<SmartAccountSigner>,\n {},\n SmartAccountClientRpcSchema,\n MultisigUserOperationContext\n >\n> {\n const modularAccount = await createMultisigModularAccount({\n ...account,\n transport,\n chain,\n });\n\n const client = createSmartAccountClient({\n ...clientConfig,\n transport,\n chain,\n account: modularAccount,\n signUserOperation: multisigSignatureMiddleware,\n })\n .extend(smartAccountClientActions)\n .extend(pluginManagerActions)\n .extend(multisigPluginActions)\n .extend(accountLoupeActions);\n\n return client;\n}\n"]}
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../../../../src/msca/client/client.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,wBAAwB,EACxB,yBAAyB,GAI1B,MAAM,cAAc,CAAC;AACtB,OAAO,EAAoD,MAAM,MAAM,CAAC;AAExE,OAAO,EACL,mBAAmB,GAEpB,MAAM,+BAA+B,CAAC;AACvC,OAAO,EACL,8BAA8B,GAG/B,MAAM,iCAAiC,CAAC;AACzC,OAAO,EACL,4BAA4B,GAG7B,MAAM,+BAA+B,CAAC;AACvC,OAAO,EACL,oBAAoB,GAErB,MAAM,gCAAgC,CAAC;AACxC,OAAO,EACL,uBAAuB,GAExB,MAAM,iCAAiC,CAAC;AACzC,OAAO,EACL,qBAAqB,GAGtB,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAAE,2BAA2B,EAAE,MAAM,mCAAmC,CAAC;AAsChF;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,CAAC,KAAK,UAAU,oCAAoC,CAAC,EACzD,SAAS,EACT,KAAK,EACL,GAAG,MAAM,EACkC;IAC3C,MAAM,cAAc,GAAG,MAAM,8BAA8B,CAAC;QAC1D,GAAG,MAAM;QACT,SAAS;QACT,KAAK;KACN,CAAC,CAAC;IAEH,OAAO,wBAAwB,CAAC;QAC9B,GAAG,MAAM;QACT,SAAS;QACT,KAAK;QACL,OAAO,EAAE,cAAc;KACxB,CAAC;SACC,MAAM,CAAC,oBAAoB,CAAC;SAC5B,MAAM,CAAC,uBAAuB,CAAC;SAC/B,MAAM,CAAC,mBAAmB,CAAC,CAAC;AACjC,CAAC;AAoBD;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,MAAM,CAAC,KAAK,UAAU,kCAAkC,CAAC,EACvD,SAAS,EACT,KAAK,EACL,GAAG,MAAM,EACgC;IAUzC,MAAM,cAAc,GAAG,MAAM,4BAA4B,CAAC;QACxD,GAAG,MAAM;QACT,SAAS;QACT,KAAK;KACN,CAAC,CAAC;IAEH,MAAM,MAAM,GAAG,wBAAwB,CAAC;QACtC,GAAG,MAAM;QACT,SAAS;QACT,KAAK;QACL,OAAO,EAAE,cAAc;QACvB,iBAAiB,EAAE,2BAA2B;KAC/C,CAAC;SACC,MAAM,CAAC,yBAAyB,CAAC;SACjC,MAAM,CAAC,oBAAoB,CAAC;SAC5B,MAAM,CAAC,qBAAqB,CAAC;SAC7B,MAAM,CAAC,mBAAmB,CAAC,CAAC;IAE/B,OAAO,MAAM,CAAC;AAChB,CAAC","sourcesContent":["import {\n createSmartAccountClient,\n smartAccountClientActions,\n type SmartAccountClient,\n type SmartAccountClientRpcSchema,\n type SmartAccountSigner,\n} from \"@aa-sdk/core\";\nimport { type Chain, type CustomTransport, type Transport } from \"viem\";\nimport type { CreateLightAccountClientParams } from \"../../light-account/clients/client.js\";\nimport {\n accountLoupeActions,\n type AccountLoupeActions,\n} from \"../account-loupe/decorator.js\";\nimport {\n createMultiOwnerModularAccount,\n type CreateMultiOwnerModularAccountParams,\n type MultiOwnerModularAccount,\n} from \"../account/multiOwnerAccount.js\";\nimport {\n createMultisigModularAccount,\n type CreateMultisigModularAccountParams,\n type MultisigModularAccount,\n} from \"../account/multisigAccount.js\";\nimport {\n pluginManagerActions,\n type PluginManagerActions,\n} from \"../plugin-manager/decorator.js\";\nimport {\n multiOwnerPluginActions,\n type MultiOwnerPluginActions,\n} from \"../plugins/multi-owner/index.js\";\nimport {\n multisigPluginActions,\n type MultisigPluginActions,\n type MultisigUserOperationContext,\n} from \"../plugins/multisig/index.js\";\nimport { multisigSignatureMiddleware } from \"../plugins/multisig/middleware.js\";\n\nexport type CreateMultiOwnerModularAccountClientParams<\n TTransport extends Transport = Transport,\n TChain extends Chain | undefined = Chain | undefined,\n TSigner extends SmartAccountSigner = SmartAccountSigner\n> = Omit<\n CreateMultiOwnerModularAccountParams<TTransport, TSigner>,\n \"transport\" | \"chain\"\n> &\n Omit<CreateLightAccountClientParams<TTransport, TChain, TSigner>, \"account\">;\n\nexport type CreateMultisigModularAccountClientParams<\n TTransport extends Transport = Transport,\n TChain extends Chain | undefined = Chain | undefined,\n TSigner extends SmartAccountSigner = SmartAccountSigner\n> = Omit<\n CreateMultisigModularAccountParams<TTransport, TSigner>,\n \"transport\" | \"chain\"\n> &\n Omit<CreateLightAccountClientParams<TTransport, TChain, TSigner>, \"account\">;\n\nexport function createMultiOwnerModularAccountClient<\n TChain extends Chain | undefined = Chain | undefined,\n TSigner extends SmartAccountSigner = SmartAccountSigner\n>(\n args: CreateMultiOwnerModularAccountClientParams<Transport, TChain, TSigner>\n): Promise<\n SmartAccountClient<\n CustomTransport,\n Chain,\n MultiOwnerModularAccount<TSigner>,\n MultiOwnerPluginActions<MultiOwnerModularAccount<TSigner>> &\n PluginManagerActions<MultiOwnerModularAccount<TSigner>> &\n AccountLoupeActions<MultiOwnerModularAccount<TSigner>>\n >\n>;\n\n/**\n * 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.\n *\n * @example\n * ```ts\n * import { createMultiOwnerModularAccountClient } from \"@account-kit/smart-contracts\";\n * import { LocalAccountSigner } from \"@aa-sdk/core\";\n * import { sepolia } from \"viem/chains\";\n * import { http } from \"viem\";\n * import { generatePrivateKey } from \"viem/accounts\";\n *\n * const accountClient = await createMultiOwnerModularAccountClient({\n * chain: sepolia,\n * transport: http(\"RPC_URL\"),\n * signer: LocalAccountSigner.privateKeyToAccountSigner(generatePrivateKey())\n * });\n * ```\n *\n * @param {CreateMultiOwnerModularAccountClientParams} config The parameters for creating the multi-owner modular account client\n * @returns {Promise<SmartAccountClient>} A promise that resolves to a `SmartAccountClient` instance with extended plugin actions\n */\nexport async function createMultiOwnerModularAccountClient({\n transport,\n chain,\n ...params\n}: CreateMultiOwnerModularAccountClientParams): Promise<SmartAccountClient> {\n const modularAccount = await createMultiOwnerModularAccount({\n ...params,\n transport,\n chain,\n });\n\n return createSmartAccountClient({\n ...params,\n transport,\n chain,\n account: modularAccount,\n })\n .extend(pluginManagerActions)\n .extend(multiOwnerPluginActions)\n .extend(accountLoupeActions);\n}\n\nexport function createMultisigModularAccountClient<\n TChain extends Chain | undefined = Chain | undefined,\n TSigner extends SmartAccountSigner = SmartAccountSigner\n>(\n args: CreateMultisigModularAccountClientParams<Transport, TChain, TSigner>\n): Promise<\n SmartAccountClient<\n CustomTransport,\n Chain,\n MultisigModularAccount<TSigner>,\n MultisigPluginActions<MultisigModularAccount<TSigner>> &\n PluginManagerActions<MultisigModularAccount<TSigner>> &\n AccountLoupeActions<MultisigModularAccount<TSigner>>,\n SmartAccountClientRpcSchema,\n MultisigUserOperationContext\n >\n>;\n\n/**\n * 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.\n *\n * @example\n * ```ts\n * import { createMultisigModularAccountClient } from \"@account-kit/smart-contracts\";\n * import { LocalAccountSigner } from \"@aa-sdk/core\";\n * import { sepolia } from \"viem/chains\";\n * import { http } from \"viem\"\n * import { generatePrivateKey } from \"viem/accounts\";\n *\n * const accountClient = await createMultisigModularAccountClient({\n * chain: sepolia,\n * transport: http(\"RPC_URL\"),\n * signer: LocalAccountSigner.privateKeyToAccountSigner(generatePrivateKey()),\n * owners: [], // other owners on the account\n * threshold: 2, // 2 of N signatures\n * });\n * ```\n *\n * @param {CreateMultisigModularAccountClientParams} config the parameters for configuring the multisig modular account client\n * @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\n */\nexport async function createMultisigModularAccountClient({\n transport,\n chain,\n ...params\n}: CreateMultisigModularAccountClientParams): Promise<\n SmartAccountClient<\n Transport,\n Chain,\n MultisigModularAccount<SmartAccountSigner>,\n {},\n SmartAccountClientRpcSchema,\n MultisigUserOperationContext\n >\n> {\n const modularAccount = await createMultisigModularAccount({\n ...params,\n transport,\n chain,\n });\n\n const client = createSmartAccountClient({\n ...params,\n transport,\n chain,\n account: modularAccount,\n signUserOperation: multisigSignatureMiddleware,\n })\n .extend(smartAccountClientActions)\n .extend(pluginManagerActions)\n .extend(multisigPluginActions)\n .extend(accountLoupeActions);\n\n return client;\n}\n"]}
@@ -2,6 +2,28 @@ import { smartAccountClientActions, } from "@aa-sdk/core";
2
2
  import { AlchemyProviderConfigSchema, createAlchemyPublicRpcClient, createAlchemySmartAccountClientFromExisting, } from "@account-kit/infra";
3
3
  import { accountLoupeActions, createMultisigModularAccount, multisigPluginActions, multisigSignatureMiddleware, pluginManagerActions, } from "@account-kit/smart-contracts";
4
4
  import { custom, } from "viem";
5
+ /**
6
+ * Creates an Alchemy client for a multisig account using the provided configuration.
7
+ *
8
+ * @example
9
+ * ```ts
10
+ * import { createMultisigAccountAlchemyClient } from "@account-kit/smart-contracts";
11
+ * import { sepolia } from "@account-kit/infra";
12
+ * import { LocalAccountSigner } from "@aa-sdk/core";
13
+ * import { generatePrivateKey } from "viem"
14
+ *
15
+ * const alchemyAccountClient = await createMultisigAccountAlchemyClient({
16
+ * apiKey: "your-api-key",
17
+ * chain: sepolia,
18
+ * signer: LocalAccountSigner.privateKeyToAccountSigner(generatePrivateKey()),
19
+ * owners: [...], // other owners on the account
20
+ * threshold: 2, // 2 of N signatures
21
+ * });
22
+ * ```
23
+ *
24
+ * @param {AlchemyMultisigAccountClientConfig} config The configuration for the Alchemy multisig account client
25
+ * @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.
26
+ */
5
27
  export async function createMultisigAccountAlchemyClient(config) {
6
28
  const { chain, opts, ...connectionConfig } = AlchemyProviderConfigSchema.parse(config);
7
29
  const client = createAlchemyPublicRpcClient({
@@ -1 +1 @@
1
- {"version":3,"file":"multiSigAlchemyClient.js","sourceRoot":"","sources":["../../../../../src/msca/client/multiSigAlchemyClient.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,yBAAyB,GAE1B,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,2BAA2B,EAC3B,4BAA4B,EAC5B,2CAA2C,GAG5C,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,mBAAmB,EACnB,4BAA4B,EAC5B,qBAAqB,EACrB,2BAA2B,EAC3B,oBAAoB,GAQrB,MAAM,8BAA8B,CAAC;AACtC,OAAO,EACL,MAAM,GAKP,MAAM,MAAM,CAAC;AA0Dd,MAAM,CAAC,KAAK,UAAU,kCAAkC,CACtD,MAA0C;IAY1C,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,gBAAgB,EAAE,GACxC,2BAA2B,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAE5C,MAAM,MAAM,GAAG,4BAA4B,CAAC;QAC1C,KAAK;QACL,gBAAgB;KACjB,CAAC,CAAC;IAEH,MAAM,OAAO,GAAG,MAAM,4BAA4B,CAAC;QACjD,SAAS,EAAE,MAAM,CAAC,MAAM,CAAC;QACzB,GAAG,MAAM;KACV,CAAC,CAAC;IAEH,OAAO,2CAA2C,CAIhD;QACA,GAAG,MAAM;QACT,MAAM;QACN,OAAO;QACP,IAAI;QACJ,iBAAiB,EAAE,2BAA2B;KAC/C,CAAC;SACC,MAAM,CAAC,yBAAyB,CAAC;SACjC,MAAM,CAAC,qBAAqB,CAAC;SAC7B,MAAM,CAAC,oBAAoB,CAAC;SAC5B,MAAM,CAAC,mBAAmB,CAAC,CAAC;AACjC,CAAC","sourcesContent":["import {\n smartAccountClientActions,\n type SmartAccountSigner,\n} from \"@aa-sdk/core\";\nimport {\n AlchemyProviderConfigSchema,\n createAlchemyPublicRpcClient,\n createAlchemySmartAccountClientFromExisting,\n type AlchemySmartAccountClient,\n type AlchemySmartAccountClientConfig,\n} from \"@account-kit/infra\";\nimport {\n accountLoupeActions,\n createMultisigModularAccount,\n multisigPluginActions,\n multisigSignatureMiddleware,\n pluginManagerActions,\n type AccountLoupeActions,\n type CreateMultisigModularAccountParams,\n type LightAccount,\n type MultisigModularAccount,\n type MultisigPluginActions,\n type MultisigUserOperationContext,\n type PluginManagerActions,\n} from \"@account-kit/smart-contracts\";\nimport {\n custom,\n type Chain,\n type CustomTransport,\n type HttpTransport,\n type Transport,\n} from \"viem\";\n\n// todo: this file seems somewhat duplicated with ./modularAccountClient.ts, but that file has some multi-owner specific fields. Is there a way to refactor these two to de-dupe?\n\nexport type AlchemyMultisigAccountClientConfig<\n TSigner extends SmartAccountSigner = SmartAccountSigner\n> = Omit<\n CreateMultisigModularAccountParams<HttpTransport, TSigner>,\n \"transport\" | \"chain\"\n> &\n Omit<\n AlchemySmartAccountClientConfig<\n Transport,\n Chain,\n LightAccount<TSigner>,\n MultisigUserOperationContext\n >,\n \"account\"\n >;\n\nexport function createMultisigAccountAlchemyClient<\n TSigner extends SmartAccountSigner = SmartAccountSigner\n>(\n params: AlchemyMultisigAccountClientConfig<TSigner>\n): Promise<\n AlchemySmartAccountClient<\n CustomTransport,\n Chain | undefined,\n MultisigModularAccount<TSigner>,\n MultisigPluginActions<MultisigModularAccount<TSigner>> &\n PluginManagerActions<MultisigModularAccount<TSigner>> &\n AccountLoupeActions<MultisigModularAccount<TSigner>>,\n MultisigUserOperationContext\n >\n>;\n\n/**\n * Creates an Alchemy client for a multisig account using the provided configuration.\n *\n * @example\n * ```ts\n * import { createMultisigAccountAlchemyClient } from \"@account-kit/smart-contracts\";\n * import { sepolia } from \"@account-kit/infra\";\n * import { LocalAccountSigner } from \"@aa-sdk/core\";\n * import { generatePrivateKey } from \"viem\"\n *\n * const alchemyAccountClient = await createMultisigAccountAlchemyClient({\n * apiKey: \"your-api-key\",\n * chain: sepolia,\n * signer: LocalAccountSigner.privateKeyToAccountSigner(generatePrivateKey()),\n * owners: [...], // other owners on the account\n * threshold: 2, // 2 of N signatures\n * });\n * ```\n *\n * @param {AlchemyMultisigAccountClientConfig} config The configuration for the Alchemy multisig account client\n * @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.\n */\nexport async function createMultisigAccountAlchemyClient(\n config: AlchemyMultisigAccountClientConfig\n): Promise<\n AlchemySmartAccountClient<\n Transport,\n Chain | undefined,\n MultisigModularAccount<SmartAccountSigner>,\n MultisigPluginActions<MultisigModularAccount<SmartAccountSigner>> &\n PluginManagerActions<MultisigModularAccount<SmartAccountSigner>> &\n AccountLoupeActions<MultisigModularAccount<SmartAccountSigner>>,\n MultisigUserOperationContext\n >\n> {\n const { chain, opts, ...connectionConfig } =\n AlchemyProviderConfigSchema.parse(config);\n\n const client = createAlchemyPublicRpcClient({\n chain,\n connectionConfig,\n });\n\n const account = await createMultisigModularAccount({\n transport: custom(client),\n ...config,\n });\n\n return createAlchemySmartAccountClientFromExisting<\n Chain | undefined,\n MultisigModularAccount<SmartAccountSigner>,\n MultisigUserOperationContext\n >({\n ...config,\n client,\n account,\n opts,\n signUserOperation: multisigSignatureMiddleware,\n })\n .extend(smartAccountClientActions)\n .extend(multisigPluginActions)\n .extend(pluginManagerActions)\n .extend(accountLoupeActions);\n}\n"]}
1
+ {"version":3,"file":"multiSigAlchemyClient.js","sourceRoot":"","sources":["../../../../../src/msca/client/multiSigAlchemyClient.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,yBAAyB,GAE1B,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,2BAA2B,EAC3B,4BAA4B,EAC5B,2CAA2C,GAG5C,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,mBAAmB,EACnB,4BAA4B,EAC5B,qBAAqB,EACrB,2BAA2B,EAC3B,oBAAoB,GAQrB,MAAM,8BAA8B,CAAC;AACtC,OAAO,EACL,MAAM,GAKP,MAAM,MAAM,CAAC;AAoCd;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,CAAC,KAAK,UAAU,kCAAkC,CACtD,MAA0C;IAY1C,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,gBAAgB,EAAE,GACxC,2BAA2B,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAE5C,MAAM,MAAM,GAAG,4BAA4B,CAAC;QAC1C,KAAK;QACL,gBAAgB;KACjB,CAAC,CAAC;IAEH,MAAM,OAAO,GAAG,MAAM,4BAA4B,CAAC;QACjD,SAAS,EAAE,MAAM,CAAC,MAAM,CAAC;QACzB,GAAG,MAAM;KACV,CAAC,CAAC;IAEH,OAAO,2CAA2C,CAIhD;QACA,GAAG,MAAM;QACT,MAAM;QACN,OAAO;QACP,IAAI;QACJ,iBAAiB,EAAE,2BAA2B;KAC/C,CAAC;SACC,MAAM,CAAC,yBAAyB,CAAC;SACjC,MAAM,CAAC,qBAAqB,CAAC;SAC7B,MAAM,CAAC,oBAAoB,CAAC;SAC5B,MAAM,CAAC,mBAAmB,CAAC,CAAC;AACjC,CAAC","sourcesContent":["import {\n smartAccountClientActions,\n type SmartAccountSigner,\n} from \"@aa-sdk/core\";\nimport {\n AlchemyProviderConfigSchema,\n createAlchemyPublicRpcClient,\n createAlchemySmartAccountClientFromExisting,\n type AlchemySmartAccountClient,\n type AlchemySmartAccountClientConfig,\n} from \"@account-kit/infra\";\nimport {\n accountLoupeActions,\n createMultisigModularAccount,\n multisigPluginActions,\n multisigSignatureMiddleware,\n pluginManagerActions,\n type AccountLoupeActions,\n type CreateMultisigModularAccountParams,\n type LightAccount,\n type MultisigModularAccount,\n type MultisigPluginActions,\n type MultisigUserOperationContext,\n type PluginManagerActions,\n} from \"@account-kit/smart-contracts\";\nimport {\n custom,\n type Chain,\n type CustomTransport,\n type HttpTransport,\n type Transport,\n} from \"viem\";\n\n// todo: this file seems somewhat duplicated with ./modularAccountClient.ts, but that file has some multi-owner specific fields. Is there a way to refactor these two to de-dupe?\n\nexport type AlchemyMultisigAccountClientConfig<\n TSigner extends SmartAccountSigner = SmartAccountSigner\n> = Omit<\n CreateMultisigModularAccountParams<HttpTransport, TSigner>,\n \"transport\" | \"chain\"\n> &\n Omit<\n AlchemySmartAccountClientConfig<\n Transport,\n Chain,\n LightAccount<TSigner>,\n MultisigUserOperationContext\n >,\n \"account\"\n >;\n\nexport function createMultisigAccountAlchemyClient<\n TSigner extends SmartAccountSigner = SmartAccountSigner\n>(\n params: AlchemyMultisigAccountClientConfig<TSigner>\n): Promise<\n AlchemySmartAccountClient<\n CustomTransport,\n Chain | undefined,\n MultisigModularAccount<TSigner>,\n MultisigPluginActions<MultisigModularAccount<TSigner>> &\n PluginManagerActions<MultisigModularAccount<TSigner>> &\n AccountLoupeActions<MultisigModularAccount<TSigner>>,\n MultisigUserOperationContext\n >\n>;\n\n/**\n * Creates an Alchemy client for a multisig account using the provided configuration.\n *\n * @example\n * ```ts\n * import { createMultisigAccountAlchemyClient } from \"@account-kit/smart-contracts\";\n * import { sepolia } from \"@account-kit/infra\";\n * import { LocalAccountSigner } from \"@aa-sdk/core\";\n * import { generatePrivateKey } from \"viem\"\n *\n * const alchemyAccountClient = await createMultisigAccountAlchemyClient({\n * apiKey: \"your-api-key\",\n * chain: sepolia,\n * signer: LocalAccountSigner.privateKeyToAccountSigner(generatePrivateKey()),\n * owners: [...], // other owners on the account\n * threshold: 2, // 2 of N signatures\n * });\n * ```\n *\n * @param {AlchemyMultisigAccountClientConfig} config The configuration for the Alchemy multisig account client\n * @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.\n */\nexport async function createMultisigAccountAlchemyClient(\n config: AlchemyMultisigAccountClientConfig\n): Promise<\n AlchemySmartAccountClient<\n Transport,\n Chain | undefined,\n MultisigModularAccount<SmartAccountSigner>,\n MultisigPluginActions<MultisigModularAccount<SmartAccountSigner>> &\n PluginManagerActions<MultisigModularAccount<SmartAccountSigner>> &\n AccountLoupeActions<MultisigModularAccount<SmartAccountSigner>>,\n MultisigUserOperationContext\n >\n> {\n const { chain, opts, ...connectionConfig } =\n AlchemyProviderConfigSchema.parse(config);\n\n const client = createAlchemyPublicRpcClient({\n chain,\n connectionConfig,\n });\n\n const account = await createMultisigModularAccount({\n transport: custom(client),\n ...config,\n });\n\n return createAlchemySmartAccountClientFromExisting<\n Chain | undefined,\n MultisigModularAccount<SmartAccountSigner>,\n MultisigUserOperationContext\n >({\n ...config,\n client,\n account,\n opts,\n signUserOperation: multisigSignatureMiddleware,\n })\n .extend(smartAccountClientActions)\n .extend(multisigPluginActions)\n .extend(pluginManagerActions)\n .extend(accountLoupeActions);\n}\n"]}
@@ -1,16 +1,28 @@
1
1
  import { BaseError } from "@aa-sdk/core";
2
+ /**
3
+ * Error thrown when the aggregated signature is invalid
4
+ */
2
5
  export declare class InvalidAggregatedSignatureError extends BaseError {
3
6
  name: string;
4
7
  constructor();
5
8
  }
9
+ /**
10
+ * Error thrown when the context signature is invalid
11
+ */
6
12
  export declare class InvalidContextSignatureError extends BaseError {
7
13
  name: string;
8
14
  constructor();
9
15
  }
16
+ /**
17
+ * Error thrown when the expected account is not a multisig modular account
18
+ */
10
19
  export declare class MultisigAccountExpectedError extends BaseError {
11
20
  name: string;
12
21
  constructor();
13
22
  }
23
+ /**
24
+ * Error thrown when a multisig user op is missing a signature
25
+ */
14
26
  export declare class MultisigMissingSignatureError extends BaseError {
15
27
  name: string;
16
28
  constructor();