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