@1inch/fusion-sdk 2.4.6-rc.0 → 2.4.6-rc.3

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.
@@ -102,7 +102,11 @@ var Quote = /*#__PURE__*/ function() {
102
102
  bps: new _limitordersdk.Bps(BigInt(response.fee.bps))
103
103
  };
104
104
  this.surplusFee = response.surplusFee;
105
- this.integratorFeeParams = this.parseIntegratorFee(response);
105
+ this.integratorFeeParams = response.integratorFee && response.integratorFeeReceiver ? {
106
+ receiver: new _limitordersdk.Address(response.integratorFeeReceiver),
107
+ value: new _limitordersdk.Bps(BigInt(response.integratorFee)),
108
+ share: _limitordersdk.Bps.fromPercent(response.integratorFeeShare || 0)
109
+ } : undefined;
106
110
  }
107
111
  _create_class(Quote, [
108
112
  {
@@ -149,7 +153,7 @@ var Quote = /*#__PURE__*/ function() {
149
153
  orderExpirationDelay: paramsData === null || paramsData === void 0 ? void 0 : paramsData.orderExpirationDelay,
150
154
  source: this.params.source,
151
155
  enablePermit2: params.isPermit2,
152
- fees: buildFees(this.resolverFeePreset, this.integratorFeeParams, this.surplusFee)
156
+ fees: buildFees(this.resolverFeePreset, this.params.integratorFee || this.integratorFeeParams, this.surplusFee)
153
157
  };
154
158
  return this._createOrder(paramsData.network, this.settlementAddress, orderInfo, details, extra);
155
159
  }
@@ -190,24 +194,6 @@ var Quote = /*#__PURE__*/ function() {
190
194
  }
191
195
  return _index.FusionOrder.new(settlementExtension, orderInfo, details, extra);
192
196
  }
193
- },
194
- {
195
- key: "parseIntegratorFee",
196
- value: function parseIntegratorFee(response) {
197
- var _this_params_integratorFee_receiver, _this_params_integratorFee;
198
- if (!response.integratorFee) {
199
- return undefined;
200
- }
201
- var receiver = response.integratorFeeReceiver || ((_this_params_integratorFee = this.params.integratorFee) === null || _this_params_integratorFee === void 0 ? void 0 : (_this_params_integratorFee_receiver = _this_params_integratorFee.receiver) === null || _this_params_integratorFee_receiver === void 0 ? void 0 : _this_params_integratorFee_receiver.toString());
202
- if (!receiver) {
203
- return undefined;
204
- }
205
- return {
206
- receiver: new _limitordersdk.Address(receiver),
207
- value: new _limitordersdk.Bps(BigInt(response.integratorFee)),
208
- share: _limitordersdk.Bps.fromPercent(response.integratorFeeShare || 0)
209
- };
210
- }
211
197
  }
212
198
  ]);
213
199
  return Quote;
@@ -38,58 +38,6 @@ function _async_to_generator(fn) {
38
38
  });
39
39
  };
40
40
  }
