@metamask/smart-accounts-kit 1.4.0 → 1.6.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.
Files changed (90) hide show
  1. package/CHANGELOG.md +57 -24
  2. package/dist/actions/index.cjs +9 -6
  3. package/dist/actions/index.cjs.map +1 -1
  4. package/dist/actions/index.d.cts +5 -3
  5. package/dist/actions/index.d.ts +5 -3
  6. package/dist/actions/index.mjs +8 -5
  7. package/dist/{caveats-BhjGBVHX.d.ts → caveats-B2OssjV4.d.ts} +1 -2
  8. package/dist/{caveats-CeHBbmt_.d.cts → caveats-gqMBZKkI.d.cts} +1 -2
  9. package/dist/{chunk-SOFB2MXG.cjs → chunk-2OS36DVV.cjs} +8 -1
  10. package/dist/chunk-2OS36DVV.cjs.map +1 -0
  11. package/dist/{chunk-6CEOFJY5.cjs → chunk-2ZOWIAP3.cjs} +266 -114
  12. package/dist/chunk-2ZOWIAP3.cjs.map +1 -0
  13. package/dist/{chunk-R2WT54GZ.mjs → chunk-AZYTTGON.mjs} +214 -62
  14. package/dist/chunk-AZYTTGON.mjs.map +1 -0
  15. package/dist/{chunk-MVBU3LRV.cjs → chunk-DCI2AN4N.cjs} +15 -17
  16. package/dist/chunk-DCI2AN4N.cjs.map +1 -0
  17. package/dist/{chunk-RR2AMG4A.cjs → chunk-EPU4O7FY.cjs} +158 -151
  18. package/dist/chunk-EPU4O7FY.cjs.map +1 -0
  19. package/dist/{chunk-QCULIK3O.mjs → chunk-GMGJRC3D.mjs} +8 -1
  20. package/dist/chunk-GMGJRC3D.mjs.map +1 -0
  21. package/dist/chunk-IMO6XNDJ.mjs +14 -0
  22. package/dist/chunk-IMO6XNDJ.mjs.map +1 -0
  23. package/dist/chunk-IQT6XFDT.cjs +14 -0
  24. package/dist/chunk-IQT6XFDT.cjs.map +1 -0
  25. package/dist/{chunk-SO5JAXGD.cjs → chunk-JKVSTPEC.cjs} +200 -18
  26. package/dist/chunk-JKVSTPEC.cjs.map +1 -0
  27. package/dist/{chunk-DVJX76J3.mjs → chunk-K7GTZGKJ.mjs} +2 -2
  28. package/dist/{chunk-HQHXGWNJ.mjs → chunk-L3EZCIY6.mjs} +67 -60
  29. package/dist/chunk-L3EZCIY6.mjs.map +1 -0
  30. package/dist/{chunk-XZ7UMCG3.cjs → chunk-PQPAEHJZ.cjs} +12 -12
  31. package/dist/{chunk-XZ7UMCG3.cjs.map → chunk-PQPAEHJZ.cjs.map} +1 -1
  32. package/dist/{chunk-EEIIVBNV.mjs → chunk-TNGQTVSY.mjs} +225 -53
  33. package/dist/chunk-TNGQTVSY.mjs.map +1 -0
  34. package/dist/{chunk-FG2CQGSE.mjs → chunk-UJQ3JN3U.mjs} +4 -6
  35. package/dist/{chunk-FG2CQGSE.mjs.map → chunk-UJQ3JN3U.mjs.map} +1 -1
  36. package/dist/{chunk-TMO23YRP.cjs → chunk-W6HPAK4M.cjs} +262 -90
  37. package/dist/chunk-W6HPAK4M.cjs.map +1 -0
  38. package/dist/{chunk-ZGBFPD4O.mjs → chunk-YVU66KSH.mjs} +188 -6
  39. package/dist/chunk-YVU66KSH.mjs.map +1 -0
  40. package/dist/contracts/index.cjs +5 -6
  41. package/dist/contracts/index.cjs.map +1 -1
  42. package/dist/contracts/index.d.cts +4 -3
  43. package/dist/contracts/index.d.ts +4 -3
  44. package/dist/contracts/index.mjs +4 -5
  45. package/dist/decodeRevertReason-CmmCpmZ_.d.cts +72 -0
  46. package/dist/decodeRevertReason-dOTpJx2h.d.ts +72 -0
  47. package/dist/experimental/index.cjs +364 -9
  48. package/dist/experimental/index.cjs.map +1 -1
  49. package/dist/experimental/index.d.cts +39 -3
  50. package/dist/experimental/index.d.ts +39 -3
  51. package/dist/experimental/index.mjs +357 -2
  52. package/dist/experimental/index.mjs.map +1 -1
  53. package/dist/index-B1Cmezvh.d.cts +61 -0
  54. package/dist/{index-DRKgDSZW.d.ts → index-BkgdU4LI.d.ts} +99 -92
  55. package/dist/{index-Cg-JakqA.d.ts → index-DUJmm8Wz.d.ts} +46 -5
  56. package/dist/{index-DzL9ccjU.d.cts → index-Dv4jPzhe.d.cts} +99 -92
  57. package/dist/index-LqiEgBjV.d.ts +61 -0
  58. package/dist/{index-BToRQKyJ.d.cts → index-X7Qn3JTg.d.cts} +46 -5
  59. package/dist/index.cjs +22 -24
  60. package/dist/index.cjs.map +1 -1
  61. package/dist/index.d.cts +8 -7
  62. package/dist/index.d.ts +8 -7
  63. package/dist/index.mjs +9 -11
  64. package/dist/index.mjs.map +1 -1
  65. package/dist/{delegation-CR99q1-n.d.ts → resolveCaveats-A9xC29l8.d.cts} +160 -111
  66. package/dist/{delegation-DoVULGYE.d.cts → resolveCaveats-A9xC29l8.d.ts} +160 -111
  67. package/dist/utils/index.cjs +13 -6
  68. package/dist/utils/index.cjs.map +1 -1
  69. package/dist/utils/index.d.cts +8 -4
  70. package/dist/utils/index.d.ts +8 -4
  71. package/dist/utils/index.mjs +16 -9
  72. package/package.json +7 -6
  73. package/dist/chunk-4QXIOE7F.mjs +0 -79
  74. package/dist/chunk-4QXIOE7F.mjs.map +0 -1
  75. package/dist/chunk-6CEOFJY5.cjs.map +0 -1
  76. package/dist/chunk-EEIIVBNV.mjs.map +0 -1
  77. package/dist/chunk-HQHXGWNJ.mjs.map +0 -1
  78. package/dist/chunk-MOHCTPYQ.cjs +0 -79
  79. package/dist/chunk-MOHCTPYQ.cjs.map +0 -1
  80. package/dist/chunk-MVBU3LRV.cjs.map +0 -1
  81. package/dist/chunk-QCULIK3O.mjs.map +0 -1
  82. package/dist/chunk-R2WT54GZ.mjs.map +0 -1
  83. package/dist/chunk-RR2AMG4A.cjs.map +0 -1
  84. package/dist/chunk-SO5JAXGD.cjs.map +0 -1
  85. package/dist/chunk-SOFB2MXG.cjs.map +0 -1
  86. package/dist/chunk-TMO23YRP.cjs.map +0 -1
  87. package/dist/chunk-ZGBFPD4O.mjs.map +0 -1
  88. package/dist/types-BWaH4KH1.d.cts +0 -155
  89. package/dist/types-BWaH4KH1.d.ts +0 -155
  90. /package/dist/{chunk-DVJX76J3.mjs.map → chunk-K7GTZGKJ.mjs.map} +0 -0
