@1inch/fusion-sdk 2.4.7-rc.3 → 2.4.8-rc.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 (56) hide show
  1. package/README.md +25 -174
  2. package/dist/cjs/api/quoter/quote/quote.js +20 -6
  3. package/dist/cjs/api/quoter/quoter.api.spec.js +103 -6
  4. package/dist/cjs/api/quoter/quoter.request.js +1 -4
  5. package/dist/cjs/api/quoter/quoter.request.spec.js +2 -8
  6. package/dist/cjs/constants.js +1 -19
  7. package/dist/cjs/fusion-order/fusion-extension.js +10 -3
  8. package/dist/cjs/fusion-order/fusion-order.js +5 -120
  9. package/dist/cjs/fusion-order/fusion-order.spec.js +124 -93
  10. package/dist/cjs/fusion-order/index.js +0 -1
  11. package/dist/cjs/index.js +3 -0
  12. package/dist/cjs/sdk/README.md +18 -14
  13. package/dist/esm/api/quoter/quote/quote.js +20 -6
  14. package/dist/esm/api/quoter/quote/types.js +15 -3
  15. package/dist/esm/api/quoter/quoter.api.spec.js +103 -6
  16. package/dist/esm/api/quoter/quoter.request.js +1 -4
  17. package/dist/esm/api/quoter/quoter.request.spec.js +2 -8
  18. package/dist/esm/constants.js +1 -16
  19. package/dist/esm/fusion-order/fusion-extension.js +10 -3
  20. package/dist/esm/fusion-order/fusion-order.js +6 -121
  21. package/dist/esm/fusion-order/fusion-order.spec.js +125 -94
  22. package/dist/esm/fusion-order/index.js +0 -1
  23. package/dist/esm/fusion-order/types.js +5 -0
  24. package/dist/esm/index.js +1 -1
  25. package/dist/esm/package.json +1 -1
  26. package/dist/esm/sdk/README.md +18 -14
  27. package/dist/types/src/api/quoter/quote/quote.d.ts +3 -2
  28. package/dist/types/src/api/quoter/quote/types.d.ts +6 -1
  29. package/dist/types/src/api/quoter/quoter.request.d.ts +3 -3
  30. package/dist/types/src/api/quoter/types.d.ts +2 -2
  31. package/dist/types/src/constants.d.ts +0 -1
  32. package/dist/types/src/fusion-order/fusion-extension.d.ts +2 -0
  33. package/dist/types/src/fusion-order/fusion-order.d.ts +0 -6
  34. package/dist/types/src/fusion-order/index.d.ts +0 -1
  35. package/dist/types/src/fusion-order/types.d.ts +1 -0
  36. package/dist/types/src/index.d.ts +2 -2
  37. package/dist/types/src/sdk/types.d.ts +3 -3
  38. package/dist/types/tsconfig.types.tsbuildinfo +1 -1
  39. package/package.json +4 -4
  40. package/dist/cjs/fusion-order/permit/constants.js +0 -98
  41. package/dist/cjs/fusion-order/permit/index.js +0 -34
  42. package/dist/cjs/fusion-order/permit/permit-transfer-from.js +0 -115
  43. package/dist/cjs/fusion-order/permit/permit-transfer-from.spec.js +0 -232
  44. package/dist/cjs/fusion-order/permit/transfer-from-suffix.js +0 -61
  45. package/dist/cjs/fusion-order/permit/utils.js +0 -35
  46. package/dist/esm/fusion-order/permit/constants.js +0 -71
  47. package/dist/esm/fusion-order/permit/index.js +0 -3
  48. package/dist/esm/fusion-order/permit/permit-transfer-from.js +0 -105
  49. package/dist/esm/fusion-order/permit/permit-transfer-from.spec.js +0 -228
  50. package/dist/esm/fusion-order/permit/transfer-from-suffix.js +0 -38
  51. package/dist/esm/fusion-order/permit/utils.js +0 -12
  52. package/dist/types/src/fusion-order/permit/constants.d.ts +0 -7
  53. package/dist/types/src/fusion-order/permit/index.d.ts +0 -3
  54. package/dist/types/src/fusion-order/permit/permit-transfer-from.d.ts +0 -11
  55. package/dist/types/src/fusion-order/permit/transfer-from-suffix.d.ts +0 -10
  56. package/dist/types/src/fusion-order/permit/utils.d.ts +0 -3
