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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (389) hide show
  1. package/dist/esm/plugindefs/multi-owner/config.js +2 -2
  2. package/dist/esm/plugindefs/multi-owner/config.js.map +1 -1
  3. package/dist/esm/plugindefs/multisig/config.js +2 -2
  4. package/dist/esm/plugindefs/multisig/config.js.map +1 -1
  5. package/dist/esm/plugindefs/session-key/config.js +2 -3
  6. package/dist/esm/plugindefs/session-key/config.js.map +1 -1
  7. package/dist/esm/src/index.d.ts +1 -1
  8. package/dist/esm/src/index.js +4 -1
  9. package/dist/esm/src/index.js.map +1 -1
  10. package/dist/esm/src/light-account/accounts/account.js +20 -0
  11. package/dist/esm/src/light-account/accounts/account.js.map +1 -1
  12. package/dist/esm/src/light-account/accounts/base.js +8 -0
  13. package/dist/esm/src/light-account/accounts/base.js.map +1 -1
  14. package/dist/esm/src/light-account/accounts/multiOwner.js +22 -0
  15. package/dist/esm/src/light-account/accounts/multiOwner.js.map +1 -1
  16. package/dist/esm/src/light-account/actions/transferOwnership.d.ts +25 -0
  17. package/dist/esm/src/light-account/actions/transferOwnership.js +25 -0
  18. package/dist/esm/src/light-account/actions/transferOwnership.js.map +1 -1
  19. package/dist/esm/src/light-account/actions/updateOwners.d.ts +24 -0
  20. package/dist/esm/src/light-account/actions/updateOwners.js +24 -0
  21. package/dist/esm/src/light-account/actions/updateOwners.js.map +1 -1
  22. package/dist/esm/src/light-account/clients/alchemyClient.js +20 -0
  23. package/dist/esm/src/light-account/clients/alchemyClient.js.map +1 -1
  24. package/dist/esm/src/light-account/clients/client.d.ts +1 -2
  25. package/dist/esm/src/light-account/clients/client.js +23 -3
  26. package/dist/esm/src/light-account/clients/client.js.map +1 -1
  27. package/dist/esm/src/light-account/clients/multiOwnerAlchemyClient.js +20 -0
  28. package/dist/esm/src/light-account/clients/multiOwnerAlchemyClient.js.map +1 -1
  29. package/dist/esm/src/light-account/clients/multiOwnerLightAccount.d.ts +1 -2
  30. package/dist/esm/src/light-account/clients/multiOwnerLightAccount.js +23 -3
  31. package/dist/esm/src/light-account/clients/multiOwnerLightAccount.js.map +1 -1
  32. package/dist/esm/src/light-account/decorators/lightAccount.d.ts +19 -0
  33. package/dist/esm/src/light-account/decorators/lightAccount.js +19 -0
  34. package/dist/esm/src/light-account/decorators/lightAccount.js.map +1 -1
  35. package/dist/esm/src/light-account/decorators/multiOwnerLightAccount.d.ts +19 -0
  36. package/dist/esm/src/light-account/decorators/multiOwnerLightAccount.js +19 -0
  37. package/dist/esm/src/light-account/decorators/multiOwnerLightAccount.js.map +1 -1
  38. package/dist/esm/src/light-account/types.d.ts +4 -0
  39. package/dist/esm/src/light-account/utils.d.ts +46 -0
  40. package/dist/esm/src/light-account/utils.js +46 -0
  41. package/dist/esm/src/light-account/utils.js.map +1 -1
  42. package/dist/esm/src/msca/account/multiOwnerAccount.js +23 -0
  43. package/dist/esm/src/msca/account/multiOwnerAccount.js.map +1 -1
  44. package/dist/esm/src/msca/account/multisigAccount.js +24 -0
  45. package/dist/esm/src/msca/account/multisigAccount.js.map +1 -1
  46. package/dist/esm/src/msca/account-loupe/decorator.d.ts +15 -0
  47. package/dist/esm/src/msca/account-loupe/decorator.js +15 -0
  48. package/dist/esm/src/msca/account-loupe/decorator.js.map +1 -1
  49. package/dist/esm/src/msca/client/alchemyClient.js +20 -0
  50. package/dist/esm/src/msca/client/alchemyClient.js.map +1 -1
  51. package/dist/esm/src/msca/client/client.d.ts +2 -6
  52. package/dist/esm/src/msca/client/client.js +50 -6
  53. package/dist/esm/src/msca/client/client.js.map +1 -1
  54. package/dist/esm/src/msca/client/multiSigAlchemyClient.js +22 -0
  55. package/dist/esm/src/msca/client/multiSigAlchemyClient.js.map +1 -1
  56. package/dist/esm/src/msca/errors.d.ts +12 -0
  57. package/dist/esm/src/msca/errors.js +12 -0
  58. package/dist/esm/src/msca/errors.js.map +1 -1
  59. package/dist/esm/src/msca/plugin-manager/decorator.d.ts +15 -0
  60. package/dist/esm/src/msca/plugin-manager/decorator.js +15 -0
  61. package/dist/esm/src/msca/plugin-manager/decorator.js.map +1 -1
  62. package/dist/esm/src/msca/plugin-manager/installPlugin.d.ts +21 -0
  63. package/dist/esm/src/msca/plugin-manager/installPlugin.js +22 -0
  64. package/dist/esm/src/msca/plugin-manager/installPlugin.js.map +1 -1
  65. package/dist/esm/src/msca/plugins/multi-owner/extension.d.ts +15 -0
  66. package/dist/esm/src/msca/plugins/multi-owner/extension.js +19 -0
  67. package/dist/esm/src/msca/plugins/multi-owner/extension.js.map +1 -1
  68. package/dist/esm/src/msca/plugins/multi-owner/plugin.js.map +1 -1
  69. package/dist/esm/src/msca/plugins/multisig/actions/isOwnerOf.js +2 -0
  70. package/dist/esm/src/msca/plugins/multisig/actions/isOwnerOf.js.map +1 -1
  71. package/dist/esm/src/msca/plugins/multisig/actions/proposeUserOperation.js +2 -0
  72. package/dist/esm/src/msca/plugins/multisig/actions/proposeUserOperation.js.map +1 -1
  73. package/dist/esm/src/msca/plugins/multisig/actions/readOwners.js +2 -0
  74. package/dist/esm/src/msca/plugins/multisig/actions/readOwners.js.map +1 -1
  75. package/dist/esm/src/msca/plugins/multisig/actions/signMultisigUserOperation.js +3 -0
  76. package/dist/esm/src/msca/plugins/multisig/actions/signMultisigUserOperation.js.map +1 -1
  77. package/dist/esm/src/msca/plugins/multisig/extension.d.ts +13 -0
  78. package/dist/esm/src/msca/plugins/multisig/extension.js +13 -0
  79. package/dist/esm/src/msca/plugins/multisig/extension.js.map +1 -1
  80. package/dist/esm/src/msca/plugins/multisig/middleware.d.ts +12 -0
  81. package/dist/esm/src/msca/plugins/multisig/middleware.js +15 -0
  82. package/dist/esm/src/msca/plugins/multisig/middleware.js.map +1 -1
  83. package/dist/esm/src/msca/plugins/multisig/plugin.js.map +1 -1
  84. package/dist/esm/src/msca/plugins/multisig/signer.js +2 -0
  85. package/dist/esm/src/msca/plugins/multisig/signer.js.map +1 -1
  86. package/dist/esm/src/msca/plugins/multisig/utils/combineSignatures.d.ts +25 -0
  87. package/dist/esm/src/msca/plugins/multisig/utils/combineSignatures.js +25 -0
  88. package/dist/esm/src/msca/plugins/multisig/utils/combineSignatures.js.map +1 -1
  89. package/dist/esm/src/msca/plugins/multisig/utils/formatSignatures.d.ts +10 -0
  90. package/dist/esm/src/msca/plugins/multisig/utils/formatSignatures.js +11 -0
  91. package/dist/esm/src/msca/plugins/multisig/utils/formatSignatures.js.map +1 -1
  92. package/dist/esm/src/msca/plugins/multisig/utils/getSignerType.d.ts +19 -0
  93. package/dist/esm/src/msca/plugins/multisig/utils/getSignerType.js +19 -0
  94. package/dist/esm/src/msca/plugins/multisig/utils/getSignerType.js.map +1 -1
  95. package/dist/esm/src/msca/plugins/multisig/utils/splitAggregatedSignature.d.ts +10 -0
  96. package/dist/esm/src/msca/plugins/multisig/utils/splitAggregatedSignature.js +20 -0
  97. package/dist/esm/src/msca/plugins/multisig/utils/splitAggregatedSignature.js.map +1 -1
  98. package/dist/esm/src/msca/plugins/session-key/debug-session-key-bytecode.d.ts +7 -0
  99. package/dist/esm/src/msca/plugins/session-key/debug-session-key-bytecode.js +7 -0
  100. package/dist/esm/src/msca/plugins/session-key/debug-session-key-bytecode.js.map +1 -1
  101. package/dist/esm/src/msca/plugins/session-key/extension.d.ts +13 -0
  102. package/dist/esm/src/msca/plugins/session-key/extension.js +23 -0
  103. package/dist/esm/src/msca/plugins/session-key/extension.js.map +1 -1
  104. package/dist/esm/src/msca/plugins/session-key/permissions.d.ts +150 -1
  105. package/dist/esm/src/msca/plugins/session-key/permissions.js +150 -1
  106. package/dist/esm/src/msca/plugins/session-key/permissions.js.map +1 -1
  107. package/dist/esm/src/msca/plugins/session-key/plugin.js.map +1 -1
  108. package/dist/esm/src/msca/plugins/session-key/signer.d.ts +81 -1
  109. package/dist/esm/src/msca/plugins/session-key/signer.js +80 -0
  110. package/dist/esm/src/msca/plugins/session-key/signer.js.map +1 -1
  111. package/dist/esm/src/msca/plugins/session-key/utils.d.ts +18 -0
  112. package/dist/esm/src/msca/plugins/session-key/utils.js +18 -0
  113. package/dist/esm/src/msca/plugins/session-key/utils.js.map +1 -1
  114. package/dist/esm/src/msca/utils.d.ts +50 -0
  115. package/dist/esm/src/msca/utils.js +50 -0
  116. package/dist/esm/src/msca/utils.js.map +1 -1
  117. package/dist/types/plugindefs/multi-owner/config.d.ts.map +1 -1
  118. package/dist/types/plugindefs/multisig/config.d.ts.map +1 -1
  119. package/dist/types/plugindefs/session-key/config.d.ts.map +1 -1
  120. package/dist/types/src/index.d.ts +1 -1
  121. package/dist/types/src/index.d.ts.map +1 -1
  122. package/dist/types/src/light-account/clients/client.d.ts +1 -2
  123. package/dist/types/src/light-account/clients/client.d.ts.map +1 -1
  124. package/dist/types/src/light-account/clients/multiOwnerLightAccount.d.ts +1 -2
  125. package/dist/types/src/light-account/clients/multiOwnerLightAccount.d.ts.map +1 -1
  126. package/dist/types/src/msca/client/client.d.ts +2 -6
  127. package/dist/types/src/msca/client/client.d.ts.map +1 -1
  128. package/dist/types/src/msca/plugins/multi-owner/plugin.d.ts.map +1 -1
  129. package/dist/types/src/msca/plugins/multisig/plugin.d.ts.map +1 -1
  130. package/dist/types/src/msca/plugins/session-key/plugin.d.ts.map +1 -1
  131. package/dist/types/src/msca/plugins/session-key/signer.d.ts +1 -1
  132. package/dist/types/src/msca/plugins/session-key/signer.d.ts.map +1 -1
  133. package/package.json +12 -15
  134. package/plugindefs/multi-owner/config.ts +4 -5
  135. package/plugindefs/multisig/config.ts +4 -5
  136. package/plugindefs/session-key/config.ts +4 -6
  137. package/src/index.ts +1 -0
  138. package/src/light-account/clients/client.ts +8 -13
  139. package/src/light-account/clients/multiOwnerLightAccount.ts +11 -13
  140. package/src/msca/client/client.ts +24 -36
  141. package/src/msca/plugins/multi-owner/plugin.ts +5 -1
  142. package/src/msca/plugins/multisig/plugin.ts +5 -1
  143. package/src/msca/plugins/session-key/plugin.ts +5 -1
  144. package/src/msca/plugins/session-key/signer.ts +1 -1
  145. package/dist/cjs/package.json +0 -1
  146. package/dist/cjs/plugindefs/index.d.ts +0 -3
  147. package/dist/cjs/plugindefs/index.js +0 -10
  148. package/dist/cjs/plugindefs/index.js.map +0 -1
  149. package/dist/cjs/plugindefs/multi-owner/abi.d.ts +0 -698
  150. package/dist/cjs/plugindefs/multi-owner/abi.js +0 -612
  151. package/dist/cjs/plugindefs/multi-owner/abi.js.map +0 -1
  152. package/dist/cjs/plugindefs/multi-owner/config.d.ts +0 -2
  153. package/dist/cjs/plugindefs/multi-owner/config.js +0 -31
  154. package/dist/cjs/plugindefs/multi-owner/config.js.map +0 -1
  155. package/dist/cjs/plugindefs/multisig/abi.d.ts +0 -791
  156. package/dist/cjs/plugindefs/multisig/abi.js +0 -1031
  157. package/dist/cjs/plugindefs/multisig/abi.js.map +0 -1
  158. package/dist/cjs/plugindefs/multisig/config.d.ts +0 -2
  159. package/dist/cjs/plugindefs/multisig/config.js +0 -30
  160. package/dist/cjs/plugindefs/multisig/config.js.map +0 -1
  161. package/dist/cjs/plugindefs/session-key/abi.d.ts +0 -1061
  162. package/dist/cjs/plugindefs/session-key/abi.js +0 -916
  163. package/dist/cjs/plugindefs/session-key/abi.js.map +0 -1
  164. package/dist/cjs/plugindefs/session-key/config.d.ts +0 -2
  165. package/dist/cjs/plugindefs/session-key/config.js +0 -43
  166. package/dist/cjs/plugindefs/session-key/config.js.map +0 -1
  167. package/dist/cjs/plugindefs/types.d.ts +0 -15
  168. package/dist/cjs/plugindefs/types.js +0 -3
  169. package/dist/cjs/plugindefs/types.js.map +0 -1
  170. package/dist/cjs/src/index.d.ts +0 -53
  171. package/dist/cjs/src/index.js +0 -105
  172. package/dist/cjs/src/index.js.map +0 -1
  173. package/dist/cjs/src/light-account/abis/LightAccountAbi_v1.d.ts +0 -532
  174. package/dist/cjs/src/light-account/abis/LightAccountAbi_v1.js +0 -382
  175. package/dist/cjs/src/light-account/abis/LightAccountAbi_v1.js.map +0 -1
  176. package/dist/cjs/src/light-account/abis/LightAccountAbi_v2.d.ts +0 -491
  177. package/dist/cjs/src/light-account/abis/LightAccountAbi_v2.js +0 -358
  178. package/dist/cjs/src/light-account/abis/LightAccountAbi_v2.js.map +0 -1
  179. package/dist/cjs/src/light-account/abis/LightAccountFactoryAbi_v1.d.ts +0 -55
  180. package/dist/cjs/src/light-account/abis/LightAccountFactoryAbi_v1.js +0 -78
  181. package/dist/cjs/src/light-account/abis/LightAccountFactoryAbi_v1.js.map +0 -1
  182. package/dist/cjs/src/light-account/abis/LightAccountFactoryAbi_v2.d.ts +0 -256
  183. package/dist/cjs/src/light-account/abis/LightAccountFactoryAbi_v2.js +0 -213
  184. package/dist/cjs/src/light-account/abis/LightAccountFactoryAbi_v2.js.map +0 -1
  185. package/dist/cjs/src/light-account/abis/MultiOwnerLightAccountAbi.d.ts +0 -507
  186. package/dist/cjs/src/light-account/abis/MultiOwnerLightAccountAbi.js +0 -375
  187. package/dist/cjs/src/light-account/abis/MultiOwnerLightAccountAbi.js.map +0 -1
  188. package/dist/cjs/src/light-account/abis/MultiOwnerLightAccountFactoryAbi.d.ts +0 -286
  189. package/dist/cjs/src/light-account/abis/MultiOwnerLightAccountFactoryAbi.js +0 -232
  190. package/dist/cjs/src/light-account/abis/MultiOwnerLightAccountFactoryAbi.js.map +0 -1
  191. package/dist/cjs/src/light-account/accounts/account.d.ts +0 -17
  192. package/dist/cjs/src/light-account/accounts/account.js +0 -79
  193. package/dist/cjs/src/light-account/accounts/account.js.map +0 -1
  194. package/dist/cjs/src/light-account/accounts/base.d.ts +0 -15
  195. package/dist/cjs/src/light-account/accounts/base.js +0 -143
  196. package/dist/cjs/src/light-account/accounts/base.js.map +0 -1
  197. package/dist/cjs/src/light-account/accounts/multiOwner.d.ts +0 -18
  198. package/dist/cjs/src/light-account/accounts/multiOwner.js +0 -80
  199. package/dist/cjs/src/light-account/accounts/multiOwner.js.map +0 -1
  200. package/dist/cjs/src/light-account/actions/transferOwnership.d.ts +0 -8
  201. package/dist/cjs/src/light-account/actions/transferOwnership.js +0 -28
  202. package/dist/cjs/src/light-account/actions/transferOwnership.js.map +0 -1
  203. package/dist/cjs/src/light-account/actions/updateOwners.d.ts +0 -9
  204. package/dist/cjs/src/light-account/actions/updateOwners.js +0 -27
  205. package/dist/cjs/src/light-account/actions/updateOwners.js.map +0 -1
  206. package/dist/cjs/src/light-account/clients/alchemyClient.d.ts +0 -6
  207. package/dist/cjs/src/light-account/clients/alchemyClient.js +0 -25
  208. package/dist/cjs/src/light-account/clients/alchemyClient.js.map +0 -1
  209. package/dist/cjs/src/light-account/clients/client.d.ts +0 -10
  210. package/dist/cjs/src/light-account/clients/client.js +0 -22
  211. package/dist/cjs/src/light-account/clients/client.js.map +0 -1
  212. package/dist/cjs/src/light-account/clients/multiOwnerAlchemyClient.d.ts +0 -6
  213. package/dist/cjs/src/light-account/clients/multiOwnerAlchemyClient.js +0 -25
  214. package/dist/cjs/src/light-account/clients/multiOwnerAlchemyClient.js.map +0 -1
  215. package/dist/cjs/src/light-account/clients/multiOwnerLightAccount.d.ts +0 -10
  216. package/dist/cjs/src/light-account/clients/multiOwnerLightAccount.js +0 -22
  217. package/dist/cjs/src/light-account/clients/multiOwnerLightAccount.js.map +0 -1
  218. package/dist/cjs/src/light-account/decorators/lightAccount.d.ts +0 -8
  219. package/dist/cjs/src/light-account/decorators/lightAccount.js +0 -9
  220. package/dist/cjs/src/light-account/decorators/lightAccount.js.map +0 -1
  221. package/dist/cjs/src/light-account/decorators/multiOwnerLightAccount.d.ts +0 -8
  222. package/dist/cjs/src/light-account/decorators/multiOwnerLightAccount.js +0 -9
  223. package/dist/cjs/src/light-account/decorators/multiOwnerLightAccount.js.map +0 -1
  224. package/dist/cjs/src/light-account/e2e-tests/constants.d.ts +0 -6
  225. package/dist/cjs/src/light-account/e2e-tests/constants.js +0 -10
  226. package/dist/cjs/src/light-account/e2e-tests/constants.js.map +0 -1
  227. package/dist/cjs/src/light-account/types.d.ts +0 -31
  228. package/dist/cjs/src/light-account/types.js +0 -3
  229. package/dist/cjs/src/light-account/types.js.map +0 -1
  230. package/dist/cjs/src/light-account/utils.d.ts +0 -10
  231. package/dist/cjs/src/light-account/utils.js +0 -108
  232. package/dist/cjs/src/light-account/utils.js.map +0 -1
  233. package/dist/cjs/src/msca/abis/IAccountLoupe.d.ts +0 -79
  234. package/dist/cjs/src/msca/abis/IAccountLoupe.js +0 -82
  235. package/dist/cjs/src/msca/abis/IAccountLoupe.js.map +0 -1
  236. package/dist/cjs/src/msca/abis/IPlugin.d.ts +0 -474
  237. package/dist/cjs/src/msca/abis/IPlugin.js +0 -400
  238. package/dist/cjs/src/msca/abis/IPlugin.js.map +0 -1
  239. package/dist/cjs/src/msca/abis/IPluginManager.d.ts +0 -101
  240. package/dist/cjs/src/msca/abis/IPluginManager.js +0 -109
  241. package/dist/cjs/src/msca/abis/IPluginManager.js.map +0 -1
  242. package/dist/cjs/src/msca/abis/IStandardExecutor.d.ts +0 -50
  243. package/dist/cjs/src/msca/abis/IStandardExecutor.js +0 -35
  244. package/dist/cjs/src/msca/abis/IStandardExecutor.js.map +0 -1
  245. package/dist/cjs/src/msca/abis/MultiOwnerModularAccountFactory.d.ts +0 -234
  246. package/dist/cjs/src/msca/abis/MultiOwnerModularAccountFactory.js +0 -194
  247. package/dist/cjs/src/msca/abis/MultiOwnerModularAccountFactory.js.map +0 -1
  248. package/dist/cjs/src/msca/abis/MultisigModularAccountFactory.d.ts +0 -246
  249. package/dist/cjs/src/msca/abis/MultisigModularAccountFactory.js +0 -320
  250. package/dist/cjs/src/msca/abis/MultisigModularAccountFactory.js.map +0 -1
  251. package/dist/cjs/src/msca/abis/UpgradeableModularAccount.d.ts +0 -880
  252. package/dist/cjs/src/msca/abis/UpgradeableModularAccount.js +0 -649
  253. package/dist/cjs/src/msca/abis/UpgradeableModularAccount.js.map +0 -1
  254. package/dist/cjs/src/msca/account/multiOwnerAccount.d.ts +0 -12
  255. package/dist/cjs/src/msca/account/multiOwnerAccount.js +0 -60
  256. package/dist/cjs/src/msca/account/multiOwnerAccount.js.map +0 -1
  257. package/dist/cjs/src/msca/account/multisigAccount.d.ts +0 -17
  258. package/dist/cjs/src/msca/account/multisigAccount.js +0 -71
  259. package/dist/cjs/src/msca/account/multisigAccount.js.map +0 -1
  260. package/dist/cjs/src/msca/account/standardExecutor.d.ts +0 -2
  261. package/dist/cjs/src/msca/account/standardExecutor.js +0 -28
  262. package/dist/cjs/src/msca/account/standardExecutor.js.map +0 -1
  263. package/dist/cjs/src/msca/account-loupe/decorator.d.ts +0 -16
  264. package/dist/cjs/src/msca/account-loupe/decorator.js +0 -66
  265. package/dist/cjs/src/msca/account-loupe/decorator.js.map +0 -1
  266. package/dist/cjs/src/msca/account-loupe/types.d.ts +0 -16
  267. package/dist/cjs/src/msca/account-loupe/types.js +0 -3
  268. package/dist/cjs/src/msca/account-loupe/types.js.map +0 -1
  269. package/dist/cjs/src/msca/client/alchemyClient.d.ts +0 -6
  270. package/dist/cjs/src/msca/client/alchemyClient.js +0 -28
  271. package/dist/cjs/src/msca/client/alchemyClient.js.map +0 -1
  272. package/dist/cjs/src/msca/client/client.d.ts +0 -17
  273. package/dist/cjs/src/msca/client/client.js +0 -49
  274. package/dist/cjs/src/msca/client/client.js.map +0 -1
  275. package/dist/cjs/src/msca/client/multiSigAlchemyClient.d.ts +0 -6
  276. package/dist/cjs/src/msca/client/multiSigAlchemyClient.js +0 -31
  277. package/dist/cjs/src/msca/client/multiSigAlchemyClient.js.map +0 -1
  278. package/dist/cjs/src/msca/e2e-tests/constants.d.ts +0 -3
  279. package/dist/cjs/src/msca/e2e-tests/constants.js +0 -7
  280. package/dist/cjs/src/msca/e2e-tests/constants.js.map +0 -1
  281. package/dist/cjs/src/msca/errors.d.ts +0 -17
  282. package/dist/cjs/src/msca/errors.js +0 -53
  283. package/dist/cjs/src/msca/errors.js.map +0 -1
  284. package/dist/cjs/src/msca/plugin-manager/decorator.d.ts +0 -11
  285. package/dist/cjs/src/msca/plugin-manager/decorator.js +0 -13
  286. package/dist/cjs/src/msca/plugin-manager/decorator.js.map +0 -1
  287. package/dist/cjs/src/msca/plugin-manager/installPlugin.d.ts +0 -11
  288. package/dist/cjs/src/msca/plugin-manager/installPlugin.js +0 -48
  289. package/dist/cjs/src/msca/plugin-manager/installPlugin.js.map +0 -1
  290. package/dist/cjs/src/msca/plugin-manager/uninstallPlugin.d.ts +0 -9
  291. package/dist/cjs/src/msca/plugin-manager/uninstallPlugin.js +0 -35
  292. package/dist/cjs/src/msca/plugin-manager/uninstallPlugin.js.map +0 -1
  293. package/dist/cjs/src/msca/plugins/multi-owner/extension.d.ts +0 -13
  294. package/dist/cjs/src/msca/plugins/multi-owner/extension.js +0 -26
  295. package/dist/cjs/src/msca/plugins/multi-owner/extension.js.map +0 -1
  296. package/dist/cjs/src/msca/plugins/multi-owner/index.d.ts +0 -3
  297. package/dist/cjs/src/msca/plugins/multi-owner/index.js +0 -10
  298. package/dist/cjs/src/msca/plugins/multi-owner/index.js.map +0 -1
  299. package/dist/cjs/src/msca/plugins/multi-owner/plugin.d.ts +0 -793
  300. package/dist/cjs/src/msca/plugins/multi-owner/plugin.js +0 -695
  301. package/dist/cjs/src/msca/plugins/multi-owner/plugin.js.map +0 -1
  302. package/dist/cjs/src/msca/plugins/multi-owner/signer.d.ts +0 -215
  303. package/dist/cjs/src/msca/plugins/multi-owner/signer.js +0 -47
  304. package/dist/cjs/src/msca/plugins/multi-owner/signer.js.map +0 -1
  305. package/dist/cjs/src/msca/plugins/multisig/actions/getThreshold.d.ts +0 -4
  306. package/dist/cjs/src/msca/plugins/multisig/actions/getThreshold.js +0 -20
  307. package/dist/cjs/src/msca/plugins/multisig/actions/getThreshold.js.map +0 -1
  308. package/dist/cjs/src/msca/plugins/multisig/actions/isOwnerOf.d.ts +0 -6
  309. package/dist/cjs/src/msca/plugins/multisig/actions/isOwnerOf.js +0 -15
  310. package/dist/cjs/src/msca/plugins/multisig/actions/isOwnerOf.js.map +0 -1
  311. package/dist/cjs/src/msca/plugins/multisig/actions/proposeUserOperation.d.ts +0 -4
  312. package/dist/cjs/src/msca/plugins/multisig/actions/proposeUserOperation.js +0 -47
  313. package/dist/cjs/src/msca/plugins/multisig/actions/proposeUserOperation.js.map +0 -1
  314. package/dist/cjs/src/msca/plugins/multisig/actions/readOwners.d.ts +0 -4
  315. package/dist/cjs/src/msca/plugins/multisig/actions/readOwners.js +0 -15
  316. package/dist/cjs/src/msca/plugins/multisig/actions/readOwners.js.map +0 -1
  317. package/dist/cjs/src/msca/plugins/multisig/actions/signMultisigUserOperation.d.ts +0 -4
  318. package/dist/cjs/src/msca/plugins/multisig/actions/signMultisigUserOperation.js +0 -54
  319. package/dist/cjs/src/msca/plugins/multisig/actions/signMultisigUserOperation.js.map +0 -1
  320. package/dist/cjs/src/msca/plugins/multisig/extension.d.ts +0 -17
  321. package/dist/cjs/src/msca/plugins/multisig/extension.js +0 -19
  322. package/dist/cjs/src/msca/plugins/multisig/extension.js.map +0 -1
  323. package/dist/cjs/src/msca/plugins/multisig/index.d.ts +0 -5
  324. package/dist/cjs/src/msca/plugins/multisig/index.js +0 -12
  325. package/dist/cjs/src/msca/plugins/multisig/index.js.map +0 -1
  326. package/dist/cjs/src/msca/plugins/multisig/middleware.d.ts +0 -3
  327. package/dist/cjs/src/msca/plugins/multisig/middleware.js +0 -97
  328. package/dist/cjs/src/msca/plugins/multisig/middleware.js.map +0 -1
  329. package/dist/cjs/src/msca/plugins/multisig/plugin.d.ts +0 -892
  330. package/dist/cjs/src/msca/plugins/multisig/plugin.js +0 -740
  331. package/dist/cjs/src/msca/plugins/multisig/plugin.js.map +0 -1
  332. package/dist/cjs/src/msca/plugins/multisig/signer.d.ts +0 -223
  333. package/dist/cjs/src/msca/plugins/multisig/signer.js +0 -57
  334. package/dist/cjs/src/msca/plugins/multisig/signer.js.map +0 -1
  335. package/dist/cjs/src/msca/plugins/multisig/types.d.ts +0 -34
  336. package/dist/cjs/src/msca/plugins/multisig/types.js +0 -3
  337. package/dist/cjs/src/msca/plugins/multisig/types.js.map +0 -1
  338. package/dist/cjs/src/msca/plugins/multisig/utils/combineSignatures.d.ts +0 -10
  339. package/dist/cjs/src/msca/plugins/multisig/utils/combineSignatures.js +0 -15
  340. package/dist/cjs/src/msca/plugins/multisig/utils/combineSignatures.js.map +0 -1
  341. package/dist/cjs/src/msca/plugins/multisig/utils/formatSignatures.d.ts +0 -2
  342. package/dist/cjs/src/msca/plugins/multisig/utils/formatSignatures.js +0 -42
  343. package/dist/cjs/src/msca/plugins/multisig/utils/formatSignatures.js.map +0 -1
  344. package/dist/cjs/src/msca/plugins/multisig/utils/getSignerType.d.ts +0 -10
  345. package/dist/cjs/src/msca/plugins/multisig/utils/getSignerType.js +0 -13
  346. package/dist/cjs/src/msca/plugins/multisig/utils/getSignerType.js.map +0 -1
  347. package/dist/cjs/src/msca/plugins/multisig/utils/index.d.ts +0 -8
  348. package/dist/cjs/src/msca/plugins/multisig/utils/index.js +0 -12
  349. package/dist/cjs/src/msca/plugins/multisig/utils/index.js.map +0 -1
  350. package/dist/cjs/src/msca/plugins/multisig/utils/splitAggregatedSignature.d.ts +0 -16
  351. package/dist/cjs/src/msca/plugins/multisig/utils/splitAggregatedSignature.js +0 -74
  352. package/dist/cjs/src/msca/plugins/multisig/utils/splitAggregatedSignature.js.map +0 -1
  353. package/dist/cjs/src/msca/plugins/session-key/SessionKeyPermissionsUpdatesAbi.d.ts +0 -117
  354. package/dist/cjs/src/msca/plugins/session-key/SessionKeyPermissionsUpdatesAbi.js +0 -115
  355. package/dist/cjs/src/msca/plugins/session-key/SessionKeyPermissionsUpdatesAbi.js.map +0 -1
  356. package/dist/cjs/src/msca/plugins/session-key/debug-session-key-bytecode.d.ts +0 -1
  357. package/dist/cjs/src/msca/plugins/session-key/debug-session-key-bytecode.js +0 -5
  358. package/dist/cjs/src/msca/plugins/session-key/debug-session-key-bytecode.js.map +0 -1
  359. package/dist/cjs/src/msca/plugins/session-key/extension.d.ts +0 -30
  360. package/dist/cjs/src/msca/plugins/session-key/extension.js +0 -156
  361. package/dist/cjs/src/msca/plugins/session-key/extension.js.map +0 -1
  362. package/dist/cjs/src/msca/plugins/session-key/index.d.ts +0 -3
  363. package/dist/cjs/src/msca/plugins/session-key/index.js +0 -10
  364. package/dist/cjs/src/msca/plugins/session-key/index.js.map +0 -1
  365. package/dist/cjs/src/msca/plugins/session-key/permissions.d.ts +0 -53
  366. package/dist/cjs/src/msca/plugins/session-key/permissions.js +0 -153
  367. package/dist/cjs/src/msca/plugins/session-key/permissions.js.map +0 -1
  368. package/dist/cjs/src/msca/plugins/session-key/plugin.d.ts +0 -1200
  369. package/dist/cjs/src/msca/plugins/session-key/plugin.js +0 -1044
  370. package/dist/cjs/src/msca/plugins/session-key/plugin.js.map +0 -1
  371. package/dist/cjs/src/msca/plugins/session-key/signer.d.ts +0 -233
  372. package/dist/cjs/src/msca/plugins/session-key/signer.js +0 -101
  373. package/dist/cjs/src/msca/plugins/session-key/signer.js.map +0 -1
  374. package/dist/cjs/src/msca/plugins/session-key/utils.d.ts +0 -11
  375. package/dist/cjs/src/msca/plugins/session-key/utils.js +0 -22
  376. package/dist/cjs/src/msca/plugins/session-key/utils.js.map +0 -1
  377. package/dist/cjs/src/msca/plugins/types.d.ts +0 -12
  378. package/dist/cjs/src/msca/plugins/types.js +0 -3
  379. package/dist/cjs/src/msca/plugins/types.js.map +0 -1
  380. package/dist/cjs/src/msca/utils.d.ts +0 -17
  381. package/dist/cjs/src/msca/utils.js +0 -99
  382. package/dist/cjs/src/msca/utils.js.map +0 -1
  383. package/dist/esm/package.json +0 -1
  384. package/dist/esm/src/light-account/e2e-tests/constants.d.ts +0 -6
  385. package/dist/esm/src/light-account/e2e-tests/constants.js +0 -7
  386. package/dist/esm/src/light-account/e2e-tests/constants.js.map +0 -1
  387. package/dist/types/src/light-account/e2e-tests/constants.d.ts +0 -7
  388. package/dist/types/src/light-account/e2e-tests/constants.d.ts.map +0 -1
  389. package/src/light-account/e2e-tests/constants.ts +0 -8
