@1inch/fusion-sdk 2.4.7-rc.0 → 2.4.7-rc.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.
@@ -553,6 +553,29 @@ var FusionOrder = /*#__PURE__*/ function() {
553
553
  return new _permittransferfrom.PermitTransferFrom(this.makerAsset, this.makingAmount, spender, (0, _limitordersdk.randBigInt)(_byteutils.UINT_256_MAX), this.deadline);
554
554
  }
555
555
  },
556
+ {
557
+ key: "restoreMakerAssetSuffix",
558
+ value: /**
559
+ * Restores the original `makerAssetSuffix` that `FusionExtension.build()` does not preserve.
560
+ * Recomputes the salt to match the patched extension hash.
561
+ */ function restoreMakerAssetSuffix(makerAssetSuffix) {
562
+ var patchedExtension = new _limitordersdk.Extension(_object_spread_props(_object_spread({}, this.inner.extension), {
563
+ makerAssetSuffix: makerAssetSuffix
564
+ }));
565
+ var baseSalt = this.inner.salt >> 160n;
566
+ this.inner = new _limitordersdk.LimitOrder({
567
+ maker: this.inner.maker,
568
+ makerAsset: this.inner.makerAsset,
569
+ takerAsset: this.inner.takerAsset,
570
+ makingAmount: this.inner.makingAmount,
571
+ takingAmount: this.inner.takingAmount,
572
+ receiver: this.inner.receiver,
573
+ salt: _limitordersdk.LimitOrder.buildSalt(patchedExtension, baseSalt)
574
+ }, this.inner.makerTraits, patchedExtension, {
575
+ optimizeReceiverAddress: false
576
+ });
577
+ }
578
+ },
556
579
  {
557
580
  key: "decodeTransferPermitSuffix",
558
581
  value: function decodeTransferPermitSuffix() {
@@ -641,6 +664,9 @@ var FusionOrder = /*#__PURE__*/ function() {
641
664
  fees: extra === null || extra === void 0 ? void 0 : extra.fees,
642
665
  optimizeReceiverAddress: true
643
666
  });
667
+ if (extension.makerAssetSuffix !== _constants.ZX) {
668
+ fusionOrder.restoreMakerAssetSuffix(extension.makerAssetSuffix);
669
+ }
644
670
  (0, _assert.default)(providedSalt === fusionOrder.salt, 'invalid salt for passed extension');
645
671
  return fusionOrder;
646
672
  }
@@ -534,7 +534,19 @@ describe('FusionOrder Native', function() {
534
534
  var orderWithPermit = order.withTransferPermit(permit, fakeSignature);
535
535
  expect(orderWithPermit.makerAsset).toEqual(weth);
536
536
  });
537
- it('should return false for non-permit2 suffix data', function() {
537
+ it('should round-trip Permit2 order through fromDataAndExtension', function() {
538
+ var order = baseOrder();
539
+ var permit = order.createTransferPermit(permit2Proxy);
540
+ var fakeSignature = '0x' + 'ab'.repeat(65);
541
+ var orderWithPermit = order.withTransferPermit(permit, fakeSignature);
542
+ var built = orderWithPermit.build();
543
+ var rebuilt = _fusionorder.FusionOrder.fromDataAndExtension(built, orderWithPermit.extension);
544
+ expect(rebuilt.isTransferPermit()).toBe(true);
545
+ expect(rebuilt.makerAsset).toEqual(orderWithPermit.makerAsset);
546
+ expect(rebuilt.salt).toEqual(orderWithPermit.salt);
547
+ expect(rebuilt.build()).toEqual(built);
548
+ });
549
+ it('should reject tampered makerAssetSuffix via salt check', function() {
538
550
  var order = baseOrder();
539
551
  var ext = order.extension;
540
552
  var tampered = new _limitordersdk.Extension({
@@ -548,8 +560,9 @@ describe('FusionOrder Native', function() {
548
560
  postInteraction: ext.postInteraction,
549
561
  customData: ext.customData
550
562
  });
551
- var rebuilt = _fusionorder.FusionOrder.fromDataAndExtension(order.build(), tampered);
552
- expect(rebuilt.isTransferPermit()).toBe(false);
563
+ expect(function() {
564
+ return _fusionorder.FusionOrder.fromDataAndExtension(order.build(), tampered);
565
+ }).toThrow('invalid salt for passed extension');
553
566
  });
554
567
  });
555
568
  });
@@ -538,6 +538,29 @@ export var FusionOrder = /*#__PURE__*/ function() {
538
538
  return new PermitTransferFrom(this.makerAsset, this.makingAmount, spender, randBigInt(UINT_256_MAX), this.deadline);
539
539
  }