@@ -27,6 +27,58 @@ function _async_to_generator(fn) {
27
27
  });
28
28
  };
29
29
  }
30
+ function _define_property(obj, key, value) {
31
+ if (key in obj) {
32
+ Object.defineProperty(obj, key, {
33
+ value: value,
34
+ enumerable: true,
35
+ configurable: true,
36
+ writable: true
37
+ });
38
+ } else {
39
+ obj[key] = value;
40
+ }
41
+ return obj;
42
+ }
43
+ function _object_spread(target) {
44
+ for(var i = 1; i < arguments.length; i++){
45
+ var source = arguments[i] != null ? arguments[i] : {};
46
+ var ownKeys = Object.keys(source);
47
+ if (typeof Object.getOwnPropertySymbols === "function") {
48
+ ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) {
49
+ return Object.getOwnPropertyDescriptor(source, sym).enumerable;
50
+ }));
51
+ }
52
+ ownKeys.forEach(function(key) {
53
+ _define_property(target, key, source[key]);
54
+ });
55
+ }
56
+ return target;
57
+ }
58
+ function ownKeys(object, enumerableOnly) {
59
+ var keys = Object.keys(object);
60
+ if (Object.getOwnPropertySymbols) {
61
+ var symbols = Object.getOwnPropertySymbols(object);
62
+ if (enumerableOnly) {
63
+ symbols = symbols.filter(function(sym) {
64
+ return Object.getOwnPropertyDescriptor(object, sym).enumerable;
65
+ });
66
+ }
67
+ keys.push.apply(keys, symbols);
68
+ }
69
+ return keys;
70
+ }
71
+ function _object_spread_props(target, source) {
72
+ source = source != null ? source : {};
73
+ if (Object.getOwnPropertyDescriptors) {
74
+ Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));
75
+ } else {
76
+ ownKeys(Object(source)).forEach(function(key) {
77
+ Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
78
+ });
79
+ }
80
+ return target;
81
+ }
30
82
  function _ts_generator(thisArg, body) {
31
83
  var f, y, t, g, _ = {
32
84
  label: 0,
@@ -128,6 +180,7 @@ import { QuoterRequest } from './quoter.request.js';
128
180
  import { Quote } from './quote/index.js';
129
181
  import { PresetEnum } from './types.js';
130
182
  import { QuoterCustomPresetRequest } from './quoter-custom-preset.request.js';
183
+ import { ONE_INCH_LIMIT_ORDER_V4 } from '../../constants.js';
131
184
  describe('Quoter API', function() {
132
185
  var httpProvider;
133
186
  beforeEach(function() {
@@ -239,7 +292,7 @@ describe('Quoter API', function() {
239
292
  ],
240
293
  fee: {
241
294
  whitelistDiscountPercent: 1,
242
- receiver: '0x02f92800F57BCD74066F5709F1Daa1A4302Df875',
295
+ receiver: ONE_INCH_LIMIT_ORDER_V4,
243
296
  bps: 10
244
297
  },
245
298
  marketAmount: '626772029219852913'
@@ -261,7 +314,7 @@ describe('Quoter API', function() {
261
314
  case 1:
262
315
  res = _state.sent();
263
316
  expect(res).toStrictEqual(QuoterResponseMock);
264
- expect(httpProvider.get).toHaveBeenCalledWith('https://test.com/quoter/v2.0/1/quote/receive/?fromTokenAddress=0x6b175474e89094c44da98b954eedeac495271d0f&toTokenAddress=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2&amount=1000000000000000000000&walletAddress=0x00000000219ab540356cbb839cbe05303d7705fa&source=sdk&surplus=true');
317
+ expect(httpProvider.get).toHaveBeenCalledWith('https://test.com/quoter/v2.0/1/quote/receive/?fromTokenAddress=0x6b175474e89094c44da98b954eedeac495271d0f&toTokenAddress=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2&amount=1000000000000000000000&walletAddress=0x00000000219ab540356cbb839cbe05303d7705fa&surplus=true');
265
318
  return [
266
319
  2
267
320
  ];
@@ -283,7 +336,6 @@ describe('Quoter API', function() {
283
336
  amount: '1000000000000000000000',
284
337
  walletAddress: '0x00000000219ab540356cbb839cbe05303d7705fa',
285
338
  integratorFee: {
286
- share: Bps.fromPercent(50),
287
339
  receiver: Address.fromBigInt(10n),
288
340
  value: new Bps(1n)
289
341
  },
@@ -319,7 +371,6 @@ describe('Quoter API', function() {
319
371
  amount: '1000000000000000000000',
320
372
  walletAddress: '0x00000000219ab540356cbb839cbe05303d7705fa',
321
373
  integratorFee: {
322
- share: Bps.fromPercent(50),
323
374
  receiver: Address.fromBigInt(10n),
324
375
  value: new Bps(1n)
325
376
  },
@@ -356,7 +407,6 @@ describe('Quoter API', function() {
356
407
  amount: '1000000000000000000000',
357
408
  walletAddress: '0x00000000219ab540356cbb839cbe05303d7705fa',
358
409
  integratorFee: {
359
- share: Bps.fromPercent(50),
360
410
  receiver: Address.fromBigInt(10n),
361
411
  value: new Bps(1n)
362
412
  },
@@ -409,7 +459,6 @@ describe('Quoter API', function() {
409
459
  amount: '1000000000000000000000',
410
460
  walletAddress: '0x00000000219ab540356cbb839cbe05303d7705fa',
411
461
  integratorFee: {
412
- share: Bps.fromPercent(50),
413
462
  receiver: Address.fromBigInt(10n),
414
463
  value: new Bps(1n)
415
464
  },
@@ -448,4 +497,52 @@ describe('Quoter API', function() {
448
497
  }
449
498
  });
450
499
  }));
500
+ describe('parseIntegratorFee', function() {
501
+ it('should use response receiver when provided', function() {
502
+ var _quote_integratorFeeParams, _quote_integratorFeeParams1, _quote_integratorFeeParams2;
503
+ var responseWithFee = _object_spread_props(_object_spread({}, ResponseMock), {
504
+ integratorFee: 100,
505
+ integratorFeeReceiver: '0x1234567890123456789012345678901234567890',
506
+ integratorFeeShare: 50
507
+ });
508
+ var quote = new Quote(params, responseWithFee);
509
+ expect(quote.integratorFeeParams).toBeDefined();
510
+ expect((_quote_integratorFeeParams = quote.integratorFeeParams) === null || _quote_integratorFeeParams === void 0 ? void 0 : _quote_integratorFeeParams.receiver.toString()).toBe('0x1234567890123456789012345678901234567890');
511
+ expect(Number((_quote_integratorFeeParams1 = quote.integratorFeeParams) === null || _quote_integratorFeeParams1 === void 0 ? void 0 : _quote_integratorFeeParams1.value.value)).toBe(100);
512
+ expect(Number((_quote_integratorFeeParams2 = quote.integratorFeeParams) === null || _quote_integratorFeeParams2 === void 0 ? void 0 : _quote_integratorFeeParams2.share.value)).toBe(5000);
513
+ });
514
+ it('should fallback to request receiver when response receiver is missing', function() {
515
+ var _quote_integratorFeeParams;
516
+ var responseWithFeeNoReceiver = _object_spread_props(_object_spread({}, ResponseMock), {
517
+ integratorFee: 100,
518
+ integratorFeeShare: 50
519
+ });
520
+ var paramsWithFee = QuoterRequest.new({
521
+ fromTokenAddress: '0x6b175474e89094c44da98b954eedeac495271d0f',
522
+ toTokenAddress: '0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2',
523
+ amount: '1000000000000000000000',
524
+ walletAddress: '0x00000000219ab540356cbb839cbe05303d7705fa',
525
+ integratorFee: {
526
+ receiver: new Address('0xabcdef0123456789abcdef0123456789abcdef01'),
527
+ value: new Bps(100n)
528
+ },
529
+ source: 'test-source'
530
+ });
531
+ var quote = new Quote(paramsWithFee, responseWithFeeNoReceiver);
532
+ expect(quote.integratorFeeParams).toBeDefined();
533
+ expect((_quote_integratorFeeParams = quote.integratorFeeParams) === null || _quote_integratorFeeParams === void 0 ? void 0 : _quote_integratorFeeParams.receiver.toString()).toBe('0xabcdef0123456789abcdef0123456789abcdef01');
534
+ });
535
+ it('should return undefined when no receiver available', function() {
536
+ var responseWithFeeNoReceiver = _object_spread_props(_object_spread({}, ResponseMock), {
537
+ integratorFee: 100,
538
+ integratorFeeShare: 50
539
+ });
540
+ var quote = new Quote(params, responseWithFeeNoReceiver);
541
+ expect(quote.integratorFeeParams).toBeUndefined();
542
+ });
543
+ it('should return undefined when no integratorFee in response', function() {
544
+ var quote = new Quote(params, ResponseMock);
545
+ expect(quote.integratorFeeParams).toBeUndefined();
546
+ });
547
+ });
451
548
  });
@@ -53,7 +53,7 @@ export var QuoterRequest = /*#__PURE__*/ function() {
53
53
  this.enableEstimate = params.enableEstimate || false;
54
54
  this.permit = params.permit;
55
55
  this.integratorFee = params.integratorFee;
56
- this.source = params.source || 'sdk';
56
+ this.source = params.source;
57
57
  var _params_isPermit2;
58
58
  this.isPermit2 = (_params_isPermit2 = params.isPermit2) !== null && _params_isPermit2 !== void 0 ? _params_isPermit2 : false;
59
59
  this.slippage = params.slippage;
@@ -66,9 +66,6 @@ export var QuoterRequest = /*#__PURE__*/ function() {
66
66
  if (!isValidAmount(this.amount)) {
67
67
  throw new Error("".concat(this.amount, " is invalid amount"));
68
68
  }
69
- if (this.integratorFee && this.source === 'sdk') {
70
- throw new Error('cannot use fee without source');
71
- }
72
69
  }
73
70
  _create_class(QuoterRequest, [
74
71
  {
@@ -9,7 +9,6 @@ describe(__filename, function() {
9
9
  amount: '1000000000000000000000',
10
10
  walletAddress: '0x00000000219ab540356cbb839cbe05303d7705fa',
11
11
  integratorFee: {
12
- share: Bps.fromPercent(50),
13
12
  receiver: Address.fromBigInt(10n),
14
13
  value: new Bps(1n)
15
14
  }
@@ -22,7 +21,6 @@ describe(__filename, function() {
22
21
  amount: '1000000000000000000000',
23
22
  walletAddress: '0x00000000219ab540356cbb839cbe05303d7705fa',
24
23
  integratorFee: {
25
- share: Bps.fromPercent(50),
26
24
  receiver: Address.fromBigInt(10n),
27
25
  value: new Bps(1n)
28
26
  }
@@ -37,7 +35,6 @@ describe(__filename, function() {
37
35
  amount: '1000000000000000000000',
38
36
  walletAddress: '0x00000000219ab540356cbb839cbe05303d7705fa',
39
37
  integratorFee: {
40
- share: Bps.fromPercent(50),
41
38
  receiver: Address.fromBigInt(10n),
42
39
  value: new Bps(1n)
43
40
  }
@@ -52,7 +49,6 @@ describe(__filename, function() {
52
49
  amount: '1000000000000000000000',
53
50
  walletAddress: '0x0000000019ab540356cbb839be05303d7705fa1',
54
51
  integratorFee: {
55
- share: Bps.fromPercent(50),
56
52
  receiver: Address.fromBigInt(10n),
57
53
  value: new Bps(1n)
58
54
  }
@@ -67,14 +63,13 @@ describe(__filename, function() {
67
63
  amount: 'dasdad',
68
64
  walletAddress: '0x00000000219ab540356cbb839cbe05303d7705fa',
69
65
  integratorFee: {
70
- share: Bps.fromPercent(50),
71
66
  receiver: Address.fromBigInt(10n),
72
67
  value: new Bps(1n)
73
68
  }
74
69
  });
75
70
  }).toThrow(/is invalid amount/);
76
71
  });
77
- it('returns error if fee is provided and source not', function() {
72
+ it('allows fee without source', function() {
78
73
  expect(function() {
79
74
  return QuoterRequest.new({
80
75
  fromTokenAddress: '0x6b175474e89094c44da98b954eedeac495271d0f',
@@ -82,11 +77,10 @@ describe(__filename, function() {
82
77
  amount: '1000000',
83
78
  walletAddress: '0x00000000219ab540356cbb839cbe05303d7705fa',
84
79
  integratorFee: {
85
- share: Bps.fromPercent(50),
86
80
  receiver: Address.fromBigInt(10n),
87
81
  value: new Bps(1n)
88
82
  }
89
83
  });
90
- }).toThrow(/cannot use fee without source/);
84
+ }).not.toThrow();
91
85
  });
92
86
  });
@@ -1,16 +1,3 @@
1
- function _define_property(obj, key, value) {
2
- if (key in obj) {
3
- Object.defineProperty(obj, key, {
4
- value: value,
5
- enumerable: true,
6
- configurable: true,
7
- writable: true
8
- });
9
- } else {
10
- obj[key] = value;
11
- }
12
- return obj;
13
- }
14
1
  export var ZX = '0x';
15
2
  export var NetworkEnum = /*#__PURE__*/ function(NetworkEnum) {
16
3
  NetworkEnum[NetworkEnum["ETHEREUM"] = 1] = "ETHEREUM";
@@ -28,9 +15,7 @@ export var NetworkEnum = /*#__PURE__*/ function(NetworkEnum) {
28
15
  NetworkEnum[NetworkEnum["UNICHAIN"] = 130] = "UNICHAIN";
29
16
  return NetworkEnum;
30
17
  }({});
31
- /** @deprecated Use ONE_INCH_LIMIT_ORDER_V4_ADDRESSES instead */ export var ONE_INCH_LIMIT_ORDER_V4 = '0x111111125421ca6dc452d289314280a0f8842a65';
32
- var _obj;
33
- export var ONE_INCH_LIMIT_ORDER_V4_ADDRESSES = (_obj = {}, _define_property(_obj, 324, '0x6fd4383cb451173d5f9304f041c7bcbf27d561ff'), _define_property(_obj, 1, '0x111111125421ca6dc452d289314280a0f8842a65'), _define_property(_obj, 137, '0x111111125421ca6dc452d289314280a0f8842a65'), _define_property(_obj, 56, '0x111111125421ca6dc452d289314280a0f8842a65'), _define_property(_obj, 42161, '0x111111125421ca6dc452d289314280a0f8842a65'), _define_property(_obj, 43114, '0x111111125421ca6dc452d289314280a0f8842a65'), _define_property(_obj, 10, '0x111111125421ca6dc452d289314280a0f8842a65'), _define_property(_obj, 250, '0x111111125421ca6dc452d289314280a0f8842a65'), _define_property(_obj, 100, '0x111111125421ca6dc452d289314280a0f8842a65'), _define_property(_obj, 8453, '0x111111125421ca6dc452d289314280a0f8842a65'), _define_property(_obj, 59144, '0x111111125421ca6dc452d289314280a0f8842a65'), _define_property(_obj, 146, '0x111111125421ca6dc452d289314280a0f8842a65'), _define_property(_obj, 130, '0x111111125421ca6dc452d289314280a0f8842a65'), _obj);
18
+ export var ONE_INCH_LIMIT_ORDER_V4 = '0x111111125421ca6dc452d289314280a0f8842a65';
34
19
  export var UINT_160_MAX = (1n << 160n) - 1n;
35
20
  export var UINT_16_MAX = (1n << 16n) - 1n;
36
21
  export var UINT_80_MAX = (1n << 80n) - 1n;
@@ -38,6 +38,7 @@ import { Whitelist } from './whitelist/whitelist.js';
38
38
  import { SurplusParams } from './surplus-params.js';
39
39
  import { Fees, IntegratorFee, ResolverFee } from './fees/index.js';
40
40
  import { add0x } from '../utils.js';
41
+ import { ZX } from '../constants.js';
41
42
  export var FusionExtension = /*#__PURE__*/ function() {
42
43
  "use strict";
43
44
  function FusionExtension(address, auctionDetails, whitelist, surplus, extra) {
@@ -57,12 +58,15 @@ export var FusionExtension = /*#__PURE__*/ function() {
57
58
  {
58
59
  key: "build",
59
60
  value: function build() {
60
- var _this_extra;
61
+ var _this_extra, _this_extra1;
61
62
  var amountData = this.buildAmountGetterData(true);
62
63
  var builder = new ExtensionBuilder().withMakingAmountData(this.address, amountData).withTakingAmountData(this.address, amountData).withPostInteraction(new Interaction(this.address, this.buildInteractionData()));
63
64
  if ((_this_extra = this.extra) === null || _this_extra === void 0 ? void 0 : _this_extra.makerPermit) {
64
- var _this_extra1, _this_extra2;
65
- builder.withMakerPermit((_this_extra1 = this.extra) === null || _this_extra1 === void 0 ? void 0 : _this_extra1.makerPermit.target, (_this_extra2 = this.extra) === null || _this_extra2 === void 0 ? void 0 : _this_extra2.makerPermit.data);
65
+ var _this_extra2, _this_extra3;
66
+ builder.withMakerPermit((_this_extra2 = this.extra) === null || _this_extra2 === void 0 ? void 0 : _this_extra2.makerPermit.target, (_this_extra3 = this.extra) === null || _this_extra3 === void 0 ? void 0 : _this_extra3.makerPermit.data);
67
+ }
68
+ if ((_this_extra1 = this.extra) === null || _this_extra1 === void 0 ? void 0 : _this_extra1.preInteraction) {
69
+ builder.withPreInteraction(this.extra.preInteraction);
66
70
  }
67
71
  return builder.build();
68
72
  }
@@ -213,6 +217,7 @@ export var FusionExtension = /*#__PURE__*/ function() {
213
217
  }
214
218
  //endregion Parse amount data
215
219
  var makerPermit = extension.hasMakerPermit ? Interaction.decode(extension.makerPermit) : undefined;
220
+ var preInteraction = extension.preInteraction !== ZX ? Interaction.decode(extension.preInteraction) : undefined;
216
221
  assert(amountData.fees.integratorFee.value === interactionData.fees.integratorFee.value, "invalid extension: integrator fee must be same in interaction data and in amount data");
217
222
  assert(amountData.fees.resolverFee.value === interactionData.fees.resolverFee.value, "invalid extension: resolver fee must be same in interaction data and in amount data");
218
223
  assert(amountData.fees.whitelistDiscount.equal(interactionData.fees.whitelistDiscount), "invalid extension: whitelistDiscount must be same in interaction data and in amount data");
@@ -225,6 +230,7 @@ export var FusionExtension = /*#__PURE__*/ function() {
225
230
  if (!hasFees) {
226
231
  return new FusionExtension(settlementContract, auctionDetails, whitelist, surplusParams, {
227
232
  makerPermit: makerPermit,
233
+ preInteraction: preInteraction,
228
234
  customReceiver: customReceiver,
229
235
  fees: undefined
230
236
  });
@@ -232,6 +238,7 @@ export var FusionExtension = /*#__PURE__*/ function() {
232
238
  var fees = new Fees(new ResolverFee(protocolFeeRecipient, interactionData.fees.resolverFee, interactionData.fees.whitelistDiscount), interactionData.fees.integratorFee.isZero() ? IntegratorFee.ZERO : new IntegratorFee(integratorFeeRecipient, protocolFeeRecipient, interactionData.fees.integratorFee, interactionData.fees.integratorShare));
233
239
  return new FusionExtension(settlementContract, auctionDetails, whitelist, surplusParams, {
234
240
  makerPermit: makerPermit,
241
+ preInteraction: preInteraction,
235
242
  fees: fees,
236
243
  customReceiver: customReceiver
237
244
  });
@@ -30,13 +30,6 @@ function _define_property(obj, key, value) {
30
30
  }
31
31
  return obj;
32
32
  }
33
- function _instanceof(left, right) {
34
- if (right != null && typeof Symbol !== "undefined" && right[Symbol.hasInstance]) {
35
- return !!right[Symbol.hasInstance](left);
36
- } else {
37
- return left instanceof right;
38
- }
39
- }
40
33
  function _object_spread(target) {
41
34
  for(var i = 1; i < arguments.length; i++){
42
35
  var source = arguments[i] != null ? arguments[i] : {};
@@ -76,15 +69,11 @@ function _object_spread_props(target, source) {
76
69
  }
77
70
  return target;
78
71
  }
79
- import { Address, Extension, Interaction, LimitOrder, MakerTraits, randBigInt } from '@1inch/limit-order-sdk';
80
- import { UINT_256_MAX } from '@1inch/byte-utils';
72
+ import { Address, Interaction, LimitOrder, MakerTraits } from '@1inch/limit-order-sdk';
81
73
  import assert from 'assert';
82
74
  import { FusionExtension } from './fusion-extension.js';
83
75
  import { injectTrackCode } from './source-track.js';
84
76
  import { SurplusParams } from './surplus-params.js';
85
- import { PermitTransferFrom } from './permit/permit-transfer-from.js';
86
- import { getPermit2ProxyAddress } from './permit/utils.js';
87
- import { decodeTransferFromSuffix } from './permit/transfer-from-suffix.js';
88
77
  import { AuctionCalculator } from '../amount-calculator/auction-calculator/index.js';
89
78
  import { ZX } from '../constants.js';
90
79
  import { calcTakingAmount } from '../utils/amounts.js';
@@ -98,6 +87,7 @@ export var FusionOrder = /*#__PURE__*/ function() {
98
87
  */ settlementExtensionContract, orderInfo, auctionDetails, whitelist) {
99
88
  var surplusParams = arguments.length > 4 && arguments[4] !== void 0 ? arguments[4] : SurplusParams.NO_FEE, extra = arguments.length > 5 && arguments[5] !== void 0 ? arguments[5] : FusionOrder.defaultExtra, extension = arguments.length > 6 && arguments[6] !== void 0 ? arguments[6] : new FusionExtension(settlementExtensionContract, auctionDetails, whitelist, surplusParams, {
100
89
  makerPermit: extra.permit ? new Interaction(orderInfo.makerAsset, extra.permit) : undefined,
90
+ preInteraction: extra.preInteraction ? Interaction.decode(extra.preInteraction) : undefined,
101
91
  customReceiver: orderInfo.receiver,
102
92
  fees: extra === null || extra === void 0 ? void 0 : extra.fees
103
93
  });
@@ -127,6 +117,9 @@ export var FusionOrder = /*#__PURE__*/ function() {
127
117
  if (enablePermit2) {
128
118
  makerTraits.enablePermit2();
129
119
  }
120
+ if (extra.preInteraction) {
121
+ makerTraits.enablePreInteraction();
122
+ }
130
123
  if (extra.nonce !== undefined) {
131
124
  makerTraits.withNonce(extra.nonce);
132
125
  }
@@ -173,9 +166,6 @@ export var FusionOrder = /*#__PURE__*/ function() {
173
166
  {
174
167
  key: "makerAsset",
175
168
  get: function get() {
176
- if (this.isTransferPermit()) {
177
- return this.decodeTransferPermitSuffix().token;
178
- }
179
169
  return this.inner.makerAsset;
180
170
  }
181
171
  },
@@ -272,48 +262,6 @@ export var FusionOrder = /*#__PURE__*/ function() {
272
262
  return this.inner.salt;
273
263
  }
274
264
  },
275
- {
276
- key: "isTransferPermit",
277
- value: /**
278
- * Returns true if the order uses a Permit2 transfer permit via Permit2Proxy.
279
- * Decodes `makerAssetSuffix` and validates the Permit2 ABI structure.
280
- *
281
- * @see FusionOrder.withTransferPermit
282
- * @see FusionOrder.createTransferPermit
283
- */ function isTransferPermit() {
284
- try {
285
- this.decodeTransferPermitSuffix();
286
- return true;
287
- } catch (e) {
288
- return false;
289
- }
290
- }
291
- },
292
- {
293
- key: "withTransferPermit",
294
- value: function withTransferPermit(permit, signature) {
295
- var suffix = permit.getTransferFromSuffix(signature);
296
- var currentExtension = this.inner.extension;
297
- var newExtension = new Extension(_object_spread_props(_object_spread({}, currentExtension), {
298
- makerAssetSuffix: suffix
299
- }));
300
- this.inner.makerTraits.disablePermit2();
301
- var baseSalt = this.inner.salt >> 160n;
302
- var newSalt = LimitOrder.buildSalt(newExtension, baseSalt);
303
- this.inner = new LimitOrder({
304
- maker: this.inner.maker,
305
- makerAsset: permit.spender,
306
- takerAsset: this.inner.takerAsset,
307
- makingAmount: this.inner.makingAmount,
308
- takingAmount: this.inner.takingAmount,
309
- receiver: this.inner.receiver,
310
- salt: newSalt
311
- }, this.inner.makerTraits, newExtension, {
312
- optimizeReceiverAddress: false
313
- });
314
- return this;
315
- }
316
- },
317
265
  {
318
266
  key: "build",
319
267
  value: function build() {
@@ -509,67 +457,6 @@ export var FusionOrder = /*#__PURE__*/ function() {
509
457
  */ function nativeSignature(maker) {
510
458
  return this.inner.nativeSignature(maker);
511
459
  }
512
- },
513
- {
514
- key: "createTransferPermit",
515
- value: /**
516
- * Creates a Permit2 `PermitTransferFrom` object for the order's maker asset.
517
- *
518
- * Can only be used for orders where `multipleFillsAllowed` is `false`.
519
- *
520
- * The returned permit authorizes the `permit2Proxy` address (as spender)
521
- * to transfer up to `makingAmount` of the `makerAsset` token,
522
- * with a random 256-bit nonce and the order's deadline.
523
- *
524
- * The resulting permit can be signed and then attached to the order
525
- * via {@link FusionOrder.withTransferPermit}.
526
- *
527
- * @param chainId - The chain ID used to resolve the default Permit2Proxy address
528
- * @param permit2Proxy - Optional address of the Permit2Proxy contract that will act as spender.
529
- * Defaults to the built-in address for the given `chainId`.
530
- * @returns A {@link PermitTransferFrom} instance that can be signed and attached to the order
531
- *
532
- * @throws If `multipleFillsAllowed` is `true`
533
- *
534
- * @see FusionOrder.withTransferPermit
535
- */ function createTransferPermit(chainIdOrPermit2Proxy, permit2Proxy) {
536
- assert(!this.multipleFillsAllowed, 'transfer permit can be used only for orders where multipleFillsAllowed=false');
537
- var spender = _instanceof(chainIdOrPermit2Proxy, Address) ? chainIdOrPermit2Proxy : permit2Proxy !== null && permit2Proxy !== void 0 ? permit2Proxy : getPermit2ProxyAddress(chainIdOrPermit2Proxy);
538
- return new PermitTransferFrom(this.makerAsset, this.makingAmount, spender, randBigInt(UINT_256_MAX), this.deadline);
539
- }
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
- },
564
- {
565
- key: "decodeTransferPermitSuffix",
566
- value: function decodeTransferPermitSuffix() {
567
- var suffix = this.inner.extension.makerAssetSuffix;
568
- if (suffix === ZX) {
569
- throw new Error('no makerAssetSuffix');
570
- }
571
- return decodeTransferFromSuffix(suffix);
572
- }
573
460
  }
574
461
  ], [
575
462
  {
@@ -644,14 +531,12 @@ export var FusionOrder = /*#__PURE__*/ function() {
644
531
  enablePermit2: makerTraits.isPermit2(),
645
532
  nonce: makerTraits.nonceOrEpoch(),
646
533
  permit: extension.makerPermit === ZX ? undefined : Interaction.decode(extension.makerPermit).data,
534
+ preInteraction: extension.preInteraction === ZX ? undefined : extension.preInteraction,
647
535
  unwrapWETH: makerTraits.isNativeUnwrapEnabled(),
648
536
  orderExpirationDelay: orderExpirationDelay,
649
537
  fees: extra === null || extra === void 0 ? void 0 : extra.fees,
650
538
  optimizeReceiverAddress: true
651
539
  });
652
- if (extension.makerAssetSuffix !== ZX) {
653
- fusionOrder.restoreMakerAssetSuffix(extension.makerAssetSuffix);
654
- }
655
540
  assert(providedSalt === fusionOrder.salt, 'invalid salt for passed extension');
656
541
  return fusionOrder;
657
542
  }