@account-kit/smart-contracts 4.0.0-alpha.0 → 4.0.0-alpha.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.
- package/dist/cjs/src/index.d.ts +3 -3
- package/dist/cjs/src/index.js +15 -15
- package/dist/cjs/src/index.js.map +1 -1
- package/dist/cjs/src/light-account/accounts/account.js +1 -1
- package/dist/cjs/src/light-account/accounts/account.js.map +1 -1
- package/dist/cjs/src/light-account/accounts/multiOwner.js +2 -4
- 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.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.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/utils.d.ts +3 -2
- package/dist/cjs/src/light-account/utils.js +14 -5
- 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.js.map +1 -1
- package/dist/cjs/src/msca/client/client.js.map +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/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/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.map +1 -1
- package/dist/esm/src/index.d.ts +3 -3
- package/dist/esm/src/index.js +2 -2
- package/dist/esm/src/index.js.map +1 -1
- package/dist/esm/src/light-account/accounts/account.js +2 -2
- package/dist/esm/src/light-account/accounts/account.js.map +1 -1
- package/dist/esm/src/light-account/accounts/multiOwner.js +3 -5
- 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.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.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/utils.d.ts +3 -2
- package/dist/esm/src/light-account/utils.js +12 -4
- 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.js.map +1 -1
- package/dist/esm/src/msca/client/client.js.map +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/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/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.map +1 -1
- package/dist/types/src/index.d.ts +3 -3
- package/dist/types/src/index.d.ts.map +1 -1
- package/dist/types/src/light-account/accounts/account.d.ts.map +1 -1
- 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/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/utils.d.ts +11 -4
- 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/client.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 +1 -1
- 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/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/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 +3 -0
- 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 +1 -1
- 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 +43 -5
- package/dist/types/src/msca/utils.d.ts.map +1 -1
- package/package.json +5 -5
- package/src/index.ts +2 -3
- package/src/light-account/accounts/account.ts +22 -3
- package/src/light-account/accounts/multiOwner.ts +26 -5
- 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 +20 -0
- package/src/light-account/clients/client.ts +27 -6
- package/src/light-account/clients/multiOwnerAlchemyClient.ts +20 -0
- 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/utils.ts +29 -6
- 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 +20 -0
- package/src/msca/client/client.ts +46 -0
- package/src/msca/client/multiSigAlchemyClient.ts +22 -0
- 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 +2 -2
- package/src/msca/plugins/multisig/utils/combineSignatures.ts +36 -9
- package/src/msca/plugins/multisig/utils/getSignerType.ts +23 -4
- package/src/msca/plugins/multisig/utils/index.ts +4 -0
- 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 +3 -0
- package/src/msca/plugins/session-key/signer.ts +1 -2
- package/src/msca/plugins/session-key/utils.ts +33 -12
- package/src/msca/utils.ts +64 -9
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"middleware.js","sourceRoot":"","sources":["../../../../../../src/msca/plugins/multisig/middleware.ts"],"names":[],"mappings":";;;AAAA,uCAUsB;AAEtB,yEAA4E;AAC5E,+CAGyB;
|
|
1
|
+
{"version":3,"file":"middleware.js","sourceRoot":"","sources":["../../../../../../src/msca/plugins/multisig/middleware.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n InvalidUserOperationError,\n SmartAccountWithSignerRequiredError,\n deepHexlify,\n isSmartAccountWithSigner,\n isValidRequest,\n resolveProperties,\n type ClientMiddlewareFn,\n type UserOperationRequest_v6,\n type UserOperationRequest_v7,\n} from \"@aa-sdk/core\";\nimport { type Hex } from \"viem\";\nimport { isMultisigModularAccount } from \"../../account/multisigAccount.js\";\nimport {\n InvalidContextSignatureError,\n MultisigAccountExpectedError,\n} from \"../../errors.js\";\nimport { type MultisigUserOperationContext } from \"./types.js\";\nimport {\n combineSignatures,\n getSignerType,\n splitAggregatedSignature,\n} from \"./utils/index.js\";\n\n/**\n * A signer middleware to be used with Multisig Account Clients.\n * This middleware handles correctly aggregating signatures passed through\n * as context when sending UserOperations, proposing UserOperations, or adding signatures to a UserOperation.\n *\n * @param struct the user operation struct to be signed\n * @param param the parameters to be passed to the middleware\n * @param param.account the account to be used for signing\n * @param param.client the smart account client that will be used for RPC requests\n * @param param.context the context object containing the signatures to be aggregated {@link MultisigUserOperationContext}\n * @returns a Promise containing a UserOperation with an aggregated signature in the `signature` field\n */\nexport const multisigSignatureMiddleware: ClientMiddlewareFn<\n MultisigUserOperationContext\n> = async (struct, { account, client, context }) => {\n // if the signature is not present, this has to be UPPERLIMIT because it's likely a propose operation\n if (\n !context ||\n (context.userOpSignatureType === \"ACTUAL\" &&\n !context.signatures &&\n !context.aggregatedSignature)\n ) {\n throw new InvalidContextSignatureError();\n }\n\n if (!isSmartAccountWithSigner(account)) {\n throw new SmartAccountWithSignerRequiredError();\n }\n\n if (!isMultisigModularAccount(account)) {\n throw new MultisigAccountExpectedError();\n }\n\n const resolvedStruct = await resolveProperties(struct);\n\n const request = deepHexlify(resolvedStruct);\n if (!isValidRequest(request)) {\n throw new InvalidUserOperationError(resolvedStruct);\n }\n\n const signature = await account.signUserOperationHash(\n account.getEntryPoint().getUserOperationHash(request)\n );\n\n const signerType = await getSignerType({\n client,\n signature: signature,\n signer: account.getSigner(),\n });\n\n // then this is a propose operation\n if (\n context.userOpSignatureType === \"UPPERLIMIT\" &&\n context?.signatures?.length == null &&\n context?.aggregatedSignature == null\n ) {\n return {\n ...resolvedStruct,\n signature: combineSignatures({\n signatures: [\n {\n signature,\n signer: await account.getSigner().getAddress(),\n signerType,\n userOpSigType: context.userOpSignatureType,\n },\n ],\n upperLimitMaxFeePerGas: request.maxFeePerGas,\n upperLimitMaxPriorityFeePerGas: request.maxPriorityFeePerGas,\n upperLimitPvg: request.preVerificationGas,\n usingMaxValues: false,\n }),\n };\n }\n\n if (context.aggregatedSignature == null || context.signatures == null) {\n throw new InvalidContextSignatureError();\n }\n\n // otherwise this is a sign operation\n const {\n upperLimitPvg,\n upperLimitMaxFeePerGas,\n upperLimitMaxPriorityFeePerGas,\n } = await splitAggregatedSignature({\n aggregatedSignature: context.aggregatedSignature,\n threshold: context.signatures.length + 1,\n account,\n request,\n });\n\n const finalSignature = combineSignatures({\n signatures: context.signatures.concat({\n userOpSigType: context.userOpSignatureType,\n signerType,\n signature,\n signer: await account.getSigner().getAddress(),\n }),\n upperLimitPvg,\n upperLimitMaxFeePerGas,\n upperLimitMaxPriorityFeePerGas,\n usingMaxValues: isUsingMaxValues(request, {\n upperLimitPvg,\n upperLimitMaxFeePerGas,\n upperLimitMaxPriorityFeePerGas,\n }),\n });\n\n return {\n ...resolvedStruct,\n signature: finalSignature,\n };\n};\n\nconst isUsingMaxValues = (\n request: UserOperationRequest_v6 | UserOperationRequest_v7,\n upperLimits: {\n upperLimitPvg: Hex;\n upperLimitMaxFeePerGas: Hex;\n upperLimitMaxPriorityFeePerGas: Hex;\n }\n): boolean => {\n if (\n BigInt(request.preVerificationGas) !== BigInt(upperLimits.upperLimitPvg)\n ) {\n return false;\n }\n\n if (\n BigInt(request.maxFeePerGas) !== BigInt(upperLimits.upperLimitMaxFeePerGas)\n ) {\n return false;\n }\n\n if (\n BigInt(request.maxPriorityFeePerGas) !==\n BigInt(upperLimits.upperLimitMaxPriorityFeePerGas)\n ) {\n return false;\n }\n\n return true;\n};\n"]}
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import { type Hex } from "viem";
|
|
2
2
|
import type { Signature } from "../types.js";
|
|
3
|
-
export
|
|
3
|
+
export type CombineSignaturesParams = {
|
|
4
4
|
upperLimitPvg: Hex;
|
|
5
5
|
upperLimitMaxFeePerGas: Hex;
|
|
6
6
|
upperLimitMaxPriorityFeePerGas: Hex;
|
|
7
7
|
signatures: Signature[];
|
|
8
8
|
usingMaxValues: boolean;
|
|
9
|
-
}
|
|
9
|
+
};
|
|
10
|
+
export declare function combineSignatures({ signatures, upperLimitMaxFeePerGas, upperLimitMaxPriorityFeePerGas, upperLimitPvg, usingMaxValues, }: CombineSignaturesParams): Hex;
|
|
@@ -3,13 +3,13 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.combineSignatures = void 0;
|
|
4
4
|
const viem_1 = require("viem");
|
|
5
5
|
const formatSignatures_js_1 = require("./formatSignatures.js");
|
|
6
|
-
|
|
6
|
+
function combineSignatures({ signatures, upperLimitMaxFeePerGas, upperLimitMaxPriorityFeePerGas, upperLimitPvg, usingMaxValues, }) {
|
|
7
7
|
return (0, viem_1.concat)([
|
|
8
8
|
(0, viem_1.pad)(upperLimitPvg),
|
|
9
9
|
(0, viem_1.pad)(upperLimitMaxFeePerGas),
|
|
10
10
|
(0, viem_1.pad)(upperLimitMaxPriorityFeePerGas),
|
|
11
11
|
(0, formatSignatures_js_1.formatSignatures)(signatures, usingMaxValues),
|
|
12
12
|
]);
|
|
13
|
-
}
|
|
13
|
+
}
|
|
14
14
|
exports.combineSignatures = combineSignatures;
|
|
15
15
|
//# sourceMappingURL=combineSignatures.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"combineSignatures.js","sourceRoot":"","sources":["../../../../../../../src/msca/plugins/multisig/utils/combineSignatures.ts"],"names":[],"mappings":";;;AAAA,+BAA6C;AAE7C,+DAAyD;
|
|
1
|
+
{"version":3,"file":"combineSignatures.js","sourceRoot":"","sources":["../../../../../../../src/msca/plugins/multisig/utils/combineSignatures.ts"],"names":[],"mappings":";;;AAAA,+BAA6C;AAE7C,+DAAyD;AAmCzD,SAAgB,iBAAiB,CAAC,EAChC,UAAU,EACV,sBAAsB,EACtB,8BAA8B,EAC9B,aAAa,EACb,cAAc,GACU;IACxB,OAAO,IAAA,aAAM,EAAC;QACZ,IAAA,UAAG,EAAC,aAAa,CAAC;QAClB,IAAA,UAAG,EAAC,sBAAsB,CAAC;QAC3B,IAAA,UAAG,EAAC,8BAA8B,CAAC;QACnC,IAAA,sCAAgB,EAAC,UAAU,EAAE,cAAc,CAAC;KAC7C,CAAC,CAAC;AACL,CAAC;AAbD,8CAaC","sourcesContent":["import { type Hex, concat, pad } from \"viem\";\nimport type { Signature } from \"../types.js\";\nimport { formatSignatures } from \"./formatSignatures.js\";\n\nexport type CombineSignaturesParams = {\n upperLimitPvg: Hex;\n upperLimitMaxFeePerGas: Hex;\n upperLimitMaxPriorityFeePerGas: Hex;\n signatures: Signature[];\n usingMaxValues: boolean;\n};\n\n/**\n * Combines multiple signatures with provided upper limit values for gas fees and returns the concatenated result.\n *\n * @example\n * ```ts\n * import { combineSignatures } from \"@account-kit/smart-contracts\";\n *\n * const combinedSignature = combineSignatures({\n * // this is the upper limit pre-verification gas\n * upperLimitPvg: \"0x01\",\n * upperLimitMaxFeePerGas: \"0x02\",\n * upperLimitMaxPriorityFeePerGas: \"0x03\",\n * signatures: [{\n * signerType: \"EOA\",\n * userOpSigType: \"UPPERLIMIT\",\n * signer: `0x...`,\n * signature: `0x...`,\n * }]\n * usingMaxValues: false,\n * });\n * ```\n *\n * @param {CombineSignaturesParams} params The function parameters\n * @returns {Hex} The concatenated result of padding and formatting the provided values and signatures\n */\nexport function combineSignatures({\n signatures,\n upperLimitMaxFeePerGas,\n upperLimitMaxPriorityFeePerGas,\n upperLimitPvg,\n usingMaxValues,\n}: CombineSignaturesParams): Hex {\n return concat([\n pad(upperLimitPvg),\n pad(upperLimitMaxFeePerGas),\n pad(upperLimitMaxPriorityFeePerGas),\n formatSignatures(signatures, usingMaxValues),\n ]);\n}\n"]}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
import { type
|
|
1
|
+
import type { SmartAccountSigner, SmartContractAccount } from "@aa-sdk/core";
|
|
2
|
+
import { type Chain, type Client, type Hex, type PublicActions, type PublicRpcSchema, type Transport } from "viem";
|
|
3
3
|
import type { SignerType } from "../types";
|
|
4
4
|
type GetSignerTypeParams<TTransport extends Transport = Transport, TChain extends Chain | undefined = Chain | undefined, TAccount extends SmartContractAccount | undefined = SmartContractAccount | undefined, TClient extends Client<TTransport, TChain, TAccount, PublicRpcSchema, PublicActions> = Client<TTransport, TChain, TAccount, PublicRpcSchema, PublicActions>> = {
|
|
5
5
|
signer: SmartAccountSigner<any>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getSignerType.js","sourceRoot":"","sources":["../../../../../../../src/msca/plugins/multisig/utils/getSignerType.ts"],"names":[],"mappings":";;;AACA,+BAQc;
|
|
1
|
+
{"version":3,"file":"getSignerType.js","sourceRoot":"","sources":["../../../../../../../src/msca/plugins/multisig/utils/getSignerType.ts"],"names":[],"mappings":";;;AACA,+BAQc;AAyCP,MAAM,aAAa,GAAG,KAAK,EAGhC,EACA,MAAM,EACN,SAAS,EACT,MAAM,GACkC,EAAuB,EAAE;IACjE,MAAM,aAAa,GAAG,MAAM,MAAM,CAAC,UAAU,EAAE,CAAC;IAChD,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,WAAW,CAAC,EAAE,OAAO,EAAE,aAAa,EAAE,CAAC,CAAC;IAEtE,OAAO,CAAC,QAAQ,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,IAAA,WAAI,EAAC,SAAS,CAAC,KAAK,EAAE;QAC1D,CAAC,CAAC,KAAK;QACP,CAAC,CAAC,UAAU,CAAC;AACjB,CAAC,CAAC;AAdW,QAAA,aAAa,iBAcxB","sourcesContent":["import type { SmartAccountSigner, SmartContractAccount } from \"@aa-sdk/core\";\nimport {\n type Chain,\n type Client,\n type Hex,\n type PublicActions,\n type PublicRpcSchema,\n size,\n type Transport,\n} from \"viem\";\nimport type { SignerType } from \"../types\";\n\ntype GetSignerTypeParams<\n TTransport extends Transport = Transport,\n TChain extends Chain | undefined = Chain | undefined,\n TAccount extends SmartContractAccount | undefined =\n | SmartContractAccount\n | undefined,\n TClient extends Client<\n TTransport,\n TChain,\n TAccount,\n PublicRpcSchema,\n PublicActions\n > = Client<TTransport, TChain, TAccount, PublicRpcSchema, PublicActions>\n> = {\n signer: SmartAccountSigner<any>;\n signature: Hex;\n client: TClient;\n};\n\n/**\n * Determines the type of signer (Externally Owned Account (EOA) or CONTRACT) based on the provided client, signature, and signer.\n *\n * @example\n * ```ts\n * import { getSignerType } from \"@account-kit/smart-contracts\";\n * import { LocalAccountSigner } from \"@aa-sdk/core\";\n * import { createPublicClient, generatePrivateKey } from \"viem\";\n *\n * const signer = LocalAccountSigner.privateKeyToAccountSigner(generatePrivateKey());\n * const client = createPublicClient(...);\n * const signature = signer.signMessage(\"Hello World\");\n *\n * const signerType = await getSignerType({ client, signature, signer }); // EOA\n * ```\n *\n * @param {GetSignerTypeParams<TTransport, TChain>} params the parameters including the client, signature, and signer\n * @returns {Promise<SignerType>} A promise that resolves to the signer type, which is either \"EOA\" or \"CONTRACT\"\n */\nexport const getSignerType = async <\n TTransport extends Transport = Transport,\n TChain extends Chain | undefined = Chain | undefined\n>({\n client,\n signature,\n signer,\n}: GetSignerTypeParams<TTransport, TChain>): Promise<SignerType> => {\n const signerAddress = await signer.getAddress();\n const byteCode = await client.getBytecode({ address: signerAddress });\n\n return (byteCode ?? \"0x\") === \"0x\" && size(signature) === 65\n ? \"EOA\"\n : \"CONTRACT\";\n};\n"]}
|
|
@@ -1,4 +1,8 @@
|
|
|
1
|
+
export type * from "./combineSignatures.js";
|
|
1
2
|
export { combineSignatures } from "./combineSignatures.js";
|
|
3
|
+
export type * from "./formatSignatures.js";
|
|
2
4
|
export { formatSignatures } from "./formatSignatures.js";
|
|
5
|
+
export type * from "./getSignerType.js";
|
|
3
6
|
export { getSignerType } from "./getSignerType.js";
|
|
7
|
+
export type * from "./splitAggregatedSignature.js";
|
|
4
8
|
export { splitAggregatedSignature } from "./splitAggregatedSignature.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../../src/msca/plugins/multisig/utils/index.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../../src/msca/plugins/multisig/utils/index.ts"],"names":[],"mappings":";;;AACA,+DAA2D;AAAlD,yHAAA,iBAAiB,OAAA;AAE1B,6DAAyD;AAAhD,uHAAA,gBAAgB,OAAA;AAEzB,uDAAmD;AAA1C,iHAAA,aAAa,OAAA;AAEtB,6EAAyE;AAAhE,uIAAA,wBAAwB,OAAA","sourcesContent":["export type * from \"./combineSignatures.js\";\nexport { combineSignatures } from \"./combineSignatures.js\";\nexport type * from \"./formatSignatures.js\";\nexport { formatSignatures } from \"./formatSignatures.js\";\nexport type * from \"./getSignerType.js\";\nexport { getSignerType } from \"./getSignerType.js\";\nexport type * from \"./splitAggregatedSignature.js\";\nexport { splitAggregatedSignature } from \"./splitAggregatedSignature.js\";\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"extension.js","sourceRoot":"","sources":["../../../../../../src/msca/plugins/session-key/extension.ts"],"names":[],"mappings":"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","sourcesContent":["import type {\n GetEntryPointFromAccount,\n UserOperationOverridesParameter,\n} from \"@aa-sdk/core\";\nimport {\n AccountNotFoundError,\n isSmartAccountClient,\n type GetAccountParameter,\n type IsUndefined,\n type SendUserOperationResult,\n type SmartContractAccount,\n type UserOperationOverrides,\n} from \"@aa-sdk/core\";\nimport type { Address, Chain, Client, Hex, Transport } from \"viem\";\nimport type { GetPluginAddressParameter } from \"../types.js\";\nimport {\n SessionKeyPlugin,\n sessionKeyPluginActions as sessionKeyPluginActions_,\n type SessionKeyPluginActions as SessionKeyPluginActions_,\n} from \"./plugin.js\";\nimport { buildSessionKeysToRemoveStruct } from \"./utils.js\";\n\nexport type SessionKeyPluginActions<\n TAccount extends SmartContractAccount | undefined =\n | SmartContractAccount\n | undefined,\n TEntryPointVersion extends GetEntryPointFromAccount<TAccount> = GetEntryPointFromAccount<TAccount>\n> = Omit<\n SessionKeyPluginActions_<TAccount>,\n | \"removeSessionKey\"\n | \"addSessionKey\"\n | \"rotateSessionKey\"\n | \"updateKeyPermissions\"\n> & {\n isAccountSessionKey: (\n args: { key: Address } & GetPluginAddressParameter &\n GetAccountParameter<TAccount>\n ) => Promise<boolean>;\n\n getAccountSessionKeys: (\n args: GetPluginAddressParameter & GetAccountParameter<TAccount>\n ) => Promise<ReadonlyArray<Address>>;\n\n removeSessionKey: (\n args: { key: Address } & GetPluginAddressParameter &\n GetAccountParameter<TAccount> &\n UserOperationOverridesParameter<TEntryPointVersion>\n ) => Promise<SendUserOperationResult<TEntryPointVersion>>;\n\n addSessionKey: (\n args: {\n key: Address;\n permissions: Hex[];\n tag: Hex;\n } & GetPluginAddressParameter &\n GetAccountParameter<TAccount> &\n UserOperationOverridesParameter<TEntryPointVersion>\n ) => Promise<SendUserOperationResult<TEntryPointVersion>>;\n\n rotateSessionKey: (\n args: {\n oldKey: Address;\n newKey: Address;\n } & GetPluginAddressParameter &\n GetAccountParameter<TAccount> &\n UserOperationOverridesParameter<TEntryPointVersion>\n ) => Promise<SendUserOperationResult<TEntryPointVersion>>;\n\n updateSessionKeyPermissions: (\n args: {\n key: Address;\n permissions: Hex[];\n } & GetPluginAddressParameter &\n GetAccountParameter<TAccount> &\n UserOperationOverridesParameter<TEntryPointVersion>\n ) => Promise<SendUserOperationResult<TEntryPointVersion>>;\n} & (IsUndefined<TAccount> extends false\n ? {\n getAccountSessionKeys: (\n args?: GetPluginAddressParameter & GetAccountParameter<TAccount>\n ) => Promise<ReadonlyArray<Address>>;\n }\n : {});\n\nexport const sessionKeyPluginActions: <\n TTransport extends Transport = Transport,\n TChain extends Chain | undefined = Chain | undefined,\n TAccount extends SmartContractAccount | undefined =\n | SmartContractAccount\n | undefined\n>(\n client: Client<TTransport, TChain, TAccount>\n) => SessionKeyPluginActions<TAccount> = <\n TTransport extends Transport = Transport,\n TChain extends Chain | undefined = Chain | undefined,\n TAccount extends SmartContractAccount | undefined =\n | SmartContractAccount\n | undefined,\n TEntryPointVersion extends GetEntryPointFromAccount<TAccount> = GetEntryPointFromAccount<TAccount>\n>(\n client: Client<TTransport, TChain, TAccount>\n) => {\n const {\n removeSessionKey,\n addSessionKey,\n rotateSessionKey,\n updateKeyPermissions,\n executeWithSessionKey,\n ...og\n } = sessionKeyPluginActions_<TTransport, TChain, TAccount>(client);\n\n // The session key plugin returns an opaque error when the permissions check\n // fails. We want the SDK to return a helpful error instead. After validation\n // fails, rerun the user op simulation but using state overrides to replace\n // the code of the session key plugin with a version that produces descriptive\n // errors.\n const fixedExecuteWithSessionKey: typeof executeWithSessionKey = async (\n ...originalArgs\n ) => {\n let initialError: unknown;\n try {\n return await executeWithSessionKey(...originalArgs);\n } catch (error) {\n initialError = error;\n }\n const details = getRpcErrorMessageFromViemError(initialError);\n if (!details?.includes(\"AA23 reverted (or OOG)\")) {\n throw initialError;\n }\n if (!isSmartAccountClient(client) || !client.chain) {\n throw initialError;\n }\n const {\n args,\n overrides,\n context,\n account = client.account,\n } = originalArgs[0];\n if (!account) {\n throw initialError;\n }\n const data = og.encodeExecuteWithSessionKey({ args });\n const sessionKeyPluginAddress =\n SessionKeyPlugin.meta.addresses[client.chain.id];\n // The bytecode is 10kb of hex. Only import it if needed.\n const { DEBUG_SESSION_KEY_BYTECODE } = await import(\n \"./debug-session-key-bytecode.js\"\n );\n const updatedOverrides: UserOperationOverrides<TEntryPointVersion> = {\n ...(overrides as UserOperationOverrides<TEntryPointVersion>),\n stateOverride: [\n ...(overrides?.stateOverride ?? []),\n {\n address: sessionKeyPluginAddress,\n code: DEBUG_SESSION_KEY_BYTECODE,\n },\n ],\n };\n try {\n await client.buildUserOperation({\n uo: data,\n overrides: updatedOverrides,\n context,\n account,\n });\n // We expect this to fail because we just saw the same user op fail a\n // moment ago. It could succeed if the state of the chain has changed but\n // there's not much we can do with a successful result so return the\n // original error.\n throw initialError;\n } catch (improvedError) {\n const details = getRpcErrorMessageFromViemError(improvedError) ?? \"\";\n const reason = details.match(/AA23 reverted: (.+)/)?.[1];\n if (!reason) {\n throw initialError;\n }\n throw new SessionKeyPermissionError(reason);\n }\n };\n\n return {\n ...og,\n\n executeWithSessionKey: fixedExecuteWithSessionKey,\n\n isAccountSessionKey: async ({\n key,\n pluginAddress,\n account = client.account,\n }) => {\n if (!account) throw new AccountNotFoundError();\n\n const contract = SessionKeyPlugin.getContract(client, pluginAddress);\n\n return await contract.read.isSessionKeyOf([account.address, key]);\n },\n\n getAccountSessionKeys: async (\n args: GetPluginAddressParameter & GetAccountParameter<TAccount>\n ) => {\n const account = args?.account ?? client.account;\n if (!account) throw new AccountNotFoundError();\n\n const contract = SessionKeyPlugin.getContract(\n client,\n args?.pluginAddress\n );\n\n return await contract.read.sessionKeysOf([account.address]);\n },\n\n removeSessionKey: async ({\n key,\n overrides,\n account = client.account,\n pluginAddress,\n }) => {\n if (!account) throw new AccountNotFoundError();\n\n const sessionKeysToRemove = await buildSessionKeysToRemoveStruct(client, {\n keys: [key],\n account,\n pluginAddress,\n });\n\n return removeSessionKey({\n args: [key, sessionKeysToRemove[0].predecessor],\n overrides: overrides as UserOperationOverrides<TEntryPointVersion>,\n account,\n });\n },\n\n addSessionKey: async ({\n key,\n tag,\n permissions,\n overrides,\n pluginAddress,\n account = client.account,\n }) => {\n if (!account) throw new AccountNotFoundError();\n\n return addSessionKey({\n args: [key, tag, permissions],\n overrides: overrides as UserOperationOverrides<TEntryPointVersion>,\n account,\n pluginAddress,\n });\n },\n\n rotateSessionKey: async ({\n newKey,\n oldKey,\n overrides,\n pluginAddress,\n account = client.account,\n }) => {\n if (!account) throw new AccountNotFoundError();\n\n const contract = SessionKeyPlugin.getContract(client, pluginAddress);\n\n const predecessor = await contract.read.findPredecessor([\n account.address,\n oldKey,\n ]);\n\n return rotateSessionKey({\n args: [oldKey, predecessor, newKey],\n overrides: overrides as UserOperationOverrides<TEntryPointVersion>,\n account,\n pluginAddress,\n });\n },\n\n updateSessionKeyPermissions: async ({\n key,\n permissions,\n overrides,\n pluginAddress,\n account = client.account,\n }) => {\n if (!account) throw new AccountNotFoundError();\n\n return updateKeyPermissions({\n args: [key, permissions],\n overrides: overrides as UserOperationOverrides<\n GetEntryPointFromAccount<TAccount>\n >,\n account,\n pluginAddress,\n });\n },\n };\n};\n\nfunction getRpcErrorMessageFromViemError(error: unknown): string | undefined {\n const details = (error as any)?.details;\n return typeof details === \"string\" ? details : undefined;\n}\n\nclass SessionKeyPermissionError extends Error {}\n"]}
|
|
1
|
+
{"version":3,"file":"extension.js","sourceRoot":"","sources":["../../../../../../src/msca/plugins/session-key/extension.ts"],"names":[],"mappings":"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","sourcesContent":["import type {\n GetEntryPointFromAccount,\n UserOperationOverridesParameter,\n} from \"@aa-sdk/core\";\nimport {\n AccountNotFoundError,\n isSmartAccountClient,\n type GetAccountParameter,\n type IsUndefined,\n type SendUserOperationResult,\n type SmartContractAccount,\n type UserOperationOverrides,\n} from \"@aa-sdk/core\";\nimport type { Address, Chain, Client, Hex, Transport } from \"viem\";\nimport type { GetPluginAddressParameter } from \"../types.js\";\nimport {\n SessionKeyPlugin,\n sessionKeyPluginActions as sessionKeyPluginActions_,\n type SessionKeyPluginActions as SessionKeyPluginActions_,\n} from \"./plugin.js\";\nimport { buildSessionKeysToRemoveStruct } from \"./utils.js\";\n\nexport type SessionKeyPluginActions<\n TAccount extends SmartContractAccount | undefined =\n | SmartContractAccount\n | undefined,\n TEntryPointVersion extends GetEntryPointFromAccount<TAccount> = GetEntryPointFromAccount<TAccount>\n> = Omit<\n SessionKeyPluginActions_<TAccount>,\n | \"removeSessionKey\"\n | \"addSessionKey\"\n | \"rotateSessionKey\"\n | \"updateKeyPermissions\"\n> & {\n isAccountSessionKey: (\n args: { key: Address } & GetPluginAddressParameter &\n GetAccountParameter<TAccount>\n ) => Promise<boolean>;\n\n getAccountSessionKeys: (\n args: GetPluginAddressParameter & GetAccountParameter<TAccount>\n ) => Promise<ReadonlyArray<Address>>;\n\n removeSessionKey: (\n args: { key: Address } & GetPluginAddressParameter &\n GetAccountParameter<TAccount> &\n UserOperationOverridesParameter<TEntryPointVersion>\n ) => Promise<SendUserOperationResult<TEntryPointVersion>>;\n\n addSessionKey: (\n args: {\n key: Address;\n permissions: Hex[];\n tag: Hex;\n } & GetPluginAddressParameter &\n GetAccountParameter<TAccount> &\n UserOperationOverridesParameter<TEntryPointVersion>\n ) => Promise<SendUserOperationResult<TEntryPointVersion>>;\n\n rotateSessionKey: (\n args: {\n oldKey: Address;\n newKey: Address;\n } & GetPluginAddressParameter &\n GetAccountParameter<TAccount> &\n UserOperationOverridesParameter<TEntryPointVersion>\n ) => Promise<SendUserOperationResult<TEntryPointVersion>>;\n\n updateSessionKeyPermissions: (\n args: {\n key: Address;\n permissions: Hex[];\n } & GetPluginAddressParameter &\n GetAccountParameter<TAccount> &\n UserOperationOverridesParameter<TEntryPointVersion>\n ) => Promise<SendUserOperationResult<TEntryPointVersion>>;\n} & (IsUndefined<TAccount> extends false\n ? {\n getAccountSessionKeys: (\n args?: GetPluginAddressParameter & GetAccountParameter<TAccount>\n ) => Promise<ReadonlyArray<Address>>;\n }\n : {});\n\n/**\n * Creates actions for managing session keys in a smart contract associated with a client, including adding, removing, rotating, and updating session key permissions.\n *\n * @example\n * ```ts\n * import { createModularAccountAlchemyClient, sessionKeyPluginActions } from \"@account-kit/smart-contracts\";\n *\n * const client = createModularAccountAlchemyClient(...).extend(sessionKeyPluginActions);\n * ```\n *\n * @param {Client<TTransport, TChain, TAccount>} client The client instance to use for managing session keys\n * @returns {SessionKeyPluginActions<TAccount>} An object containing methods for session key management and interaction with the smart contract\n */\nexport const sessionKeyPluginActions: <\n TTransport extends Transport = Transport,\n TChain extends Chain | undefined = Chain | undefined,\n TAccount extends SmartContractAccount | undefined =\n | SmartContractAccount\n | undefined\n>(\n client: Client<TTransport, TChain, TAccount>\n) => SessionKeyPluginActions<TAccount> = <\n TTransport extends Transport = Transport,\n TChain extends Chain | undefined = Chain | undefined,\n TAccount extends SmartContractAccount | undefined =\n | SmartContractAccount\n | undefined,\n TEntryPointVersion extends GetEntryPointFromAccount<TAccount> = GetEntryPointFromAccount<TAccount>\n>(\n client: Client<TTransport, TChain, TAccount>\n) => {\n const {\n removeSessionKey,\n addSessionKey,\n rotateSessionKey,\n updateKeyPermissions,\n executeWithSessionKey,\n ...og\n } = sessionKeyPluginActions_<TTransport, TChain, TAccount>(client);\n\n // The session key plugin returns an opaque error when the permissions check\n // fails. We want the SDK to return a helpful error instead. After validation\n // fails, rerun the user op simulation but using state overrides to replace\n // the code of the session key plugin with a version that produces descriptive\n // errors.\n const fixedExecuteWithSessionKey: typeof executeWithSessionKey = async (\n ...originalArgs\n ) => {\n let initialError: unknown;\n try {\n return await executeWithSessionKey(...originalArgs);\n } catch (error) {\n initialError = error;\n }\n const details = getRpcErrorMessageFromViemError(initialError);\n if (!details?.includes(\"AA23 reverted (or OOG)\")) {\n throw initialError;\n }\n if (!isSmartAccountClient(client) || !client.chain) {\n throw initialError;\n }\n const {\n args,\n overrides,\n context,\n account = client.account,\n } = originalArgs[0];\n if (!account) {\n throw initialError;\n }\n const data = og.encodeExecuteWithSessionKey({ args });\n const sessionKeyPluginAddress =\n SessionKeyPlugin.meta.addresses[client.chain.id];\n // The bytecode is 10kb of hex. Only import it if needed.\n const { DEBUG_SESSION_KEY_BYTECODE } = await import(\n \"./debug-session-key-bytecode.js\"\n );\n const updatedOverrides: UserOperationOverrides<TEntryPointVersion> = {\n ...(overrides as UserOperationOverrides<TEntryPointVersion>),\n stateOverride: [\n ...(overrides?.stateOverride ?? []),\n {\n address: sessionKeyPluginAddress,\n code: DEBUG_SESSION_KEY_BYTECODE,\n },\n ],\n };\n try {\n await client.buildUserOperation({\n uo: data,\n overrides: updatedOverrides,\n context,\n account,\n });\n // We expect this to fail because we just saw the same user op fail a\n // moment ago. It could succeed if the state of the chain has changed but\n // there's not much we can do with a successful result so return the\n // original error.\n throw initialError;\n } catch (improvedError) {\n const details = getRpcErrorMessageFromViemError(improvedError) ?? \"\";\n const reason = details.match(/AA23 reverted: (.+)/)?.[1];\n if (!reason) {\n throw initialError;\n }\n throw new SessionKeyPermissionError(reason);\n }\n };\n\n return {\n ...og,\n\n executeWithSessionKey: fixedExecuteWithSessionKey,\n\n isAccountSessionKey: async ({\n key,\n pluginAddress,\n account = client.account,\n }) => {\n if (!account) throw new AccountNotFoundError();\n\n const contract = SessionKeyPlugin.getContract(client, pluginAddress);\n\n return await contract.read.isSessionKeyOf([account.address, key]);\n },\n\n getAccountSessionKeys: async (\n args: GetPluginAddressParameter & GetAccountParameter<TAccount>\n ) => {\n const account = args?.account ?? client.account;\n if (!account) throw new AccountNotFoundError();\n\n const contract = SessionKeyPlugin.getContract(\n client,\n args?.pluginAddress\n );\n\n return await contract.read.sessionKeysOf([account.address]);\n },\n\n removeSessionKey: async ({\n key,\n overrides,\n account = client.account,\n pluginAddress,\n }) => {\n if (!account) throw new AccountNotFoundError();\n\n const sessionKeysToRemove = await buildSessionKeysToRemoveStruct(client, {\n keys: [key],\n account,\n pluginAddress,\n });\n\n return removeSessionKey({\n args: [key, sessionKeysToRemove[0].predecessor],\n overrides: overrides as UserOperationOverrides<TEntryPointVersion>,\n account,\n });\n },\n\n addSessionKey: async ({\n key,\n tag,\n permissions,\n overrides,\n pluginAddress,\n account = client.account,\n }) => {\n if (!account) throw new AccountNotFoundError();\n\n return addSessionKey({\n args: [key, tag, permissions],\n overrides: overrides as UserOperationOverrides<TEntryPointVersion>,\n account,\n pluginAddress,\n });\n },\n\n rotateSessionKey: async ({\n newKey,\n oldKey,\n overrides,\n pluginAddress,\n account = client.account,\n }) => {\n if (!account) throw new AccountNotFoundError();\n\n const contract = SessionKeyPlugin.getContract(client, pluginAddress);\n\n const predecessor = await contract.read.findPredecessor([\n account.address,\n oldKey,\n ]);\n\n return rotateSessionKey({\n args: [oldKey, predecessor, newKey],\n overrides: overrides as UserOperationOverrides<TEntryPointVersion>,\n account,\n pluginAddress,\n });\n },\n\n updateSessionKeyPermissions: async ({\n key,\n permissions,\n overrides,\n pluginAddress,\n account = client.account,\n }) => {\n if (!account) throw new AccountNotFoundError();\n\n return updateKeyPermissions({\n args: [key, permissions],\n overrides: overrides as UserOperationOverrides<\n GetEntryPointFromAccount<TAccount>\n >,\n account,\n pluginAddress,\n });\n },\n };\n};\n\nfunction getRpcErrorMessageFromViemError(error: unknown): string | undefined {\n const details = (error as any)?.details;\n return typeof details === \"string\" ? details : undefined;\n}\n\nclass SessionKeyPermissionError extends Error {}\n"]}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
export type * from "./extension.js";
|
|
2
2
|
export { sessionKeyPluginActions } from "./extension.js";
|
|
3
|
-
export { SessionKeyPlugin } from "./plugin.js";
|
|
3
|
+
export { SessionKeyPlugin, SessionKeyPluginAbi, SessionKeyPluginExecutionFunctionAbi, type InstallSessionKeyPluginParams, } from "./plugin.js";
|
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.SessionKeyPlugin = exports.sessionKeyPluginActions = void 0;
|
|
3
|
+
exports.SessionKeyPluginExecutionFunctionAbi = exports.SessionKeyPluginAbi = exports.SessionKeyPlugin = exports.sessionKeyPluginActions = void 0;
|
|
4
4
|
var extension_js_1 = require("./extension.js");
|
|
5
5
|
Object.defineProperty(exports, "sessionKeyPluginActions", { enumerable: true, get: function () { return extension_js_1.sessionKeyPluginActions; } });
|
|
6
6
|
var plugin_js_1 = require("./plugin.js");
|
|
7
7
|
Object.defineProperty(exports, "SessionKeyPlugin", { enumerable: true, get: function () { return plugin_js_1.SessionKeyPlugin; } });
|
|
8
|
+
Object.defineProperty(exports, "SessionKeyPluginAbi", { enumerable: true, get: function () { return plugin_js_1.SessionKeyPluginAbi; } });
|
|
9
|
+
Object.defineProperty(exports, "SessionKeyPluginExecutionFunctionAbi", { enumerable: true, get: function () { return plugin_js_1.SessionKeyPluginExecutionFunctionAbi; } });
|
|
8
10
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../src/msca/plugins/session-key/index.ts"],"names":[],"mappings":";;;AACA,+CAAyD;AAAhD,uHAAA,uBAAuB,OAAA;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../src/msca/plugins/session-key/index.ts"],"names":[],"mappings":";;;AACA,+CAAyD;AAAhD,uHAAA,uBAAuB,OAAA;AAEhC,yCAKqB;AAJnB,6GAAA,gBAAgB,OAAA;AAChB,gHAAA,mBAAmB,OAAA;AACnB,iIAAA,oCAAoC,OAAA","sourcesContent":["export type * from \"./extension.js\";\nexport { sessionKeyPluginActions } from \"./extension.js\";\n\nexport {\n SessionKeyPlugin,\n SessionKeyPluginAbi,\n SessionKeyPluginExecutionFunctionAbi,\n type InstallSessionKeyPluginParams,\n} from \"./plugin.js\";\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"permissions.js","sourceRoot":"","sources":["../../../../../../src/msca/plugins/session-key/permissions.ts"],"names":[],"mappings":";;;AAAA,+BAAkE;AAClE,6FAAuF;AAEvF,IAAY,wBAIX;AAJD,WAAY,wBAAwB;IAClC,iFAAa,CAAA;IACb,+EAAY,CAAA;IACZ,+FAAoB,CAAA;AACtB,CAAC,EAJW,wBAAwB,wCAAxB,wBAAwB,QAInC;
|
|
1
|
+
{"version":3,"file":"permissions.js","sourceRoot":"","sources":["../../../../../../src/msca/plugins/session-key/permissions.ts"],"names":[],"mappings":"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","sourcesContent":["import { encodeFunctionData, type Address, type Hex } from \"viem\";\nimport { SessionKeyPermissionsUpdatesAbi } from \"./SessionKeyPermissionsUpdatesAbi.js\";\n\nexport enum SessionKeyAccessListType {\n ALLOWLIST = 0,\n DENYLIST = 1,\n ALLOW_ALL_ACCESS = 2,\n}\n\nexport type ContractAccessEntry = {\n // The contract address to add or remove.\n contractAddress: Address;\n // Whether the contract address should be on the list.\n isOnList: boolean;\n // Whether to check selectors for the contract address.\n checkSelectors: boolean;\n};\n\nexport type ContractMethodEntry = {\n // The contract address to add or remove.\n contractAddress: Address;\n // The function selector to add or remove.\n methodSelector: Hex;\n // Whether the function selector should be on the list.\n isOnList: boolean;\n};\n\nexport type TimeRange = {\n validFrom: number;\n validUntil: number;\n};\n\nexport type NativeTokenLimit = {\n spendLimit: bigint;\n // The time interval over which the spend limit is enforced. If unset, there is no time\n /// interval by which the limit is refreshed.\n refreshInterval?: number;\n};\n\nexport type Erc20TokenLimit = {\n tokenAddress: Address;\n spendLimit: bigint;\n // The time interval over which the spend limit is enforced. If unset, there is no time\n /// interval by which the limit is refreshed.\n refreshInterval?: number;\n};\n\n// uint256 spendLimit, uint48 refreshInterval\nexport type GasSpendLimit = {\n // The amount, in wei, of native tokens that a session key can spend on gas.\n // Note that this is not the same as the gas limit for a user operation, which is measured in units of gas.\n // This tracks gas units * gas price.\n spendLimit: bigint;\n // The time interval over which the spend limit is enforced. If unset, there is no time\n /// interval by which the limit is refreshed.\n refreshInterval?: number;\n};\n\n/**\n * A builder for creating the hex-encoded data for updating session key permissions.\n */\nexport class SessionKeyPermissionsBuilder {\n private _contractAccessControlType: SessionKeyAccessListType =\n SessionKeyAccessListType.ALLOWLIST;\n private _contractAddressAccessEntrys: ContractAccessEntry[] = [];\n private _contractMethodAccessEntrys: ContractMethodEntry[] = [];\n private _timeRange?: TimeRange;\n private _nativeTokenSpendLimit?: NativeTokenLimit;\n private _erc20TokenSpendLimits: Erc20TokenLimit[] = [];\n private _gasSpendLimit?: GasSpendLimit;\n private _requiredPaymaster?: Address;\n\n public setContractAccessControlType(aclType: SessionKeyAccessListType) {\n this._contractAccessControlType = aclType;\n return this;\n }\n\n public addContractAddressAccessEntry(entry: ContractAccessEntry) {\n this._contractAddressAccessEntrys.push(entry);\n return this;\n }\n\n public addContractFunctionAccessEntry(entry: ContractMethodEntry) {\n this._contractMethodAccessEntrys.push(entry);\n return this;\n }\n\n public setTimeRange(timeRange: TimeRange) {\n this._timeRange = timeRange;\n return this;\n }\n\n public setNativeTokenSpendLimit(limit: NativeTokenLimit) {\n this._nativeTokenSpendLimit = limit;\n return this;\n }\n\n public addErc20TokenSpendLimit(limit: Erc20TokenLimit) {\n this._erc20TokenSpendLimits.push(limit);\n return this;\n }\n\n public setGasSpendLimit(limit: GasSpendLimit) {\n this._gasSpendLimit = limit;\n return this;\n }\n\n public setRequiredPaymaster(paymaster: Address) {\n this._requiredPaymaster = paymaster;\n return this;\n }\n\n public encode(): Hex[] {\n return [\n encodeFunctionData({\n abi: SessionKeyPermissionsUpdatesAbi,\n functionName: \"setAccessListType\",\n args: [this._contractAccessControlType],\n }),\n ...this._contractAddressAccessEntrys.map((entry) =>\n encodeFunctionData({\n abi: SessionKeyPermissionsUpdatesAbi,\n functionName: \"updateAccessListAddressEntry\",\n args: [entry.contractAddress, entry.isOnList, entry.checkSelectors],\n })\n ),\n ...this._contractMethodAccessEntrys.map((entry) =>\n encodeFunctionData({\n abi: SessionKeyPermissionsUpdatesAbi,\n functionName: \"updateAccessListFunctionEntry\",\n args: [entry.contractAddress, entry.methodSelector, entry.isOnList],\n })\n ),\n this.encodeIfDefined(\n (timeRange) =>\n encodeFunctionData({\n abi: SessionKeyPermissionsUpdatesAbi,\n functionName: \"updateTimeRange\",\n args: [timeRange.validFrom, timeRange.validUntil],\n }),\n this._timeRange\n ),\n this.encodeIfDefined(\n (nativeSpendLimit) =>\n encodeFunctionData({\n abi: SessionKeyPermissionsUpdatesAbi,\n functionName: \"setNativeTokenSpendLimit\",\n args: [\n nativeSpendLimit.spendLimit,\n nativeSpendLimit.refreshInterval ?? 0,\n ],\n }),\n this._nativeTokenSpendLimit\n ),\n ...this._erc20TokenSpendLimits.map((erc20SpendLimit) =>\n encodeFunctionData({\n abi: SessionKeyPermissionsUpdatesAbi,\n functionName: \"setERC20SpendLimit\",\n args: [\n erc20SpendLimit.tokenAddress,\n erc20SpendLimit.spendLimit,\n erc20SpendLimit.refreshInterval ?? 0,\n ],\n })\n ),\n this.encodeIfDefined(\n (spendLimit) =>\n encodeFunctionData({\n abi: SessionKeyPermissionsUpdatesAbi,\n functionName: \"setGasSpendLimit\",\n args: [spendLimit.spendLimit, spendLimit.refreshInterval ?? 0],\n }),\n this._gasSpendLimit\n ),\n this.encodeIfDefined(\n (paymaster) =>\n encodeFunctionData({\n abi: SessionKeyPermissionsUpdatesAbi,\n functionName: \"setRequiredPaymaster\",\n args: [paymaster],\n }),\n this._requiredPaymaster\n ),\n ].filter((x) => x !== \"0x\");\n }\n\n private encodeIfDefined<T>(encode: (param: T) => Hex, param?: T): Hex {\n if (!param) return \"0x\";\n\n return encode(param);\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"signer.js","sourceRoot":"","sources":["../../../../../../src/msca/plugins/session-key/signer.ts"],"names":[],"mappings":";;;AAAA,uCAA2E;AAQ3E,4CAAmD;AACnD,6BAAwB;AAEX,QAAA,sBAAsB,GAAG,OAAC,CAAC,MAAM,CAAC;IAC7C,WAAW,EAAE,OAAC;SACX,KAAK,CAAC,CAAC,OAAC,CAAC,OAAO,CAAC,eAAe,CAAC,EAAE,OAAC,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC,CAAC;SACjE,EAAE,CAAC,OAAC,CAAC,MAAM,EAAW,CAAC;SACvB,OAAO,CAAC,eAAe,CAAC;IAC3B,UAAU,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,gCAAgC,CAAC;CACjE,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"signer.js","sourceRoot":"","sources":["../../../../../../src/msca/plugins/session-key/signer.ts"],"names":[],"mappings":";;;AAAA,uCAA2E;AAQ3E,4CAAmD;AACnD,6BAAwB;AAEX,QAAA,sBAAsB,GAAG,OAAC,CAAC,MAAM,CAAC;IAC7C,WAAW,EAAE,OAAC;SACX,KAAK,CAAC,CAAC,OAAC,CAAC,OAAO,CAAC,eAAe,CAAC,EAAE,OAAC,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC,CAAC;SACjE,EAAE,CAAC,OAAC,CAAC,MAAM,EAAW,CAAC;SACvB,OAAO,CAAC,eAAe,CAAC;IAC3B,UAAU,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,gCAAgC,CAAC;CACjE,CAAC,CAAC;AAGU,QAAA,2BAA2B,GAAG,qBAAqB,CAAC;AAOjE,MAAa,gBAAgB;IAQ3B,YAAY,UAAkC,EAAE;QALhD;;;;;WAAmB;QACnB;;;;;WAA6C;QACrC;;;;;WAA2D;QAC3D;;;;;WAAmB;QA6B3B;;;;mBAA2C,KAAK,IAAI,EAAE;gBACpD,OAAO,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC;YACjC,CAAC;WAAC;QAEF;;;;mBAAgE,KAAK,EACnE,GAAG,EACH,EAAE;gBACF,OAAO,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;YACrC,CAAC;WAAC;QAEF;;;;mBAAgB,KAAK,EAInB,MAAqD,EACrD,EAAE;gBACF,OAAO,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;YAC1C,CAAC;WAAC;QAOF;;;;mBAAiB,GAAG,EAAE;gBACpB,MAAM,OAAO,GACX,IAAI,CAAC,WAAW,KAAK,iBAAiB,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,YAAY,CAAC;gBAEzE,MAAM,MAAM,GAAG,IAAA,6BAAkB,GAAE,CAAC;gBACpC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;gBACzC,IAAI,CAAC,KAAK,GAAG,yBAAkB,CAAC,yBAAyB,CAAC,MAAM,CAAC,CAAC;gBAElE,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC;YAClC,CAAC;WAAC;QA3DA,MAAM,MAAM,GAAG,8BAAsB,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACrD,IAAI,CAAC,UAAU,GAAG,GAAG,mCAA2B,EAAE,CAAC;QACnD,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;QACpC,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC;QAEtC,MAAM,UAAU,GAAG,CAAC,GAAG,EAAE;YACvB,MAAM,OAAO,GACX,OAAO,IAAI,CAAC,WAAW,KAAK,QAAQ;gBAClC,CAAC,CAAC,IAAI,CAAC,WAAW;gBAClB,CAAC,CAAC,IAAI,CAAC,WAAW,KAAK,iBAAiB;oBACxC,CAAC,CAAC,cAAc;oBAChB,CAAC,CAAC,YAAY,CAAC;YACnB,MAAM,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YAE7C,IAAI,GAAG,EAAE,CAAC;gBACR,OAAO,GAAG,CAAC;YACb,CAAC;iBAAM,CAAC;gBACN,MAAM,MAAM,GAAG,IAAA,6BAAkB,GAAE,CAAC;gBACpC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;gBACzC,OAAO,MAAM,CAAC;YAChB,CAAC;QACH,CAAC,CAAC,EAAS,CAAC;QAEZ,IAAI,CAAC,KAAK,GAAG,yBAAkB,CAAC,yBAAyB,CAAC,UAAU,CAAC,CAAC;IACxE,CAAC;CAoCF;AArED,4CAqEC","sourcesContent":["import { LocalAccountSigner, type SmartAccountSigner } from \"@aa-sdk/core\";\nimport type {\n Hex,\n PrivateKeyAccount,\n SignableMessage,\n TypedData,\n TypedDataDefinition,\n} from \"viem\";\nimport { generatePrivateKey } from \"viem/accounts\";\nimport { z } from \"zod\";\n\nexport const SessionKeySignerSchema = z.object({\n storageType: z\n .union([z.literal(\"local-storage\"), z.literal(\"session-storage\")])\n .or(z.custom<Storage>())\n .default(\"local-storage\"),\n storageKey: z.string().default(\"session-key-signer:session-key\"),\n});\n\nexport type SessionKeySignerConfig = z.input<typeof SessionKeySignerSchema>;\nexport const SESSION_KEY_SIGNER_TYPE_PFX = \"alchemy:session-key\";\n\n/**\n * A simple session key signer that uses localStorage or sessionStorage to store\n * a private key. If the key is not found, it will generate a new one and store\n * it in the storage.\n */\nexport class SessionKeySigner\n implements SmartAccountSigner<LocalAccountSigner<PrivateKeyAccount>>\n{\n signerType: string;\n inner: LocalAccountSigner<PrivateKeyAccount>;\n private storageType: \"local-storage\" | \"session-storage\" | Storage;\n private storageKey: string;\n\n constructor(config_: SessionKeySignerConfig = {}) {\n const config = SessionKeySignerSchema.parse(config_);\n this.signerType = `${SESSION_KEY_SIGNER_TYPE_PFX}`;\n this.storageKey = config.storageKey;\n this.storageType = config.storageType;\n\n const sessionKey = (() => {\n const storage =\n typeof this.storageType !== \"string\"\n ? this.storageType\n : this.storageType === \"session-storage\"\n ? sessionStorage\n : localStorage;\n const key = storage.getItem(this.storageKey);\n\n if (key) {\n return key;\n } else {\n const newKey = generatePrivateKey();\n storage.setItem(this.storageKey, newKey);\n return newKey;\n }\n })() as Hex;\n\n this.inner = LocalAccountSigner.privateKeyToAccountSigner(sessionKey);\n }\n\n getAddress: () => Promise<`0x${string}`> = async () => {\n return this.inner.getAddress();\n };\n\n signMessage: (msg: SignableMessage) => Promise<`0x${string}`> = async (\n msg\n ) => {\n return this.inner.signMessage(msg);\n };\n\n signTypedData = async <\n const TTypedData extends TypedData | { [key: string]: unknown },\n TPrimaryType extends string = string\n >(\n params: TypedDataDefinition<TTypedData, TPrimaryType>\n ) => {\n return this.inner.signTypedData(params);\n };\n\n /**\n * Generates a new private key and stores it in the storage.\n *\n * @returns The public address of the new key.\n */\n generateNewKey = () => {\n const storage =\n this.storageType === \"session-storage\" ? sessionStorage : localStorage;\n\n const newKey = generatePrivateKey();\n storage.setItem(this.storageKey, newKey);\n this.inner = LocalAccountSigner.privateKeyToAccountSigner(newKey);\n\n return this.inner.inner.address;\n };\n}\n"]}
|
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
import type { GetAccountParameter, SmartContractAccount } from "@aa-sdk/core";
|
|
2
2
|
import type { Address, Chain, Client, Transport } from "viem";
|
|
3
|
-
|
|
3
|
+
type BuildSessionKeysToRemoveStructParams<TAccount extends SmartContractAccount | undefined = SmartContractAccount | undefined> = {
|
|
4
4
|
keys: ReadonlyArray<Address>;
|
|
5
5
|
pluginAddress?: Address;
|
|
6
|
-
} & GetAccountParameter<TAccount
|
|
6
|
+
} & GetAccountParameter<TAccount>;
|
|
7
|
+
export declare function buildSessionKeysToRemoveStruct<TTransport extends Transport = Transport, TChain extends Chain | undefined = Chain | undefined, TAccount extends SmartContractAccount | undefined = SmartContractAccount | undefined>(client: Client<TTransport, TChain, TAccount>, args: BuildSessionKeysToRemoveStructParams): Promise<{
|
|
7
8
|
sessionKey: Address;
|
|
8
9
|
predecessor: Address;
|
|
9
10
|
}[]>;
|
|
11
|
+
export {};
|
|
@@ -3,7 +3,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.buildSessionKeysToRemoveStruct = void 0;
|
|
4
4
|
const core_1 = require("@aa-sdk/core");
|
|
5
5
|
const plugin_js_1 = require("./plugin.js");
|
|
6
|
-
|
|
6
|
+
async function buildSessionKeysToRemoveStruct(client, args) {
|
|
7
|
+
const { keys, pluginAddress, account = client.account } = args;
|
|
7
8
|
if (!account)
|
|
8
9
|
throw new core_1.AccountNotFoundError();
|
|
9
10
|
const contract = plugin_js_1.SessionKeyPlugin.getContract(client, pluginAddress);
|
|
@@ -16,6 +17,6 @@ const buildSessionKeysToRemoveStruct = async (client, { keys, pluginAddress, acc
|
|
|
16
17
|
sessionKey: key,
|
|
17
18
|
predecessor,
|
|
18
19
|
}));
|
|
19
|
-
}
|
|
20
|
+
}
|
|
20
21
|
exports.buildSessionKeysToRemoveStruct = buildSessionKeysToRemoveStruct;
|
|
21
22
|
//# sourceMappingURL=utils.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../../../src/msca/plugins/session-key/utils.ts"],"names":[],"mappings":";;;AACA,uCAAoD;AAEpD,2CAA+C;
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../../../src/msca/plugins/session-key/utils.ts"],"names":[],"mappings":";;;AACA,uCAAoD;AAEpD,2CAA+C;AA6BxC,KAAK,UAAU,8BAA8B,CAOlD,MAA4C,EAC5C,IAA0C;IAE1C,MAAM,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,GAAG,MAAM,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC;IAE/D,IAAI,CAAC,OAAO;QAAE,MAAM,IAAI,2BAAoB,EAAE,CAAC;IAE/C,MAAM,QAAQ,GAAG,4BAAgB,CAAC,WAAW,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;IACrE,OAAO,CACL,MAAM,OAAO,CAAC,GAAG,CACf,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;QACrB,OAAO;YACL,GAAG;YACH,MAAM,QAAQ,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;SAC5D,CAAC;IACJ,CAAC,CAAC,CACH,CACF,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,WAAW,CAAC,EAAE,EAAE,CAAC,CAAC;QAC7B,UAAU,EAAE,GAAG;QACf,WAAW;KACZ,CAAC,CAAC,CAAC;AACN,CAAC;AA5BD,wEA4BC","sourcesContent":["import type { GetAccountParameter, SmartContractAccount } from \"@aa-sdk/core\";\nimport { AccountNotFoundError } from \"@aa-sdk/core\";\nimport type { Address, Chain, Client, Transport } from \"viem\";\nimport { SessionKeyPlugin } from \"./plugin.js\";\n\ntype BuildSessionKeysToRemoveStructParams<\n TAccount extends SmartContractAccount | undefined =\n | SmartContractAccount\n | undefined\n> = {\n keys: ReadonlyArray<Address>;\n pluginAddress?: Address;\n} & GetAccountParameter<TAccount>;\n\n/**\n * Finds predecessors for each provided key and returns them in the struct `ISessionKeyPlugin.SessionKeyToRemove[]`.\n *\n * @example\n * ```ts\n * import { buildSessionKeysToRemoveStruct } from \"@account-kit/smart-contracts\";\n *\n * const client = createSmartAccountClient(...);\n *\n * const keysToRemove = await buildSessionKeysToRemoveStruct(client, {\n * keys: [\"0x...\", \"0x...\"],\n * });\n * ```\n *\n * @param {Client<TTransport, TChain, TAccount>} client The client instance used to interact with the smart account\n * @param {BuildSessionKeysToRemoveStructParams<TAccount>} args Arguments to configure the session key removal process\n * @returns {Promise<{ sessionKey: Address; predecessor: Address }[]>} A promise that resolves to an array of objects each containing a session key and its predecessor\n */\nexport async function buildSessionKeysToRemoveStruct<\n TTransport extends Transport = Transport,\n TChain extends Chain | undefined = Chain | undefined,\n TAccount extends SmartContractAccount | undefined =\n | SmartContractAccount\n | undefined\n>(\n client: Client<TTransport, TChain, TAccount>,\n args: BuildSessionKeysToRemoveStructParams\n): Promise<{ sessionKey: Address; predecessor: Address }[]> {\n const { keys, pluginAddress, account = client.account } = args;\n\n if (!account) throw new AccountNotFoundError();\n\n const contract = SessionKeyPlugin.getContract(client, pluginAddress);\n return (\n await Promise.all(\n keys.map(async (key) => {\n return [\n key,\n await contract.read.findPredecessor([account.address, key]),\n ];\n })\n )\n ).map(([key, predecessor]) => ({\n sessionKey: key,\n predecessor,\n }));\n}\n"]}
|
|
@@ -3,13 +3,15 @@ import type { Address, Chain, Transport } from "viem";
|
|
|
3
3
|
import { type MultiOwnerModularAccount } from "./account/multiOwnerAccount.js";
|
|
4
4
|
export declare const getDefaultMultisigModularAccountFactoryAddress: (chain: Chain) => Address;
|
|
5
5
|
export declare const getDefaultMultiOwnerModularAccountFactoryAddress: (chain: Chain) => Address;
|
|
6
|
-
export
|
|
6
|
+
export type GetMSCAUpgradeToData<TSigner extends SmartAccountSigner = SmartAccountSigner, TAccount extends SmartContractAccountWithSigner<string, TSigner> | undefined = SmartContractAccountWithSigner<string, TSigner> | undefined> = {
|
|
7
7
|
multiOwnerPluginAddress?: Address;
|
|
8
|
-
} & GetAccountParameter<TAccount
|
|
8
|
+
} & GetAccountParameter<TAccount>;
|
|
9
|
+
export declare function getMSCAUpgradeToData<TTransport extends Transport = Transport, TChain extends Chain | undefined = Chain | undefined, TSigner extends SmartAccountSigner = SmartAccountSigner, TAccount extends SmartContractAccountWithSigner<string, TSigner> | undefined = SmartContractAccountWithSigner<string, TSigner> | undefined>(client: SmartAccountClient<TTransport, TChain, TAccount>, args: GetMSCAUpgradeToData<TSigner, TAccount>): Promise<UpgradeToData & {
|
|
9
10
|
createMAAccount: () => Promise<MultiOwnerModularAccount<TSigner>>;
|
|
10
11
|
}>;
|
|
11
|
-
export
|
|
12
|
+
export type GetMAInitializationDataParams<TTransport extends Transport = Transport, TChain extends Chain | undefined = Chain | undefined, TAccount extends SmartContractAccount | undefined = SmartContractAccount | undefined> = {
|
|
12
13
|
multiOwnerPluginAddress?: Address;
|
|
13
14
|
client: SmartAccountClient<TTransport, TChain, TAccount>;
|
|
14
15
|
signerAddress: Address | Address[];
|
|
15
|
-
}
|
|
16
|
+
};
|
|
17
|
+
export declare function getMAInitializationData<TTransport extends Transport = Transport, TChain extends Chain | undefined = Chain | undefined, TAccount extends SmartContractAccount | undefined = SmartContractAccount | undefined>({ client, multiOwnerPluginAddress, signerAddress, }: GetMAInitializationDataParams<TTransport, TChain, TAccount>): Promise<UpgradeToData>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../src/msca/utils.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n AccountNotFoundError,\n ChainNotFoundError,\n arbitrum,\n arbitrumSepolia,\n base,\n baseSepolia,\n mainnet,\n optimism,\n optimismSepolia,\n polygon,\n polygonAmoy,\n sepolia,\n type GetAccountParameter,\n type SmartAccountClient,\n type SmartAccountSigner,\n type SmartContractAccount,\n type SmartContractAccountWithSigner,\n type UpgradeToData,\n} from \"@aa-sdk/core\";\nimport type { Address, Chain, Transport } from \"viem\";\nimport {\n custom,\n encodeAbiParameters,\n encodeFunctionData,\n encodeFunctionResult,\n keccak256,\n parseAbiParameters,\n} from \"viem\";\nimport { IPluginAbi } from \"./abis/IPlugin.js\";\nimport { MultiOwnerModularAccountFactoryAbi } from \"./abis/MultiOwnerModularAccountFactory.js\";\nimport { UpgradeableModularAccountAbi } from \"./abis/UpgradeableModularAccount.js\";\nimport {\n createMultiOwnerModularAccount,\n type MultiOwnerModularAccount,\n} from \"./account/multiOwnerAccount.js\";\nimport { MultiOwnerPlugin } from \"./plugins/multi-owner/plugin.js\";\n\n/**\n * Utility method returning the default multi sig msca factory address given a {@link Chain} object\n *\n * @param chain - a {@link Chain} object\n * @returns a {@link Address} for the given chain\n * @throws if the chain doesn't have an address currently deployed\n */\nexport const getDefaultMultisigModularAccountFactoryAddress = (\n chain: Chain\n): Address => {\n switch (chain.id) {\n case sepolia.id:\n case baseSepolia.id:\n case polygon.id:\n case mainnet.id:\n case polygonAmoy.id:\n case optimism.id:\n case optimismSepolia.id:\n case arbitrum.id:\n case arbitrumSepolia.id:\n case base.id:\n default:\n return \"0x000000000000204327E6669f00901a57CE15aE15\";\n }\n};\n\n/**\n * Utility method returning the default multi owner msca factory address given a {@link Chain} object\n *\n * @param chain - a {@link Chain} object\n * @returns a {@link Address} for the given chain\n * @throws if the chain doesn't have an address currently deployed\n */\nexport const getDefaultMultiOwnerModularAccountFactoryAddress = (\n chain: Chain\n): Address => {\n switch (chain.id) {\n default:\n return \"0x000000e92D78D90000007F0082006FDA09BD5f11\";\n }\n};\n\nexport async function getMSCAUpgradeToData<\n TTransport extends Transport = Transport,\n TChain extends Chain | undefined = Chain | undefined,\n TSigner extends SmartAccountSigner = SmartAccountSigner,\n TAccount extends\n | SmartContractAccountWithSigner<string, TSigner>\n | undefined = SmartContractAccountWithSigner<string, TSigner> | undefined\n>(\n client: SmartAccountClient<TTransport, TChain, TAccount>,\n args: {\n multiOwnerPluginAddress?: Address;\n } & GetAccountParameter<TAccount>\n): Promise<\n UpgradeToData & {\n createMAAccount: () => Promise<MultiOwnerModularAccount<TSigner>>;\n }\n> {\n const { account: account_ = client.account, multiOwnerPluginAddress } = args;\n\n if (!account_) {\n throw new AccountNotFoundError();\n }\n const account = account_ as SmartContractAccountWithSigner<string, TSigner>;\n\n const chain = client.chain;\n if (!chain) {\n throw new ChainNotFoundError();\n }\n\n const initData = await getMAInitializationData({\n client,\n multiOwnerPluginAddress,\n signerAddress: await account.getSigner().getAddress(),\n });\n\n return {\n ...initData,\n createMAAccount: async () =>\n createMultiOwnerModularAccount({\n transport: custom(client.transport),\n chain: chain as Chain,\n signer: account.getSigner(),\n accountAddress: account.address,\n }),\n };\n}\n\nexport async function getMAInitializationData<\n TTransport extends Transport = Transport,\n TChain extends Chain | undefined = Chain | undefined,\n TAccount extends SmartContractAccount | undefined =\n | SmartContractAccount\n | undefined\n>({\n client,\n multiOwnerPluginAddress,\n signerAddress,\n}: {\n multiOwnerPluginAddress?: Address;\n client: SmartAccountClient<TTransport, TChain, TAccount>;\n signerAddress: Address | Address[];\n}): Promise<UpgradeToData> {\n if (!client.chain) {\n throw new ChainNotFoundError();\n }\n\n const factoryAddress = getDefaultMultiOwnerModularAccountFactoryAddress(\n client.chain\n );\n\n const implAddress = await client.readContract({\n abi: MultiOwnerModularAccountFactoryAbi,\n address: factoryAddress,\n functionName: \"IMPL\",\n });\n\n const multiOwnerAddress =\n multiOwnerPluginAddress ?? MultiOwnerPlugin.meta.addresses[client.chain.id];\n\n if (!multiOwnerAddress) {\n throw new Error(\"could not get multi owner plugin address\");\n }\n\n const moPluginManifest = await client.readContract({\n abi: IPluginAbi,\n address: multiOwnerAddress,\n functionName: \"pluginManifest\",\n });\n\n const hashedMultiOwnerPluginManifest = keccak256(\n encodeFunctionResult({\n abi: IPluginAbi,\n functionName: \"pluginManifest\",\n result: moPluginManifest,\n })\n );\n\n const encodedOwner = encodeAbiParameters(\n parseAbiParameters(\"address[]\"),\n Array.isArray(signerAddress) ? [signerAddress] : [[signerAddress]]\n );\n\n const encodedPluginInitData = encodeAbiParameters(\n parseAbiParameters(\"bytes32[], bytes[]\"),\n [[hashedMultiOwnerPluginManifest], [encodedOwner]]\n );\n\n const encodedMSCAInitializeData = encodeFunctionData({\n abi: UpgradeableModularAccountAbi,\n functionName: \"initialize\",\n args: [[multiOwnerAddress], encodedPluginInitData],\n });\n\n return {\n implAddress,\n initializationData: encodedMSCAInitializeData,\n };\n}\n"]}
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../src/msca/utils.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n AccountNotFoundError,\n ChainNotFoundError,\n arbitrum,\n arbitrumSepolia,\n base,\n baseSepolia,\n mainnet,\n optimism,\n optimismSepolia,\n polygon,\n polygonAmoy,\n sepolia,\n type GetAccountParameter,\n type SmartAccountClient,\n type SmartAccountSigner,\n type SmartContractAccount,\n type SmartContractAccountWithSigner,\n type UpgradeToData,\n} from \"@aa-sdk/core\";\nimport type { Address, Chain, Transport } from \"viem\";\nimport {\n custom,\n encodeAbiParameters,\n encodeFunctionData,\n encodeFunctionResult,\n keccak256,\n parseAbiParameters,\n} from \"viem\";\nimport { IPluginAbi } from \"./abis/IPlugin.js\";\nimport { MultiOwnerModularAccountFactoryAbi } from \"./abis/MultiOwnerModularAccountFactory.js\";\nimport { UpgradeableModularAccountAbi } from \"./abis/UpgradeableModularAccount.js\";\nimport {\n createMultiOwnerModularAccount,\n type MultiOwnerModularAccount,\n} from \"./account/multiOwnerAccount.js\";\nimport { MultiOwnerPlugin } from \"./plugins/multi-owner/plugin.js\";\n\n/**\n * Utility method returning the default multi sig msca factory address given a {@link Chain} object\n *\n * @param chain a {@link Chain} object\n * @returns a {@link Address} for the given chain\n * @throws if the chain doesn't have an address currently deployed\n */\nexport const getDefaultMultisigModularAccountFactoryAddress = (\n chain: Chain\n): Address => {\n switch (chain.id) {\n case sepolia.id:\n case baseSepolia.id:\n case polygon.id:\n case mainnet.id:\n case polygonAmoy.id:\n case optimism.id:\n case optimismSepolia.id:\n case arbitrum.id:\n case arbitrumSepolia.id:\n case base.id:\n default:\n return \"0x000000000000204327E6669f00901a57CE15aE15\";\n }\n};\n\n/**\n * Utility method returning the default multi owner msca factory address given a {@link Chain} object\n *\n * @param chain - a {@link Chain} object\n * @returns a {@link Address} for the given chain\n * @throws if the chain doesn't have an address currently deployed\n */\nexport const getDefaultMultiOwnerModularAccountFactoryAddress = (\n chain: Chain\n): Address => {\n switch (chain.id) {\n default:\n return \"0x000000e92D78D90000007F0082006FDA09BD5f11\";\n }\n};\n\nexport type GetMSCAUpgradeToData<\n TSigner extends SmartAccountSigner = SmartAccountSigner,\n TAccount extends\n | SmartContractAccountWithSigner<string, TSigner>\n | undefined = SmartContractAccountWithSigner<string, TSigner> | undefined\n> = {\n multiOwnerPluginAddress?: Address;\n} & GetAccountParameter<TAccount>;\n\n/**\n * Retrieves the data necessary to upgrade to a Multi-Signature Contract Account (MSCA) and provides a method to create a Multi-Owner Modular Account.\n *\n * @example\n * ```ts\n * import { createLightAccountClient, getMSCAUpgradeToData } from \"@account-kit/smart-contracts\";\n *\n * const client = createLightAccountClient(...);\n * const upgradeData = await getMSCAUpgradeToData(client, {});\n * ```\n *\n * @param {SmartAccountClient<TTransport, TChain, TAccount>} client The smart account client\n * @param {GetMSCAUpgradeToData<TSigner, TAccount>} args The arguments required for the upgrade\n * @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\n */\nexport async function getMSCAUpgradeToData<\n TTransport extends Transport = Transport,\n TChain extends Chain | undefined = Chain | undefined,\n TSigner extends SmartAccountSigner = SmartAccountSigner,\n TAccount extends\n | SmartContractAccountWithSigner<string, TSigner>\n | undefined = SmartContractAccountWithSigner<string, TSigner> | undefined\n>(\n client: SmartAccountClient<TTransport, TChain, TAccount>,\n args: GetMSCAUpgradeToData<TSigner, TAccount>\n): Promise<\n UpgradeToData & {\n createMAAccount: () => Promise<MultiOwnerModularAccount<TSigner>>;\n }\n> {\n const { account: account_ = client.account, multiOwnerPluginAddress } = args;\n\n if (!account_) {\n throw new AccountNotFoundError();\n }\n const account = account_ as SmartContractAccountWithSigner<string, TSigner>;\n\n const chain = client.chain;\n if (!chain) {\n throw new ChainNotFoundError();\n }\n\n const initData = await getMAInitializationData({\n client,\n multiOwnerPluginAddress,\n signerAddress: await account.getSigner().getAddress(),\n });\n\n return {\n ...initData,\n createMAAccount: async () =>\n createMultiOwnerModularAccount({\n transport: custom(client.transport),\n chain: chain as Chain,\n signer: account.getSigner(),\n accountAddress: account.address,\n }),\n };\n}\n\nexport type GetMAInitializationDataParams<\n TTransport extends Transport = Transport,\n TChain extends Chain | undefined = Chain | undefined,\n TAccount extends SmartContractAccount | undefined =\n | SmartContractAccount\n | undefined\n> = {\n multiOwnerPluginAddress?: Address;\n client: SmartAccountClient<TTransport, TChain, TAccount>;\n signerAddress: Address | Address[];\n};\n\n/**\n * 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.\n *\n * @example\n * ```ts\n * import { getMAInitializationData } from \"@account-kit/smart-contracts\";\n * import { createSmartAccountClient } from \"@aa-sdk/core\";\n *\n * const client = createSmartAccountClient(...);\n * const initializationData = await getMAInitializationData({\n * client,\n * signerAddress: \"0x...\", // or array of signers\n * });\n * ```\n *\n * @param {GetMAInitializationDataParams<TTransport, TChain, TAccount>} params the parameters for getting initialization data\n * @param {SmartAccountClient<TTransport, TChain, TAccount>} params.client the smart account client\n * @param {Address | Address[]} params.signerAddress the address of the signer or an array of signer addresses\n * @param {Address} [params.multiOwnerPluginAddress] optional address of the multi-owner plugin\n * @returns {Promise<UpgradeToData>} a promise that resolves to the initialization data required for upgrading to a multi-owner modular account\n */\nexport async function getMAInitializationData<\n TTransport extends Transport = Transport,\n TChain extends Chain | undefined = Chain | undefined,\n TAccount extends SmartContractAccount | undefined =\n | SmartContractAccount\n | undefined\n>({\n client,\n multiOwnerPluginAddress,\n signerAddress,\n}: GetMAInitializationDataParams<\n TTransport,\n TChain,\n TAccount\n>): Promise<UpgradeToData> {\n if (!client.chain) {\n throw new ChainNotFoundError();\n }\n\n const factoryAddress = getDefaultMultiOwnerModularAccountFactoryAddress(\n client.chain\n );\n\n const implAddress = await client.readContract({\n abi: MultiOwnerModularAccountFactoryAbi,\n address: factoryAddress,\n functionName: \"IMPL\",\n });\n\n const multiOwnerAddress =\n multiOwnerPluginAddress ?? MultiOwnerPlugin.meta.addresses[client.chain.id];\n\n if (!multiOwnerAddress) {\n throw new Error(\"could not get multi owner plugin address\");\n }\n\n const moPluginManifest = await client.readContract({\n abi: IPluginAbi,\n address: multiOwnerAddress,\n functionName: \"pluginManifest\",\n });\n\n const hashedMultiOwnerPluginManifest = keccak256(\n encodeFunctionResult({\n abi: IPluginAbi,\n functionName: \"pluginManifest\",\n result: moPluginManifest,\n })\n );\n\n const encodedOwner = encodeAbiParameters(\n parseAbiParameters(\"address[]\"),\n Array.isArray(signerAddress) ? [signerAddress] : [[signerAddress]]\n );\n\n const encodedPluginInitData = encodeAbiParameters(\n parseAbiParameters(\"bytes32[], bytes[]\"),\n [[hashedMultiOwnerPluginManifest], [encodedOwner]]\n );\n\n const encodedMSCAInitializeData = encodeFunctionData({\n abi: UpgradeableModularAccountAbi,\n functionName: \"initialize\",\n args: [[multiOwnerAddress], encodedPluginInitData],\n });\n\n return {\n implAddress,\n initializationData: encodedMSCAInitializeData,\n };\n}\n"]}
|
package/dist/esm/src/index.d.ts
CHANGED
|
@@ -36,14 +36,14 @@ export { InvalidAggregatedSignatureError, InvalidContextSignatureError, Multisig
|
|
|
36
36
|
export type * from "./msca/plugin-manager/decorator.js";
|
|
37
37
|
export { pluginManagerActions } from "./msca/plugin-manager/decorator.js";
|
|
38
38
|
export { installPlugin } from "./msca/plugin-manager/installPlugin.js";
|
|
39
|
+
export { multiOwnerPluginActions } from "./msca/plugins/multi-owner/extension.js";
|
|
39
40
|
export type * from "./msca/plugins/multi-owner/index.js";
|
|
40
|
-
export { multiOwnerPluginActions } from "./msca/plugins/multi-owner/index.js";
|
|
41
41
|
export { MultiOwnerPlugin, MultiOwnerPluginAbi, MultiOwnerPluginExecutionFunctionAbi, } from "./msca/plugins/multi-owner/plugin.js";
|
|
42
42
|
export type * from "./msca/plugins/multisig/index.js";
|
|
43
|
-
export { MultisigPlugin, MultisigPluginAbi, MultisigPluginExecutionFunctionAbi, multisigPluginActions, multisigSignatureMiddleware,
|
|
43
|
+
export { MultisigPlugin, MultisigPluginAbi, MultisigPluginExecutionFunctionAbi, multisigPluginActions, multisigSignatureMiddleware, } from "./msca/plugins/multisig/index.js";
|
|
44
44
|
export { combineSignatures, formatSignatures, getSignerType, splitAggregatedSignature, } from "./msca/plugins/multisig/utils/index.js";
|
|
45
|
+
export { sessionKeyPluginActions } from "./msca/plugins/session-key/extension.js";
|
|
45
46
|
export type * from "./msca/plugins/session-key/index.js";
|
|
46
|
-
export { sessionKeyPluginActions } from "./msca/plugins/session-key/index.js";
|
|
47
47
|
export type * from "./msca/plugins/session-key/permissions.js";
|
|
48
48
|
export { SessionKeyAccessListType, SessionKeyPermissionsBuilder, } from "./msca/plugins/session-key/permissions.js";
|
|
49
49
|
export { SessionKeyPlugin, SessionKeyPluginAbi, SessionKeyPluginExecutionFunctionAbi, } from "./msca/plugins/session-key/plugin.js";
|
package/dist/esm/src/index.js
CHANGED
|
@@ -26,11 +26,11 @@ export { createMultisigAccountAlchemyClient, } from "./msca/client/multiSigAlche
|
|
|
26
26
|
export { InvalidAggregatedSignatureError, InvalidContextSignatureError, MultisigAccountExpectedError, MultisigMissingSignatureError, } from "./msca/errors.js";
|
|
27
27
|
export { pluginManagerActions } from "./msca/plugin-manager/decorator.js";
|
|
28
28
|
export { installPlugin } from "./msca/plugin-manager/installPlugin.js";
|
|
29
|
-
export { multiOwnerPluginActions } from "./msca/plugins/multi-owner/
|
|
29
|
+
export { multiOwnerPluginActions } from "./msca/plugins/multi-owner/extension.js";
|
|
30
30
|
export { MultiOwnerPlugin, MultiOwnerPluginAbi, MultiOwnerPluginExecutionFunctionAbi, } from "./msca/plugins/multi-owner/plugin.js";
|
|
31
31
|
export { MultisigPlugin, MultisigPluginAbi, MultisigPluginExecutionFunctionAbi, multisigPluginActions, multisigSignatureMiddleware, } from "./msca/plugins/multisig/index.js";
|
|
32
32
|
export { combineSignatures, formatSignatures, getSignerType, splitAggregatedSignature, } from "./msca/plugins/multisig/utils/index.js";
|
|
33
|
-
export { sessionKeyPluginActions } from "./msca/plugins/session-key/
|
|
33
|
+
export { sessionKeyPluginActions } from "./msca/plugins/session-key/extension.js";
|
|
34
34
|
export { SessionKeyAccessListType, SessionKeyPermissionsBuilder, } from "./msca/plugins/session-key/permissions.js";
|
|
35
35
|
export { SessionKeyPlugin, SessionKeyPluginAbi, SessionKeyPluginExecutionFunctionAbi, } from "./msca/plugins/session-key/plugin.js";
|
|
36
36
|
export { SessionKeySigner } from "./msca/plugins/session-key/signer.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/index.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,kBAAkB,EAAE,MAAM,qCAAqC,CAAC;AACzE,OAAO,EAAE,iBAAiB,IAAI,6BAA6B,EAAE,MAAM,8CAA8C,CAAC;AAClH,OAAO,EACL,+BAA+B,GAEhC,MAAM,0CAA0C,CAAC;AAClD,OAAO,EAAE,wBAAwB,EAAE,MAAM,mCAAmC,CAAC;AAC7E,OAAO,EACL,yCAAyC,GAE1C,MAAM,oDAAoD,CAAC;AAE5D,OAAO,EAAE,yBAAyB,EAAE,MAAM,4CAA4C,CAAC;AAGvF,OAAO,EACL,sBAAsB,EACtB,oCAAoC,EACpC,gCAAgC,EAChC,0BAA0B,EAC1B,oCAAoC,EACpC,yBAAyB,GAC1B,MAAM,0BAA0B,CAAC;AAIlC,OAAO,EAAE,4BAA4B,EAAE,MAAM,wCAAwC,CAAC;AACtF,OAAO,EAAE,YAAY,IAAI,kCAAkC,EAAE,MAAM,yCAAyC,CAAC;AAC7G,OAAO,EAAE,kCAAkC,EAAE,MAAM,mDAAmD,CAAC;AAEvG,OAAO,EAAE,mCAAmC,EAAE,MAAM,sDAAsD,CAAC;AAG3G,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAChE,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACpD,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAClE,OAAO,EAAE,oBAAoB,EAAE,MAAM,kCAAkC,CAAC;AACxE,OAAO,EAAE,kCAAkC,EAAE,MAAM,gDAAgD,CAAC;AACpG,OAAO,EAAE,gCAAgC,EAAE,MAAM,8CAA8C,CAAC;AAChG,OAAO,EAAE,4BAA4B,EAAE,MAAM,0CAA0C,CAAC;AAExF,OAAO,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAC;AAGxE,OAAO,EAAE,8BAA8B,EAAE,MAAM,qCAAqC,CAAC;AAErF,OAAO,EAAE,4BAA4B,EAAE,MAAM,mCAAmC,CAAC;AACjF,OAAO,EAAE,gBAAgB,EAAE,MAAM,oCAAoC,CAAC;AACtE,OAAO,EACL,iCAAiC,GAElC,MAAM,gCAAgC,CAAC;AACxC,OAAO,EACL,oCAAoC,EACpC,kCAAkC,GACnC,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACL,kCAAkC,GAEnC,MAAM,wCAAwC,CAAC;AAChD,OAAO,EACL,+BAA+B,EAC/B,4BAA4B,EAC5B,4BAA4B,EAC5B,6BAA6B,GAC9B,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EAAE,oBAAoB,EAAE,MAAM,oCAAoC,CAAC;AAC1E,OAAO,EAAE,aAAa,EAAE,MAAM,wCAAwC,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/index.ts"],"names":[],"mappings":"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","sourcesContent":["// Add you exports here, make sure to export types separately from impls and use the `type` keyword when exporting them\n// Don't use wildcard exports, instead use named exports\n\n//light-account exports\nexport type * from \"./light-account/accounts/account.js\";\nexport { createLightAccount } from \"./light-account/accounts/account.js\";\nexport { transferOwnership as transferLightAccountOwnership } from \"./light-account/actions/transferOwnership.js\";\nexport {\n createLightAccountAlchemyClient,\n type AlchemyLightAccountClientConfig,\n} from \"./light-account/clients/alchemyClient.js\";\nexport { createLightAccountClient } from \"./light-account/clients/client.js\";\nexport {\n createMultiOwnerLightAccountAlchemyClient,\n type AlchemyMultiOwnerLightAccountClientConfig,\n} from \"./light-account/clients/multiOwnerAlchemyClient.js\";\nexport type * from \"./light-account/decorators/lightAccount.js\";\nexport { lightAccountClientActions } from \"./light-account/decorators/lightAccount.js\";\nexport type * from \"./light-account/types.js\";\n\nexport {\n AccountVersionRegistry,\n LightAccountUnsupported1271Factories,\n LightAccountUnsupported1271Impls,\n defaultLightAccountVersion,\n getDefaultLightAccountFactoryAddress,\n getLightAccountVersionDef,\n} from \"./light-account/utils.js\";\n\n//multi-owner-light-account exports\nexport type * from \"./light-account/accounts/multiOwner.js\";\nexport { createMultiOwnerLightAccount } from \"./light-account/accounts/multiOwner.js\";\nexport { updateOwners as updateMultiOwnerLightAccountOwners } from \"./light-account/actions/updateOwners.js\";\nexport { createMultiOwnerLightAccountClient } from \"./light-account/clients/multiOwnerLightAccount.js\";\nexport type * from \"./light-account/decorators/multiOwnerLightAccount.js\";\nexport { multiOwnerLightAccountClientActions } from \"./light-account/decorators/multiOwnerLightAccount.js\";\n\n// msca exports\nexport { IAccountLoupeAbi } from \"./msca/abis/IAccountLoupe.js\";\nexport { IPluginAbi } from \"./msca/abis/IPlugin.js\";\nexport { IPluginManagerAbi } from \"./msca/abis/IPluginManager.js\";\nexport { IStandardExecutorAbi } from \"./msca/abis/IStandardExecutor.js\";\nexport { MultiOwnerModularAccountFactoryAbi } from \"./msca/abis/MultiOwnerModularAccountFactory.js\";\nexport { MultisigModularAccountFactoryAbi } from \"./msca/abis/MultisigModularAccountFactory.js\";\nexport { UpgradeableModularAccountAbi } from \"./msca/abis/UpgradeableModularAccount.js\";\nexport type * from \"./msca/account-loupe/decorator.js\";\nexport { accountLoupeActions } from \"./msca/account-loupe/decorator.js\";\nexport type * from \"./msca/account-loupe/types.js\";\nexport type * from \"./msca/account/multiOwnerAccount.js\";\nexport { createMultiOwnerModularAccount } from \"./msca/account/multiOwnerAccount.js\";\nexport type * from \"./msca/account/multisigAccount.js\";\nexport { createMultisigModularAccount } from \"./msca/account/multisigAccount.js\";\nexport { standardExecutor } from \"./msca/account/standardExecutor.js\";\nexport {\n createModularAccountAlchemyClient,\n type AlchemyModularAccountClientConfig,\n} from \"./msca/client/alchemyClient.js\";\nexport {\n createMultiOwnerModularAccountClient,\n createMultisigModularAccountClient,\n} from \"./msca/client/client.js\";\nexport {\n createMultisigAccountAlchemyClient,\n type AlchemyMultisigAccountClientConfig,\n} from \"./msca/client/multiSigAlchemyClient.js\";\nexport {\n InvalidAggregatedSignatureError,\n InvalidContextSignatureError,\n MultisigAccountExpectedError,\n MultisigMissingSignatureError,\n} from \"./msca/errors.js\";\nexport type * from \"./msca/plugin-manager/decorator.js\";\nexport { pluginManagerActions } from \"./msca/plugin-manager/decorator.js\";\nexport { installPlugin } from \"./msca/plugin-manager/installPlugin.js\";\nexport { multiOwnerPluginActions } from \"./msca/plugins/multi-owner/extension.js\";\nexport type * from \"./msca/plugins/multi-owner/index.js\";\nexport {\n MultiOwnerPlugin,\n MultiOwnerPluginAbi,\n MultiOwnerPluginExecutionFunctionAbi,\n} from \"./msca/plugins/multi-owner/plugin.js\";\nexport type * from \"./msca/plugins/multisig/index.js\";\nexport {\n MultisigPlugin,\n MultisigPluginAbi,\n MultisigPluginExecutionFunctionAbi,\n multisigPluginActions,\n multisigSignatureMiddleware,\n} from \"./msca/plugins/multisig/index.js\";\nexport {\n combineSignatures,\n formatSignatures,\n getSignerType,\n splitAggregatedSignature,\n} from \"./msca/plugins/multisig/utils/index.js\";\nexport { sessionKeyPluginActions } from \"./msca/plugins/session-key/extension.js\";\nexport type * from \"./msca/plugins/session-key/index.js\";\nexport type * from \"./msca/plugins/session-key/permissions.js\";\nexport {\n SessionKeyAccessListType,\n SessionKeyPermissionsBuilder,\n} from \"./msca/plugins/session-key/permissions.js\";\nexport {\n SessionKeyPlugin,\n SessionKeyPluginAbi,\n SessionKeyPluginExecutionFunctionAbi,\n} from \"./msca/plugins/session-key/plugin.js\";\nexport { SessionKeySigner } from \"./msca/plugins/session-key/signer.js\";\nexport { buildSessionKeysToRemoveStruct } from \"./msca/plugins/session-key/utils.js\";\nexport type * from \"./msca/plugins/types.js\";\nexport {\n getDefaultMultiOwnerModularAccountFactoryAddress,\n getDefaultMultisigModularAccountFactoryAddress,\n getMAInitializationData,\n getMSCAUpgradeToData,\n} from \"./msca/utils.js\";\n"]}
|
|
@@ -4,12 +4,12 @@ import { LightAccountAbi_v1 } from "../abis/LightAccountAbi_v1.js";
|
|
|
4
4
|
import { LightAccountAbi_v2 } from "../abis/LightAccountAbi_v2.js";
|
|
5
5
|
import { LightAccountFactoryAbi_v1 } from "../abis/LightAccountFactoryAbi_v1.js";
|
|
6
6
|
import { LightAccountFactoryAbi_v2 } from "../abis/LightAccountFactoryAbi_v2.js";
|
|
7
|
-
import { AccountVersionRegistry, LightAccountUnsupported1271Factories, defaultLightAccountVersion, } from "../utils.js";
|
|
7
|
+
import { AccountVersionRegistry, LightAccountUnsupported1271Factories, defaultLightAccountVersion, getDefaultLightAccountFactoryAddress, } from "../utils.js";
|
|
8
8
|
import { createLightAccountBase, } from "./base.js";
|
|
9
9
|
export async function createLightAccount({ transport, chain, signer, initCode, version = defaultLightAccountVersion("LightAccount"), entryPoint = getEntryPoint(chain, {
|
|
10
10
|
version: AccountVersionRegistry["LightAccount"][version]
|
|
11
11
|
.entryPointVersion,
|
|
12
|
-
}), accountAddress, factoryAddress =
|
|
12
|
+
}), accountAddress, factoryAddress = getDefaultLightAccountFactoryAddress(chain, version), salt: salt_ = 0n, }) {
|
|
13
13
|
const client = createBundlerClient({
|
|
14
14
|
transport,
|
|
15
15
|
chain,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"account.js","sourceRoot":"","sources":["../../../../../src/light-account/accounts/account.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,mBAAmB,EACnB,iBAAiB,EACjB,aAAa,GAId,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,SAAS,EACT,kBAAkB,GAInB,MAAM,MAAM,CAAC;AACd,OAAO,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AACnE,OAAO,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AACnE,OAAO,EAAE,yBAAyB,EAAE,MAAM,sCAAsC,CAAC;AACjF,OAAO,EAAE,yBAAyB,EAAE,MAAM,sCAAsC,CAAC;AAKjF,OAAO,EACL,sBAAsB,EACtB,oCAAoC,EACpC,0BAA0B,
|
|
1
|
+
{"version":3,"file":"account.js","sourceRoot":"","sources":["../../../../../src/light-account/accounts/account.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n createBundlerClient,\n getAccountAddress,\n getEntryPoint,\n type Address,\n type EntryPointDef,\n type SmartAccountSigner,\n} from \"@aa-sdk/core\";\nimport {\n concatHex,\n encodeFunctionData,\n type Chain,\n type Hex,\n type Transport,\n} from \"viem\";\nimport { LightAccountAbi_v1 } from \"../abis/LightAccountAbi_v1.js\";\nimport { LightAccountAbi_v2 } from \"../abis/LightAccountAbi_v2.js\";\nimport { LightAccountFactoryAbi_v1 } from \"../abis/LightAccountFactoryAbi_v1.js\";\nimport { LightAccountFactoryAbi_v2 } from \"../abis/LightAccountFactoryAbi_v2.js\";\nimport type {\n GetEntryPointForLightAccountVersion,\n GetLightAccountVersion,\n} from \"../types.js\";\nimport {\n AccountVersionRegistry,\n LightAccountUnsupported1271Factories,\n defaultLightAccountVersion,\n getDefaultLightAccountFactoryAddress,\n} from \"../utils.js\";\nimport {\n createLightAccountBase,\n type CreateLightAccountBaseParams,\n type LightAccountBase,\n} from \"./base.js\";\n\nexport type LightAccount<\n TSigner extends SmartAccountSigner = SmartAccountSigner,\n TLightAccountVersion extends GetLightAccountVersion<\"LightAccount\"> = GetLightAccountVersion<\"LightAccount\">,\n TEntryPointVersion extends GetEntryPointForLightAccountVersion<\n \"LightAccount\",\n TLightAccountVersion\n > = GetEntryPointForLightAccountVersion<\"LightAccount\", TLightAccountVersion>\n> = LightAccountBase<\n TSigner,\n \"LightAccount\",\n TLightAccountVersion,\n TEntryPointVersion\n> & {\n encodeTransferOwnership: (newOwner: Address) => Hex;\n getOwnerAddress: () => Promise<Address>;\n};\n\n// [!region CreateLightAccountParams]\nexport type CreateLightAccountParams<\n TTransport extends Transport = Transport,\n TSigner extends SmartAccountSigner = SmartAccountSigner,\n TLightAccountVersion extends GetLightAccountVersion<\"LightAccount\"> = GetLightAccountVersion<\"LightAccount\">,\n TEntryPointVersion extends GetEntryPointForLightAccountVersion<\n \"LightAccount\",\n TLightAccountVersion\n > = GetEntryPointForLightAccountVersion<\"LightAccount\", TLightAccountVersion>\n> = Omit<\n CreateLightAccountBaseParams<\n TTransport,\n TSigner,\n \"LightAccount\",\n TLightAccountVersion,\n TEntryPointVersion\n >,\n \"getAccountInitCode\" | \"entryPoint\" | \"version\" | \"abi\" | \"accountAddress\"\n> & {\n salt?: bigint;\n initCode?: Hex;\n accountAddress?: Address;\n factoryAddress?: Address;\n version?: TLightAccountVersion;\n entryPoint?: EntryPointDef<TEntryPointVersion, Chain>;\n};\n// [!endregion CreateLightAccountParams]\n\nexport async function createLightAccount<\n TTransport extends Transport = Transport,\n TSigner extends SmartAccountSigner = SmartAccountSigner,\n TLightAccountVersion extends GetLightAccountVersion<\"LightAccount\"> = \"v1.1.0\"\n>(\n config: CreateLightAccountParams<TTransport, TSigner, TLightAccountVersion>\n): Promise<LightAccount<TSigner, TLightAccountVersion>>;\n\nexport async function createLightAccount<\n TTransport extends Transport = Transport,\n TSigner extends SmartAccountSigner = SmartAccountSigner,\n TLightAccountVersion extends GetLightAccountVersion<\"LightAccount\"> = GetLightAccountVersion<\"LightAccount\">,\n TEntryPointVersion extends GetEntryPointForLightAccountVersion<\n \"LightAccount\",\n TLightAccountVersion\n > = GetEntryPointForLightAccountVersion<\"LightAccount\", TLightAccountVersion>\n>(\n config: CreateLightAccountParams<\n TTransport,\n TSigner,\n TLightAccountVersion,\n TEntryPointVersion\n >\n): Promise<LightAccount<TSigner, TLightAccountVersion, TEntryPointVersion>>;\n\n/**\n * Creates a light account based on the provided parameters such as transport, chain, signer, init code, and more. Ensures that an account is configured and returned with various capabilities, such as transferring ownership and retrieving the owner's address.\n *\n * @example\n * ```ts\n * import { createLightAccount } from \"@account-kit/smart-contracts\";\n * import { LocalAccountSigner } from \"@aa-sdk/core\";\n * import { sepolia } from \"viem/chains\";\n * import { http, generatePrivateKey } from \"viem\"\n *\n * const account = await createLightAccount({\n * chain: sepolia,\n * transport: http(\"RPC_URL\"),\n * signer: LocalAccountSigner.privateKeyToAccountSigner(generatePrivateKey())\n * });\n * ```\n *\n * @param {CreateLightAccountParams} config The parameters for creating a light account\n * @returns {Promise<LightAccount>} A promise that resolves to a `LightAccount` object containing the created account information and methods\n */\nexport async function createLightAccount({\n transport,\n chain,\n signer,\n initCode,\n version = defaultLightAccountVersion(\"LightAccount\"),\n entryPoint = getEntryPoint(chain, {\n version: AccountVersionRegistry[\"LightAccount\"][version]\n .entryPointVersion as any,\n }),\n accountAddress,\n factoryAddress = getDefaultLightAccountFactoryAddress(chain, version),\n salt: salt_ = 0n,\n}: CreateLightAccountParams): Promise<LightAccount> {\n const client = createBundlerClient({\n transport,\n chain,\n });\n\n const accountAbi =\n version === \"v2.0.0\" ? LightAccountAbi_v2 : LightAccountAbi_v1;\n const factoryAbi =\n version === \"v2.0.0\"\n ? LightAccountFactoryAbi_v1\n : LightAccountFactoryAbi_v2;\n\n const getAccountInitCode = async () => {\n if (initCode) return initCode;\n\n const salt = LightAccountUnsupported1271Factories.has(\n factoryAddress.toLowerCase() as Address\n )\n ? 0n\n : salt_;\n\n return concatHex([\n factoryAddress,\n encodeFunctionData({\n abi: factoryAbi,\n functionName: \"createAccount\",\n args: [await signer.getAddress(), salt],\n }),\n ]);\n };\n\n const address = await getAccountAddress({\n client,\n entryPoint,\n accountAddress,\n getAccountInitCode,\n });\n\n const account = await createLightAccountBase<\n Transport,\n SmartAccountSigner,\n \"LightAccount\"\n >({\n transport,\n chain,\n signer,\n abi: accountAbi,\n version: AccountVersionRegistry[\"LightAccount\"][version],\n entryPoint,\n accountAddress: address,\n getAccountInitCode,\n });\n\n return {\n ...account,\n\n encodeTransferOwnership: (newOwner: Address) => {\n return encodeFunctionData({\n abi: accountAbi,\n functionName: \"transferOwnership\",\n args: [newOwner],\n });\n },\n async getOwnerAddress(): Promise<Address> {\n const callResult = await client.readContract({\n address,\n abi: accountAbi,\n functionName: \"owner\",\n });\n\n if (callResult == null) {\n throw new Error(\"could not get on-chain owner\");\n }\n\n return callResult;\n },\n };\n}\n"]}
|