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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (264) hide show
  1. package/dist/cjs/plugindefs/multi-owner/config.js +16 -17
  2. package/dist/cjs/plugindefs/multi-owner/config.js.map +1 -1
  3. package/dist/cjs/plugindefs/multisig/config.js +15 -15
  4. package/dist/cjs/plugindefs/multisig/config.js.map +1 -1
  5. package/dist/cjs/plugindefs/session-key/config.js +17 -17
  6. package/dist/cjs/plugindefs/session-key/config.js.map +1 -1
  7. package/dist/cjs/src/index.d.ts +3 -3
  8. package/dist/cjs/src/index.js +15 -15
  9. package/dist/cjs/src/index.js.map +1 -1
  10. package/dist/cjs/src/light-account/accounts/account.js +1 -1
  11. package/dist/cjs/src/light-account/accounts/account.js.map +1 -1
  12. package/dist/cjs/src/light-account/accounts/multiOwner.js +2 -4
  13. package/dist/cjs/src/light-account/accounts/multiOwner.js.map +1 -1
  14. package/dist/cjs/src/light-account/actions/transferOwnership.d.ts +1 -1
  15. package/dist/cjs/src/light-account/actions/transferOwnership.js +2 -1
  16. package/dist/cjs/src/light-account/actions/transferOwnership.js.map +1 -1
  17. package/dist/cjs/src/light-account/actions/updateOwners.js.map +1 -1
  18. package/dist/cjs/src/light-account/clients/alchemyClient.d.ts +1 -1
  19. package/dist/cjs/src/light-account/clients/alchemyClient.js.map +1 -1
  20. package/dist/cjs/src/light-account/clients/client.js +2 -1
  21. package/dist/cjs/src/light-account/clients/client.js.map +1 -1
  22. package/dist/cjs/src/light-account/clients/multiOwnerAlchemyClient.d.ts +1 -1
  23. package/dist/cjs/src/light-account/clients/multiOwnerAlchemyClient.js.map +1 -1
  24. package/dist/cjs/src/light-account/clients/multiOwnerLightAccount.js +2 -1
  25. package/dist/cjs/src/light-account/clients/multiOwnerLightAccount.js.map +1 -1
  26. package/dist/cjs/src/light-account/decorators/lightAccount.js.map +1 -1
  27. package/dist/cjs/src/light-account/decorators/multiOwnerLightAccount.js.map +1 -1
  28. package/dist/cjs/src/light-account/utils.d.ts +3 -2
  29. package/dist/cjs/src/light-account/utils.js +34 -24
  30. package/dist/cjs/src/light-account/utils.js.map +1 -1
  31. package/dist/cjs/src/msca/account/multiOwnerAccount.js +2 -1
  32. package/dist/cjs/src/msca/account/multiOwnerAccount.js.map +1 -1
  33. package/dist/cjs/src/msca/account/multisigAccount.js +4 -3
  34. package/dist/cjs/src/msca/account/multisigAccount.js.map +1 -1
  35. package/dist/cjs/src/msca/account-loupe/decorator.js.map +1 -1
  36. package/dist/cjs/src/msca/client/alchemyClient.d.ts +1 -1
  37. package/dist/cjs/src/msca/client/alchemyClient.js.map +1 -1
  38. package/dist/cjs/src/msca/client/client.js.map +1 -1
  39. package/dist/cjs/src/msca/client/multiSigAlchemyClient.d.ts +1 -1
  40. package/dist/cjs/src/msca/client/multiSigAlchemyClient.js +1 -1
  41. package/dist/cjs/src/msca/client/multiSigAlchemyClient.js.map +1 -1
  42. package/dist/cjs/src/msca/errors.js.map +1 -1
  43. package/dist/cjs/src/msca/plugin-manager/decorator.d.ts +1 -1
  44. package/dist/cjs/src/msca/plugin-manager/decorator.js +6 -4
  45. package/dist/cjs/src/msca/plugin-manager/decorator.js.map +1 -1
  46. package/dist/cjs/src/msca/plugin-manager/installPlugin.js.map +1 -1
  47. package/dist/cjs/src/msca/plugins/multi-owner/extension.js.map +1 -1
  48. package/dist/cjs/src/msca/plugins/multi-owner/index.d.ts +1 -1
  49. package/dist/cjs/src/msca/plugins/multi-owner/index.js +2 -1
  50. package/dist/cjs/src/msca/plugins/multi-owner/index.js.map +1 -1
  51. package/dist/cjs/src/msca/plugins/multisig/actions/proposeUserOperation.js +2 -2
  52. package/dist/cjs/src/msca/plugins/multisig/actions/proposeUserOperation.js.map +1 -1
  53. package/dist/cjs/src/msca/plugins/multisig/actions/signMultisigUserOperation.js +1 -1
  54. package/dist/cjs/src/msca/plugins/multisig/actions/signMultisigUserOperation.js.map +1 -1
  55. package/dist/cjs/src/msca/plugins/multisig/extension.js.map +1 -1
  56. package/dist/cjs/src/msca/plugins/multisig/index.d.ts +1 -8
  57. package/dist/cjs/src/msca/plugins/multisig/index.js +1 -16
  58. package/dist/cjs/src/msca/plugins/multisig/index.js.map +1 -1
  59. package/dist/cjs/src/msca/plugins/multisig/middleware.d.ts +1 -1
  60. package/dist/cjs/src/msca/plugins/multisig/middleware.js +1 -1
  61. package/dist/cjs/src/msca/plugins/multisig/middleware.js.map +1 -1
  62. package/dist/cjs/src/msca/plugins/multisig/utils/combineSignatures.d.ts +3 -2
  63. package/dist/cjs/src/msca/plugins/multisig/utils/combineSignatures.js +2 -2
  64. package/dist/cjs/src/msca/plugins/multisig/utils/combineSignatures.js.map +1 -1
  65. package/dist/cjs/src/msca/plugins/multisig/utils/getSignerType.d.ts +2 -2
  66. package/dist/cjs/src/msca/plugins/multisig/utils/getSignerType.js.map +1 -1
  67. package/dist/cjs/src/msca/plugins/multisig/utils/index.d.ts +4 -0
  68. package/dist/cjs/src/msca/plugins/multisig/utils/index.js.map +1 -1
  69. package/dist/cjs/src/msca/plugins/session-key/extension.js.map +1 -1
  70. package/dist/cjs/src/msca/plugins/session-key/index.d.ts +1 -1
  71. package/dist/cjs/src/msca/plugins/session-key/index.js +3 -1
  72. package/dist/cjs/src/msca/plugins/session-key/index.js.map +1 -1
  73. package/dist/cjs/src/msca/plugins/session-key/permissions.js.map +1 -1
  74. package/dist/cjs/src/msca/plugins/session-key/signer.js.map +1 -1
  75. package/dist/cjs/src/msca/plugins/session-key/utils.d.ts +4 -2
  76. package/dist/cjs/src/msca/plugins/session-key/utils.js +3 -2
  77. package/dist/cjs/src/msca/plugins/session-key/utils.js.map +1 -1
  78. package/dist/cjs/src/msca/utils.d.ts +6 -4
  79. package/dist/cjs/src/msca/utils.js +11 -10
  80. package/dist/cjs/src/msca/utils.js.map +1 -1
  81. package/dist/esm/plugindefs/multi-owner/config.js +1 -2
  82. package/dist/esm/plugindefs/multi-owner/config.js.map +1 -1
  83. package/dist/esm/plugindefs/multisig/config.js +1 -1
  84. package/dist/esm/plugindefs/multisig/config.js.map +1 -1
  85. package/dist/esm/plugindefs/session-key/config.js +1 -1
  86. package/dist/esm/plugindefs/session-key/config.js.map +1 -1
  87. package/dist/esm/src/index.d.ts +3 -3
  88. package/dist/esm/src/index.js +2 -2
  89. package/dist/esm/src/index.js.map +1 -1
  90. package/dist/esm/src/light-account/accounts/account.js +2 -2
  91. package/dist/esm/src/light-account/accounts/account.js.map +1 -1
  92. package/dist/esm/src/light-account/accounts/multiOwner.js +3 -5
  93. package/dist/esm/src/light-account/accounts/multiOwner.js.map +1 -1
  94. package/dist/esm/src/light-account/actions/transferOwnership.d.ts +1 -1
  95. package/dist/esm/src/light-account/actions/transferOwnership.js +2 -1
  96. package/dist/esm/src/light-account/actions/transferOwnership.js.map +1 -1
  97. package/dist/esm/src/light-account/actions/updateOwners.js.map +1 -1
  98. package/dist/esm/src/light-account/clients/alchemyClient.d.ts +1 -1
  99. package/dist/esm/src/light-account/clients/alchemyClient.js.map +1 -1
  100. package/dist/esm/src/light-account/clients/client.js +2 -1
  101. package/dist/esm/src/light-account/clients/client.js.map +1 -1
  102. package/dist/esm/src/light-account/clients/multiOwnerAlchemyClient.d.ts +1 -1
  103. package/dist/esm/src/light-account/clients/multiOwnerAlchemyClient.js.map +1 -1
  104. package/dist/esm/src/light-account/clients/multiOwnerLightAccount.js +2 -1
  105. package/dist/esm/src/light-account/clients/multiOwnerLightAccount.js.map +1 -1
  106. package/dist/esm/src/light-account/decorators/lightAccount.js.map +1 -1
  107. package/dist/esm/src/light-account/decorators/multiOwnerLightAccount.js.map +1 -1
  108. package/dist/esm/src/light-account/utils.d.ts +3 -2
  109. package/dist/esm/src/light-account/utils.js +14 -5
  110. package/dist/esm/src/light-account/utils.js.map +1 -1
  111. package/dist/esm/src/msca/account/multiOwnerAccount.js +2 -1
  112. package/dist/esm/src/msca/account/multiOwnerAccount.js.map +1 -1
  113. package/dist/esm/src/msca/account/multisigAccount.js +4 -3
  114. package/dist/esm/src/msca/account/multisigAccount.js.map +1 -1
  115. package/dist/esm/src/msca/account-loupe/decorator.js.map +1 -1
  116. package/dist/esm/src/msca/client/alchemyClient.d.ts +1 -1
  117. package/dist/esm/src/msca/client/alchemyClient.js.map +1 -1
  118. package/dist/esm/src/msca/client/client.js.map +1 -1
  119. package/dist/esm/src/msca/client/multiSigAlchemyClient.d.ts +1 -1
  120. package/dist/esm/src/msca/client/multiSigAlchemyClient.js +1 -1
  121. package/dist/esm/src/msca/client/multiSigAlchemyClient.js.map +1 -1
  122. package/dist/esm/src/msca/errors.js.map +1 -1
  123. package/dist/esm/src/msca/plugin-manager/decorator.d.ts +1 -1
  124. package/dist/esm/src/msca/plugin-manager/decorator.js +6 -4
  125. package/dist/esm/src/msca/plugin-manager/decorator.js.map +1 -1
  126. package/dist/esm/src/msca/plugin-manager/installPlugin.js.map +1 -1
  127. package/dist/esm/src/msca/plugins/multi-owner/extension.js.map +1 -1
  128. package/dist/esm/src/msca/plugins/multi-owner/index.d.ts +1 -1
  129. package/dist/esm/src/msca/plugins/multi-owner/index.js +1 -1
  130. package/dist/esm/src/msca/plugins/multi-owner/index.js.map +1 -1
  131. package/dist/esm/src/msca/plugins/multisig/actions/proposeUserOperation.js +1 -1
  132. package/dist/esm/src/msca/plugins/multisig/actions/proposeUserOperation.js.map +1 -1
  133. package/dist/esm/src/msca/plugins/multisig/actions/signMultisigUserOperation.js +1 -1
  134. package/dist/esm/src/msca/plugins/multisig/actions/signMultisigUserOperation.js.map +1 -1
  135. package/dist/esm/src/msca/plugins/multisig/extension.js.map +1 -1
  136. package/dist/esm/src/msca/plugins/multisig/index.d.ts +1 -8
  137. package/dist/esm/src/msca/plugins/multisig/index.js +0 -7
  138. package/dist/esm/src/msca/plugins/multisig/index.js.map +1 -1
  139. package/dist/esm/src/msca/plugins/multisig/middleware.d.ts +1 -1
  140. package/dist/esm/src/msca/plugins/multisig/middleware.js +2 -1
  141. package/dist/esm/src/msca/plugins/multisig/middleware.js.map +1 -1
  142. package/dist/esm/src/msca/plugins/multisig/utils/combineSignatures.d.ts +3 -2
  143. package/dist/esm/src/msca/plugins/multisig/utils/combineSignatures.js +2 -2
  144. package/dist/esm/src/msca/plugins/multisig/utils/combineSignatures.js.map +1 -1
  145. package/dist/esm/src/msca/plugins/multisig/utils/getSignerType.d.ts +2 -2
  146. package/dist/esm/src/msca/plugins/multisig/utils/getSignerType.js.map +1 -1
  147. package/dist/esm/src/msca/plugins/multisig/utils/index.d.ts +4 -0
  148. package/dist/esm/src/msca/plugins/multisig/utils/index.js.map +1 -1
  149. package/dist/esm/src/msca/plugins/session-key/extension.js.map +1 -1
  150. package/dist/esm/src/msca/plugins/session-key/index.d.ts +1 -1
  151. package/dist/esm/src/msca/plugins/session-key/index.js +1 -1
  152. package/dist/esm/src/msca/plugins/session-key/index.js.map +1 -1
  153. package/dist/esm/src/msca/plugins/session-key/permissions.js.map +1 -1
  154. package/dist/esm/src/msca/plugins/session-key/signer.js.map +1 -1
  155. package/dist/esm/src/msca/plugins/session-key/utils.d.ts +4 -2
  156. package/dist/esm/src/msca/plugins/session-key/utils.js +3 -2
  157. package/dist/esm/src/msca/plugins/session-key/utils.js.map +1 -1
  158. package/dist/esm/src/msca/utils.d.ts +6 -4
  159. package/dist/esm/src/msca/utils.js +2 -1
  160. package/dist/esm/src/msca/utils.js.map +1 -1
  161. package/dist/types/plugindefs/multi-owner/config.d.ts.map +1 -1
  162. package/dist/types/src/index.d.ts +3 -3
  163. package/dist/types/src/index.d.ts.map +1 -1
  164. package/dist/types/src/light-account/accounts/account.d.ts.map +1 -1
  165. package/dist/types/src/light-account/accounts/multiOwner.d.ts.map +1 -1
  166. package/dist/types/src/light-account/actions/transferOwnership.d.ts +26 -1
  167. package/dist/types/src/light-account/actions/transferOwnership.d.ts.map +1 -1
  168. package/dist/types/src/light-account/actions/updateOwners.d.ts +24 -0
  169. package/dist/types/src/light-account/actions/updateOwners.d.ts.map +1 -1
  170. package/dist/types/src/light-account/clients/alchemyClient.d.ts +1 -1
  171. package/dist/types/src/light-account/clients/alchemyClient.d.ts.map +1 -1
  172. package/dist/types/src/light-account/clients/multiOwnerAlchemyClient.d.ts +1 -1
  173. package/dist/types/src/light-account/clients/multiOwnerAlchemyClient.d.ts.map +1 -1
  174. package/dist/types/src/light-account/decorators/lightAccount.d.ts +19 -0
  175. package/dist/types/src/light-account/decorators/lightAccount.d.ts.map +1 -1
  176. package/dist/types/src/light-account/decorators/multiOwnerLightAccount.d.ts +19 -0
  177. package/dist/types/src/light-account/decorators/multiOwnerLightAccount.d.ts.map +1 -1
  178. package/dist/types/src/light-account/utils.d.ts +11 -4
  179. package/dist/types/src/light-account/utils.d.ts.map +1 -1
  180. package/dist/types/src/msca/account/multisigAccount.d.ts.map +1 -1
  181. package/dist/types/src/msca/account-loupe/decorator.d.ts +15 -0
  182. package/dist/types/src/msca/account-loupe/decorator.d.ts.map +1 -1
  183. package/dist/types/src/msca/client/alchemyClient.d.ts +1 -1
  184. package/dist/types/src/msca/client/alchemyClient.d.ts.map +1 -1
  185. package/dist/types/src/msca/client/client.d.ts.map +1 -1
  186. package/dist/types/src/msca/client/multiSigAlchemyClient.d.ts +1 -1
  187. package/dist/types/src/msca/client/multiSigAlchemyClient.d.ts.map +1 -1
  188. package/dist/types/src/msca/errors.d.ts +12 -0
  189. package/dist/types/src/msca/errors.d.ts.map +1 -1
  190. package/dist/types/src/msca/plugin-manager/decorator.d.ts +16 -1
  191. package/dist/types/src/msca/plugin-manager/decorator.d.ts.map +1 -1
  192. package/dist/types/src/msca/plugin-manager/installPlugin.d.ts +21 -0
  193. package/dist/types/src/msca/plugin-manager/installPlugin.d.ts.map +1 -1
  194. package/dist/types/src/msca/plugins/multi-owner/extension.d.ts +15 -0
  195. package/dist/types/src/msca/plugins/multi-owner/extension.d.ts.map +1 -1
  196. package/dist/types/src/msca/plugins/multi-owner/index.d.ts +1 -1
  197. package/dist/types/src/msca/plugins/multi-owner/index.d.ts.map +1 -1
  198. package/dist/types/src/msca/plugins/multisig/actions/proposeUserOperation.d.ts.map +1 -1
  199. package/dist/types/src/msca/plugins/multisig/actions/signMultisigUserOperation.d.ts.map +1 -1
  200. package/dist/types/src/msca/plugins/multisig/extension.d.ts +13 -0
  201. package/dist/types/src/msca/plugins/multisig/extension.d.ts.map +1 -1
  202. package/dist/types/src/msca/plugins/multisig/index.d.ts +1 -8
  203. package/dist/types/src/msca/plugins/multisig/index.d.ts.map +1 -1
  204. package/dist/types/src/msca/plugins/multisig/middleware.d.ts +1 -1
  205. package/dist/types/src/msca/plugins/multisig/middleware.d.ts.map +1 -1
  206. package/dist/types/src/msca/plugins/multisig/utils/combineSignatures.d.ts +28 -2
  207. package/dist/types/src/msca/plugins/multisig/utils/combineSignatures.d.ts.map +1 -1
  208. package/dist/types/src/msca/plugins/multisig/utils/getSignerType.d.ts +21 -2
  209. package/dist/types/src/msca/plugins/multisig/utils/getSignerType.d.ts.map +1 -1
  210. package/dist/types/src/msca/plugins/multisig/utils/index.d.ts +4 -0
  211. package/dist/types/src/msca/plugins/multisig/utils/index.d.ts.map +1 -1
  212. package/dist/types/src/msca/plugins/session-key/extension.d.ts +13 -0
  213. package/dist/types/src/msca/plugins/session-key/extension.d.ts.map +1 -1
  214. package/dist/types/src/msca/plugins/session-key/index.d.ts +1 -1
  215. package/dist/types/src/msca/plugins/session-key/index.d.ts.map +1 -1
  216. package/dist/types/src/msca/plugins/session-key/permissions.d.ts +3 -0
  217. package/dist/types/src/msca/plugins/session-key/permissions.d.ts.map +1 -1
  218. package/dist/types/src/msca/plugins/session-key/signer.d.ts +1 -1
  219. package/dist/types/src/msca/plugins/session-key/signer.d.ts.map +1 -1
  220. package/dist/types/src/msca/plugins/session-key/utils.d.ts +22 -2
  221. package/dist/types/src/msca/plugins/session-key/utils.d.ts.map +1 -1
  222. package/dist/types/src/msca/utils.d.ts +43 -5
  223. package/dist/types/src/msca/utils.d.ts.map +1 -1
  224. package/package.json +5 -5
  225. package/plugindefs/multi-owner/config.ts +1 -2
  226. package/plugindefs/multisig/config.ts +1 -1
  227. package/plugindefs/session-key/config.ts +1 -1
  228. package/src/index.ts +2 -3
  229. package/src/light-account/accounts/account.ts +22 -3
  230. package/src/light-account/accounts/multiOwner.ts +26 -5
  231. package/src/light-account/actions/transferOwnership.ts +28 -5
  232. package/src/light-account/actions/updateOwners.ts +24 -0
  233. package/src/light-account/clients/alchemyClient.ts +21 -1
  234. package/src/light-account/clients/client.ts +27 -6
  235. package/src/light-account/clients/multiOwnerAlchemyClient.ts +21 -1
  236. package/src/light-account/clients/multiOwnerLightAccount.ts +27 -6
  237. package/src/light-account/decorators/lightAccount.ts +19 -0
  238. package/src/light-account/decorators/multiOwnerLightAccount.ts +19 -0
  239. package/src/light-account/utils.ts +31 -9
  240. package/src/msca/account/multiOwnerAccount.ts +36 -11
  241. package/src/msca/account/multisigAccount.ts +40 -14
  242. package/src/msca/account-loupe/decorator.ts +15 -0
  243. package/src/msca/client/alchemyClient.ts +21 -1
  244. package/src/msca/client/client.ts +46 -0
  245. package/src/msca/client/multiSigAlchemyClient.ts +26 -4
  246. package/src/msca/errors.ts +12 -0
  247. package/src/msca/plugin-manager/decorator.ts +22 -5
  248. package/src/msca/plugin-manager/installPlugin.ts +21 -0
  249. package/src/msca/plugins/multi-owner/extension.ts +15 -0
  250. package/src/msca/plugins/multi-owner/index.ts +3 -0
  251. package/src/msca/plugins/multisig/actions/proposeUserOperation.ts +1 -1
  252. package/src/msca/plugins/multisig/actions/signMultisigUserOperation.ts +1 -1
  253. package/src/msca/plugins/multisig/extension.ts +13 -0
  254. package/src/msca/plugins/multisig/index.ts +1 -12
  255. package/src/msca/plugins/multisig/middleware.ts +2 -2
  256. package/src/msca/plugins/multisig/utils/combineSignatures.ts +36 -9
  257. package/src/msca/plugins/multisig/utils/getSignerType.ts +23 -4
  258. package/src/msca/plugins/multisig/utils/index.ts +4 -0
  259. package/src/msca/plugins/session-key/extension.ts +13 -0
  260. package/src/msca/plugins/session-key/index.ts +7 -1
  261. package/src/msca/plugins/session-key/permissions.ts +3 -0
  262. package/src/msca/plugins/session-key/signer.ts +1 -2
  263. package/src/msca/plugins/session-key/utils.ts +33 -12
  264. package/src/msca/utils.ts +73 -16
