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