@@ -31,6 +31,9 @@ export type GasSpendLimit = {
31
31
  spendLimit: bigint;
32
32
  refreshInterval?: number;
33
33
  };
34
+ /**
35
+ * A builder for creating the hex-encoded data for updating session key permissions.
36
+ */
34
37
  export declare class SessionKeyPermissionsBuilder {
35
38
  private _contractAccessControlType;
36
39
  private _contractAddressAccessEntrys;
@@ -40,14 +43,160 @@ export declare class SessionKeyPermissionsBuilder {
40
43
  private _erc20TokenSpendLimits;
41
44
  private _gasSpendLimit?;
42
45
  private _requiredPaymaster?;
46
+ /**
47
+ * Sets the access control type for the contract and returns the current instance for method chaining.
48
+ *
49
+ * @example
50
+ * ```ts
51
+ * import { SessionKeyPermissionsBuilder } from "@account-kit/smart-contracts";
52
+ *
53
+ * const builder = new SessionKeyPermissionsBuilder();
54
+ * builder.setContractAccessControlType(SessionKeyAccessListType.ALLOWLIST);
55
+ * ```
56
+ *
57
+ * @param {SessionKeyAccessListType} aclType The access control type for the session key
58
+ * @returns {SessionKeyPermissionsBuilder} The current instance for method chaining
59
+ */
43
60
  setContractAccessControlType(aclType: SessionKeyAccessListType): this;
61
+ /**
62
+ * Adds a contract access entry to the internal list of contract address access entries.
63
+ *
64
+ * @example
65
+ * ```ts
66
+ * import { SessionKeyPermissionsBuilder } from "@account-kit/smart-contracts";
67
+ *
68
+ * const builder = new SessionKeyPermissionsBuilder();
69
+ * builder.addContractAddressAccessEntry({
70
+ * contractAddress: "0x1234",
71
+ * isOnList: true,
72
+ * checkSelectors: true,
73
+ * });
74
+ * ```
75
+ *
76
+ * @param {ContractAccessEntry} entry the contract access entry to be added
77
+ * @returns {SessionKeyPermissionsBuilder} the instance of the current class for chaining
78
+ */
44
79
  addContractAddressAccessEntry(entry: ContractAccessEntry): this;
80
+ /**
81
+ * Adds a contract method entry to the `_contractMethodAccessEntrys` array.
82
+ *
83
+ * @example
84
+ * ```ts
85
+ * import { SessionKeyPermissionsBuilder } from "@account-kit/smart-contracts";
86
+ *
87
+ * const builder = new SessionKeyPermissionsBuilder();
88
+ * builder.addContractAddressAccessEntry({
89
+ * contractAddress: "0x1234",
90
+ * methodSelector: "0x45678",
91
+ * isOnList: true,
92
+ * });
93
+ * ```
94
+ *
95
+ * @param {ContractMethodEntry} entry The contract method entry to be added
96
+ * @returns {SessionKeyPermissionsBuilder} The instance of the class for method chaining
97
+ */
45
98
  addContractFunctionAccessEntry(entry: ContractMethodEntry): this;
99
+ /**
100
+ * Sets the time range for an object and returns the object itself for chaining.
101
+ *
102
+ * @example
103
+ * ```ts
104
+ * import { SessionKeyPermissionsBuilder } from "@account-kit/smart-contracts";
105
+ *
106
+ * const builder = new SessionKeyPermissionsBuilder();
107
+ * builder.setTimeRange({
108
+ * validFrom: Date.now(),
109
+ * validUntil: Date.now() + (15 * 60 * 1000),
110
+ * });
111
+ * ```
112
+ *
113
+ * @param {TimeRange} timeRange The time range to be set
114
+ * @returns {SessionKeyPermissionsBuilder} The current object for method chaining
115
+ */
46
116
  setTimeRange(timeRange: TimeRange): this;
117
+ /**
118
+ * Sets the native token spend limit and returns the instance for chaining.
119
+ *
120
+ * @example
121
+ * ```ts
122
+ * import { SessionKeyPermissionsBuilder } from "@account-kit/smart-contracts";
123
+ *
124
+ * const builder = new SessionKeyPermissionsBuilder();
125
+ * builder.setNativeTokenSpendLimit({
126
+ * spendLimit: 1000000000000000000n,
127
+ * refreshInterval: 3600,
128
+ * });
129
+ * ```
130
+ *
131
+ * @param {NativeTokenLimit} limit The limit to set for native token spending
132
+ * @returns {SessionKeyPermissionsBuilder} The instance for chaining
133
+ */
47
134
  setNativeTokenSpendLimit(limit: NativeTokenLimit): this;
135
+ /**
136
+ * Adds an ERC20 token spend limit to the list of limits and returns the updated object.
137
+ *
138
+ * @example
139
+ * ```ts
140
+ * import { SessionKeyPermissionsBuilder } from "@account-kit/smart-contracts";
141
+ *
142
+ * const builder = new SessionKeyPermissionsBuilder();
143
+ * builder.addErc20TokenSpendLimit({
144
+ * tokenAddress: "0x1234",
145
+ * spendLimit: 1000000000000000000n,
146
+ * refreshInterval: 3600,
147
+ * });
148
+ * ```
149
+ *
150
+ * @param {Erc20TokenLimit} limit The ERC20 token spend limit to be added
151
+ * @returns {object} The updated object with the new ERC20 token spend limit
152
+ */
48
153
  addErc20TokenSpendLimit(limit: Erc20TokenLimit): this;
49
- setGasSpendLimit(limit: GasSpendLimit): this;
154
+ /**
155
+ * Sets the gas spend limit and returns the current instance for method chaining.
156
+ *
157
+ * @example
158
+ * ```ts
159
+ * import { SessionKeyPermissionsBuilder } from "@account-kit/smart-contracts";
160
+ *
161
+ * const builder = new SessionKeyPermissionsBuilder();
162
+ * builder.setGasSpendLimit({
163
+ * spendLimit: 1000000000000000000n,
164
+ * refreshInterval: 3600,
165
+ * });
166
+ * ```
167
+ *
168
+ * @param {GasSpendLimit} limit - The gas spend limit to be set
169
+ * @returns {SessionKeyPermissionsBuilder} The current instance for chaining
170
+ */ setGasSpendLimit(limit: GasSpendLimit): this;
171
+ /**
172
+ * Sets the required paymaster address.
173
+ *
174
+ * @example
175
+ * ```ts
176
+ * import { SessionKeyPermissionsBuilder } from "@account-kit/smart-contracts";
177
+ *
178
+ * const builder = new SessionKeyPermissionsBuilder();
179
+ * builder.setRequiredPaymaster("0x1234");
180
+ * ```
181
+ *
182
+ * @param {Address} paymaster the address of the paymaster to be set
183
+ * @returns {SessionKeyPermissionsBuilder} the current instance for method chaining
184
+ */
50
185
  setRequiredPaymaster(paymaster: Address): this;
186
+ /**
187
+ * Encodes various function calls into an array of hexadecimal strings based on the provided permissions and limits.
188
+ *
189
+ * @example
190
+ * ```ts
191
+ * import { SessionKeyPermissionsBuilder } from "@account-kit/smart-contracts";
192
+ *
193
+ * const builder = new SessionKeyPermissionsBuilder();
194
+ * builder.setRequiredPaymaster("0x1234");
195
+ * const encoded = builder.encode();
196
+ * ```
197
+ *
198
+ * @returns {Hex[]} An array of encoded hexadecimal strings representing the function calls for setting access control, permissions, and limits.
199
+ */
51
200
  encode(): Hex[];
52
201
  private encodeIfDefined;
53
202
  }
@@ -6,6 +6,9 @@ export var SessionKeyAccessListType;
6
6
  SessionKeyAccessListType[SessionKeyAccessListType["DENYLIST"] = 1] = "DENYLIST";
7
7
  SessionKeyAccessListType[SessionKeyAccessListType["ALLOW_ALL_ACCESS"] = 2] = "ALLOW_ALL_ACCESS";
8
8
  })(SessionKeyAccessListType || (SessionKeyAccessListType = {}));
