@metamask/delegation-core 1.1.0 → 2.1.0
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 +19 -1
- package/dist/index.cjs +97 -26
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +40 -19
- package/dist/index.d.ts +40 -19
- package/dist/index.mjs +100 -29
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -7,6 +7,22 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
7
7
|
|
|
8
8
|
## [Unreleased]
|
|
9
9
|
|
|
10
|
+
## [2.1.0]
|
|
11
|
+
|
|
12
|
+
### Changed
|
|
13
|
+
|
|
14
|
+
- `MultiTokenPeriod`, `Erc20TokenPeriodTransfer`, and `NativeTokenPeriodTransfer` encoders now accept `periodDuration` parameter as `bigint. ([#227](https://github.com/MetaMask/smart-accounts-kit/pull/227))
|
|
15
|
+
|
|
16
|
+
## [2.0.0]
|
|
17
|
+
|
|
18
|
+
### Added
|
|
19
|
+
|
|
20
|
+
- Encoding and decoding utils for `LogicalOrWrapper` enforcer args and terms ([#219](https://github.com/metamask/smart-accounts-kit/pull/219))
|
|
21
|
+
|
|
22
|
+
### Changed
|
|
23
|
+
|
|
24
|
+
- **Breaking** Balance change type enforcers now use `BalanceChangeType` enum instead of number type ([#205](https://github.com/metamask/smart-accounts-kit/pull/205))
|
|
25
|
+
|
|
10
26
|
## [1.1.0]
|
|
11
27
|
|
|
12
28
|
### Added
|
|
@@ -90,7 +106,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
90
106
|
|
|
91
107
|
- Add @metamask/delegation-core package, providing utility types, delegation hashing, and terms encoding for a limited set of caveat enforcers.
|
|
92
108
|
|
|
93
|
-
[Unreleased]: https://github.com/metamask/smart-accounts-kit/compare/@metamask/delegation-core@
|
|
109
|
+
[Unreleased]: https://github.com/metamask/smart-accounts-kit/compare/@metamask/delegation-core@2.1.0...HEAD
|
|
110
|
+
[2.1.0]: https://github.com/metamask/smart-accounts-kit/compare/@metamask/delegation-core@2.0.0...@metamask/delegation-core@2.1.0
|
|
111
|
+
[2.0.0]: https://github.com/metamask/smart-accounts-kit/compare/@metamask/delegation-core@1.1.0...@metamask/delegation-core@2.0.0
|
|
94
112
|
[1.1.0]: https://github.com/metamask/smart-accounts-kit/compare/@metamask/delegation-core@1.0.0...@metamask/delegation-core@1.1.0
|
|
95
113
|
[1.0.0]: https://github.com/metamask/smart-accounts-kit/compare/@metamask/delegation-core@0.4.0...@metamask/delegation-core@1.0.0
|
|
96
114
|
[0.4.0]: https://github.com/metamask/smart-accounts-kit/compare/@metamask/delegation-core@0.3.0...@metamask/delegation-core@0.4.0
|
package/dist/index.cjs
CHANGED
|
@@ -1,4 +1,11 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports, "__esModule", {value: true})
|
|
1
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }// src/caveats/types.ts
|
|
2
|
+
var BalanceChangeType = /* @__PURE__ */ ((BalanceChangeType2) => {
|
|
3
|
+
BalanceChangeType2[BalanceChangeType2["Increase"] = 0] = "Increase";
|
|
4
|
+
BalanceChangeType2[BalanceChangeType2["Decrease"] = 1] = "Decrease";
|
|
5
|
+
return BalanceChangeType2;
|
|
6
|
+
})(BalanceChangeType || {});
|
|
7
|
+
|
|
8
|
+
// src/internalUtils.ts
|
|
2
9
|
|
|
3
10
|
|
|
4
11
|
|
|
@@ -467,7 +474,7 @@ function decodeNativeTokenPaymentTerms(terms, encodingOptions = defaultOptions)
|
|
|
467
474
|
|
|
468
475
|
// src/caveats/nativeBalanceChange.ts
|
|
469
476
|
function createNativeBalanceChangeTerms(terms, encodingOptions = defaultOptions) {
|
|
470
|
-
const { recipient, balance, changeType
|
|
477
|
+
const { recipient, balance, changeType } = terms;
|
|
471
478
|
const recipientHex = normalizeAddressLowercase(
|
|
472
479
|
recipient,
|
|
473
480
|
"Invalid recipient: must be a valid Address"
|
|
@@ -475,7 +482,6 @@ function createNativeBalanceChangeTerms(terms, encodingOptions = defaultOptions)
|
|
|
475
482
|
if (balance <= 0n) {
|
|
476
483
|
throw new Error("Invalid balance: must be a positive number");
|
|
477
484
|
}
|
|
478
|
-
const changeType = changeTypeNumber;
|
|
479
485
|
if (changeType !== 0 /* Increase */ && changeType !== 1 /* Decrease */) {
|
|
480
486
|
throw new Error("Invalid changeType: must be either Increase or Decrease");
|
|
481
487
|
}
|
|
@@ -653,12 +659,7 @@ function decodeERC20TransferAmountTerms(terms, encodingOptions = defaultOptions)
|
|
|
653
659
|
|
|
654
660
|
// src/caveats/erc20BalanceChange.ts
|
|
655
661
|
function createERC20BalanceChangeTerms(terms, encodingOptions = defaultOptions) {
|
|
656
|
-
const {
|
|
657
|
-
tokenAddress,
|
|
658
|
-
recipient,
|
|
659
|
-
balance,
|
|
660
|
-
changeType: changeTypeNumber
|
|
661
|
-
} = terms;
|
|
662
|
+
const { tokenAddress, recipient, balance, changeType } = terms;
|
|
662
663
|
const tokenAddressHex = normalizeAddressLowercase(
|
|
663
664
|
tokenAddress,
|
|
664
665
|
"Invalid tokenAddress: must be a valid address"
|
|
@@ -670,7 +671,6 @@ function createERC20BalanceChangeTerms(terms, encodingOptions = defaultOptions)
|
|
|
670
671
|
if (balance <= 0n) {
|
|
671
672
|
throw new Error("Invalid balance: must be a positive number");
|
|
672
673
|
}
|
|
673
|
-
const changeType = changeTypeNumber;
|
|
674
674
|
if (changeType !== 0 /* Increase */ && changeType !== 1 /* Decrease */) {
|
|
675
675
|
throw new Error("Invalid changeType: must be either Increase or Decrease");
|
|
676
676
|
}
|
|
@@ -705,12 +705,7 @@ function decodeERC20BalanceChangeTerms(terms, encodingOptions = defaultOptions)
|
|
|
705
705
|
|
|
706
706
|
// src/caveats/erc721BalanceChange.ts
|
|
707
707
|
function createERC721BalanceChangeTerms(terms, encodingOptions = defaultOptions) {
|
|
708
|
-
const {
|
|
709
|
-
tokenAddress,
|
|
710
|
-
recipient,
|
|
711
|
-
amount,
|
|
712
|
-
changeType: changeTypeNumber
|
|
713
|
-
} = terms;
|
|
708
|
+
const { tokenAddress, recipient, amount, changeType } = terms;
|
|
714
709
|
const tokenAddressHex = normalizeAddressLowercase(
|
|
715
710
|
tokenAddress,
|
|
716
711
|
"Invalid tokenAddress: must be a valid address"
|
|
@@ -722,7 +717,6 @@ function createERC721BalanceChangeTerms(terms, encodingOptions = defaultOptions)
|
|
|
722
717
|
if (amount <= 0n) {
|
|
723
718
|
throw new Error("Invalid balance: must be a positive number");
|
|
724
719
|
}
|
|
725
|
-
const changeType = changeTypeNumber;
|
|
726
720
|
if (changeType !== 0 /* Increase */ && changeType !== 1 /* Decrease */) {
|
|
727
721
|
throw new Error("Invalid changeType: must be either Increase or Decrease");
|
|
728
722
|
}
|
|
@@ -786,13 +780,7 @@ function decodeERC721TransferTerms(terms, encodingOptions = defaultOptions) {
|
|
|
786
780
|
|
|
787
781
|
// src/caveats/erc1155BalanceChange.ts
|
|
788
782
|
function createERC1155BalanceChangeTerms(terms, encodingOptions = defaultOptions) {
|
|
789
|
-
const {
|
|
790
|
-
tokenAddress,
|
|
791
|
-
recipient,
|
|
792
|
-
tokenId,
|
|
793
|
-
balance,
|
|
794
|
-
changeType: changeTypeNumber
|
|
795
|
-
} = terms;
|
|
783
|
+
const { tokenAddress, recipient, tokenId, balance, changeType } = terms;
|
|
796
784
|
const tokenAddressHex = normalizeAddressLowercase(
|
|
797
785
|
tokenAddress,
|
|
798
786
|
"Invalid tokenAddress: must be a valid address"
|
|
@@ -807,7 +795,6 @@ function createERC1155BalanceChangeTerms(terms, encodingOptions = defaultOptions
|
|
|
807
795
|
if (tokenId < 0n) {
|
|
808
796
|
throw new Error("Invalid tokenId: must be a non-negative number");
|
|
809
797
|
}
|
|
810
|
-
const changeType = changeTypeNumber;
|
|
811
798
|
if (changeType !== 0 /* Increase */ && changeType !== 1 /* Decrease */) {
|
|
812
799
|
throw new Error("Invalid changeType: must be either Increase or Decrease");
|
|
813
800
|
}
|
|
@@ -1311,6 +1298,85 @@ function decodeSpecificActionERC20TransferBatchTerms(terms, encodingOptions = de
|
|
|
1311
1298
|
};
|
|
1312
1299
|
}
|
|
1313
1300
|
|
|
1301
|
+
// src/caveats/logicalOrWrapper.ts
|
|
1302
|
+
|
|
1303
|
+
|
|
1304
|
+
var CAVEAT_GROUPS_ABI = "((address,bytes,bytes)[])[]";
|
|
1305
|
+
var SELECTED_GROUP_ABI = "(uint256,bytes[])";
|
|
1306
|
+
function assertValidCaveatGroups(groups) {
|
|
1307
|
+
if (!_optionalChain([groups, 'optionalAccess', _ => _.length])) {
|
|
1308
|
+
throw new Error(
|
|
1309
|
+
"Invalid caveatGroups: must provide at least one caveat group"
|
|
1310
|
+
);
|
|
1311
|
+
}
|
|
1312
|
+
for (let i = 0; i < groups.length; i++) {
|
|
1313
|
+
const group = groups[i];
|
|
1314
|
+
if (!_optionalChain([group, 'optionalAccess', _2 => _2.length])) {
|
|
1315
|
+
throw new Error(
|
|
1316
|
+
`Invalid caveatGroups: group at index ${i} must contain at least one caveat`
|
|
1317
|
+
);
|
|
1318
|
+
}
|
|
1319
|
+
}
|
|
1320
|
+
}
|
|
1321
|
+
function normalizeCaveatTuple(caveat) {
|
|
1322
|
+
return [
|
|
1323
|
+
normalizeAddress(
|
|
1324
|
+
caveat.enforcer,
|
|
1325
|
+
"Invalid enforcer: must be a valid address"
|
|
1326
|
+
),
|
|
1327
|
+
normalizeHex(caveat.terms, "Invalid terms: must be a valid hex string"),
|
|
1328
|
+
normalizeHex(caveat.args, "Invalid args: must be a valid hex string")
|
|
1329
|
+
];
|
|
1330
|
+
}
|
|
1331
|
+
function encodeCaveatGroupTuple(group) {
|
|
1332
|
+
return [group.map(normalizeCaveatTuple)];
|
|
1333
|
+
}
|
|
1334
|
+
function createLogicalOrWrapperTerms(terms, encodingOptions = defaultOptions) {
|
|
1335
|
+
assertValidCaveatGroups(terms.caveatGroups);
|
|
1336
|
+
const encodableGroups = terms.caveatGroups.map(encodeCaveatGroupTuple);
|
|
1337
|
+
const hexValue = _abiutils.encodeSingle.call(void 0, CAVEAT_GROUPS_ABI, encodableGroups);
|
|
1338
|
+
return prepareResult(hexValue, encodingOptions);
|
|
1339
|
+
}
|
|
1340
|
+
function decodeLogicalOrWrapperTerms(terms, encodingOptions = defaultOptions) {
|
|
1341
|
+
const hexTerms = bytesLikeToHex(terms);
|
|
1342
|
+
const decoded = _abiutils.decodeSingle.call(void 0,
|
|
1343
|
+
CAVEAT_GROUPS_ABI,
|
|
1344
|
+
hexTerms
|
|
1345
|
+
);
|
|
1346
|
+
const caveatGroups = decoded.map(
|
|
1347
|
+
([caveats]) => caveats.map(([enforcer, caveatTerms, args]) => ({
|
|
1348
|
+
enforcer: prepareResult(enforcer, encodingOptions),
|
|
1349
|
+
terms: prepareResult(_utils.bytesToHex.call(void 0, caveatTerms), encodingOptions),
|
|
1350
|
+
args: prepareResult(_utils.bytesToHex.call(void 0, args), encodingOptions)
|
|
1351
|
+
}))
|
|
1352
|
+
);
|
|
1353
|
+
return { caveatGroups };
|
|
1354
|
+
}
|
|
1355
|
+
function createLogicalOrWrapperArgs(args, encodingOptions = defaultOptions) {
|
|
1356
|
+
if (args.groupIndex < 0n) {
|
|
1357
|
+
throw new Error("Invalid groupIndex: must be a non-negative number");
|
|
1358
|
+
}
|
|
1359
|
+
const caveatArgsHex = args.caveatArgs.map(
|
|
1360
|
+
(arg) => normalizeHex(arg, "Invalid caveatArgs: must be valid hex strings")
|
|
1361
|
+
);
|
|
1362
|
+
const hexValue = _abiutils.encodeSingle.call(void 0, SELECTED_GROUP_ABI, [
|
|
1363
|
+
args.groupIndex,
|
|
1364
|
+
caveatArgsHex
|
|
1365
|
+
]);
|
|
1366
|
+
return prepareResult(hexValue, encodingOptions);
|
|
1367
|
+
}
|
|
1368
|
+
function decodeLogicalOrWrapperArgs(args, encodingOptions = defaultOptions) {
|
|
1369
|
+
const hexArgs = bytesLikeToHex(args);
|
|
1370
|
+
const [groupIndex, caveatArgsRaw] = _abiutils.decodeSingle.call(void 0,
|
|
1371
|
+
SELECTED_GROUP_ABI,
|
|
1372
|
+
hexArgs
|
|
1373
|
+
);
|
|
1374
|
+
const caveatArgs = caveatArgsRaw.map(
|
|
1375
|
+
(arg) => prepareResult(_utils.bytesToHex.call(void 0, arg), encodingOptions)
|
|
1376
|
+
);
|
|
1377
|
+
return { groupIndex, caveatArgs };
|
|
1378
|
+
}
|
|
1379
|
+
|
|
1314
1380
|
// src/delegation.ts
|
|
1315
1381
|
|
|
1316
1382
|
|
|
@@ -1510,5 +1576,10 @@ function getCaveatHash(caveat) {
|
|
|
1510
1576
|
|
|
1511
1577
|
|
|
1512
1578
|
|
|
1513
|
-
|
|
1579
|
+
|
|
1580
|
+
|
|
1581
|
+
|
|
1582
|
+
|
|
1583
|
+
|
|
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;
|
|
1514
1585
|
//# sourceMappingURL=index.cjs.map
|