@defisaver/automation-sdk 3.3.14-strategies-refactor-dev → 3.3.15-liq-prot-dev
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/constants/index.js +95 -0
- package/cjs/index.d.ts +4 -3
- package/cjs/index.js +6 -2
- package/cjs/services/strategiesService.js +151 -0
- package/cjs/services/strategySubService.d.ts +9 -2
- package/cjs/services/strategySubService.js +47 -1
- package/cjs/services/subDataService.d.ts +64 -0
- package/cjs/services/subDataService.js +199 -5
- package/cjs/services/utils.d.ts +3 -1
- package/cjs/services/utils.js +34 -1
- package/cjs/services/utils.test.js +25 -0
- package/cjs/types/enums.d.ts +29 -6
- package/cjs/types/enums.js +23 -0
- package/esm/constants/index.js +95 -0
- package/esm/index.d.ts +4 -3
- package/esm/index.js +7 -3
- package/esm/services/strategiesService.js +151 -0
- package/esm/services/strategySubService.d.ts +9 -2
- package/esm/services/strategySubService.js +48 -2
- package/esm/services/subDataService.d.ts +64 -0
- package/esm/services/subDataService.js +197 -3
- package/esm/services/utils.d.ts +3 -1
- package/esm/services/utils.js +32 -1
- package/esm/services/utils.test.js +27 -2
- package/esm/types/enums.d.ts +29 -6
- package/esm/types/enums.js +23 -0
- package/package.json +1 -1
- package/src/constants/index.ts +96 -0
- package/src/index.ts +24 -6
- package/src/services/strategiesService.ts +216 -0
- package/src/services/strategySubService.ts +142 -5
- package/src/services/subDataService.ts +283 -3
- package/src/services/utils.test.ts +32 -1
- package/src/services/utils.ts +32 -1
- package/src/types/enums.ts +23 -0
package/esm/constants/index.js
CHANGED
|
@@ -543,6 +543,46 @@ export const MAINNET_BUNDLES_INFO = {
|
|
|
543
543
|
strategyId: Strategies.Identifiers.EoaCloseOnPrice,
|
|
544
544
|
protocol: PROTOCOLS.AaveV4,
|
|
545
545
|
},
|
|
546
|
+
[Bundles.MainnetIds.MAKER_LIQUIDATION_PROTECTION]: {
|
|
547
|
+
strategyOrBundleId: Bundles.MainnetIds.MAKER_LIQUIDATION_PROTECTION,
|
|
548
|
+
strategyId: Strategies.Identifiers.LiquidationProtection,
|
|
549
|
+
protocol: PROTOCOLS.MakerDAO,
|
|
550
|
+
},
|
|
551
|
+
[Bundles.MainnetIds.AAVE_V3_LIQUIDATION_PROTECTION]: {
|
|
552
|
+
strategyOrBundleId: Bundles.MainnetIds.AAVE_V3_LIQUIDATION_PROTECTION,
|
|
553
|
+
strategyId: Strategies.Identifiers.LiquidationProtection,
|
|
554
|
+
protocol: PROTOCOLS.AaveV3,
|
|
555
|
+
},
|
|
556
|
+
[Bundles.MainnetIds.AAVE_V4_LIQUIDATION_PROTECTION]: {
|
|
557
|
+
strategyOrBundleId: Bundles.MainnetIds.AAVE_V4_LIQUIDATION_PROTECTION,
|
|
558
|
+
strategyId: Strategies.Identifiers.LiquidationProtection,
|
|
559
|
+
protocol: PROTOCOLS.AaveV4,
|
|
560
|
+
},
|
|
561
|
+
[Bundles.MainnetIds.SPARK_LIQUIDATION_PROTECTION]: {
|
|
562
|
+
strategyOrBundleId: Bundles.MainnetIds.SPARK_LIQUIDATION_PROTECTION,
|
|
563
|
+
strategyId: Strategies.Identifiers.LiquidationProtection,
|
|
564
|
+
protocol: PROTOCOLS.Spark,
|
|
565
|
+
},
|
|
566
|
+
[Bundles.MainnetIds.COMP_V3_SW_LIQUIDATION_PROTECTION]: {
|
|
567
|
+
strategyOrBundleId: Bundles.MainnetIds.COMP_V3_SW_LIQUIDATION_PROTECTION,
|
|
568
|
+
strategyId: Strategies.Identifiers.LiquidationProtection,
|
|
569
|
+
protocol: PROTOCOLS.CompoundV3,
|
|
570
|
+
},
|
|
571
|
+
[Bundles.MainnetIds.COMP_V3_EOA_LIQUIDATION_PROTECTION]: {
|
|
572
|
+
strategyOrBundleId: Bundles.MainnetIds.COMP_V3_EOA_LIQUIDATION_PROTECTION,
|
|
573
|
+
strategyId: Strategies.Identifiers.LiquidationProtection,
|
|
574
|
+
protocol: PROTOCOLS.CompoundV3,
|
|
575
|
+
},
|
|
576
|
+
[Bundles.MainnetIds.MORPHO_BLUE_LIQUIDATION_PROTECTION]: {
|
|
577
|
+
strategyOrBundleId: Bundles.MainnetIds.MORPHO_BLUE_LIQUIDATION_PROTECTION,
|
|
578
|
+
strategyId: Strategies.Identifiers.LiquidationProtection,
|
|
579
|
+
protocol: PROTOCOLS.MorphoBlue,
|
|
580
|
+
},
|
|
581
|
+
[Bundles.MainnetIds.FLUID_T1_LIQUIDATION_PROTECTION]: {
|
|
582
|
+
strategyOrBundleId: Bundles.MainnetIds.FLUID_T1_LIQUIDATION_PROTECTION,
|
|
583
|
+
strategyId: Strategies.Identifiers.LiquidationProtection,
|
|
584
|
+
protocol: PROTOCOLS.FluidT1,
|
|
585
|
+
},
|
|
546
586
|
};
|
|
547
587
|
export const OPTIMISM_BUNDLES_INFO = {
|
|
548
588
|
[Bundles.OptimismIds.AAVE_V3_REPAY]: {
|
|
@@ -600,6 +640,11 @@ export const OPTIMISM_BUNDLES_INFO = {
|
|
|
600
640
|
strategyId: Strategies.Identifiers.EoaCloseOnPrice,
|
|
601
641
|
protocol: PROTOCOLS.AaveV3,
|
|
602
642
|
},
|
|
643
|
+
[Bundles.OptimismIds.AAVE_V3_LIQUIDATION_PROTECTION]: {
|
|
644
|
+
strategyOrBundleId: Bundles.OptimismIds.AAVE_V3_LIQUIDATION_PROTECTION,
|
|
645
|
+
strategyId: Strategies.Identifiers.LiquidationProtection,
|
|
646
|
+
protocol: PROTOCOLS.AaveV3,
|
|
647
|
+
},
|
|
603
648
|
};
|
|
604
649
|
export const BASE_BUNDLES_INFO = {
|
|
605
650
|
[Bundles.BaseIds.AAVE_V3_REPAY]: {
|
|
@@ -737,6 +782,31 @@ export const BASE_BUNDLES_INFO = {
|
|
|
737
782
|
strategyId: Strategies.Identifiers.CloseOnPrice,
|
|
738
783
|
protocol: PROTOCOLS.MorphoBlue,
|
|
739
784
|
},
|
|
785
|
+
[Bundles.BaseIds.AAVE_V3_LIQUIDATION_PROTECTION]: {
|
|
786
|
+
strategyOrBundleId: Bundles.BaseIds.AAVE_V3_LIQUIDATION_PROTECTION,
|
|
787
|
+
strategyId: Strategies.Identifiers.LiquidationProtection,
|
|
788
|
+
protocol: PROTOCOLS.AaveV3,
|
|
789
|
+
},
|
|
790
|
+
[Bundles.BaseIds.COMP_V3_SW_LIQUIDATION_PROTECTION]: {
|
|
791
|
+
strategyOrBundleId: Bundles.BaseIds.COMP_V3_SW_LIQUIDATION_PROTECTION,
|
|
792
|
+
strategyId: Strategies.Identifiers.LiquidationProtection,
|
|
793
|
+
protocol: PROTOCOLS.CompoundV3,
|
|
794
|
+
},
|
|
795
|
+
[Bundles.BaseIds.COMP_V3_EOA_LIQUIDATION_PROTECTION]: {
|
|
796
|
+
strategyOrBundleId: Bundles.BaseIds.COMP_V3_EOA_LIQUIDATION_PROTECTION,
|
|
797
|
+
strategyId: Strategies.Identifiers.LiquidationProtection,
|
|
798
|
+
protocol: PROTOCOLS.CompoundV3,
|
|
799
|
+
},
|
|
800
|
+
[Bundles.BaseIds.MORPHO_BLUE_LIQUIDATION_PROTECTION]: {
|
|
801
|
+
strategyOrBundleId: Bundles.BaseIds.MORPHO_BLUE_LIQUIDATION_PROTECTION,
|
|
802
|
+
strategyId: Strategies.Identifiers.LiquidationProtection,
|
|
803
|
+
protocol: PROTOCOLS.MorphoBlue,
|
|
804
|
+
},
|
|
805
|
+
[Bundles.BaseIds.FLUID_T1_LIQUIDATION_PROTECTION]: {
|
|
806
|
+
strategyOrBundleId: Bundles.BaseIds.FLUID_T1_LIQUIDATION_PROTECTION,
|
|
807
|
+
strategyId: Strategies.Identifiers.LiquidationProtection,
|
|
808
|
+
protocol: PROTOCOLS.FluidT1,
|
|
809
|
+
},
|
|
740
810
|
};
|
|
741
811
|
export const ARBITRUM_BUNDLES_INFO = {
|
|
742
812
|
[Bundles.ArbitrumIds.AAVE_V3_REPAY]: {
|
|
@@ -884,6 +954,31 @@ export const ARBITRUM_BUNDLES_INFO = {
|
|
|
884
954
|
strategyId: Strategies.Identifiers.CloseOnPrice,
|
|
885
955
|
protocol: PROTOCOLS.MorphoBlue,
|
|
886
956
|
},
|
|
957
|
+
[Bundles.ArbitrumIds.AAVE_V3_LIQUIDATION_PROTECTION]: {
|
|
958
|
+
strategyOrBundleId: Bundles.ArbitrumIds.AAVE_V3_LIQUIDATION_PROTECTION,
|
|
959
|
+
strategyId: Strategies.Identifiers.LiquidationProtection,
|
|
960
|
+
protocol: PROTOCOLS.AaveV3,
|
|
961
|
+
},
|
|
962
|
+
[Bundles.ArbitrumIds.COMP_V3_SW_LIQUIDATION_PROTECTION]: {
|
|
963
|
+
strategyOrBundleId: Bundles.ArbitrumIds.COMP_V3_SW_LIQUIDATION_PROTECTION,
|
|
964
|
+
strategyId: Strategies.Identifiers.LiquidationProtection,
|
|
965
|
+
protocol: PROTOCOLS.CompoundV3,
|
|
966
|
+
},
|
|
967
|
+
[Bundles.ArbitrumIds.COMP_V3_EOA_LIQUIDATION_PROTECTION]: {
|
|
968
|
+
strategyOrBundleId: Bundles.ArbitrumIds.COMP_V3_EOA_LIQUIDATION_PROTECTION,
|
|
969
|
+
strategyId: Strategies.Identifiers.LiquidationProtection,
|
|
970
|
+
protocol: PROTOCOLS.CompoundV3,
|
|
971
|
+
},
|
|
972
|
+
[Bundles.ArbitrumIds.MORPHO_BLUE_LIQUIDATION_PROTECTION]: {
|
|
973
|
+
strategyOrBundleId: Bundles.ArbitrumIds.MORPHO_BLUE_LIQUIDATION_PROTECTION,
|
|
974
|
+
strategyId: Strategies.Identifiers.LiquidationProtection,
|
|
975
|
+
protocol: PROTOCOLS.MorphoBlue,
|
|
976
|
+
},
|
|
977
|
+
[Bundles.ArbitrumIds.FLUID_T1_LIQUIDATION_PROTECTION]: {
|
|
978
|
+
strategyOrBundleId: Bundles.ArbitrumIds.FLUID_T1_LIQUIDATION_PROTECTION,
|
|
979
|
+
strategyId: Strategies.Identifiers.LiquidationProtection,
|
|
980
|
+
protocol: PROTOCOLS.FluidT1,
|
|
981
|
+
},
|
|
887
982
|
};
|
|
888
983
|
export const BUNDLES_INFO = {
|
|
889
984
|
[ChainId.Ethereum]: MAINNET_BUNDLES_INFO,
|
package/esm/index.d.ts
CHANGED
|
@@ -13,12 +13,13 @@ import * as strategiesService from './services/strategiesService';
|
|
|
13
13
|
import * as constants from './constants';
|
|
14
14
|
import * as enums from './types/enums';
|
|
15
15
|
import type * as types from './types';
|
|
16
|
-
import { getRatioStateInfoForAaveCloseStrategy, compareSubHashes, encodeSubId, getCloseStrategyType } from './services/utils';
|
|
16
|
+
import { getRatioStateInfoForAaveCloseStrategy, compareSubHashes, encodeSubId, getCloseStrategyType, getCompoundV3LeverageManagementBundleId } from './services/utils';
|
|
17
17
|
declare const utils: {
|
|
18
|
-
getRatioStateInfoForAaveCloseStrategy: typeof getRatioStateInfoForAaveCloseStrategy;
|
|
19
18
|
compareSubHashes: typeof compareSubHashes;
|
|
20
19
|
encodeSubId: typeof encodeSubId;
|
|
21
20
|
getCloseStrategyType: typeof getCloseStrategyType;
|
|
21
|
+
getCompoundV3LeverageManagementBundleId: typeof getCompoundV3LeverageManagementBundleId;
|
|
22
|
+
getRatioStateInfoForAaveCloseStrategy: typeof getRatioStateInfoForAaveCloseStrategy;
|
|
22
23
|
};
|
|
23
|
-
export {
|
|
24
|
+
export { ArbitrumStrategies, BaseStrategies, EthereumStrategies, LegacyAaveAutomation, LegacyCompoundAutomation, LegacyMakerAutomation, OptimismStrategies, constants, enums, strategiesService, strategySubService, subDataService, triggerService, utils, };
|
|
24
25
|
export type { types };
|
package/esm/index.js
CHANGED
|
@@ -16,8 +16,12 @@ import * as strategySubService from './services/strategySubService';
|
|
|
16
16
|
import * as strategiesService from './services/strategiesService';
|
|
17
17
|
import * as constants from './constants';
|
|
18
18
|
import * as enums from './types/enums';
|
|
19
|
-
import { getRatioStateInfoForAaveCloseStrategy, compareSubHashes, encodeSubId, getCloseStrategyType, } from './services/utils';
|
|
19
|
+
import { getRatioStateInfoForAaveCloseStrategy, compareSubHashes, encodeSubId, getCloseStrategyType, getCompoundV3LeverageManagementBundleId, } from './services/utils';
|
|
20
20
|
const utils = {
|
|
21
|
-
|
|
21
|
+
compareSubHashes,
|
|
22
|
+
encodeSubId,
|
|
23
|
+
getCloseStrategyType,
|
|
24
|
+
getCompoundV3LeverageManagementBundleId,
|
|
25
|
+
getRatioStateInfoForAaveCloseStrategy,
|
|
22
26
|
};
|
|
23
|
-
export {
|
|
27
|
+
export { ArbitrumStrategies, BaseStrategies, EthereumStrategies, LegacyAaveAutomation, LegacyCompoundAutomation, LegacyMakerAutomation, OptimismStrategies, constants, enums, strategiesService, strategySubService, subDataService, triggerService, utils, };
|
|
@@ -94,6 +94,25 @@ function parseMakerLeverageManagement(position, parseData) {
|
|
|
94
94
|
_position.strategy.strategyId = Strategies.IdOverrides.LeverageManagement;
|
|
95
95
|
return _position;
|
|
96
96
|
}
|
|
97
|
+
function parseMakerLiquidationProtection(position, parseData) {
|
|
98
|
+
const _position = cloneDeep(position);
|
|
99
|
+
const { subStruct, subId } = parseData.subscriptionEventData;
|
|
100
|
+
const { isEnabled } = parseData.strategiesSubsData;
|
|
101
|
+
const triggerData = triggerService.makerRatioTrigger.decode(subStruct.triggerData);
|
|
102
|
+
const subData = subDataService.makerLiquidationProtectionSubData.decode(subStruct.subData);
|
|
103
|
+
_position.strategyData.decoded.triggerData = triggerData;
|
|
104
|
+
_position.strategyData.decoded.subData = subData;
|
|
105
|
+
_position.positionId = getPositionId(_position.chainId, _position.protocol.id, subData.vaultId);
|
|
106
|
+
_position.specific = {
|
|
107
|
+
triggerRepayRatio: triggerData.ratio,
|
|
108
|
+
targetRepayRatio: subData.targetRatio,
|
|
109
|
+
repayEnabled: isEnabled,
|
|
110
|
+
subId1: Number(subId),
|
|
111
|
+
};
|
|
112
|
+
// TODO -> Is this ok?
|
|
113
|
+
_position.strategy.strategyId = Strategies.IdOverrides.LiquidationProtection;
|
|
114
|
+
return _position;
|
|
115
|
+
}
|
|
97
116
|
function parseLiquityCloseOnPrice(position, parseData) {
|
|
98
117
|
const _position = cloneDeep(position);
|
|
99
118
|
const { subStruct } = parseData.subscriptionEventData;
|
|
@@ -204,6 +223,27 @@ function parseAaveV3LeverageManagement(position, parseData) {
|
|
|
204
223
|
}
|
|
205
224
|
return _position;
|
|
206
225
|
}
|
|
226
|
+
function parseAaveV3LiquidationProtection(position, parseData) {
|
|
227
|
+
const _position = cloneDeep(position);
|
|
228
|
+
const { subStruct, subId, subHash } = parseData.subscriptionEventData;
|
|
229
|
+
const { isEnabled } = parseData.strategiesSubsData;
|
|
230
|
+
const triggerData = triggerService.aaveV3RatioTrigger.decode(subStruct.triggerData);
|
|
231
|
+
// const isEOA = _position.strategy.strategyId.includes('eoa');
|
|
232
|
+
const subData = subDataService.aaveV3LiquidationProtectionSubData.decode(subStruct.subData);
|
|
233
|
+
_position.strategyData.decoded.triggerData = triggerData;
|
|
234
|
+
_position.strategyData.decoded.subData = subData;
|
|
235
|
+
_position.positionId = getPositionId(_position.chainId, _position.protocol.id, _position.owner, triggerData.market);
|
|
236
|
+
_position.specific = {
|
|
237
|
+
triggerRepayRatio: triggerData.ratio,
|
|
238
|
+
targetRepayRatio: subData.targetRatio,
|
|
239
|
+
repayEnabled: isEnabled,
|
|
240
|
+
subId1: Number(subId),
|
|
241
|
+
subHashRepay: subHash,
|
|
242
|
+
};
|
|
243
|
+
// TODO -> Should split for EOA or not? Prob not as they will use same encoding and decoding
|
|
244
|
+
_position.strategy.strategyId = Strategies.IdOverrides.LiquidationProtection;
|
|
245
|
+
return _position;
|
|
246
|
+
}
|
|
207
247
|
function parseAaveV3LeverageManagementOnPrice(position, parseData) {
|
|
208
248
|
const _position = cloneDeep(position);
|
|
209
249
|
const { subStruct } = parseData.subscriptionEventData;
|
|
@@ -333,6 +373,27 @@ function parseAaveV4LeverageManagement(position, parseData) {
|
|
|
333
373
|
}
|
|
334
374
|
return _position;
|
|
335
375
|
}
|
|
376
|
+
function parseAaveV4LiquidationProtection(position, parseData) {
|
|
377
|
+
const _position = cloneDeep(position);
|
|
378
|
+
const { subStruct, subId, subHash } = parseData.subscriptionEventData;
|
|
379
|
+
const { isEnabled } = parseData.strategiesSubsData;
|
|
380
|
+
const triggerData = triggerService.aaveV4RatioTrigger.decode(subStruct.triggerData);
|
|
381
|
+
const subData = subDataService.aaveV4LiquidationProtectionSubData.decode(subStruct.subData);
|
|
382
|
+
// const isEOA = _position.strategy.strategyId.includes('eoa');
|
|
383
|
+
// const isRepay = [Strategies.Identifiers.Repay, Strategies.Identifiers.EoaRepay].includes(_position.strategy.strategyId as Strategies.Identifiers);
|
|
384
|
+
_position.strategyData.decoded.triggerData = triggerData;
|
|
385
|
+
_position.strategyData.decoded.subData = subData;
|
|
386
|
+
_position.positionId = getPositionId(_position.chainId, _position.protocol.id, _position.owner, triggerData.spoke);
|
|
387
|
+
_position.strategy.strategyId = Strategies.IdOverrides.LiquidationProtection;
|
|
388
|
+
_position.specific = {
|
|
389
|
+
triggerRepayRatio: triggerData.ratio,
|
|
390
|
+
targetRepayRatio: subData.targetRatio,
|
|
391
|
+
repayEnabled: isEnabled,
|
|
392
|
+
subId1: Number(subId),
|
|
393
|
+
subHashRepay: subHash,
|
|
394
|
+
};
|
|
395
|
+
return _position;
|
|
396
|
+
}
|
|
336
397
|
function parseAaveV4LeverageManagementOnPrice(position, parseData) {
|
|
337
398
|
const _position = cloneDeep(position);
|
|
338
399
|
const { subStruct } = parseData.subscriptionEventData;
|
|
@@ -517,6 +578,28 @@ function parseCompoundV3LeverageManagement(position, parseData) {
|
|
|
517
578
|
_position.strategy.strategyId = isEOA ? Strategies.IdOverrides.EoaLeverageManagement : Strategies.IdOverrides.LeverageManagement;
|
|
518
579
|
return _position;
|
|
519
580
|
}
|
|
581
|
+
function parseCompoundV3LiquidationProtection(position, parseData) {
|
|
582
|
+
const _position = cloneDeep(position);
|
|
583
|
+
const { subStruct, subId, subHash } = parseData.subscriptionEventData;
|
|
584
|
+
const { isEnabled } = parseData.strategiesSubsData;
|
|
585
|
+
const subDataDecoder = subDataService.compoundV3LiquidationProtectionSubData;
|
|
586
|
+
const triggerData = triggerService.compoundV3RatioTrigger.decode(subStruct.triggerData);
|
|
587
|
+
const subData = subDataDecoder.decode(subStruct.subData);
|
|
588
|
+
_position.strategyData.decoded.triggerData = triggerData;
|
|
589
|
+
_position.strategyData.decoded.subData = subData;
|
|
590
|
+
_position.positionId = getPositionId(_position.chainId, _position.protocol.id, triggerData.owner.toLowerCase(), triggerData.market);
|
|
591
|
+
// const isRepay = [Strategies.Identifiers.Repay, Strategies.Identifiers.EoaRepay].includes(_position.strategy.strategyId as Strategies.Identifiers);
|
|
592
|
+
const isEOA = _position.strategy.strategyId.includes('eoa');
|
|
593
|
+
_position.specific = {
|
|
594
|
+
triggerRepayRatio: triggerData.ratio,
|
|
595
|
+
targetRepayRatio: subData.targetRatio,
|
|
596
|
+
repayEnabled: isEnabled,
|
|
597
|
+
subId1: Number(subId),
|
|
598
|
+
subHashRepay: subHash,
|
|
599
|
+
};
|
|
600
|
+
_position.strategy.strategyId = isEOA ? Strategies.IdOverrides.EoaLiquidationProtection : Strategies.IdOverrides.LiquidationProtection;
|
|
601
|
+
return _position;
|
|
602
|
+
}
|
|
520
603
|
function parseCompoundV3LeverageManagementOnPrice(position, parseData) {
|
|
521
604
|
const _position = cloneDeep(position);
|
|
522
605
|
const { subStruct } = parseData.subscriptionEventData;
|
|
@@ -696,6 +779,25 @@ function parseSparkLeverageManagement(position, parseData) {
|
|
|
696
779
|
_position.strategy.strategyId = Strategies.IdOverrides.LeverageManagement;
|
|
697
780
|
return _position;
|
|
698
781
|
}
|
|
782
|
+
function parseSparkLiquidationProtection(position, parseData) {
|
|
783
|
+
const _position = cloneDeep(position);
|
|
784
|
+
const { subStruct, subId, subHash } = parseData.subscriptionEventData;
|
|
785
|
+
const { isEnabled } = parseData.strategiesSubsData;
|
|
786
|
+
const triggerData = triggerService.sparkRatioTrigger.decode(subStruct.triggerData);
|
|
787
|
+
const subData = subDataService.sparkLiquidationProtectionSubData.decode(subStruct.subData);
|
|
788
|
+
_position.strategyData.decoded.triggerData = triggerData;
|
|
789
|
+
_position.strategyData.decoded.subData = subData;
|
|
790
|
+
_position.positionId = getPositionId(_position.chainId, _position.protocol.id, _position.owner, triggerData.market);
|
|
791
|
+
_position.specific = {
|
|
792
|
+
triggerRepayRatio: triggerData.ratio,
|
|
793
|
+
targetRepayRatio: subData.targetRatio,
|
|
794
|
+
repayEnabled: isEnabled,
|
|
795
|
+
subId1: Number(subId),
|
|
796
|
+
subHashRepay: subHash,
|
|
797
|
+
};
|
|
798
|
+
_position.strategy.strategyId = Strategies.IdOverrides.LiquidationProtection;
|
|
799
|
+
return _position;
|
|
800
|
+
}
|
|
699
801
|
function parseSparkLeverageManagementOnPrice(position, parseData) {
|
|
700
802
|
const _position = cloneDeep(position);
|
|
701
803
|
const { subStruct } = parseData.subscriptionEventData;
|
|
@@ -850,6 +952,27 @@ function parseMorphoBlueLeverageManagement(position, parseData) {
|
|
|
850
952
|
_position.strategy.strategyId = isEOA ? Strategies.IdOverrides.EoaLeverageManagement : Strategies.IdOverrides.LeverageManagement;
|
|
851
953
|
return _position;
|
|
852
954
|
}
|
|
955
|
+
function parseMorphoBlueLiquidationProtection(position, parseData) {
|
|
956
|
+
const _position = cloneDeep(position);
|
|
957
|
+
const { subStruct, subId, subHash } = parseData.subscriptionEventData;
|
|
958
|
+
const { isEnabled } = parseData.strategiesSubsData;
|
|
959
|
+
const triggerData = triggerService.morphoBlueRatioTrigger.decode(subStruct.triggerData);
|
|
960
|
+
const subData = subDataService.morphoBlueLiquidationProtectionSubData.decode(subStruct.subData);
|
|
961
|
+
_position.strategyData.decoded.triggerData = triggerData;
|
|
962
|
+
_position.strategyData.decoded.subData = subData;
|
|
963
|
+
_position.positionId = getPositionId(_position.chainId, _position.protocol.id, triggerData.owner.toLowerCase(), triggerData.marketId);
|
|
964
|
+
_position.specific = {
|
|
965
|
+
triggerRepayRatio: triggerData.ratio,
|
|
966
|
+
targetRepayRatio: subData.targetRatio,
|
|
967
|
+
repayEnabled: isEnabled,
|
|
968
|
+
subId1: Number(subId),
|
|
969
|
+
subHashRepay: subHash,
|
|
970
|
+
};
|
|
971
|
+
const isEOA = _position.strategy.strategyId.includes('eoa');
|
|
972
|
+
// TODO -> Should be separate for EOA ?
|
|
973
|
+
_position.strategy.strategyId = Strategies.IdOverrides.LiquidationProtection;
|
|
974
|
+
return _position;
|
|
975
|
+
}
|
|
853
976
|
function parseMorphoBlueLeverageManagementOnPrice(position, parseData) {
|
|
854
977
|
const _position = cloneDeep(position);
|
|
855
978
|
const { subStruct } = parseData.subscriptionEventData;
|
|
@@ -1002,6 +1125,25 @@ function parseFluidT1LeverageManagement(position, parseData) {
|
|
|
1002
1125
|
_position.strategy.strategyId = Strategies.IdOverrides.LeverageManagement;
|
|
1003
1126
|
return _position;
|
|
1004
1127
|
}
|
|
1128
|
+
function parseFluidT1LiquidationProtection(position, parseData) {
|
|
1129
|
+
const _position = cloneDeep(position);
|
|
1130
|
+
const { subStruct, subId, subHash } = parseData.subscriptionEventData;
|
|
1131
|
+
const { isEnabled } = parseData.strategiesSubsData;
|
|
1132
|
+
const triggerData = triggerService.fluidRatioTrigger.decode(subStruct.triggerData);
|
|
1133
|
+
const subData = subDataService.fluidLiquidationProtectionSubData.decode(subStruct.subData);
|
|
1134
|
+
_position.strategyData.decoded.triggerData = triggerData;
|
|
1135
|
+
_position.strategyData.decoded.subData = subData;
|
|
1136
|
+
_position.positionId = getPositionId(_position.chainId, _position.protocol.id, _position.owner, triggerData.nftId, subData.vault);
|
|
1137
|
+
_position.specific = {
|
|
1138
|
+
triggerRepayRatio: triggerData.ratio,
|
|
1139
|
+
targetRepayRatio: subData.targetRatio,
|
|
1140
|
+
repayEnabled: isEnabled,
|
|
1141
|
+
subId1: Number(subId),
|
|
1142
|
+
subHashRepay: subHash,
|
|
1143
|
+
};
|
|
1144
|
+
_position.strategy.strategyId = Strategies.IdOverrides.LiquidationProtection;
|
|
1145
|
+
return _position;
|
|
1146
|
+
}
|
|
1005
1147
|
const parsingMethodsMapping = {
|
|
1006
1148
|
[ProtocolIdentifiers.StrategiesAutomation.MakerDAO]: {
|
|
1007
1149
|
[Strategies.Identifiers.SavingsLiqProtection]: parseMakerSavingsLiqProtection,
|
|
@@ -1011,6 +1153,7 @@ const parsingMethodsMapping = {
|
|
|
1011
1153
|
[Strategies.Identifiers.TrailingStopToDebt]: parseMakerTrailingStop,
|
|
1012
1154
|
[Strategies.Identifiers.Repay]: parseMakerLeverageManagement,
|
|
1013
1155
|
[Strategies.Identifiers.Boost]: parseMakerLeverageManagement,
|
|
1156
|
+
[Strategies.Identifiers.LiquidationProtection]: parseMakerLiquidationProtection,
|
|
1014
1157
|
},
|
|
1015
1158
|
[ProtocolIdentifiers.StrategiesAutomation.Liquity]: {
|
|
1016
1159
|
[Strategies.Identifiers.CloseOnPriceToColl]: parseLiquityCloseOnPrice,
|
|
@@ -1049,6 +1192,7 @@ const parsingMethodsMapping = {
|
|
|
1049
1192
|
[Strategies.Identifiers.EoaBoostOnPrice]: parseAaveV3LeverageManagementOnPrice,
|
|
1050
1193
|
[Strategies.Identifiers.EoaCloseOnPrice]: parseAaveV3CloseOnPrice,
|
|
1051
1194
|
[Strategies.Identifiers.CollateralSwitch]: parseAaveV3CollateralSwitch,
|
|
1195
|
+
[Strategies.Identifiers.LiquidationProtection]: parseAaveV3LiquidationProtection,
|
|
1052
1196
|
},
|
|
1053
1197
|
[ProtocolIdentifiers.StrategiesAutomation.AaveV4]: {
|
|
1054
1198
|
[Strategies.Identifiers.Repay]: parseAaveV4LeverageManagement,
|
|
@@ -1063,6 +1207,7 @@ const parsingMethodsMapping = {
|
|
|
1063
1207
|
[Strategies.Identifiers.EoaCloseOnPrice]: parseAaveV4CloseOnPrice,
|
|
1064
1208
|
[Strategies.Identifiers.CollateralSwitch]: parseAaveV4CollateralSwitch,
|
|
1065
1209
|
[Strategies.Identifiers.EoaCollateralSwitch]: parseAaveV4CollateralSwitch,
|
|
1210
|
+
[Strategies.Identifiers.LiquidationProtection]: parseAaveV4LiquidationProtection,
|
|
1066
1211
|
},
|
|
1067
1212
|
[ProtocolIdentifiers.StrategiesAutomation.CompoundV2]: {
|
|
1068
1213
|
[Strategies.Identifiers.Repay]: parseCompoundV2LeverageManagement,
|
|
@@ -1079,6 +1224,9 @@ const parsingMethodsMapping = {
|
|
|
1079
1224
|
[Strategies.Identifiers.EoaBoostOnPrice]: parseCompoundV3LeverageManagementOnPrice,
|
|
1080
1225
|
[Strategies.Identifiers.CloseOnPrice]: parseCompoundV3CloseOnPrice,
|
|
1081
1226
|
[Strategies.Identifiers.EoaCloseOnPrice]: parseCompoundV3CloseOnPrice,
|
|
1227
|
+
// TODO -> here should prob separate EOA from SW
|
|
1228
|
+
[Strategies.Identifiers.LiquidationProtection]: parseCompoundV3LiquidationProtection,
|
|
1229
|
+
[Strategies.Identifiers.EoaLiquidationProtection]: parseCompoundV3LiquidationProtection,
|
|
1082
1230
|
},
|
|
1083
1231
|
[ProtocolIdentifiers.StrategiesAutomation.ChickenBonds]: {
|
|
1084
1232
|
[Strategies.Identifiers.Rebond]: parseChickenBondsRebond,
|
|
@@ -1098,6 +1246,7 @@ const parsingMethodsMapping = {
|
|
|
1098
1246
|
[Strategies.Identifiers.BoostOnPrice]: parseSparkLeverageManagementOnPrice,
|
|
1099
1247
|
[Strategies.Identifiers.CloseOnPrice]: parseSparkCloseOnPrice,
|
|
1100
1248
|
[Strategies.Identifiers.CollateralSwitch]: parseSparkCollateralSwitch,
|
|
1249
|
+
[Strategies.Identifiers.LiquidationProtection]: parseSparkLiquidationProtection,
|
|
1101
1250
|
},
|
|
1102
1251
|
[ProtocolIdentifiers.StrategiesAutomation.CrvUSD]: {
|
|
1103
1252
|
[Strategies.Identifiers.Repay]: parseCrvUSDLeverageManagement,
|
|
@@ -1111,10 +1260,12 @@ const parsingMethodsMapping = {
|
|
|
1111
1260
|
[Strategies.Identifiers.EoaBoost]: parseMorphoBlueLeverageManagement,
|
|
1112
1261
|
[Strategies.Identifiers.BoostOnPrice]: parseMorphoBlueLeverageManagementOnPrice,
|
|
1113
1262
|
[Strategies.Identifiers.CloseOnPrice]: parseMorphoBlueCloseOnPrice,
|
|
1263
|
+
[Strategies.Identifiers.LiquidationProtection]: parseMorphoBlueLiquidationProtection,
|
|
1114
1264
|
},
|
|
1115
1265
|
[ProtocolIdentifiers.StrategiesAutomation.FluidT1]: {
|
|
1116
1266
|
[Strategies.Identifiers.Repay]: parseFluidT1LeverageManagement,
|
|
1117
1267
|
[Strategies.Identifiers.Boost]: parseFluidT1LeverageManagement,
|
|
1268
|
+
[Strategies.Identifiers.LiquidationProtection]: parseFluidT1LiquidationProtection,
|
|
1118
1269
|
},
|
|
1119
1270
|
};
|
|
1120
1271
|
function getParsingMethod(id, strategy) {
|
|
@@ -1,11 +1,12 @@
|
|
|
1
|
-
import
|
|
2
|
-
import { CloseToAssetType, Bundles, ChainId, RatioState, Strategies } from '../types/enums';
|
|
1
|
+
import { Bundles, ChainId, CloseToAssetType, RatioState, Strategies } from '../types/enums';
|
|
3
2
|
import type { EthereumAddress, StrategyOrBundleIds } from '../types';
|
|
3
|
+
import type { OrderType } from '../types/enums';
|
|
4
4
|
export declare const makerEncode: {
|
|
5
5
|
repayFromSavings(bundleId: StrategyOrBundleIds, vaultId: number, triggerRepayRatio: number, targetRepayRatio: number, isBundle?: boolean, chainId?: ChainId, daiAddr?: EthereumAddress, mcdCdpManagerAddr?: EthereumAddress): (boolean | string[] | Strategies.MainnetIds | Strategies.OptimismIds | Strategies.ArbitrumIds | Strategies.BaseIds | Bundles.MainnetIds | Bundles.OptimismIds | Bundles.ArbitrumIds | Bundles.BaseIds)[];
|
|
6
6
|
closeOnPrice(vaultId: number, ratioState: RatioState, price: string, closeToAssetAddr: EthereumAddress, chainlinkCollAddress: EthereumAddress, chainId?: ChainId, daiAddr?: EthereumAddress, mcdCdpManagerAddr?: EthereumAddress): (boolean | string[] | Strategies.MainnetIds)[];
|
|
7
7
|
trailingStop(vaultId: number, triggerPercentage: number, closeToAssetAddr: EthereumAddress, chainlinkCollAddress: EthereumAddress, roundId: number, chainId?: ChainId, daiAddr?: EthereumAddress, mcdCdpManagerAddr?: EthereumAddress): (boolean | string[] | Strategies.MainnetIds)[];
|
|
8
8
|
leverageManagementWithoutSubProxy(vaultId: number, triggerRatio: number, targetRatio: number, ratioState: RatioState, isBoost: boolean, daiAddr?: EthereumAddress): (boolean | string[] | Bundles.MainnetIds)[];
|
|
9
|
+
liquidationProtection(vaultId: number, triggerRatio: number, targetRatio: number, ratioState: RatioState, daiAddr?: EthereumAddress): (boolean | string[] | Bundles.MainnetIds)[];
|
|
9
10
|
};
|
|
10
11
|
export declare const liquityEncode: {
|
|
11
12
|
closeOnPrice(priceOverOrUnder: RatioState, price: string, closeToAssetAddr: EthereumAddress, chainlinkCollAddress: EthereumAddress, chainId?: ChainId, collAddr?: EthereumAddress, debtAddr?: EthereumAddress): (boolean | string[] | Strategies.MainnetIds)[];
|
|
@@ -60,6 +61,7 @@ export declare const aaveV3Encode: {
|
|
|
60
61
|
targetRatio: number;
|
|
61
62
|
}): (number | boolean | string[])[];
|
|
62
63
|
leverageManagementWithoutSubProxy(strategyOrBundleId: number, market: EthereumAddress, user: EthereumAddress, ratioState: RatioState, targetRatio: number, triggerRatio: number, isGeneric?: boolean): (number | boolean | string[])[];
|
|
64
|
+
liquidationProtection(strategyOrBundleId: number, market: EthereumAddress, user: EthereumAddress, ratioState: RatioState, targetRatio: number, triggerRatio: number): (number | boolean | string[])[];
|
|
63
65
|
leverageManagementOnPriceGeneric(strategyOrBundleId: number, price: number, ratioState: RatioState, collAsset: EthereumAddress, collAssetId: number, debtAsset: EthereumAddress, debtAssetId: number, marketAddr: EthereumAddress, targetRatio: number, user: EthereumAddress): (number | boolean | string[])[];
|
|
64
66
|
closeOnPriceGeneric(strategyOrBundleId: number, collAsset: EthereumAddress, collAssetId: number, debtAsset: EthereumAddress, debtAssetId: number, marketAddr: EthereumAddress, user: EthereumAddress, stopLossPrice?: number, stopLossType?: CloseToAssetType, takeProfitPrice?: number, takeProfitType?: CloseToAssetType): (number | boolean | string[])[];
|
|
65
67
|
collateralSwitch(strategyOrBundleId: number, fromAsset: EthereumAddress, fromAssetId: number, toAsset: EthereumAddress, toAssetId: number, marketAddr: EthereumAddress, amountToSwitch: string, baseTokenAddress: EthereumAddress, quoteTokenAddress: EthereumAddress, price: number, state: RatioState): (number | boolean | string[])[];
|
|
@@ -69,6 +71,7 @@ export declare const compoundV2Encode: {
|
|
|
69
71
|
};
|
|
70
72
|
export declare const compoundV3Encode: {
|
|
71
73
|
leverageManagementWithoutSubProxy(strategyOrBundleId: number, market: EthereumAddress, baseToken: EthereumAddress, user: EthereumAddress, ratioState: RatioState, targetRatio: number, triggerRatio: number): (number | boolean | string[])[];
|
|
74
|
+
liquidationProtection(market: EthereumAddress, baseToken: EthereumAddress, triggerRepayRatio: number, triggerBoostRatio: number, targetBoostRatio: number, targetRepayRatio: number, boostEnabled: boolean, isEOA: boolean): string[];
|
|
72
75
|
leverageManagementOnPrice(strategyOrBundleId: number, market: EthereumAddress, collToken: EthereumAddress, baseToken: EthereumAddress, targetRatio: number, price: number, priceState: RatioState, ratioState: RatioState, user: EthereumAddress): (number | boolean | string[])[];
|
|
73
76
|
closeOnPrice(strategyOrBundleId: number, market: EthereumAddress, collToken: EthereumAddress, baseToken: EthereumAddress, stopLossPrice: number | undefined, stopLossType: CloseToAssetType | undefined, takeProfitPrice: number | undefined, takeProfitType: CloseToAssetType | undefined, user: EthereumAddress): (number | boolean | string[])[];
|
|
74
77
|
};
|
|
@@ -95,6 +98,7 @@ export declare const sparkEncode: {
|
|
|
95
98
|
}): (number | boolean | string[])[];
|
|
96
99
|
closeOnPriceGeneric(strategyOrBundleId: number, collAsset: EthereumAddress, collAssetId: number, debtAsset: EthereumAddress, debtAssetId: number, marketAddr: EthereumAddress, user: EthereumAddress, stopLossPrice?: number, stopLossType?: CloseToAssetType, takeProfitPrice?: number, takeProfitType?: CloseToAssetType): (number | boolean | string[])[];
|
|
97
100
|
leverageManagementWithoutSubProxy(strategyOrBundleId: number, market: EthereumAddress, user: EthereumAddress, ratioState: RatioState, targetRatio: number, triggerRatio: number): (number | boolean | string[])[];
|
|
101
|
+
liquidationProtection(strategyOrBundleId: number, market: EthereumAddress, user: EthereumAddress, ratioState: RatioState, targetRatio: number, triggerRatio: number): (number | boolean | string[])[];
|
|
98
102
|
collateralSwitch(strategyOrBundleId: number, fromAsset: EthereumAddress, fromAssetId: number, toAsset: EthereumAddress, toAssetId: number, marketAddr: EthereumAddress, amountToSwitch: string, baseTokenAddress: EthereumAddress, quoteTokenAddress: EthereumAddress, price: number, state: RatioState): (number | boolean | string[])[];
|
|
99
103
|
};
|
|
100
104
|
export declare const crvUSDEncode: {
|
|
@@ -103,6 +107,7 @@ export declare const crvUSDEncode: {
|
|
|
103
107
|
};
|
|
104
108
|
export declare const morphoBlueEncode: {
|
|
105
109
|
leverageManagement(marketId: string, loanToken: EthereumAddress, collToken: EthereumAddress, oracle: EthereumAddress, irm: EthereumAddress, lltv: string, ratioState: RatioState, targetRatio: number, triggerRatio: number, user: EthereumAddress, isEOA: boolean, network: ChainId): (boolean | string[] | Bundles.BaseIds)[] | (boolean | string[] | Bundles.MainnetIds | Bundles.ArbitrumIds)[];
|
|
110
|
+
liquidationProtection(marketId: string, loanToken: EthereumAddress, collToken: EthereumAddress, oracle: EthereumAddress, irm: EthereumAddress, lltv: string, ratioState: RatioState, targetRatio: number, triggerRatio: number, user: EthereumAddress, isEOA: boolean, network: ChainId): (boolean | string[] | Bundles.MainnetIds)[];
|
|
106
111
|
leverageManagementOnPrice(strategyOrBundleId: number, isBundle: boolean | undefined, loanToken: EthereumAddress, collToken: EthereumAddress, oracle: EthereumAddress, irm: EthereumAddress, lltv: string, user: EthereumAddress, targetRatio: number, price: number, priceState: RatioState): (number | boolean | string[])[];
|
|
107
112
|
closeOnPrice(strategyOrBundleId: number, loanToken: EthereumAddress, collToken: EthereumAddress, oracle: EthereumAddress, irm: EthereumAddress, lltv: string, user: EthereumAddress, stopLossPrice?: number, stopLossType?: CloseToAssetType, takeProfitPrice?: number, takeProfitType?: CloseToAssetType): (number | boolean | string[])[];
|
|
108
113
|
};
|
|
@@ -114,9 +119,11 @@ export declare const liquityV2Encode: {
|
|
|
114
119
|
};
|
|
115
120
|
export declare const fluidEncode: {
|
|
116
121
|
leverageManagement(nftId: string, vault: EthereumAddress, ratioState: RatioState, targetRatio: number, triggerRatio: number, strategyOrBundleId: number): (number | boolean | string[])[];
|
|
122
|
+
liquidationProtection(nftId: string, vault: EthereumAddress, ratioState: RatioState, targetRatio: number, triggerRatio: number, strategyOrBundleId: number): (number | boolean | string[])[];
|
|
117
123
|
};
|
|
118
124
|
export declare const aaveV4Encode: {
|
|
119
125
|
leverageManagement(strategyOrBundleId: number, owner: EthereumAddress, spoke: EthereumAddress, ratioState: RatioState, targetRatio: number, triggerRatio: number): (number | boolean | string[])[];
|
|
126
|
+
liquidationProtection(strategyOrBundleId: number, owner: EthereumAddress, spoke: EthereumAddress, ratioState: RatioState, targetRatio: number, triggerRatio: number): (number | boolean | string[])[];
|
|
120
127
|
leverageManagementOnPrice(strategyOrBundleId: number, owner: EthereumAddress, spoke: EthereumAddress, collAsset: EthereumAddress, collAssetId: number, debtAsset: EthereumAddress, debtAssetId: number, targetRatio: number, price: string, priceState: RatioState, ratioState: RatioState): (number | boolean | string[])[];
|
|
121
128
|
closeOnPrice(strategyOrBundleId: number, owner: EthereumAddress, spoke: EthereumAddress, collAsset: EthereumAddress, collAssetId: number, debtAsset: EthereumAddress, debtAssetId: number, stopLossPrice?: string, stopLossType?: CloseToAssetType, takeProfitPrice?: string, takeProfitType?: CloseToAssetType): (number | boolean | string[])[];
|
|
122
129
|
collateralSwitch(strategyOrBundleId: number, owner: EthereumAddress, spoke: EthereumAddress, fromAsset: EthereumAddress, fromAssetId: number, toAsset: EthereumAddress, toAssetId: number, amountToSwitch: string, price: string, ratioState: RatioState): (number | boolean | string[])[];
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { getAssetInfo } from '@defisaver/tokens';
|
|
2
|
-
import { CloseToAssetType, Bundles, ChainId, RatioState, Strategies, } from '../types/enums';
|
|
3
2
|
import { STRATEGY_IDS } from '../constants';
|
|
3
|
+
import { Bundles, ChainId, CloseToAssetType, RatioState, Strategies, } from '../types/enums';
|
|
4
4
|
import * as subDataService from './subDataService';
|
|
5
5
|
import * as triggerService from './triggerService';
|
|
6
|
-
import { compareAddresses, getCloseStrategyType, requireAddress, requireAddresses, } from './utils';
|
|
6
|
+
import { compareAddresses, getBundleIdsByNetwork, getCloseStrategyType, requireAddress, requireAddresses, } from './utils';
|
|
7
7
|
export const makerEncode = {
|
|
8
8
|
repayFromSavings(bundleId, vaultId, triggerRepayRatio, targetRepayRatio, isBundle = true, chainId = ChainId.Ethereum, daiAddr, mcdCdpManagerAddr) {
|
|
9
9
|
const subData = subDataService.makerRepayFromSavingsSubData.encode(vaultId, targetRepayRatio, chainId, daiAddr, mcdCdpManagerAddr);
|
|
@@ -41,6 +41,17 @@ export const makerEncode = {
|
|
|
41
41
|
subData,
|
|
42
42
|
];
|
|
43
43
|
},
|
|
44
|
+
liquidationProtection(vaultId, triggerRatio, targetRatio, ratioState, daiAddr) {
|
|
45
|
+
const bundleId = Bundles.MainnetIds.MAKER_LIQUIDATION_PROTECTION;
|
|
46
|
+
const triggerData = triggerService.makerRatioTrigger.encode(vaultId, triggerRatio, ratioState);
|
|
47
|
+
const subData = subDataService.makerLiquidationProtectionSubData.encode(vaultId, targetRatio, daiAddr);
|
|
48
|
+
return [
|
|
49
|
+
bundleId,
|
|
50
|
+
true,
|
|
51
|
+
triggerData,
|
|
52
|
+
subData,
|
|
53
|
+
];
|
|
54
|
+
},
|
|
44
55
|
};
|
|
45
56
|
export const liquityEncode = {
|
|
46
57
|
closeOnPrice(priceOverOrUnder, price, closeToAssetAddr, chainlinkCollAddress, chainId = ChainId.Ethereum, collAddr, debtAddr) {
|
|
@@ -139,6 +150,12 @@ export const aaveV3Encode = {
|
|
|
139
150
|
const triggerData = triggerService.aaveV3RatioTrigger.encode(user, market, triggerRatio, ratioState);
|
|
140
151
|
return [strategyOrBundleId, isBundle, triggerData, subData];
|
|
141
152
|
},
|
|
153
|
+
liquidationProtection(strategyOrBundleId, market, user, ratioState, targetRatio, triggerRatio) {
|
|
154
|
+
const isBundle = true;
|
|
155
|
+
const subData = subDataService.aaveV3LiquidationProtectionSubData.encode(targetRatio, ratioState, market, user);
|
|
156
|
+
const triggerData = triggerService.aaveV3RatioTrigger.encode(user, market, triggerRatio, ratioState);
|
|
157
|
+
return [strategyOrBundleId, isBundle, triggerData, subData];
|
|
158
|
+
},
|
|
142
159
|
leverageManagementOnPriceGeneric(strategyOrBundleId, price, ratioState, collAsset, collAssetId, debtAsset, debtAssetId, marketAddr, targetRatio, user) {
|
|
143
160
|
const isBundle = true;
|
|
144
161
|
const subDataEncoded = subDataService.aaveV3LeverageManagementOnPriceGeneric.encode(collAsset, collAssetId, debtAsset, debtAssetId, marketAddr, targetRatio, user);
|
|
@@ -174,6 +191,9 @@ export const compoundV3Encode = {
|
|
|
174
191
|
const triggerData = triggerService.compoundV3RatioTrigger.encode(user, market, triggerRatio, ratioState);
|
|
175
192
|
return [strategyOrBundleId, isBundle, triggerData, subData];
|
|
176
193
|
},
|
|
194
|
+
liquidationProtection(market, baseToken, triggerRepayRatio, triggerBoostRatio, targetBoostRatio, targetRepayRatio, boostEnabled, isEOA) {
|
|
195
|
+
return subDataService.compoundV3LiquidationProtectionSubData.encode(market, baseToken, triggerRepayRatio, triggerBoostRatio, targetBoostRatio, targetRepayRatio, boostEnabled, isEOA);
|
|
196
|
+
},
|
|
177
197
|
leverageManagementOnPrice(strategyOrBundleId, market, collToken, baseToken, targetRatio, price, priceState, ratioState, // REPAY for repay on price, BOOST for boost on price
|
|
178
198
|
user) {
|
|
179
199
|
const isBundle = true;
|
|
@@ -231,6 +251,12 @@ export const sparkEncode = {
|
|
|
231
251
|
const triggerData = triggerService.sparkRatioTrigger.encode(user, market, triggerRatio, ratioState);
|
|
232
252
|
return [strategyOrBundleId, isBundle, triggerData, subData];
|
|
233
253
|
},
|
|
254
|
+
liquidationProtection(strategyOrBundleId, market, user, ratioState, targetRatio, triggerRatio) {
|
|
255
|
+
const isBundle = true;
|
|
256
|
+
const subData = subDataService.sparkLiquidationProtectionSubData.encode(targetRatio, ratioState);
|
|
257
|
+
const triggerData = triggerService.sparkRatioTrigger.encode(user, market, triggerRatio, ratioState);
|
|
258
|
+
return [strategyOrBundleId, isBundle, triggerData, subData];
|
|
259
|
+
},
|
|
234
260
|
collateralSwitch(strategyOrBundleId, fromAsset, fromAssetId, toAsset, toAssetId, marketAddr, amountToSwitch, baseTokenAddress, quoteTokenAddress, price, state) {
|
|
235
261
|
const isBundle = false;
|
|
236
262
|
const subDataEncoded = subDataService.sparkCollateralSwitchSubData.encode(fromAsset, fromAssetId, toAsset, toAssetId, marketAddr, amountToSwitch);
|
|
@@ -273,6 +299,14 @@ export const morphoBlueEncode = {
|
|
|
273
299
|
const isBundle = true;
|
|
274
300
|
return [strategyOrBundleId, isBundle, triggerData, subData];
|
|
275
301
|
},
|
|
302
|
+
liquidationProtection(marketId, loanToken, collToken, oracle, irm, lltv, ratioState, targetRatio, triggerRatio, user, isEOA, network) {
|
|
303
|
+
const subData = subDataService.morphoBlueLiquidationProtectionSubData.encode(loanToken, collToken, oracle, irm, lltv, ratioState, targetRatio, user, isEOA);
|
|
304
|
+
const triggerData = triggerService.morphoBlueRatioTrigger.encode(marketId, user, triggerRatio, ratioState);
|
|
305
|
+
// TODO -> Check if need to deploy separate bundles for EOA, or can reuse this for EOA. Logic above is different for EOA and SW on arbi and mainnet. Base uses same for both, not sure if because of lack of EOA support or because it is using same bundle for both.
|
|
306
|
+
const bundleId = getBundleIdsByNetwork(network).MORPHO_BLUE_LIQUIDATION_PROTECTION;
|
|
307
|
+
const isBundle = true;
|
|
308
|
+
return [bundleId, isBundle, triggerData, subData];
|
|
309
|
+
},
|
|
276
310
|
leverageManagementOnPrice(strategyOrBundleId, isBundle = true, loanToken, collToken, oracle, irm, lltv, user, targetRatio, price, priceState) {
|
|
277
311
|
const subData = subDataService.morphoBlueLeverageManagementOnPriceSubData.encode(loanToken, collToken, oracle, irm, lltv, targetRatio, user);
|
|
278
312
|
const triggerData = triggerService.morphoBluePriceTrigger.encode(oracle, collToken, loanToken, price, priceState);
|
|
@@ -321,6 +355,12 @@ export const fluidEncode = {
|
|
|
321
355
|
const triggerData = triggerService.fluidRatioTrigger.encode(nftId, triggerRatio, ratioState);
|
|
322
356
|
return [strategyOrBundleId, isBundle, triggerData, subData];
|
|
323
357
|
},
|
|
358
|
+
liquidationProtection(nftId, vault, ratioState, targetRatio, triggerRatio, strategyOrBundleId) {
|
|
359
|
+
const isBundle = true;
|
|
360
|
+
const subData = subDataService.fluidLiquidationProtectionSubData.encode(nftId, vault, ratioState, targetRatio);
|
|
361
|
+
const triggerData = triggerService.fluidRatioTrigger.encode(nftId, triggerRatio, ratioState);
|
|
362
|
+
return [strategyOrBundleId, isBundle, triggerData, subData];
|
|
363
|
+
},
|
|
324
364
|
};
|
|
325
365
|
export const aaveV4Encode = {
|
|
326
366
|
leverageManagement(strategyOrBundleId, owner, spoke, ratioState, targetRatio, triggerRatio) {
|
|
@@ -329,6 +369,12 @@ export const aaveV4Encode = {
|
|
|
329
369
|
const triggerData = triggerService.aaveV4RatioTrigger.encode(owner, spoke, triggerRatio, ratioState);
|
|
330
370
|
return [strategyOrBundleId, isBundle, triggerData, subData];
|
|
331
371
|
},
|
|
372
|
+
liquidationProtection(strategyOrBundleId, owner, spoke, ratioState, targetRatio, triggerRatio) {
|
|
373
|
+
const isBundle = true;
|
|
374
|
+
const subData = subDataService.aaveV4LiquidationProtectionSubData.encode(spoke, owner, ratioState, targetRatio);
|
|
375
|
+
const triggerData = triggerService.aaveV4RatioTrigger.encode(owner, spoke, triggerRatio, ratioState);
|
|
376
|
+
return [strategyOrBundleId, isBundle, triggerData, subData];
|
|
377
|
+
},
|
|
332
378
|
leverageManagementOnPrice(strategyOrBundleId, owner, spoke, collAsset, collAssetId, debtAsset, debtAssetId, targetRatio, price, priceState, ratioState) {
|
|
333
379
|
const isBundle = true;
|
|
334
380
|
const subData = subDataService.aaveV4LeverageManagementOnPriceSubData.encode(spoke, owner, collAsset, collAssetId, debtAsset, debtAssetId, ratioState, targetRatio);
|