@defisaver/automation-sdk 2.1.2 → 2.1.4
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/.env +4 -0
- package/esm/automation/private/StrategiesAutomation.js +3 -1
- package/esm/constants/index.js +20 -0
- package/esm/services/strategiesService.js +40 -1
- package/esm/services/strategySubService.d.ts +6 -0
- package/esm/services/strategySubService.js +16 -1
- package/esm/services/strategySubService.test.js +91 -1
- package/esm/services/subDataService.d.ts +14 -1
- package/esm/services/subDataService.js +39 -1
- package/esm/services/subDataService.test.js +204 -108
- package/esm/services/triggerService.d.ts +9 -0
- package/esm/services/triggerService.js +16 -1
- package/esm/services/triggerService.test.js +36 -0
- package/esm/types/enums.d.ts +8 -3
- package/esm/types/enums.js +5 -0
- package/esm/types/index.d.ts +5 -1
- package/package.json +2 -2
- package/src/automation/private/StrategiesAutomation.ts +4 -0
- package/src/constants/index.ts +20 -0
- package/src/services/strategiesService.ts +46 -1
- package/src/services/strategySubService.test.ts +99 -1
- package/src/services/strategySubService.ts +35 -0
- package/src/services/subDataService.test.ts +225 -112
- package/src/services/subDataService.ts +58 -0
- package/src/services/triggerService.test.ts +37 -0
- package/src/services/triggerService.ts +24 -0
- package/src/types/enums.ts +5 -0
- package/src/types/index.ts +6 -1
- package/umd/index.js +145 -2
- package/.yarn/releases/yarn-1.22.1.cjs +0 -147386
- package/.yarnrc.yml +0 -3
|
@@ -255,6 +255,40 @@ export const compoundV3LeverageManagementSubData = {
|
|
|
255
255
|
},
|
|
256
256
|
};
|
|
257
257
|
|
|
258
|
+
export const compoundV3L2LeverageManagementSubData = {
|
|
259
|
+
encode(
|
|
260
|
+
market: EthereumAddress,
|
|
261
|
+
baseToken: EthereumAddress,
|
|
262
|
+
triggerRepayRatio: number,
|
|
263
|
+
triggerBoostRatio: number,
|
|
264
|
+
targetBoostRatio: number,
|
|
265
|
+
targetRepayRatio: number,
|
|
266
|
+
boostEnabled: boolean,
|
|
267
|
+
): string {
|
|
268
|
+
let subInput = '0x';
|
|
269
|
+
|
|
270
|
+
subInput = subInput.concat(market.slice(2).padStart(32, '0'));
|
|
271
|
+
subInput = subInput.concat(baseToken.slice(2).padStart(32, '0'));
|
|
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
|
+
},
|
|
284
|
+
decode(subData: SubData): { targetRatio: number } {
|
|
285
|
+
const ratioWei = AbiCoder.decodeParameter('uint256', subData[3]) as any as string;
|
|
286
|
+
const targetRatio = weiToRatioPercentage(ratioWei);
|
|
287
|
+
|
|
288
|
+
return { targetRatio };
|
|
289
|
+
},
|
|
290
|
+
};
|
|
291
|
+
|
|
258
292
|
export const morphoAaveV2LeverageManagementSubData = {
|
|
259
293
|
encode(
|
|
260
294
|
triggerRepayRatio: number,
|
|
@@ -452,3 +486,27 @@ export const liquityDebtInFrontRepaySubData = {
|
|
|
452
486
|
return { targetRatioIncrease };
|
|
453
487
|
},
|
|
454
488
|
};
|
|
489
|
+
|
|
490
|
+
export const crvUSDLeverageManagementSubData = {
|
|
491
|
+
encode: (
|
|
492
|
+
controllerAddr: EthereumAddress,
|
|
493
|
+
ratioState: RatioState,
|
|
494
|
+
targetRatio: number,
|
|
495
|
+
collTokenAddr: EthereumAddress,
|
|
496
|
+
crvUSDAddr: EthereumAddress,
|
|
497
|
+
) => {
|
|
498
|
+
const controllerAddrEncoded = AbiCoder.encodeParameter('address', controllerAddr);
|
|
499
|
+
const ratioStateEncoded = AbiCoder.encodeParameter('uint8', ratioState);
|
|
500
|
+
const targetRatioEncoded = AbiCoder.encodeParameter('uint256', ratioPercentageToWei(targetRatio));
|
|
501
|
+
const collTokenAddrEncoded = AbiCoder.encodeParameter('address', collTokenAddr);
|
|
502
|
+
const crvUSDAddrEncoded = AbiCoder.encodeParameter('address', crvUSDAddr);
|
|
503
|
+
return [controllerAddrEncoded, ratioStateEncoded, targetRatioEncoded, collTokenAddrEncoded, crvUSDAddrEncoded];
|
|
504
|
+
},
|
|
505
|
+
decode: (subData: SubData) => {
|
|
506
|
+
const controller = AbiCoder.decodeParameter('address', subData[0]) as unknown as EthereumAddress;
|
|
507
|
+
const weiRatio = AbiCoder.decodeParameter('uint256', subData[2]) as any as string;
|
|
508
|
+
const targetRatio = weiToRatioPercentage(weiRatio);
|
|
509
|
+
|
|
510
|
+
return { controller, targetRatio };
|
|
511
|
+
},
|
|
512
|
+
};
|
|
@@ -25,6 +25,7 @@ import {
|
|
|
25
25
|
sparkRatioTrigger,
|
|
26
26
|
trailingStopTrigger,
|
|
27
27
|
liquityDebtInFrontWithLimitTrigger,
|
|
28
|
+
crvUSDRatioTrigger,
|
|
28
29
|
} from './triggerService';
|
|
29
30
|
|
|
30
31
|
describe('Feature: triggerService.ts', () => {
|
|
@@ -893,5 +894,41 @@ describe('Feature: triggerService.ts', () => {
|
|
|
893
894
|
});
|
|
894
895
|
});
|
|
895
896
|
});
|
|
897
|
+
describe('When testing triggerService.crvUSDRatioTrigger', () => {
|
|
898
|
+
describe('encode()', () => {
|
|
899
|
+
const examples: Array<[[string], [owner: EthereumAddress, controller: EthereumAddress, ratioPercentage: number, ratioState: RatioState]]> = [
|
|
900
|
+
[
|
|
901
|
+
['0x0000000000000000000000001031d218133afab8c2b819b1366c7e434ad91e9c000000000000000000000000a920de414ea4ab66b97da1bfe9e6eca7d421963500000000000000000000000000000000000000000000000010a741a4627800000000000000000000000000000000000000000000000000000000000000000001'],
|
|
902
|
+
[web3Utils.toChecksumAddress('0x1031d218133AFaB8c2B819B1366c7E434Ad91E9c'), web3Utils.toChecksumAddress('0xa920de414ea4ab66b97da1bfe9e6eca7d4219635'), 120, RatioState.UNDER]
|
|
903
|
+
],
|
|
904
|
+
[
|
|
905
|
+
['0x0000000000000000000000000043d218133afab8f2b829b106633e434ad94e2c000000000000000000000000a920de414ea4ab66b97da1bfe9e6eca7d42196350000000000000000000000000000000000000000000000001bc16d674ec800000000000000000000000000000000000000000000000000000000000000000000'],
|
|
906
|
+
[web3Utils.toChecksumAddress('0x0043d218133AFaB8F2B829B106633E434Ad94E2c'), web3Utils.toChecksumAddress('0xa920de414ea4ab66b97da1bfe9e6eca7d4219635'), 200, RatioState.OVER]
|
|
907
|
+
],
|
|
908
|
+
];
|
|
909
|
+
examples.forEach(([expected, actual]) => {
|
|
910
|
+
it(`Given ${actual} should return expected value: ${JSON.stringify(expected)}`, () => {
|
|
911
|
+
expect(crvUSDRatioTrigger.encode(...actual)).to.eql(expected);
|
|
912
|
+
});
|
|
913
|
+
});
|
|
914
|
+
});
|
|
915
|
+
describe('decode()', () => {
|
|
916
|
+
const examples: Array<[{ owner: EthereumAddress, controller: EthereumAddress, ratio: number, ratioState: RatioState }, TriggerData]> = [
|
|
917
|
+
[
|
|
918
|
+
{ owner: web3Utils.toChecksumAddress('0x1031d218133AFaB8c2B819B1366c7E434Ad91E9c'), controller: web3Utils.toChecksumAddress('0xa920de414ea4ab66b97da1bfe9e6eca7d4219635'), ratio: 120, ratioState: RatioState.UNDER },
|
|
919
|
+
['0x0000000000000000000000001031d218133afab8c2b819b1366c7e434ad91e9c000000000000000000000000a920de414ea4ab66b97da1bfe9e6eca7d421963500000000000000000000000000000000000000000000000010a741a4627800000000000000000000000000000000000000000000000000000000000000000001'],
|
|
920
|
+
],
|
|
921
|
+
[
|
|
922
|
+
{ owner: web3Utils.toChecksumAddress('0x0043d218133AFaB8F2B829B106633E434Ad94E2c'), controller: web3Utils.toChecksumAddress('0xa920de414ea4ab66b97da1bfe9e6eca7d4219635'), ratio: 200, ratioState: RatioState.OVER },
|
|
923
|
+
['0x0000000000000000000000000043d218133afab8f2b829b106633e434ad94e2c000000000000000000000000a920de414ea4ab66b97da1bfe9e6eca7d42196350000000000000000000000000000000000000000000000001bc16d674ec800000000000000000000000000000000000000000000000000000000000000000000'],
|
|
924
|
+
],
|
|
925
|
+
];
|
|
896
926
|
|
|
927
|
+
examples.forEach(([expected, actual]) => {
|
|
928
|
+
it(`Given ${actual} should return expected value: ${JSON.stringify(expected)}`, () => {
|
|
929
|
+
expect(crvUSDRatioTrigger.decode(actual)).to.eql(expected);
|
|
930
|
+
});
|
|
931
|
+
});
|
|
932
|
+
});
|
|
933
|
+
});
|
|
897
934
|
});
|
|
@@ -380,3 +380,27 @@ export const curveUsdSoftLiquidationTrigger = {
|
|
|
380
380
|
};
|
|
381
381
|
},
|
|
382
382
|
};
|
|
383
|
+
|
|
384
|
+
|
|
385
|
+
export const crvUSDRatioTrigger = {
|
|
386
|
+
encode(
|
|
387
|
+
owner: EthereumAddress,
|
|
388
|
+
controller: EthereumAddress,
|
|
389
|
+
ratioPercentage: number,
|
|
390
|
+
ratioState: RatioState,
|
|
391
|
+
) {
|
|
392
|
+
const ratioWei = ratioPercentageToWei(ratioPercentage);
|
|
393
|
+
return [AbiCoder.encodeParameters(['address', 'address', 'uint256', 'uint8'], [owner, controller, ratioWei, ratioState])];
|
|
394
|
+
},
|
|
395
|
+
decode(
|
|
396
|
+
triggerData: TriggerData,
|
|
397
|
+
) {
|
|
398
|
+
const decodedData = AbiCoder.decodeParameters(['address', 'address', 'uint256', 'uint8'], triggerData[0]);
|
|
399
|
+
return {
|
|
400
|
+
owner: decodedData[0] as EthereumAddress,
|
|
401
|
+
controller: decodedData[1] as EthereumAddress,
|
|
402
|
+
ratio: weiToRatioPercentage(decodedData[2] as string),
|
|
403
|
+
ratioState: Number(decodedData[3]),
|
|
404
|
+
};
|
|
405
|
+
},
|
|
406
|
+
};
|
package/src/types/enums.ts
CHANGED
|
@@ -39,6 +39,7 @@ export namespace ProtocolIdentifiers {
|
|
|
39
39
|
MorphoAaveV2 = 'Morpho-Aave__V2',
|
|
40
40
|
Exchange = 'Exchange',
|
|
41
41
|
Spark = 'Spark',
|
|
42
|
+
CrvUSD = 'CurveUSD',
|
|
42
43
|
}
|
|
43
44
|
|
|
44
45
|
export enum LegacyAutomation {
|
|
@@ -138,6 +139,8 @@ export namespace Bundles {
|
|
|
138
139
|
AAVE_V2_BOOST = 23,
|
|
139
140
|
COMP_V2_REPAY = 20,
|
|
140
141
|
COMP_V2_BOOST = 21,
|
|
142
|
+
CRVUSD_REPAY = 26,
|
|
143
|
+
CRVUSD_BOOST = 27,
|
|
141
144
|
}
|
|
142
145
|
|
|
143
146
|
export enum OptimismIds {
|
|
@@ -152,6 +155,8 @@ export namespace Bundles {
|
|
|
152
155
|
AAVE_V3_BOOST = 1,
|
|
153
156
|
AAVE_V3_CLOSE_TO_DEBT = 2,
|
|
154
157
|
AAVE_V3_CLOSE_TO_COLLATERAL = 3,
|
|
158
|
+
COMP_V3_SW_REPAY_BUNDLE = 4,
|
|
159
|
+
COMP_V3_SW_BOOST_BUNDLE = 5,
|
|
155
160
|
}
|
|
156
161
|
}
|
|
157
162
|
|
package/src/types/index.ts
CHANGED
|
@@ -167,9 +167,14 @@ export declare namespace Position {
|
|
|
167
167
|
debtInFrontMin: string,
|
|
168
168
|
targetRepayRatioIncrease: number,
|
|
169
169
|
}
|
|
170
|
+
|
|
171
|
+
interface LeverageManagementCrvUSD extends Base {
|
|
172
|
+
subHashBoost?: string,
|
|
173
|
+
subHashRepay?: string,
|
|
174
|
+
}
|
|
170
175
|
}
|
|
171
176
|
|
|
172
|
-
type SpecificAny = Specific.CloseOnPrice | Specific.TrailingStop | Specific.RatioProtection | Specific.CloseOnPriceAave | Specific.CloseOnPriceWithMaximumGasPriceAave | Specific.DebtInFrontRepay;
|
|
177
|
+
type SpecificAny = Specific.CloseOnPrice | Specific.TrailingStop | Specific.RatioProtection | Specific.CloseOnPriceAave | Specific.CloseOnPriceWithMaximumGasPriceAave | Specific.DebtInFrontRepay | Specific.LeverageManagementCrvUSD;
|
|
173
178
|
|
|
174
179
|
export interface Automated {
|
|
175
180
|
chainId: ChainId,
|
package/umd/index.js
CHANGED
|
@@ -362,6 +362,16 @@ var MAINNET_BUNDLES_INFO = {
|
|
|
362
362
|
strategyOrBundleId: _types_enums__WEBPACK_IMPORTED_MODULE_0__.Bundles.MainnetIds.COMP_V2_BOOST,
|
|
363
363
|
strategyId: _types_enums__WEBPACK_IMPORTED_MODULE_0__.Strategies.Identifiers.Boost,
|
|
364
364
|
protocol: PROTOCOLS.CompoundV2
|
|
365
|
+
},
|
|
366
|
+
[_types_enums__WEBPACK_IMPORTED_MODULE_0__.Bundles.MainnetIds.CRVUSD_REPAY]: {
|
|
367
|
+
strategyOrBundleId: _types_enums__WEBPACK_IMPORTED_MODULE_0__.Bundles.MainnetIds.CRVUSD_REPAY,
|
|
368
|
+
strategyId: _types_enums__WEBPACK_IMPORTED_MODULE_0__.Strategies.Identifiers.Repay,
|
|
369
|
+
protocol: PROTOCOLS.CrvUSD
|
|
370
|
+
},
|
|
371
|
+
[_types_enums__WEBPACK_IMPORTED_MODULE_0__.Bundles.MainnetIds.CRVUSD_BOOST]: {
|
|
372
|
+
strategyOrBundleId: _types_enums__WEBPACK_IMPORTED_MODULE_0__.Bundles.MainnetIds.CRVUSD_BOOST,
|
|
373
|
+
strategyId: _types_enums__WEBPACK_IMPORTED_MODULE_0__.Strategies.Identifiers.Boost,
|
|
374
|
+
protocol: PROTOCOLS.CrvUSD
|
|
365
375
|
}
|
|
366
376
|
};
|
|
367
377
|
var OPTIMISM_BUNDLES_INFO = {
|
|
@@ -406,6 +416,16 @@ var ARBITRUM_BUNDLES_INFO = {
|
|
|
406
416
|
strategyOrBundleId: _types_enums__WEBPACK_IMPORTED_MODULE_0__.Bundles.ArbitrumIds.AAVE_V3_CLOSE_TO_COLLATERAL,
|
|
407
417
|
strategyId: _types_enums__WEBPACK_IMPORTED_MODULE_0__.Strategies.Identifiers.CloseToCollateral,
|
|
408
418
|
protocol: PROTOCOLS.AaveV3
|
|
419
|
+
},
|
|
420
|
+
[_types_enums__WEBPACK_IMPORTED_MODULE_0__.Bundles.ArbitrumIds.COMP_V3_SW_BOOST_BUNDLE]: {
|
|
421
|
+
strategyOrBundleId: _types_enums__WEBPACK_IMPORTED_MODULE_0__.Bundles.ArbitrumIds.COMP_V3_SW_BOOST_BUNDLE,
|
|
422
|
+
strategyId: _types_enums__WEBPACK_IMPORTED_MODULE_0__.Strategies.Identifiers.Boost,
|
|
423
|
+
protocol: PROTOCOLS.CompoundV3
|
|
424
|
+
},
|
|
425
|
+
[_types_enums__WEBPACK_IMPORTED_MODULE_0__.Bundles.ArbitrumIds.COMP_V3_SW_REPAY_BUNDLE]: {
|
|
426
|
+
strategyOrBundleId: _types_enums__WEBPACK_IMPORTED_MODULE_0__.Bundles.ArbitrumIds.COMP_V3_SW_REPAY_BUNDLE,
|
|
427
|
+
strategyId: _types_enums__WEBPACK_IMPORTED_MODULE_0__.Strategies.Identifiers.Repay,
|
|
428
|
+
protocol: PROTOCOLS.CompoundV3
|
|
409
429
|
}
|
|
410
430
|
};
|
|
411
431
|
var BUNDLES_INFO = {
|
|
@@ -478,6 +498,7 @@ var ProtocolIdentifiers;
|
|
|
478
498
|
StrategiesAutomation["MorphoAaveV2"] = "Morpho-Aave__V2";
|
|
479
499
|
StrategiesAutomation["Exchange"] = "Exchange";
|
|
480
500
|
StrategiesAutomation["Spark"] = "Spark";
|
|
501
|
+
StrategiesAutomation["CrvUSD"] = "CurveUSD";
|
|
481
502
|
})(StrategiesAutomation || (StrategiesAutomation = {}));
|
|
482
503
|
_ProtocolIdentifiers.StrategiesAutomation = StrategiesAutomation;
|
|
483
504
|
var LegacyAutomation;
|
|
@@ -587,6 +608,8 @@ var Bundles;
|
|
|
587
608
|
MainnetIds[MainnetIds["AAVE_V2_BOOST"] = 23] = "AAVE_V2_BOOST";
|
|
588
609
|
MainnetIds[MainnetIds["COMP_V2_REPAY"] = 20] = "COMP_V2_REPAY";
|
|
589
610
|
MainnetIds[MainnetIds["COMP_V2_BOOST"] = 21] = "COMP_V2_BOOST";
|
|
611
|
+
MainnetIds[MainnetIds["CRVUSD_REPAY"] = 26] = "CRVUSD_REPAY";
|
|
612
|
+
MainnetIds[MainnetIds["CRVUSD_BOOST"] = 27] = "CRVUSD_BOOST";
|
|
590
613
|
})(MainnetIds || (MainnetIds = {}));
|
|
591
614
|
_Bundles.MainnetIds = MainnetIds;
|
|
592
615
|
var OptimismIds;
|
|
@@ -603,6 +626,8 @@ var Bundles;
|
|
|
603
626
|
ArbitrumIds[ArbitrumIds["AAVE_V3_BOOST"] = 1] = "AAVE_V3_BOOST";
|
|
604
627
|
ArbitrumIds[ArbitrumIds["AAVE_V3_CLOSE_TO_DEBT"] = 2] = "AAVE_V3_CLOSE_TO_DEBT";
|
|
605
628
|
ArbitrumIds[ArbitrumIds["AAVE_V3_CLOSE_TO_COLLATERAL"] = 3] = "AAVE_V3_CLOSE_TO_COLLATERAL";
|
|
629
|
+
ArbitrumIds[ArbitrumIds["COMP_V3_SW_REPAY_BUNDLE"] = 4] = "COMP_V3_SW_REPAY_BUNDLE";
|
|
630
|
+
ArbitrumIds[ArbitrumIds["COMP_V3_SW_BOOST_BUNDLE"] = 5] = "COMP_V3_SW_BOOST_BUNDLE";
|
|
606
631
|
})(ArbitrumIds || (ArbitrumIds = {}));
|
|
607
632
|
_Bundles.ArbitrumIds = ArbitrumIds;
|
|
608
633
|
})(Bundles || (Bundles = {}));
|
|
@@ -1542,7 +1567,8 @@ class StrategiesAutomation extends _Automation__WEBPACK_IMPORTED_MODULE_6__["def
|
|
|
1542
1567
|
if ((0,_services_utils__WEBPACK_IMPORTED_MODULE_2__.isDefined)(current)) {
|
|
1543
1568
|
if (current.specific.mergeWithSameId) {
|
|
1544
1569
|
var mergePairIndex = copyList.findIndex(s => s && s.specific.mergeWithSameId && s.owner === current.owner && s.strategy.strategyId === current.strategy.strategyId && s.protocol.id === current.protocol.id && (s.protocol.id !== _types_enums__WEBPACK_IMPORTED_MODULE_1__.ProtocolIdentifiers.StrategiesAutomation.MakerDAO // reflexer needs to get added if we have it
|
|
1545
|
-
|| s.strategyData.decoded.subData.vaultId === current.strategyData.decoded.triggerData.vaultId)
|
|
1570
|
+
|| s.strategyData.decoded.subData.vaultId === current.strategyData.decoded.triggerData.vaultId) && (s.protocol.id !== _types_enums__WEBPACK_IMPORTED_MODULE_1__.ProtocolIdentifiers.StrategiesAutomation.CrvUSD // merge only crvUSD leverage management for the same market
|
|
1571
|
+
|| s.strategyData.decoded.subData.controller.toLowerCase() === current.strategyData.decoded.triggerData.controller.toLowerCase()));
|
|
1546
1572
|
if (mergePairIndex !== -1) {
|
|
1547
1573
|
var mergePair = copyList[mergePairIndex];
|
|
1548
1574
|
if ((0,_services_utils__WEBPACK_IMPORTED_MODULE_2__.isDefined)(mergePair)) {
|
|
@@ -1948,8 +1974,9 @@ function parseCompoundV3LeverageManagement(position, parseData) {
|
|
|
1948
1974
|
var {
|
|
1949
1975
|
isEnabled
|
|
1950
1976
|
} = parseData.strategiesSubsData;
|
|
1977
|
+
var subDataDecoder = position.chainId !== 1 ? _subDataService__WEBPACK_IMPORTED_MODULE_5__.compoundV3L2LeverageManagementSubData : _subDataService__WEBPACK_IMPORTED_MODULE_5__.compoundV3LeverageManagementSubData;
|
|
1951
1978
|
var triggerData = _triggerService__WEBPACK_IMPORTED_MODULE_6__.compoundV3RatioTrigger.decode(subStruct.triggerData);
|
|
1952
|
-
var subData =
|
|
1979
|
+
var subData = subDataDecoder.decode(subStruct.subData);
|
|
1953
1980
|
_position.strategyData.decoded.triggerData = triggerData;
|
|
1954
1981
|
_position.strategyData.decoded.subData = subData;
|
|
1955
1982
|
_position.owner = triggerData.owner.toLowerCase();
|
|
@@ -2152,6 +2179,43 @@ function parseLiquityDebtInFrontRepay(position, parseData) {
|
|
|
2152
2179
|
};
|
|
2153
2180
|
return _position;
|
|
2154
2181
|
}
|
|
2182
|
+
function parseCrvUSDLeverageManagement(position, parseData) {
|
|
2183
|
+
var _position = (0,lodash__WEBPACK_IMPORTED_MODULE_1__.cloneDeep)(position);
|
|
2184
|
+
var {
|
|
2185
|
+
subStruct,
|
|
2186
|
+
subId,
|
|
2187
|
+
subHash
|
|
2188
|
+
} = parseData.subscriptionEventData;
|
|
2189
|
+
var {
|
|
2190
|
+
isEnabled
|
|
2191
|
+
} = parseData.strategiesSubsData;
|
|
2192
|
+
var triggerData = _triggerService__WEBPACK_IMPORTED_MODULE_6__.crvUSDRatioTrigger.decode(subStruct.triggerData);
|
|
2193
|
+
var subData = _subDataService__WEBPACK_IMPORTED_MODULE_5__.crvUSDLeverageManagementSubData.decode(subStruct.subData);
|
|
2194
|
+
_position.strategyData.decoded.triggerData = triggerData;
|
|
2195
|
+
_position.strategyData.decoded.subData = subData;
|
|
2196
|
+
var isRepay = _position.strategy.strategyId === _types_enums__WEBPACK_IMPORTED_MODULE_3__.Strategies.Identifiers.Repay;
|
|
2197
|
+
if (isRepay) {
|
|
2198
|
+
_position.specific = {
|
|
2199
|
+
triggerRepayRatio: triggerData.ratio,
|
|
2200
|
+
targetRepayRatio: subData.targetRatio,
|
|
2201
|
+
repayEnabled: isEnabled,
|
|
2202
|
+
subId1: Number(subId),
|
|
2203
|
+
subHashRepay: subHash
|
|
2204
|
+
};
|
|
2205
|
+
} else {
|
|
2206
|
+
_position.specific = {
|
|
2207
|
+
triggerBoostRatio: triggerData.ratio,
|
|
2208
|
+
targetBoostRatio: subData.targetRatio,
|
|
2209
|
+
boostEnabled: isEnabled,
|
|
2210
|
+
subId2: Number(subId),
|
|
2211
|
+
subHashBoost: subHash
|
|
2212
|
+
};
|
|
2213
|
+
}
|
|
2214
|
+
_position.positionId = (0,_utils__WEBPACK_IMPORTED_MODULE_4__.getPositionId)(_position.chainId, _position.protocol.id, _position.owner, triggerData.controller);
|
|
2215
|
+
_position.strategy.strategyId = _types_enums__WEBPACK_IMPORTED_MODULE_3__.Strategies.IdOverrides.LeverageManagement;
|
|
2216
|
+
_position.specific.mergeWithSameId = true;
|
|
2217
|
+
return _position;
|
|
2218
|
+
}
|
|
2155
2219
|
var parsingMethodsMapping = {
|
|
2156
2220
|
[_types_enums__WEBPACK_IMPORTED_MODULE_3__.ProtocolIdentifiers.StrategiesAutomation.MakerDAO]: {
|
|
2157
2221
|
[_types_enums__WEBPACK_IMPORTED_MODULE_3__.Strategies.Identifiers.SavingsLiqProtection]: parseMakerSavingsLiqProtection,
|
|
@@ -2210,6 +2274,10 @@ var parsingMethodsMapping = {
|
|
|
2210
2274
|
[_types_enums__WEBPACK_IMPORTED_MODULE_3__.Strategies.Identifiers.Boost]: parseSparkLeverageManagement,
|
|
2211
2275
|
[_types_enums__WEBPACK_IMPORTED_MODULE_3__.Strategies.Identifiers.CloseToDebt]: parseSparkCloseOnPrice,
|
|
2212
2276
|
[_types_enums__WEBPACK_IMPORTED_MODULE_3__.Strategies.Identifiers.CloseToCollateral]: parseSparkCloseOnPrice
|
|
2277
|
+
},
|
|
2278
|
+
[_types_enums__WEBPACK_IMPORTED_MODULE_3__.ProtocolIdentifiers.StrategiesAutomation.CrvUSD]: {
|
|
2279
|
+
[_types_enums__WEBPACK_IMPORTED_MODULE_3__.Strategies.Identifiers.Repay]: parseCrvUSDLeverageManagement,
|
|
2280
|
+
[_types_enums__WEBPACK_IMPORTED_MODULE_3__.Strategies.Identifiers.Boost]: parseCrvUSDLeverageManagement
|
|
2213
2281
|
}
|
|
2214
2282
|
};
|
|
2215
2283
|
function getParsingMethod(id, strategy) {
|
|
@@ -19481,7 +19549,9 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
19481
19549
|
/* harmony export */ aaveV3QuotePriceSubData: () => (/* binding */ aaveV3QuotePriceSubData),
|
|
19482
19550
|
/* harmony export */ cBondsRebondSubData: () => (/* binding */ cBondsRebondSubData),
|
|
19483
19551
|
/* harmony export */ compoundV2LeverageManagementSubData: () => (/* binding */ compoundV2LeverageManagementSubData),
|
|
19552
|
+
/* harmony export */ compoundV3L2LeverageManagementSubData: () => (/* binding */ compoundV3L2LeverageManagementSubData),
|
|
19484
19553
|
/* harmony export */ compoundV3LeverageManagementSubData: () => (/* binding */ compoundV3LeverageManagementSubData),
|
|
19554
|
+
/* harmony export */ crvUSDLeverageManagementSubData: () => (/* binding */ crvUSDLeverageManagementSubData),
|
|
19485
19555
|
/* harmony export */ exchangeDcaSubData: () => (/* binding */ exchangeDcaSubData),
|
|
19486
19556
|
/* harmony export */ exchangeLimitOrderSubData: () => (/* binding */ exchangeLimitOrderSubData),
|
|
19487
19557
|
/* harmony export */ liquityCloseSubData: () => (/* binding */ liquityCloseSubData),
|
|
@@ -19697,6 +19767,26 @@ var compoundV3LeverageManagementSubData = {
|
|
|
19697
19767
|
};
|
|
19698
19768
|
}
|
|
19699
19769
|
};
|
|
19770
|
+
var compoundV3L2LeverageManagementSubData = {
|
|
19771
|
+
encode(market, baseToken, triggerRepayRatio, triggerBoostRatio, targetBoostRatio, targetRepayRatio, boostEnabled) {
|
|
19772
|
+
var subInput = '0x';
|
|
19773
|
+
subInput = subInput.concat(market.slice(2).padStart(32, '0'));
|
|
19774
|
+
subInput = subInput.concat(baseToken.slice(2).padStart(32, '0'));
|
|
19775
|
+
subInput = subInput.concat(new (decimal_js__WEBPACK_IMPORTED_MODULE_0___default())(triggerRepayRatio).mul(1e16).toHex().slice(2).padStart(32, '0'));
|
|
19776
|
+
subInput = subInput.concat(new (decimal_js__WEBPACK_IMPORTED_MODULE_0___default())(triggerBoostRatio).mul(1e16).toHex().slice(2).padStart(32, '0'));
|
|
19777
|
+
subInput = subInput.concat(new (decimal_js__WEBPACK_IMPORTED_MODULE_0___default())(targetBoostRatio).mul(1e16).toHex().slice(2).padStart(32, '0'));
|
|
19778
|
+
subInput = subInput.concat(new (decimal_js__WEBPACK_IMPORTED_MODULE_0___default())(targetRepayRatio).mul(1e16).toHex().slice(2).padStart(32, '0'));
|
|
19779
|
+
subInput = subInput.concat(boostEnabled ? '01' : '00');
|
|
19780
|
+
return subInput;
|
|
19781
|
+
},
|
|
19782
|
+
decode(subData) {
|
|
19783
|
+
var ratioWei = web3_eth_abi__WEBPACK_IMPORTED_MODULE_1___default().decodeParameter('uint256', subData[3]);
|
|
19784
|
+
var targetRatio = (0,_utils__WEBPACK_IMPORTED_MODULE_6__.weiToRatioPercentage)(ratioWei);
|
|
19785
|
+
return {
|
|
19786
|
+
targetRatio
|
|
19787
|
+
};
|
|
19788
|
+
}
|
|
19789
|
+
};
|
|
19700
19790
|
var morphoAaveV2LeverageManagementSubData = {
|
|
19701
19791
|
encode(triggerRepayRatio, triggerBoostRatio, targetBoostRatio, targetRepayRatio, boostEnabled) {
|
|
19702
19792
|
return [(0,_utils__WEBPACK_IMPORTED_MODULE_6__.ratioPercentageToWei)(triggerRepayRatio), (0,_utils__WEBPACK_IMPORTED_MODULE_6__.ratioPercentageToWei)(triggerBoostRatio), (0,_utils__WEBPACK_IMPORTED_MODULE_6__.ratioPercentageToWei)(targetBoostRatio), (0,_utils__WEBPACK_IMPORTED_MODULE_6__.ratioPercentageToWei)(targetRepayRatio),
|
|
@@ -19871,6 +19961,25 @@ var liquityDebtInFrontRepaySubData = {
|
|
|
19871
19961
|
};
|
|
19872
19962
|
}
|
|
19873
19963
|
};
|
|
19964
|
+
var crvUSDLeverageManagementSubData = {
|
|
19965
|
+
encode: (controllerAddr, ratioState, targetRatio, collTokenAddr, crvUSDAddr) => {
|
|
19966
|
+
var controllerAddrEncoded = web3_eth_abi__WEBPACK_IMPORTED_MODULE_1___default().encodeParameter('address', controllerAddr);
|
|
19967
|
+
var ratioStateEncoded = web3_eth_abi__WEBPACK_IMPORTED_MODULE_1___default().encodeParameter('uint8', ratioState);
|
|
19968
|
+
var targetRatioEncoded = web3_eth_abi__WEBPACK_IMPORTED_MODULE_1___default().encodeParameter('uint256', (0,_utils__WEBPACK_IMPORTED_MODULE_6__.ratioPercentageToWei)(targetRatio));
|
|
19969
|
+
var collTokenAddrEncoded = web3_eth_abi__WEBPACK_IMPORTED_MODULE_1___default().encodeParameter('address', collTokenAddr);
|
|
19970
|
+
var crvUSDAddrEncoded = web3_eth_abi__WEBPACK_IMPORTED_MODULE_1___default().encodeParameter('address', crvUSDAddr);
|
|
19971
|
+
return [controllerAddrEncoded, ratioStateEncoded, targetRatioEncoded, collTokenAddrEncoded, crvUSDAddrEncoded];
|
|
19972
|
+
},
|
|
19973
|
+
decode: subData => {
|
|
19974
|
+
var controller = web3_eth_abi__WEBPACK_IMPORTED_MODULE_1___default().decodeParameter('address', subData[0]);
|
|
19975
|
+
var weiRatio = web3_eth_abi__WEBPACK_IMPORTED_MODULE_1___default().decodeParameter('uint256', subData[2]);
|
|
19976
|
+
var targetRatio = (0,_utils__WEBPACK_IMPORTED_MODULE_6__.weiToRatioPercentage)(weiRatio);
|
|
19977
|
+
return {
|
|
19978
|
+
controller,
|
|
19979
|
+
targetRatio
|
|
19980
|
+
};
|
|
19981
|
+
}
|
|
19982
|
+
};
|
|
19874
19983
|
|
|
19875
19984
|
/***/ }),
|
|
19876
19985
|
/* 31 */
|
|
@@ -32792,6 +32901,7 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
32792
32901
|
/* harmony export */ chainlinkPriceTrigger: () => (/* binding */ chainlinkPriceTrigger),
|
|
32793
32902
|
/* harmony export */ compoundV2RatioTrigger: () => (/* binding */ compoundV2RatioTrigger),
|
|
32794
32903
|
/* harmony export */ compoundV3RatioTrigger: () => (/* binding */ compoundV3RatioTrigger),
|
|
32904
|
+
/* harmony export */ crvUSDRatioTrigger: () => (/* binding */ crvUSDRatioTrigger),
|
|
32795
32905
|
/* harmony export */ curveUsdBorrowRateTrigger: () => (/* binding */ curveUsdBorrowRateTrigger),
|
|
32796
32906
|
/* harmony export */ curveUsdSoftLiquidationTrigger: () => (/* binding */ curveUsdSoftLiquidationTrigger),
|
|
32797
32907
|
/* harmony export */ exchangeOffchainPriceTrigger: () => (/* binding */ exchangeOffchainPriceTrigger),
|
|
@@ -33118,6 +33228,21 @@ var curveUsdSoftLiquidationTrigger = {
|
|
|
33118
33228
|
};
|
|
33119
33229
|
}
|
|
33120
33230
|
};
|
|
33231
|
+
var crvUSDRatioTrigger = {
|
|
33232
|
+
encode(owner, controller, ratioPercentage, ratioState) {
|
|
33233
|
+
var ratioWei = (0,_utils__WEBPACK_IMPORTED_MODULE_4__.ratioPercentageToWei)(ratioPercentage);
|
|
33234
|
+
return [web3_eth_abi__WEBPACK_IMPORTED_MODULE_2___default().encodeParameters(['address', 'address', 'uint256', 'uint8'], [owner, controller, ratioWei, ratioState])];
|
|
33235
|
+
},
|
|
33236
|
+
decode(triggerData) {
|
|
33237
|
+
var decodedData = web3_eth_abi__WEBPACK_IMPORTED_MODULE_2___default().decodeParameters(['address', 'address', 'uint256', 'uint8'], triggerData[0]);
|
|
33238
|
+
return {
|
|
33239
|
+
owner: decodedData[0],
|
|
33240
|
+
controller: decodedData[1],
|
|
33241
|
+
ratio: (0,_utils__WEBPACK_IMPORTED_MODULE_4__.weiToRatioPercentage)(decodedData[2]),
|
|
33242
|
+
ratioState: Number(decodedData[3])
|
|
33243
|
+
};
|
|
33244
|
+
}
|
|
33245
|
+
};
|
|
33121
33246
|
|
|
33122
33247
|
/***/ }),
|
|
33123
33248
|
/* 318 */
|
|
@@ -33183,6 +33308,8 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
33183
33308
|
/* harmony export */ chickenBondsEncode: () => (/* binding */ chickenBondsEncode),
|
|
33184
33309
|
/* harmony export */ compoundV2Encode: () => (/* binding */ compoundV2Encode),
|
|
33185
33310
|
/* harmony export */ compoundV3Encode: () => (/* binding */ compoundV3Encode),
|
|
33311
|
+
/* harmony export */ compoundV3L2Encode: () => (/* binding */ compoundV3L2Encode),
|
|
33312
|
+
/* harmony export */ crvUSDEncode: () => (/* binding */ crvUSDEncode),
|
|
33186
33313
|
/* harmony export */ exchangeEncode: () => (/* binding */ exchangeEncode),
|
|
33187
33314
|
/* harmony export */ liquityEncode: () => (/* binding */ liquityEncode),
|
|
33188
33315
|
/* harmony export */ makerEncode: () => (/* binding */ makerEncode),
|
|
@@ -33373,6 +33500,11 @@ var compoundV3Encode = {
|
|
|
33373
33500
|
return _subDataService__WEBPACK_IMPORTED_MODULE_4__.compoundV3LeverageManagementSubData.encode(market, baseToken, triggerRepayRatio, triggerBoostRatio, targetBoostRatio, targetRepayRatio, boostEnabled, isEOA);
|
|
33374
33501
|
}
|
|
33375
33502
|
};
|
|
33503
|
+
var compoundV3L2Encode = {
|
|
33504
|
+
leverageManagement(market, baseToken, triggerRepayRatio, triggerBoostRatio, targetBoostRatio, targetRepayRatio, boostEnabled) {
|
|
33505
|
+
return _subDataService__WEBPACK_IMPORTED_MODULE_4__.compoundV3L2LeverageManagementSubData.encode(market, baseToken, triggerRepayRatio, triggerBoostRatio, targetBoostRatio, targetRepayRatio, boostEnabled);
|
|
33506
|
+
}
|
|
33507
|
+
};
|
|
33376
33508
|
var morphoAaveV2Encode = {
|
|
33377
33509
|
leverageManagement(triggerRepayRatio, triggerBoostRatio, targetBoostRatio, targetRepayRatio, boostEnabled) {
|
|
33378
33510
|
return _subDataService__WEBPACK_IMPORTED_MODULE_4__.morphoAaveV2LeverageManagementSubData.encode(triggerRepayRatio, triggerBoostRatio, targetBoostRatio, targetRepayRatio, boostEnabled);
|
|
@@ -33421,6 +33553,17 @@ var sparkEncode = {
|
|
|
33421
33553
|
return [strategyOrBundleId, isBundle, triggerDataEncoded, subDataEncoded];
|
|
33422
33554
|
}
|
|
33423
33555
|
};
|
|
33556
|
+
var crvUSDEncode = {
|
|
33557
|
+
leverageManagement(owner, controllerAddr, ratioState, targetRatio, triggerRatio, collTokenAddr, crvUSDAddr) {
|
|
33558
|
+
var subData = _subDataService__WEBPACK_IMPORTED_MODULE_4__.crvUSDLeverageManagementSubData.encode(controllerAddr, ratioState, targetRatio, collTokenAddr, crvUSDAddr);
|
|
33559
|
+
var triggerData = _triggerService__WEBPACK_IMPORTED_MODULE_5__.crvUSDRatioTrigger.encode(owner, controllerAddr, triggerRatio, ratioState);
|
|
33560
|
+
|
|
33561
|
+
// over is boost, under is repay
|
|
33562
|
+
var strategyOrBundleId = ratioState === _types_enums__WEBPACK_IMPORTED_MODULE_2__.RatioState.OVER ? _types_enums__WEBPACK_IMPORTED_MODULE_2__.Bundles.MainnetIds.CRVUSD_BOOST : _types_enums__WEBPACK_IMPORTED_MODULE_2__.Bundles.MainnetIds.CRVUSD_REPAY;
|
|
33563
|
+
var isBundle = true;
|
|
33564
|
+
return [strategyOrBundleId, isBundle, triggerData, subData];
|
|
33565
|
+
}
|
|
33566
|
+
};
|
|
33424
33567
|
|
|
33425
33568
|
/***/ })
|
|
33426
33569
|
/******/ ]);
|