@metamask/smart-accounts-kit 0.4.0-beta.0 → 0.4.0-beta.2

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.
Files changed (79) hide show
  1. package/CHANGELOG.md +49 -1
  2. package/dist/actions/index.cjs +5 -5
  3. package/dist/actions/index.d.cts +2 -2
  4. package/dist/actions/index.d.ts +2 -2
  5. package/dist/actions/index.mjs +4 -4
  6. package/dist/{chunk-S2Q5ZC64.cjs → chunk-23YXLKTX.cjs} +58 -59
  7. package/dist/chunk-23YXLKTX.cjs.map +1 -0
  8. package/dist/{chunk-W6ZI7GWI.mjs → chunk-33AMUJBJ.mjs} +49 -52
  9. package/dist/chunk-33AMUJBJ.mjs.map +1 -0
  10. package/dist/{chunk-TEH426Y4.mjs → chunk-C5ZEEH2Z.mjs} +283 -184
  11. package/dist/chunk-C5ZEEH2Z.mjs.map +1 -0
  12. package/dist/{chunk-NTZ57GNF.cjs → chunk-DLD377CN.cjs} +17 -33
  13. package/dist/chunk-DLD377CN.cjs.map +1 -0
  14. package/dist/{chunk-5BYJZGRI.mjs → chunk-NOCLGZGB.mjs} +174 -129
  15. package/dist/chunk-NOCLGZGB.mjs.map +1 -0
  16. package/dist/{chunk-EHIZB5U7.mjs → chunk-QCULIK3O.mjs} +211 -97
  17. package/dist/chunk-QCULIK3O.mjs.map +1 -0
  18. package/dist/{chunk-YWRHYLKB.cjs → chunk-QMRKCB7T.cjs} +204 -159
  19. package/dist/chunk-QMRKCB7T.cjs.map +1 -0
  20. package/dist/{chunk-TXN7GX6Y.cjs → chunk-SOFB2MXG.cjs} +207 -93
  21. package/dist/chunk-SOFB2MXG.cjs.map +1 -0
  22. package/dist/{chunk-RAXFJGCS.cjs → chunk-UUOH2WAW.cjs} +19 -19
  23. package/dist/chunk-UUOH2WAW.cjs.map +1 -0
  24. package/dist/{chunk-AUCZDOTJ.mjs → chunk-WPVSFOQM.mjs} +11 -27
  25. package/dist/chunk-WPVSFOQM.mjs.map +1 -0
  26. package/dist/{chunk-4A5RMDDC.mjs → chunk-WV2R7BXP.mjs} +49 -50
  27. package/dist/chunk-WV2R7BXP.mjs.map +1 -0
  28. package/dist/{chunk-YTGYVHDF.cjs → chunk-XN36L4RX.cjs} +144 -147
  29. package/dist/chunk-XN36L4RX.cjs.map +1 -0
  30. package/dist/{chunk-MIP7KJYH.cjs → chunk-YDLLC6PP.cjs} +252 -153
  31. package/dist/chunk-YDLLC6PP.cjs.map +1 -0
  32. package/dist/{chunk-DPWYECSV.mjs → chunk-YTELOQ4I.mjs} +9 -9
  33. package/dist/chunk-YTELOQ4I.mjs.map +1 -0
  34. package/dist/contracts/index.cjs +5 -5
  35. package/dist/contracts/index.d.cts +3 -3
  36. package/dist/contracts/index.d.ts +3 -3
  37. package/dist/contracts/index.mjs +4 -4
  38. package/dist/{delegation-DHjM_pVa.d.ts → delegation-DGUfyX-C.d.ts} +52 -26
  39. package/dist/{delegation-BnhAvKt4.d.cts → delegation-D_TY-tAq.d.cts} +52 -26
  40. package/dist/experimental/index.cjs +4 -4
  41. package/dist/experimental/index.cjs.map +1 -1
  42. package/dist/experimental/index.d.cts +1 -1
  43. package/dist/experimental/index.d.ts +1 -1
  44. package/dist/experimental/index.mjs +5 -5
  45. package/dist/experimental/index.mjs.map +1 -1
  46. package/dist/{index-CX3hrztI.d.cts → index-B9bsjGqI.d.ts} +240 -38
  47. package/dist/{index-D04LO0vH.d.cts → index-CZes99jV.d.cts} +95 -62
  48. package/dist/{index-i8cod4JY.d.ts → index-DvcKJcXi.d.cts} +240 -38
  49. package/dist/{index-BlgCQ80b.d.ts → index-FpCh2419.d.ts} +95 -62
  50. package/dist/index.cjs +26 -24
  51. package/dist/index.cjs.map +1 -1
  52. package/dist/index.d.cts +9 -11
  53. package/dist/index.d.ts +9 -11
  54. package/dist/index.mjs +17 -15
  55. package/dist/index.mjs.map +1 -1
  56. package/dist/{smartAccountsEnvironment-SVknZ_3f.d.cts → smartAccountsEnvironment-BU8kjlEv.d.cts} +1 -1
  57. package/dist/{smartAccountsEnvironment-BOhrxEnt.d.ts → smartAccountsEnvironment-egxuflDO.d.ts} +1 -1
  58. package/dist/{types-Bwksz_U6.d.ts → types-BLYWtcR3.d.cts} +49 -31
  59. package/dist/{types-Bwksz_U6.d.cts → types-BLYWtcR3.d.ts} +49 -31
  60. package/dist/utils/index.cjs +7 -5
  61. package/dist/utils/index.cjs.map +1 -1
  62. package/dist/utils/index.d.cts +3 -4
  63. package/dist/utils/index.d.ts +3 -4
  64. package/dist/utils/index.mjs +12 -10
  65. package/package.json +6 -11
  66. package/dist/chunk-4A5RMDDC.mjs.map +0 -1
  67. package/dist/chunk-5BYJZGRI.mjs.map +0 -1
  68. package/dist/chunk-AUCZDOTJ.mjs.map +0 -1
  69. package/dist/chunk-DPWYECSV.mjs.map +0 -1
  70. package/dist/chunk-EHIZB5U7.mjs.map +0 -1
  71. package/dist/chunk-MIP7KJYH.cjs.map +0 -1
  72. package/dist/chunk-NTZ57GNF.cjs.map +0 -1
  73. package/dist/chunk-RAXFJGCS.cjs.map +0 -1
  74. package/dist/chunk-S2Q5ZC64.cjs.map +0 -1
  75. package/dist/chunk-TEH426Y4.mjs.map +0 -1
  76. package/dist/chunk-TXN7GX6Y.cjs.map +0 -1
  77. package/dist/chunk-W6ZI7GWI.mjs.map +0 -1
  78. package/dist/chunk-YTGYVHDF.cjs.map +0 -1
  79. package/dist/chunk-YWRHYLKB.cjs.map +0 -1
@@ -4,6 +4,70 @@ var __export = (target, all) => {
4
4
  __defProp(target, name, { get: all[name], enumerable: true });
5
5
  };
6
6
 