540
540
  },
541
+ {
542
+ key: "restoreMakerAssetSuffix",
543
+ value: /**
544
+ * Restores the original `makerAssetSuffix` that `FusionExtension.build()` does not preserve.
545
+ * Recomputes the salt to match the patched extension hash.
546
+ */ function restoreMakerAssetSuffix(makerAssetSuffix) {
547
+ var patchedExtension = new Extension(_object_spread_props(_object_spread({}, this.inner.extension), {
548
+ makerAssetSuffix: makerAssetSuffix
549
+ }));
550
+ var baseSalt = this.inner.salt >> 160n;
551
+ this.inner = new LimitOrder({
552
+ maker: this.inner.maker,
553
+ makerAsset: this.inner.makerAsset,
554
+ takerAsset: this.inner.takerAsset,
555
+ makingAmount: this.inner.makingAmount,
556
+ takingAmount: this.inner.takingAmount,
557
+ receiver: this.inner.receiver,
558
+ salt: LimitOrder.buildSalt(patchedExtension, baseSalt)
559
+ }, this.inner.makerTraits, patchedExtension, {
560
+ optimizeReceiverAddress: false
561
+ });
562
+ }
563
+ },
541
564
  {
542
565
  key: "decodeTransferPermitSuffix",
543
566
  value: function decodeTransferPermitSuffix() {
@@ -626,6 +649,9 @@ export var FusionOrder = /*#__PURE__*/ function() {
626
649
  fees: extra === null || extra === void 0 ? void 0 : extra.fees,
627
650
  optimizeReceiverAddress: true
628
651
  });
652
+ if (extension.makerAssetSuffix !== ZX) {
653
+ fusionOrder.restoreMakerAssetSuffix(extension.makerAssetSuffix);
654
+ }
629
655
  assert(providedSalt === fusionOrder.salt, 'invalid salt for passed extension');
630
656
  return fusionOrder;
631
657
  }
@@ -530,7 +530,19 @@ describe('FusionOrder Native', function() {
530
530
  var orderWithPermit = order.withTransferPermit(permit, fakeSignature);
531
531
  expect(orderWithPermit.makerAsset).toEqual(weth);
532
532
  });
533
- it('should return false for non-permit2 suffix data', function() {
533
+ it('should round-trip Permit2 order through fromDataAndExtension', function() {
534
+ var order = baseOrder();
535
+ var permit = order.createTransferPermit(permit2Proxy);
536
+ var fakeSignature = '0x' + 'ab'.repeat(65);
537
+ var orderWithPermit = order.withTransferPermit(permit, fakeSignature);
538
+ var built = orderWithPermit.build();
539
+ var rebuilt = FusionOrder.fromDataAndExtension(built, orderWithPermit.extension);
540
+ expect(rebuilt.isTransferPermit()).toBe(true);
541
+ expect(rebuilt.makerAsset).toEqual(orderWithPermit.makerAsset);
542
+ expect(rebuilt.salt).toEqual(orderWithPermit.salt);
543
+ expect(rebuilt.build()).toEqual(built);
544
+ });
545
+ it('should reject tampered makerAssetSuffix via salt check', function() {
534
546
  var order = baseOrder();
535
547
  var ext = order.extension;
536
548
  var tampered = new Extension({
@@ -544,8 +556,9 @@ describe('FusionOrder Native', function() {
544
556
  postInteraction: ext.postInteraction,
545
557
  customData: ext.customData
546
558
  });
547
- var rebuilt = FusionOrder.fromDataAndExtension(order.build(), tampered);
548
- expect(rebuilt.isTransferPermit()).toBe(false);
559
+ expect(function() {
560
+ return FusionOrder.fromDataAndExtension(order.build(), tampered);
561
+ }).toThrow('invalid salt for passed extension');
549
562
  });
550
563
  });
551
564
  });
@@ -1 +1 @@
1
- {"name":"@1inch/fusion-sdk","version":"2.4.7-rc.0","type":"module"}
1
+ {"name":"@1inch/fusion-sdk","version":"2.4.7-rc.2","type":"module"}
@@ -55,5 +55,6 @@ export declare class FusionOrder {
55
55
  isNative(chainId: number, ethOrderFactory: ProxyFactory, signature: string): boolean;
56
56
  nativeSignature(maker: Address): string;
57
57
  createTransferPermit(chainIdOrPermit2Proxy: number | Address, permit2Proxy?: Address): PermitTransferFrom;
58
+ private restoreMakerAssetSuffix;
58
59
  private decodeTransferPermitSuffix;
59
60
  }