@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.
- package/dist/cjs/api/quoter/quote/quote.js +7 -21
- package/dist/cjs/api/quoter/quoter.api.spec.js +5 -101
- package/dist/cjs/api/quoter/quoter.request.js +4 -1
- package/dist/cjs/api/quoter/quoter.request.spec.js +8 -2
- package/dist/cjs/fusion-order/fusion-order.js +3 -0
- package/dist/cjs/fusion-order/fusion-order.spec.js +33 -1
- package/dist/esm/api/quoter/quote/quote.js +7 -21
- package/dist/esm/api/quoter/quote/types.js +3 -15
- package/dist/esm/api/quoter/quoter.api.spec.js +5 -101
- package/dist/esm/api/quoter/quoter.request.js +4 -1
- package/dist/esm/api/quoter/quoter.request.spec.js +8 -2
- package/dist/esm/fusion-order/fusion-order.js +3 -0
- package/dist/esm/fusion-order/fusion-order.spec.js +33 -1
- package/dist/esm/package.json +1 -1
- package/dist/types/src/api/quoter/quote/quote.d.ts +2 -3
- package/dist/types/src/api/quoter/quote/types.d.ts +1 -6
- package/dist/types/src/api/quoter/quoter.request.d.ts +3 -3
- package/dist/types/src/api/quoter/types.d.ts +2 -2
- package/dist/types/src/sdk/types.d.ts +3 -3
- package/dist/types/tsconfig.types.tsbuildinfo +1 -1
- package/package.json +1 -1
|
@@ -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 =
|
|
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('
|
|
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
|
-
}).
|
|
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(
|
|
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 =
|
|
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
|
|
18
|
-
*/ /**
|
|
19
|
-
* Integrator will receive only `share` part from charged fee (rest goes to protocol)
|
|
7
|
+
* How much to charge
|
|
20
8
|
*/ /**
|
|
21
|
-
|
|
22
|
-
|
|
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('
|
|
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
|
-
}).
|
|
90
|
+
}).toThrow(/cannot use fee without source/);
|
|
85
91
|
});
|
|
86
92
|
});
|