9
+ /**
10
+ * A builder for creating the hex-encoded data for updating session key permissions.
11
+ */
9
12
  export class SessionKeyPermissionsBuilder {
10
13
  constructor() {
11
14
  Object.defineProperty(this, "_contractAccessControlType", {
@@ -57,38 +60,184 @@ export class SessionKeyPermissionsBuilder {
57
60
  value: void 0
58
61
  });
59
62
  }
63
+ /**
64
+ * Sets the access control type for the contract and returns the current instance for method chaining.
65
+ *
66
+ * @example
67
+ * ```ts
68
+ * import { SessionKeyPermissionsBuilder } from "@account-kit/smart-contracts";
69
+ *
70
+ * const builder = new SessionKeyPermissionsBuilder();
71
+ * builder.setContractAccessControlType(SessionKeyAccessListType.ALLOWLIST);
72
+ * ```
73
+ *
74
+ * @param {SessionKeyAccessListType} aclType The access control type for the session key
75
+ * @returns {SessionKeyPermissionsBuilder} The current instance for method chaining
76
+ */
60
77
  setContractAccessControlType(aclType) {
61
78
  this._contractAccessControlType = aclType;
62
79
  return this;
63
80
  }
81
+ /**
82
+ * Adds a contract access entry to the internal list of contract address access entries.
83
+ *
84
+ * @example
85
+ * ```ts
86
+ * import { SessionKeyPermissionsBuilder } from "@account-kit/smart-contracts";
87
+ *
88
+ * const builder = new SessionKeyPermissionsBuilder();
89
+ * builder.addContractAddressAccessEntry({
90
+ * contractAddress: "0x1234",
91
+ * isOnList: true,
92
+ * checkSelectors: true,
93
+ * });
94
+ * ```
95
+ *
96
+ * @param {ContractAccessEntry} entry the contract access entry to be added
97
+ * @returns {SessionKeyPermissionsBuilder} the instance of the current class for chaining
98
+ */
64
99
  addContractAddressAccessEntry(entry) {
65
100
  this._contractAddressAccessEntrys.push(entry);
66
101
  return this;
67
102
  }
103
+ /**
104
+ * Adds a contract method entry to the `_contractMethodAccessEntrys` array.
105
+ *
106
+ * @example
107
+ * ```ts
108
+ * import { SessionKeyPermissionsBuilder } from "@account-kit/smart-contracts";
109
+ *
110
+ * const builder = new SessionKeyPermissionsBuilder();
111
+ * builder.addContractAddressAccessEntry({
112
+ * contractAddress: "0x1234",
113
+ * methodSelector: "0x45678",
114
+ * isOnList: true,
115
+ * });
116
+ * ```
117
+ *
118
+ * @param {ContractMethodEntry} entry The contract method entry to be added
119
+ * @returns {SessionKeyPermissionsBuilder} The instance of the class for method chaining
120
+ */
68
121
  addContractFunctionAccessEntry(entry) {
69
122
  this._contractMethodAccessEntrys.push(entry);
70
123
  return this;
71
124
  }
125
+ /**
126
+ * Sets the time range for an object and returns the object itself for chaining.
127
+ *
128
+ * @example
129
+ * ```ts
130
+ * import { SessionKeyPermissionsBuilder } from "@account-kit/smart-contracts";
131
+ *
132
+ * const builder = new SessionKeyPermissionsBuilder();
133
+ * builder.setTimeRange({
134
+ * validFrom: Date.now(),
135
+ * validUntil: Date.now() + (15 * 60 * 1000),
136
+ * });
137
+ * ```
138
+ *
139
+ * @param {TimeRange} timeRange The time range to be set
140
+ * @returns {SessionKeyPermissionsBuilder} The current object for method chaining
141
+ */
72
142
  setTimeRange(timeRange) {
73
143
  this._timeRange = timeRange;
74
144
  return this;
75
145
  }
146
+ /**
147
+ * Sets the native token spend limit and returns the instance for chaining.
148
+ *
149
+ * @example
150
+ * ```ts
151
+ * import { SessionKeyPermissionsBuilder } from "@account-kit/smart-contracts";
152
+ *
153
+ * const builder = new SessionKeyPermissionsBuilder();
154
+ * builder.setNativeTokenSpendLimit({
155
+ * spendLimit: 1000000000000000000n,
156
+ * refreshInterval: 3600,
157
+ * });
158
+ * ```
159
+ *
160
+ * @param {NativeTokenLimit} limit The limit to set for native token spending
161
+ * @returns {SessionKeyPermissionsBuilder} The instance for chaining
162
+ */
76
163
  setNativeTokenSpendLimit(limit) {
77
164
  this._nativeTokenSpendLimit = limit;
78
165
  return this;
79
166
  }
167
+ /**
168
+ * Adds an ERC20 token spend limit to the list of limits and returns the updated object.
169
+ *
170
+ * @example
171
+ * ```ts
172
+ * import { SessionKeyPermissionsBuilder } from "@account-kit/smart-contracts";
173
+ *
174
+ * const builder = new SessionKeyPermissionsBuilder();
175
+ * builder.addErc20TokenSpendLimit({
176
+ * tokenAddress: "0x1234",
177
+ * spendLimit: 1000000000000000000n,
178
+ * refreshInterval: 3600,
179
+ * });
180
+ * ```
181
+ *
182
+ * @param {Erc20TokenLimit} limit The ERC20 token spend limit to be added
183
+ * @returns {object} The updated object with the new ERC20 token spend limit
184
+ */
80
185
  addErc20TokenSpendLimit(limit) {
81
186
  this._erc20TokenSpendLimits.push(limit);
82
187
  return this;
83
188
  }
84
- setGasSpendLimit(limit) {
189
+ /**
190
+ * Sets the gas spend limit and returns the current instance for method chaining.
191
+ *
192
+ * @example
193
+ * ```ts
194
+ * import { SessionKeyPermissionsBuilder } from "@account-kit/smart-contracts";
195
+ *
196
+ * const builder = new SessionKeyPermissionsBuilder();
197
+ * builder.setGasSpendLimit({
198
+ * spendLimit: 1000000000000000000n,
199
+ * refreshInterval: 3600,
200
+ * });
201
+ * ```
202
+ *
203
+ * @param {GasSpendLimit} limit - The gas spend limit to be set
204
+ * @returns {SessionKeyPermissionsBuilder} The current instance for chaining
205
+ */ setGasSpendLimit(limit) {
85
206
  this._gasSpendLimit = limit;
86
207
  return this;
87
208
  }
209
+ /**
210
+ * Sets the required paymaster address.
211
+ *
212
+ * @example
213
+ * ```ts
214
+ * import { SessionKeyPermissionsBuilder } from "@account-kit/smart-contracts";
215
+ *
216
+ * const builder = new SessionKeyPermissionsBuilder();
217
+ * builder.setRequiredPaymaster("0x1234");
218
+ * ```
219
+ *
220
+ * @param {Address} paymaster the address of the paymaster to be set
221
+ * @returns {SessionKeyPermissionsBuilder} the current instance for method chaining
222
+ */
88
223
  setRequiredPaymaster(paymaster) {
89
224
  this._requiredPaymaster = paymaster;
90
225
  return this;
91
226
  }
227
+ /**
228
+ * Encodes various function calls into an array of hexadecimal strings based on the provided permissions and limits.
229
+ *
230
+ * @example
231
+ * ```ts
232
+ * import { SessionKeyPermissionsBuilder } from "@account-kit/smart-contracts";
233
+ *
234
+ * const builder = new SessionKeyPermissionsBuilder();
235
+ * builder.setRequiredPaymaster("0x1234");
236
+ * const encoded = builder.encode();
237
+ * ```
238
+ *
239
+ * @returns {Hex[]} An array of encoded hexadecimal strings representing the function calls for setting access control, permissions, and limits.
240
+ */
92
241
  encode() {
93
242
  return [
94
243
  encodeFunctionData({
@@ -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\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 /**\n * Sets the access control type for the contract and returns the current instance for method chaining.\n *\n * @example\n * ```ts\n * import { SessionKeyPermissionsBuilder } from \"@account-kit/smart-contracts\";\n *\n * const builder = new SessionKeyPermissionsBuilder();\n * builder.setContractAccessControlType(SessionKeyAccessListType.ALLOWLIST);\n * ```\n *\n * @param {SessionKeyAccessListType} aclType The access control type for the session key\n * @returns {SessionKeyPermissionsBuilder} The current instance for method chaining\n */\n public setContractAccessControlType(aclType: SessionKeyAccessListType) {\n this._contractAccessControlType = aclType;\n return this;\n }\n\n /**\n * Adds a contract access entry to the internal list of contract address access entries.\n *\n * @example\n * ```ts\n * import { SessionKeyPermissionsBuilder } from \"@account-kit/smart-contracts\";\n *\n * const builder = new SessionKeyPermissionsBuilder();\n * builder.addContractAddressAccessEntry({\n * contractAddress: \"0x1234\",\n * isOnList: true,\n * checkSelectors: true,\n * });\n * ```\n *\n * @param {ContractAccessEntry} entry the contract access entry to be added\n * @returns {SessionKeyPermissionsBuilder} the instance of the current class for chaining\n */\n public addContractAddressAccessEntry(entry: ContractAccessEntry) {\n this._contractAddressAccessEntrys.push(entry);\n return this;\n }\n\n /**\n * Adds a contract method entry to the `_contractMethodAccessEntrys` array.\n *\n * @example\n * ```ts\n * import { SessionKeyPermissionsBuilder } from \"@account-kit/smart-contracts\";\n *\n * const builder = new SessionKeyPermissionsBuilder();\n * builder.addContractAddressAccessEntry({\n * contractAddress: \"0x1234\",\n * methodSelector: \"0x45678\",\n * isOnList: true,\n * });\n * ```\n *\n * @param {ContractMethodEntry} entry The contract method entry to be added\n * @returns {SessionKeyPermissionsBuilder} The instance of the class for method chaining\n */\n public addContractFunctionAccessEntry(entry: ContractMethodEntry) {\n this._contractMethodAccessEntrys.push(entry);\n return this;\n }\n\n /**\n * Sets the time range for an object and returns the object itself for chaining.\n *\n * @example\n * ```ts\n * import { SessionKeyPermissionsBuilder } from \"@account-kit/smart-contracts\";\n *\n * const builder = new SessionKeyPermissionsBuilder();\n * builder.setTimeRange({\n * validFrom: Date.now(),\n * validUntil: Date.now() + (15 * 60 * 1000),\n * });\n * ```\n *\n * @param {TimeRange} timeRange The time range to be set\n * @returns {SessionKeyPermissionsBuilder} The current object for method chaining\n */\n public setTimeRange(timeRange: TimeRange) {\n this._timeRange = timeRange;\n return this;\n }\n\n /**\n * Sets the native token spend limit and returns the instance for chaining.\n *\n * @example\n * ```ts\n * import { SessionKeyPermissionsBuilder } from \"@account-kit/smart-contracts\";\n *\n * const builder = new SessionKeyPermissionsBuilder();\n * builder.setNativeTokenSpendLimit({\n * spendLimit: 1000000000000000000n,\n * refreshInterval: 3600,\n * });\n * ```\n *\n * @param {NativeTokenLimit} limit The limit to set for native token spending\n * @returns {SessionKeyPermissionsBuilder} The instance for chaining\n */\n public setNativeTokenSpendLimit(limit: NativeTokenLimit) {\n this._nativeTokenSpendLimit = limit;\n return this;\n }\n\n /**\n * Adds an ERC20 token spend limit to the list of limits and returns the updated object.\n *\n * @example\n * ```ts\n * import { SessionKeyPermissionsBuilder } from \"@account-kit/smart-contracts\";\n *\n * const builder = new SessionKeyPermissionsBuilder();\n * builder.addErc20TokenSpendLimit({\n * tokenAddress: \"0x1234\",\n * spendLimit: 1000000000000000000n,\n * refreshInterval: 3600,\n * });\n * ```\n *\n * @param {Erc20TokenLimit} limit The ERC20 token spend limit to be added\n * @returns {object} The updated object with the new ERC20 token spend limit\n */\n public addErc20TokenSpendLimit(limit: Erc20TokenLimit) {\n this._erc20TokenSpendLimits.push(limit);\n return this;\n }\n\n /**\n * Sets the gas spend limit and returns the current instance for method chaining.\n *\n * @example\n * ```ts\n * import { SessionKeyPermissionsBuilder } from \"@account-kit/smart-contracts\";\n *\n * const builder = new SessionKeyPermissionsBuilder();\n * builder.setGasSpendLimit({\n * spendLimit: 1000000000000000000n,\n * refreshInterval: 3600,\n * });\n * ```\n *\n * @param {GasSpendLimit} limit - The gas spend limit to be set\n * @returns {SessionKeyPermissionsBuilder} The current instance for chaining\n */ public setGasSpendLimit(limit: GasSpendLimit) {\n this._gasSpendLimit = limit;\n return this;\n }\n\n /**\n * Sets the required paymaster address.\n *\n * @example\n * ```ts\n * import { SessionKeyPermissionsBuilder } from \"@account-kit/smart-contracts\";\n *\n * const builder = new SessionKeyPermissionsBuilder();\n * builder.setRequiredPaymaster(\"0x1234\");\n * ```\n *\n * @param {Address} paymaster the address of the paymaster to be set\n * @returns {SessionKeyPermissionsBuilder} the current instance for method chaining\n */\n public setRequiredPaymaster(paymaster: Address) {\n this._requiredPaymaster = paymaster;\n return this;\n }\n\n /**\n * Encodes various function calls into an array of hexadecimal strings based on the provided permissions and limits.\n *\n * @example\n * ```ts\n * import { SessionKeyPermissionsBuilder } from \"@account-kit/smart-contracts\";\n *\n * const builder = new SessionKeyPermissionsBuilder();\n * builder.setRequiredPaymaster(\"0x1234\");\n * const encoded = builder.encode();\n * ```\n *\n * @returns {Hex[]} An array of encoded hexadecimal strings representing the function calls for setting access control, permissions, and limits.\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 /**\n * Sets the access control type for the contract and returns the current instance for method chaining.\n *\n * @example\n * ```ts\n * import { SessionKeyPermissionsBuilder } from \"@account-kit/smart-contracts\";\n *\n * const builder = new SessionKeyPermissionsBuilder();\n * builder.setContractAccessControlType(SessionKeyAccessListType.ALLOWLIST);\n * ```\n *\n * @param {SessionKeyAccessListType} aclType The access control type for the session key\n * @returns {SessionKeyPermissionsBuilder} The current instance for method chaining\n */\n public setContractAccessControlType(aclType: SessionKeyAccessListType) {\n this._contractAccessControlType = aclType;\n return this;\n }\n\n /**\n * Adds a contract access entry to the internal list of contract address access entries.\n *\n * @example\n * ```ts\n * import { SessionKeyPermissionsBuilder } from \"@account-kit/smart-contracts\";\n *\n * const builder = new SessionKeyPermissionsBuilder();\n * builder.addContractAddressAccessEntry({\n * contractAddress: \"0x1234\",\n * isOnList: true,\n * checkSelectors: true,\n * });\n * ```\n *\n * @param {ContractAccessEntry} entry the contract access entry to be added\n * @returns {SessionKeyPermissionsBuilder} the instance of the current class for chaining\n */\n public addContractAddressAccessEntry(entry: ContractAccessEntry) {\n this._contractAddressAccessEntrys.push(entry);\n return this;\n }\n\n /**\n * Adds a contract method entry to the `_contractMethodAccessEntrys` array.\n *\n * @example\n * ```ts\n * import { SessionKeyPermissionsBuilder } from \"@account-kit/smart-contracts\";\n *\n * const builder = new SessionKeyPermissionsBuilder();\n * builder.addContractAddressAccessEntry({\n * contractAddress: \"0x1234\",\n * methodSelector: \"0x45678\",\n * isOnList: true,\n * });\n * ```\n *\n * @param {ContractMethodEntry} entry The contract method entry to be added\n * @returns {SessionKeyPermissionsBuilder} The instance of the class for method chaining\n */\n public addContractFunctionAccessEntry(entry: ContractMethodEntry) {\n this._contractMethodAccessEntrys.push(entry);\n return this;\n }\n\n /**\n * Sets the time range for an object and returns the object itself for chaining.\n *\n * @example\n * ```ts\n * import { SessionKeyPermissionsBuilder } from \"@account-kit/smart-contracts\";\n *\n * const builder = new SessionKeyPermissionsBuilder();\n * builder.setTimeRange({\n * validFrom: Date.now(),\n * validUntil: Date.now() + (15 * 60 * 1000),\n * });\n * ```\n *\n * @param {TimeRange} timeRange The time range to be set\n * @returns {SessionKeyPermissionsBuilder} The current object for method chaining\n */\n public setTimeRange(timeRange: TimeRange) {\n this._timeRange = timeRange;\n return this;\n }\n\n /**\n * Sets the native token spend limit and returns the instance for chaining.\n *\n * @example\n * ```ts\n * import { SessionKeyPermissionsBuilder } from \"@account-kit/smart-contracts\";\n *\n * const builder = new SessionKeyPermissionsBuilder();\n * builder.setNativeTokenSpendLimit({\n * spendLimit: 1000000000000000000n,\n * refreshInterval: 3600,\n * });\n * ```\n *\n * @param {NativeTokenLimit} limit The limit to set for native token spending\n * @returns {SessionKeyPermissionsBuilder} The instance for chaining\n */\n public setNativeTokenSpendLimit(limit: NativeTokenLimit) {\n this._nativeTokenSpendLimit = limit;\n return this;\n }\n\n /**\n * Adds an ERC20 token spend limit to the list of limits and returns the updated object.\n *\n * @example\n * ```ts\n * import { SessionKeyPermissionsBuilder } from \"@account-kit/smart-contracts\";\n *\n * const builder = new SessionKeyPermissionsBuilder();\n * builder.addErc20TokenSpendLimit({\n * tokenAddress: \"0x1234\",\n * spendLimit: 1000000000000000000n,\n * refreshInterval: 3600,\n * });\n * ```\n *\n * @param {Erc20TokenLimit} limit The ERC20 token spend limit to be added\n * @returns {object} The updated object with the new ERC20 token spend limit\n */\n public addErc20TokenSpendLimit(limit: Erc20TokenLimit) {\n this._erc20TokenSpendLimits.push(limit);\n return this;\n }\n\n /**\n * Sets the gas spend limit and returns the current instance for method chaining.\n *\n * @example\n * ```ts\n * import { SessionKeyPermissionsBuilder } from \"@account-kit/smart-contracts\";\n *\n * const builder = new SessionKeyPermissionsBuilder();\n * builder.setGasSpendLimit({\n * spendLimit: 1000000000000000000n,\n * refreshInterval: 3600,\n * });\n * ```\n *\n * @param {GasSpendLimit} limit - The gas spend limit to be set\n * @returns {SessionKeyPermissionsBuilder} The current instance for chaining\n */ public setGasSpendLimit(limit: GasSpendLimit) {\n this._gasSpendLimit = limit;\n return this;\n }\n\n /**\n * Sets the required paymaster address.\n *\n * @example\n * ```ts\n * import { SessionKeyPermissionsBuilder } from \"@account-kit/smart-contracts\";\n *\n * const builder = new SessionKeyPermissionsBuilder();\n * builder.setRequiredPaymaster(\"0x1234\");\n * ```\n *\n * @param {Address} paymaster the address of the paymaster to be set\n * @returns {SessionKeyPermissionsBuilder} the current instance for method chaining\n */\n public setRequiredPaymaster(paymaster: Address) {\n this._requiredPaymaster = paymaster;\n return this;\n }\n\n /**\n * Encodes various function calls into an array of hexadecimal strings based on the provided permissions and limits.\n *\n * @example\n * ```ts\n * import { SessionKeyPermissionsBuilder } from \"@account-kit/smart-contracts\";\n *\n * const builder = new SessionKeyPermissionsBuilder();\n * builder.setRequiredPaymaster(\"0x1234\");\n * const encoded = builder.encode();\n * ```\n *\n * @returns {Hex[]} An array of encoded hexadecimal strings representing the function calls for setting access control, permissions, and limits.\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"]}