@1inch/fusion-sdk 2.4.5-rc.0 → 2.4.5

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
  {
@@ -138,7 +142,7 @@ var Quote = /*#__PURE__*/ function() {
138
142
  var details = {
139
143
  auction: auctionDetails,
140
144
  whitelist: this.getWhitelist(auctionDetails.startTime, preset.exclusiveResolver),
141
- surplus: new _index.SurplusParams(this.marketReturn, _limitordersdk.Bps.fromPercent(this.surplusFee || 0))
145
+ surplus: this.marketReturn > orderInfo.takingAmount ? new _index.SurplusParams(this.marketReturn, _limitordersdk.Bps.fromPercent(this.surplusFee || 0)) : _index.SurplusParams.NO_FEE
142
146
  };
143
147
  var extra = {
144
148
  nonce: nonce,
@@ -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
  });
@@ -143,6 +143,9 @@ var FusionOrder = /*#__PURE__*/ function() {
143
143
  if (orderInfo.makerAsset.isNative()) {
144
144
  throw new Error('use FusionOrder.fromNative to create order from native asset');
145
145
  }
146
+ if (!surplusParams.isZero()) {
147
+ (0, _assert.default)(orderInfo.takingAmount <= surplusParams.estimatedTakerAmount, 'order.takingAmount must be less then surplusParams.estimatedTakerAmount');
148
+ }
146
149
  var optimizeReceiverAddress = extra.optimizeReceiverAddress !== undefined ? extra.optimizeReceiverAddress : FusionOrder.defaultExtra.optimizeReceiverAddress;
147
150
  this.inner = new _limitordersdk.LimitOrder(_object_spread_props(_object_spread({}, orderInfo), {
148
151
  receiver: receiver,
@@ -296,6 +296,38 @@ describe('Fusion Order', function() {
296
296
  expect(userAmount).toEqual(75000000n);
297
297
  expect(surplus).toEqual(25000000n);
298
298
  });
299
+ it('should fail to create fusion order with bad surplus params', function() {
300
+ var extensionContract = new _limitordersdk.Address('0x8273f37417da37c4a6c3995e82cf442f87a25d9c');
301
+ expect(function() {
302
+ return _fusionorder.FusionOrder.new(extensionContract, {
303
+ makerAsset: new _limitordersdk.Address('0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2'),
304
+ takerAsset: new _limitordersdk.Address('0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48'),
305
+ makingAmount: 1000000000000000000n,
306
+ takingAmount: 1420000000n,
307
+ maker: new _limitordersdk.Address('0x00000000219ab540356cbb839cbe05303d7705fa'),
308
+ salt: 10n
309
+ }, {
310
+ auction: new _index.AuctionDetails({
311
+ duration: 180n,
312
+ startTime: 1673548149n,
313
+ initialRateBump: 50000,
314
+ points: [
315
+ {
316
+ coefficient: 20000,
317
+ delay: 12
318
+ }
319
+ ]
320
+ }),
321
+ whitelist: _index1.Whitelist.new(1673548139n, [
322
+ {
323
+ address: new _limitordersdk.Address('0x00000000219ab540356cbb839cbe05303d7705fa'),
324
+ allowFrom: 0n
325
+ }
326
+ ]),
327
+ surplus: new _surplusparams.SurplusParams(1420000000n - 1n, _limitordersdk.Bps.fromFraction(0.1))
328
+ });
329
+ }).toThrow('order.takingAmount must be less then surplusParams.estimatedTakerAmount');
330
+ });
299
331
  });
300
332
  describe('FusionOrder Native', function() {
301
333
  it('should correct detect that order is from native asset', function() {
@@ -429,7 +461,7 @@ describe('FusionOrder Native', function() {
429
461
  allowFrom: 0n
430
462
  }
431
463
  ]),
432
- surplus: new _surplusparams.SurplusParams(10n, new _limitordersdk.Bps(10000n))
464
+ surplus: new _surplusparams.SurplusParams(1420000000n * 2n, new _limitordersdk.Bps(10000n))
433
465
  });
434
466
  expect(nativeOrder.build().receiver).toEqual(settlementExt.toString());
435
467
  });
@@ -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
  {
@@ -123,7 +127,7 @@ export var Quote = /*#__PURE__*/ function() {
123
127
  var details = {
124
128
  auction: auctionDetails,
125
129
  whitelist: this.getWhitelist(auctionDetails.startTime, preset.exclusiveResolver),
126
- surplus: new SurplusParams(this.marketReturn, Bps.fromPercent(this.surplusFee || 0))
130
+ surplus: this.marketReturn > orderInfo.takingAmount ? new SurplusParams(this.marketReturn, Bps.fromPercent(this.surplusFee || 0)) : SurplusParams.NO_FEE
127
131
  };
128
132
  var extra = {
129
133
  nonce: nonce,
@@ -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
  */
@@ -27,58 +27,6 @@ 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
- }
82
30
  function _ts_generator(thisArg, body) {
83
31
  var f, y, t, g, _ = {
84
32
  label: 0,
@@ -314,7 +262,7 @@ describe('Quoter API', function() {
314
262
  case 1:
315
263
  res = _state.sent();
316
264
  expect(res).toStrictEqual(QuoterResponseMock);
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
+ 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');
318
266
  return [
319
267
  2
320
268
  ];
@@ -336,6 +284,7 @@ describe('Quoter API', function() {
336
284
  amount: '1000000000000000000000',
337
285
  walletAddress: '0x00000000219ab540356cbb839cbe05303d7705fa',
338
286
  integratorFee: {
287
+ share: Bps.fromPercent(50),
339
288
  receiver: Address.fromBigInt(10n),
340
289
  value: new Bps(1n)
341
290
  },
@@ -371,6 +320,7 @@ describe('Quoter API', function() {
371
320
  amount: '1000000000000000000000',
372
321
  walletAddress: '0x00000000219ab540356cbb839cbe05303d7705fa',
373
322
  integratorFee: {
323
+ share: Bps.fromPercent(50),
374
324
  receiver: Address.fromBigInt(10n),
375
325
  value: new Bps(1n)
376
326
  },
@@ -407,6 +357,7 @@ describe('Quoter API', function() {
407
357
  amount: '1000000000000000000000',
408
358
  walletAddress: '0x00000000219ab540356cbb839cbe05303d7705fa',
409
359
  integratorFee: {
360
+ share: Bps.fromPercent(50),
410
361
  receiver: Address.fromBigInt(10n),
411
362
  value: new Bps(1n)
412
363
  },
@@ -459,6 +410,7 @@ describe('Quoter API', function() {
459
410
  amount: '1000000000000000000000',
460
411
  walletAddress: '0x00000000219ab540356cbb839cbe05303d7705fa',
461
412
  integratorFee: {
413
+ share: Bps.fromPercent(50),
462
414
  receiver: Address.fromBigInt(10n),
463
415
  value: new Bps(1n)
464
416
  },
@@ -497,52 +449,4 @@ describe('Quoter API', function() {
497
449
  }
498
450
  });
499
451
  }));
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
- });
548
452
  });
@@ -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;
56
+ this.source = params.source || 'sdk';
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,6 +66,9 @@ 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
+ }
69
72
  }
70
73
  _create_class(QuoterRequest, [
71
74
  {
@@ -9,6 +9,7 @@ describe(__filename, function() {
9
9
  amount: '1000000000000000000000',
10
10
  walletAddress: '0x00000000219ab540356cbb839cbe05303d7705fa',
11
11
  integratorFee: {
12
+ share: Bps.fromPercent(50),
12
13
  receiver: Address.fromBigInt(10n),
13
14
  value: new Bps(1n)
14
15
  }
@@ -21,6 +22,7 @@ describe(__filename, function() {
21
22
  amount: '1000000000000000000000',
22
23
  walletAddress: '0x00000000219ab540356cbb839cbe05303d7705fa',
23
24
  integratorFee: {
25
+ share: Bps.fromPercent(50),
24
26
  receiver: Address.fromBigInt(10n),
25
27
  value: new Bps(1n)
26
28
  }
@@ -35,6 +37,7 @@ describe(__filename, function() {
35
37
  amount: '1000000000000000000000',
36
38
  walletAddress: '0x00000000219ab540356cbb839cbe05303d7705fa',
37
39
  integratorFee: {
40
+ share: Bps.fromPercent(50),
38
41
  receiver: Address.fromBigInt(10n),
39
42
  value: new Bps(1n)
40
43
  }
@@ -49,6 +52,7 @@ describe(__filename, function() {
49
52
  amount: '1000000000000000000000',
50
53
  walletAddress: '0x0000000019ab540356cbb839be05303d7705fa1',
51
54
  integratorFee: {
55
+ share: Bps.fromPercent(50),
52
56
  receiver: Address.fromBigInt(10n),
53
57
  value: new Bps(1n)
54
58
  }
@@ -63,13 +67,14 @@ describe(__filename, function() {
63
67
  amount: 'dasdad',
64
68
  walletAddress: '0x00000000219ab540356cbb839cbe05303d7705fa',
65
69
  integratorFee: {
70
+ share: Bps.fromPercent(50),
66
71
  receiver: Address.fromBigInt(10n),
67
72
  value: new Bps(1n)
68
73
  }
69
74
  });
70
75
  }).toThrow(/is invalid amount/);
71
76
  });
72
- it('allows fee without source', function() {
77
+ it('returns error if fee is provided and source not', function() {
73
78
  expect(function() {
74
79
  return QuoterRequest.new({
75
80
  fromTokenAddress: '0x6b175474e89094c44da98b954eedeac495271d0f',
@@ -77,10 +82,11 @@ describe(__filename, function() {
77
82
  amount: '1000000',
78
83
  walletAddress: '0x00000000219ab540356cbb839cbe05303d7705fa',
79
84
  integratorFee: {
85
+ share: Bps.fromPercent(50),
80
86
  receiver: Address.fromBigInt(10n),
81
87
  value: new Bps(1n)
82
88
  }
83
89
  });
84
- }).not.toThrow();
90
+ }).toThrow(/cannot use fee without source/);
85
91
  });
86
92
  });