7
+ // src/constants.ts
8
+ var Implementation = /* @__PURE__ */ ((Implementation2) => {
9
+ Implementation2["MultiSig"] = "MultiSig";
10
+ Implementation2["Hybrid"] = "Hybrid";
11
+ Implementation2["Stateless7702"] = "Stateless7702";
12
+ return Implementation2;
13
+ })(Implementation || {});
14
+ var TransferWindow = /* @__PURE__ */ ((TransferWindow2) => {
15
+ TransferWindow2[TransferWindow2["Hourly"] = 3600] = "Hourly";
16
+ TransferWindow2[TransferWindow2["Daily"] = 86400] = "Daily";
17
+ TransferWindow2[TransferWindow2["Weekly"] = 604800] = "Weekly";
18
+ TransferWindow2[TransferWindow2["BiWeekly"] = 1209600] = "BiWeekly";
19
+ TransferWindow2[TransferWindow2["Monthly"] = 2592e3] = "Monthly";
20
+ TransferWindow2[TransferWindow2["Quarterly"] = 7776e3] = "Quarterly";
21
+ TransferWindow2[TransferWindow2["Yearly"] = 31536e3] = "Yearly";
22
+ return TransferWindow2;
23
+ })(TransferWindow || {});
24
+ var ScopeType = /* @__PURE__ */ ((ScopeType2) => {
25
+ ScopeType2["Erc20TransferAmount"] = "erc20TransferAmount";
26
+ ScopeType2["Erc20Streaming"] = "erc20Streaming";
27
+ ScopeType2["Erc20PeriodTransfer"] = "erc20PeriodTransfer";
28
+ ScopeType2["NativeTokenTransferAmount"] = "nativeTokenTransferAmount";
29
+ ScopeType2["NativeTokenStreaming"] = "nativeTokenStreaming";
30
+ ScopeType2["NativeTokenPeriodTransfer"] = "nativeTokenPeriodTransfer";
31
+ ScopeType2["Erc721Transfer"] = "erc721Transfer";
32
+ ScopeType2["OwnershipTransfer"] = "ownershipTransfer";
33
+ ScopeType2["FunctionCall"] = "functionCall";
34
+ return ScopeType2;
35
+ })(ScopeType || {});
36
+ var CaveatType = /* @__PURE__ */ ((CaveatType2) => {
37
+ CaveatType2["AllowedMethods"] = "allowedMethods";
38
+ CaveatType2["AllowedTargets"] = "allowedTargets";
39
+ CaveatType2["Deployed"] = "deployed";
40
+ CaveatType2["AllowedCalldata"] = "allowedCalldata";
41
+ CaveatType2["Erc20BalanceChange"] = "erc20BalanceChange";
42
+ CaveatType2["Erc721BalanceChange"] = "erc721BalanceChange";
43
+ CaveatType2["Erc1155BalanceChange"] = "erc1155BalanceChange";
44
+ CaveatType2["ValueLte"] = "valueLte";
45
+ CaveatType2["LimitedCalls"] = "limitedCalls";
46
+ CaveatType2["Id"] = "id";
47
+ CaveatType2["Nonce"] = "nonce";
48
+ CaveatType2["Timestamp"] = "timestamp";
49
+ CaveatType2["BlockNumber"] = "blockNumber";
50
+ CaveatType2["Erc20TransferAmount"] = "erc20TransferAmount";
51
+ CaveatType2["Erc20Streaming"] = "erc20Streaming";
52
+ CaveatType2["NativeTokenStreaming"] = "nativeTokenStreaming";
53
+ CaveatType2["Erc721Transfer"] = "erc721Transfer";
54
+ CaveatType2["NativeTokenTransferAmount"] = "nativeTokenTransferAmount";
55
+ CaveatType2["NativeBalanceChange"] = "nativeBalanceChange";
56
+ CaveatType2["Redeemer"] = "redeemer";
57
+ CaveatType2["NativeTokenPayment"] = "nativeTokenPayment";
58
+ CaveatType2["ArgsEqualityCheck"] = "argsEqualityCheck";
59
+ CaveatType2["SpecificActionERC20TransferBatch"] = "specificActionERC20TransferBatch";
60
+ CaveatType2["Erc20PeriodTransfer"] = "erc20PeriodTransfer";
61
+ CaveatType2["NativeTokenPeriodTransfer"] = "nativeTokenPeriodTransfer";
62
+ CaveatType2["ExactCalldataBatch"] = "exactCalldataBatch";
63
+ CaveatType2["ExactCalldata"] = "exactCalldata";
64
+ CaveatType2["ExactExecution"] = "exactExecution";
65
+ CaveatType2["ExactExecutionBatch"] = "exactExecutionBatch";
66
+ CaveatType2["MultiTokenPeriod"] = "multiTokenPeriod";
67
+ CaveatType2["OwnershipTransfer"] = "ownershipTransfer";
68
+ return CaveatType2;
69
+ })(CaveatType || {});
70
+
7
71
  // src/caveatBuilder/caveatBuilder.ts
8
72
  var INSECURE_UNRESTRICTED_DELEGATION_ERROR_MESSAGE = "No caveats found. If you definitely want to create an empty caveat collection, set `allowInsecureUnrestrictedDelegation` to `true`.";
