@defisaver/automation-sdk 3.3.13-strategies-refactor-dev → 3.3.14
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/cjs/services/strategiesService.js +17 -30
- package/cjs/services/strategySubService.d.ts +11 -5
- package/cjs/services/strategySubService.js +62 -27
- package/cjs/services/strategySubService.test.js +234 -0
- package/cjs/services/subDataService.d.ts +2 -35
- package/cjs/services/subDataService.js +20 -84
- package/cjs/services/subDataService.test.js +42 -0
- package/esm/services/strategiesService.js +17 -30
- package/esm/services/strategySubService.d.ts +11 -5
- package/esm/services/strategySubService.js +58 -26
- package/esm/services/strategySubService.test.js +236 -2
- package/esm/services/subDataService.d.ts +2 -35
- package/esm/services/subDataService.js +19 -82
- package/esm/services/subDataService.test.js +42 -0
- package/package.json +1 -1
- package/src/services/strategiesService.ts +17 -30
- package/src/services/strategySubService.test.ts +279 -0
- package/src/services/strategySubService.ts +111 -60
- package/src/services/subDataService.test.ts +48 -0
- package/src/services/subDataService.ts +28 -107
|
@@ -81,6 +81,23 @@ export const makerEncode = {
|
|
|
81
81
|
|
|
82
82
|
return [strategyOrBundleId, isBundle, triggerData, subData];
|
|
83
83
|
},
|
|
84
|
+
leverageManagement(
|
|
85
|
+
vaultId: number,
|
|
86
|
+
triggerRepayRatio: string,
|
|
87
|
+
triggerBoostRatio: string,
|
|
88
|
+
targetBoostRatio: string,
|
|
89
|
+
targetRepayRatio: string,
|
|
90
|
+
boostEnabled: boolean,
|
|
91
|
+
) {
|
|
92
|
+
return [
|
|
93
|
+
vaultId,
|
|
94
|
+
new Dec(triggerRepayRatio).mul(1e16).toString(),
|
|
95
|
+
new Dec(triggerBoostRatio).mul(1e16).toString(),
|
|
96
|
+
new Dec(targetBoostRatio).mul(1e16).toString(),
|
|
97
|
+
new Dec(targetRepayRatio).mul(1e16).toString(),
|
|
98
|
+
boostEnabled,
|
|
99
|
+
];
|
|
100
|
+
},
|
|
84
101
|
leverageManagementWithoutSubProxy(
|
|
85
102
|
vaultId: number,
|
|
86
103
|
triggerRatio: number,
|
|
@@ -162,19 +179,20 @@ export const liquityEncode = {
|
|
|
162
179
|
|
|
163
180
|
return [strategyId, isBundle, triggerData, subData];
|
|
164
181
|
},
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
182
|
+
leverageManagement(
|
|
183
|
+
triggerRepayRatio:string,
|
|
184
|
+
triggerBoostRatio:string,
|
|
185
|
+
targetBoostRatio:string,
|
|
186
|
+
targetRepayRatio:string,
|
|
187
|
+
boostEnabled:boolean,
|
|
171
188
|
) {
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
189
|
+
return [
|
|
190
|
+
new Dec(triggerRepayRatio).mul(1e16).toString(),
|
|
191
|
+
new Dec(triggerBoostRatio).mul(1e16).toString(),
|
|
192
|
+
new Dec(targetBoostRatio).mul(1e16).toString(),
|
|
193
|
+
new Dec(targetRepayRatio).mul(1e16).toString(),
|
|
194
|
+
boostEnabled,
|
|
195
|
+
];
|
|
178
196
|
},
|
|
179
197
|
dsrPayback(
|
|
180
198
|
proxyAddress: EthereumAddress,
|
|
@@ -230,24 +248,39 @@ export const chickenBondsEncode = {
|
|
|
230
248
|
};
|
|
231
249
|
|
|
232
250
|
export const aaveV2Encode = {
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
triggerRatio: number,
|
|
251
|
+
leverageManagement(
|
|
252
|
+
triggerRepayRatio: number,
|
|
253
|
+
triggerBoostRatio: number,
|
|
254
|
+
targetBoostRatio: number,
|
|
255
|
+
targetRepayRatio: number,
|
|
256
|
+
boostEnabled: boolean,
|
|
240
257
|
) {
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
const subData = subDataService.aaveV2LeverageManagementSubDataWithoutSubProxy.encode(market, targetRatio, ratioState);
|
|
244
|
-
const triggerData = triggerService.aaveV2RatioTrigger.encode(user, market, triggerRatio, ratioState);
|
|
245
|
-
|
|
246
|
-
return [strategyOrBundleId, isBundle, triggerData, subData];
|
|
258
|
+
return subDataService.aaveV2LeverageManagementSubData.encode(triggerRepayRatio, triggerBoostRatio, targetBoostRatio, targetRepayRatio, boostEnabled);
|
|
247
259
|
},
|
|
248
260
|
};
|
|
249
261
|
|
|
250
262
|
export const aaveV3Encode = {
|
|
263
|
+
leverageManagement(
|
|
264
|
+
triggerRepayRatio: number,
|
|
265
|
+
triggerBoostRatio: number,
|
|
266
|
+
targetBoostRatio: number,
|
|
267
|
+
targetRepayRatio: number,
|
|
268
|
+
boostEnabled: boolean,
|
|
269
|
+
) {
|
|
270
|
+
let subInput = '0x';
|
|
271
|
+
|
|
272
|
+
subInput = subInput.concat(new Dec(triggerRepayRatio).mul(1e16).toHex().slice(2)
|
|
273
|
+
.padStart(32, '0'));
|
|
274
|
+
subInput = subInput.concat(new Dec(triggerBoostRatio).mul(1e16).toHex().slice(2)
|
|
275
|
+
.padStart(32, '0'));
|
|
276
|
+
subInput = subInput.concat(new Dec(targetBoostRatio).mul(1e16).toHex().slice(2)
|
|
277
|
+
.padStart(32, '0'));
|
|
278
|
+
subInput = subInput.concat(new Dec(targetRepayRatio).mul(1e16).toHex().slice(2)
|
|
279
|
+
.padStart(32, '0'));
|
|
280
|
+
subInput = subInput.concat(boostEnabled ? '01' : '00');
|
|
281
|
+
|
|
282
|
+
return subInput;
|
|
283
|
+
},
|
|
251
284
|
closeToAsset(
|
|
252
285
|
strategyOrBundleId: number,
|
|
253
286
|
isBundle: boolean = true,
|
|
@@ -408,38 +441,29 @@ export const aaveV3Encode = {
|
|
|
408
441
|
};
|
|
409
442
|
|
|
410
443
|
export const compoundV2Encode = {
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
444
|
+
leverageManagement(
|
|
445
|
+
triggerRepayRatio: number,
|
|
446
|
+
triggerBoostRatio: number,
|
|
447
|
+
targetBoostRatio: number,
|
|
448
|
+
targetRepayRatio: number,
|
|
449
|
+
boostEnabled: boolean,
|
|
417
450
|
) {
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
const subData = subDataService.compoundV2LeverageManagementSubDataWithoutSubProxy.encode(targetRatio, ratioState);
|
|
421
|
-
const triggerData = triggerService.compoundV2RatioTrigger.encode(user, triggerRatio, ratioState);
|
|
422
|
-
|
|
423
|
-
return [strategyOrBundleId, isBundle, triggerData, subData];
|
|
451
|
+
return subDataService.compoundV2LeverageManagementSubData.encode(triggerRepayRatio, triggerBoostRatio, targetBoostRatio, targetRepayRatio, boostEnabled);
|
|
424
452
|
},
|
|
425
453
|
};
|
|
426
454
|
|
|
427
455
|
export const compoundV3Encode = {
|
|
428
|
-
|
|
429
|
-
strategyOrBundleId: number,
|
|
456
|
+
leverageManagement(
|
|
430
457
|
market: EthereumAddress,
|
|
431
458
|
baseToken: EthereumAddress,
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
459
|
+
triggerRepayRatio: number,
|
|
460
|
+
triggerBoostRatio: number,
|
|
461
|
+
targetBoostRatio: number,
|
|
462
|
+
targetRepayRatio: number,
|
|
463
|
+
boostEnabled: boolean,
|
|
464
|
+
isEOA: boolean,
|
|
436
465
|
) {
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
const subData = subDataService.compoundV3LeverageManagementSubDataWithoutSubProxy.encode(market, baseToken, targetRatio, ratioState);
|
|
440
|
-
const triggerData = triggerService.compoundV3RatioTrigger.encode(user, market, triggerRatio, ratioState);
|
|
441
|
-
|
|
442
|
-
return [strategyOrBundleId, isBundle, triggerData, subData];
|
|
466
|
+
return subDataService.compoundV3LeverageManagementSubData.encode(market, baseToken, triggerRepayRatio, triggerBoostRatio, targetBoostRatio, targetRepayRatio, boostEnabled, isEOA);
|
|
443
467
|
},
|
|
444
468
|
leverageManagementOnPrice(
|
|
445
469
|
strategyOrBundleId: number,
|
|
@@ -479,6 +503,21 @@ export const compoundV3Encode = {
|
|
|
479
503
|
},
|
|
480
504
|
};
|
|
481
505
|
|
|
506
|
+
export const compoundV3L2Encode = {
|
|
507
|
+
leverageManagement(
|
|
508
|
+
market: EthereumAddress,
|
|
509
|
+
baseToken: EthereumAddress,
|
|
510
|
+
triggerRepayRatio: number,
|
|
511
|
+
triggerBoostRatio: number,
|
|
512
|
+
targetBoostRatio: number,
|
|
513
|
+
targetRepayRatio: number,
|
|
514
|
+
boostEnabled: boolean,
|
|
515
|
+
isEOA: boolean = false,
|
|
516
|
+
) {
|
|
517
|
+
return subDataService.compoundV3L2LeverageManagementSubData.encode(market, baseToken, triggerRepayRatio, triggerBoostRatio, targetBoostRatio, targetRepayRatio, boostEnabled, isEOA);
|
|
518
|
+
},
|
|
519
|
+
};
|
|
520
|
+
|
|
482
521
|
export const morphoAaveV2Encode = {
|
|
483
522
|
leverageManagement(
|
|
484
523
|
triggerRepayRatio: number,
|
|
@@ -508,28 +547,40 @@ export const exchangeEncode = {
|
|
|
508
547
|
|
|
509
548
|
return [strategyId, false, triggerData, subData];
|
|
510
549
|
},
|
|
511
|
-
|
|
550
|
+
limitOrder(
|
|
512
551
|
fromToken: EthereumAddress,
|
|
513
552
|
toToken: EthereumAddress,
|
|
514
553
|
amount: string,
|
|
515
554
|
targetPrice: string,
|
|
516
555
|
goodUntil: string | number,
|
|
517
556
|
orderType: OrderType,
|
|
518
|
-
fromTokenDecimals: number,
|
|
519
|
-
toTokenDecimals: number,
|
|
520
|
-
network: ChainId,
|
|
521
557
|
) {
|
|
522
|
-
|
|
523
|
-
const subData = subDataService.exchangeLimitOrderSubDataWithoutSubProxy.encode(fromToken, toToken, amount);
|
|
524
|
-
const triggerData = triggerService.exchangeOffchainPriceTrigger.encode(targetPrice, Number(goodUntil), orderType, fromTokenDecimals, toTokenDecimals);
|
|
525
|
-
|
|
526
|
-
const strategyId = STRATEGY_IDS[network].EXCHANGE_LIMIT_ORDER;
|
|
527
|
-
|
|
528
|
-
return [strategyId, false, triggerData, subData];
|
|
558
|
+
return subDataService.exchangeLimitOrderSubData.encode(fromToken, toToken, amount, targetPrice, goodUntil, orderType);
|
|
529
559
|
},
|
|
530
560
|
};
|
|
531
561
|
|
|
532
562
|
export const sparkEncode = {
|
|
563
|
+
leverageManagement(
|
|
564
|
+
triggerRepayRatio: number,
|
|
565
|
+
triggerBoostRatio: number,
|
|
566
|
+
targetBoostRatio: number,
|
|
567
|
+
targetRepayRatio: number,
|
|
568
|
+
boostEnabled: boolean,
|
|
569
|
+
) {
|
|
570
|
+
let subInput = '0x';
|
|
571
|
+
|
|
572
|
+
subInput = subInput.concat(new Dec(triggerRepayRatio).mul(1e16).toHex().slice(2)
|
|
573
|
+
.padStart(32, '0'));
|
|
574
|
+
subInput = subInput.concat(new Dec(triggerBoostRatio).mul(1e16).toHex().slice(2)
|
|
575
|
+
.padStart(32, '0'));
|
|
576
|
+
subInput = subInput.concat(new Dec(targetBoostRatio).mul(1e16).toHex().slice(2)
|
|
577
|
+
.padStart(32, '0'));
|
|
578
|
+
subInput = subInput.concat(new Dec(targetRepayRatio).mul(1e16).toHex().slice(2)
|
|
579
|
+
.padStart(32, '0'));
|
|
580
|
+
subInput = subInput.concat(boostEnabled ? '01' : '00');
|
|
581
|
+
|
|
582
|
+
return subInput;
|
|
583
|
+
},
|
|
533
584
|
leverageManagementOnPrice(
|
|
534
585
|
strategyOrBundleId: number,
|
|
535
586
|
isBundle: boolean = true,
|
|
@@ -1408,6 +1408,54 @@ describe('Feature: subDataService.ts', () => {
|
|
|
1408
1408
|
});
|
|
1409
1409
|
});
|
|
1410
1410
|
|
|
1411
|
+
describe('When testing subDataService.compoundV3L2LeverageManagementSubData', () => {
|
|
1412
|
+
describe('encode()', () => {
|
|
1413
|
+
const examples: Array<[
|
|
1414
|
+
string,
|
|
1415
|
+
[market: EthereumAddress, baseToken: EthereumAddress, triggerRepayRatio: number, triggerBoostRatio: number, targetBoostRatio: number, targetRepayRatio: number, boostEnabled: boolean, isEOA: boolean],
|
|
1416
|
+
]> = [
|
|
1417
|
+
[
|
|
1418
|
+
'0x0313D212133AFab8F2b829B1066c7e43caD94e2c0213D212133AfaB8F2b829B1066C7E43cAD94E2c000000000000000016345785d8a0000000000000000000001e87f85809dc0000000000000000000018fae27693b4000000000000000000001a5e27eef13e00000100',
|
|
1419
|
+
[web3Utils.toChecksumAddress('0x0313d212133AFaB8F2B829B1066c7E43cAd94E2c'), web3Utils.toChecksumAddress('0x0213d212133AFaB8F2B829B1066c7E43cAd94E2c'), 160, 220, 180, 190, true, false]
|
|
1420
|
+
],
|
|
1421
|
+
[
|
|
1422
|
+
'0x0313D212133AFab8F2b829B1066c7e43caD94e2c0413d212133afAb8F2B829b1066C7e43cAd94e2c000000000000000016345785d8a0000000000000000000001e87f85809dc0000000000000000000018fae27693b4000000000000000000000f43fc2c04ee00000000',
|
|
1423
|
+
[web3Utils.toChecksumAddress('0x0313d212133AFaB8F2B829B1066c7E43cAd94E2c'), web3Utils.toChecksumAddress('0x0413d212133AFaB8F2B829B1066c7E43cAd94E2c'), 160, 220, 180, 110, false, false]
|
|
1424
|
+
],
|
|
1425
|
+
];
|
|
1426
|
+
|
|
1427
|
+
examples.forEach(([expected, actual]) => {
|
|
1428
|
+
it(`Given ${actual} should return expected value: ${expected}`, () => {
|
|
1429
|
+
expect(subDataService.compoundV3L2LeverageManagementSubData.encode(...actual)).to.eql(expected);
|
|
1430
|
+
});
|
|
1431
|
+
});
|
|
1432
|
+
});
|
|
1433
|
+
describe('decode()', () => {
|
|
1434
|
+
const examples: Array<[{ targetRatio: number }, SubData]> = [
|
|
1435
|
+
[
|
|
1436
|
+
{ targetRatio: 200 },
|
|
1437
|
+
[
|
|
1438
|
+
'0x0000000000000000000000000313d212133AFaB8F2B829B1066c7E43cAd94E2c', '0x0000000000000000000000000213d212133AFaB8F2B829B1066c7E43cAd94E2c',
|
|
1439
|
+
'0x0000000000000000000000000000000000000000000000000000000000000001', '0x0000000000000000000000000000000000000000000000001bc16d674ec80000',
|
|
1440
|
+
],
|
|
1441
|
+
],
|
|
1442
|
+
[
|
|
1443
|
+
{ targetRatio: 123 },
|
|
1444
|
+
[
|
|
1445
|
+
'0x0000000000000000000000000313d212133AFaB8F2B829B1066c7E43cAd94E2c', '0x0000000000000000000000000413d212133AFaB8F2B829B1066c7E43cAd94E2c',
|
|
1446
|
+
'0x0000000000000000000000000000000000000000000000000000000000000000', '0x0000000000000000000000000000000000000000000000001111d67bb1bb0000',
|
|
1447
|
+
],
|
|
1448
|
+
],
|
|
1449
|
+
];
|
|
1450
|
+
|
|
1451
|
+
examples.forEach(([expected, actual]) => {
|
|
1452
|
+
it(`Given ${actual} should return expected value: ${JSON.stringify(expected)}`, () => {
|
|
1453
|
+
expect(subDataService.compoundV3L2LeverageManagementSubData.decode(actual)).to.eql(expected);
|
|
1454
|
+
});
|
|
1455
|
+
});
|
|
1456
|
+
});
|
|
1457
|
+
});
|
|
1458
|
+
|
|
1411
1459
|
describe('When testing subDataService.morphoBlueLeverageManagementSubData', () => {
|
|
1412
1460
|
describe('encode()', () => {
|
|
1413
1461
|
const examples: Array<[
|
|
@@ -207,30 +207,6 @@ export const liquityLeverageManagementSubData = {
|
|
|
207
207
|
return { targetRatio };
|
|
208
208
|
},
|
|
209
209
|
};
|
|
210
|
-
export const liquityLeverageManagementSubDataWithoutSubProxy = {
|
|
211
|
-
encode(
|
|
212
|
-
targetRatio: number,
|
|
213
|
-
ratioState: RatioState,
|
|
214
|
-
): SubData {
|
|
215
|
-
const encodedRatioState = AbiCoder.encodeParameter('uint8', ratioState);
|
|
216
|
-
const encodedTargetRatio = AbiCoder.encodeParameter('uint256', ratioPercentageToWei(targetRatio));
|
|
217
|
-
|
|
218
|
-
const isRepay = ratioState === RatioState.UNDER;
|
|
219
|
-
const collActionType = isRepay ? CollActionType.WITHDRAW : CollActionType.SUPPLY;
|
|
220
|
-
const debtActionType = isRepay ? DebtActionType.PAYBACK : DebtActionType.BORROW;
|
|
221
|
-
|
|
222
|
-
const collActionTypeEncoded = AbiCoder.encodeParameter('uint8', collActionType);
|
|
223
|
-
const debtActionTypeEncoded = AbiCoder.encodeParameter('uint8', debtActionType);
|
|
224
|
-
|
|
225
|
-
return [encodedRatioState, encodedTargetRatio, collActionTypeEncoded, debtActionTypeEncoded];
|
|
226
|
-
},
|
|
227
|
-
decode(subData: SubData): { targetRatio: number, ratioState: RatioState } {
|
|
228
|
-
const ratioState = AbiCoder.decodeParameter('uint8', subData[0]) as any as RatioState;
|
|
229
|
-
const targetRatio = weiToRatioPercentage(AbiCoder.decodeParameter('uint256', subData[1]) as any as string);
|
|
230
|
-
|
|
231
|
-
return { targetRatio, ratioState };
|
|
232
|
-
},
|
|
233
|
-
};
|
|
234
210
|
export const liquityCloseSubData = {
|
|
235
211
|
encode(
|
|
236
212
|
closeToAssetAddr: EthereumAddress,
|
|
@@ -534,33 +510,6 @@ export const aaveV2LeverageManagementSubData = {
|
|
|
534
510
|
return { targetRatio };
|
|
535
511
|
},
|
|
536
512
|
};
|
|
537
|
-
export const aaveV2LeverageManagementSubDataWithoutSubProxy = {
|
|
538
|
-
encode(
|
|
539
|
-
market: EthereumAddress,
|
|
540
|
-
targetRatio: number,
|
|
541
|
-
ratioState: RatioState,
|
|
542
|
-
): SubData {
|
|
543
|
-
const encodedMarket = AbiCoder.encodeParameter('address', market);
|
|
544
|
-
const encodedTargetRatio = AbiCoder.encodeParameter('uint256', ratioPercentageToWei(targetRatio));
|
|
545
|
-
const encodedRatioState = AbiCoder.encodeParameter('uint8', ratioState);
|
|
546
|
-
|
|
547
|
-
const isBoost = ratioState === RatioState.OVER;
|
|
548
|
-
|
|
549
|
-
if (isBoost) {
|
|
550
|
-
const enableAsCollEncoded = AbiCoder.encodeParameter('uint256', 1);
|
|
551
|
-
return [encodedMarket, encodedTargetRatio, encodedRatioState, enableAsCollEncoded];
|
|
552
|
-
}
|
|
553
|
-
|
|
554
|
-
return [encodedMarket, encodedTargetRatio, encodedRatioState];
|
|
555
|
-
},
|
|
556
|
-
decode(subData: SubData): { market: EthereumAddress, targetRatio: number, ratioState: RatioState } {
|
|
557
|
-
const market = AbiCoder.decodeParameter('address', subData[0]) as any as EthereumAddress;
|
|
558
|
-
const targetRatio = weiToRatioPercentage(AbiCoder.decodeParameter('uint256', subData[1]) as any as string);
|
|
559
|
-
const ratioState = AbiCoder.decodeParameter('uint8', subData[2]) as any as RatioState;
|
|
560
|
-
|
|
561
|
-
return { market, targetRatio, ratioState };
|
|
562
|
-
},
|
|
563
|
-
};
|
|
564
513
|
|
|
565
514
|
/**
|
|
566
515
|
___ ___ ____ ____ _______ ____ ____ ____
|
|
@@ -1048,30 +997,6 @@ export const compoundV2LeverageManagementSubData = {
|
|
|
1048
997
|
return { targetRatio };
|
|
1049
998
|
},
|
|
1050
999
|
};
|
|
1051
|
-
export const compoundV2LeverageManagementSubDataWithoutSubProxy = {
|
|
1052
|
-
encode(
|
|
1053
|
-
targetRatio: number,
|
|
1054
|
-
ratioState: RatioState,
|
|
1055
|
-
): SubData {
|
|
1056
|
-
const encodedTargetRatio = AbiCoder.encodeParameter('uint256', ratioPercentageToWei(targetRatio));
|
|
1057
|
-
const encodedRatioState = AbiCoder.encodeParameter('uint8', ratioState);
|
|
1058
|
-
|
|
1059
|
-
const isBoost = ratioState === RatioState.OVER;
|
|
1060
|
-
|
|
1061
|
-
if (isBoost) {
|
|
1062
|
-
const enableAsCollEncoded = AbiCoder.encodeParameter('uint256', 1);
|
|
1063
|
-
return [encodedTargetRatio, encodedRatioState, enableAsCollEncoded];
|
|
1064
|
-
}
|
|
1065
|
-
|
|
1066
|
-
return [encodedTargetRatio, encodedRatioState];
|
|
1067
|
-
},
|
|
1068
|
-
decode(subData: SubData): { targetRatio: number, ratioState: RatioState } {
|
|
1069
|
-
const targetRatio = weiToRatioPercentage(AbiCoder.decodeParameter('uint256', subData[0]) as any as string);
|
|
1070
|
-
const ratioState = AbiCoder.decodeParameter('uint8', subData[1]) as any as RatioState;
|
|
1071
|
-
|
|
1072
|
-
return { targetRatio, ratioState };
|
|
1073
|
-
},
|
|
1074
|
-
};
|
|
1075
1000
|
|
|
1076
1001
|
/**
|
|
1077
1002
|
______ ______ .___ ___. .______ ____ ____ ____
|
|
@@ -1110,28 +1035,39 @@ export const compoundV3LeverageManagementSubData = {
|
|
|
1110
1035
|
return { targetRatio };
|
|
1111
1036
|
},
|
|
1112
1037
|
};
|
|
1113
|
-
export const
|
|
1038
|
+
export const compoundV3L2LeverageManagementSubData = {
|
|
1114
1039
|
encode(
|
|
1115
1040
|
market: EthereumAddress,
|
|
1116
1041
|
baseToken: EthereumAddress,
|
|
1117
|
-
|
|
1118
|
-
|
|
1119
|
-
|
|
1120
|
-
|
|
1121
|
-
|
|
1122
|
-
|
|
1123
|
-
|
|
1124
|
-
|
|
1042
|
+
triggerRepayRatio: number,
|
|
1043
|
+
triggerBoostRatio: number,
|
|
1044
|
+
targetBoostRatio: number,
|
|
1045
|
+
targetRepayRatio: number,
|
|
1046
|
+
boostEnabled: boolean,
|
|
1047
|
+
isEOA: boolean,
|
|
1048
|
+
): string {
|
|
1049
|
+
let subInput = '0x';
|
|
1050
|
+
|
|
1051
|
+
subInput = subInput.concat(market.slice(2));
|
|
1052
|
+
subInput = subInput.concat(baseToken.slice(2));
|
|
1053
|
+
subInput = subInput.concat(new Dec(triggerRepayRatio).mul(1e16).toHex().slice(2)
|
|
1054
|
+
.padStart(32, '0'));
|
|
1055
|
+
subInput = subInput.concat(new Dec(triggerBoostRatio).mul(1e16).toHex().slice(2)
|
|
1056
|
+
.padStart(32, '0'));
|
|
1057
|
+
subInput = subInput.concat(new Dec(targetBoostRatio).mul(1e16).toHex().slice(2)
|
|
1058
|
+
.padStart(32, '0'));
|
|
1059
|
+
subInput = subInput.concat(new Dec(targetRepayRatio).mul(1e16).toHex().slice(2)
|
|
1060
|
+
.padStart(32, '0'));
|
|
1061
|
+
subInput = subInput.concat(boostEnabled ? '01' : '00');
|
|
1062
|
+
subInput = subInput.concat(isEOA ? '01' : '00');
|
|
1063
|
+
|
|
1064
|
+
return subInput;
|
|
1125
1065
|
},
|
|
1126
|
-
decode(subData: SubData): {
|
|
1127
|
-
const
|
|
1128
|
-
const
|
|
1129
|
-
const ratioState = AbiCoder.decodeParameter('uint8', subData[2]) as any as RatioState;
|
|
1130
|
-
const targetRatio = weiToRatioPercentage(AbiCoder.decodeParameter('uint256', subData[3]) as any as string);
|
|
1066
|
+
decode(subData: SubData): { targetRatio: number } {
|
|
1067
|
+
const ratioWei = AbiCoder.decodeParameter('uint256', subData[3]) as any as string;
|
|
1068
|
+
const targetRatio = weiToRatioPercentage(ratioWei);
|
|
1131
1069
|
|
|
1132
|
-
return {
|
|
1133
|
-
market, baseToken, targetRatio, ratioState,
|
|
1134
|
-
};
|
|
1070
|
+
return { targetRatio };
|
|
1135
1071
|
},
|
|
1136
1072
|
};
|
|
1137
1073
|
export const compoundV3LeverageManagementOnPriceSubData = {
|
|
@@ -1269,21 +1205,6 @@ export const exchangeLimitOrderSubData = {
|
|
|
1269
1205
|
return { fromToken, toToken, amount };
|
|
1270
1206
|
},
|
|
1271
1207
|
};
|
|
1272
|
-
export const exchangeLimitOrderSubDataWithoutSubProxy = {
|
|
1273
|
-
encode(fromToken: EthereumAddress, toToken: EthereumAddress, amount: string): SubData {
|
|
1274
|
-
return [
|
|
1275
|
-
AbiCoder.encodeParameter('address', fromToken),
|
|
1276
|
-
AbiCoder.encodeParameter('address', toToken),
|
|
1277
|
-
AbiCoder.encodeParameter('uint256', amount),
|
|
1278
|
-
];
|
|
1279
|
-
},
|
|
1280
|
-
decode: (subData: SubData, chainId: ChainId) => {
|
|
1281
|
-
const fromToken = AbiCoder.decodeParameter('address', subData[0])!.toString();
|
|
1282
|
-
const toToken = AbiCoder.decodeParameter('address', subData[1])!.toString();
|
|
1283
|
-
const amount = assetAmountInEth(AbiCoder.decodeParameter('uint256', subData[2])!.toString(), getAssetInfoByAddress(fromToken, chainId).symbol);
|
|
1284
|
-
return { fromToken, toToken, amount };
|
|
1285
|
-
},
|
|
1286
|
-
};
|
|
1287
1208
|
|
|
1288
1209
|
/**
|
|
1289
1210
|
_______..______ ___ .______ __ ___
|