@@ -1 +1 @@
1
- {"version":3,"file":"installPlugin.js","sourceRoot":"","sources":["../../../../../src/msca/plugin-manager/installPlugin.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,oBAAoB,EACpB,uBAAuB,EACvB,oBAAoB,GAOrB,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,kBAAkB,EAClB,oBAAoB,EACpB,SAAS,GAMV,MAAM,MAAM,CAAC;AACd,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAoB9D,MAAM,CAAC,KAAK,UAAU,aAAa,CAUjC,MAA4C,EAC5C,EACE,SAAS,EACT,OAAO,EACP,OAAO,GAAG,MAAM,CAAC,OAAO,EACxB,GAAG,MAAM,EAC+B;IAE1C,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,IAAI,oBAAoB,EAAE,CAAC;IACnC,CAAC;IAED,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,EAAE,CAAC;QAClC,MAAM,IAAI,uBAAuB,CAC/B,oBAAoB,EACpB,eAAe,EACf,MAAM,CACP,CAAC;IACJ,CAAC;IAED,MAAM,QAAQ,GAAG,MAAM,gCAAgC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAExE,OAAO,MAAM,CAAC,iBAAiB,CAAC;QAC9B,EAAE,EAAE,QAAQ;QACZ,SAAS;QACT,OAAO;QACP,OAAO;KACR,CAAC,CAAC;AACL,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,gCAAgC,CAOpD,MAAwD,EACxD,MAAsE;IAEtE,MAAM,cAAc,GAAG,MAAM,MAAM,CAAC,YAAY,CAAC;QAC/C,GAAG,EAAE,UAAU;QACf,OAAO,EAAE,MAAM,CAAC,aAAa;QAC7B,YAAY,EAAE,gBAAgB;KAC/B,CAAC,CAAC;IAEH,MAAM,YAAY,GAChB,MAAM,CAAC,YAAY;QACnB,SAAS,CACP,oBAAoB,CAAC;YACnB,GAAG,EAAE,UAAU;YACf,YAAY,EAAE,gBAAgB;YAC9B,MAAM,EAAE,cAAc;SACvB,CAAC,CACH,CAAC;IACJ,OAAO,kBAAkB,CAAC;QACxB,GAAG,EAAE,iBAAiB;QACtB,YAAY,EAAE,eAAe;QAC7B,IAAI,EAAE;YACJ,MAAM,CAAC,aAAa;YACpB,YAAY;YACZ,MAAM,CAAC,cAAc,IAAI,IAAI;YAC7B,MAAM,CAAC,YAAY,IAAI,EAAE;SAC1B;KACF,CAAC,CAAC;AACL,CAAC","sourcesContent":["import {\n AccountNotFoundError,\n IncompatibleClientError,\n isSmartAccountClient,\n type GetAccountParameter,\n type GetContextParameter,\n type GetEntryPointFromAccount,\n type SmartAccountClient,\n type SmartContractAccount,\n type UserOperationOverridesParameter,\n} from \"@aa-sdk/core\";\nimport {\n encodeFunctionData,\n encodeFunctionResult,\n keccak256,\n type Address,\n type Chain,\n type Client,\n type Hash,\n type Transport,\n} from \"viem\";\nimport { IPluginAbi } from \"../abis/IPlugin.js\";\nimport { IPluginManagerAbi } from \"../abis/IPluginManager.js\";\nimport type { FunctionReference } from \"../account-loupe/types.js\";\n\nexport type InstallPluginParams<\n TAccount extends SmartContractAccount | undefined =\n | SmartContractAccount\n | undefined,\n TContext extends Record<string, unknown> | undefined =\n | Record<string, unknown>\n | undefined,\n TEntryPointVersion extends GetEntryPointFromAccount<TAccount> = GetEntryPointFromAccount<TAccount>\n> = {\n pluginAddress: Address;\n manifestHash?: Hash;\n pluginInitData?: Hash;\n dependencies?: FunctionReference[];\n} & UserOperationOverridesParameter<TEntryPointVersion> &\n GetAccountParameter<TAccount> &\n GetContextParameter<TContext>;\n\nexport async function installPlugin<\n TTransport extends Transport = Transport,\n TChain extends Chain | undefined = Chain | undefined,\n TAccount extends SmartContractAccount | undefined =\n | SmartContractAccount\n | undefined,\n TContext extends Record<string, unknown> | undefined =\n | Record<string, unknown>\n | undefined\n>(\n client: Client<TTransport, TChain, TAccount>,\n {\n overrides,\n context,\n account = client.account,\n ...params\n }: InstallPluginParams<TAccount, TContext>\n) {\n if (!account) {\n throw new AccountNotFoundError();\n }\n\n if (!isSmartAccountClient(client)) {\n throw new IncompatibleClientError(\n \"SmartAccountClient\",\n \"installPlugin\",\n client\n );\n }\n\n const callData = await encodeInstallPluginUserOperation(client, params);\n\n return client.sendUserOperation({\n uo: callData,\n overrides,\n account,\n context,\n });\n}\n\nexport async function encodeInstallPluginUserOperation<\n TTransport extends Transport = Transport,\n TChain extends Chain | undefined = Chain | undefined,\n TAccount extends SmartContractAccount | undefined =\n | SmartContractAccount\n | undefined\n>(\n client: SmartAccountClient<TTransport, TChain, TAccount>,\n params: Omit<InstallPluginParams, \"overrides\" | \"account\" | \"context\">\n) {\n const pluginManifest = await client.readContract({\n abi: IPluginAbi,\n address: params.pluginAddress,\n functionName: \"pluginManifest\",\n });\n // use the manifest hash passed in or get it from the plugin\n const manifestHash: Hash =\n params.manifestHash ??\n keccak256(\n encodeFunctionResult({\n abi: IPluginAbi,\n functionName: \"pluginManifest\",\n result: pluginManifest,\n })\n );\n return encodeFunctionData({\n abi: IPluginManagerAbi,\n functionName: \"installPlugin\",\n args: [\n params.pluginAddress,\n manifestHash,\n params.pluginInitData ?? \"0x\",\n params.dependencies ?? [],\n ],\n });\n}\n"]}
1
+ {"version":3,"file":"installPlugin.js","sourceRoot":"","sources":["../../../../../src/msca/plugin-manager/installPlugin.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,oBAAoB,EACpB,uBAAuB,EACvB,oBAAoB,GAOrB,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,kBAAkB,EAClB,oBAAoB,EACpB,SAAS,GAMV,MAAM,MAAM,CAAC;AACd,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAyC9D,MAAM,CAAC,KAAK,UAAU,aAAa,CAUjC,MAA4C,EAC5C,EACE,SAAS,EACT,OAAO,EACP,OAAO,GAAG,MAAM,CAAC,OAAO,EACxB,GAAG,MAAM,EAC+B;IAE1C,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,IAAI,oBAAoB,EAAE,CAAC;IACnC,CAAC;IAED,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,EAAE,CAAC;QAClC,MAAM,IAAI,uBAAuB,CAC/B,oBAAoB,EACpB,eAAe,EACf,MAAM,CACP,CAAC;IACJ,CAAC;IAED,MAAM,QAAQ,GAAG,MAAM,gCAAgC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAExE,OAAO,MAAM,CAAC,iBAAiB,CAAC;QAC9B,EAAE,EAAE,QAAQ;QACZ,SAAS;QACT,OAAO;QACP,OAAO;KACR,CAAC,CAAC;AACL,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,gCAAgC,CAOpD,MAAwD,EACxD,MAAsE;IAEtE,MAAM,cAAc,GAAG,MAAM,MAAM,CAAC,YAAY,CAAC;QAC/C,GAAG,EAAE,UAAU;QACf,OAAO,EAAE,MAAM,CAAC,aAAa;QAC7B,YAAY,EAAE,gBAAgB;KAC/B,CAAC,CAAC;IAEH,MAAM,YAAY,GAChB,MAAM,CAAC,YAAY;QACnB,SAAS,CACP,oBAAoB,CAAC;YACnB,GAAG,EAAE,UAAU;YACf,YAAY,EAAE,gBAAgB;YAC9B,MAAM,EAAE,cAAc;SACvB,CAAC,CACH,CAAC;IACJ,OAAO,kBAAkB,CAAC;QACxB,GAAG,EAAE,iBAAiB;QACtB,YAAY,EAAE,eAAe;QAC7B,IAAI,EAAE;YACJ,MAAM,CAAC,aAAa;YACpB,YAAY;YACZ,MAAM,CAAC,cAAc,IAAI,IAAI;YAC7B,MAAM,CAAC,YAAY,IAAI,EAAE;SAC1B;KACF,CAAC,CAAC;AACL,CAAC","sourcesContent":["import {\n AccountNotFoundError,\n IncompatibleClientError,\n isSmartAccountClient,\n type GetAccountParameter,\n type GetContextParameter,\n type GetEntryPointFromAccount,\n type SmartAccountClient,\n type SmartContractAccount,\n type UserOperationOverridesParameter,\n} from \"@aa-sdk/core\";\nimport {\n encodeFunctionData,\n encodeFunctionResult,\n keccak256,\n type Address,\n type Chain,\n type Client,\n type Hash,\n type Transport,\n} from \"viem\";\nimport { IPluginAbi } from \"../abis/IPlugin.js\";\nimport { IPluginManagerAbi } from \"../abis/IPluginManager.js\";\nimport type { FunctionReference } from \"../account-loupe/types.js\";\n\nexport type InstallPluginParams<\n TAccount extends SmartContractAccount | undefined =\n | SmartContractAccount\n | undefined,\n TContext extends Record<string, unknown> | undefined =\n | Record<string, unknown>\n | undefined,\n TEntryPointVersion extends GetEntryPointFromAccount<TAccount> = GetEntryPointFromAccount<TAccount>\n> = {\n pluginAddress: Address;\n manifestHash?: Hash;\n pluginInitData?: Hash;\n dependencies?: FunctionReference[];\n} & UserOperationOverridesParameter<TEntryPointVersion> &\n GetAccountParameter<TAccount> &\n GetContextParameter<TContext>;\n\n/**\n * Installs a plugin on a smart account via the client, sending the user operation with the appropriate parameters.\n * NOTE: it's recommended to just use the installPlugin action returned from generated plugins\n *\n * @example\n * ```ts\n * import { installPlugin, createModularAccountAlchemyClient } from \"@account-kit/smart-contracts\";\n *\n * const client = createModularAccountAlchemyClient(...);\n *\n * const hash = await installPlugin(client, {\n * pluginAddress: \"0x...\",\n * manifestHash: \"0x...\",\n * dependencies: [], // this is defined by the plugin you're installing\n * });\n * ```\n *\n * @param {Client<TTransport, TChain, TAccount>} client The client configured to the smart account on which the plugin will be installed\n * @param {InstallPluginParams<TAccount, TContext>} params The parameters required to install the plugin, including overrides, context, and account information\n * @returns {Promise<any>} A promise that resolves once the plugin installation operation is sent\n */\nexport async function installPlugin<\n TTransport extends Transport = Transport,\n TChain extends Chain | undefined = Chain | undefined,\n TAccount extends SmartContractAccount | undefined =\n | SmartContractAccount\n | undefined,\n TContext extends Record<string, unknown> | undefined =\n | Record<string, unknown>\n | undefined\n>(\n client: Client<TTransport, TChain, TAccount>,\n {\n overrides,\n context,\n account = client.account,\n ...params\n }: InstallPluginParams<TAccount, TContext>\n) {\n if (!account) {\n throw new AccountNotFoundError();\n }\n\n if (!isSmartAccountClient(client)) {\n throw new IncompatibleClientError(\n \"SmartAccountClient\",\n \"installPlugin\",\n client\n );\n }\n\n const callData = await encodeInstallPluginUserOperation(client, params);\n\n return client.sendUserOperation({\n uo: callData,\n overrides,\n account,\n context,\n });\n}\n\nexport async function encodeInstallPluginUserOperation<\n TTransport extends Transport = Transport,\n TChain extends Chain | undefined = Chain | undefined,\n TAccount extends SmartContractAccount | undefined =\n | SmartContractAccount\n | undefined\n>(\n client: SmartAccountClient<TTransport, TChain, TAccount>,\n params: Omit<InstallPluginParams, \"overrides\" | \"account\" | \"context\">\n) {\n const pluginManifest = await client.readContract({\n abi: IPluginAbi,\n address: params.pluginAddress,\n functionName: \"pluginManifest\",\n });\n // use the manifest hash passed in or get it from the plugin\n const manifestHash: Hash =\n params.manifestHash ??\n keccak256(\n encodeFunctionResult({\n abi: IPluginAbi,\n functionName: \"pluginManifest\",\n result: pluginManifest,\n })\n );\n return encodeFunctionData({\n abi: IPluginManagerAbi,\n functionName: \"installPlugin\",\n args: [\n params.pluginAddress,\n manifestHash,\n params.pluginInitData ?? \"0x\",\n params.dependencies ?? [],\n ],\n });\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"extension.js","sourceRoot":"","sources":["../../../../../../src/msca/plugins/multi-owner/extension.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,oBAAoB,GAIrB,MAAM,cAAc,CAAC;AACtB,OAAO,EAAyD,MAAM,MAAM,CAAC;AAE7E,OAAO,EACL,gBAAgB,EAChB,uBAAuB,IAAI,wBAAwB,GAEpD,MAAM,aAAa,CAAC;AAuBrB,MAAM,CAAC,MAAM,uBAAuB,GAQK,CAOvC,MAA4C,EAC5C,EAAE,CAAC,CAAC;IACJ,GAAG,wBAAwB,CAAC,MAAM,CAAC;IACnC,KAAK,CAAC,UAAU,CACd,IAA+D;QAE/D,MAAM,OAAO,GAAG,IAAI,EAAE,OAAO,IAAI,MAAM,CAAC,OAAO,CAAC;QAChD,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,IAAI,oBAAoB,EAAE,CAAC;QACnC,CAAC;QAGD,MAAM,QAAQ,GAAG,gBAAgB,CAAC,WAAW,CAAC,MAAM,EAAE,IAAI,EAAE,aAAa,CAAC,CAAC;QAC3E,OAAO,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC;IACnD,CAAC;IAED,KAAK,CAAC,SAAS,CACb,IAC+B;QAE/B,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,IAAI,MAAM,CAAC,OAAO,CAAC;QAC/C,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,IAAI,oBAAoB,EAAE,CAAC;QACnC,CAAC;QAGD,MAAM,QAAQ,GAAG,gBAAgB,CAAC,WAAW,CAAC,MAAM,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;QAC1E,OAAO,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;IAClE,CAAC;CACF,CAAC,CAAC","sourcesContent":["import {\n AccountNotFoundError,\n type GetAccountParameter,\n type IsUndefined,\n type SmartContractAccount,\n} from \"@aa-sdk/core\";\nimport { type Address, type Chain, type Client, type Transport } from \"viem\";\nimport type { GetPluginAddressParameter } from \"../types.js\";\nimport {\n MultiOwnerPlugin,\n multiOwnerPluginActions as multiOwnerPluginActions_,\n type MultiOwnerPluginActions as MultiOwnerPluginActions_,\n} from \"./plugin.js\";\n\nexport type MultiOwnerPluginActions<\n TAccount extends SmartContractAccount | undefined =\n | SmartContractAccount\n | undefined\n> = MultiOwnerPluginActions_<TAccount, undefined> & {\n readOwners: (\n params: GetPluginAddressParameter & GetAccountParameter<TAccount>\n ) => Promise<ReadonlyArray<Address>>;\n\n isOwnerOf: (\n params: { address: Address } & GetPluginAddressParameter &\n GetAccountParameter<TAccount>\n ) => Promise<boolean>;\n} & (IsUndefined<TAccount> extends false\n ? {\n readOwners: (\n params?: GetPluginAddressParameter & GetAccountParameter<TAccount>\n ) => Promise<ReadonlyArray<Address>>;\n }\n : {});\n\nexport const multiOwnerPluginActions: <\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) => MultiOwnerPluginActions<TAccount> = <\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) => ({\n ...multiOwnerPluginActions_(client),\n async readOwners(\n args: GetPluginAddressParameter & GetAccountParameter<TAccount>\n ) {\n const account = args?.account ?? client.account;\n if (!account) {\n throw new AccountNotFoundError();\n }\n // TODO: check if the account actually has the plugin installed\n // either via account loupe or checking if the supports interface call passes on the account\n const contract = MultiOwnerPlugin.getContract(client, args?.pluginAddress);\n return contract.read.ownersOf([account.address]);\n },\n\n async isOwnerOf(\n args: { address: Address } & GetPluginAddressParameter &\n GetAccountParameter<TAccount>\n ) {\n const account = args.account ?? client.account;\n if (!account) {\n throw new AccountNotFoundError();\n }\n // TODO: check if the account actually has the plugin installed\n // either via account loupe or checking if the supports interface call passes on the account\n const contract = MultiOwnerPlugin.getContract(client, args.pluginAddress);\n return contract.read.isOwnerOf([account.address, args.address]);\n },\n});\n"]}
1
+ {"version":3,"file":"extension.js","sourceRoot":"","sources":["../../../../../../src/msca/plugins/multi-owner/extension.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,oBAAoB,GAIrB,MAAM,cAAc,CAAC;AACtB,OAAO,EAAyD,MAAM,MAAM,CAAC;AAE7E,OAAO,EACL,gBAAgB,EAChB,uBAAuB,IAAI,wBAAwB,GAEpD,MAAM,aAAa,CAAC;AAsCrB,MAAM,CAAC,MAAM,uBAAuB,GAQK,CAOvC,MAA4C,EAC5C,EAAE,CAAC,CAAC;IACJ,GAAG,wBAAwB,CAAC,MAAM,CAAC;IACnC,KAAK,CAAC,UAAU,CACd,IAA+D;QAE/D,MAAM,OAAO,GAAG,IAAI,EAAE,OAAO,IAAI,MAAM,CAAC,OAAO,CAAC;QAChD,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,IAAI,oBAAoB,EAAE,CAAC;QACnC,CAAC;QAGD,MAAM,QAAQ,GAAG,gBAAgB,CAAC,WAAW,CAAC,MAAM,EAAE,IAAI,EAAE,aAAa,CAAC,CAAC;QAC3E,OAAO,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC;IACnD,CAAC;IAED,KAAK,CAAC,SAAS,CACb,IAC+B;QAE/B,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,IAAI,MAAM,CAAC,OAAO,CAAC;QAC/C,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,IAAI,oBAAoB,EAAE,CAAC;QACnC,CAAC;QAGD,MAAM,QAAQ,GAAG,gBAAgB,CAAC,WAAW,CAAC,MAAM,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;QAC1E,OAAO,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;IAClE,CAAC;CACF,CAAC,CAAC","sourcesContent":["import {\n AccountNotFoundError,\n type GetAccountParameter,\n type IsUndefined,\n type SmartContractAccount,\n} from \"@aa-sdk/core\";\nimport { type Address, type Chain, type Client, type Transport } from \"viem\";\nimport type { GetPluginAddressParameter } from \"../types.js\";\nimport {\n MultiOwnerPlugin,\n multiOwnerPluginActions as multiOwnerPluginActions_,\n type MultiOwnerPluginActions as MultiOwnerPluginActions_,\n} from \"./plugin.js\";\n\nexport type MultiOwnerPluginActions<\n TAccount extends SmartContractAccount | undefined =\n | SmartContractAccount\n | undefined\n> = MultiOwnerPluginActions_<TAccount, undefined> & {\n readOwners: (\n params: GetPluginAddressParameter & GetAccountParameter<TAccount>\n ) => Promise<ReadonlyArray<Address>>;\n\n isOwnerOf: (\n params: { address: Address } & GetPluginAddressParameter &\n GetAccountParameter<TAccount>\n ) => Promise<boolean>;\n} & (IsUndefined<TAccount> extends false\n ? {\n readOwners: (\n params?: GetPluginAddressParameter & GetAccountParameter<TAccount>\n ) => Promise<ReadonlyArray<Address>>;\n }\n : {});\n\n/**\n * Creates actions for the MultiOwner plugin, including reading owners and checking ownership.\n * NOTE: this is already added to the client returned from createMultiOwnerModularAccountClient\n *\n * @example\n * ```ts\n * import { multiOwnerPluginActions } from \"@account-kit/smart-contracts\";\n * import { createSmartAccountClient } from \"@aa-sdk/core\";\n *\n * const client = createSmartAccountClient(...).extend(multiOwnerPluginActions);\n * ```\n *\n * @param {Client<TTransport, TChain, TAccount>} client the client instance containing the transport, chain, and account information\n * @returns {MultiOwnerPluginActions<TAccount>} an object containing the actions for the MultiOwner plugin, such as `readOwners` and `isOwnerOf`\n */\nexport const multiOwnerPluginActions: <\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) => MultiOwnerPluginActions<TAccount> = <\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) => ({\n ...multiOwnerPluginActions_(client),\n async readOwners(\n args: GetPluginAddressParameter & GetAccountParameter<TAccount>\n ) {\n const account = args?.account ?? client.account;\n if (!account) {\n throw new AccountNotFoundError();\n }\n // TODO: check if the account actually has the plugin installed\n // either via account loupe or checking if the supports interface call passes on the account\n const contract = MultiOwnerPlugin.getContract(client, args?.pluginAddress);\n return contract.read.ownersOf([account.address]);\n },\n\n async isOwnerOf(\n args: { address: Address } & GetPluginAddressParameter &\n GetAccountParameter<TAccount>\n ) {\n const account = args.account ?? client.account;\n if (!account) {\n throw new AccountNotFoundError();\n }\n // TODO: check if the account actually has the plugin installed\n // either via account loupe or checking if the supports interface call passes on the account\n const contract = MultiOwnerPlugin.getContract(client, args.pluginAddress);\n return contract.read.isOwnerOf([account.address, args.address]);\n },\n});\n"]}
@@ -1,3 +1,3 @@
1
1
  export type * from "./extension.js";
2
2
  export { multiOwnerPluginActions } from "./extension.js";
3
- export { MultiOwnerPluginAbi, MultiOwnerPluginExecutionFunctionAbi, } from "./plugin.js";
3
+ export { MultiOwnerPlugin, MultiOwnerPluginAbi, MultiOwnerPluginExecutionFunctionAbi, type InstallMultiOwnerPluginParams, } from "./plugin.js";
@@ -1,3 +1,3 @@
1
1
  export { multiOwnerPluginActions } from "./extension.js";
2
- export { MultiOwnerPluginAbi, MultiOwnerPluginExecutionFunctionAbi, } from "./plugin.js";
2
+ export { MultiOwnerPlugin, MultiOwnerPluginAbi, MultiOwnerPluginExecutionFunctionAbi, } from "./plugin.js";
3
3
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../src/msca/plugins/multi-owner/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAC;AACzD,OAAO,EACL,mBAAmB,EACnB,oCAAoC,GACrC,MAAM,aAAa,CAAC","sourcesContent":["export type * from \"./extension.js\";\nexport { multiOwnerPluginActions } from \"./extension.js\";\nexport {\n MultiOwnerPluginAbi,\n MultiOwnerPluginExecutionFunctionAbi,\n} from \"./plugin.js\";\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../src/msca/plugins/multi-owner/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAC;AAEzD,OAAO,EACL,gBAAgB,EAChB,mBAAmB,EACnB,oCAAoC,GAErC,MAAM,aAAa,CAAC","sourcesContent":["export type * from \"./extension.js\";\nexport { multiOwnerPluginActions } from \"./extension.js\";\n\nexport {\n MultiOwnerPlugin,\n MultiOwnerPluginAbi,\n MultiOwnerPluginExecutionFunctionAbi,\n type InstallMultiOwnerPluginParams,\n} from \"./plugin.js\";\n"]}
@@ -1,7 +1,7 @@
1
1
  import { AccountNotFoundError, IncompatibleClientError, isSmartAccountClient, isSmartAccountWithSigner, SmartAccountWithSignerRequiredError, } from "@aa-sdk/core";
2
2
  import {} from "viem";
3
- import { splitAggregatedSignature } from "../index.js";
4
3
  import {} from "../types.js";
4
+ import { splitAggregatedSignature } from "../utils/splitAggregatedSignature.js";
5
5
  export async function proposeUserOperation(client, { uo, account = client.account, overrides: overrides_, }) {
6
6
  const overrides = {
7
7
  maxFeePerGas: { multiplier: 3 },
@@ -1 +1 @@
1
- {"version":3,"file":"proposeUserOperation.js","sourceRoot":"","sources":["../../../../../../../src/msca/plugins/multisig/actions/proposeUserOperation.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,oBAAoB,EACpB,uBAAuB,EACvB,oBAAoB,EACpB,wBAAwB,EACxB,mCAAmC,GAKpC,MAAM,cAAc,CAAC;AACtB,OAAO,EAA2C,MAAM,MAAM,CAAC;AAC/D,OAAO,EAAE,wBAAwB,EAAE,MAAM,aAAa,CAAC;AACvD,OAAO,EAAmC,MAAM,aAAa,CAAC;AAE9D,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAQxC,MAA4C,EAC5C,EACE,EAAE,EACF,OAAO,GAAG,MAAM,CAAC,OAAO,EACxB,SAAS,EAAE,UAAU,GAC4B;IAGnD,MAAM,SAAS,GAAG;QAChB,YAAY,EAAE,EAAE,UAAU,EAAE,CAAC,EAAE;QAC/B,oBAAoB,EAAE,EAAE,UAAU,EAAE,CAAC,EAAE;QACvC,kBAAkB,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE;QACxC,GAAG,UAAU;KACgC,CAAC;IAEhD,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,IAAI,oBAAoB,EAAE,CAAC;IACnC,CAAC;IAED,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,EAAE,CAAC;QAClC,MAAM,IAAI,uBAAuB,CAC/B,oBAAoB,EACpB,sBAAsB,EACtB,MAAM,CACP,CAAC;IACJ,CAAC;IAED,IAAI,CAAC,wBAAwB,CAAC,OAAO,CAAC,EAAE,CAAC;QACvC,MAAM,IAAI,mCAAmC,EAAE,CAAC;IAClD,CAAC;IAED,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,kBAAkB,CAAC;QAC9C,OAAO;QACP,EAAE;QACF,SAAS;KACV,CAAC,CAAC;IAEH,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,iBAAiB,CAAC;QAC7C,QAAQ,EAAE,OAAO;QACjB,OAAO;QACP,OAAO,EAAE;YACP,mBAAmB,EAAE,YAAY;SAClC;KACF,CAAC,CAAC;IAEH,MAAM,eAAe,GAAG,MAAM,wBAAwB,CAAC;QACrD,OAAO;QACP,mBAAmB,EAAE,OAAO,CAAC,SAAS;QACtC,OAAO;QAEP,SAAS,EAAE,CAAC;KACb,CAAC,CAAC;IAEH,OAAO;QACL,OAAO;QACP,YAAY,EAAE,eAAe,CAAC,UAAU,CAAC,CAAC,CAAC;QAC3C,mBAAmB,EAAE,OAAO,CAAC,SAAS;KACvC,CAAC;AACJ,CAAC","sourcesContent":["import {\n AccountNotFoundError,\n IncompatibleClientError,\n isSmartAccountClient,\n isSmartAccountWithSigner,\n SmartAccountWithSignerRequiredError,\n type GetEntryPointFromAccount,\n type SendUserOperationParameters,\n type SmartContractAccount,\n type UserOperationOverrides,\n} from \"@aa-sdk/core\";\nimport { type Chain, type Client, type Transport } from \"viem\";\nimport { splitAggregatedSignature } from \"../index.js\";\nimport { type ProposeUserOperationResult } from \"../types.js\";\n\nexport async function proposeUserOperation<\n TTransport extends Transport = Transport,\n TChain extends Chain | undefined = Chain | undefined,\n TAccount extends SmartContractAccount | undefined =\n | SmartContractAccount\n | undefined,\n TEntryPointVersion extends GetEntryPointFromAccount<TAccount> = GetEntryPointFromAccount<TAccount>\n>(\n client: Client<TTransport, TChain, TAccount>,\n {\n uo,\n account = client.account,\n overrides: overrides_,\n }: SendUserOperationParameters<TAccount, undefined>\n): Promise<ProposeUserOperationResult> {\n // these overrides allow us to set a high max fee and PVG upper bound\n const overrides = {\n maxFeePerGas: { multiplier: 3 },\n maxPriorityFeePerGas: { multiplier: 2 },\n preVerificationGas: { multiplier: 1000 },\n ...overrides_,\n } as UserOperationOverrides<TEntryPointVersion>;\n\n if (!account) {\n throw new AccountNotFoundError();\n }\n\n if (!isSmartAccountClient(client)) {\n throw new IncompatibleClientError(\n \"SmartAccountClient\",\n \"proposeUserOperation\",\n client\n );\n }\n\n if (!isSmartAccountWithSigner(account)) {\n throw new SmartAccountWithSignerRequiredError();\n }\n\n const builtUo = await client.buildUserOperation({\n account,\n uo,\n overrides,\n });\n\n const request = await client.signUserOperation({\n uoStruct: builtUo,\n account,\n context: {\n userOpSignatureType: \"UPPERLIMIT\",\n },\n });\n\n const splitSignatures = await splitAggregatedSignature({\n request,\n aggregatedSignature: request.signature,\n account,\n // split works on the assumption that we have t - 1 signatures\n threshold: 2,\n });\n\n return {\n request,\n signatureObj: splitSignatures.signatures[0],\n aggregatedSignature: request.signature,\n };\n}\n"]}
1
+ {"version":3,"file":"proposeUserOperation.js","sourceRoot":"","sources":["../../../../../../../src/msca/plugins/multisig/actions/proposeUserOperation.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,oBAAoB,EACpB,uBAAuB,EACvB,oBAAoB,EACpB,wBAAwB,EACxB,mCAAmC,GAKpC,MAAM,cAAc,CAAC;AACtB,OAAO,EAA2C,MAAM,MAAM,CAAC;AAC/D,OAAO,EAAmC,MAAM,aAAa,CAAC;AAC9D,OAAO,EAAE,wBAAwB,EAAE,MAAM,sCAAsC,CAAC;AAEhF,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAQxC,MAA4C,EAC5C,EACE,EAAE,EACF,OAAO,GAAG,MAAM,CAAC,OAAO,EACxB,SAAS,EAAE,UAAU,GAC4B;IAGnD,MAAM,SAAS,GAAG;QAChB,YAAY,EAAE,EAAE,UAAU,EAAE,CAAC,EAAE;QAC/B,oBAAoB,EAAE,EAAE,UAAU,EAAE,CAAC,EAAE;QACvC,kBAAkB,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE;QACxC,GAAG,UAAU;KACgC,CAAC;IAEhD,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,IAAI,oBAAoB,EAAE,CAAC;IACnC,CAAC;IAED,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,EAAE,CAAC;QAClC,MAAM,IAAI,uBAAuB,CAC/B,oBAAoB,EACpB,sBAAsB,EACtB,MAAM,CACP,CAAC;IACJ,CAAC;IAED,IAAI,CAAC,wBAAwB,CAAC,OAAO,CAAC,EAAE,CAAC;QACvC,MAAM,IAAI,mCAAmC,EAAE,CAAC;IAClD,CAAC;IAED,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,kBAAkB,CAAC;QAC9C,OAAO;QACP,EAAE;QACF,SAAS;KACV,CAAC,CAAC;IAEH,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,iBAAiB,CAAC;QAC7C,QAAQ,EAAE,OAAO;QACjB,OAAO;QACP,OAAO,EAAE;YACP,mBAAmB,EAAE,YAAY;SAClC;KACF,CAAC,CAAC;IAEH,MAAM,eAAe,GAAG,MAAM,wBAAwB,CAAC;QACrD,OAAO;QACP,mBAAmB,EAAE,OAAO,CAAC,SAAS;QACtC,OAAO;QAEP,SAAS,EAAE,CAAC;KACb,CAAC,CAAC;IAEH,OAAO;QACL,OAAO;QACP,YAAY,EAAE,eAAe,CAAC,UAAU,CAAC,CAAC,CAAC;QAC3C,mBAAmB,EAAE,OAAO,CAAC,SAAS;KACvC,CAAC;AACJ,CAAC","sourcesContent":["import {\n AccountNotFoundError,\n IncompatibleClientError,\n isSmartAccountClient,\n isSmartAccountWithSigner,\n SmartAccountWithSignerRequiredError,\n type GetEntryPointFromAccount,\n type SendUserOperationParameters,\n type SmartContractAccount,\n type UserOperationOverrides,\n} from \"@aa-sdk/core\";\nimport { type Chain, type Client, type Transport } from \"viem\";\nimport { type ProposeUserOperationResult } from \"../types.js\";\nimport { splitAggregatedSignature } from \"../utils/splitAggregatedSignature.js\";\n\nexport async function proposeUserOperation<\n TTransport extends Transport = Transport,\n TChain extends Chain | undefined = Chain | undefined,\n TAccount extends SmartContractAccount | undefined =\n | SmartContractAccount\n | undefined,\n TEntryPointVersion extends GetEntryPointFromAccount<TAccount> = GetEntryPointFromAccount<TAccount>\n>(\n client: Client<TTransport, TChain, TAccount>,\n {\n uo,\n account = client.account,\n overrides: overrides_,\n }: SendUserOperationParameters<TAccount, undefined>\n): Promise<ProposeUserOperationResult> {\n // these overrides allow us to set a high max fee and PVG upper bound\n const overrides = {\n maxFeePerGas: { multiplier: 3 },\n maxPriorityFeePerGas: { multiplier: 2 },\n preVerificationGas: { multiplier: 1000 },\n ...overrides_,\n } as UserOperationOverrides<TEntryPointVersion>;\n\n if (!account) {\n throw new AccountNotFoundError();\n }\n\n if (!isSmartAccountClient(client)) {\n throw new IncompatibleClientError(\n \"SmartAccountClient\",\n \"proposeUserOperation\",\n client\n );\n }\n\n if (!isSmartAccountWithSigner(account)) {\n throw new SmartAccountWithSignerRequiredError();\n }\n\n const builtUo = await client.buildUserOperation({\n account,\n uo,\n overrides,\n });\n\n const request = await client.signUserOperation({\n uoStruct: builtUo,\n account,\n context: {\n userOpSignatureType: \"UPPERLIMIT\",\n },\n });\n\n const splitSignatures = await splitAggregatedSignature({\n request,\n aggregatedSignature: request.signature,\n account,\n // split works on the assumption that we have t - 1 signatures\n threshold: 2,\n });\n\n return {\n request,\n signatureObj: splitSignatures.signatures[0],\n aggregatedSignature: request.signature,\n };\n}\n"]}
@@ -1,8 +1,8 @@
1
1
  import { AccountNotFoundError, IncompatibleClientError, SmartAccountWithSignerRequiredError, isSmartAccountClient, isSmartAccountWithSigner, } from "@aa-sdk/core";
2
2
  import {} from "viem";
3
3
  import { MultisigMissingSignatureError } from "../../../errors.js";
4
- import { combineSignatures, splitAggregatedSignature } from "../index.js";
5
4
  import {} from "../types.js";
5
+ import { combineSignatures, splitAggregatedSignature } from "../utils/index.js";
6
6
  export async function signMultisigUserOperation(client, params) {
7
7
  const { account = client.account, signatures, userOperationRequest } = params;
8
8
  if (!account) {
@@ -1 +1 @@
1
- {"version":3,"file":"signMultisigUserOperation.js","sourceRoot":"","sources":["../../../../../../../src/msca/plugins/multisig/actions/signMultisigUserOperation.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,oBAAoB,EACpB,uBAAuB,EACvB,mCAAmC,EACnC,oBAAoB,EACpB,wBAAwB,GAEzB,MAAM,cAAc,CAAC;AACtB,OAAO,EAA2C,MAAM,MAAM,CAAC;AAC/D,OAAO,EAAE,6BAA6B,EAAE,MAAM,oBAAoB,CAAC;AACnE,OAAO,EAAE,iBAAiB,EAAE,wBAAwB,EAAE,MAAM,aAAa,CAAC;AAC1E,OAAO,EAGN,MAAM,aAAa,CAAC;AAErB,MAAM,CAAC,KAAK,UAAU,yBAAyB,CAO7C,MAA4C,EAC5C,MAAiD;IAEjD,MAAM,EAAE,OAAO,GAAG,MAAM,CAAC,OAAO,EAAE,UAAU,EAAE,oBAAoB,EAAE,GAAG,MAAM,CAAC;IAE9E,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,IAAI,oBAAoB,EAAE,CAAC;IACnC,CAAC;IAED,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,EAAE,CAAC;QAClC,MAAM,IAAI,uBAAuB,CAC/B,oBAAoB,EACpB,2BAA2B,EAC3B,MAAM,CACP,CAAC;IACJ,CAAC;IAED,IAAI,CAAC,wBAAwB,CAAC,OAAO,CAAC,EAAE,CAAC;QACvC,MAAM,IAAI,mCAAmC,EAAE,CAAC;IAClD,CAAC;IAED,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC;QACvB,MAAM,IAAI,6BAA6B,EAAE,CAAC;IAC5C,CAAC;IAED,MAAM,aAAa,GAAG,MAAM,OAAO,CAAC,SAAS,EAAE,CAAC,UAAU,EAAE,CAAC;IAE7D,MAAM,aAAa,GAAG,MAAM,MAAM,CAAC,iBAAiB,CAAC;QACnD,OAAO;QACP,QAAQ,EAAE,oBAAoB;QAC9B,OAAO,EAAE;YACP,mBAAmB,EAAE,iBAAiB,CAAC;gBACrC,UAAU;gBACV,sBAAsB,EAAE,oBAAoB,CAAC,YAAY;gBACzD,8BAA8B,EAC5B,oBAAoB,CAAC,oBAAoB;gBAC3C,aAAa,EAAE,oBAAoB,CAAC,kBAAkB;gBACtD,cAAc,EAAE,KAAK;aACtB,CAAC;YACF,UAAU;YACV,mBAAmB,EAAE,YAAY;SAClC;KACF,CAAC,CAAC;IAEH,MAAM,eAAe,GAAG,MAAM,wBAAwB,CAAC;QACrD,OAAO;QACP,OAAO,EAAE,aAAa;QACtB,mBAAmB,EAAE,aAAa,CAAC,SAAS;QAG5C,SAAS,EAAE,UAAU,CAAC,MAAM,GAAG,CAAC;KACjC,CAAC,CAAC;IAEH,MAAM,YAAY,GAAG,eAAe,CAAC,UAAU,CAAC,IAAI,CAClD,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,aAAa,CAClC,CAAC;IAEF,IAAI,CAAC,YAAY,EAAE,CAAC;QAElB,MAAM,IAAI,KAAK,CACb,gGAAgG,CACjG,CAAC;IACJ,CAAC;IAED,OAAO;QACL,YAAY;QACZ,SAAS,EAAE,YAAY,CAAC,SAAS;QACjC,mBAAmB,EAAE,aAAa,CAAC,SAAS;KAC7C,CAAC;AACJ,CAAC","sourcesContent":["import {\n AccountNotFoundError,\n IncompatibleClientError,\n SmartAccountWithSignerRequiredError,\n isSmartAccountClient,\n isSmartAccountWithSigner,\n type SmartContractAccount,\n} from \"@aa-sdk/core\";\nimport { type Chain, type Client, type Transport } from \"viem\";\nimport { MultisigMissingSignatureError } from \"../../../errors.js\";\nimport { combineSignatures, splitAggregatedSignature } from \"../index.js\";\nimport {\n type SignMultisigUserOperationParams,\n type SignMultisigUserOperationResult,\n} from \"../types.js\";\n\nexport async function signMultisigUserOperation<\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 params: SignMultisigUserOperationParams<TAccount>\n): Promise<SignMultisigUserOperationResult> {\n const { account = client.account, signatures, userOperationRequest } = params;\n\n if (!account) {\n throw new AccountNotFoundError();\n }\n\n if (!isSmartAccountClient(client)) {\n throw new IncompatibleClientError(\n \"SmartAccountClient\",\n \"signMultisigUserOperation\",\n client\n );\n }\n\n if (!isSmartAccountWithSigner(account)) {\n throw new SmartAccountWithSignerRequiredError();\n }\n\n if (!signatures.length) {\n throw new MultisigMissingSignatureError();\n }\n\n const signerAddress = await account.getSigner().getAddress();\n\n const signedRequest = await client.signUserOperation({\n account,\n uoStruct: userOperationRequest,\n context: {\n aggregatedSignature: combineSignatures({\n signatures,\n upperLimitMaxFeePerGas: userOperationRequest.maxFeePerGas,\n upperLimitMaxPriorityFeePerGas:\n userOperationRequest.maxPriorityFeePerGas,\n upperLimitPvg: userOperationRequest.preVerificationGas,\n usingMaxValues: false,\n }),\n signatures,\n userOpSignatureType: \"UPPERLIMIT\",\n },\n });\n\n const splitSignatures = await splitAggregatedSignature({\n account,\n request: signedRequest,\n aggregatedSignature: signedRequest.signature,\n // split works on the assumption that we have t - 1 signatures\n // we have signatures.length + 1 signatures now, so we need sl + 1 + 1\n threshold: signatures.length + 2,\n });\n\n const signatureObj = splitSignatures.signatures.find(\n (x) => x.signer === signerAddress\n );\n\n if (!signatureObj) {\n // TODO: strongly type this\n throw new Error(\n \"INTERNAL ERROR: signature not found in split signatures, this is an internal bug please report\"\n );\n }\n\n return {\n signatureObj,\n signature: signatureObj.signature,\n aggregatedSignature: signedRequest.signature,\n };\n}\n"]}
1
+ {"version":3,"file":"signMultisigUserOperation.js","sourceRoot":"","sources":["../../../../../../../src/msca/plugins/multisig/actions/signMultisigUserOperation.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,oBAAoB,EACpB,uBAAuB,EACvB,mCAAmC,EACnC,oBAAoB,EACpB,wBAAwB,GAEzB,MAAM,cAAc,CAAC;AACtB,OAAO,EAA2C,MAAM,MAAM,CAAC;AAC/D,OAAO,EAAE,6BAA6B,EAAE,MAAM,oBAAoB,CAAC;AACnE,OAAO,EAGN,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,iBAAiB,EAAE,wBAAwB,EAAE,MAAM,mBAAmB,CAAC;AAEhF,MAAM,CAAC,KAAK,UAAU,yBAAyB,CAO7C,MAA4C,EAC5C,MAAiD;IAEjD,MAAM,EAAE,OAAO,GAAG,MAAM,CAAC,OAAO,EAAE,UAAU,EAAE,oBAAoB,EAAE,GAAG,MAAM,CAAC;IAE9E,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,IAAI,oBAAoB,EAAE,CAAC;IACnC,CAAC;IAED,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,EAAE,CAAC;QAClC,MAAM,IAAI,uBAAuB,CAC/B,oBAAoB,EACpB,2BAA2B,EAC3B,MAAM,CACP,CAAC;IACJ,CAAC;IAED,IAAI,CAAC,wBAAwB,CAAC,OAAO,CAAC,EAAE,CAAC;QACvC,MAAM,IAAI,mCAAmC,EAAE,CAAC;IAClD,CAAC;IAED,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC;QACvB,MAAM,IAAI,6BAA6B,EAAE,CAAC;IAC5C,CAAC;IAED,MAAM,aAAa,GAAG,MAAM,OAAO,CAAC,SAAS,EAAE,CAAC,UAAU,EAAE,CAAC;IAE7D,MAAM,aAAa,GAAG,MAAM,MAAM,CAAC,iBAAiB,CAAC;QACnD,OAAO;QACP,QAAQ,EAAE,oBAAoB;QAC9B,OAAO,EAAE;YACP,mBAAmB,EAAE,iBAAiB,CAAC;gBACrC,UAAU;gBACV,sBAAsB,EAAE,oBAAoB,CAAC,YAAY;gBACzD,8BAA8B,EAC5B,oBAAoB,CAAC,oBAAoB;gBAC3C,aAAa,EAAE,oBAAoB,CAAC,kBAAkB;gBACtD,cAAc,EAAE,KAAK;aACtB,CAAC;YACF,UAAU;YACV,mBAAmB,EAAE,YAAY;SAClC;KACF,CAAC,CAAC;IAEH,MAAM,eAAe,GAAG,MAAM,wBAAwB,CAAC;QACrD,OAAO;QACP,OAAO,EAAE,aAAa;QACtB,mBAAmB,EAAE,aAAa,CAAC,SAAS;QAG5C,SAAS,EAAE,UAAU,CAAC,MAAM,GAAG,CAAC;KACjC,CAAC,CAAC;IAEH,MAAM,YAAY,GAAG,eAAe,CAAC,UAAU,CAAC,IAAI,CAClD,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,aAAa,CAClC,CAAC;IAEF,IAAI,CAAC,YAAY,EAAE,CAAC;QAElB,MAAM,IAAI,KAAK,CACb,gGAAgG,CACjG,CAAC;IACJ,CAAC;IAED,OAAO;QACL,YAAY;QACZ,SAAS,EAAE,YAAY,CAAC,SAAS;QACjC,mBAAmB,EAAE,aAAa,CAAC,SAAS;KAC7C,CAAC;AACJ,CAAC","sourcesContent":["import {\n AccountNotFoundError,\n IncompatibleClientError,\n SmartAccountWithSignerRequiredError,\n isSmartAccountClient,\n isSmartAccountWithSigner,\n type SmartContractAccount,\n} from \"@aa-sdk/core\";\nimport { type Chain, type Client, type Transport } from \"viem\";\nimport { MultisigMissingSignatureError } from \"../../../errors.js\";\nimport {\n type SignMultisigUserOperationParams,\n type SignMultisigUserOperationResult,\n} from \"../types.js\";\nimport { combineSignatures, splitAggregatedSignature } from \"../utils/index.js\";\n\nexport async function signMultisigUserOperation<\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 params: SignMultisigUserOperationParams<TAccount>\n): Promise<SignMultisigUserOperationResult> {\n const { account = client.account, signatures, userOperationRequest } = params;\n\n if (!account) {\n throw new AccountNotFoundError();\n }\n\n if (!isSmartAccountClient(client)) {\n throw new IncompatibleClientError(\n \"SmartAccountClient\",\n \"signMultisigUserOperation\",\n client\n );\n }\n\n if (!isSmartAccountWithSigner(account)) {\n throw new SmartAccountWithSignerRequiredError();\n }\n\n if (!signatures.length) {\n throw new MultisigMissingSignatureError();\n }\n\n const signerAddress = await account.getSigner().getAddress();\n\n const signedRequest = await client.signUserOperation({\n account,\n uoStruct: userOperationRequest,\n context: {\n aggregatedSignature: combineSignatures({\n signatures,\n upperLimitMaxFeePerGas: userOperationRequest.maxFeePerGas,\n upperLimitMaxPriorityFeePerGas:\n userOperationRequest.maxPriorityFeePerGas,\n upperLimitPvg: userOperationRequest.preVerificationGas,\n usingMaxValues: false,\n }),\n signatures,\n userOpSignatureType: \"UPPERLIMIT\",\n },\n });\n\n const splitSignatures = await splitAggregatedSignature({\n account,\n request: signedRequest,\n aggregatedSignature: signedRequest.signature,\n // split works on the assumption that we have t - 1 signatures\n // we have signatures.length + 1 signatures now, so we need sl + 1 + 1\n threshold: signatures.length + 2,\n });\n\n const signatureObj = splitSignatures.signatures.find(\n (x) => x.signer === signerAddress\n );\n\n if (!signatureObj) {\n // TODO: strongly type this\n throw new Error(\n \"INTERNAL ERROR: signature not found in split signatures, this is an internal bug please report\"\n );\n }\n\n return {\n signatureObj,\n signature: signatureObj.signature,\n aggregatedSignature: signedRequest.signature,\n };\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"extension.js","sourceRoot":"","sources":["../../../../../../src/msca/plugins/multisig/extension.ts"],"names":[],"mappings":"AAAA,OAAO,EAMN,MAAM,cAAc,CAAC;AACtB,OAAO,EAAyD,MAAM,MAAM,CAAC;AAE7E,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACnD,OAAO,EAAE,oBAAoB,EAAE,MAAM,mCAAmC,CAAC;AACzE,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACrD,OAAO,EAAE,yBAAyB,EAAE,MAAM,wCAAwC,CAAC;AACnF,OAAO,EACL,qBAAqB,IAAI,sBAAsB,GAEhD,MAAM,aAAa,CAAC;AACrB,OAAO,EAKN,MAAM,YAAY,CAAC;AAqCpB,MAAM,CAAC,MAAM,qBAAqB,GAQK,CAOrC,MAA4C,EAC5C,EAAE,CAAC,CAAC;IACJ,GAAG,sBAAsB,CAAC,MAAM,CAAC;IACjC,UAAU,EAAE,CACV,IAA+D,EAC/D,EAAE,CAAC,UAAU,CAAC,MAAM,EAAE,IAAI,CAAC;IAE7B,SAAS,EAAE,CACT,IAC+B,EAC/B,EAAE,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,CAAC;IAE5B,YAAY,EAAE,CACZ,IAA+D,EAC/D,EAAE,CAAC,YAAY,CAAC,MAAM,EAAE,IAAI,CAAC;IAE/B,oBAAoB,EAAE,CACpB,IAAsD,EACtD,EAAE,CAAC,oBAAoB,CAAC,MAAM,EAAE,IAAI,CAAC;IAEvC,yBAAyB,EAAE,CACzB,MAAiD,EACP,EAAE,CAC5C,yBAAyB,CAAC,MAAM,EAAE,MAAM,CAAC;CAC5C,CAAC,CAAC","sourcesContent":["import {\n type GetAccountParameter,\n type GetEntryPointFromAccount,\n type IsUndefined,\n type SendUserOperationParameters,\n type SmartContractAccount,\n} from \"@aa-sdk/core\";\nimport { type Address, type Chain, type Client, type Transport } from \"viem\";\nimport type { GetPluginAddressParameter } from \"../types.js\";\nimport { getThreshold } from \"./actions/getThreshold.js\";\nimport { isOwnerOf } from \"./actions/isOwnerOf.js\";\nimport { proposeUserOperation } from \"./actions/proposeUserOperation.js\";\nimport { readOwners } from \"./actions/readOwners.js\";\nimport { signMultisigUserOperation } from \"./actions/signMultisigUserOperation.js\";\nimport {\n multisigPluginActions as multisigPluginActions_,\n type MultisigPluginActions as MultisigPluginActions_,\n} from \"./plugin.js\";\nimport {\n type MultisigUserOperationContext,\n type ProposeUserOperationResult,\n type SignMultisigUserOperationParams,\n type SignMultisigUserOperationResult,\n} from \"./types.js\";\n\nexport type MultisigPluginActions<\n TAccount extends SmartContractAccount | undefined =\n | SmartContractAccount\n | undefined\n> = MultisigPluginActions_<TAccount, MultisigUserOperationContext> & {\n readOwners: (\n params: GetPluginAddressParameter & GetAccountParameter<TAccount>\n ) => Promise<ReadonlyArray<Address>>;\n\n isOwnerOf: (\n params: { address: Address } & GetPluginAddressParameter &\n GetAccountParameter<TAccount>\n ) => Promise<boolean>;\n\n getThreshold: (\n params: GetPluginAddressParameter & GetAccountParameter<TAccount>\n ) => Promise<bigint>;\n\n proposeUserOperation: (\n params: SendUserOperationParameters<TAccount, undefined>\n ) => Promise<\n ProposeUserOperationResult<TAccount, GetEntryPointFromAccount<TAccount>>\n >;\n\n signMultisigUserOperation: (\n params: SignMultisigUserOperationParams<TAccount>\n ) => Promise<SignMultisigUserOperationResult>;\n} & (IsUndefined<TAccount> extends false\n ? {\n readOwners: (\n params?: GetPluginAddressParameter & GetAccountParameter<TAccount>\n ) => Promise<ReadonlyArray<Address>>;\n }\n : {});\n\nexport const multisigPluginActions: <\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) => MultisigPluginActions<TAccount> = <\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) => ({\n ...multisigPluginActions_(client),\n readOwners: (\n args: GetPluginAddressParameter & GetAccountParameter<TAccount>\n ) => readOwners(client, args),\n\n isOwnerOf: (\n args: { address: Address } & GetPluginAddressParameter &\n GetAccountParameter<TAccount>\n ) => isOwnerOf(client, args),\n\n getThreshold: (\n args: GetPluginAddressParameter & GetAccountParameter<TAccount>\n ) => getThreshold(client, args),\n\n proposeUserOperation: (\n args: SendUserOperationParameters<TAccount, undefined>\n ) => proposeUserOperation(client, args),\n\n signMultisigUserOperation: (\n params: SignMultisigUserOperationParams<TAccount>\n ): Promise<SignMultisigUserOperationResult> =>\n signMultisigUserOperation(client, params),\n});\n"]}
1
+ {"version":3,"file":"extension.js","sourceRoot":"","sources":["../../../../../../src/msca/plugins/multisig/extension.ts"],"names":[],"mappings":"AAAA,OAAO,EAMN,MAAM,cAAc,CAAC;AACtB,OAAO,EAAyD,MAAM,MAAM,CAAC;AAE7E,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACnD,OAAO,EAAE,oBAAoB,EAAE,MAAM,mCAAmC,CAAC;AACzE,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACrD,OAAO,EAAE,yBAAyB,EAAE,MAAM,wCAAwC,CAAC;AACnF,OAAO,EACL,qBAAqB,IAAI,sBAAsB,GAEhD,MAAM,aAAa,CAAC;AACrB,OAAO,EAKN,MAAM,YAAY,CAAC;AAkDpB,MAAM,CAAC,MAAM,qBAAqB,GAQK,CAOrC,MAA4C,EAC5C,EAAE,CAAC,CAAC;IACJ,GAAG,sBAAsB,CAAC,MAAM,CAAC;IACjC,UAAU,EAAE,CACV,IAA+D,EAC/D,EAAE,CAAC,UAAU,CAAC,MAAM,EAAE,IAAI,CAAC;IAE7B,SAAS,EAAE,CACT,IAC+B,EAC/B,EAAE,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,CAAC;IAE5B,YAAY,EAAE,CACZ,IAA+D,EAC/D,EAAE,CAAC,YAAY,CAAC,MAAM,EAAE,IAAI,CAAC;IAE/B,oBAAoB,EAAE,CACpB,IAAsD,EACtD,EAAE,CAAC,oBAAoB,CAAC,MAAM,EAAE,IAAI,CAAC;IAEvC,yBAAyB,EAAE,CACzB,MAAiD,EACP,EAAE,CAC5C,yBAAyB,CAAC,MAAM,EAAE,MAAM,CAAC;CAC5C,CAAC,CAAC","sourcesContent":["import {\n type GetAccountParameter,\n type GetEntryPointFromAccount,\n type IsUndefined,\n type SendUserOperationParameters,\n type SmartContractAccount,\n} from \"@aa-sdk/core\";\nimport { type Address, type Chain, type Client, type Transport } from \"viem\";\nimport type { GetPluginAddressParameter } from \"../types.js\";\nimport { getThreshold } from \"./actions/getThreshold.js\";\nimport { isOwnerOf } from \"./actions/isOwnerOf.js\";\nimport { proposeUserOperation } from \"./actions/proposeUserOperation.js\";\nimport { readOwners } from \"./actions/readOwners.js\";\nimport { signMultisigUserOperation } from \"./actions/signMultisigUserOperation.js\";\nimport {\n multisigPluginActions as multisigPluginActions_,\n type MultisigPluginActions as MultisigPluginActions_,\n} from \"./plugin.js\";\nimport {\n type MultisigUserOperationContext,\n type ProposeUserOperationResult,\n type SignMultisigUserOperationParams,\n type SignMultisigUserOperationResult,\n} from \"./types.js\";\n\nexport type MultisigPluginActions<\n TAccount extends SmartContractAccount | undefined =\n | SmartContractAccount\n | undefined\n> = MultisigPluginActions_<TAccount, MultisigUserOperationContext> & {\n readOwners: (\n params: GetPluginAddressParameter & GetAccountParameter<TAccount>\n ) => Promise<ReadonlyArray<Address>>;\n\n isOwnerOf: (\n params: { address: Address } & GetPluginAddressParameter &\n GetAccountParameter<TAccount>\n ) => Promise<boolean>;\n\n getThreshold: (\n params: GetPluginAddressParameter & GetAccountParameter<TAccount>\n ) => Promise<bigint>;\n\n proposeUserOperation: (\n params: SendUserOperationParameters<TAccount, undefined>\n ) => Promise<\n ProposeUserOperationResult<TAccount, GetEntryPointFromAccount<TAccount>>\n >;\n\n signMultisigUserOperation: (\n params: SignMultisigUserOperationParams<TAccount>\n ) => Promise<SignMultisigUserOperationResult>;\n} & (IsUndefined<TAccount> extends false\n ? {\n readOwners: (\n params?: GetPluginAddressParameter & GetAccountParameter<TAccount>\n ) => Promise<ReadonlyArray<Address>>;\n }\n : {});\n\n/**\n * Provides actions for managing a multisig plugin within the specified client, including reading owners, checking ownership, getting the threshold, proposing user operations, and signing multisig user operations.\n *\n * @example\n * ```ts\n * import { createModularAccountAlchemyClient, multisigPluginActions } from \"@account-kit/smart-contracts\";\n *\n * const client = createModularAccountAlchemyClient(...).extend(multisigPluginActions);\n * ```\n *\n * @param {Client<TTransport, TChain, TAccount>} client The client instance configured with transport, chain, and account information\n * @returns {MultisigPluginActions<TAccount>} An object containing methods to perform actions related to the multisig plugin\n */\nexport const multisigPluginActions: <\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) => MultisigPluginActions<TAccount> = <\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) => ({\n ...multisigPluginActions_(client),\n readOwners: (\n args: GetPluginAddressParameter & GetAccountParameter<TAccount>\n ) => readOwners(client, args),\n\n isOwnerOf: (\n args: { address: Address } & GetPluginAddressParameter &\n GetAccountParameter<TAccount>\n ) => isOwnerOf(client, args),\n\n getThreshold: (\n args: GetPluginAddressParameter & GetAccountParameter<TAccount>\n ) => getThreshold(client, args),\n\n proposeUserOperation: (\n args: SendUserOperationParameters<TAccount, undefined>\n ) => proposeUserOperation(client, args),\n\n signMultisigUserOperation: (\n params: SignMultisigUserOperationParams<TAccount>\n ): Promise<SignMultisigUserOperationResult> =>\n signMultisigUserOperation(client, params),\n});\n"]}
@@ -1,12 +1,5 @@
1
- export { getThreshold } from "./actions/getThreshold.js";
2
- export { isOwnerOf } from "./actions/isOwnerOf.js";
3
- export { proposeUserOperation } from "./actions/proposeUserOperation.js";
4
- export { readOwners } from "./actions/readOwners.js";
5
- export { signMultisigUserOperation } from "./actions/signMultisigUserOperation.js";
6
1
  export type * from "./extension.js";
7
2
  export { multisigPluginActions } from "./extension.js";
8
3
  export { multisigSignatureMiddleware } from "./middleware.js";
9
- export { MultisigPlugin, MultisigPluginAbi, MultisigPluginExecutionFunctionAbi, } from "./plugin.js";
4
+ export { MultisigPlugin, MultisigPluginAbi, MultisigPluginExecutionFunctionAbi, type InstallMultisigPluginParams, } from "./plugin.js";
10
5
  export type * from "./types.js";
11
- export { type SignerType } from "./types.js";
12
- export { combineSignatures, formatSignatures, getSignerType, splitAggregatedSignature, } from "./utils/index.js";
@@ -1,11 +1,4 @@
1
- export { getThreshold } from "./actions/getThreshold.js";
2
- export { isOwnerOf } from "./actions/isOwnerOf.js";
3
- export { proposeUserOperation } from "./actions/proposeUserOperation.js";
4
- export { readOwners } from "./actions/readOwners.js";
5
- export { signMultisigUserOperation } from "./actions/signMultisigUserOperation.js";
6
1
  export { multisigPluginActions } from "./extension.js";
7
2
  export { multisigSignatureMiddleware } from "./middleware.js";
8
3
  export { MultisigPlugin, MultisigPluginAbi, MultisigPluginExecutionFunctionAbi, } from "./plugin.js";
9
- export {} from "./types.js";
10
- export { combineSignatures, formatSignatures, getSignerType, splitAggregatedSignature, } from "./utils/index.js";
11
4
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../src/msca/plugins/multisig/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACnD,OAAO,EAAE,oBAAoB,EAAE,MAAM,mCAAmC,CAAC;AACzE,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACrD,OAAO,EAAE,yBAAyB,EAAE,MAAM,wCAAwC,CAAC;AAEnF,OAAO,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AACvD,OAAO,EAAE,2BAA2B,EAAE,MAAM,iBAAiB,CAAC;AAC9D,OAAO,EACL,cAAc,EACd,iBAAiB,EACjB,kCAAkC,GACnC,MAAM,aAAa,CAAC;AAErB,OAAO,EAAmB,MAAM,YAAY,CAAC;AAC7C,OAAO,EACL,iBAAiB,EACjB,gBAAgB,EAChB,aAAa,EACb,wBAAwB,GACzB,MAAM,kBAAkB,CAAC","sourcesContent":["export { getThreshold } from \"./actions/getThreshold.js\";\nexport { isOwnerOf } from \"./actions/isOwnerOf.js\";\nexport { proposeUserOperation } from \"./actions/proposeUserOperation.js\";\nexport { readOwners } from \"./actions/readOwners.js\";\nexport { signMultisigUserOperation } from \"./actions/signMultisigUserOperation.js\";\nexport type * from \"./extension.js\";\nexport { multisigPluginActions } from \"./extension.js\";\nexport { multisigSignatureMiddleware } from \"./middleware.js\";\nexport {\n MultisigPlugin,\n MultisigPluginAbi,\n MultisigPluginExecutionFunctionAbi,\n} from \"./plugin.js\";\nexport type * from \"./types.js\";\nexport { type SignerType } from \"./types.js\";\nexport {\n combineSignatures,\n formatSignatures,\n getSignerType,\n splitAggregatedSignature,\n} from \"./utils/index.js\";\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../src/msca/plugins/multisig/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AACvD,OAAO,EAAE,2BAA2B,EAAE,MAAM,iBAAiB,CAAC;AAC9D,OAAO,EACL,cAAc,EACd,iBAAiB,EACjB,kCAAkC,GAEnC,MAAM,aAAa,CAAC","sourcesContent":["export type * from \"./extension.js\";\nexport { multisigPluginActions } from \"./extension.js\";\nexport { multisigSignatureMiddleware } from \"./middleware.js\";\nexport {\n MultisigPlugin,\n MultisigPluginAbi,\n MultisigPluginExecutionFunctionAbi,\n type InstallMultisigPluginParams,\n} from \"./plugin.js\";\nexport type * from \"./types.js\";\n"]}
@@ -1,3 +1,3 @@
1
1
  import { type ClientMiddlewareFn } from "@aa-sdk/core";
2
- import { type MultisigUserOperationContext } from "./index.js";
2
+ import { type MultisigUserOperationContext } from "./types.js";
3
3
  export declare const multisigSignatureMiddleware: ClientMiddlewareFn<MultisigUserOperationContext>;
@@ -2,7 +2,8 @@ import { InvalidUserOperationError, SmartAccountWithSignerRequiredError, deepHex
2
2
  import {} from "viem";
3
3
  import { isMultisigModularAccount } from "../../account/multisigAccount.js";
4
4
  import { InvalidContextSignatureError, MultisigAccountExpectedError, } from "../../errors.js";
5
- import { combineSignatures, getSignerType, splitAggregatedSignature, } from "./index.js";
5
+ import {} from "./types.js";
6
+ import { combineSignatures, getSignerType, splitAggregatedSignature, } from "./utils/index.js";
6
7
  export const multisigSignatureMiddleware = async (struct, { account, client, context }) => {
7
8
  if (!context ||
8
9
  (context.userOpSignatureType === "ACTUAL" &&
@@ -1 +1 @@
1
- {"version":3,"file":"middleware.js","sourceRoot":"","sources":["../../../../../../src/msca/plugins/multisig/middleware.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n InvalidUserOperationError,\n SmartAccountWithSignerRequiredError,\n deepHexlify,\n isSmartAccountWithSigner,\n isValidRequest,\n resolveProperties,\n type ClientMiddlewareFn,\n type UserOperationRequest_v6,\n type UserOperationRequest_v7,\n} from \"@aa-sdk/core\";\nimport { type Hex } from \"viem\";\nimport { isMultisigModularAccount } from \"../../account/multisigAccount.js\";\nimport {\n InvalidContextSignatureError,\n MultisigAccountExpectedError,\n} from \"../../errors.js\";\nimport {\n combineSignatures,\n getSignerType,\n splitAggregatedSignature,\n type MultisigUserOperationContext,\n} from \"./index.js\";\n\n/**\n * A signer middleware to be used with Multisig Account Clients.\n * This middleware handles correctly aggregating signatures passed through\n * as context when sending UserOperations, proposing UserOperations, or adding signatures to a UserOperation.\n *\n * @param struct the user operation struct to be signed\n * @param param the parameters to be passed to the middleware\n * @param param.account the account to be used for signing\n * @param param.client the smart account client that will be used for RPC requests\n * @param param.context the context object containing the signatures to be aggregated {@link MultisigUserOperationContext}\n * @returns a Promise containing a UserOperation with an aggregated signature in the `signature` field\n */\nexport const multisigSignatureMiddleware: ClientMiddlewareFn<\n MultisigUserOperationContext\n> = async (struct, { account, client, context }) => {\n // if the signature is not present, this has to be UPPERLIMIT because it's likely a propose operation\n if (\n !context ||\n (context.userOpSignatureType === \"ACTUAL\" &&\n !context.signatures &&\n !context.aggregatedSignature)\n ) {\n throw new InvalidContextSignatureError();\n }\n\n if (!isSmartAccountWithSigner(account)) {\n throw new SmartAccountWithSignerRequiredError();\n }\n\n if (!isMultisigModularAccount(account)) {\n throw new MultisigAccountExpectedError();\n }\n\n const resolvedStruct = await resolveProperties(struct);\n\n const request = deepHexlify(resolvedStruct);\n if (!isValidRequest(request)) {\n throw new InvalidUserOperationError(resolvedStruct);\n }\n\n const signature = await account.signUserOperationHash(\n account.getEntryPoint().getUserOperationHash(request)\n );\n\n const signerType = await getSignerType({\n client,\n signature: signature,\n signer: account.getSigner(),\n });\n\n // then this is a propose operation\n if (\n context.userOpSignatureType === \"UPPERLIMIT\" &&\n context?.signatures?.length == null &&\n context?.aggregatedSignature == null\n ) {\n return {\n ...resolvedStruct,\n signature: combineSignatures({\n signatures: [\n {\n signature,\n signer: await account.getSigner().getAddress(),\n signerType,\n userOpSigType: context.userOpSignatureType,\n },\n ],\n upperLimitMaxFeePerGas: request.maxFeePerGas,\n upperLimitMaxPriorityFeePerGas: request.maxPriorityFeePerGas,\n upperLimitPvg: request.preVerificationGas,\n usingMaxValues: false,\n }),\n };\n }\n\n if (context.aggregatedSignature == null || context.signatures == null) {\n throw new InvalidContextSignatureError();\n }\n\n // otherwise this is a sign operation\n const {\n upperLimitPvg,\n upperLimitMaxFeePerGas,\n upperLimitMaxPriorityFeePerGas,\n } = await splitAggregatedSignature({\n aggregatedSignature: context.aggregatedSignature,\n threshold: context.signatures.length + 1,\n account,\n request,\n });\n\n const finalSignature = combineSignatures({\n signatures: context.signatures.concat({\n userOpSigType: context.userOpSignatureType,\n signerType,\n signature,\n signer: await account.getSigner().getAddress(),\n }),\n upperLimitPvg,\n upperLimitMaxFeePerGas,\n upperLimitMaxPriorityFeePerGas,\n usingMaxValues: isUsingMaxValues(request, {\n upperLimitPvg,\n upperLimitMaxFeePerGas,\n upperLimitMaxPriorityFeePerGas,\n }),\n });\n\n return {\n ...resolvedStruct,\n signature: finalSignature,\n };\n};\n\nconst isUsingMaxValues = (\n request: UserOperationRequest_v6 | UserOperationRequest_v7,\n upperLimits: {\n upperLimitPvg: Hex;\n upperLimitMaxFeePerGas: Hex;\n upperLimitMaxPriorityFeePerGas: Hex;\n }\n): boolean => {\n if (\n BigInt(request.preVerificationGas) !== BigInt(upperLimits.upperLimitPvg)\n ) {\n return false;\n }\n\n if (\n BigInt(request.maxFeePerGas) !== BigInt(upperLimits.upperLimitMaxFeePerGas)\n ) {\n return false;\n }\n\n if (\n BigInt(request.maxPriorityFeePerGas) !==\n BigInt(upperLimits.upperLimitMaxPriorityFeePerGas)\n ) {\n return false;\n }\n\n return true;\n};\n"]}
1
+ {"version":3,"file":"middleware.js","sourceRoot":"","sources":["../../../../../../src/msca/plugins/multisig/middleware.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,yBAAyB,EACzB,mCAAmC,EACnC,WAAW,EACX,wBAAwB,EACxB,cAAc,EACd,iBAAiB,GAIlB,MAAM,cAAc,CAAC;AACtB,OAAO,EAAY,MAAM,MAAM,CAAC;AAChC,OAAO,EAAE,wBAAwB,EAAE,MAAM,kCAAkC,CAAC;AAC5E,OAAO,EACL,4BAA4B,EAC5B,4BAA4B,GAC7B,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAqC,MAAM,YAAY,CAAC;AAC/D,OAAO,EACL,iBAAiB,EACjB,aAAa,EACb,wBAAwB,GACzB,MAAM,kBAAkB,CAAC;AAc1B,MAAM,CAAC,MAAM,2BAA2B,GAEpC,KAAK,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,EAAE;IAEjD,IACE,CAAC,OAAO;QACR,CAAC,OAAO,CAAC,mBAAmB,KAAK,QAAQ;YACvC,CAAC,OAAO,CAAC,UAAU;YACnB,CAAC,OAAO,CAAC,mBAAmB,CAAC,EAC/B,CAAC;QACD,MAAM,IAAI,4BAA4B,EAAE,CAAC;IAC3C,CAAC;IAED,IAAI,CAAC,wBAAwB,CAAC,OAAO,CAAC,EAAE,CAAC;QACvC,MAAM,IAAI,mCAAmC,EAAE,CAAC;IAClD,CAAC;IAED,IAAI,CAAC,wBAAwB,CAAC,OAAO,CAAC,EAAE,CAAC;QACvC,MAAM,IAAI,4BAA4B,EAAE,CAAC;IAC3C,CAAC;IAED,MAAM,cAAc,GAAG,MAAM,iBAAiB,CAAC,MAAM,CAAC,CAAC;IAEvD,MAAM,OAAO,GAAG,WAAW,CAAC,cAAc,CAAC,CAAC;IAC5C,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,EAAE,CAAC;QAC7B,MAAM,IAAI,yBAAyB,CAAC,cAAc,CAAC,CAAC;IACtD,CAAC;IAED,MAAM,SAAS,GAAG,MAAM,OAAO,CAAC,qBAAqB,CACnD,OAAO,CAAC,aAAa,EAAE,CAAC,oBAAoB,CAAC,OAAO,CAAC,CACtD,CAAC;IAEF,MAAM,UAAU,GAAG,MAAM,aAAa,CAAC;QACrC,MAAM;QACN,SAAS,EAAE,SAAS;QACpB,MAAM,EAAE,OAAO,CAAC,SAAS,EAAE;KAC5B,CAAC,CAAC;IAGH,IACE,OAAO,CAAC,mBAAmB,KAAK,YAAY;QAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,IAAI,IAAI;QACnC,OAAO,EAAE,mBAAmB,IAAI,IAAI,EACpC,CAAC;QACD,OAAO;YACL,GAAG,cAAc;YACjB,SAAS,EAAE,iBAAiB,CAAC;gBAC3B,UAAU,EAAE;oBACV;wBACE,SAAS;wBACT,MAAM,EAAE,MAAM,OAAO,CAAC,SAAS,EAAE,CAAC,UAAU,EAAE;wBAC9C,UAAU;wBACV,aAAa,EAAE,OAAO,CAAC,mBAAmB;qBAC3C;iBACF;gBACD,sBAAsB,EAAE,OAAO,CAAC,YAAY;gBAC5C,8BAA8B,EAAE,OAAO,CAAC,oBAAoB;gBAC5D,aAAa,EAAE,OAAO,CAAC,kBAAkB;gBACzC,cAAc,EAAE,KAAK;aACtB,CAAC;SACH,CAAC;IACJ,CAAC;IAED,IAAI,OAAO,CAAC,mBAAmB,IAAI,IAAI,IAAI,OAAO,CAAC,UAAU,IAAI,IAAI,EAAE,CAAC;QACtE,MAAM,IAAI,4BAA4B,EAAE,CAAC;IAC3C,CAAC;IAGD,MAAM,EACJ,aAAa,EACb,sBAAsB,EACtB,8BAA8B,GAC/B,GAAG,MAAM,wBAAwB,CAAC;QACjC,mBAAmB,EAAE,OAAO,CAAC,mBAAmB;QAChD,SAAS,EAAE,OAAO,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC;QACxC,OAAO;QACP,OAAO;KACR,CAAC,CAAC;IAEH,MAAM,cAAc,GAAG,iBAAiB,CAAC;QACvC,UAAU,EAAE,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC;YACpC,aAAa,EAAE,OAAO,CAAC,mBAAmB;YAC1C,UAAU;YACV,SAAS;YACT,MAAM,EAAE,MAAM,OAAO,CAAC,SAAS,EAAE,CAAC,UAAU,EAAE;SAC/C,CAAC;QACF,aAAa;QACb,sBAAsB;QACtB,8BAA8B;QAC9B,cAAc,EAAE,gBAAgB,CAAC,OAAO,EAAE;YACxC,aAAa;YACb,sBAAsB;YACtB,8BAA8B;SAC/B,CAAC;KACH,CAAC,CAAC;IAEH,OAAO;QACL,GAAG,cAAc;QACjB,SAAS,EAAE,cAAc;KAC1B,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,gBAAgB,GAAG,CACvB,OAA0D,EAC1D,WAIC,EACQ,EAAE;IACX,IACE,MAAM,CAAC,OAAO,CAAC,kBAAkB,CAAC,KAAK,MAAM,CAAC,WAAW,CAAC,aAAa,CAAC,EACxE,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IACE,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,KAAK,MAAM,CAAC,WAAW,CAAC,sBAAsB,CAAC,EAC3E,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IACE,MAAM,CAAC,OAAO,CAAC,oBAAoB,CAAC;QACpC,MAAM,CAAC,WAAW,CAAC,8BAA8B,CAAC,EAClD,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC,CAAC","sourcesContent":["import {\n InvalidUserOperationError,\n SmartAccountWithSignerRequiredError,\n deepHexlify,\n isSmartAccountWithSigner,\n isValidRequest,\n resolveProperties,\n type ClientMiddlewareFn,\n type UserOperationRequest_v6,\n type UserOperationRequest_v7,\n} from \"@aa-sdk/core\";\nimport { type Hex } from \"viem\";\nimport { isMultisigModularAccount } from \"../../account/multisigAccount.js\";\nimport {\n InvalidContextSignatureError,\n MultisigAccountExpectedError,\n} from \"../../errors.js\";\nimport { type MultisigUserOperationContext } from \"./types.js\";\nimport {\n combineSignatures,\n getSignerType,\n splitAggregatedSignature,\n} from \"./utils/index.js\";\n\n/**\n * A signer middleware to be used with Multisig Account Clients.\n * This middleware handles correctly aggregating signatures passed through\n * as context when sending UserOperations, proposing UserOperations, or adding signatures to a UserOperation.\n *\n * @param struct the user operation struct to be signed\n * @param param the parameters to be passed to the middleware\n * @param param.account the account to be used for signing\n * @param param.client the smart account client that will be used for RPC requests\n * @param param.context the context object containing the signatures to be aggregated {@link MultisigUserOperationContext}\n * @returns a Promise containing a UserOperation with an aggregated signature in the `signature` field\n */\nexport const multisigSignatureMiddleware: ClientMiddlewareFn<\n MultisigUserOperationContext\n> = async (struct, { account, client, context }) => {\n // if the signature is not present, this has to be UPPERLIMIT because it's likely a propose operation\n if (\n !context ||\n (context.userOpSignatureType === \"ACTUAL\" &&\n !context.signatures &&\n !context.aggregatedSignature)\n ) {\n throw new InvalidContextSignatureError();\n }\n\n if (!isSmartAccountWithSigner(account)) {\n throw new SmartAccountWithSignerRequiredError();\n }\n\n if (!isMultisigModularAccount(account)) {\n throw new MultisigAccountExpectedError();\n }\n\n const resolvedStruct = await resolveProperties(struct);\n\n const request = deepHexlify(resolvedStruct);\n if (!isValidRequest(request)) {\n throw new InvalidUserOperationError(resolvedStruct);\n }\n\n const signature = await account.signUserOperationHash(\n account.getEntryPoint().getUserOperationHash(request)\n );\n\n const signerType = await getSignerType({\n client,\n signature: signature,\n signer: account.getSigner(),\n });\n\n // then this is a propose operation\n if (\n context.userOpSignatureType === \"UPPERLIMIT\" &&\n context?.signatures?.length == null &&\n context?.aggregatedSignature == null\n ) {\n return {\n ...resolvedStruct,\n signature: combineSignatures({\n signatures: [\n {\n signature,\n signer: await account.getSigner().getAddress(),\n signerType,\n userOpSigType: context.userOpSignatureType,\n },\n ],\n upperLimitMaxFeePerGas: request.maxFeePerGas,\n upperLimitMaxPriorityFeePerGas: request.maxPriorityFeePerGas,\n upperLimitPvg: request.preVerificationGas,\n usingMaxValues: false,\n }),\n };\n }\n\n if (context.aggregatedSignature == null || context.signatures == null) {\n throw new InvalidContextSignatureError();\n }\n\n // otherwise this is a sign operation\n const {\n upperLimitPvg,\n upperLimitMaxFeePerGas,\n upperLimitMaxPriorityFeePerGas,\n } = await splitAggregatedSignature({\n aggregatedSignature: context.aggregatedSignature,\n threshold: context.signatures.length + 1,\n account,\n request,\n });\n\n const finalSignature = combineSignatures({\n signatures: context.signatures.concat({\n userOpSigType: context.userOpSignatureType,\n signerType,\n signature,\n signer: await account.getSigner().getAddress(),\n }),\n upperLimitPvg,\n upperLimitMaxFeePerGas,\n upperLimitMaxPriorityFeePerGas,\n usingMaxValues: isUsingMaxValues(request, {\n upperLimitPvg,\n upperLimitMaxFeePerGas,\n upperLimitMaxPriorityFeePerGas,\n }),\n });\n\n return {\n ...resolvedStruct,\n signature: finalSignature,\n };\n};\n\nconst isUsingMaxValues = (\n request: UserOperationRequest_v6 | UserOperationRequest_v7,\n upperLimits: {\n upperLimitPvg: Hex;\n upperLimitMaxFeePerGas: Hex;\n upperLimitMaxPriorityFeePerGas: Hex;\n }\n): boolean => {\n if (\n BigInt(request.preVerificationGas) !== BigInt(upperLimits.upperLimitPvg)\n ) {\n return false;\n }\n\n if (\n BigInt(request.maxFeePerGas) !== BigInt(upperLimits.upperLimitMaxFeePerGas)\n ) {\n return false;\n }\n\n if (\n BigInt(request.maxPriorityFeePerGas) !==\n BigInt(upperLimits.upperLimitMaxPriorityFeePerGas)\n ) {\n return false;\n }\n\n return true;\n};\n"]}
@@ -1,9 +1,10 @@
1
1
  import { type Hex } from "viem";
2
2
  import type { Signature } from "../types.js";
3
- export declare const combineSignatures: ({ signatures, upperLimitMaxFeePerGas, upperLimitMaxPriorityFeePerGas, upperLimitPvg, usingMaxValues, }: {
3
+ export type CombineSignaturesParams = {
4
4
  upperLimitPvg: Hex;
5
5
  upperLimitMaxFeePerGas: Hex;
6
6
  upperLimitMaxPriorityFeePerGas: Hex;
7
7
  signatures: Signature[];
8
8
  usingMaxValues: boolean;
9
- }) => `0x${string}`;
9
+ };
10
+ export declare function combineSignatures({ signatures, upperLimitMaxFeePerGas, upperLimitMaxPriorityFeePerGas, upperLimitPvg, usingMaxValues, }: CombineSignaturesParams): Hex;
@@ -1,11 +1,11 @@
1
1
  import { concat, pad } from "viem";
2
2
  import { formatSignatures } from "./formatSignatures.js";
3
- export const combineSignatures = ({ signatures, upperLimitMaxFeePerGas, upperLimitMaxPriorityFeePerGas, upperLimitPvg, usingMaxValues, }) => {
3
+ export function combineSignatures({ signatures, upperLimitMaxFeePerGas, upperLimitMaxPriorityFeePerGas, upperLimitPvg, usingMaxValues, }) {
4
4
  return concat([
5
5
  pad(upperLimitPvg),
6
6
  pad(upperLimitMaxFeePerGas),
7
7
  pad(upperLimitMaxPriorityFeePerGas),
8
8
  formatSignatures(signatures, usingMaxValues),
9
9
  ]);
10
- };
10
+ }
11
11
  //# sourceMappingURL=combineSignatures.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"combineSignatures.js","sourceRoot":"","sources":["../../../../../../../src/msca/plugins/multisig/utils/combineSignatures.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,MAAM,EAAE,GAAG,EAAE,MAAM,MAAM,CAAC;AAE7C,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAEzD,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,EAChC,UAAU,EACV,sBAAsB,EACtB,8BAA8B,EAC9B,aAAa,EACb,cAAc,GAOf,EAAE,EAAE;IACH,OAAO,MAAM,CAAC;QACZ,GAAG,CAAC,aAAa,CAAC;QAClB,GAAG,CAAC,sBAAsB,CAAC;QAC3B,GAAG,CAAC,8BAA8B,CAAC;QACnC,gBAAgB,CAAC,UAAU,EAAE,cAAc,CAAC;KAC7C,CAAC,CAAC;AACL,CAAC,CAAC","sourcesContent":["import { type Hex, concat, pad } from \"viem\";\nimport type { Signature } from \"../types.js\";\nimport { formatSignatures } from \"./formatSignatures.js\";\n\nexport const combineSignatures = ({\n signatures,\n upperLimitMaxFeePerGas,\n upperLimitMaxPriorityFeePerGas,\n upperLimitPvg,\n usingMaxValues,\n}: {\n upperLimitPvg: Hex;\n upperLimitMaxFeePerGas: Hex;\n upperLimitMaxPriorityFeePerGas: Hex;\n signatures: Signature[];\n usingMaxValues: boolean;\n}) => {\n return concat([\n pad(upperLimitPvg),\n pad(upperLimitMaxFeePerGas),\n pad(upperLimitMaxPriorityFeePerGas),\n formatSignatures(signatures, usingMaxValues),\n ]);\n};\n"]}
1
+ {"version":3,"file":"combineSignatures.js","sourceRoot":"","sources":["../../../../../../../src/msca/plugins/multisig/utils/combineSignatures.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,MAAM,EAAE,GAAG,EAAE,MAAM,MAAM,CAAC;AAE7C,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAmCzD,MAAM,UAAU,iBAAiB,CAAC,EAChC,UAAU,EACV,sBAAsB,EACtB,8BAA8B,EAC9B,aAAa,EACb,cAAc,GACU;IACxB,OAAO,MAAM,CAAC;QACZ,GAAG,CAAC,aAAa,CAAC;QAClB,GAAG,CAAC,sBAAsB,CAAC;QAC3B,GAAG,CAAC,8BAA8B,CAAC;QACnC,gBAAgB,CAAC,UAAU,EAAE,cAAc,CAAC;KAC7C,CAAC,CAAC;AACL,CAAC","sourcesContent":["import { type Hex, concat, pad } from \"viem\";\nimport type { Signature } from \"../types.js\";\nimport { formatSignatures } from \"./formatSignatures.js\";\n\nexport type CombineSignaturesParams = {\n upperLimitPvg: Hex;\n upperLimitMaxFeePerGas: Hex;\n upperLimitMaxPriorityFeePerGas: Hex;\n signatures: Signature[];\n usingMaxValues: boolean;\n};\n\n/**\n * Combines multiple signatures with provided upper limit values for gas fees and returns the concatenated result.\n *\n * @example\n * ```ts\n * import { combineSignatures } from \"@account-kit/smart-contracts\";\n *\n * const combinedSignature = combineSignatures({\n * // this is the upper limit pre-verification gas\n * upperLimitPvg: \"0x01\",\n * upperLimitMaxFeePerGas: \"0x02\",\n * upperLimitMaxPriorityFeePerGas: \"0x03\",\n * signatures: [{\n * signerType: \"EOA\",\n * userOpSigType: \"UPPERLIMIT\",\n * signer: `0x...`,\n * signature: `0x...`,\n * }]\n * usingMaxValues: false,\n * });\n * ```\n *\n * @param {CombineSignaturesParams} params The function parameters\n * @returns {Hex} The concatenated result of padding and formatting the provided values and signatures\n */\nexport function combineSignatures({\n signatures,\n upperLimitMaxFeePerGas,\n upperLimitMaxPriorityFeePerGas,\n upperLimitPvg,\n usingMaxValues,\n}: CombineSignaturesParams): Hex {\n return concat([\n pad(upperLimitPvg),\n pad(upperLimitMaxFeePerGas),\n pad(upperLimitMaxPriorityFeePerGas),\n formatSignatures(signatures, usingMaxValues),\n ]);\n}\n"]}
@@ -1,5 +1,5 @@
1
- import type { SmartContractAccount, SmartAccountSigner } from "@aa-sdk/core";
2
- import { type Transport, type Chain, type Client, type PublicRpcSchema, type PublicActions, type Hex } from "viem";
1
+ import type { SmartAccountSigner, SmartContractAccount } from "@aa-sdk/core";
2
+ import { type Chain, type Client, type Hex, type PublicActions, type PublicRpcSchema, type Transport } from "viem";
3
3
  import type { SignerType } from "../types";
4
4
  type GetSignerTypeParams<TTransport extends Transport = Transport, TChain extends Chain | undefined = Chain | undefined, TAccount extends SmartContractAccount | undefined = SmartContractAccount | undefined, TClient extends Client<TTransport, TChain, TAccount, PublicRpcSchema, PublicActions> = Client<TTransport, TChain, TAccount, PublicRpcSchema, PublicActions>> = {
5
5
  signer: SmartAccountSigner<any>;
@@ -1 +1 @@
1
- {"version":3,"file":"getSignerType.js","sourceRoot":"","sources":["../../../../../../../src/msca/plugins/multisig/utils/getSignerType.ts"],"names":[],"mappings":"AACA,OAAO,EAOL,IAAI,GACL,MAAM,MAAM,CAAC;AAsBd,MAAM,CAAC,MAAM,aAAa,GAAG,KAAK,EAGhC,EACA,MAAM,EACN,SAAS,EACT,MAAM,GACkC,EAAuB,EAAE;IACjE,MAAM,aAAa,GAAG,MAAM,MAAM,CAAC,UAAU,EAAE,CAAC;IAChD,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,WAAW,CAAC,EAAE,OAAO,EAAE,aAAa,EAAE,CAAC,CAAC;IAEtE,OAAO,CAAC,QAAQ,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE;QAC1D,CAAC,CAAC,KAAK;QACP,CAAC,CAAC,UAAU,CAAC;AACjB,CAAC,CAAC","sourcesContent":["import type { SmartContractAccount, SmartAccountSigner } from \"@aa-sdk/core\";\nimport {\n type Transport,\n type Chain,\n type Client,\n type PublicRpcSchema,\n type PublicActions,\n type Hex,\n size,\n} from \"viem\";\nimport type { SignerType } from \"../types\";\n\ntype GetSignerTypeParams<\n TTransport extends Transport = Transport,\n TChain extends Chain | undefined = Chain | undefined,\n TAccount extends SmartContractAccount | undefined =\n | SmartContractAccount\n | undefined,\n TClient extends Client<\n TTransport,\n TChain,\n TAccount,\n PublicRpcSchema,\n PublicActions\n > = Client<TTransport, TChain, TAccount, PublicRpcSchema, PublicActions>\n> = {\n signer: SmartAccountSigner<any>;\n signature: Hex;\n client: TClient;\n};\n\nexport const getSignerType = async <\n TTransport extends Transport = Transport,\n TChain extends Chain | undefined = Chain | undefined\n>({\n client,\n signature,\n signer,\n}: GetSignerTypeParams<TTransport, TChain>): Promise<SignerType> => {\n const signerAddress = await signer.getAddress();\n const byteCode = await client.getBytecode({ address: signerAddress });\n\n return (byteCode ?? \"0x\") === \"0x\" && size(signature) === 65\n ? \"EOA\"\n : \"CONTRACT\";\n};\n"]}
1
+ {"version":3,"file":"getSignerType.js","sourceRoot":"","sources":["../../../../../../../src/msca/plugins/multisig/utils/getSignerType.ts"],"names":[],"mappings":"AACA,OAAO,EAML,IAAI,GAEL,MAAM,MAAM,CAAC;AAyCd,MAAM,CAAC,MAAM,aAAa,GAAG,KAAK,EAGhC,EACA,MAAM,EACN,SAAS,EACT,MAAM,GACkC,EAAuB,EAAE;IACjE,MAAM,aAAa,GAAG,MAAM,MAAM,CAAC,UAAU,EAAE,CAAC;IAChD,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,WAAW,CAAC,EAAE,OAAO,EAAE,aAAa,EAAE,CAAC,CAAC;IAEtE,OAAO,CAAC,QAAQ,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE;QAC1D,CAAC,CAAC,KAAK;QACP,CAAC,CAAC,UAAU,CAAC;AACjB,CAAC,CAAC","sourcesContent":["import type { SmartAccountSigner, SmartContractAccount } from \"@aa-sdk/core\";\nimport {\n type Chain,\n type Client,\n type Hex,\n type PublicActions,\n type PublicRpcSchema,\n size,\n type Transport,\n} from \"viem\";\nimport type { SignerType } from \"../types\";\n\ntype GetSignerTypeParams<\n TTransport extends Transport = Transport,\n TChain extends Chain | undefined = Chain | undefined,\n TAccount extends SmartContractAccount | undefined =\n | SmartContractAccount\n | undefined,\n TClient extends Client<\n TTransport,\n TChain,\n TAccount,\n PublicRpcSchema,\n PublicActions\n > = Client<TTransport, TChain, TAccount, PublicRpcSchema, PublicActions>\n> = {\n signer: SmartAccountSigner<any>;\n signature: Hex;\n client: TClient;\n};\n\n/**\n * Determines the type of signer (Externally Owned Account (EOA) or CONTRACT) based on the provided client, signature, and signer.\n *\n * @example\n * ```ts\n * import { getSignerType } from \"@account-kit/smart-contracts\";\n * import { LocalAccountSigner } from \"@aa-sdk/core\";\n * import { createPublicClient, generatePrivateKey } from \"viem\";\n *\n * const signer = LocalAccountSigner.privateKeyToAccountSigner(generatePrivateKey());\n * const client = createPublicClient(...);\n * const signature = signer.signMessage(\"Hello World\");\n *\n * const signerType = await getSignerType({ client, signature, signer }); // EOA\n * ```\n *\n * @param {GetSignerTypeParams<TTransport, TChain>} params the parameters including the client, signature, and signer\n * @returns {Promise<SignerType>} A promise that resolves to the signer type, which is either \"EOA\" or \"CONTRACT\"\n */\nexport const getSignerType = async <\n TTransport extends Transport = Transport,\n TChain extends Chain | undefined = Chain | undefined\n>({\n client,\n signature,\n signer,\n}: GetSignerTypeParams<TTransport, TChain>): Promise<SignerType> => {\n const signerAddress = await signer.getAddress();\n const byteCode = await client.getBytecode({ address: signerAddress });\n\n return (byteCode ?? \"0x\") === \"0x\" && size(signature) === 65\n ? \"EOA\"\n : \"CONTRACT\";\n};\n"]}
@@ -1,4 +1,8 @@
1
+ export type * from "./combineSignatures.js";
1
2
  export { combineSignatures } from "./combineSignatures.js";
3
+ export type * from "./formatSignatures.js";
2
4
  export { formatSignatures } from "./formatSignatures.js";
5
+ export type * from "./getSignerType.js";
3
6
  export { getSignerType } from "./getSignerType.js";
7
+ export type * from "./splitAggregatedSignature.js";
4
8
  export { splitAggregatedSignature } from "./splitAggregatedSignature.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../../src/msca/plugins/multisig/utils/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC","sourcesContent":["export { combineSignatures } from \"./combineSignatures.js\";\nexport { formatSignatures } from \"./formatSignatures.js\";\nexport { getSignerType } from \"./getSignerType.js\";\nexport { splitAggregatedSignature } from \"./splitAggregatedSignature.js\";\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../../src/msca/plugins/multisig/utils/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAE3D,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAEzD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAEnD,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC","sourcesContent":["export type * from \"./combineSignatures.js\";\nexport { combineSignatures } from \"./combineSignatures.js\";\nexport type * from \"./formatSignatures.js\";\nexport { formatSignatures } from \"./formatSignatures.js\";\nexport type * from \"./getSignerType.js\";\nexport { getSignerType } from \"./getSignerType.js\";\nexport type * from \"./splitAggregatedSignature.js\";\nexport { splitAggregatedSignature } from \"./splitAggregatedSignature.js\";\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"extension.js","sourceRoot":"","sources":["../../../../../../src/msca/plugins/session-key/extension.ts"],"names":[],"mappings":"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","sourcesContent":["import type {\n GetEntryPointFromAccount,\n UserOperationOverridesParameter,\n} from \"@aa-sdk/core\";\nimport {\n AccountNotFoundError,\n isSmartAccountClient,\n type GetAccountParameter,\n type IsUndefined,\n type SendUserOperationResult,\n type SmartContractAccount,\n type UserOperationOverrides,\n} from \"@aa-sdk/core\";\nimport type { Address, Chain, Client, Hex, Transport } from \"viem\";\nimport type { GetPluginAddressParameter } from \"../types.js\";\nimport {\n SessionKeyPlugin,\n sessionKeyPluginActions as sessionKeyPluginActions_,\n type SessionKeyPluginActions as SessionKeyPluginActions_,\n} from \"./plugin.js\";\nimport { buildSessionKeysToRemoveStruct } from \"./utils.js\";\n\nexport type SessionKeyPluginActions<\n TAccount extends SmartContractAccount | undefined =\n | SmartContractAccount\n | undefined,\n TEntryPointVersion extends GetEntryPointFromAccount<TAccount> = GetEntryPointFromAccount<TAccount>\n> = Omit<\n SessionKeyPluginActions_<TAccount>,\n | \"removeSessionKey\"\n | \"addSessionKey\"\n | \"rotateSessionKey\"\n | \"updateKeyPermissions\"\n> & {\n isAccountSessionKey: (\n args: { key: Address } & GetPluginAddressParameter &\n GetAccountParameter<TAccount>\n ) => Promise<boolean>;\n\n getAccountSessionKeys: (\n args: GetPluginAddressParameter & GetAccountParameter<TAccount>\n ) => Promise<ReadonlyArray<Address>>;\n\n removeSessionKey: (\n args: { key: Address } & GetPluginAddressParameter &\n GetAccountParameter<TAccount> &\n UserOperationOverridesParameter<TEntryPointVersion>\n ) => Promise<SendUserOperationResult<TEntryPointVersion>>;\n\n addSessionKey: (\n args: {\n key: Address;\n permissions: Hex[];\n tag: Hex;\n } & GetPluginAddressParameter &\n GetAccountParameter<TAccount> &\n UserOperationOverridesParameter<TEntryPointVersion>\n ) => Promise<SendUserOperationResult<TEntryPointVersion>>;\n\n rotateSessionKey: (\n args: {\n oldKey: Address;\n newKey: Address;\n } & GetPluginAddressParameter &\n GetAccountParameter<TAccount> &\n UserOperationOverridesParameter<TEntryPointVersion>\n ) => Promise<SendUserOperationResult<TEntryPointVersion>>;\n\n updateSessionKeyPermissions: (\n args: {\n key: Address;\n permissions: Hex[];\n } & GetPluginAddressParameter &\n GetAccountParameter<TAccount> &\n UserOperationOverridesParameter<TEntryPointVersion>\n ) => Promise<SendUserOperationResult<TEntryPointVersion>>;\n} & (IsUndefined<TAccount> extends false\n ? {\n getAccountSessionKeys: (\n args?: GetPluginAddressParameter & GetAccountParameter<TAccount>\n ) => Promise<ReadonlyArray<Address>>;\n }\n : {});\n\nexport const sessionKeyPluginActions: <\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) => SessionKeyPluginActions<TAccount> = <\n TTransport extends Transport = Transport,\n TChain extends Chain | undefined = Chain | undefined,\n TAccount extends SmartContractAccount | undefined =\n | SmartContractAccount\n | undefined,\n TEntryPointVersion extends GetEntryPointFromAccount<TAccount> = GetEntryPointFromAccount<TAccount>\n>(\n client: Client<TTransport, TChain, TAccount>\n) => {\n const {\n removeSessionKey,\n addSessionKey,\n rotateSessionKey,\n updateKeyPermissions,\n executeWithSessionKey,\n ...og\n } = sessionKeyPluginActions_<TTransport, TChain, TAccount>(client);\n\n // The session key plugin returns an opaque error when the permissions check\n // fails. We want the SDK to return a helpful error instead. After validation\n // fails, rerun the user op simulation but using state overrides to replace\n // the code of the session key plugin with a version that produces descriptive\n // errors.\n const fixedExecuteWithSessionKey: typeof executeWithSessionKey = async (\n ...originalArgs\n ) => {\n let initialError: unknown;\n try {\n return await executeWithSessionKey(...originalArgs);\n } catch (error) {\n initialError = error;\n }\n const details = getRpcErrorMessageFromViemError(initialError);\n if (!details?.includes(\"AA23 reverted (or OOG)\")) {\n throw initialError;\n }\n if (!isSmartAccountClient(client) || !client.chain) {\n throw initialError;\n }\n const {\n args,\n overrides,\n context,\n account = client.account,\n } = originalArgs[0];\n if (!account) {\n throw initialError;\n }\n const data = og.encodeExecuteWithSessionKey({ args });\n const sessionKeyPluginAddress =\n SessionKeyPlugin.meta.addresses[client.chain.id];\n // The bytecode is 10kb of hex. Only import it if needed.\n const { DEBUG_SESSION_KEY_BYTECODE } = await import(\n \"./debug-session-key-bytecode.js\"\n );\n const updatedOverrides: UserOperationOverrides<TEntryPointVersion> = {\n ...(overrides as UserOperationOverrides<TEntryPointVersion>),\n stateOverride: [\n ...(overrides?.stateOverride ?? []),\n {\n address: sessionKeyPluginAddress,\n code: DEBUG_SESSION_KEY_BYTECODE,\n },\n ],\n };\n try {\n await client.buildUserOperation({\n uo: data,\n overrides: updatedOverrides,\n context,\n account,\n });\n // We expect this to fail because we just saw the same user op fail a\n // moment ago. It could succeed if the state of the chain has changed but\n // there's not much we can do with a successful result so return the\n // original error.\n throw initialError;\n } catch (improvedError) {\n const details = getRpcErrorMessageFromViemError(improvedError) ?? \"\";\n const reason = details.match(/AA23 reverted: (.+)/)?.[1];\n if (!reason) {\n throw initialError;\n }\n throw new SessionKeyPermissionError(reason);\n }\n };\n\n return {\n ...og,\n\n executeWithSessionKey: fixedExecuteWithSessionKey,\n\n isAccountSessionKey: async ({\n key,\n pluginAddress,\n account = client.account,\n }) => {\n if (!account) throw new AccountNotFoundError();\n\n const contract = SessionKeyPlugin.getContract(client, pluginAddress);\n\n return await contract.read.isSessionKeyOf([account.address, key]);\n },\n\n getAccountSessionKeys: async (\n args: GetPluginAddressParameter & GetAccountParameter<TAccount>\n ) => {\n const account = args?.account ?? client.account;\n if (!account) throw new AccountNotFoundError();\n\n const contract = SessionKeyPlugin.getContract(\n client,\n args?.pluginAddress\n );\n\n return await contract.read.sessionKeysOf([account.address]);\n },\n\n removeSessionKey: async ({\n key,\n overrides,\n account = client.account,\n pluginAddress,\n }) => {\n if (!account) throw new AccountNotFoundError();\n\n const sessionKeysToRemove = await buildSessionKeysToRemoveStruct(client, {\n keys: [key],\n account,\n pluginAddress,\n });\n\n return removeSessionKey({\n args: [key, sessionKeysToRemove[0].predecessor],\n overrides: overrides as UserOperationOverrides<TEntryPointVersion>,\n account,\n });\n },\n\n addSessionKey: async ({\n key,\n tag,\n permissions,\n overrides,\n pluginAddress,\n account = client.account,\n }) => {\n if (!account) throw new AccountNotFoundError();\n\n return addSessionKey({\n args: [key, tag, permissions],\n overrides: overrides as UserOperationOverrides<TEntryPointVersion>,\n account,\n pluginAddress,\n });\n },\n\n rotateSessionKey: async ({\n newKey,\n oldKey,\n overrides,\n pluginAddress,\n account = client.account,\n }) => {\n if (!account) throw new AccountNotFoundError();\n\n const contract = SessionKeyPlugin.getContract(client, pluginAddress);\n\n const predecessor = await contract.read.findPredecessor([\n account.address,\n oldKey,\n ]);\n\n return rotateSessionKey({\n args: [oldKey, predecessor, newKey],\n overrides: overrides as UserOperationOverrides<TEntryPointVersion>,\n account,\n pluginAddress,\n });\n },\n\n updateSessionKeyPermissions: async ({\n key,\n permissions,\n overrides,\n pluginAddress,\n account = client.account,\n }) => {\n if (!account) throw new AccountNotFoundError();\n\n return updateKeyPermissions({\n args: [key, permissions],\n overrides: overrides as UserOperationOverrides<\n GetEntryPointFromAccount<TAccount>\n >,\n account,\n pluginAddress,\n });\n },\n };\n};\n\nfunction getRpcErrorMessageFromViemError(error: unknown): string | undefined {\n const details = (error as any)?.details;\n return typeof details === \"string\" ? details : undefined;\n}\n\nclass SessionKeyPermissionError extends Error {}\n"]}
1
+ {"version":3,"file":"extension.js","sourceRoot":"","sources":["../../../../../../src/msca/plugins/session-key/extension.ts"],"names":[],"mappings":"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","sourcesContent":["import type {\n GetEntryPointFromAccount,\n UserOperationOverridesParameter,\n} from \"@aa-sdk/core\";\nimport {\n AccountNotFoundError,\n isSmartAccountClient,\n type GetAccountParameter,\n type IsUndefined,\n type SendUserOperationResult,\n type SmartContractAccount,\n type UserOperationOverrides,\n} from \"@aa-sdk/core\";\nimport type { Address, Chain, Client, Hex, Transport } from \"viem\";\nimport type { GetPluginAddressParameter } from \"../types.js\";\nimport {\n SessionKeyPlugin,\n sessionKeyPluginActions as sessionKeyPluginActions_,\n type SessionKeyPluginActions as SessionKeyPluginActions_,\n} from \"./plugin.js\";\nimport { buildSessionKeysToRemoveStruct } from \"./utils.js\";\n\nexport type SessionKeyPluginActions<\n TAccount extends SmartContractAccount | undefined =\n | SmartContractAccount\n | undefined,\n TEntryPointVersion extends GetEntryPointFromAccount<TAccount> = GetEntryPointFromAccount<TAccount>\n> = Omit<\n SessionKeyPluginActions_<TAccount>,\n | \"removeSessionKey\"\n | \"addSessionKey\"\n | \"rotateSessionKey\"\n | \"updateKeyPermissions\"\n> & {\n isAccountSessionKey: (\n args: { key: Address } & GetPluginAddressParameter &\n GetAccountParameter<TAccount>\n ) => Promise<boolean>;\n\n getAccountSessionKeys: (\n args: GetPluginAddressParameter & GetAccountParameter<TAccount>\n ) => Promise<ReadonlyArray<Address>>;\n\n removeSessionKey: (\n args: { key: Address } & GetPluginAddressParameter &\n GetAccountParameter<TAccount> &\n UserOperationOverridesParameter<TEntryPointVersion>\n ) => Promise<SendUserOperationResult<TEntryPointVersion>>;\n\n addSessionKey: (\n args: {\n key: Address;\n permissions: Hex[];\n tag: Hex;\n } & GetPluginAddressParameter &\n GetAccountParameter<TAccount> &\n UserOperationOverridesParameter<TEntryPointVersion>\n ) => Promise<SendUserOperationResult<TEntryPointVersion>>;\n\n rotateSessionKey: (\n args: {\n oldKey: Address;\n newKey: Address;\n } & GetPluginAddressParameter &\n GetAccountParameter<TAccount> &\n UserOperationOverridesParameter<TEntryPointVersion>\n ) => Promise<SendUserOperationResult<TEntryPointVersion>>;\n\n updateSessionKeyPermissions: (\n args: {\n key: Address;\n permissions: Hex[];\n } & GetPluginAddressParameter &\n GetAccountParameter<TAccount> &\n UserOperationOverridesParameter<TEntryPointVersion>\n ) => Promise<SendUserOperationResult<TEntryPointVersion>>;\n} & (IsUndefined<TAccount> extends false\n ? {\n getAccountSessionKeys: (\n args?: GetPluginAddressParameter & GetAccountParameter<TAccount>\n ) => Promise<ReadonlyArray<Address>>;\n }\n : {});\n\n/**\n * Creates actions for managing session keys in a smart contract associated with a client, including adding, removing, rotating, and updating session key permissions.\n *\n * @example\n * ```ts\n * import { createModularAccountAlchemyClient, sessionKeyPluginActions } from \"@account-kit/smart-contracts\";\n *\n * const client = createModularAccountAlchemyClient(...).extend(sessionKeyPluginActions);\n * ```\n *\n * @param {Client<TTransport, TChain, TAccount>} client The client instance to use for managing session keys\n * @returns {SessionKeyPluginActions<TAccount>} An object containing methods for session key management and interaction with the smart contract\n */\nexport const sessionKeyPluginActions: <\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) => SessionKeyPluginActions<TAccount> = <\n TTransport extends Transport = Transport,\n TChain extends Chain | undefined = Chain | undefined,\n TAccount extends SmartContractAccount | undefined =\n | SmartContractAccount\n | undefined,\n TEntryPointVersion extends GetEntryPointFromAccount<TAccount> = GetEntryPointFromAccount<TAccount>\n>(\n client: Client<TTransport, TChain, TAccount>\n) => {\n const {\n removeSessionKey,\n addSessionKey,\n rotateSessionKey,\n updateKeyPermissions,\n executeWithSessionKey,\n ...og\n } = sessionKeyPluginActions_<TTransport, TChain, TAccount>(client);\n\n // The session key plugin returns an opaque error when the permissions check\n // fails. We want the SDK to return a helpful error instead. After validation\n // fails, rerun the user op simulation but using state overrides to replace\n // the code of the session key plugin with a version that produces descriptive\n // errors.\n const fixedExecuteWithSessionKey: typeof executeWithSessionKey = async (\n ...originalArgs\n ) => {\n let initialError: unknown;\n try {\n return await executeWithSessionKey(...originalArgs);\n } catch (error) {\n initialError = error;\n }\n const details = getRpcErrorMessageFromViemError(initialError);\n if (!details?.includes(\"AA23 reverted (or OOG)\")) {\n throw initialError;\n }\n if (!isSmartAccountClient(client) || !client.chain) {\n throw initialError;\n }\n const {\n args,\n overrides,\n context,\n account = client.account,\n } = originalArgs[0];\n if (!account) {\n throw initialError;\n }\n const data = og.encodeExecuteWithSessionKey({ args });\n const sessionKeyPluginAddress =\n SessionKeyPlugin.meta.addresses[client.chain.id];\n // The bytecode is 10kb of hex. Only import it if needed.\n const { DEBUG_SESSION_KEY_BYTECODE } = await import(\n \"./debug-session-key-bytecode.js\"\n );\n const updatedOverrides: UserOperationOverrides<TEntryPointVersion> = {\n ...(overrides as UserOperationOverrides<TEntryPointVersion>),\n stateOverride: [\n ...(overrides?.stateOverride ?? []),\n {\n address: sessionKeyPluginAddress,\n code: DEBUG_SESSION_KEY_BYTECODE,\n },\n ],\n };\n try {\n await client.buildUserOperation({\n uo: data,\n overrides: updatedOverrides,\n context,\n account,\n });\n // We expect this to fail because we just saw the same user op fail a\n // moment ago. It could succeed if the state of the chain has changed but\n // there's not much we can do with a successful result so return the\n // original error.\n throw initialError;\n } catch (improvedError) {\n const details = getRpcErrorMessageFromViemError(improvedError) ?? \"\";\n const reason = details.match(/AA23 reverted: (.+)/)?.[1];\n if (!reason) {\n throw initialError;\n }\n throw new SessionKeyPermissionError(reason);\n }\n };\n\n return {\n ...og,\n\n executeWithSessionKey: fixedExecuteWithSessionKey,\n\n isAccountSessionKey: async ({\n key,\n pluginAddress,\n account = client.account,\n }) => {\n if (!account) throw new AccountNotFoundError();\n\n const contract = SessionKeyPlugin.getContract(client, pluginAddress);\n\n return await contract.read.isSessionKeyOf([account.address, key]);\n },\n\n getAccountSessionKeys: async (\n args: GetPluginAddressParameter & GetAccountParameter<TAccount>\n ) => {\n const account = args?.account ?? client.account;\n if (!account) throw new AccountNotFoundError();\n\n const contract = SessionKeyPlugin.getContract(\n client,\n args?.pluginAddress\n );\n\n return await contract.read.sessionKeysOf([account.address]);\n },\n\n removeSessionKey: async ({\n key,\n overrides,\n account = client.account,\n pluginAddress,\n }) => {\n if (!account) throw new AccountNotFoundError();\n\n const sessionKeysToRemove = await buildSessionKeysToRemoveStruct(client, {\n keys: [key],\n account,\n pluginAddress,\n });\n\n return removeSessionKey({\n args: [key, sessionKeysToRemove[0].predecessor],\n overrides: overrides as UserOperationOverrides<TEntryPointVersion>,\n account,\n });\n },\n\n addSessionKey: async ({\n key,\n tag,\n permissions,\n overrides,\n pluginAddress,\n account = client.account,\n }) => {\n if (!account) throw new AccountNotFoundError();\n\n return addSessionKey({\n args: [key, tag, permissions],\n overrides: overrides as UserOperationOverrides<TEntryPointVersion>,\n account,\n pluginAddress,\n });\n },\n\n rotateSessionKey: async ({\n newKey,\n oldKey,\n overrides,\n pluginAddress,\n account = client.account,\n }) => {\n if (!account) throw new AccountNotFoundError();\n\n const contract = SessionKeyPlugin.getContract(client, pluginAddress);\n\n const predecessor = await contract.read.findPredecessor([\n account.address,\n oldKey,\n ]);\n\n return rotateSessionKey({\n args: [oldKey, predecessor, newKey],\n overrides: overrides as UserOperationOverrides<TEntryPointVersion>,\n account,\n pluginAddress,\n });\n },\n\n updateSessionKeyPermissions: async ({\n key,\n permissions,\n overrides,\n pluginAddress,\n account = client.account,\n }) => {\n if (!account) throw new AccountNotFoundError();\n\n return updateKeyPermissions({\n args: [key, permissions],\n overrides: overrides as UserOperationOverrides<\n GetEntryPointFromAccount<TAccount>\n >,\n account,\n pluginAddress,\n });\n },\n };\n};\n\nfunction getRpcErrorMessageFromViemError(error: unknown): string | undefined {\n const details = (error as any)?.details;\n return typeof details === \"string\" ? details : undefined;\n}\n\nclass SessionKeyPermissionError extends Error {}\n"]}
@@ -1,3 +1,3 @@
1
1
  export type * from "./extension.js";
2
2
  export { sessionKeyPluginActions } from "./extension.js";
3
- export { SessionKeyPlugin } from "./plugin.js";
3
+ export { SessionKeyPlugin, SessionKeyPluginAbi, SessionKeyPluginExecutionFunctionAbi, type InstallSessionKeyPluginParams, } from "./plugin.js";
@@ -1,3 +1,3 @@
1
1
  export { sessionKeyPluginActions } from "./extension.js";
2
- export { SessionKeyPlugin } from "./plugin.js";
2
+ export { SessionKeyPlugin, SessionKeyPluginAbi, SessionKeyPluginExecutionFunctionAbi, } from "./plugin.js";
3
3
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../src/msca/plugins/session-key/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAC;AACzD,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC","sourcesContent":["export type * from \"./extension.js\";\nexport { sessionKeyPluginActions } from \"./extension.js\";\nexport { SessionKeyPlugin } from \"./plugin.js\";\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../src/msca/plugins/session-key/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAC;AAEzD,OAAO,EACL,gBAAgB,EAChB,mBAAmB,EACnB,oCAAoC,GAErC,MAAM,aAAa,CAAC","sourcesContent":["export type * from \"./extension.js\";\nexport { sessionKeyPluginActions } from \"./extension.js\";\n\nexport {\n SessionKeyPlugin,\n SessionKeyPluginAbi,\n SessionKeyPluginExecutionFunctionAbi,\n type InstallSessionKeyPluginParams,\n} from \"./plugin.js\";\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"permissions.js","sourceRoot":"","sources":["../../../../../../src/msca/plugins/session-key/permissions.ts"],"names":[],"mappings":"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","sourcesContent":["import { encodeFunctionData, type Address, type Hex } from \"viem\";\nimport { SessionKeyPermissionsUpdatesAbi } from \"./SessionKeyPermissionsUpdatesAbi.js\";\n\nexport enum SessionKeyAccessListType {\n ALLOWLIST = 0,\n DENYLIST = 1,\n ALLOW_ALL_ACCESS = 2,\n}\n\nexport type ContractAccessEntry = {\n // The contract address to add or remove.\n contractAddress: Address;\n // Whether the contract address should be on the list.\n isOnList: boolean;\n // Whether to check selectors for the contract address.\n checkSelectors: boolean;\n};\n\nexport type ContractMethodEntry = {\n // The contract address to add or remove.\n contractAddress: Address;\n // The function selector to add or remove.\n methodSelector: Hex;\n // Whether the function selector should be on the list.\n isOnList: boolean;\n};\n\nexport type TimeRange = {\n validFrom: number;\n validUntil: number;\n};\n\nexport type NativeTokenLimit = {\n spendLimit: bigint;\n // The time interval over which the spend limit is enforced. If unset, there is no time\n /// interval by which the limit is refreshed.\n refreshInterval?: number;\n};\n\nexport type Erc20TokenLimit = {\n tokenAddress: Address;\n spendLimit: bigint;\n // The time interval over which the spend limit is enforced. If unset, there is no time\n /// interval by which the limit is refreshed.\n refreshInterval?: number;\n};\n\n// uint256 spendLimit, uint48 refreshInterval\nexport type GasSpendLimit = {\n // The amount, in wei, of native tokens that a session key can spend on gas.\n // Note that this is not the same as the gas limit for a user operation, which is measured in units of gas.\n // This tracks gas units * gas price.\n spendLimit: bigint;\n // The time interval over which the spend limit is enforced. If unset, there is no time\n /// interval by which the limit is refreshed.\n refreshInterval?: number;\n};\n\nexport class SessionKeyPermissionsBuilder {\n private _contractAccessControlType: SessionKeyAccessListType =\n SessionKeyAccessListType.ALLOWLIST;\n private _contractAddressAccessEntrys: ContractAccessEntry[] = [];\n private _contractMethodAccessEntrys: ContractMethodEntry[] = [];\n private _timeRange?: TimeRange;\n private _nativeTokenSpendLimit?: NativeTokenLimit;\n private _erc20TokenSpendLimits: Erc20TokenLimit[] = [];\n private _gasSpendLimit?: GasSpendLimit;\n private _requiredPaymaster?: Address;\n\n public setContractAccessControlType(aclType: SessionKeyAccessListType) {\n this._contractAccessControlType = aclType;\n return this;\n }\n\n public addContractAddressAccessEntry(entry: ContractAccessEntry) {\n this._contractAddressAccessEntrys.push(entry);\n return this;\n }\n\n public addContractFunctionAccessEntry(entry: ContractMethodEntry) {\n this._contractMethodAccessEntrys.push(entry);\n return this;\n }\n\n public setTimeRange(timeRange: TimeRange) {\n this._timeRange = timeRange;\n return this;\n }\n\n public setNativeTokenSpendLimit(limit: NativeTokenLimit) {\n this._nativeTokenSpendLimit = limit;\n return this;\n }\n\n public addErc20TokenSpendLimit(limit: Erc20TokenLimit) {\n this._erc20TokenSpendLimits.push(limit);\n return this;\n }\n\n public setGasSpendLimit(limit: GasSpendLimit) {\n this._gasSpendLimit = limit;\n return this;\n }\n\n public setRequiredPaymaster(paymaster: Address) {\n this._requiredPaymaster = paymaster;\n return this;\n }\n\n public encode(): Hex[] {\n return [\n encodeFunctionData({\n abi: SessionKeyPermissionsUpdatesAbi,\n functionName: \"setAccessListType\",\n args: [this._contractAccessControlType],\n }),\n ...this._contractAddressAccessEntrys.map((entry) =>\n encodeFunctionData({\n abi: SessionKeyPermissionsUpdatesAbi,\n functionName: \"updateAccessListAddressEntry\",\n args: [entry.contractAddress, entry.isOnList, entry.checkSelectors],\n })\n ),\n ...this._contractMethodAccessEntrys.map((entry) =>\n encodeFunctionData({\n abi: SessionKeyPermissionsUpdatesAbi,\n functionName: \"updateAccessListFunctionEntry\",\n args: [entry.contractAddress, entry.methodSelector, entry.isOnList],\n })\n ),\n this.encodeIfDefined(\n (timeRange) =>\n encodeFunctionData({\n abi: SessionKeyPermissionsUpdatesAbi,\n functionName: \"updateTimeRange\",\n args: [timeRange.validFrom, timeRange.validUntil],\n }),\n this._timeRange\n ),\n this.encodeIfDefined(\n (nativeSpendLimit) =>\n encodeFunctionData({\n abi: SessionKeyPermissionsUpdatesAbi,\n functionName: \"setNativeTokenSpendLimit\",\n args: [\n nativeSpendLimit.spendLimit,\n nativeSpendLimit.refreshInterval ?? 0,\n ],\n }),\n this._nativeTokenSpendLimit\n ),\n ...this._erc20TokenSpendLimits.map((erc20SpendLimit) =>\n encodeFunctionData({\n abi: SessionKeyPermissionsUpdatesAbi,\n functionName: \"setERC20SpendLimit\",\n args: [\n erc20SpendLimit.tokenAddress,\n erc20SpendLimit.spendLimit,\n erc20SpendLimit.refreshInterval ?? 0,\n ],\n })\n ),\n this.encodeIfDefined(\n (spendLimit) =>\n encodeFunctionData({\n abi: SessionKeyPermissionsUpdatesAbi,\n functionName: \"setGasSpendLimit\",\n args: [spendLimit.spendLimit, spendLimit.refreshInterval ?? 0],\n }),\n this._gasSpendLimit\n ),\n this.encodeIfDefined(\n (paymaster) =>\n encodeFunctionData({\n abi: SessionKeyPermissionsUpdatesAbi,\n functionName: \"setRequiredPaymaster\",\n args: [paymaster],\n }),\n this._requiredPaymaster\n ),\n ].filter((x) => x !== \"0x\");\n }\n\n private encodeIfDefined<T>(encode: (param: T) => Hex, param?: T): Hex {\n if (!param) return \"0x\";\n\n return encode(param);\n }\n}\n"]}
1
+ {"version":3,"file":"permissions.js","sourceRoot":"","sources":["../../../../../../src/msca/plugins/session-key/permissions.ts"],"names":[],"mappings":"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","sourcesContent":["import { encodeFunctionData, type Address, type Hex } from \"viem\";\nimport { SessionKeyPermissionsUpdatesAbi } from \"./SessionKeyPermissionsUpdatesAbi.js\";\n\nexport enum SessionKeyAccessListType {\n ALLOWLIST = 0,\n DENYLIST = 1,\n ALLOW_ALL_ACCESS = 2,\n}\n\nexport type ContractAccessEntry = {\n // The contract address to add or remove.\n contractAddress: Address;\n // Whether the contract address should be on the list.\n isOnList: boolean;\n // Whether to check selectors for the contract address.\n checkSelectors: boolean;\n};\n\nexport type ContractMethodEntry = {\n // The contract address to add or remove.\n contractAddress: Address;\n // The function selector to add or remove.\n methodSelector: Hex;\n // Whether the function selector should be on the list.\n isOnList: boolean;\n};\n\nexport type TimeRange = {\n validFrom: number;\n validUntil: number;\n};\n\nexport type NativeTokenLimit = {\n spendLimit: bigint;\n // The time interval over which the spend limit is enforced. If unset, there is no time\n /// interval by which the limit is refreshed.\n refreshInterval?: number;\n};\n\nexport type Erc20TokenLimit = {\n tokenAddress: Address;\n spendLimit: bigint;\n // The time interval over which the spend limit is enforced. If unset, there is no time\n /// interval by which the limit is refreshed.\n refreshInterval?: number;\n};\n\n// uint256 spendLimit, uint48 refreshInterval\nexport type GasSpendLimit = {\n // The amount, in wei, of native tokens that a session key can spend on gas.\n // Note that this is not the same as the gas limit for a user operation, which is measured in units of gas.\n // This tracks gas units * gas price.\n spendLimit: bigint;\n // The time interval over which the spend limit is enforced. If unset, there is no time\n /// interval by which the limit is refreshed.\n refreshInterval?: number;\n};\n\n/**\n * A builder for creating the hex-encoded data for updating session key permissions.\n */\nexport class SessionKeyPermissionsBuilder {\n private _contractAccessControlType: SessionKeyAccessListType =\n SessionKeyAccessListType.ALLOWLIST;\n private _contractAddressAccessEntrys: ContractAccessEntry[] = [];\n private _contractMethodAccessEntrys: ContractMethodEntry[] = [];\n private _timeRange?: TimeRange;\n private _nativeTokenSpendLimit?: NativeTokenLimit;\n private _erc20TokenSpendLimits: Erc20TokenLimit[] = [];\n private _gasSpendLimit?: GasSpendLimit;\n private _requiredPaymaster?: Address;\n\n public setContractAccessControlType(aclType: SessionKeyAccessListType) {\n this._contractAccessControlType = aclType;\n return this;\n }\n\n public addContractAddressAccessEntry(entry: ContractAccessEntry) {\n this._contractAddressAccessEntrys.push(entry);\n return this;\n }\n\n public addContractFunctionAccessEntry(entry: ContractMethodEntry) {\n this._contractMethodAccessEntrys.push(entry);\n return this;\n }\n\n public setTimeRange(timeRange: TimeRange) {\n this._timeRange = timeRange;\n return this;\n }\n\n public setNativeTokenSpendLimit(limit: NativeTokenLimit) {\n this._nativeTokenSpendLimit = limit;\n return this;\n }\n\n public addErc20TokenSpendLimit(limit: Erc20TokenLimit) {\n this._erc20TokenSpendLimits.push(limit);\n return this;\n }\n\n public setGasSpendLimit(limit: GasSpendLimit) {\n this._gasSpendLimit = limit;\n return this;\n }\n\n public setRequiredPaymaster(paymaster: Address) {\n this._requiredPaymaster = paymaster;\n return this;\n }\n\n public encode(): Hex[] {\n return [\n encodeFunctionData({\n abi: SessionKeyPermissionsUpdatesAbi,\n functionName: \"setAccessListType\",\n args: [this._contractAccessControlType],\n }),\n ...this._contractAddressAccessEntrys.map((entry) =>\n encodeFunctionData({\n abi: SessionKeyPermissionsUpdatesAbi,\n functionName: \"updateAccessListAddressEntry\",\n args: [entry.contractAddress, entry.isOnList, entry.checkSelectors],\n })\n ),\n ...this._contractMethodAccessEntrys.map((entry) =>\n encodeFunctionData({\n abi: SessionKeyPermissionsUpdatesAbi,\n functionName: \"updateAccessListFunctionEntry\",\n args: [entry.contractAddress, entry.methodSelector, entry.isOnList],\n })\n ),\n this.encodeIfDefined(\n (timeRange) =>\n encodeFunctionData({\n abi: SessionKeyPermissionsUpdatesAbi,\n functionName: \"updateTimeRange\",\n args: [timeRange.validFrom, timeRange.validUntil],\n }),\n this._timeRange\n ),\n this.encodeIfDefined(\n (nativeSpendLimit) =>\n encodeFunctionData({\n abi: SessionKeyPermissionsUpdatesAbi,\n functionName: \"setNativeTokenSpendLimit\",\n args: [\n nativeSpendLimit.spendLimit,\n nativeSpendLimit.refreshInterval ?? 0,\n ],\n }),\n this._nativeTokenSpendLimit\n ),\n ...this._erc20TokenSpendLimits.map((erc20SpendLimit) =>\n encodeFunctionData({\n abi: SessionKeyPermissionsUpdatesAbi,\n functionName: \"setERC20SpendLimit\",\n args: [\n erc20SpendLimit.tokenAddress,\n erc20SpendLimit.spendLimit,\n erc20SpendLimit.refreshInterval ?? 0,\n ],\n })\n ),\n this.encodeIfDefined(\n (spendLimit) =>\n encodeFunctionData({\n abi: SessionKeyPermissionsUpdatesAbi,\n functionName: \"setGasSpendLimit\",\n args: [spendLimit.spendLimit, spendLimit.refreshInterval ?? 0],\n }),\n this._gasSpendLimit\n ),\n this.encodeIfDefined(\n (paymaster) =>\n encodeFunctionData({\n abi: SessionKeyPermissionsUpdatesAbi,\n functionName: \"setRequiredPaymaster\",\n args: [paymaster],\n }),\n this._requiredPaymaster\n ),\n ].filter((x) => x !== \"0x\");\n }\n\n private encodeIfDefined<T>(encode: (param: T) => Hex, param?: T): Hex {\n if (!param) return \"0x\";\n\n return encode(param);\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"signer.js","sourceRoot":"","sources":["../../../../../../src/msca/plugins/session-key/signer.ts"],"names":[],"mappings":"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","sourcesContent":["import { LocalAccountSigner, type SmartAccountSigner } from \"@aa-sdk/core\";\nimport type {\n Hex,\n PrivateKeyAccount,\n SignableMessage,\n TypedData,\n TypedDataDefinition,\n} from \"viem\";\nimport { generatePrivateKey } from \"viem/accounts\";\nimport { z } from \"zod\";\n\nexport const SessionKeySignerSchema = z.object({\n storageType: z\n .union([z.literal(\"local-storage\"), z.literal(\"session-storage\")])\n .or(z.custom<Storage>())\n .default(\"local-storage\"),\n storageKey: z.string().default(\"session-key-signer:session-key\"),\n});\n\nexport type SessionKeySignerConfig = z.input<typeof SessionKeySignerSchema>;\n\n/**\n * A simple session key signer that uses localStorage or sessionStorage to store\n * a private key. If the key is not found, it will generate a new one and store\n * it in the storage.\n */\n\nexport const SESSION_KEY_SIGNER_TYPE_PFX = \"alchemy:session-key\";\nexport class SessionKeySigner\n implements SmartAccountSigner<LocalAccountSigner<PrivateKeyAccount>>\n{\n signerType: string;\n inner: LocalAccountSigner<PrivateKeyAccount>;\n private storageType: \"local-storage\" | \"session-storage\" | Storage;\n private storageKey: string;\n\n constructor(config_: SessionKeySignerConfig = {}) {\n const config = SessionKeySignerSchema.parse(config_);\n this.signerType = `${SESSION_KEY_SIGNER_TYPE_PFX}`;\n this.storageKey = config.storageKey;\n this.storageType = config.storageType;\n\n const sessionKey = (() => {\n const storage =\n typeof this.storageType !== \"string\"\n ? this.storageType\n : this.storageType === \"session-storage\"\n ? sessionStorage\n : localStorage;\n const key = storage.getItem(this.storageKey);\n\n if (key) {\n return key;\n } else {\n const newKey = generatePrivateKey();\n storage.setItem(this.storageKey, newKey);\n return newKey;\n }\n })() as Hex;\n\n this.inner = LocalAccountSigner.privateKeyToAccountSigner(sessionKey);\n }\n\n getAddress: () => Promise<`0x${string}`> = async () => {\n return this.inner.getAddress();\n };\n\n signMessage: (msg: SignableMessage) => Promise<`0x${string}`> = async (\n msg\n ) => {\n return this.inner.signMessage(msg);\n };\n\n signTypedData = async <\n const TTypedData extends TypedData | { [key: string]: unknown },\n TPrimaryType extends string = string\n >(\n params: TypedDataDefinition<TTypedData, TPrimaryType>\n ) => {\n return this.inner.signTypedData(params);\n };\n\n /**\n * Generates a new private key and stores it in the storage.\n *\n * @returns The public address of the new key.\n */\n generateNewKey = () => {\n const storage =\n this.storageType === \"session-storage\" ? sessionStorage : localStorage;\n\n const newKey = generatePrivateKey();\n storage.setItem(this.storageKey, newKey);\n this.inner = LocalAccountSigner.privateKeyToAccountSigner(newKey);\n\n return this.inner.inner.address;\n };\n}\n"]}
1
+ {"version":3,"file":"signer.js","sourceRoot":"","sources":["../../../../../../src/msca/plugins/session-key/signer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAA2B,MAAM,cAAc,CAAC;AAQ3E,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC7C,WAAW,EAAE,CAAC;SACX,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC,CAAC;SACjE,EAAE,CAAC,CAAC,CAAC,MAAM,EAAW,CAAC;SACvB,OAAO,CAAC,eAAe,CAAC;IAC3B,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,gCAAgC,CAAC;CACjE,CAAC,CAAC;AAGH,MAAM,CAAC,MAAM,2BAA2B,GAAG,qBAAqB,CAAC;AAOjE,MAAM,OAAO,gBAAgB;IAQ3B,YAAY,UAAkC,EAAE;QALhD;;;;;WAAmB;QACnB;;;;;WAA6C;QACrC;;;;;WAA2D;QAC3D;;;;;WAAmB;QA6B3B;;;;mBAA2C,KAAK,IAAI,EAAE;gBACpD,OAAO,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC;YACjC,CAAC;WAAC;QAEF;;;;mBAAgE,KAAK,EACnE,GAAG,EACH,EAAE;gBACF,OAAO,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;YACrC,CAAC;WAAC;QAEF;;;;mBAAgB,KAAK,EAInB,MAAqD,EACrD,EAAE;gBACF,OAAO,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;YAC1C,CAAC;WAAC;QAOF;;;;mBAAiB,GAAG,EAAE;gBACpB,MAAM,OAAO,GACX,IAAI,CAAC,WAAW,KAAK,iBAAiB,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,YAAY,CAAC;gBAEzE,MAAM,MAAM,GAAG,kBAAkB,EAAE,CAAC;gBACpC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;gBACzC,IAAI,CAAC,KAAK,GAAG,kBAAkB,CAAC,yBAAyB,CAAC,MAAM,CAAC,CAAC;gBAElE,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC;YAClC,CAAC;WAAC;QA3DA,MAAM,MAAM,GAAG,sBAAsB,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACrD,IAAI,CAAC,UAAU,GAAG,GAAG,2BAA2B,EAAE,CAAC;QACnD,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;QACpC,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC;QAEtC,MAAM,UAAU,GAAG,CAAC,GAAG,EAAE;YACvB,MAAM,OAAO,GACX,OAAO,IAAI,CAAC,WAAW,KAAK,QAAQ;gBAClC,CAAC,CAAC,IAAI,CAAC,WAAW;gBAClB,CAAC,CAAC,IAAI,CAAC,WAAW,KAAK,iBAAiB;oBACxC,CAAC,CAAC,cAAc;oBAChB,CAAC,CAAC,YAAY,CAAC;YACnB,MAAM,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YAE7C,IAAI,GAAG,EAAE,CAAC;gBACR,OAAO,GAAG,CAAC;YACb,CAAC;iBAAM,CAAC;gBACN,MAAM,MAAM,GAAG,kBAAkB,EAAE,CAAC;gBACpC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;gBACzC,OAAO,MAAM,CAAC;YAChB,CAAC;QACH,CAAC,CAAC,EAAS,CAAC;QAEZ,IAAI,CAAC,KAAK,GAAG,kBAAkB,CAAC,yBAAyB,CAAC,UAAU,CAAC,CAAC;IACxE,CAAC;CAoCF","sourcesContent":["import { LocalAccountSigner, type SmartAccountSigner } from \"@aa-sdk/core\";\nimport type {\n Hex,\n PrivateKeyAccount,\n SignableMessage,\n TypedData,\n TypedDataDefinition,\n} from \"viem\";\nimport { generatePrivateKey } from \"viem/accounts\";\nimport { z } from \"zod\";\n\nexport const SessionKeySignerSchema = z.object({\n storageType: z\n .union([z.literal(\"local-storage\"), z.literal(\"session-storage\")])\n .or(z.custom<Storage>())\n .default(\"local-storage\"),\n storageKey: z.string().default(\"session-key-signer:session-key\"),\n});\n\nexport type SessionKeySignerConfig = z.input<typeof SessionKeySignerSchema>;\nexport const SESSION_KEY_SIGNER_TYPE_PFX = \"alchemy:session-key\";\n\n/**\n * A simple session key signer that uses localStorage or sessionStorage to store\n * a private key. If the key is not found, it will generate a new one and store\n * it in the storage.\n */\nexport class SessionKeySigner\n implements SmartAccountSigner<LocalAccountSigner<PrivateKeyAccount>>\n{\n signerType: string;\n inner: LocalAccountSigner<PrivateKeyAccount>;\n private storageType: \"local-storage\" | \"session-storage\" | Storage;\n private storageKey: string;\n\n constructor(config_: SessionKeySignerConfig = {}) {\n const config = SessionKeySignerSchema.parse(config_);\n this.signerType = `${SESSION_KEY_SIGNER_TYPE_PFX}`;\n this.storageKey = config.storageKey;\n this.storageType = config.storageType;\n\n const sessionKey = (() => {\n const storage =\n typeof this.storageType !== \"string\"\n ? this.storageType\n : this.storageType === \"session-storage\"\n ? sessionStorage\n : localStorage;\n const key = storage.getItem(this.storageKey);\n\n if (key) {\n return key;\n } else {\n const newKey = generatePrivateKey();\n storage.setItem(this.storageKey, newKey);\n return newKey;\n }\n })() as Hex;\n\n this.inner = LocalAccountSigner.privateKeyToAccountSigner(sessionKey);\n }\n\n getAddress: () => Promise<`0x${string}`> = async () => {\n return this.inner.getAddress();\n };\n\n signMessage: (msg: SignableMessage) => Promise<`0x${string}`> = async (\n msg\n ) => {\n return this.inner.signMessage(msg);\n };\n\n signTypedData = async <\n const TTypedData extends TypedData | { [key: string]: unknown },\n TPrimaryType extends string = string\n >(\n params: TypedDataDefinition<TTypedData, TPrimaryType>\n ) => {\n return this.inner.signTypedData(params);\n };\n\n /**\n * Generates a new private key and stores it in the storage.\n *\n * @returns The public address of the new key.\n */\n generateNewKey = () => {\n const storage =\n this.storageType === \"session-storage\" ? sessionStorage : localStorage;\n\n const newKey = generatePrivateKey();\n storage.setItem(this.storageKey, newKey);\n this.inner = LocalAccountSigner.privateKeyToAccountSigner(newKey);\n\n return this.inner.inner.address;\n };\n}\n"]}
@@ -1,9 +1,11 @@
1
1
  import type { GetAccountParameter, SmartContractAccount } from "@aa-sdk/core";
2
2
  import type { Address, Chain, Client, Transport } from "viem";
3
- export declare const buildSessionKeysToRemoveStruct: <TTransport extends Transport = Transport, TChain extends Chain | undefined = Chain | undefined, TAccount extends SmartContractAccount | undefined = SmartContractAccount | undefined>(client: Client<TTransport, TChain, TAccount>, args: {
3
+ type BuildSessionKeysToRemoveStructParams<TAccount extends SmartContractAccount | undefined = SmartContractAccount | undefined> = {
4
4
  keys: ReadonlyArray<Address>;
5
5
  pluginAddress?: Address;
6
- } & GetAccountParameter<TAccount>) => Promise<{
6
+ } & GetAccountParameter<TAccount>;
7
+ export declare function buildSessionKeysToRemoveStruct<TTransport extends Transport = Transport, TChain extends Chain | undefined = Chain | undefined, TAccount extends SmartContractAccount | undefined = SmartContractAccount | undefined>(client: Client<TTransport, TChain, TAccount>, args: BuildSessionKeysToRemoveStructParams): Promise<{
7
8
  sessionKey: Address;
8
9
  predecessor: Address;
9
10
  }[]>;
11
+ export {};
@@ -1,6 +1,7 @@
1
1
  import { AccountNotFoundError } from "@aa-sdk/core";
2
2
  import { SessionKeyPlugin } from "./plugin.js";
3
- export const buildSessionKeysToRemoveStruct = async (client, { keys, pluginAddress, account = client.account }) => {
3
+ export async function buildSessionKeysToRemoveStruct(client, args) {
4
+ const { keys, pluginAddress, account = client.account } = args;
4
5
  if (!account)
5
6
  throw new AccountNotFoundError();
6
7
  const contract = SessionKeyPlugin.getContract(client, pluginAddress);
@@ -13,5 +14,5 @@ export const buildSessionKeysToRemoveStruct = async (client, { keys, pluginAddre
13
14
  sessionKey: key,
14
15
  predecessor,
15
16
  }));
16
- };
17
+ }
17
18
  //# sourceMappingURL=utils.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../../../src/msca/plugins/session-key/utils.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AAEpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAI/C,MAAM,CAAC,MAAM,8BAA8B,GAYqB,KAAK,EACnE,MAAM,EACN,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,GAAG,MAAM,CAAC,OAAO,EAAE,EACjD,EAAE;IACF,IAAI,CAAC,OAAO;QAAE,MAAM,IAAI,oBAAoB,EAAE,CAAC;IAE/C,MAAM,QAAQ,GAAG,gBAAgB,CAAC,WAAW,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;IACrE,OAAO,CACL,MAAM,OAAO,CAAC,GAAG,CACf,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;QACrB,OAAO;YACL,GAAG;YACH,MAAM,QAAQ,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;SAC5D,CAAC;IACJ,CAAC,CAAC,CACH,CACF,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,WAAW,CAAC,EAAE,EAAE,CAAC,CAAC;QAC7B,UAAU,EAAE,GAAG;QACf,WAAW;KACZ,CAAC,CAAC,CAAC;AACN,CAAC,CAAC","sourcesContent":["import type { GetAccountParameter, SmartContractAccount } from \"@aa-sdk/core\";\nimport { AccountNotFoundError } from \"@aa-sdk/core\";\nimport type { Address, Chain, Client, Transport } from \"viem\";\nimport { SessionKeyPlugin } from \"./plugin.js\";\n\n// find predecessors for each keys and returned the struct `ISessionKeyPlugin.SessionKeyToRemove[]`\n// where SessionKeyToRemove = { sessionKey: Address, predecessor: Hex }\nexport const buildSessionKeysToRemoveStruct: <\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 args: {\n keys: ReadonlyArray<Address>;\n pluginAddress?: Address;\n } & GetAccountParameter<TAccount>\n) => Promise<{ sessionKey: Address; predecessor: Address }[]> = async (\n client,\n { keys, pluginAddress, account = client.account }\n) => {\n if (!account) throw new AccountNotFoundError();\n\n const contract = SessionKeyPlugin.getContract(client, pluginAddress);\n return (\n await Promise.all(\n keys.map(async (key) => {\n return [\n key,\n await contract.read.findPredecessor([account.address, key]),\n ];\n })\n )\n ).map(([key, predecessor]) => ({\n sessionKey: key,\n predecessor,\n }));\n};\n"]}
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../../../src/msca/plugins/session-key/utils.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AAEpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AA6B/C,MAAM,CAAC,KAAK,UAAU,8BAA8B,CAOlD,MAA4C,EAC5C,IAA0C;IAE1C,MAAM,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,GAAG,MAAM,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC;IAE/D,IAAI,CAAC,OAAO;QAAE,MAAM,IAAI,oBAAoB,EAAE,CAAC;IAE/C,MAAM,QAAQ,GAAG,gBAAgB,CAAC,WAAW,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;IACrE,OAAO,CACL,MAAM,OAAO,CAAC,GAAG,CACf,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;QACrB,OAAO;YACL,GAAG;YACH,MAAM,QAAQ,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;SAC5D,CAAC;IACJ,CAAC,CAAC,CACH,CACF,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,WAAW,CAAC,EAAE,EAAE,CAAC,CAAC;QAC7B,UAAU,EAAE,GAAG;QACf,WAAW;KACZ,CAAC,CAAC,CAAC;AACN,CAAC","sourcesContent":["import type { GetAccountParameter, SmartContractAccount } from \"@aa-sdk/core\";\nimport { AccountNotFoundError } from \"@aa-sdk/core\";\nimport type { Address, Chain, Client, Transport } from \"viem\";\nimport { SessionKeyPlugin } from \"./plugin.js\";\n\ntype BuildSessionKeysToRemoveStructParams<\n TAccount extends SmartContractAccount | undefined =\n | SmartContractAccount\n | undefined\n> = {\n keys: ReadonlyArray<Address>;\n pluginAddress?: Address;\n} & GetAccountParameter<TAccount>;\n\n/**\n * Finds predecessors for each provided key and returns them in the struct `ISessionKeyPlugin.SessionKeyToRemove[]`.\n *\n * @example\n * ```ts\n * import { buildSessionKeysToRemoveStruct } from \"@account-kit/smart-contracts\";\n *\n * const client = createSmartAccountClient(...);\n *\n * const keysToRemove = await buildSessionKeysToRemoveStruct(client, {\n * keys: [\"0x...\", \"0x...\"],\n * });\n * ```\n *\n * @param {Client<TTransport, TChain, TAccount>} client The client instance used to interact with the smart account\n * @param {BuildSessionKeysToRemoveStructParams<TAccount>} args Arguments to configure the session key removal process\n * @returns {Promise<{ sessionKey: Address; predecessor: Address }[]>} A promise that resolves to an array of objects each containing a session key and its predecessor\n */\nexport async function buildSessionKeysToRemoveStruct<\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 args: BuildSessionKeysToRemoveStructParams\n): Promise<{ sessionKey: Address; predecessor: Address }[]> {\n const { keys, pluginAddress, account = client.account } = args;\n\n if (!account) throw new AccountNotFoundError();\n\n const contract = SessionKeyPlugin.getContract(client, pluginAddress);\n return (\n await Promise.all(\n keys.map(async (key) => {\n return [\n key,\n await contract.read.findPredecessor([account.address, key]),\n ];\n })\n )\n ).map(([key, predecessor]) => ({\n sessionKey: key,\n predecessor,\n }));\n}\n"]}