@metamask/delegation-core 1.1.0 → 2.0.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/dist/index.d.cts CHANGED
@@ -15,6 +15,11 @@ type DelegationStruct<TBytes extends BytesLike = BytesLike> = {
15
15
  signature: TBytes;
16
16
  };
17
17
 
18
+ declare enum BalanceChangeType {
19
+ Increase = 0,
20
+ Decrease = 1
21
+ }
22
+
18
23
  type ResultValue = 'hex' | 'bytes';
19
24
  type ResultType<TResultValue extends ResultValue> = TResultValue extends 'hex' ? Hex : Uint8Array;
20
25
  type DecodedBytesLike<TResultValue extends ResultValue> = ResultType<TResultValue>;
@@ -119,7 +124,7 @@ declare function decodeNativeTokenPaymentTerms(terms: BytesLike, encodingOptions
119
124
  type NativeBalanceChangeTerms<TBytesLike extends BytesLike = BytesLike> = {
120
125
  recipient: TBytesLike;
121
126
  balance: bigint;
122
- changeType: number;
127
+ changeType: BalanceChangeType;
123
128
  };
124
129
  declare function createNativeBalanceChangeTerms(terms: NativeBalanceChangeTerms, encodingOptions?: EncodingOptions<'hex'>): Hex;
125
130
  declare function createNativeBalanceChangeTerms(terms: NativeBalanceChangeTerms, encodingOptions: EncodingOptions<'bytes'>): Uint8Array;
@@ -162,7 +167,7 @@ type ERC20BalanceChangeTerms<TBytesLike extends BytesLike = BytesLike> = {
162
167
  tokenAddress: TBytesLike;
163
168
  recipient: TBytesLike;
164
169
  balance: bigint;
165
- changeType: number;
170
+ changeType: BalanceChangeType;
166
171
  };
167
172
  declare function createERC20BalanceChangeTerms(terms: ERC20BalanceChangeTerms, encodingOptions?: EncodingOptions<'hex'>): Hex;
168
173
  declare function createERC20BalanceChangeTerms(terms: ERC20BalanceChangeTerms, encodingOptions: EncodingOptions<'bytes'>): Uint8Array;
@@ -173,7 +178,7 @@ type ERC721BalanceChangeTerms<TBytesLike extends BytesLike = BytesLike> = {
173
178
  tokenAddress: TBytesLike;
174
179
  recipient: TBytesLike;
175
180
  amount: bigint;
176
- changeType: number;
181
+ changeType: BalanceChangeType;
177
182
  };
178
183
  declare function createERC721BalanceChangeTerms(terms: ERC721BalanceChangeTerms, encodingOptions?: EncodingOptions<'hex'>): Hex;
179
184
  declare function createERC721BalanceChangeTerms(terms: ERC721BalanceChangeTerms, encodingOptions: EncodingOptions<'bytes'>): Uint8Array;
@@ -194,7 +199,7 @@ type ERC1155BalanceChangeTerms<TBytesLike extends BytesLike = BytesLike> = {
194
199
  recipient: TBytesLike;
195
200
  tokenId: bigint;
196
201
  balance: bigint;
197
- changeType: number;
202
+ changeType: BalanceChangeType;
198
203
  };
199
204
  declare function createERC1155BalanceChangeTerms(terms: ERC1155BalanceChangeTerms, encodingOptions?: EncodingOptions<'hex'>): Hex;
200
205
  declare function createERC1155BalanceChangeTerms(terms: ERC1155BalanceChangeTerms, encodingOptions: EncodingOptions<'bytes'>): Uint8Array;
@@ -316,6 +321,22 @@ declare function createSpecificActionERC20TransferBatchTerms(terms: SpecificActi
316
321
  declare function decodeSpecificActionERC20TransferBatchTerms(terms: BytesLike, encodingOptions?: EncodingOptions<'hex'>): SpecificActionERC20TransferBatchTerms<DecodedBytesLike<'hex'>>;
317
322
  declare function decodeSpecificActionERC20TransferBatchTerms(terms: BytesLike, encodingOptions: EncodingOptions<'bytes'>): SpecificActionERC20TransferBatchTerms<DecodedBytesLike<'bytes'>>;
318
323
 
324
+ type LogicalOrWrapperTerms<TBytesLike extends BytesLike = BytesLike> = {
325
+ caveatGroups: CaveatStruct<TBytesLike>[][];
326
+ };
327
+ type LogicalOrWrapperArgs<TBytesLike extends BytesLike = BytesLike> = {
328
+ groupIndex: bigint;
329
+ caveatArgs: TBytesLike[];
330
+ };
331
+ declare function createLogicalOrWrapperTerms(terms: LogicalOrWrapperTerms, encodingOptions?: EncodingOptions<'hex'>): Hex;
332
+ declare function createLogicalOrWrapperTerms(terms: LogicalOrWrapperTerms, encodingOptions: EncodingOptions<'bytes'>): Uint8Array;
333
+ declare function decodeLogicalOrWrapperTerms(terms: BytesLike, encodingOptions?: EncodingOptions<'hex'>): LogicalOrWrapperTerms<DecodedBytesLike<'hex'>>;
334
+ declare function decodeLogicalOrWrapperTerms(terms: BytesLike, encodingOptions: EncodingOptions<'bytes'>): LogicalOrWrapperTerms<DecodedBytesLike<'bytes'>>;
335
+ declare function createLogicalOrWrapperArgs(args: LogicalOrWrapperArgs, encodingOptions?: EncodingOptions<'hex'>): Hex;
336
+ declare function createLogicalOrWrapperArgs(args: LogicalOrWrapperArgs, encodingOptions: EncodingOptions<'bytes'>): Uint8Array;
337
+ declare function decodeLogicalOrWrapperArgs(args: BytesLike, encodingOptions?: EncodingOptions<'hex'>): LogicalOrWrapperArgs<DecodedBytesLike<'hex'>>;
338
+ declare function decodeLogicalOrWrapperArgs(args: BytesLike, encodingOptions: EncodingOptions<'bytes'>): LogicalOrWrapperArgs<DecodedBytesLike<'bytes'>>;
339
+
319
340
  declare const ANY_BENEFICIARY: "0x0000000000000000000000000000000000000a11";
320
341
  declare const ROOT_AUTHORITY: "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff";
321
342
  declare const DELEGATION_TYPEHASH: "0x88c1d2ecf185adf710588203a5f263f0ff61be0d33da39792cde19ba9aa4331e";
@@ -331,4 +352,4 @@ declare function decodeDelegation(encoded: BytesLike, options: EncodingOptions<'
331
352
  declare function hashDelegation(delegation: DelegationStruct, options?: EncodingOptions<'hex'>): Hex;
332
353
  declare function hashDelegation(delegation: DelegationStruct, options: EncodingOptions<'bytes'>): Uint8Array;
333
354
 
334
- export { ANY_BENEFICIARY, CAVEAT_TYPEHASH, type CaveatStruct as Caveat, DELEGATION_TYPEHASH, type DelegationStruct as Delegation, ROOT_AUTHORITY, createAllowedCalldataTerms, createAllowedMethodsTerms, createAllowedTargetsTerms, createArgsEqualityCheckTerms, createBlockNumberTerms, createDeployedTerms, createERC1155BalanceChangeTerms, createERC20BalanceChangeTerms, createERC20StreamingTerms, createERC20TokenPeriodTransferTerms, createERC20TransferAmountTerms, createERC721BalanceChangeTerms, createERC721TransferTerms, createExactCalldataBatchTerms, createExactCalldataTerms, createExactExecutionBatchTerms, createExactExecutionTerms, createIdTerms, createLimitedCallsTerms, createMultiTokenPeriodTerms, createNativeBalanceChangeTerms, createNativeTokenPaymentTerms, createNativeTokenPeriodTransferTerms, createNativeTokenStreamingTerms, createNativeTokenTransferAmountTerms, createNonceTerms, createOwnershipTransferTerms, createRedeemerTerms, createSpecificActionERC20TransferBatchTerms, createTimestampTerms, createValueLteTerms, decodeAllowedCalldataTerms, decodeAllowedMethodsTerms, decodeAllowedTargetsTerms, decodeArgsEqualityCheckTerms, decodeBlockNumberTerms, decodeDelegation, decodeDelegations, decodeDeployedTerms, decodeERC1155BalanceChangeTerms, decodeERC20BalanceChangeTerms, decodeERC20StreamingTerms, decodeERC20TokenPeriodTransferTerms, decodeERC20TransferAmountTerms, decodeERC721BalanceChangeTerms, decodeERC721TransferTerms, decodeExactCalldataBatchTerms, decodeExactCalldataTerms, decodeExactExecutionBatchTerms, decodeExactExecutionTerms, decodeIdTerms, decodeLimitedCallsTerms, decodeMultiTokenPeriodTerms, decodeNativeBalanceChangeTerms, decodeNativeTokenPaymentTerms, decodeNativeTokenPeriodTransferTerms, decodeNativeTokenStreamingTerms, decodeNativeTokenTransferAmountTerms, decodeNonceTerms, decodeOwnershipTransferTerms, decodeRedeemerTerms, decodeSpecificActionERC20TransferBatchTerms, decodeTimestampTerms, decodeValueLteTerms, encodeDelegation, encodeDelegations, hashDelegation };
355
+ export { ANY_BENEFICIARY, BalanceChangeType, CAVEAT_TYPEHASH, type CaveatStruct as Caveat, DELEGATION_TYPEHASH, type DelegationStruct as Delegation, ROOT_AUTHORITY, createAllowedCalldataTerms, createAllowedMethodsTerms, createAllowedTargetsTerms, createArgsEqualityCheckTerms, createBlockNumberTerms, createDeployedTerms, createERC1155BalanceChangeTerms, createERC20BalanceChangeTerms, createERC20StreamingTerms, createERC20TokenPeriodTransferTerms, createERC20TransferAmountTerms, createERC721BalanceChangeTerms, createERC721TransferTerms, createExactCalldataBatchTerms, createExactCalldataTerms, createExactExecutionBatchTerms, createExactExecutionTerms, createIdTerms, createLimitedCallsTerms, createLogicalOrWrapperArgs, createLogicalOrWrapperTerms, createMultiTokenPeriodTerms, createNativeBalanceChangeTerms, createNativeTokenPaymentTerms, createNativeTokenPeriodTransferTerms, createNativeTokenStreamingTerms, createNativeTokenTransferAmountTerms, createNonceTerms, createOwnershipTransferTerms, createRedeemerTerms, createSpecificActionERC20TransferBatchTerms, createTimestampTerms, createValueLteTerms, decodeAllowedCalldataTerms, decodeAllowedMethodsTerms, decodeAllowedTargetsTerms, decodeArgsEqualityCheckTerms, decodeBlockNumberTerms, decodeDelegation, decodeDelegations, decodeDeployedTerms, decodeERC1155BalanceChangeTerms, decodeERC20BalanceChangeTerms, decodeERC20StreamingTerms, decodeERC20TokenPeriodTransferTerms, decodeERC20TransferAmountTerms, decodeERC721BalanceChangeTerms, decodeERC721TransferTerms, decodeExactCalldataBatchTerms, decodeExactCalldataTerms, decodeExactExecutionBatchTerms, decodeExactExecutionTerms, decodeIdTerms, decodeLimitedCallsTerms, decodeLogicalOrWrapperArgs, decodeLogicalOrWrapperTerms, decodeMultiTokenPeriodTerms, decodeNativeBalanceChangeTerms, decodeNativeTokenPaymentTerms, decodeNativeTokenPeriodTransferTerms, decodeNativeTokenStreamingTerms, decodeNativeTokenTransferAmountTerms, decodeNonceTerms, decodeOwnershipTransferTerms, decodeRedeemerTerms, decodeSpecificActionERC20TransferBatchTerms, decodeTimestampTerms, decodeValueLteTerms, encodeDelegation, encodeDelegations, hashDelegation };
package/dist/index.d.ts CHANGED
@@ -15,6 +15,11 @@ type DelegationStruct<TBytes extends BytesLike = BytesLike> = {
15
15
  signature: TBytes;
16
16
  };
17
17
 
18
+ declare enum BalanceChangeType {
19
+ Increase = 0,
20
+ Decrease = 1
21
+ }
22
+
18
23
  type ResultValue = 'hex' | 'bytes';
19
24
  type ResultType<TResultValue extends ResultValue> = TResultValue extends 'hex' ? Hex : Uint8Array;
20
25
  type DecodedBytesLike<TResultValue extends ResultValue> = ResultType<TResultValue>;
@@ -119,7 +124,7 @@ declare function decodeNativeTokenPaymentTerms(terms: BytesLike, encodingOptions
119
124
  type NativeBalanceChangeTerms<TBytesLike extends BytesLike = BytesLike> = {
120
125
  recipient: TBytesLike;
121
126
  balance: bigint;
122
- changeType: number;
127
+ changeType: BalanceChangeType;
123
128
  };
124
129
  declare function createNativeBalanceChangeTerms(terms: NativeBalanceChangeTerms, encodingOptions?: EncodingOptions<'hex'>): Hex;
125
130
  declare function createNativeBalanceChangeTerms(terms: NativeBalanceChangeTerms, encodingOptions: EncodingOptions<'bytes'>): Uint8Array;
@@ -162,7 +167,7 @@ type ERC20BalanceChangeTerms<TBytesLike extends BytesLike = BytesLike> = {
162
167
  tokenAddress: TBytesLike;
163
168
  recipient: TBytesLike;
164
169
  balance: bigint;
165
- changeType: number;
170
+ changeType: BalanceChangeType;
166
171
  };
167
172
  declare function createERC20BalanceChangeTerms(terms: ERC20BalanceChangeTerms, encodingOptions?: EncodingOptions<'hex'>): Hex;
168
173
  declare function createERC20BalanceChangeTerms(terms: ERC20BalanceChangeTerms, encodingOptions: EncodingOptions<'bytes'>): Uint8Array;
@@ -173,7 +178,7 @@ type ERC721BalanceChangeTerms<TBytesLike extends BytesLike = BytesLike> = {
173
178
  tokenAddress: TBytesLike;
174
179
  recipient: TBytesLike;
175
180
  amount: bigint;
176
- changeType: number;
181
+ changeType: BalanceChangeType;
177
182
  };
178
183
  declare function createERC721BalanceChangeTerms(terms: ERC721BalanceChangeTerms, encodingOptions?: EncodingOptions<'hex'>): Hex;
179
184
  declare function createERC721BalanceChangeTerms(terms: ERC721BalanceChangeTerms, encodingOptions: EncodingOptions<'bytes'>): Uint8Array;
@@ -194,7 +199,7 @@ type ERC1155BalanceChangeTerms<TBytesLike extends BytesLike = BytesLike> = {
194
199
  recipient: TBytesLike;
195
200
  tokenId: bigint;
196
201
  balance: bigint;
197
- changeType: number;
202
+ changeType: BalanceChangeType;
198
203
  };
199
204
  declare function createERC1155BalanceChangeTerms(terms: ERC1155BalanceChangeTerms, encodingOptions?: EncodingOptions<'hex'>): Hex;
200
205
  declare function createERC1155BalanceChangeTerms(terms: ERC1155BalanceChangeTerms, encodingOptions: EncodingOptions<'bytes'>): Uint8Array;
@@ -316,6 +321,22 @@ declare function createSpecificActionERC20TransferBatchTerms(terms: SpecificActi
316
321
  declare function decodeSpecificActionERC20TransferBatchTerms(terms: BytesLike, encodingOptions?: EncodingOptions<'hex'>): SpecificActionERC20TransferBatchTerms<DecodedBytesLike<'hex'>>;
317
322
  declare function decodeSpecificActionERC20TransferBatchTerms(terms: BytesLike, encodingOptions: EncodingOptions<'bytes'>): SpecificActionERC20TransferBatchTerms<DecodedBytesLike<'bytes'>>;
318
323
 
324
+ type LogicalOrWrapperTerms<TBytesLike extends BytesLike = BytesLike> = {
325
+ caveatGroups: CaveatStruct<TBytesLike>[][];
326
+ };
327
+ type LogicalOrWrapperArgs<TBytesLike extends BytesLike = BytesLike> = {
328
+ groupIndex: bigint;
329
+ caveatArgs: TBytesLike[];
330
+ };
331
+ declare function createLogicalOrWrapperTerms(terms: LogicalOrWrapperTerms, encodingOptions?: EncodingOptions<'hex'>): Hex;
332
+ declare function createLogicalOrWrapperTerms(terms: LogicalOrWrapperTerms, encodingOptions: EncodingOptions<'bytes'>): Uint8Array;
333
+ declare function decodeLogicalOrWrapperTerms(terms: BytesLike, encodingOptions?: EncodingOptions<'hex'>): LogicalOrWrapperTerms<DecodedBytesLike<'hex'>>;
334
+ declare function decodeLogicalOrWrapperTerms(terms: BytesLike, encodingOptions: EncodingOptions<'bytes'>): LogicalOrWrapperTerms<DecodedBytesLike<'bytes'>>;
335
+ declare function createLogicalOrWrapperArgs(args: LogicalOrWrapperArgs, encodingOptions?: EncodingOptions<'hex'>): Hex;
336
+ declare function createLogicalOrWrapperArgs(args: LogicalOrWrapperArgs, encodingOptions: EncodingOptions<'bytes'>): Uint8Array;
337
+ declare function decodeLogicalOrWrapperArgs(args: BytesLike, encodingOptions?: EncodingOptions<'hex'>): LogicalOrWrapperArgs<DecodedBytesLike<'hex'>>;
338
+ declare function decodeLogicalOrWrapperArgs(args: BytesLike, encodingOptions: EncodingOptions<'bytes'>): LogicalOrWrapperArgs<DecodedBytesLike<'bytes'>>;
339
+
319
340
  declare const ANY_BENEFICIARY: "0x0000000000000000000000000000000000000a11";
320
341
  declare const ROOT_AUTHORITY: "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff";
321
342
  declare const DELEGATION_TYPEHASH: "0x88c1d2ecf185adf710588203a5f263f0ff61be0d33da39792cde19ba9aa4331e";
@@ -331,4 +352,4 @@ declare function decodeDelegation(encoded: BytesLike, options: EncodingOptions<'
331
352
  declare function hashDelegation(delegation: DelegationStruct, options?: EncodingOptions<'hex'>): Hex;
332
353
  declare function hashDelegation(delegation: DelegationStruct, options: EncodingOptions<'bytes'>): Uint8Array;
333
354
 
334
- export { ANY_BENEFICIARY, CAVEAT_TYPEHASH, type CaveatStruct as Caveat, DELEGATION_TYPEHASH, type DelegationStruct as Delegation, ROOT_AUTHORITY, createAllowedCalldataTerms, createAllowedMethodsTerms, createAllowedTargetsTerms, createArgsEqualityCheckTerms, createBlockNumberTerms, createDeployedTerms, createERC1155BalanceChangeTerms, createERC20BalanceChangeTerms, createERC20StreamingTerms, createERC20TokenPeriodTransferTerms, createERC20TransferAmountTerms, createERC721BalanceChangeTerms, createERC721TransferTerms, createExactCalldataBatchTerms, createExactCalldataTerms, createExactExecutionBatchTerms, createExactExecutionTerms, createIdTerms, createLimitedCallsTerms, createMultiTokenPeriodTerms, createNativeBalanceChangeTerms, createNativeTokenPaymentTerms, createNativeTokenPeriodTransferTerms, createNativeTokenStreamingTerms, createNativeTokenTransferAmountTerms, createNonceTerms, createOwnershipTransferTerms, createRedeemerTerms, createSpecificActionERC20TransferBatchTerms, createTimestampTerms, createValueLteTerms, decodeAllowedCalldataTerms, decodeAllowedMethodsTerms, decodeAllowedTargetsTerms, decodeArgsEqualityCheckTerms, decodeBlockNumberTerms, decodeDelegation, decodeDelegations, decodeDeployedTerms, decodeERC1155BalanceChangeTerms, decodeERC20BalanceChangeTerms, decodeERC20StreamingTerms, decodeERC20TokenPeriodTransferTerms, decodeERC20TransferAmountTerms, decodeERC721BalanceChangeTerms, decodeERC721TransferTerms, decodeExactCalldataBatchTerms, decodeExactCalldataTerms, decodeExactExecutionBatchTerms, decodeExactExecutionTerms, decodeIdTerms, decodeLimitedCallsTerms, decodeMultiTokenPeriodTerms, decodeNativeBalanceChangeTerms, decodeNativeTokenPaymentTerms, decodeNativeTokenPeriodTransferTerms, decodeNativeTokenStreamingTerms, decodeNativeTokenTransferAmountTerms, decodeNonceTerms, decodeOwnershipTransferTerms, decodeRedeemerTerms, decodeSpecificActionERC20TransferBatchTerms, decodeTimestampTerms, decodeValueLteTerms, encodeDelegation, encodeDelegations, hashDelegation };
355
+ export { ANY_BENEFICIARY, BalanceChangeType, CAVEAT_TYPEHASH, type CaveatStruct as Caveat, DELEGATION_TYPEHASH, type DelegationStruct as Delegation, ROOT_AUTHORITY, createAllowedCalldataTerms, createAllowedMethodsTerms, createAllowedTargetsTerms, createArgsEqualityCheckTerms, createBlockNumberTerms, createDeployedTerms, createERC1155BalanceChangeTerms, createERC20BalanceChangeTerms, createERC20StreamingTerms, createERC20TokenPeriodTransferTerms, createERC20TransferAmountTerms, createERC721BalanceChangeTerms, createERC721TransferTerms, createExactCalldataBatchTerms, createExactCalldataTerms, createExactExecutionBatchTerms, createExactExecutionTerms, createIdTerms, createLimitedCallsTerms, createLogicalOrWrapperArgs, createLogicalOrWrapperTerms, createMultiTokenPeriodTerms, createNativeBalanceChangeTerms, createNativeTokenPaymentTerms, createNativeTokenPeriodTransferTerms, createNativeTokenStreamingTerms, createNativeTokenTransferAmountTerms, createNonceTerms, createOwnershipTransferTerms, createRedeemerTerms, createSpecificActionERC20TransferBatchTerms, createTimestampTerms, createValueLteTerms, decodeAllowedCalldataTerms, decodeAllowedMethodsTerms, decodeAllowedTargetsTerms, decodeArgsEqualityCheckTerms, decodeBlockNumberTerms, decodeDelegation, decodeDelegations, decodeDeployedTerms, decodeERC1155BalanceChangeTerms, decodeERC20BalanceChangeTerms, decodeERC20StreamingTerms, decodeERC20TokenPeriodTransferTerms, decodeERC20TransferAmountTerms, decodeERC721BalanceChangeTerms, decodeERC721TransferTerms, decodeExactCalldataBatchTerms, decodeExactCalldataTerms, decodeExactExecutionBatchTerms, decodeExactExecutionTerms, decodeIdTerms, decodeLimitedCallsTerms, decodeLogicalOrWrapperArgs, decodeLogicalOrWrapperTerms, decodeMultiTokenPeriodTerms, decodeNativeBalanceChangeTerms, decodeNativeTokenPaymentTerms, decodeNativeTokenPeriodTransferTerms, decodeNativeTokenStreamingTerms, decodeNativeTokenTransferAmountTerms, decodeNonceTerms, decodeOwnershipTransferTerms, decodeRedeemerTerms, decodeSpecificActionERC20TransferBatchTerms, decodeTimestampTerms, decodeValueLteTerms, encodeDelegation, encodeDelegations, hashDelegation };
package/dist/index.mjs CHANGED
@@ -1,3 +1,10 @@
1
+ // 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
+
1
8
  // src/internalUtils.ts
2
9
  import {
3
10
  bytesToHex,
@@ -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: changeTypeNumber } = terms;
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,8 +1298,87 @@ function decodeSpecificActionERC20TransferBatchTerms(terms, encodingOptions = de
1311
1298
  };
1312
1299
  }
1313
1300
 
1301
+ // src/caveats/logicalOrWrapper.ts
1302
+ import { decodeSingle as decodeSingle3, encodeSingle as encodeSingle3 } from "@metamask/abi-utils";
1303
+ import { bytesToHex as bytesToHex11 } from "@metamask/utils";
1304
+ var CAVEAT_GROUPS_ABI = "((address,bytes,bytes)[])[]";
1305
+ var SELECTED_GROUP_ABI = "(uint256,bytes[])";
1306
+ function assertValidCaveatGroups(groups) {
1307
+ if (!groups?.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 (!group?.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 = encodeSingle3(CAVEAT_GROUPS_ABI, encodableGroups);
1338
+ return prepareResult(hexValue, encodingOptions);
1339
+ }
1340
+ function decodeLogicalOrWrapperTerms(terms, encodingOptions = defaultOptions) {
1341
+ const hexTerms = bytesLikeToHex(terms);
1342
+ const decoded = decodeSingle3(
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(bytesToHex11(caveatTerms), encodingOptions),
1350
+ args: prepareResult(bytesToHex11(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 = encodeSingle3(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] = decodeSingle3(
1371
+ SELECTED_GROUP_ABI,
1372
+ hexArgs
1373
+ );
1374
+ const caveatArgs = caveatArgsRaw.map(
1375
+ (arg) => prepareResult(bytesToHex11(arg), encodingOptions)
1376
+ );
1377
+ return { groupIndex, caveatArgs };
1378
+ }
1379
+
1314
1380
  // src/delegation.ts
1315
- import { encode, encodeSingle as encodeSingle3, decodeSingle as decodeSingle3 } from "@metamask/abi-utils";
1381
+ import { encode, encodeSingle as encodeSingle4, decodeSingle as decodeSingle4 } from "@metamask/abi-utils";
1316
1382
  import { hexToBytes as hexToBytes3 } from "@metamask/utils";
1317
1383
  import { keccak_256 as keccak256 } from "@noble/hashes/sha3";
1318
1384
  var ANY_BENEFICIARY = "0x0000000000000000000000000000000000000a11";
@@ -1339,7 +1405,7 @@ function encodeDelegations(delegations, options = defaultOptions) {
1339
1405
  struct.salt,
1340
1406
  struct.signature
1341
1407
  ]);
1342
- result = encodeSingle3(DELEGATION_ARRAY_ABI_TYPES, encodableStructs);
1408
+ result = encodeSingle4(DELEGATION_ARRAY_ABI_TYPES, encodableStructs);
1343
1409
  }
1344
1410
  return prepareResult(result, options);
1345
1411
  }
@@ -1356,7 +1422,7 @@ function encodeDelegation(delegation, options = defaultOptions) {
1356
1422
  delegation.salt,
1357
1423
  delegation.signature
1358
1424
  ];
1359
- const result = encodeSingle3(DELEGATION_ABI_TYPE, encodableStruct);
1425
+ const result = encodeSingle4(DELEGATION_ABI_TYPE, encodableStruct);
1360
1426
  return prepareResult(result, options);
1361
1427
  }
1362
1428
  var delegationFromDecodedDelegation = (decodedDelegation, convertFn) => {
@@ -1375,7 +1441,7 @@ var delegationFromDecodedDelegation = (decodedDelegation, convertFn) => {
1375
1441
  };
1376
1442
  };
1377
1443
  function decodeDelegations(encoded, options = defaultOptions) {
1378
- const decodedStructs = decodeSingle3(
1444
+ const decodedStructs = decodeSingle4(
1379
1445
  DELEGATION_ARRAY_ABI_TYPES,
1380
1446
  encoded
1381
1447
  // return types cannot be inferred from complex ABI types, so we must assert the type
@@ -1390,7 +1456,7 @@ function decodeDelegations(encoded, options = defaultOptions) {
1390
1456
  );
1391
1457
  }
1392
1458
  function decodeDelegation(encoded, options = defaultOptions) {
1393
- const decodedStruct = decodeSingle3(
1459
+ const decodedStruct = decodeSingle4(
1394
1460
  DELEGATION_ABI_TYPE,
1395
1461
  encoded
1396
1462
  // return types cannot be inferred from complex ABI types, so we must assert the type
@@ -1440,6 +1506,7 @@ function getCaveatHash(caveat) {
1440
1506
  }
1441
1507
  export {
1442
1508
  ANY_BENEFICIARY,
1509
+ BalanceChangeType,
1443
1510
  CAVEAT_TYPEHASH,
1444
1511
  DELEGATION_TYPEHASH,
1445
1512
  ROOT_AUTHORITY,
@@ -1462,6 +1529,8 @@ export {
1462
1529
  createExactExecutionTerms,
1463
1530
  createIdTerms,
1464
1531
  createLimitedCallsTerms,
1532
+ createLogicalOrWrapperArgs,
1533
+ createLogicalOrWrapperTerms,
1465
1534
  createMultiTokenPeriodTerms,
1466
1535
  createNativeBalanceChangeTerms,
1467
1536
  createNativeTokenPaymentTerms,
@@ -1495,6 +1564,8 @@ export {
1495
1564
  decodeExactExecutionTerms,
1496
1565
  decodeIdTerms,
1497
1566
  decodeLimitedCallsTerms,
1567
+ decodeLogicalOrWrapperArgs,
1568
+ decodeLogicalOrWrapperTerms,
1498
1569
  decodeMultiTokenPeriodTerms,
1499
1570
  decodeNativeBalanceChangeTerms,
1500
1571
  decodeNativeTokenPaymentTerms,