@1inch/fusion-sdk 2.4.4 → 2.4.5-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.
@@ -102,11 +102,7 @@ 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 = 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;
105
+ this.integratorFeeParams = this.parseIntegratorFee(response);
110
106
  }
111
107
  _create_class(Quote, [
112
108
  {
@@ -153,7 +149,7 @@ var Quote = /*#__PURE__*/ function() {
153
149
  orderExpirationDelay: paramsData === null || paramsData === void 0 ? void 0 : paramsData.orderExpirationDelay,
154
150
  source: this.params.source,
155
151
  enablePermit2: params.isPermit2,
156
- fees: buildFees(this.resolverFeePreset, this.params.integratorFee || this.integratorFeeParams, this.surplusFee)
152
+ fees: buildFees(this.resolverFeePreset, this.integratorFeeParams, this.surplusFee)
157
153
  };
158
154
  return this._createOrder(paramsData.network, this.settlementAddress, orderInfo, details, extra);
159
155
  }
@@ -194,6 +190,24 @@ var Quote = /*#__PURE__*/ function() {
194
190
  }
195
191
  return _index.FusionOrder.new(settlementExtension, orderInfo, details, extra);
196
192
  }
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
+ }
197
211
  }
198
212
  ]);
199
213
  return Quote;
@@ -38,6 +38,58 @@ 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
+ }
41
93
  function _ts_generator(thisArg, body) {
42
94
  var f, y, t, g, _ = {
43
95
  label: 0,
@@ -266,7 +318,7 @@ describe('Quoter API', function() {
266
318
  case 1:
267
319
  res = _state.sent();
268
320
  expect(res).toStrictEqual(QuoterResponseMock);
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');
321
+ expect(httpProvider.get).toHaveBeenCalledWith('https://test.com/quoter/v2.0/1/quote/receive/?fromTokenAddress=0x6b175474e89094c44da98b954eedeac495271d0f&toTokenAddress=0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2&amount=1000000000000000000000&walletAddress=0x00000000219ab540356cbb839cbe05303d7705fa&surplus=true');
270
322
  return [
271
323
  2
272
324
  ];
@@ -288,7 +340,6 @@ describe('Quoter API', function() {
288
340
  amount: '1000000000000000000000',
289
341
  walletAddress: '0x00000000219ab540356cbb839cbe05303d7705fa',
290
342
  integratorFee: {
291
- share: _limitordersdk.Bps.fromPercent(50),
292
343
  receiver: _limitordersdk.Address.fromBigInt(10n),
293
344
  value: new _limitordersdk.Bps(1n)
294
345
  },
@@ -324,7 +375,6 @@ describe('Quoter API', function() {
324
375
  amount: '1000000000000000000000',
325
376
  walletAddress: '0x00000000219ab540356cbb839cbe05303d7705fa',
326
377
  integratorFee: {
327
- share: _limitordersdk.Bps.fromPercent(50),
328
378
  receiver: _limitordersdk.Address.fromBigInt(10n),
329
379
  value: new _limitordersdk.Bps(1n)
330
380
  },
@@ -361,7 +411,6 @@ describe('Quoter API', function() {
361
411
  amount: '1000000000000000000000',
362
412
  walletAddress: '0x00000000219ab540356cbb839cbe05303d7705fa',
363
413
  integratorFee: {
364
- share: _limitordersdk.Bps.fromPercent(50),
365
414
  receiver: _limitordersdk.Address.fromBigInt(10n),
366
415
  value: new _limitordersdk.Bps(1n)
367
416
  },
@@ -414,7 +463,6 @@ describe('Quoter API', function() {
414
463
  amount: '1000000000000000000000',
415
464
  walletAddress: '0x00000000219ab540356cbb839cbe05303d7705fa',
416
465
  integratorFee: {
417
- share: _limitordersdk.Bps.fromPercent(50),
418
466
  receiver: _limitordersdk.Address.fromBigInt(10n),
419
467
  value: new _limitordersdk.Bps(1n)
420
468
  },
@@ -453,4 +501,52 @@ describe('Quoter API', function() {
453
501
  }
454
502
  });
455
503
  }));
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
+ });
456
552
  });
@@ -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 || 'sdk';
66
+ this.source = params.source;
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,9 +76,6 @@ 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
- }
82
79
  }
83
80
  _create_class(QuoterRequest, [
84
81
  {
@@ -13,7 +13,6 @@ describe(__filename, function() {
13
13
  amount: '1000000000000000000000',
14
14
  walletAddress: '0x00000000219ab540356cbb839cbe05303d7705fa',
15
15
  integratorFee: {
16
- share: _limitordersdk.Bps.fromPercent(50),
17
16
  receiver: _limitordersdk.Address.fromBigInt(10n),
18
17
  value: new _limitordersdk.Bps(1n)
19
18
  }
@@ -26,7 +25,6 @@ describe(__filename, function() {
26
25
  amount: '1000000000000000000000',
27
26
  walletAddress: '0x00000000219ab540356cbb839cbe05303d7705fa',
28
27
  integratorFee: {
29
- share: _limitordersdk.Bps.fromPercent(50),
30
28
  receiver: _limitordersdk.Address.fromBigInt(10n),
31
29
  value: new _limitordersdk.Bps(1n)
32
30
  }
@@ -41,7 +39,6 @@ describe(__filename, function() {
41
39
  amount: '1000000000000000000000',
42
40
  walletAddress: '0x00000000219ab540356cbb839cbe05303d7705fa',
43
41
  integratorFee: {
44
- share: _limitordersdk.Bps.fromPercent(50),
45
42
  receiver: _limitordersdk.Address.fromBigInt(10n),
46
43
  value: new _limitordersdk.Bps(1n)
47
44
  }
@@ -56,7 +53,6 @@ describe(__filename, function() {
56
53
  amount: '1000000000000000000000',
57
54
  walletAddress: '0x0000000019ab540356cbb839be05303d7705fa1',
58
55
  integratorFee: {
59
- share: _limitordersdk.Bps.fromPercent(50),
60
56
  receiver: _limitordersdk.Address.fromBigInt(10n),
61
57
  value: new _limitordersdk.Bps(1n)
62
58
  }
@@ -71,14 +67,13 @@ describe(__filename, function() {
71
67
  amount: 'dasdad',
72
68
  walletAddress: '0x00000000219ab540356cbb839cbe05303d7705fa',
73
69
  integratorFee: {
74
- share: _limitordersdk.Bps.fromPercent(50),
75
70
  receiver: _limitordersdk.Address.fromBigInt(10n),
76
71
  value: new _limitordersdk.Bps(1n)
77
72
  }
78
73
  });
79
74
  }).toThrow(/is invalid amount/);
80
75
  });
81
- it('returns error if fee is provided and source not', function() {
76
+ it('allows fee without source', function() {
82
77
  expect(function() {
83
78
  return _quoterrequest.QuoterRequest.new({
84
79
  fromTokenAddress: '0x6b175474e89094c44da98b954eedeac495271d0f',
@@ -86,11 +81,10 @@ describe(__filename, function() {
86
81
  amount: '1000000',
87
82
  walletAddress: '0x00000000219ab540356cbb839cbe05303d7705fa',
88
83
  integratorFee: {
89
- share: _limitordersdk.Bps.fromPercent(50),
90
84
  receiver: _limitordersdk.Address.fromBigInt(10n),
91
85
  value: new _limitordersdk.Bps(1n)
92
86
  }
93
87
  });
94
- }).toThrow(/cannot use fee without source/);
88
+ }).not.toThrow();
95
89
  });
96
90
  });
@@ -87,11 +87,7 @@ 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 = 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;
90
+ this.integratorFeeParams = this.parseIntegratorFee(response);
95
91
  }
96
92
  _create_class(Quote, [
97
93
  {
@@ -138,7 +134,7 @@ export var Quote = /*#__PURE__*/ function() {
138
134
  orderExpirationDelay: paramsData === null || paramsData === void 0 ? void 0 : paramsData.orderExpirationDelay,
139
135
  source: this.params.source,
140
136
  enablePermit2: params.isPermit2,
141
- fees: buildFees(this.resolverFeePreset, this.params.integratorFee || this.integratorFeeParams, this.surplusFee)
137
+ fees: buildFees(this.resolverFeePreset, this.integratorFeeParams, this.surplusFee)
142
138
  };
143
139
  return this._createOrder(paramsData.network, this.settlementAddress, orderInfo, details, extra);
144
140
  }
@@ -179,6 +175,24 @@ export var Quote = /*#__PURE__*/ function() {
179
175
  }
180
176
  return FusionOrder.new(settlementExtension, orderInfo, details, extra);
181
177
  }
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
+ }
182
196
  }
183
197
  ]);
184
198
  return Quote;
@@ -2,11 +2,23 @@
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
+ */ /**
5
15
  * Address which will receive `share` of `value` fee, other part will be sent to protocol
6
16
  */ /**
7
- * How much to charge
17
+ * How much to charge in basis points
18
+ */ /**
19
+ * Integrator will receive only `share` part from charged fee (rest goes to protocol)
8
20
  */ /**
9
- * Integrator will receive only `share` part from charged fee
10
- */ export { }; /**
21
+ * @deprecated Use IntegratorFeeRequest for requests or IntegratorFeeResponse for responses
22
+ */ export { }; /**
11
23
  * protocol address
12
24
  */
@@ -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,
@@ -262,7 +314,7 @@ describe('Quoter API', function() {
262
314
  case 1:
263
315
  res = _state.sent();
264
316
  expect(res).toStrictEqual(QuoterResponseMock);
265
- 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');
266
318
  return [
267
319
  2
268
320
  ];
@@ -284,7 +336,6 @@ describe('Quoter API', function() {
284
336
  amount: '1000000000000000000000',
285
337
  walletAddress: '0x00000000219ab540356cbb839cbe05303d7705fa',
286
338
  integratorFee: {
287
- share: Bps.fromPercent(50),
288
339
  receiver: Address.fromBigInt(10n),
289
340
  value: new Bps(1n)
290
341
  },
@@ -320,7 +371,6 @@ describe('Quoter API', function() {
320
371
  amount: '1000000000000000000000',
321
372
  walletAddress: '0x00000000219ab540356cbb839cbe05303d7705fa',
322
373
  integratorFee: {
323
- share: Bps.fromPercent(50),
324
374
  receiver: Address.fromBigInt(10n),
325
375
  value: new Bps(1n)
326
376
  },
@@ -357,7 +407,6 @@ describe('Quoter API', function() {
357
407
  amount: '1000000000000000000000',
358
408
  walletAddress: '0x00000000219ab540356cbb839cbe05303d7705fa',
359
409
  integratorFee: {
360
- share: Bps.fromPercent(50),
361
410
  receiver: Address.fromBigInt(10n),
362
411
  value: new Bps(1n)
363
412
  },
@@ -410,7 +459,6 @@ describe('Quoter API', function() {
410
459
  amount: '1000000000000000000000',
411
460
  walletAddress: '0x00000000219ab540356cbb839cbe05303d7705fa',
412
461
  integratorFee: {
413
- share: Bps.fromPercent(50),
414
462
  receiver: Address.fromBigInt(10n),
415
463
  value: new Bps(1n)
416
464
  },
@@ -449,4 +497,52 @@ describe('Quoter API', function() {
449
497
  }
450
498
  });
451
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
+ });
452
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 +1 @@
1
- {"name":"@1inch/fusion-sdk","version":"2.4.4","type":"module"}
1
+ {"name":"@1inch/fusion-sdk","version":"2.4.5-rc.0","type":"module"}
@@ -1,5 +1,5 @@
1
1
  import { Address, ProxyFactory } from '@1inch/limit-order-sdk';
2
- import { FusionOrderParamsData, IntegratorFeeParams, ResolverFeePreset } from './types.js';
2
+ import { FusionOrderParamsData, IntegratorFeeResponse, ResolverFeePreset } from './types.js';
3
3
  import { Cost, PresetEnum, QuoterResponse } from '../types.js';
4
4
  import { Preset } from '../preset.js';
5
5
  import { FusionOrder } from '../../../fusion-order/index.js';
@@ -25,10 +25,11 @@ export declare class Quote {
25
25
  readonly slippage: number;
26
26
  readonly resolverFeePreset: ResolverFeePreset;
27
27
  readonly surplusFee?: number;
28
- readonly integratorFeeParams?: IntegratorFeeParams;
28
+ readonly integratorFeeParams?: IntegratorFeeResponse;
29
29
  constructor(params: QuoterRequest, response: QuoterResponse);
30
30
  createFusionOrder(paramsData: Omit<FusionOrderParamsData, 'permit' | 'isPermit2'>): FusionOrder;
31
31
  getPreset(type?: PresetEnum): Preset;
32
32
  private getWhitelist;
33
33
  private _createOrder;
34
+ private parseIntegratorFee;
34
35
  }
@@ -13,11 +13,16 @@ export type FusionOrderParamsData = {
13
13
  delayAuctionStartTimeBy?: bigint;
14
14
  orderExpirationDelay?: bigint;
15
15
  };
16
- export type IntegratorFeeParams = {
16
+ export type IntegratorFeeRequest = {
17
+ receiver: Address;
18
+ value: Bps;
19
+ };
20
+ export type IntegratorFeeResponse = {
17
21
  receiver: Address;
18
22
  value: Bps;
19
23
  share: Bps;
20
24
  };
25
+ export type IntegratorFeeParams = IntegratorFeeResponse;
21
26
  export type ResolverFeePreset = {
22
27
  receiver: Address;
23
28
  bps: Bps;
@@ -1,6 +1,6 @@
1
1
  import { Address } from '@1inch/limit-order-sdk';
2
2
  import { QuoterRequestParams, QuoterRequestParamsRaw } from './types.js';
3
- import { IntegratorFeeParams } from './quote/index.js';
3
+ import { IntegratorFeeRequest } from './quote/index.js';
4
4
  export declare class QuoterRequest {
5
5
  readonly fromTokenAddress: Address;
6
6
  readonly toTokenAddress: Address;
@@ -8,8 +8,8 @@ export declare class QuoterRequest {
8
8
  readonly walletAddress: Address;
9
9
  readonly enableEstimate: boolean;
10
10
  readonly permit: string | undefined;
11
- readonly integratorFee?: IntegratorFeeParams;
12
- readonly source: string;
11
+ readonly integratorFee?: IntegratorFeeRequest;
12
+ readonly source?: string;
13
13
  readonly isPermit2: boolean;
14
14
  readonly slippage?: number;
15
15
  constructor(params: QuoterRequestParams);
@@ -1,4 +1,4 @@
1
- import { IntegratorFeeParams } from './quote/index.js';
1
+ import { IntegratorFeeRequest } from './quote/index.js';
2
2
  import { NetworkEnum } from '../../constants.js';
3
3
  export type QuoterRequestParams = {
4
4
  fromTokenAddress: string;
@@ -7,7 +7,7 @@ export type QuoterRequestParams = {
7
7
  walletAddress: string;
8
8
  enableEstimate?: boolean;
9
9
  permit?: string;
10
- integratorFee?: IntegratorFeeParams;
10
+ integratorFee?: IntegratorFeeRequest;
11
11
  source?: string;
12
12
  isPermit2?: boolean;
13
13
  slippage?: number;