@@ -36,6 +36,7 @@ var ScopeType = /* @__PURE__ */ ((ScopeType2) => {
36
36
  var CaveatType = /* @__PURE__ */ ((CaveatType2) => {
37
37
  CaveatType2["AllowedMethods"] = "allowedMethods";
38
38
  CaveatType2["AllowedTargets"] = "allowedTargets";
39
+ CaveatType2["ApprovalRevocation"] = "approvalRevocation";
39
40
  CaveatType2["Deployed"] = "deployed";
40
41
  CaveatType2["AllowedCalldata"] = "allowedCalldata";
41
42
  CaveatType2["Erc20BalanceChange"] = "erc20BalanceChange";
@@ -228,6 +229,26 @@ var allowedTargetsBuilder = (environment, config) => {
228
229
  };
229
230
  };
230
231
 
232
+ // src/caveatBuilder/approvalRevocationBuilder.ts
233
+ import {
234
+ createApprovalRevocationTerms
235
+ } from "@metamask/delegation-core";
236
+ var approvalRevocation = "approvalRevocation";
237
+ var approvalRevocationBuilder = (environment, config) => {
238
+ const terms = createApprovalRevocationTerms(config);
239
+ const {
240
+ caveatEnforcers: { ApprovalRevocationEnforcer }
241
+ } = environment;
242
+ if (!ApprovalRevocationEnforcer) {
243
+ throw new Error("ApprovalRevocationEnforcer not found in environment");
244
+ }
245
+ return {
246
+ enforcer: ApprovalRevocationEnforcer,
247
+ terms,
248
+ args: "0x00"
249
+ };
250
+ };
251
+
231
252
  // src/caveatBuilder/argsEqualityCheckBuilder.ts
232
253
  import { createArgsEqualityCheckTerms } from "@metamask/delegation-core";
233
254
  import { isHex as isHex2 } from "viem";
@@ -1041,7 +1062,7 @@ var valueLteBuilder = (environment, config) => {
1041
1062
 
1042
1063
  // src/caveatBuilder/coreCaveatBuilder.ts
1043
1064
  var createCaveatBuilder = (environment, config) => {
1044
- const caveatBuilder = new CaveatBuilder(environment, config).extend(allowedMethods, allowedMethodsBuilder).extend(allowedTargets, allowedTargetsBuilder).extend(deployed, deployedBuilder).extend(allowedCalldata, allowedCalldataBuilder).extend(erc20BalanceChange, erc20BalanceChangeBuilder).extend(erc721BalanceChange, erc721BalanceChangeBuilder).extend(erc1155BalanceChange, erc1155BalanceChangeBuilder).extend(valueLte, valueLteBuilder).extend(limitedCalls, limitedCallsBuilder).extend(id, idBuilder).extend(nonce, nonceBuilder).extend(timestamp, timestampBuilder).extend(blockNumber, blockNumberBuilder).extend(erc20TransferAmount, erc20TransferAmountBuilder).extend(erc20Streaming, erc20StreamingBuilder).extend(nativeTokenStreaming, nativeTokenStreamingBuilder).extend(erc721Transfer, erc721TransferBuilder).extend(nativeTokenTransferAmount, nativeTokenTransferAmountBuilder).extend(nativeBalanceChange, nativeBalanceChangeBuilder).extend(redeemer, redeemerBuilder).extend(nativeTokenPayment, nativeTokenPaymentBuilder).extend(argsEqualityCheck, argsEqualityCheckBuilder).extend(
1065
+ const caveatBuilder = new CaveatBuilder(environment, config).extend(allowedMethods, allowedMethodsBuilder).extend(allowedTargets, allowedTargetsBuilder).extend(approvalRevocation, approvalRevocationBuilder).extend(deployed, deployedBuilder).extend(allowedCalldata, allowedCalldataBuilder).extend(erc20BalanceChange, erc20BalanceChangeBuilder).extend(erc721BalanceChange, erc721BalanceChangeBuilder).extend(erc1155BalanceChange, erc1155BalanceChangeBuilder).extend(valueLte, valueLteBuilder).extend(limitedCalls, limitedCallsBuilder).extend(id, idBuilder).extend(nonce, nonceBuilder).extend(timestamp, timestampBuilder).extend(blockNumber, blockNumberBuilder).extend(erc20TransferAmount, erc20TransferAmountBuilder).extend(erc20Streaming, erc20StreamingBuilder).extend(nativeTokenStreaming, nativeTokenStreamingBuilder).extend(erc721Transfer, erc721TransferBuilder).extend(nativeTokenTransferAmount, nativeTokenTransferAmountBuilder).extend(nativeBalanceChange, nativeBalanceChangeBuilder).extend(redeemer, redeemerBuilder).extend(nativeTokenPayment, nativeTokenPaymentBuilder).extend(argsEqualityCheck, argsEqualityCheckBuilder).extend(
1045
1066
  specificActionERC20TransferBatch,
1046
1067
  specificActionERC20TransferBatchBuilder
1047
1068
  ).extend(erc20PeriodTransfer, erc20PeriodTransferBuilder).extend(nativeTokenPeriodTransfer, nativeTokenPeriodTransferBuilder).extend(exactCalldataBatch, exactCalldataBatchBuilder).extend(exactCalldata, exactCalldataBuilder).extend(exactExecution, exactExecutionBuilder).extend(exactExecutionBatch, exactExecutionBatchBuilder).extend(multiTokenPeriod, multiTokenPeriodBuilder).extend(ownershipTransfer, ownershipTransferBuilder);
@@ -1332,9 +1353,15 @@ var createCaveatBuilderFromScope = (environment, scopeConfig) => {
1332
1353
  var resolveCaveats = ({
1333
1354
  environment,
1334
1355
  scope,
1335
- caveats
1356
+ caveats,
1357
+ isScopeOptional
1336
1358
  }) => {
1337
- const scopeCaveatBuilder = createCaveatBuilderFromScope(environment, scope);
1359
+ if (!scope && !isScopeOptional) {
1360
+ throw new Error("Scope is required");
1361
+ }
1362
+ const scopeCaveatBuilder = scope ? createCaveatBuilderFromScope(environment, scope) : createCaveatBuilder(environment, {
1363
+ allowInsecureUnrestrictedDelegation: true
1364
+ });
1338
1365
  if (caveats) {
1339
1366
  if ("build" in caveats && typeof caveats.build === "function") {
1340
1367
  caveats.build().forEach((caveat) => {
@@ -1364,6 +1391,7 @@ import {
1364
1391
  decodeERC20StreamingTerms,
1365
1392
  decodeERC20TransferAmountTerms,
1366
1393
  decodeERC20BalanceChangeTerms,
1394
+ decodeApprovalRevocationTerms,
1367
1395
  decodeAllowedMethodsTerms,
1368
1396
  decodeAllowedTargetsTerms,
1369
1397
  decodeArgsEqualityCheckTerms,
@@ -1419,113 +1447,142 @@ var decodeCaveat = ({
1419
1447
  }) => {
1420
1448
  switch (enforcer.toLowerCase()) {
1421
1449
  case caveatEnforcers.AllowedCalldataEnforcer?.toLowerCase():
1422
- return { type: "allowedCalldata", ...decodeAllowedCalldataTerms(terms) };
1450
+ return {
1451
+ type: "allowedCalldata" /* AllowedCalldata */,
1452
+ ...decodeAllowedCalldataTerms(terms)
1453
+ };
1423
1454
  case caveatEnforcers.AllowedMethodsEnforcer?.toLowerCase():
1424
- return { type: "allowedMethods", ...decodeAllowedMethodsTerms(terms) };
1455
+ return {
1456
+ type: "allowedMethods" /* AllowedMethods */,
1457
+ ...decodeAllowedMethodsTerms(terms)
1458
+ };
1459
+ case caveatEnforcers.ApprovalRevocationEnforcer?.toLowerCase():
1460
+ return {
1461
+ type: "approvalRevocation" /* ApprovalRevocation */,
1462
+ ...decodeApprovalRevocationTerms(terms)
1463
+ };
1425
1464
  case caveatEnforcers.AllowedTargetsEnforcer?.toLowerCase():
1426
- return { type: "allowedTargets", ...decodeAllowedTargetsTerms(terms) };
1465
+ return {
1466
+ type: "allowedTargets" /* AllowedTargets */,
1467
+ ...decodeAllowedTargetsTerms(terms)
1468
+ };
1427
1469
  case caveatEnforcers.ArgsEqualityCheckEnforcer?.toLowerCase():
1428
1470
  return {
1429
- type: "argsEqualityCheck",
1471
+ type: "argsEqualityCheck" /* ArgsEqualityCheck */,
1430
1472
  ...decodeArgsEqualityCheckTerms(terms)
1431
1473
  };
1432
1474
  case caveatEnforcers.BlockNumberEnforcer?.toLowerCase():
1433
- return { type: "blockNumber", ...decodeBlockNumberTerms(terms) };
1475
+ return { type: "blockNumber" /* BlockNumber */, ...decodeBlockNumberTerms(terms) };
1434
1476
  case caveatEnforcers.DeployedEnforcer?.toLowerCase():
1435
- return { type: "deployed", ...decodeDeployedTerms(terms) };
1477
+ return { type: "deployed" /* Deployed */, ...decodeDeployedTerms(terms) };
1436
1478
  case caveatEnforcers.ERC20BalanceChangeEnforcer?.toLowerCase():
1437
1479
  return {
1438
- type: "erc20BalanceChange",
1480
+ type: "erc20BalanceChange" /* Erc20BalanceChange */,
1439
1481
  ...decodeERC20BalanceChangeTerms(terms)
1440
1482
  };
1441
1483
  case caveatEnforcers.ERC20TransferAmountEnforcer?.toLowerCase():
1442
1484
  return {
1443
- type: "erc20TransferAmount",
1485
+ type: "erc20TransferAmount" /* Erc20TransferAmount */,
1444
1486
  ...decodeERC20TransferAmountTerms(terms)
1445
1487
  };
1446
1488
  case caveatEnforcers.ERC20StreamingEnforcer?.toLowerCase():
1447
- return { type: "erc20Streaming", ...decodeERC20StreamingTerms(terms) };
1489
+ return {
1490
+ type: "erc20Streaming" /* Erc20Streaming */,
1491
+ ...decodeERC20StreamingTerms(terms)
1492
+ };
1448
1493
  case caveatEnforcers.ERC721BalanceChangeEnforcer?.toLowerCase():
1449
1494
  return {
1450
- type: "erc721BalanceChange",
1495
+ type: "erc721BalanceChange" /* Erc721BalanceChange */,
1451
1496
  ...decodeERC721BalanceChangeTerms(terms)
1452
1497
  };
1453
1498
  case caveatEnforcers.ERC721TransferEnforcer?.toLowerCase():
1454
- return { type: "erc721Transfer", ...decodeERC721TransferTerms(terms) };
1499
+ return {
1500
+ type: "erc721Transfer" /* Erc721Transfer */,
1501
+ ...decodeERC721TransferTerms(terms)
1502
+ };
1455
1503
  case caveatEnforcers.ERC1155BalanceChangeEnforcer?.toLowerCase():
1456
1504
  return {
1457
- type: "erc1155BalanceChange",
1505
+ type: "erc1155BalanceChange" /* Erc1155BalanceChange */,
1458
1506
  ...decodeERC1155BalanceChangeTerms(terms)
1459
1507
  };
1460
1508
  case caveatEnforcers.IdEnforcer?.toLowerCase():
1461
- return { type: "id", ...decodeIdTerms(terms) };
1509
+ return { type: "id" /* Id */, ...decodeIdTerms(terms) };
1462
1510
  case caveatEnforcers.LimitedCallsEnforcer?.toLowerCase():
1463
- return { type: "limitedCalls", ...decodeLimitedCallsTerms(terms) };
1511
+ return {
1512
+ type: "limitedCalls" /* LimitedCalls */,
1513
+ ...decodeLimitedCallsTerms(terms)
1514
+ };
1464
1515
  case caveatEnforcers.NonceEnforcer?.toLowerCase():
1465
- return { type: "nonce", ...decodeNonceTerms(terms) };
1516
+ return { type: "nonce" /* Nonce */, ...decodeNonceTerms(terms) };
1466
1517
  case caveatEnforcers.TimestampEnforcer?.toLowerCase():
1467
- return { type: "timestamp", ...decodeTimestampTerms(terms) };
1518
+ return { type: "timestamp" /* Timestamp */, ...decodeTimestampTerms(terms) };
1468
1519
  case caveatEnforcers.ValueLteEnforcer?.toLowerCase():
1469
- return { type: "valueLte", ...decodeValueLteTerms(terms) };
1520
+ return { type: "valueLte" /* ValueLte */, ...decodeValueLteTerms(terms) };
1470
1521
  case caveatEnforcers.NativeTokenTransferAmountEnforcer?.toLowerCase():
1471
1522
  return {
1472
- type: "nativeTokenTransferAmount",
1523
+ type: "nativeTokenTransferAmount" /* NativeTokenTransferAmount */,
1473
1524
  ...decodeNativeTokenTransferAmountTerms(terms)
1474
1525
  };
1475
1526
  case caveatEnforcers.NativeBalanceChangeEnforcer?.toLowerCase():
1476
1527
  return {
1477
- type: "nativeBalanceChange",
1528
+ type: "nativeBalanceChange" /* NativeBalanceChange */,
1478
1529
  ...decodeNativeBalanceChangeTerms(terms)
1479
1530
  };
1480
1531
  case caveatEnforcers.NativeTokenStreamingEnforcer?.toLowerCase():
1481
1532
  return {
1482
- type: "nativeTokenStreaming",
1533
+ type: "nativeTokenStreaming" /* NativeTokenStreaming */,
1483
1534
  ...decodeNativeTokenStreamingTerms(terms)
1484
1535
  };
1485
1536
  case caveatEnforcers.NativeTokenPaymentEnforcer?.toLowerCase():
1486
1537
  return {
1487
- type: "nativeTokenPayment",
1538
+ type: "nativeTokenPayment" /* NativeTokenPayment */,
1488
1539
  ...decodeNativeTokenPaymentTerms(terms)
1489
1540
  };
1490
1541
  case caveatEnforcers.RedeemerEnforcer?.toLowerCase():
1491
- return { type: "redeemer", ...decodeRedeemerTerms(terms) };
1542
+ return { type: "redeemer" /* Redeemer */, ...decodeRedeemerTerms(terms) };
1492
1543
  case caveatEnforcers.SpecificActionERC20TransferBatchEnforcer?.toLowerCase():
1493
1544
  return {
1494
- type: "specificActionERC20TransferBatch",
1545
+ type: "specificActionERC20TransferBatch" /* SpecificActionERC20TransferBatch */,
1495
1546
  ...decodeSpecificActionERC20TransferBatchTerms(terms)
1496
1547
  };
1497
1548
  case caveatEnforcers.ERC20PeriodTransferEnforcer?.toLowerCase():
1498
1549
  return {
1499
- type: "erc20PeriodTransfer",
1550
+ type: "erc20PeriodTransfer" /* Erc20PeriodTransfer */,
1500
1551
  ...decodeERC20TokenPeriodTransferTerms(terms)
1501
1552
  };
1502
1553
  case caveatEnforcers.NativeTokenPeriodTransferEnforcer?.toLowerCase():
1503
1554
  return {
1504
- type: "nativeTokenPeriodTransfer",
1555
+ type: "nativeTokenPeriodTransfer" /* NativeTokenPeriodTransfer */,
1505
1556
  ...decodeNativeTokenPeriodTransferTerms(terms)
1506
1557
  };
1507
1558
  case caveatEnforcers.ExactCalldataBatchEnforcer?.toLowerCase():
1508
1559
  return {
1509
- type: "exactCalldataBatch",
1560
+ type: "exactCalldataBatch" /* ExactCalldataBatch */,
1510
1561
  ...decodeExactCalldataBatchTerms(terms)
1511
1562
  };
1512
1563
  case caveatEnforcers.ExactCalldataEnforcer?.toLowerCase():
1513
- return { type: "exactCalldata", ...decodeExactCalldataTerms(terms) };
1564
+ return {
1565
+ type: "exactCalldata" /* ExactCalldata */,
1566
+ ...decodeExactCalldataTerms(terms)
1567
+ };
1514
1568
  case caveatEnforcers.ExactExecutionEnforcer?.toLowerCase():
1515
- return { type: "exactExecution", ...decodeExactExecutionTerms(terms) };
1569
+ return {
1570
+ type: "exactExecution" /* ExactExecution */,
1571
+ ...decodeExactExecutionTerms(terms)
1572
+ };
1516
1573
  case caveatEnforcers.ExactExecutionBatchEnforcer?.toLowerCase():
1517
1574
  return {
1518
- type: "exactExecutionBatch",
1575
+ type: "exactExecutionBatch" /* ExactExecutionBatch */,
1519
1576
  ...decodeExactExecutionBatchTerms(terms)
1520
1577
  };
1521
1578
  case caveatEnforcers.MultiTokenPeriodEnforcer?.toLowerCase():
1522
1579
  return {
1523
- type: "multiTokenPeriod",
1580
+ type: "multiTokenPeriod" /* MultiTokenPeriod */,
1524
1581
  ...decodeMultiTokenPeriodTerms(terms)
1525
1582
  };
1526
1583
  case caveatEnforcers.OwnershipTransferEnforcer?.toLowerCase():
1527
1584
  return {
1528
- type: "ownershipTransfer",
1585
+ type: "ownershipTransfer" /* OwnershipTransfer */,
1529
1586
  ...decodeOwnershipTransferTerms(terms)
1530
1587
  };
1531
1588
  default:
@@ -1693,7 +1750,7 @@ var Sender = class {
1693
1750
  };
1694
1751
 
1695
1752
  // package.json
1696
- var version = "1.4.0";
1753
+ var version = "1.6.0";
1697
1754
 
1698
1755
  // src/analytics/index.ts
1699
1756
  function isCompleteBase(value) {
@@ -1943,14 +2000,16 @@ var hashDelegation = (input) => {
1943
2000
  const delegationStruct = toDelegationStruct(input);
1944
2001
  return hashDelegationCore(delegationStruct);
1945
2002
  };
1946
- var resolveAuthority = (parentDelegation) => {
1947
- if (!parentDelegation) {
1948
- return ROOT_AUTHORITY;
2003
+ var extractLeafDelegation = (permissionContext) => {
2004
+ const delegations = decodeDelegations(permissionContext);
2005
+ if (delegations.length === 0) {
2006
+ throw new Error("Permission context must contain at least one delegation");
1949
2007
  }
1950
- if (typeof parentDelegation === "string") {
1951
- return parentDelegation;
2008
+ const leafDelegation = delegations[0];
2009
+ if (!leafDelegation) {
2010
+ throw new Error("Failed to extract leaf delegation");
1952
2011
  }
1953
- return hashDelegation(parentDelegation);
2012
+ return leafDelegation;
1954
2013
  };
1955
2014
  var getCaveatNames = ({
1956
2015
  caveats,
@@ -1970,11 +2029,47 @@ var getCaveatNames = ({
1970
2029
  }
1971
2030
  return [];
1972
2031
  };
2032
+ var resolveDelegationArgs = (options) => {
2033
+ const optionsHasParentPermissionContext = "parentPermissionContext" in options && options.parentPermissionContext;
2034
+ const resolvedParentDelegation = optionsHasParentPermissionContext ? extractLeafDelegation(options.parentPermissionContext) : options.parentDelegation;
2035
+ const authority = (() => {
2036
+ if (!resolvedParentDelegation) {
2037
+ if (!options.scope) {
2038
+ throw new Error(
2039
+ "Invalid arguments - must specify either parentDelegation, parentPermissionContext, or scope"
2040
+ );
2041
+ }
2042
+ return ROOT_AUTHORITY;
2043
+ }
2044
+ if (typeof resolvedParentDelegation === "string") {
2045
+ if (resolvedParentDelegation.toLowerCase() === ROOT_AUTHORITY.toLowerCase()) {
2046
+ throw new Error(
2047
+ `Invalid parent delegation - cannot be ${ROOT_AUTHORITY}`
2048
+ );
2049
+ }
2050
+ return resolvedParentDelegation;
2051
+ }
2052
+ return hashDelegation(resolvedParentDelegation);
2053
+ })();
2054
+ const hasInheritance = resolvedParentDelegation !== void 0;
2055
+ const caveats = resolveCaveats({
2056
+ environment: options.environment,
2057
+ scope: options.scope,
2058
+ caveats: options.caveats,
2059
+ isScopeOptional: hasInheritance
2060
+ });
2061
+ return {
2062
+ authority,
2063
+ caveats,
2064
+ hasInheritance,
2065
+ salt: options.salt ?? "0x00"
2066
+ };
2067
+ };
1973
2068
  var createDelegation = (options) => {
1974
- const caveats = resolveCaveats(options);
2069
+ const { authority, caveats, hasInheritance, salt } = resolveDelegationArgs(options);
1975
2070
  trackSmartAccountsKitFunctionCall("createDelegation", {
1976
- hasParentDelegation: options.parentDelegation !== void 0,
1977
- scope: options.scope.type,
2071
+ hasInheritance,
2072
+ scope: options.scope?.type ?? null,
1978
2073
  caveatNames: getCaveatNames({
1979
2074
  caveats,
1980
2075
  environment: options.environment
@@ -1983,17 +2078,17 @@ var createDelegation = (options) => {
1983
2078
  return {
1984
2079
  delegate: options.to,
1985
2080
  delegator: options.from,
1986
- authority: resolveAuthority(options.parentDelegation),
2081
+ authority,
1987
2082
  caveats,
1988
- salt: options.salt ?? "0x00",
2083
+ salt,
1989
2084
  signature: "0x"
1990
2085
  };
1991
2086
  };
1992
2087
  var createOpenDelegation = (options) => {
1993
- const caveats = resolveCaveats(options);
2088
+ const { authority, caveats, hasInheritance, salt } = resolveDelegationArgs(options);
1994
2089
  trackSmartAccountsKitFunctionCall("createOpenDelegation", {
1995
- hasParentDelegation: options.parentDelegation !== void 0,
1996
- scope: options.scope.type,
2090
+ hasInheritance,
2091
+ scope: options.scope?.type ?? null,
1997
2092
  caveatNames: getCaveatNames({
1998
2093
  caveats,
1999
2094
  environment: options.environment
@@ -2002,9 +2097,9 @@ var createOpenDelegation = (options) => {
2002
2097
  return {
2003
2098
  delegate: ANY_BENEFICIARY,
2004
2099
  delegator: options.from,
2005
- authority: resolveAuthority(options.parentDelegation),
2100
+ authority,
2006
2101
  caveats,
2007
- salt: options.salt ?? "0x00",
2102
+ salt,
2008
2103
  signature: "0x"
2009
2104
  };
2010
2105
  };
@@ -2060,6 +2155,76 @@ var signDelegation = async ({
2060
2155
  });
2061
2156
  };
2062
2157
 
2158
+ // src/executions.ts
2159
+ import {
2160
+ encodeAbiParameters as encodeAbiParameters2,
2161
+ encodePacked
2162
+ } from "viem";
2163
+ var createExecution = ({
2164
+ target,
2165
+ value = 0n,
2166
+ callData = "0x"
2167
+ }) => {
2168
+ return {
2169
+ target,
2170
+ value,
2171
+ callData
2172
+ };
2173
+ };
2174
+ var ExecutionMode = /* @__PURE__ */ ((ExecutionMode2) => {
2175
+ ExecutionMode2["SingleDefault"] = "0x0000000000000000000000000000000000000000000000000000000000000000";
2176
+ ExecutionMode2["SingleTry"] = "0x0001000000000000000000000000000000000000000000000000000000000000";
2177
+ ExecutionMode2["BatchDefault"] = "0x0100000000000000000000000000000000000000000000000000000000000000";
2178
+ ExecutionMode2["BatchTry"] = "0x0101000000000000000000000000000000000000000000000000000000000000";
2179
+ return ExecutionMode2;
2180
+ })(ExecutionMode || {});
2181
+ var EXECUTION_ABI_TYPE_COMPONENTS = [
2182
+ { type: "address", name: "target" },
2183
+ { type: "uint256", name: "value" },
2184
+ { type: "bytes", name: "callData" }
2185
+ ];
2186
+ var encodeSingleExecution = (execution) => {
2187
+ return encodePacked(
2188
+ ["address", "uint256", "bytes"],
2189
+ [execution.target, execution.value, execution.callData]
2190
+ );
2191
+ };
2192
+ var encodeBatchExecution = (executions) => {
2193
+ return encodeAbiParameters2(
2194
+ [
2195
+ {
2196
+ components: EXECUTION_ABI_TYPE_COMPONENTS,
2197
+ name: "executions",
2198
+ type: "tuple[]"
2199
+ }
2200
+ ],
2201
+ [executions]
2202
+ );
2203
+ };
2204
+ var encodeExecutionCalldata = (executions) => {
2205
+ if (executions.length === 0) {
2206
+ throw new Error(
2207
+ "Error while getting the execution calldatas, executions is empty"
2208
+ );
2209
+ }
2210
+ if (executions.length === 1) {
2211
+ const execution = executions[0];
2212
+ if (!execution) {
2213
+ throw new Error("Execution not found");
2214
+ }
2215
+ return encodeSingleExecution(execution);
2216
+ }
2217
+ return encodeBatchExecution(executions);
2218
+ };
2219
+ var encodeExecutionCalldatas = (executionsBatch) => {
2220
+ if (executionsBatch.length === 0) {
2221
+ throw new Error(
2222
+ "Error while getting the execution calldatas, executionsBatch is empty"
2223
+ );
2224
+ }
2225
+ return executionsBatch.map(encodeExecutionCalldata);
2226
+ };
2227
+
2063
2228
  export {
2064
2229
  __export,
2065
2230
  trackSmartAccountsKitFunctionCall,
@@ -2071,6 +2236,7 @@ export {
2071
2236
  createCaveatBuilder,
2072
2237
  isDefined,
2073
2238
  toHexOrThrow,
2239
+ resolveCaveats,
2074
2240
  createCaveat,
2075
2241
  decodeCaveat,
2076
2242
  ANY_BENEFICIARY,
@@ -2090,6 +2256,12 @@ export {
2090
2256
  createDelegation,
2091
2257
  createOpenDelegation,
2092
2258
  prepareSignDelegationTypedData,
2093
- signDelegation
2259
+ signDelegation,
2260
+ createExecution,
2261
+ ExecutionMode,
2262
+ encodeSingleExecution,
2263
+ encodeBatchExecution,
2264
+ encodeExecutionCalldata,
2265
+ encodeExecutionCalldatas
2094
2266
  };
2095
- //# sourceMappingURL=chunk-EEIIVBNV.mjs.map
2267
+ //# sourceMappingURL=chunk-TNGQTVSY.mjs.map