41
- function _define_property(obj, key, value) {
42
- if (key in obj) {
43
- Object.defineProperty(obj, key, {
44
- value: value,
45
- enumerable: true,
46
- configurable: true,
47
- writable: true
48
- });
49
- } else {
50
- obj[key] = value;
51
- }
52
- return obj;
53
- }
54
- function _object_spread(target) {
55
- for(var i = 1; i < arguments.length; i++){
56
- var source = arguments[i] != null ? arguments[i] : {};
57
- var ownKeys = Object.keys(source);
58
- if (typeof Object.getOwnPropertySymbols === "function") {
59
- ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) {
60
- return Object.getOwnPropertyDescriptor(source, sym).enumerable;
61
- }));
62
- }
63
- ownKeys.forEach(function(key) {
64
- _define_property(target, key, source[key]);
65
- });
66
- }
67
- return target;
68
- }
69
- function ownKeys(object, enumerableOnly) {
70
- var keys = Object.keys(object);
71
- if (Object.getOwnPropertySymbols) {
72
- var symbols = Object.getOwnPropertySymbols(object);
73
- if (enumerableOnly) {
74
- symbols = symbols.filter(function(sym) {
75
- return Object.getOwnPropertyDescriptor(object, sym).enumerable;
76
- });
77
- }
78
- keys.push.apply(keys, symbols);
79
- }
80
- return keys;
81
- }
82
- function _object_spread_props(target, source) {
83
- source = source != null ? source : {};
84
- if (Object.getOwnPropertyDescriptors) {
85
- Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));
86
- } else {
87
- ownKeys(Object(source)).forEach(function(key) {
88
- Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
89
- });
90
- }
91
- return target;
92
- }
93
41
  function _ts_generator(thisArg, body) {
94
42
  var f, y, t, g, _ = {
95
43
  label: 0,
@@ -318,7 +266,7 @@ describe('Quoter API', function() {
318
266
  case 1:
319
267
  res = _state.sent();
320
268
  expect(res).toStrictEqual(QuoterResponseMock);
321
- expect(httpProvider.get).toHaveBeenCalledWith('https://test.com/quoter/v2.0/1/quote/receive/?fromTokenAddress=0x6b175474e89094c44da98b954eedeac495271d0f&toTokenAddress=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2&amount=1000000000000000000000&walletAddress=0x00000000219ab540356cbb839cbe05303d7705fa&surplus=true');
269
+ 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');
322
270
  return [
323
271
  2
324
272
  ];
@@ -340,6 +288,7 @@ describe('Quoter API', function() {
340
288
  amount: '1000000000000000000000',
341
289
  walletAddress: '0x00000000219ab540356cbb839cbe05303d7705fa',
342
290
  integratorFee: {
291
+ share: _limitordersdk.Bps.fromPercent(50),
343
292
  receiver: _limitordersdk.Address.fromBigInt(10n),
344
293
  value: new _limitordersdk.Bps(1n)
345
294
  },
@@ -375,6 +324,7 @@ describe('Quoter API', function() {
375
324
  amount: '1000000000000000000000',
376
325
  walletAddress: '0x00000000219ab540356cbb839cbe05303d7705fa',
377
326
  integratorFee: {
327
+ share: _limitordersdk.Bps.fromPercent(50),
378
328
  receiver: _limitordersdk.Address.fromBigInt(10n),
379
329
  value: new _limitordersdk.Bps(1n)
380
330
  },
@@ -411,6 +361,7 @@ describe('Quoter API', function() {
411
361
  amount: '1000000000000000000000',
412
362
  walletAddress: '0x00000000219ab540356cbb839cbe05303d7705fa',
413
363
  integratorFee: {
364
+ share: _limitordersdk.Bps.fromPercent(50),
414
365
  receiver: _limitordersdk.Address.fromBigInt(10n),
415
366
  value: new _limitordersdk.Bps(1n)
416
367
  },
@@ -463,6 +414,7 @@ describe('Quoter API', function() {
463
414
  amount: '1000000000000000000000',
464
415
  walletAddress: '0x00000000219ab540356cbb839cbe05303d7705fa',
465
416
  integratorFee: {
417
+ share: _limitordersdk.Bps.fromPercent(50),
466
418
  receiver: _limitordersdk.Address.fromBigInt(10n),
467
419
  value: new _limitordersdk.Bps(1n)
468
420
  },
@@ -501,52 +453,4 @@ describe('Quoter API', function() {
501
453
  }
502
454
  });
503
455
  }));
504
- describe('parseIntegratorFee', function() {
505
- it('should use response receiver when provided', function() {
506
- var _quote_integratorFeeParams, _quote_integratorFeeParams1, _quote_integratorFeeParams2;
507
- var responseWithFee = _object_spread_props(_object_spread({}, ResponseMock), {
508
- integratorFee: 100,
509
- integratorFeeReceiver: '0x1234567890123456789012345678901234567890',
510
- integratorFeeShare: 50
511
- });
512
- var quote = new _index.Quote(params, responseWithFee);
513
- expect(quote.integratorFeeParams).toBeDefined();
514
- expect((_quote_integratorFeeParams = quote.integratorFeeParams) === null || _quote_integratorFeeParams === void 0 ? void 0 : _quote_integratorFeeParams.receiver.toString()).toBe('0x1234567890123456789012345678901234567890');
515
- expect(Number((_quote_integratorFeeParams1 = quote.integratorFeeParams) === null || _quote_integratorFeeParams1 === void 0 ? void 0 : _quote_integratorFeeParams1.value.value)).toBe(100);
516
- expect(Number((_quote_integratorFeeParams2 = quote.integratorFeeParams) === null || _quote_integratorFeeParams2 === void 0 ? void 0 : _quote_integratorFeeParams2.share.value)).toBe(5000);
517
- });
518
- it('should fallback to request receiver when response receiver is missing', function() {
519
- var _quote_integratorFeeParams;
520
- var responseWithFeeNoReceiver = _object_spread_props(_object_spread({}, ResponseMock), {
521
- integratorFee: 100,
522
- integratorFeeShare: 50
523
- });
524
- var paramsWithFee = _quoterrequest.QuoterRequest.new({
525
- fromTokenAddress: '0x6b175474e89094c44da98b954eedeac495271d0f',
526
- toTokenAddress: '0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2',
527
- amount: '1000000000000000000000',
528
- walletAddress: '0x00000000219ab540356cbb839cbe05303d7705fa',
529
- integratorFee: {
530
- receiver: new _limitordersdk.Address('0xabcdef0123456789abcdef0123456789abcdef01'),
531
- value: new _limitordersdk.Bps(100n)
532
- },
533
- source: 'test-source'
534
- });
535
- var quote = new _index.Quote(paramsWithFee, responseWithFeeNoReceiver);
536
- expect(quote.integratorFeeParams).toBeDefined();
537
- expect((_quote_integratorFeeParams = quote.integratorFeeParams) === null || _quote_integratorFeeParams === void 0 ? void 0 : _quote_integratorFeeParams.receiver.toString()).toBe('0xabcdef0123456789abcdef0123456789abcdef01');
538
- });
539
- it('should return undefined when no receiver available', function() {
540
- var responseWithFeeNoReceiver = _object_spread_props(_object_spread({}, ResponseMock), {
541
- integratorFee: 100,
542
- integratorFeeShare: 50
543
- });
544
- var quote = new _index.Quote(params, responseWithFeeNoReceiver);
545
- expect(quote.integratorFeeParams).toBeUndefined();
546
- });
547
- it('should return undefined when no integratorFee in response', function() {
548
- var quote = new _index.Quote(params, ResponseMock);
549
- expect(quote.integratorFeeParams).toBeUndefined();
550
- });
551
- });
552
456
  });
@@ -63,7 +63,7 @@ var QuoterRequest = /*#__PURE__*/ function() {
63
63
  this.enableEstimate = params.enableEstimate || false;
64
64
  this.permit = params.permit;
65
65
  this.integratorFee = params.integratorFee;
66
- this.source = params.source;
66
+ this.source = params.source || 'sdk';
67
67
  var _params_isPermit2;
68
68
  this.isPermit2 = (_params_isPermit2 = params.isPermit2) !== null && _params_isPermit2 !== void 0 ? _params_isPermit2 : false;
69
69
  this.slippage = params.slippage;
@@ -76,6 +76,9 @@ var QuoterRequest = /*#__PURE__*/ function() {
76
76
  if (!(0, _validations.isValidAmount)(this.amount)) {
77
77
  throw new Error("".concat(this.amount, " is invalid amount"));
78
78
  }
79
+ if (this.integratorFee && this.source === 'sdk') {
80
+ throw new Error('cannot use fee without source');
81
+ }
79
82
  }
80
83
  _create_class(QuoterRequest, [
81
84
  {
@@ -13,6 +13,7 @@ describe(__filename, function() {
13
13
  amount: '1000000000000000000000',
14
14
  walletAddress: '0x00000000219ab540356cbb839cbe05303d7705fa',
15
15
  integratorFee: {
16
+ share: _limitordersdk.Bps.fromPercent(50),
16
17
  receiver: _limitordersdk.Address.fromBigInt(10n),
17
18
  value: new _limitordersdk.Bps(1n)
18
19
  }
@@ -25,6 +26,7 @@ describe(__filename, function() {
25
26
  amount: '1000000000000000000000',
26
27
  walletAddress: '0x00000000219ab540356cbb839cbe05303d7705fa',
27
28
  integratorFee: {
29
+ share: _limitordersdk.Bps.fromPercent(50),
28
30
  receiver: _limitordersdk.Address.fromBigInt(10n),
29
31
  value: new _limitordersdk.Bps(1n)
30
32
  }
@@ -39,6 +41,7 @@ describe(__filename, function() {
39
41
  amount: '1000000000000000000000',
40
42
  walletAddress: '0x00000000219ab540356cbb839cbe05303d7705fa',
41
43
  integratorFee: {
44
+ share: _limitordersdk.Bps.fromPercent(50),
42
45
  receiver: _limitordersdk.Address.fromBigInt(10n),
43
46
  value: new _limitordersdk.Bps(1n)
44
47
  }
@@ -53,6 +56,7 @@ describe(__filename, function() {
53
56
  amount: '1000000000000000000000',
54
57
  walletAddress: '0x0000000019ab540356cbb839be05303d7705fa1',
55
58
  integratorFee: {
59
+ share: _limitordersdk.Bps.fromPercent(50),
56
60
  receiver: _limitordersdk.Address.fromBigInt(10n),
57
61
  value: new _limitordersdk.Bps(1n)
58
62
  }
@@ -67,13 +71,14 @@ describe(__filename, function() {
67
71
  amount: 'dasdad',
68
72
  walletAddress: '0x00000000219ab540356cbb839cbe05303d7705fa',
69
73
  integratorFee: {
74
+ share: _limitordersdk.Bps.fromPercent(50),
70
75
  receiver: _limitordersdk.Address.fromBigInt(10n),
71
76
  value: new _limitordersdk.Bps(1n)
72
77
  }
73
78
  });
74
79
  }).toThrow(/is invalid amount/);
75
80
  });
76
- it('allows fee without source', function() {
81
+ it('returns error if fee is provided and source not', function() {
77
82
  expect(function() {
78
83
  return _quoterrequest.QuoterRequest.new({
79
84
  fromTokenAddress: '0x6b175474e89094c44da98b954eedeac495271d0f',
@@ -81,10 +86,11 @@ describe(__filename, function() {
81
86
  amount: '1000000',
82
87
  walletAddress: '0x00000000219ab540356cbb839cbe05303d7705fa',
83
88
  integratorFee: {
89
+ share: _limitordersdk.Bps.fromPercent(50),
84
90
  receiver: _limitordersdk.Address.fromBigInt(10n),
85
91
  value: new _limitordersdk.Bps(1n)
86
92
  }
87
93
  });
88
- }).not.toThrow();
94
+ }).toThrow(/cannot use fee without source/);
89
95
  });
90
96
  });
@@ -72,12 +72,15 @@ var FusionExtension = /*#__PURE__*/ function() {
72
72
  {
73
73
  key: "build",
74
74
  value: function build() {
75
- var _this_extra;
75
+ var _this_extra, _this_extra1;
76
76
  var amountData = this.buildAmountGetterData(true);
77
77
  var builder = new _limitordersdk.ExtensionBuilder().withMakingAmountData(this.address, amountData).withTakingAmountData(this.address, amountData).withPostInteraction(new _limitordersdk.Interaction(this.address, this.buildInteractionData()));
78
78
  if ((_this_extra = this.extra) === null || _this_extra === void 0 ? void 0 : _this_extra.makerPermit) {
79
- var _this_extra1, _this_extra2;
80
- 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);
79
+ var _this_extra2, _this_extra3;
80
+ 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);
81
+ }
82
+ if ((_this_extra1 = this.extra) === null || _this_extra1 === void 0 ? void 0 : _this_extra1.preInteraction) {
83
+ builder.withPreInteraction(this.extra.preInteraction);
81
84
  }
82
85
  return builder.build();
83
86
  }
@@ -228,6 +231,7 @@ var FusionExtension = /*#__PURE__*/ function() {
228
231
  }
229
232
  //endregion Parse amount data
230
233
  var makerPermit = extension.hasMakerPermit ? _limitordersdk.Interaction.decode(extension.makerPermit) : undefined;
234
+ var preInteraction = extension.hasPreInteraction ? _limitordersdk.Interaction.decode(extension.preInteraction) : undefined;
231
235
  (0, _assert.default)(amountData.fees.integratorFee.value === interactionData.fees.integratorFee.value, "invalid extension: integrator fee must be same in interaction data and in amount data");
232
236
  (0, _assert.default)(amountData.fees.resolverFee.value === interactionData.fees.resolverFee.value, "invalid extension: resolver fee must be same in interaction data and in amount data");
233
237
  (0, _assert.default)(amountData.fees.whitelistDiscount.equal(interactionData.fees.whitelistDiscount), "invalid extension: whitelistDiscount must be same in interaction data and in amount data");
@@ -240,6 +244,7 @@ var FusionExtension = /*#__PURE__*/ function() {
240
244
  if (!hasFees) {
241
245
  return new FusionExtension(settlementContract, auctionDetails, whitelist, surplusParams, {
242
246
  makerPermit: makerPermit,
247
+ preInteraction: preInteraction,
243
248
  customReceiver: customReceiver,
244
249
  fees: undefined
245
250
  });
@@ -247,6 +252,7 @@ var FusionExtension = /*#__PURE__*/ function() {
247
252
  var fees = new _index1.Fees(new _index1.ResolverFee(protocolFeeRecipient, interactionData.fees.resolverFee, interactionData.fees.whitelistDiscount), interactionData.fees.integratorFee.isZero() ? _index1.IntegratorFee.ZERO : new _index1.IntegratorFee(integratorFeeRecipient, protocolFeeRecipient, interactionData.fees.integratorFee, interactionData.fees.integratorShare));
248
253
  return new FusionExtension(settlementContract, auctionDetails, whitelist, surplusParams, {
249
254
  makerPermit: makerPermit,
255
+ preInteraction: preInteraction,
250
256
  fees: fees,
251
257
  customReceiver: customReceiver
252
258
  });
@@ -102,6 +102,7 @@ var FusionOrder = /*#__PURE__*/ function() {
102
102
  */ settlementExtensionContract, orderInfo, auctionDetails, whitelist) {
103
103
  var surplusParams = arguments.length > 4 && arguments[4] !== void 0 ? arguments[4] : _surplusparams.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.FusionExtension(settlementExtensionContract, auctionDetails, whitelist, surplusParams, {
104
104
  makerPermit: extra.permit ? new _limitordersdk.Interaction(orderInfo.makerAsset, extra.permit) : undefined,
105
+ preInteraction: extra.preInteraction ? _limitordersdk.Interaction.decode(extra.preInteraction) : undefined,
105
106
  customReceiver: orderInfo.receiver,
106
107
  fees: extra === null || extra === void 0 ? void 0 : extra.fees
107
108
  });
@@ -131,6 +132,9 @@ var FusionOrder = /*#__PURE__*/ function() {
131
132
  if (enablePermit2) {
132
133
  makerTraits.enablePermit2();
133
134
  }
135
+ if (extra.preInteraction) {
136
+ makerTraits.enablePreInteraction();
137
+ }
134
138
  if (extra.nonce !== undefined) {
135
139
  makerTraits.withNonce(extra.nonce);
136
140
  }
@@ -542,6 +546,7 @@ var FusionOrder = /*#__PURE__*/ function() {
542
546
  enablePermit2: makerTraits.isPermit2(),
543
547
  nonce: makerTraits.nonceOrEpoch(),
544
548
  permit: extension.makerPermit === _constants.ZX ? undefined : _limitordersdk.Interaction.decode(extension.makerPermit).data,
549
+ preInteraction: extension.preInteraction === _constants.ZX ? undefined : extension.preInteraction,
545
550
  unwrapWETH: makerTraits.isNativeUnwrapEnabled(),
546
551
  orderExpirationDelay: orderExpirationDelay,
547
552
  fees: extra === null || extra === void 0 ? void 0 : extra.fees,
@@ -466,3 +466,134 @@ describe('FusionOrder Native', function() {
466
466
  expect(nativeOrder.build().receiver).toEqual(settlementExt.toString());
467
467
  });
468
468
  });
469
+ describe('FusionOrder preInteraction', function() {
470
+ it('should create order with preInteraction and set PRE_INTERACTION_CALL_FLAG in makerTraits', function() {
471
+ var extensionContract = new _limitordersdk.Address('0x2ad5004c60e16e54d5007c80ce329adde5b51ef5');
472
+ var preInteraction = new _limitordersdk.Interaction(new _limitordersdk.Address('0x3a617c2fbaf8d7c58c793fbbd2d14eb4927876c1'), '0xdeadbeef01020304');
473
+ var order = _fusionorder.FusionOrder.new(extensionContract, {
474
+ makerAsset: new _limitordersdk.Address('0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c'),
475
+ takerAsset: new _limitordersdk.Address('0xda7ad9dea9397cffddae2f8a052b82f1484252b3'),
476
+ makingAmount: 1983000000000000n,
477
+ takingAmount: 79052953622246027n,
478
+ maker: new _limitordersdk.Address('0x3a617c2fbaf8d7c58c793fbbd2d14eb4927876c1')
479
+ }, {
480
+ auction: new _index.AuctionDetails({
481
+ duration: 180n,
482
+ startTime: 1673548149n,
483
+ initialRateBump: 50000,
484
+ points: [
485
+ {
486
+ coefficient: 20000,
487
+ delay: 12
488
+ }
489
+ ]
490
+ }),
491
+ whitelist: _index1.Whitelist.new(1673548139n, [
492
+ {
493
+ address: new _limitordersdk.Address('0x00000000219ab540356cbb839cbe05303d7705fa'),
494
+ allowFrom: 0n
495
+ }
496
+ ]),
497
+ surplus: _surplusparams.SurplusParams.NO_FEE
498
+ }, {
499
+ preInteraction: preInteraction.encode()
500
+ });
501
+ var makerTraits = new _limitordersdk.MakerTraits(BigInt(order.build().makerTraits));
502
+ expect(makerTraits.hasPreInteraction()).toBe(true);
503
+ });
504
+ it('should not set PRE_INTERACTION_CALL_FLAG when no preInteraction', function() {
505
+ var extensionContract = new _limitordersdk.Address('0x2ad5004c60e16e54d5007c80ce329adde5b51ef5');
506
+ var order = _fusionorder.FusionOrder.new(extensionContract, {
507
+ makerAsset: new _limitordersdk.Address('0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c'),
508
+ takerAsset: new _limitordersdk.Address('0xda7ad9dea9397cffddae2f8a052b82f1484252b3'),
509
+ makingAmount: 1983000000000000n,
510
+ takingAmount: 79052953622246027n,
511
+ maker: new _limitordersdk.Address('0x3a617c2fbaf8d7c58c793fbbd2d14eb4927876c1')
512
+ }, {
513
+ auction: new _index.AuctionDetails({
514
+ duration: 180n,
515
+ startTime: 1673548149n,
516
+ initialRateBump: 50000,
517
+ points: [
518
+ {
519
+ coefficient: 20000,
520
+ delay: 12
521
+ }
522
+ ]
523
+ }),
524
+ whitelist: _index1.Whitelist.new(1673548139n, [
525
+ {
526
+ address: new _limitordersdk.Address('0x00000000219ab540356cbb839cbe05303d7705fa'),
527
+ allowFrom: 0n
528
+ }
529
+ ]),
530
+ surplus: _surplusparams.SurplusParams.NO_FEE
531
+ });
532
+ var makerTraits = new _limitordersdk.MakerTraits(BigInt(order.build().makerTraits));
533
+ expect(makerTraits.hasPreInteraction()).toBe(false);
534
+ });
535
+ it('should round-trip order with preInteraction via fromDataAndExtension', function() {
536
+ var extensionContract = new _limitordersdk.Address('0x2ad5004c60e16e54d5007c80ce329adde5b51ef5');
537
+ var preInteractionTarget = new _limitordersdk.Address('0x3a617c2fbaf8d7c58c793fbbd2d14eb4927876c1');
538
+ var preInteractionCalldata = '0x0599a1fd1975848548e5b765925a935093a96ecc6f2ca216f77dcfd328b8a491';
539
+ var preInteraction = new _limitordersdk.Interaction(preInteractionTarget, preInteractionCalldata);
540
+ var order = _fusionorder.FusionOrder.new(extensionContract, {
541
+ makerAsset: new _limitordersdk.Address('0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c'),
542
+ takerAsset: new _limitordersdk.Address('0xda7ad9dea9397cffddae2f8a052b82f1484252b3'),
543
+ makingAmount: 1983000000000000n,
544
+ takingAmount: 79052953622246027n,
545
+ maker: new _limitordersdk.Address('0x3a617c2fbaf8d7c58c793fbbd2d14eb4927876c1')
546
+ }, {
547
+ auction: new _index.AuctionDetails({
548
+ duration: 180n,
549
+ startTime: 1673548149n,
550
+ initialRateBump: 50000,
551
+ points: [
552
+ {
553
+ coefficient: 20000,
554
+ delay: 12
555
+ }
556
+ ]
557
+ }),
558
+ whitelist: _index1.Whitelist.new(1673548139n, [
559
+ {
560
+ address: new _limitordersdk.Address('0x00000000219ab540356cbb839cbe05303d7705fa'),
561
+ allowFrom: 0n
562
+ }
563
+ ]),
564
+ surplus: _surplusparams.SurplusParams.NO_FEE
565
+ }, {
566
+ preInteraction: preInteraction.encode()
567
+ });
568
+ var built = order.build();
569
+ var extension = order.extension;
570
+ var restored = _fusionorder.FusionOrder.fromDataAndExtension({
571
+ salt: built.salt,
572
+ maker: built.maker,
573
+ receiver: built.receiver,
574
+ makerAsset: built.makerAsset,
575
+ takerAsset: built.takerAsset,
576
+ makerTraits: built.makerTraits,
577
+ makingAmount: built.makingAmount,
578
+ takingAmount: built.takingAmount
579
+ }, extension);
580
+ expect(restored.build().salt).toEqual(built.salt);
581
+ expect(restored.extension.encode()).toEqual(extension.encode());
582
+ });
583
+ it('should validate OKX order with preInteraction (real customer data)', function() {
584
+ var extensionHex = '0x000002b800000207000000d2000000d2000000d20000006900000000000000002ad5004c60e16e54d5007c80ce329adde5b51ef50000000000000069c930cb0000b403e4e400000000000064062324dfe7924cb4f3257d000000000000000000006ea9a11ae13b29f5c555d18bd45f0b94f54a968faa848f727be12534f24895770895ad27ad6b0d952ad5004c60e16e54d5007c80ce329adde5b51ef50000000000000069c930cb0000b403e4e400000000000064062324dfe7924cb4f3257d000000000000000000006ea9a11ae13b29f5c555d18bd45f0b94f54a968faa848f727be12534f24895770895ad27ad6b0d953a617c2fbaf8d7c58c793fbbd2d14eb4927876c10100000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070b872a96f0000000000000000000000000000000000000000000000000006715eae5b898683d0000000000000000000000000000000000000000000000000000000069c931e800000000000000000000000000000000000000000000000000000000000000410599a1fd1975848548e5b765925a935093a96ecc6f2ca216f77dcfd328b8a4917028648ec3e33d048184f9877d4892fb829ddc5d75a19c1c2ef064d2a38c012b1b000000000000000000000000000000000000000000000000000000000000002ad5004c60e16e54d5007c80ce329adde5b51ef500000000000000000000000000000000000000000090cbe4bdd538d6e9b379bff5fe72c3d67a521de500000000006469c930cb062324dfe7924cb4f3257d000c0000000000000000000000006ea9a11ae13b29f5c5550000d18bd45f0b94f54a968f0000aa848f727be12534f248000095770895ad27ad6b0d950000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00';
585
+ var extension = _limitordersdk.Extension.decode(extensionHex);
586
+ expect(function() {
587
+ _fusionorder.FusionOrder.fromDataAndExtension({
588
+ maker: '0x3a617c2fbaf8d7c58c793fbbd2d14eb4927876c1',
589
+ makerAsset: '0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c',
590
+ makerTraits: '69656178681823023809491920669288819567982727296017585526061607372909138935808',
591
+ makingAmount: '1983000000000000',
592
+ receiver: '0xb698362cc878094c406115efeeb13089b544e6c8',
593
+ salt: '1084071965642925953405739669729447852001208220133',
594
+ takerAsset: '0xda7ad9dea9397cffddae2f8a052b82f1484252b3',
595
+ takingAmount: '79052953622246027'
596
+ }, extension);
597
+ }).not.toThrow();
598
+ });
599
+ });
@@ -87,7 +87,11 @@ export var Quote = /*#__PURE__*/ function() {
87
87
  bps: new Bps(BigInt(response.fee.bps))
88
88
  };
89
89
  this.surplusFee = response.surplusFee;
90
- this.integratorFeeParams = this.parseIntegratorFee(response);
90
+ this.integratorFeeParams = response.integratorFee && response.integratorFeeReceiver ? {
91
+ receiver: new Address(response.integratorFeeReceiver),
92
+ value: new Bps(BigInt(response.integratorFee)),
93
+ share: Bps.fromPercent(response.integratorFeeShare || 0)
94
+ } : undefined;
91
95
  }
92
96
  _create_class(Quote, [
93
97
  {
@@ -134,7 +138,7 @@ export var Quote = /*#__PURE__*/ function() {
134
138
  orderExpirationDelay: paramsData === null || paramsData === void 0 ? void 0 : paramsData.orderExpirationDelay,
135
139
  source: this.params.source,
136
140
  enablePermit2: params.isPermit2,
137
- fees: buildFees(this.resolverFeePreset, this.integratorFeeParams, this.surplusFee)
141
+ fees: buildFees(this.resolverFeePreset, this.params.integratorFee || this.integratorFeeParams, this.surplusFee)
138
142
  };
139
143
  return this._createOrder(paramsData.network, this.settlementAddress, orderInfo, details, extra);
140
144
  }
@@ -175,24 +179,6 @@ export var Quote = /*#__PURE__*/ function() {
175
179
  }
176
180
  return FusionOrder.new(settlementExtension, orderInfo, details, extra);
177
181
  }
178
- },
179
- {
180
- key: "parseIntegratorFee",
181
- value: function parseIntegratorFee(response) {
182
- var _this_params_integratorFee_receiver, _this_params_integratorFee;
183
- if (!response.integratorFee) {
184
- return undefined;
185
- }
186
- var receiver = response.integratorFeeReceiver || ((_this_params_integratorFee = this.params.integratorFee) === null || _this_params_integratorFee === void 0 ? void 0 : (_this_params_integratorFee_receiver = _this_params_integratorFee.receiver) === null || _this_params_integratorFee_receiver === void 0 ? void 0 : _this_params_integratorFee_receiver.toString());
187
- if (!receiver) {
188
- return undefined;
189
- }
190
- return {
191
- receiver: new Address(receiver),
192
- value: new Bps(BigInt(response.integratorFee)),
193
- share: Bps.fromPercent(response.integratorFeeShare || 0)
194
- };
195
- }
196
182
  }
197
183
  ]);
198
184
  return Quote;
@@ -2,23 +2,11 @@
2
2
  * Order will expire in `orderExpirationDelay` after auction ends
3
3
  * Default 12s
4
4
  */ /**
5
- * Integrator fee parameters for SDK requests.
6
- * Used when calling getQuote() or createOrder().
7
- */ /**
8
- * Address which will receive integrator's portion of the fee.
9
- */ /**
10
- * How much to charge in basis points (1% = 100 bps)
11
- */ /**
12
- * Integrator fee parameters from API response.
13
- * Contains authoritative values calculated by backend.
14
- */ /**
15
5
  * Address which will receive `share` of `value` fee, other part will be sent to protocol
16
6
  */ /**
17
- * How much to charge in basis points
18
- */ /**
19
- * Integrator will receive only `share` part from charged fee (rest goes to protocol)
7
+ * How much to charge
20
8
  */ /**
21
- * @deprecated Use IntegratorFeeRequest for requests or IntegratorFeeResponse for responses
22
- */ export { }; /**
9
+ * Integrator will receive only `share` part from charged fee
10
+ */ export { }; /**
23
11
  * protocol address
24
12
  */