@metamask/delegation-core 2.1.0 → 2.2.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/CHANGELOG.md CHANGED
@@ -7,6 +7,18 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ## [2.2.1]
11
+
12
+ ### Fixed
13
+
14
+ - Rename `permit2ApproveZero` to `permit2Approve` in `approvalRevocationEnforcer` terms builders and decoders ([#237](https://github.com/MetaMask/smart-accounts-kit/pull/237))
15
+
16
+ ## [2.2.0]
17
+
18
+ ### Added
19
+
20
+ - Encoding and decoding utils for `ApprovalRevocationEnforcer` enforcer args and terms ([#226](https://github.com/metamask/smart-accounts-kit/pull/226))
21
+
10
22
  ## [2.1.0]
11
23
 
12
24
  ### Changed
@@ -106,7 +118,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
106
118
 
107
119
  - Add @metamask/delegation-core package, providing utility types, delegation hashing, and terms encoding for a limited set of caveat enforcers.
108
120
 
109
- [Unreleased]: https://github.com/metamask/smart-accounts-kit/compare/@metamask/delegation-core@2.1.0...HEAD
121
+ [Unreleased]: https://github.com/metamask/smart-accounts-kit/compare/@metamask/delegation-core@2.2.1...HEAD
122
+ [2.2.1]: https://github.com/metamask/smart-accounts-kit/compare/@metamask/delegation-core@2.2.0...@metamask/delegation-core@2.2.1
123
+ [2.2.0]: https://github.com/metamask/smart-accounts-kit/compare/@metamask/delegation-core@2.1.0...@metamask/delegation-core@2.2.0
110
124
  [2.1.0]: https://github.com/metamask/smart-accounts-kit/compare/@metamask/delegation-core@2.0.0...@metamask/delegation-core@2.1.0
111
125
  [2.0.0]: https://github.com/metamask/smart-accounts-kit/compare/@metamask/delegation-core@1.1.0...@metamask/delegation-core@2.0.0
112
126
  [1.1.0]: https://github.com/metamask/smart-accounts-kit/compare/@metamask/delegation-core@1.0.0...@metamask/delegation-core@1.1.0
package/dist/index.cjs CHANGED
@@ -975,6 +975,74 @@ function decodeAllowedTargetsTerms(terms, encodingOptions = defaultOptions) {
975
975
  return { targets };
976
976
  }
977
977
 
978
+ // src/caveats/approvalRevocationEnforcer.ts
979
+ var BIT_ERC20_APPROVE_ZERO = 1;
980
+ var BIT_ERC721_PER_TOKEN_CLEAR = 2;
981
+ var BIT_SET_APPROVAL_FOR_ALL_REVOKE = 4;
982
+ var BIT_PERMIT2_APPROVE_ZERO = 8;
983
+ var BIT_PERMIT2_LOCKDOWN = 16;
984
+ var BIT_PERMIT2_INVALIDATE_NONCES = 32;
985
+ var ALLOWED_APPROVAL_REVOCATION_MAX_MASK = BIT_ERC20_APPROVE_ZERO | BIT_ERC721_PER_TOKEN_CLEAR | BIT_SET_APPROVAL_FOR_ALL_REVOKE | BIT_PERMIT2_APPROVE_ZERO | BIT_PERMIT2_LOCKDOWN | BIT_PERMIT2_INVALIDATE_NONCES;
986
+ var NO_FLAGS_SET_ERROR = "Invalid ApprovalRevocation terms: at least one revocation primitive must be enabled";
987
+ function termsToMask(terms) {
988
+ let mask = 0;
989
+ if (terms.erc20Approve) {
990
+ mask |= BIT_ERC20_APPROVE_ZERO;
991
+ }
992
+ if (terms.erc721Approve) {
993
+ mask |= BIT_ERC721_PER_TOKEN_CLEAR;
994
+ }
995
+ if (terms.erc721SetApprovalForAll) {
996
+ mask |= BIT_SET_APPROVAL_FOR_ALL_REVOKE;
997
+ }
998
+ if (terms.permit2Approve) {
999
+ mask |= BIT_PERMIT2_APPROVE_ZERO;
1000
+ }
1001
+ if (terms.permit2Lockdown) {
1002
+ mask |= BIT_PERMIT2_LOCKDOWN;
1003
+ }
1004
+ if (terms.permit2InvalidateNonces) {
1005
+ mask |= BIT_PERMIT2_INVALIDATE_NONCES;
1006
+ }
1007
+ if (mask === 0) {
1008
+ throw new Error(NO_FLAGS_SET_ERROR);
1009
+ }
1010
+ return mask;
1011
+ }
1012
+ function maskToTerms(mask) {
1013
+ if (mask > ALLOWED_APPROVAL_REVOCATION_MAX_MASK) {
1014
+ throw new Error(
1015
+ "Invalid ApprovalRevocation terms: reserved bits must be zero (only bits 0-5 are defined)"
1016
+ );
1017
+ }
1018
+ if (mask === 0) {
1019
+ throw new Error(NO_FLAGS_SET_ERROR);
1020
+ }
1021
+ return {
1022
+ erc20Approve: (mask & BIT_ERC20_APPROVE_ZERO) !== 0,
1023
+ erc721Approve: (mask & BIT_ERC721_PER_TOKEN_CLEAR) !== 0,
1024
+ erc721SetApprovalForAll: (mask & BIT_SET_APPROVAL_FOR_ALL_REVOKE) !== 0,
1025
+ permit2Approve: (mask & BIT_PERMIT2_APPROVE_ZERO) !== 0,
1026
+ permit2Lockdown: (mask & BIT_PERMIT2_LOCKDOWN) !== 0,
1027
+ permit2InvalidateNonces: (mask & BIT_PERMIT2_INVALIDATE_NONCES) !== 0
1028
+ };
1029
+ }
1030
+ function createApprovalRevocationTerms(terms, encodingOptions = defaultOptions) {
1031
+ const mask = termsToMask(terms);
1032
+ const hexValue = `0x${toHexString({ value: mask, size: 1 })}`;
1033
+ return prepareResult(hexValue, encodingOptions);
1034
+ }
1035
+ function decodeApprovalRevocationTerms(terms) {
1036
+ const hexTerms = bytesLikeToHex(terms);
1037
+ assertHexByteExactLength(
1038
+ hexTerms,
1039
+ 1,
1040
+ "Invalid ApprovalRevocation terms: must be exactly 1 byte"
1041
+ );
1042
+ const mask = extractNumber(hexTerms, 0, 1);
1043
+ return maskToTerms(mask);
1044
+ }
1045
+
978
1046
  // src/caveats/argsEqualityCheck.ts
979
1047
  function createArgsEqualityCheckTerms(terms, encodingOptions = defaultOptions) {
980
1048
  const { args } = terms;
@@ -1581,5 +1649,7 @@ function getCaveatHash(caveat) {
1581
1649
 
1582
1650
 
1583
1651
 
1584
- exports.ANY_BENEFICIARY = ANY_BENEFICIARY; exports.BalanceChangeType = BalanceChangeType; exports.CAVEAT_TYPEHASH = CAVEAT_TYPEHASH; exports.DELEGATION_TYPEHASH = DELEGATION_TYPEHASH; exports.ROOT_AUTHORITY = ROOT_AUTHORITY; exports.createAllowedCalldataTerms = createAllowedCalldataTerms; exports.createAllowedMethodsTerms = createAllowedMethodsTerms; exports.createAllowedTargetsTerms = createAllowedTargetsTerms; exports.createArgsEqualityCheckTerms = createArgsEqualityCheckTerms; exports.createBlockNumberTerms = createBlockNumberTerms; exports.createDeployedTerms = createDeployedTerms; exports.createERC1155BalanceChangeTerms = createERC1155BalanceChangeTerms; exports.createERC20BalanceChangeTerms = createERC20BalanceChangeTerms; exports.createERC20StreamingTerms = createERC20StreamingTerms; exports.createERC20TokenPeriodTransferTerms = createERC20TokenPeriodTransferTerms; exports.createERC20TransferAmountTerms = createERC20TransferAmountTerms; exports.createERC721BalanceChangeTerms = createERC721BalanceChangeTerms; exports.createERC721TransferTerms = createERC721TransferTerms; exports.createExactCalldataBatchTerms = createExactCalldataBatchTerms; exports.createExactCalldataTerms = createExactCalldataTerms; exports.createExactExecutionBatchTerms = createExactExecutionBatchTerms; exports.createExactExecutionTerms = createExactExecutionTerms; exports.createIdTerms = createIdTerms; exports.createLimitedCallsTerms = createLimitedCallsTerms; exports.createLogicalOrWrapperArgs = createLogicalOrWrapperArgs; exports.createLogicalOrWrapperTerms = createLogicalOrWrapperTerms; exports.createMultiTokenPeriodTerms = createMultiTokenPeriodTerms; exports.createNativeBalanceChangeTerms = createNativeBalanceChangeTerms; exports.createNativeTokenPaymentTerms = createNativeTokenPaymentTerms; exports.createNativeTokenPeriodTransferTerms = createNativeTokenPeriodTransferTerms; exports.createNativeTokenStreamingTerms = createNativeTokenStreamingTerms; exports.createNativeTokenTransferAmountTerms = createNativeTokenTransferAmountTerms; exports.createNonceTerms = createNonceTerms; exports.createOwnershipTransferTerms = createOwnershipTransferTerms; exports.createRedeemerTerms = createRedeemerTerms; exports.createSpecificActionERC20TransferBatchTerms = createSpecificActionERC20TransferBatchTerms; exports.createTimestampTerms = createTimestampTerms; exports.createValueLteTerms = createValueLteTerms; exports.decodeAllowedCalldataTerms = decodeAllowedCalldataTerms; exports.decodeAllowedMethodsTerms = decodeAllowedMethodsTerms; exports.decodeAllowedTargetsTerms = decodeAllowedTargetsTerms; exports.decodeArgsEqualityCheckTerms = decodeArgsEqualityCheckTerms; exports.decodeBlockNumberTerms = decodeBlockNumberTerms; exports.decodeDelegation = decodeDelegation; exports.decodeDelegations = decodeDelegations; exports.decodeDeployedTerms = decodeDeployedTerms; exports.decodeERC1155BalanceChangeTerms = decodeERC1155BalanceChangeTerms; exports.decodeERC20BalanceChangeTerms = decodeERC20BalanceChangeTerms; exports.decodeERC20StreamingTerms = decodeERC20StreamingTerms; exports.decodeERC20TokenPeriodTransferTerms = decodeERC20TokenPeriodTransferTerms; exports.decodeERC20TransferAmountTerms = decodeERC20TransferAmountTerms; exports.decodeERC721BalanceChangeTerms = decodeERC721BalanceChangeTerms; exports.decodeERC721TransferTerms = decodeERC721TransferTerms; exports.decodeExactCalldataBatchTerms = decodeExactCalldataBatchTerms; exports.decodeExactCalldataTerms = decodeExactCalldataTerms; exports.decodeExactExecutionBatchTerms = decodeExactExecutionBatchTerms; exports.decodeExactExecutionTerms = decodeExactExecutionTerms; exports.decodeIdTerms = decodeIdTerms; exports.decodeLimitedCallsTerms = decodeLimitedCallsTerms; exports.decodeLogicalOrWrapperArgs = decodeLogicalOrWrapperArgs; exports.decodeLogicalOrWrapperTerms = decodeLogicalOrWrapperTerms; exports.decodeMultiTokenPeriodTerms = decodeMultiTokenPeriodTerms; exports.decodeNativeBalanceChangeTerms = decodeNativeBalanceChangeTerms; exports.decodeNativeTokenPaymentTerms = decodeNativeTokenPaymentTerms; exports.decodeNativeTokenPeriodTransferTerms = decodeNativeTokenPeriodTransferTerms; exports.decodeNativeTokenStreamingTerms = decodeNativeTokenStreamingTerms; exports.decodeNativeTokenTransferAmountTerms = decodeNativeTokenTransferAmountTerms; exports.decodeNonceTerms = decodeNonceTerms; exports.decodeOwnershipTransferTerms = decodeOwnershipTransferTerms; exports.decodeRedeemerTerms = decodeRedeemerTerms; exports.decodeSpecificActionERC20TransferBatchTerms = decodeSpecificActionERC20TransferBatchTerms; exports.decodeTimestampTerms = decodeTimestampTerms; exports.decodeValueLteTerms = decodeValueLteTerms; exports.encodeDelegation = encodeDelegation; exports.encodeDelegations = encodeDelegations; exports.hashDelegation = hashDelegation;
1652
+
1653
+
1654
+ exports.ANY_BENEFICIARY = ANY_BENEFICIARY; exports.BalanceChangeType = BalanceChangeType; exports.CAVEAT_TYPEHASH = CAVEAT_TYPEHASH; exports.DELEGATION_TYPEHASH = DELEGATION_TYPEHASH; exports.ROOT_AUTHORITY = ROOT_AUTHORITY; exports.createAllowedCalldataTerms = createAllowedCalldataTerms; exports.createAllowedMethodsTerms = createAllowedMethodsTerms; exports.createAllowedTargetsTerms = createAllowedTargetsTerms; exports.createApprovalRevocationTerms = createApprovalRevocationTerms; exports.createArgsEqualityCheckTerms = createArgsEqualityCheckTerms; exports.createBlockNumberTerms = createBlockNumberTerms; exports.createDeployedTerms = createDeployedTerms; exports.createERC1155BalanceChangeTerms = createERC1155BalanceChangeTerms; exports.createERC20BalanceChangeTerms = createERC20BalanceChangeTerms; exports.createERC20StreamingTerms = createERC20StreamingTerms; exports.createERC20TokenPeriodTransferTerms = createERC20TokenPeriodTransferTerms; exports.createERC20TransferAmountTerms = createERC20TransferAmountTerms; exports.createERC721BalanceChangeTerms = createERC721BalanceChangeTerms; exports.createERC721TransferTerms = createERC721TransferTerms; exports.createExactCalldataBatchTerms = createExactCalldataBatchTerms; exports.createExactCalldataTerms = createExactCalldataTerms; exports.createExactExecutionBatchTerms = createExactExecutionBatchTerms; exports.createExactExecutionTerms = createExactExecutionTerms; exports.createIdTerms = createIdTerms; exports.createLimitedCallsTerms = createLimitedCallsTerms; exports.createLogicalOrWrapperArgs = createLogicalOrWrapperArgs; exports.createLogicalOrWrapperTerms = createLogicalOrWrapperTerms; exports.createMultiTokenPeriodTerms = createMultiTokenPeriodTerms; exports.createNativeBalanceChangeTerms = createNativeBalanceChangeTerms; exports.createNativeTokenPaymentTerms = createNativeTokenPaymentTerms; exports.createNativeTokenPeriodTransferTerms = createNativeTokenPeriodTransferTerms; exports.createNativeTokenStreamingTerms = createNativeTokenStreamingTerms; exports.createNativeTokenTransferAmountTerms = createNativeTokenTransferAmountTerms; exports.createNonceTerms = createNonceTerms; exports.createOwnershipTransferTerms = createOwnershipTransferTerms; exports.createRedeemerTerms = createRedeemerTerms; exports.createSpecificActionERC20TransferBatchTerms = createSpecificActionERC20TransferBatchTerms; exports.createTimestampTerms = createTimestampTerms; exports.createValueLteTerms = createValueLteTerms; exports.decodeAllowedCalldataTerms = decodeAllowedCalldataTerms; exports.decodeAllowedMethodsTerms = decodeAllowedMethodsTerms; exports.decodeAllowedTargetsTerms = decodeAllowedTargetsTerms; exports.decodeApprovalRevocationTerms = decodeApprovalRevocationTerms; exports.decodeArgsEqualityCheckTerms = decodeArgsEqualityCheckTerms; exports.decodeBlockNumberTerms = decodeBlockNumberTerms; exports.decodeDelegation = decodeDelegation; exports.decodeDelegations = decodeDelegations; exports.decodeDeployedTerms = decodeDeployedTerms; exports.decodeERC1155BalanceChangeTerms = decodeERC1155BalanceChangeTerms; exports.decodeERC20BalanceChangeTerms = decodeERC20BalanceChangeTerms; exports.decodeERC20StreamingTerms = decodeERC20StreamingTerms; exports.decodeERC20TokenPeriodTransferTerms = decodeERC20TokenPeriodTransferTerms; exports.decodeERC20TransferAmountTerms = decodeERC20TransferAmountTerms; exports.decodeERC721BalanceChangeTerms = decodeERC721BalanceChangeTerms; exports.decodeERC721TransferTerms = decodeERC721TransferTerms; exports.decodeExactCalldataBatchTerms = decodeExactCalldataBatchTerms; exports.decodeExactCalldataTerms = decodeExactCalldataTerms; exports.decodeExactExecutionBatchTerms = decodeExactExecutionBatchTerms; exports.decodeExactExecutionTerms = decodeExactExecutionTerms; exports.decodeIdTerms = decodeIdTerms; exports.decodeLimitedCallsTerms = decodeLimitedCallsTerms; exports.decodeLogicalOrWrapperArgs = decodeLogicalOrWrapperArgs; exports.decodeLogicalOrWrapperTerms = decodeLogicalOrWrapperTerms; exports.decodeMultiTokenPeriodTerms = decodeMultiTokenPeriodTerms; exports.decodeNativeBalanceChangeTerms = decodeNativeBalanceChangeTerms; exports.decodeNativeTokenPaymentTerms = decodeNativeTokenPaymentTerms; exports.decodeNativeTokenPeriodTransferTerms = decodeNativeTokenPeriodTransferTerms; exports.decodeNativeTokenStreamingTerms = decodeNativeTokenStreamingTerms; exports.decodeNativeTokenTransferAmountTerms = decodeNativeTokenTransferAmountTerms; exports.decodeNonceTerms = decodeNonceTerms; exports.decodeOwnershipTransferTerms = decodeOwnershipTransferTerms; exports.decodeRedeemerTerms = decodeRedeemerTerms; exports.decodeSpecificActionERC20TransferBatchTerms = decodeSpecificActionERC20TransferBatchTerms; exports.decodeTimestampTerms = decodeTimestampTerms; exports.decodeValueLteTerms = decodeValueLteTerms; exports.encodeDelegation = encodeDelegation; exports.encodeDelegations = encodeDelegations; exports.hashDelegation = hashDelegation;
1585
1655
  //# sourceMappingURL=index.cjs.map