9
73
  var CaveatBuilder = class _CaveatBuilder {
@@ -38,7 +102,7 @@ var CaveatBuilder = class _CaveatBuilder {
38
102
  addCaveat(nameOrCaveat, config) {
39
103
  if (typeof nameOrCaveat === "object") {
40
104
  const caveat = {
41
- args: "0x",
105
+ args: "0x00",
42
106
  ...nameOrCaveat
43
107
  };
44
108
  this.#results = [...this.#results, caveat];
@@ -93,12 +157,13 @@ var allowedCalldataBuilder = (environment, config) => {
93
157
  return {
94
158
  enforcer: AllowedCalldataEnforcer,
95
159
  terms,
96
- args: "0x"
160
+ args: "0x00"
97
161
  };
98
162
  };
99
163
 
100
164
  // src/caveatBuilder/allowedMethodsBuilder.ts
101
- import { isHex, concat, toFunctionSelector } from "viem";
165
+ import { createAllowedMethodsTerms } from "@metamask/delegation-core";
166
+ import { isHex, toFunctionSelector } from "viem";
102
167
  var allowedMethods = "allowedMethods";
103
168
  var FUNCTION_SELECTOR_STRING_LENGTH = 10;
104
169
  var allowedMethodsBuilder = (environment, config) => {
@@ -107,7 +172,7 @@ var allowedMethodsBuilder = (environment, config) => {
107
172
  throw new Error("Invalid selectors: must provide at least one selector");
108
173
  }
109
174
  const parsedSelectors = selectors.map(parseSelector);
110
- const terms = concat(parsedSelectors);
175
+ const terms = createAllowedMethodsTerms({ selectors: parsedSelectors });
111
176
  const {
112
177
  caveatEnforcers: { AllowedMethodsEnforcer }
113
178
  } = environment;
@@ -117,7 +182,7 @@ var allowedMethodsBuilder = (environment, config) => {
117
182
  return {
118
183
  enforcer: AllowedMethodsEnforcer,
119
184
  terms,
120
- args: "0x"
185
+ args: "0x00"
121
186
  };
122
187
  };
123
188
  function parseSelector(selector) {
@@ -140,7 +205,8 @@ function parseSelector(selector) {
140
205
  }
141
206
 
142
207
  // src/caveatBuilder/allowedTargetsBuilder.ts
143
- import { concat as concat2, isAddress } from "viem";
208
+ import { createAllowedTargetsTerms } from "@metamask/delegation-core";
209
+ import { isAddress } from "viem";
144
210
  var allowedTargets = "allowedTargets";
145
211
  var allowedTargetsBuilder = (environment, config) => {
146
212
  const { targets } = config;
@@ -155,7 +221,7 @@ var allowedTargetsBuilder = (environment, config) => {
155
221
  if (invalidAddresses.length > 0) {
156
222
  throw new Error("Invalid targets: must be valid addresses");
157
223
  }
158
- const terms = concat2(targets);
224
+ const terms = createAllowedTargetsTerms({ targets });
159
225
  const {
160
226
  caveatEnforcers: { AllowedTargetsEnforcer }
161
227
  } = environment;
@@ -165,11 +231,12 @@ var allowedTargetsBuilder = (environment, config) => {
165
231
  return {
166
232
  enforcer: AllowedTargetsEnforcer,
167
233
  terms,
168
- args: "0x"
234
+ args: "0x00"
169
235
  };
170
236
  };
171
237
 
172
238
  // src/caveatBuilder/argsEqualityCheckBuilder.ts
239
+ import { createArgsEqualityCheckTerms } from "@metamask/delegation-core";
173
240
  import { isHex as isHex2 } from "viem";
174
241
  var argsEqualityCheck = "argsEqualityCheck";
175
242
  var argsEqualityCheckBuilder = (environment, config) => {
@@ -185,13 +252,13 @@ var argsEqualityCheckBuilder = (environment, config) => {
185
252
  }
186
253
  return {
187
254
  enforcer: ArgsEqualityCheckEnforcer,
188
- terms: args,
189
- args: "0x"
255
+ terms: createArgsEqualityCheckTerms({ args }),
256
+ args: "0x00"
190
257
  };
191
258
  };
192
259
 
193
260
  // src/caveatBuilder/blockNumberBuilder.ts
194
- import { concat as concat3, toHex } from "viem";
261
+ import { createBlockNumberTerms } from "@metamask/delegation-core";
195
262
  var blockNumber = "blockNumber";
196
263
  var blockNumberBuilder = (environment, config) => {
197
264
  const { afterThreshold, beforeThreshold } = config;
@@ -205,14 +272,7 @@ var blockNumberBuilder = (environment, config) => {
205
272
  "Invalid thresholds: afterThreshold must be less than beforeThreshold if both are specified"
206
273
  );
207
274
  }
208
- const terms = concat3([
209
- toHex(afterThreshold, {
210
- size: 16
211
- }),
212
- toHex(beforeThreshold, {
213
- size: 16
214
- })
215
- ]);
275
+ const terms = createBlockNumberTerms({ afterThreshold, beforeThreshold });
216
276
  const {
217
277
  caveatEnforcers: { BlockNumberEnforcer }
218
278
  } = environment;
@@ -222,12 +282,13 @@ var blockNumberBuilder = (environment, config) => {
222
282
  return {
223
283
  enforcer: BlockNumberEnforcer,
224
284
  terms,
225
- args: "0x"
285
+ args: "0x00"
226
286
  };
227
287
  };
228
288
 
229
289
  // src/caveatBuilder/deployedBuilder.ts
230
- import { concat as concat4, isAddress as isAddress2, isHex as isHex3, pad } from "viem";
290
+ import { createDeployedTerms } from "@metamask/delegation-core";
291
+ import { isAddress as isAddress2, isHex as isHex3 } from "viem";
231
292
  var deployed = "deployed";
232
293
  var deployedBuilder = (environment, config) => {
233
294
  const { contractAddress, salt, bytecode } = config;
@@ -242,7 +303,7 @@ var deployedBuilder = (environment, config) => {
242
303
  if (!isHex3(bytecode)) {
243
304
  throw new Error("Invalid bytecode: must be a valid hexadecimal string");
244
305
  }
245
- const terms = concat4([contractAddress, pad(salt, { size: 32 }), bytecode]);
306
+ const terms = createDeployedTerms({ contractAddress, salt, bytecode });
246
307
  const {
247
308
  caveatEnforcers: { DeployedEnforcer }
248
309
  } = environment;
@@ -252,12 +313,13 @@ var deployedBuilder = (environment, config) => {
252
313
  return {
253
314
  enforcer: DeployedEnforcer,
254
315
  terms,
255
- args: "0x"
316
+ args: "0x00"
256
317
  };
257
318
  };
258
319
 
259
320
  // src/caveatBuilder/erc1155BalanceChangeBuilder.ts
260
- import { isAddress as isAddress3, encodePacked } from "viem";
321
+ import { createERC1155BalanceChangeTerms } from "@metamask/delegation-core";
322
+ import { isAddress as isAddress3 } from "viem";
261
323
  var erc1155BalanceChange = "erc1155BalanceChange";
262
324
  var erc1155BalanceChangeBuilder = (environment, config) => {
263
325
  const { tokenAddress, recipient, tokenId, balance, changeType } = config;
@@ -276,10 +338,13 @@ var erc1155BalanceChangeBuilder = (environment, config) => {
276
338
  if (changeType !== 0 /* Increase */ && changeType !== 1 /* Decrease */) {
277
339
  throw new Error("Invalid changeType: must be either Increase or Decrease");
278
340
  }
279
- const terms = encodePacked(
280
- ["uint8", "address", "address", "uint256", "uint256"],
281
- [changeType, tokenAddress, recipient, tokenId, balance]
282
- );
341
+ const terms = createERC1155BalanceChangeTerms({
342
+ tokenAddress,
343
+ recipient,
344
+ tokenId,
345
+ balance,
346
+ changeType
347
+ });
283
348
  const {
284
349
  caveatEnforcers: { ERC1155BalanceChangeEnforcer }
285
350
  } = environment;
@@ -289,12 +354,13 @@ var erc1155BalanceChangeBuilder = (environment, config) => {
289
354
  return {
290
355
  enforcer: ERC1155BalanceChangeEnforcer,
291
356
  terms,
292
- args: "0x"
357
+ args: "0x00"
293
358
  };
294
359
  };
295
360
 
296
361
  // src/caveatBuilder/erc20BalanceChangeBuilder.ts
297
- import { isAddress as isAddress4, encodePacked as encodePacked2 } from "viem";
362
+ import { createERC20BalanceChangeTerms } from "@metamask/delegation-core";
363
+ import { isAddress as isAddress4 } from "viem";
298
364
  var erc20BalanceChange = "erc20BalanceChange";
299
365
  var erc20BalanceChangeBuilder = (environment, config) => {
300
366
  const { tokenAddress, recipient, balance, changeType } = config;
@@ -307,10 +373,12 @@ var erc20BalanceChangeBuilder = (environment, config) => {
307
373
  if (changeType !== 0 /* Increase */ && changeType !== 1 /* Decrease */) {
308
374
  throw new Error("Invalid changeType: must be either Increase or Decrease");
309
375
  }
310
- const terms = encodePacked2(
311
- ["uint8", "address", "address", "uint256"],
312
- [changeType, tokenAddress, recipient, balance]
313
- );
376
+ const terms = createERC20BalanceChangeTerms({
377
+ tokenAddress,
378
+ recipient,
379
+ balance,
380
+ changeType
381
+ });
314
382
  const {
315
383
  caveatEnforcers: { ERC20BalanceChangeEnforcer }
316
384
  } = environment;
@@ -320,7 +388,7 @@ var erc20BalanceChangeBuilder = (environment, config) => {
320
388
  return {
321
389
  enforcer: ERC20BalanceChangeEnforcer,
322
390
  terms,
323
- args: "0x"
391
+ args: "0x00"
324
392
  };
325
393
  };
326
394
 
@@ -344,7 +412,7 @@ var erc20PeriodTransferBuilder = (environment, config) => {
344
412
  return {
345
413
  enforcer: ERC20PeriodTransferEnforcer,
346
414
  terms,
347
- args: "0x"
415
+ args: "0x00"
348
416
  };
349
417
  };
350
418
 
@@ -369,12 +437,13 @@ var erc20StreamingBuilder = (environment, config) => {
369
437
  return {
370
438
  enforcer: ERC20StreamingEnforcer,
371
439
  terms,
372
- args: "0x"
440
+ args: "0x00"
373
441
  };
374
442
  };
375
443
 
376
444
  // src/caveatBuilder/erc20TransferAmountBuilder.ts
377
- import { concat as concat5, isAddress as isAddress5, toHex as toHex2 } from "viem";
445
+ import { createERC20TransferAmountTerms } from "@metamask/delegation-core";
446
+ import { isAddress as isAddress5 } from "viem";
378
447
  var erc20TransferAmount = "erc20TransferAmount";
379
448
  var erc20TransferAmountBuilder = (environment, config) => {
380
449
  const { tokenAddress, maxAmount } = config;
@@ -384,7 +453,7 @@ var erc20TransferAmountBuilder = (environment, config) => {
384
453
  if (maxAmount <= 0n) {
385
454
  throw new Error("Invalid maxAmount: must be a positive number");
386
455
  }
387
- const terms = concat5([tokenAddress, toHex2(maxAmount, { size: 32 })]);
456
+ const terms = createERC20TransferAmountTerms({ tokenAddress, maxAmount });
388
457
  const {
389
458
  caveatEnforcers: { ERC20TransferAmountEnforcer }
390
459
  } = environment;
@@ -394,12 +463,13 @@ var erc20TransferAmountBuilder = (environment, config) => {
394
463
  return {
395
464
  enforcer: ERC20TransferAmountEnforcer,
396
465
  terms,
397
- args: "0x"
466
+ args: "0x00"
398
467
  };
399
468
  };
400
469
 
401
470
  // src/caveatBuilder/erc721BalanceChangeBuilder.ts
402
- import { isAddress as isAddress6, encodePacked as encodePacked3 } from "viem";
471
+ import { createERC721BalanceChangeTerms } from "@metamask/delegation-core";
472
+ import { isAddress as isAddress6 } from "viem";
403
473
  var erc721BalanceChange = "erc721BalanceChange";
404
474
  var erc721BalanceChangeBuilder = (environment, config) => {
405
475
  const { tokenAddress, recipient, amount, changeType } = config;
@@ -415,10 +485,12 @@ var erc721BalanceChangeBuilder = (environment, config) => {
415
485
  if (changeType !== 0 /* Increase */ && changeType !== 1 /* Decrease */) {
416
486
  throw new Error("Invalid changeType: must be either Increase or Decrease");
417
487
  }
418
- const terms = encodePacked3(
419
- ["uint8", "address", "address", "uint256"],
420
- [changeType, tokenAddress, recipient, amount]
421
- );
488
+ const terms = createERC721BalanceChangeTerms({
489
+ tokenAddress,
490
+ recipient,
491
+ amount,
492
+ changeType
493
+ });
422
494
  const {
423
495
  caveatEnforcers: { ERC721BalanceChangeEnforcer }
424
496
  } = environment;
@@ -428,12 +500,13 @@ var erc721BalanceChangeBuilder = (environment, config) => {
428
500
  return {
429
501
  enforcer: ERC721BalanceChangeEnforcer,
430
502
  terms,
431
- args: "0x"
503
+ args: "0x00"
432
504
  };
433
505
  };
434
506
 
435
507
  // src/caveatBuilder/erc721TransferBuilder.ts
436
- import { isAddress as isAddress7, toHex as toHex3, concat as concat6 } from "viem";
508
+ import { createERC721TransferTerms } from "@metamask/delegation-core";
509
+ import { isAddress as isAddress7 } from "viem";
437
510
  var erc721Transfer = "erc721Transfer";
438
511
  var erc721TransferBuilder = (environment, config) => {
439
512
  const { tokenAddress, tokenId } = config;
@@ -443,7 +516,7 @@ var erc721TransferBuilder = (environment, config) => {
443
516
  if (tokenId < 0n) {
444
517
  throw new Error("Invalid tokenId: must be a non-negative number");
445
518
  }
446
- const terms = concat6([tokenAddress, toHex3(tokenId, { size: 32 })]);
519
+ const terms = createERC721TransferTerms({ tokenAddress, tokenId });
447
520
  const {
448
521
  caveatEnforcers: { ERC721TransferEnforcer }
449
522
  } = environment;
@@ -453,12 +526,13 @@ var erc721TransferBuilder = (environment, config) => {
453
526
  return {
454
527
  enforcer: ERC721TransferEnforcer,
455
528
  terms,
456
- args: "0x"
529
+ args: "0x00"
457
530
  };
458
531
  };
459
532
 
460
533
  // src/caveatBuilder/exactCalldataBatchBuilder.ts
461
- import { encodeAbiParameters, isAddress as isAddress8 } from "viem";
534
+ import { createExactCalldataBatchTerms } from "@metamask/delegation-core";
535
+ import { isAddress as isAddress8 } from "viem";
462
536
  var exactCalldataBatch = "exactCalldataBatch";
463
537
  var exactCalldataBatchBuilder = (environment, config) => {
464
538
  const { executions } = config;
@@ -478,19 +552,7 @@ var exactCalldataBatchBuilder = (environment, config) => {
478
552
  );
479
553
  }
480
554
  }
481
- const terms = encodeAbiParameters(
482
- [
483
- {
484
- type: "tuple[]",
485
- components: [
486
- { type: "address", name: "target" },
487
- { type: "uint256", name: "value" },
488
- { type: "bytes", name: "callData" }
489
- ]
490
- }
491
- ],
492
- [executions]
493
- );
555
+ const terms = createExactCalldataBatchTerms({ executions });
494
556
  const {
495
557
  caveatEnforcers: { ExactCalldataBatchEnforcer }
496
558
  } = environment;
@@ -500,7 +562,7 @@ var exactCalldataBatchBuilder = (environment, config) => {
500
562
  return {
501
563
  enforcer: ExactCalldataBatchEnforcer,
502
564
  terms,
503
- args: "0x"
565
+ args: "0x00"
504
566
  };
505
567
  };
506
568
 
@@ -519,12 +581,13 @@ var exactCalldataBuilder = (environment, config) => {
519
581
  return {
520
582
  enforcer: ExactCalldataEnforcer,
521
583
  terms,
522
- args: "0x"
584
+ args: "0x00"
523
585
  };
524
586
  };
525
587
 
526
588
  // src/caveatBuilder/exactExecutionBatchBuilder.ts
527
- import { encodeAbiParameters as encodeAbiParameters2, isAddress as isAddress9 } from "viem";
589
+ import { createExactExecutionBatchTerms } from "@metamask/delegation-core";
590
+ import { isAddress as isAddress9 } from "viem";
528
591
  var exactExecutionBatch = "exactExecutionBatch";
529
592
  var exactExecutionBatchBuilder = (environment, config) => {
530
593
  const { executions } = config;
@@ -544,19 +607,7 @@ var exactExecutionBatchBuilder = (environment, config) => {
544
607
  );
545
608
  }
546
609
  }
547
- const terms = encodeAbiParameters2(
548
- [
549
- {
550
- type: "tuple[]",
551
- components: [
552
- { type: "address", name: "target" },
553
- { type: "uint256", name: "value" },
554
- { type: "bytes", name: "callData" }
555
- ]
556
- }
557
- ],
558
- [executions]
559
- );
610
+ const terms = createExactExecutionBatchTerms({ executions });
560
611
  const {
561
612
  caveatEnforcers: { ExactExecutionBatchEnforcer }
562
613
  } = environment;
@@ -566,12 +617,13 @@ var exactExecutionBatchBuilder = (environment, config) => {
566
617
  return {
567
618
  enforcer: ExactExecutionBatchEnforcer,
568
619
  terms,
569
- args: "0x"
620
+ args: "0x00"
570
621
  };
571
622
  };
572
623
 
573
624
  // src/caveatBuilder/exactExecutionBuilder.ts
574
- import { isAddress as isAddress10, concat as concat7, toHex as toHex4 } from "viem";
625
+ import { createExactExecutionTerms } from "@metamask/delegation-core";
626
+ import { isAddress as isAddress10 } from "viem";
575
627
  var exactExecution = "exactExecution";
576
628
  var exactExecutionBuilder = (environment, config) => {
577
629
  const { execution } = config;
@@ -584,11 +636,7 @@ var exactExecutionBuilder = (environment, config) => {
584
636
  if (!execution.callData.startsWith("0x")) {
585
637
  throw new Error("Invalid calldata: must be a hex string starting with 0x");
586
638
  }
587
- const terms = concat7([
588
- execution.target,
589
- toHex4(execution.value, { size: 32 }),
590
- execution.callData
591
- ]);
639
+ const terms = createExactExecutionTerms({ execution });
592
640
  const {
593
641
  caveatEnforcers: { ExactExecutionEnforcer }
594
642
  } = environment;
@@ -598,12 +646,13 @@ var exactExecutionBuilder = (environment, config) => {
598
646
  return {
599
647
  enforcer: ExactExecutionEnforcer,
600
648
  terms,
601
- args: "0x"
649
+ args: "0x00"
602
650
  };
603
651
  };
604
652
 
605
653
  // src/caveatBuilder/idBuilder.ts
606
- import { maxUint256, toHex as toHex5 } from "viem";
654
+ import { createIdTerms } from "@metamask/delegation-core";
655
+ import { maxUint256 } from "viem";
607
656
  var id = "id";
608
657
  var idBuilder = (environment, config) => {
609
658
  const { id: idValue } = config;
@@ -624,7 +673,7 @@ var idBuilder = (environment, config) => {
624
673
  if (idBigInt > maxUint256) {
625
674
  throw new Error("Invalid id: must be less than 2^256");
626
675
  }
627
- const terms = toHex5(idBigInt, { size: 32 });
676
+ const terms = createIdTerms({ id: idBigInt });
628
677
  const {
629
678
  caveatEnforcers: { IdEnforcer }
630
679
  } = environment;
@@ -634,12 +683,12 @@ var idBuilder = (environment, config) => {
634
683
  return {
635
684
  enforcer: IdEnforcer,
636
685
  terms,
637
- args: "0x"
686
+ args: "0x00"
638
687
  };
639
688
  };
640
689
 
641
690
  // src/caveatBuilder/limitedCallsBuilder.ts
642
- import { toHex as toHex6, pad as pad2 } from "viem";
691
+ import { createLimitedCallsTerms } from "@metamask/delegation-core";
643
692
  var limitedCalls = "limitedCalls";
644
693
  var limitedCallsBuilder = (environment, config) => {
645
694
  const { limit } = config;
@@ -649,7 +698,7 @@ var limitedCallsBuilder = (environment, config) => {
649
698
  if (limit <= 0) {
650
699
  throw new Error("Invalid limit: must be a positive integer");
651
700
  }
652
- const terms = pad2(toHex6(limit), { size: 32 });
701
+ const terms = createLimitedCallsTerms({ limit });
653
702
  const {
654
703
  caveatEnforcers: { LimitedCallsEnforcer }
655
704
  } = environment;
@@ -659,12 +708,13 @@ var limitedCallsBuilder = (environment, config) => {
659
708
  return {
660
709
  enforcer: LimitedCallsEnforcer,
661
710
  terms,
662
- args: "0x"
711
+ args: "0x00"
663
712
  };
664
713
  };
665
714
 
666
715
  // src/caveatBuilder/multiTokenPeriodBuilder.ts
667
- import { concat as concat8, isAddress as isAddress11, pad as pad3, toHex as toHex7 } from "viem";
716
+ import { createMultiTokenPeriodTerms } from "@metamask/delegation-core";
717
+ import { isAddress as isAddress11 } from "viem";
668
718
  var multiTokenPeriod = "multiTokenPeriod";
669
719
  var multiTokenPeriodBuilder = (environment, config) => {
670
720
  if (!config?.tokenConfigs || config.tokenConfigs.length === 0) {
@@ -683,17 +733,9 @@ var multiTokenPeriodBuilder = (environment, config) => {
683
733
  throw new Error("Invalid period duration: must be greater than 0");
684
734
  }
685
735
  });
686
- const termsArray = config.tokenConfigs.reduce(
687
- (acc, { token, periodAmount, periodDuration, startDate }) => [
688
- ...acc,
689
- pad3(token, { size: 20 }),
690
- toHex7(periodAmount, { size: 32 }),
691
- toHex7(periodDuration, { size: 32 }),
692
- toHex7(startDate, { size: 32 })
693
- ],
694
- []
695
- );
696
- const terms = concat8(termsArray);
736
+ const terms = createMultiTokenPeriodTerms({
737
+ tokenConfigs: config.tokenConfigs
738
+ });
697
739
  const {
698
740
  caveatEnforcers: { MultiTokenPeriodEnforcer }
699
741
  } = environment;
@@ -703,12 +745,13 @@ var multiTokenPeriodBuilder = (environment, config) => {
703
745
  return {
704
746
  enforcer: MultiTokenPeriodEnforcer,
705
747
  terms,
706
- args: "0x"
748
+ args: "0x00"
707
749
  };
708
750
  };
709
751
 
710
752
  // src/caveatBuilder/nativeBalanceChangeBuilder.ts
711
- import { isAddress as isAddress12, encodePacked as encodePacked4 } from "viem";
753
+ import { createNativeBalanceChangeTerms } from "@metamask/delegation-core";
754
+ import { isAddress as isAddress12 } from "viem";
712
755
  var nativeBalanceChange = "nativeBalanceChange";
713
756
  var nativeBalanceChangeBuilder = (environment, config) => {
714
757
  const { recipient, balance, changeType } = config;
@@ -721,10 +764,11 @@ var nativeBalanceChangeBuilder = (environment, config) => {
721
764
  if (changeType !== 0 /* Increase */ && changeType !== 1 /* Decrease */) {
722
765
  throw new Error("Invalid changeType: must be either Increase or Decrease");
723
766
  }
724
- const terms = encodePacked4(
725
- ["uint8", "address", "uint256"],
726
- [changeType, recipient, balance]
727
- );
767
+ const terms = createNativeBalanceChangeTerms({
768
+ recipient,
769
+ balance,
770
+ changeType
771
+ });
728
772
  const {
729
773
  caveatEnforcers: { NativeBalanceChangeEnforcer }
730
774
  } = environment;
@@ -734,12 +778,13 @@ var nativeBalanceChangeBuilder = (environment, config) => {
734
778
  return {
735
779
  enforcer: NativeBalanceChangeEnforcer,
736
780
  terms,
737
- args: "0x"
781
+ args: "0x00"
738
782
  };
739
783
  };
740
784
 
741
785
  // src/caveatBuilder/nativeTokenPaymentBuilder.ts
742
- import { encodePacked as encodePacked5, isAddress as isAddress13 } from "viem";
786
+ import { createNativeTokenPaymentTerms } from "@metamask/delegation-core";
787
+ import { isAddress as isAddress13 } from "viem";
743
788
  var nativeTokenPayment = "nativeTokenPayment";
744
789
  var nativeTokenPaymentBuilder = (environment, config) => {
745
790
  const { recipient, amount } = config;
@@ -749,7 +794,7 @@ var nativeTokenPaymentBuilder = (environment, config) => {
749
794
  if (!isAddress13(recipient)) {
750
795
  throw new Error("Invalid recipient: must be a valid address");
751
796
  }
752
- const terms = encodePacked5(["address", "uint256"], [recipient, amount]);
797
+ const terms = createNativeTokenPaymentTerms({ recipient, amount });
753
798
  const {
754
799
  caveatEnforcers: { NativeTokenPaymentEnforcer }
755
800
  } = environment;
@@ -759,7 +804,7 @@ var nativeTokenPaymentBuilder = (environment, config) => {
759
804
  return {
760
805
  enforcer: NativeTokenPaymentEnforcer,
761
806
  terms,
762
- args: "0x"
807
+ args: "0x00"
763
808
  };
764
809
  };
765
810
 
@@ -784,7 +829,7 @@ var nativeTokenPeriodTransferBuilder = (environment, config) => {
784
829
  return {
785
830
  enforcer: NativeTokenPeriodTransferEnforcer,
786
831
  terms,
787
- args: "0x"
832
+ args: "0x00"
788
833
  };
789
834
  };
790
835
 
@@ -808,19 +853,19 @@ var nativeTokenStreamingBuilder = (environment, config) => {
808
853
  return {
809
854
  enforcer: NativeTokenStreamingEnforcer,
810
855
  terms,
811
- args: "0x"
856
+ args: "0x00"
812
857
  };
813
858
  };
814
859
 
815
860
  // src/caveatBuilder/nativeTokenTransferAmountBuilder.ts
816
- import { encodePacked as encodePacked6 } from "viem";
861
+ import { createNativeTokenTransferAmountTerms } from "@metamask/delegation-core";
817
862
  var nativeTokenTransferAmount = "nativeTokenTransferAmount";
818
863
  var nativeTokenTransferAmountBuilder = (environment, config) => {
819
864
  const { maxAmount } = config;
820
865
  if (maxAmount < 0n) {
821
866
  throw new Error("Invalid maxAmount: must be zero or positive");
822
867
  }
823
- const terms = encodePacked6(["uint256"], [maxAmount]);
868
+ const terms = createNativeTokenTransferAmountTerms({ maxAmount });
824
869
  const {
825
870
  caveatEnforcers: { NativeTokenTransferAmountEnforcer }
826
871
  } = environment;
@@ -832,7 +877,7 @@ var nativeTokenTransferAmountBuilder = (environment, config) => {
832
877
  return {
833
878
  enforcer: NativeTokenTransferAmountEnforcer,
834
879
  terms,
835
- args: "0x"
880
+ args: "0x00"
836
881
  };
837
882
  };
838
883
 
@@ -851,11 +896,12 @@ var nonceBuilder = (environment, config) => {
851
896
  return {
852
897
  enforcer: NonceEnforcer,
853
898
  terms,
854
- args: "0x"
899
+ args: "0x00"
855
900
  };
856
901
  };
857
902
 
858
903
  // src/caveatBuilder/ownershipTransferBuilder.ts
904
+ import { createOwnershipTransferTerms } from "@metamask/delegation-core";
859
905
  import { isAddress as isAddress14 } from "viem";
860
906
  var ownershipTransfer = "ownershipTransfer";
861
907
  var ownershipTransferBuilder = (environment, config) => {
@@ -863,7 +909,7 @@ var ownershipTransferBuilder = (environment, config) => {
863
909
  if (!isAddress14(contractAddress, { strict: false })) {
864
910
  throw new Error("Invalid contractAddress: must be a valid address");
865
911
  }
866
- const terms = contractAddress;
912
+ const terms = createOwnershipTransferTerms({ contractAddress });
867
913
  const {
868
914
  caveatEnforcers: { OwnershipTransferEnforcer }
869
915
  } = environment;
@@ -873,12 +919,13 @@ var ownershipTransferBuilder = (environment, config) => {
873
919
  return {
874
920
  enforcer: OwnershipTransferEnforcer,
875
921
  terms,
876
- args: "0x"
922
+ args: "0x00"
877
923
  };
878
924
  };
879
925
 
880
926
  // src/caveatBuilder/redeemerBuilder.ts
881
- import { concat as concat9, isAddress as isAddress15 } from "viem";
927
+ import { createRedeemerTerms } from "@metamask/delegation-core";
928
+ import { isAddress as isAddress15 } from "viem";
882
929
  var redeemer = "redeemer";
883
930
  var redeemerBuilder = (environment, config) => {
884
931
  const { redeemers } = config;
@@ -892,7 +939,7 @@ var redeemerBuilder = (environment, config) => {
892
939
  throw new Error("Invalid redeemers: must be a valid address");
893
940
  }
894
941
  }
895
- const terms = concat9(redeemers);
942
+ const terms = createRedeemerTerms({ redeemers });
896
943
  const {
897
944
  caveatEnforcers: { RedeemerEnforcer }
898
945
  } = environment;
@@ -902,12 +949,13 @@ var redeemerBuilder = (environment, config) => {
902
949
  return {
903
950
  enforcer: RedeemerEnforcer,
904
951
  terms,
905
- args: "0x"
952
+ args: "0x00"
906
953
  };
907
954
  };
908
955
 
909
956
  // src/caveatBuilder/specificActionERC20TransferBatchBuilder.ts
910
- import { concat as concat10, isAddress as isAddress16, toHex as toHex8 } from "viem";
957
+ import { createSpecificActionERC20TransferBatchTerms } from "@metamask/delegation-core";
958
+ import { isAddress as isAddress16 } from "viem";
911
959
  var specificActionERC20TransferBatch = "specificActionERC20TransferBatch";
912
960
  var specificActionERC20TransferBatchBuilder = (environment, config) => {
913
961
  const { tokenAddress, recipient, amount, target, calldata } = config;
@@ -923,13 +971,13 @@ var specificActionERC20TransferBatchBuilder = (environment, config) => {
923
971
  if (amount <= 0n) {
924
972
  throw new Error("Invalid amount: must be a positive number");
925
973
  }
926
- const terms = concat10([
974
+ const terms = createSpecificActionERC20TransferBatchTerms({
927
975
  tokenAddress,
928
976
  recipient,
929
- toHex8(amount, { size: 32 }),
977
+ amount,
930
978
  target,
931
979
  calldata
932
- ]);
980
+ });
933
981
  const {
934
982
  caveatEnforcers: { SpecificActionERC20TransferBatchEnforcer }
935
983
  } = environment;
@@ -941,7 +989,7 @@ var specificActionERC20TransferBatchBuilder = (environment, config) => {
941
989
  return {
942
990
  enforcer: SpecificActionERC20TransferBatchEnforcer,
943
991
  terms,
944
- args: "0x"
992
+ args: "0x00"
945
993
  };
946
994
  };
947
995
 
@@ -963,7 +1011,7 @@ var timestampBuilder = (environment, config) => {
963
1011
  return {
964
1012
  enforcer: TimestampEnforcer,
965
1013
  terms,
966
- args: "0x"
1014
+ args: "0x00"
967
1015
  };
968
1016
  };
969
1017
 
@@ -982,7 +1030,7 @@ var valueLteBuilder = (environment, config) => {
982
1030
  return {
983
1031
  enforcer: ValueLteEnforcer,
984
1032
  terms,
985
- args: "0x"
1033
+ args: "0x00"
986
1034
  };
987
1035
  };
988
1036
 
@@ -1031,7 +1079,7 @@ function createErc20TransferCaveatBuilder(environment, config) {
1031
1079
  }
1032
1080
 
1033
1081
  // src/utils.ts
1034
- import { isHex as isHex4, toHex as toHex9 } from "viem";
1082
+ import { isHex as isHex4, toHex } from "viem";
1035
1083
  var hasProperties = (object, properties) => {
1036
1084
  return properties.every(
1037
1085
  (prop) => prop in object && object[prop] !== void 0
@@ -1057,7 +1105,7 @@ function toHexOrThrow(value, parameterName) {
1057
1105
  }
1058
1106
  return value;
1059
1107
  }
1060
- return toHex9(value);
1108
+ return toHex(value);
1061
1109
  }
1062
1110
 
1063
1111
  // src/caveatBuilder/scope/erc721Scope.ts
@@ -1219,28 +1267,56 @@ function createOwnershipCaveatBuilder(environment, config) {
1219
1267
  }
1220
1268
 
1221
1269
  // src/caveatBuilder/scope/index.ts
1270
+ var normalizeScopeConfig = (config) => {
1271
+ return {
1272
+ ...config,
1273
+ type: config.type
1274
+ };
1275
+ };
1222
1276
  var createCaveatBuilderFromScope = (environment, scopeConfig) => {
1223
- switch (scopeConfig.type) {
1224
- case erc20TransferAmount:
1225
- return createErc20TransferCaveatBuilder(environment, scopeConfig);
1226
- case erc20Streaming:
1227
- return createErc20StreamingCaveatBuilder(environment, scopeConfig);
1228
- case erc20PeriodTransfer:
1229
- return createErc20PeriodicCaveatBuilder(environment, scopeConfig);
1230
- case nativeTokenTransferAmount:
1231
- return createNativeTokenTransferCaveatBuilder(environment, scopeConfig);
1232
- case nativeTokenStreaming:
1233
- return createNativeTokenStreamingCaveatBuilder(environment, scopeConfig);
1234
- case nativeTokenPeriodTransfer:
1235
- return createNativeTokenPeriodicCaveatBuilder(environment, scopeConfig);
1236
- case erc721Transfer:
1237
- return createErc721CaveatBuilder(environment, scopeConfig);
1238
- case ownershipTransfer:
1239
- return createOwnershipCaveatBuilder(environment, scopeConfig);
1240
- case "functionCall":
1241
- return createFunctionCallCaveatBuilder(environment, scopeConfig);
1277
+ const normalizedScopeConfig = normalizeScopeConfig(scopeConfig);
1278
+ switch (normalizedScopeConfig.type) {
1279
+ case "erc20TransferAmount" /* Erc20TransferAmount */:
1280
+ return createErc20TransferCaveatBuilder(
1281
+ environment,
1282
+ normalizedScopeConfig
1283
+ );
1284
+ case "erc20Streaming" /* Erc20Streaming */:
1285
+ return createErc20StreamingCaveatBuilder(
1286
+ environment,
1287
+ normalizedScopeConfig
1288
+ );
1289
+ case "erc20PeriodTransfer" /* Erc20PeriodTransfer */:
1290
+ return createErc20PeriodicCaveatBuilder(
1291
+ environment,
1292
+ normalizedScopeConfig
1293
+ );
1294
+ case "nativeTokenTransferAmount" /* NativeTokenTransferAmount */:
1295
+ return createNativeTokenTransferCaveatBuilder(
1296
+ environment,
1297
+ normalizedScopeConfig
1298
+ );
1299
+ case "nativeTokenStreaming" /* NativeTokenStreaming */:
1300
+ return createNativeTokenStreamingCaveatBuilder(
1301
+ environment,
1302
+ normalizedScopeConfig
1303
+ );
1304
+ case "nativeTokenPeriodTransfer" /* NativeTokenPeriodTransfer */:
1305
+ return createNativeTokenPeriodicCaveatBuilder(
1306
+ environment,
1307
+ normalizedScopeConfig
1308
+ );
1309
+ case "erc721Transfer" /* Erc721Transfer */:
1310
+ return createErc721CaveatBuilder(environment, normalizedScopeConfig);
1311
+ case "ownershipTransfer" /* OwnershipTransfer */:
1312
+ return createOwnershipCaveatBuilder(environment, normalizedScopeConfig);
1313
+ case "functionCall" /* FunctionCall */:
1314
+ return createFunctionCallCaveatBuilder(
1315
+ environment,
1316
+ normalizedScopeConfig
1317
+ );
1242
1318
  default:
1243
- const exhaustivenessCheck = scopeConfig;
1319
+ const exhaustivenessCheck = normalizedScopeConfig;
1244
1320
  throw new Error(
1245
1321
  `Invalid scope type: ${exhaustivenessCheck.type}`
1246
1322
  );
@@ -1279,11 +1355,10 @@ var resolveCaveats = ({
1279
1355
 
1280
1356
  // src/caveats.ts
1281
1357
  import {
1282
- encodePacked as encodePacked7,
1283
- encodeAbiParameters as encodeAbiParameters3,
1358
+ encodeAbiParameters,
1284
1359
  parseAbiParameters,
1285
1360
  keccak256,
1286
- toHex as toHex10
1361
+ toHex as toHex2
1287
1362
  } from "viem";
1288
1363
  var CAVEAT_ABI_TYPE_COMPONENTS = [
1289
1364
  { type: "address", name: "enforcer" },
@@ -1291,9 +1366,9 @@ var CAVEAT_ABI_TYPE_COMPONENTS = [
1291
1366
  { type: "bytes", name: "args" }
1292
1367
  ];
1293
1368
  var CAVEAT_TYPEHASH = keccak256(
1294
- toHex10("Caveat(address enforcer,bytes terms)")
1369
+ toHex2("Caveat(address enforcer,bytes terms)")
1295
1370
  );
1296
- var createCaveat = (enforcer, terms, args = "0x") => ({
1371
+ var createCaveat = (enforcer, terms, args = "0x00") => ({
1297
1372
  enforcer,
1298
1373
  terms,
1299
1374
  args
@@ -1303,13 +1378,15 @@ var createCaveat = (enforcer, terms, args = "0x") => ({
1303
1378
  import {
1304
1379
  encodeDelegations as encodeDelegationsCore,
1305
1380
  decodeDelegations as decodeDelegationsCore,
1306
- hashDelegation,
1381
+ encodeDelegation as encodeDelegationCore,
1382
+ decodeDelegation as decodeDelegationCore,
1383
+ hashDelegation as hashDelegationCore,
1307
1384
  ANY_BENEFICIARY,
1308
1385
  DELEGATION_TYPEHASH,
1309
1386
  CAVEAT_TYPEHASH as CAVEAT_TYPEHASH2,
1310
1387
  ROOT_AUTHORITY
1311
1388
  } from "@metamask/delegation-core";
1312
- import { hashMessage, toBytes, toHex as toHex11, getAddress } from "viem";
1389
+ import { toHex as toHex3, getAddress, isHex as isHex5 } from "viem";
1313
1390
  import { signTypedData } from "viem/accounts";
1314
1391
  var DELEGATION_ABI_TYPE_COMPONENTS = [
1315
1392
  { type: "address", name: "delegate" },
@@ -1338,25 +1415,38 @@ var toDelegationStruct = (delegation) => {
1338
1415
  var toDelegation = (delegationStruct) => {
1339
1416
  return {
1340
1417
  ...delegationStruct,
1341
- salt: toHex11(delegationStruct.salt)
1418
+ salt: toHex3(delegationStruct.salt)
1342
1419
  };
1343
1420
  };
1344
1421
  var encodeDelegations = (delegations) => {
1345
- const delegationStructs = delegations.map(toDelegationStruct);
1346
- return encodeDelegationsCore(delegationStructs);
1347
- };
1348
- var encodePermissionContexts = (delegations) => {
1349
- const encodedDelegations = delegations.map(
1350
- (delegationChain) => encodeDelegations(delegationChain)
1422
+ if (Array.isArray(delegations)) {
1423
+ const delegationStructs = delegations.map(toDelegationStruct);
1424
+ return encodeDelegationsCore(delegationStructs);
1425
+ }
1426
+ if (isHex5(delegations)) {
1427
+ return delegations;
1428
+ }
1429
+ throw new Error(
1430
+ "Invalid delegations - must be an array of delegations or a hex string"
1351
1431
  );
1352
- return encodedDelegations;
1353
1432
  };
1354
- var decodeDelegations = (encoded) => {
1355
- return decodeDelegationsCore(encoded).map(toDelegation);
1433
+ var encodeDelegation = (delegation) => {
1434
+ const delegationStruct = toDelegationStruct(delegation);
1435
+ return encodeDelegationCore(delegationStruct);
1436
+ };
1437
+ var decodeDelegations = (delegations) => {
1438
+ if (Array.isArray(delegations)) {
1439
+ return delegations;
1440
+ }
1441
+ if (isHex5(delegations)) {
1442
+ return decodeDelegationsCore(delegations).map(toDelegation);
1443
+ }
1444
+ throw new Error(
1445
+ "Invalid delegations - must be an array of delegations or a hex string"
1446
+ );
1356
1447
  };
1357
- var decodePermissionContexts = (encoded) => {
1358
- const delegationChains = encoded.map(decodeDelegations);
1359
- return delegationChains;
1448
+ var decodeDelegation = (encoded) => {
1449
+ return toDelegation(decodeDelegationCore(encoded));
1360
1450
  };
1361
1451
  var SIGNABLE_DELEGATION_TYPED_DATA = {
1362
1452
  Caveat: [
@@ -1375,9 +1465,13 @@ var DELEGATION_ARRAY_ABI_TYPE = {
1375
1465
  type: "tuple[]",
1376
1466
  components: DELEGATION_ABI_TYPE_COMPONENTS
1377
1467
  };
1378
- var getDelegationHashOffchain = (input) => {
1468
+ var DELEGATION_ABI_TYPE = {
1469
+ type: "tuple",
1470
+ components: DELEGATION_ABI_TYPE_COMPONENTS
1471
+ };
1472
+ var hashDelegation = (input) => {
1379
1473
  const delegationStruct = toDelegationStruct(input);
1380
- return hashDelegation(delegationStruct);
1474
+ return hashDelegationCore(delegationStruct);
1381
1475
  };
1382
1476
  var resolveAuthority = (parentDelegation) => {
1383
1477
  if (!parentDelegation) {
@@ -1386,7 +1480,7 @@ var resolveAuthority = (parentDelegation) => {
1386
1480
  if (typeof parentDelegation === "string") {
1387
1481
  return parentDelegation;
1388
1482
  }
1389
- return getDelegationHashOffchain(parentDelegation);
1483
+ return hashDelegation(parentDelegation);
1390
1484
  };
1391
1485
  var createDelegation = (options) => {
1392
1486
  return {
@@ -1394,7 +1488,7 @@ var createDelegation = (options) => {
1394
1488
  delegator: options.from,
1395
1489
  authority: resolveAuthority(options.parentDelegation),
1396
1490
  caveats: resolveCaveats(options),
1397
- salt: options.salt ?? "0x",
1491
+ salt: options.salt ?? "0x00",
1398
1492
  signature: "0x"
1399
1493
  };
1400
1494
  };
@@ -1404,7 +1498,7 @@ var createOpenDelegation = (options) => {
1404
1498
  delegator: options.from,
1405
1499
  authority: resolveAuthority(options.parentDelegation),
1406
1500
  caveats: resolveCaveats(options),
1407
- salt: options.salt ?? "0x",
1501
+ salt: options.salt ?? "0x00",
1408
1502
  signature: "0x"
1409
1503
  };
1410
1504
  };
@@ -1462,6 +1556,10 @@ var signDelegation = async ({
1462
1556
 
1463
1557
  export {
1464
1558
  __export,
1559
+ Implementation,
1560
+ TransferWindow,
1561
+ ScopeType,
1562
+ CaveatType,
1465
1563
  CaveatBuilder,
1466
1564
  BalanceChangeType,
1467
1565
  createCaveatBuilder,
@@ -1475,15 +1573,16 @@ export {
1475
1573
  toDelegationStruct,
1476
1574
  toDelegation,
1477
1575
  encodeDelegations,
1478
- encodePermissionContexts,
1576
+ encodeDelegation,
1479
1577
  decodeDelegations,
1480
- decodePermissionContexts,
1578
+ decodeDelegation,
1481
1579
  SIGNABLE_DELEGATION_TYPED_DATA,
1482
1580
  DELEGATION_ARRAY_ABI_TYPE,
1483
- getDelegationHashOffchain,
1581
+ DELEGATION_ABI_TYPE,
1582
+ hashDelegation,
1484
1583
  createDelegation,
1485
1584
  createOpenDelegation,
1486
1585
  prepareSignDelegationTypedData,
1487
1586
  signDelegation
1488
1587
  };
1489
- //# sourceMappingURL=chunk-TEH426Y4.mjs.map
1588
+ //# sourceMappingURL=chunk-C5ZEEH2Z.mjs.map