@defisaver/automation-sdk 3.3.17 → 3.3.18-audit-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 +135 -0
- package/cjs/index.d.ts +2 -2
- package/cjs/index.js +5 -2
- package/cjs/services/strategiesService.js +157 -9
- package/cjs/services/strategySubService.d.ts +18 -17
- package/cjs/services/strategySubService.js +68 -28
- package/cjs/services/strategySubService.test.js +2 -40
- package/cjs/services/subDataService.d.ts +70 -20
- package/cjs/services/subDataService.js +23 -79
- package/cjs/services/subDataService.test.js +17 -202
- package/cjs/types/enums.d.ts +35 -4
- package/cjs/types/enums.js +31 -0
- package/esm/constants/index.js +135 -0
- package/esm/index.d.ts +2 -2
- package/esm/index.js +5 -2
- package/esm/services/strategiesService.js +157 -9
- package/esm/services/strategySubService.d.ts +18 -17
- package/esm/services/strategySubService.js +67 -27
- package/esm/services/strategySubService.test.js +3 -38
- package/esm/services/subDataService.d.ts +70 -20
- package/esm/services/subDataService.js +21 -77
- package/esm/services/subDataService.test.js +18 -200
- package/esm/types/enums.d.ts +35 -4
- package/esm/types/enums.js +31 -0
- package/package.json +10 -2
- package/src/constants/index.ts +137 -1
- package/src/index.ts +22 -6
- package/src/services/strategiesService.ts +221 -9
- package/src/services/strategySubService.test.ts +2 -46
- package/src/services/strategySubService.ts +164 -40
- package/src/services/subDataService.test.ts +18 -214
- package/src/services/subDataService.ts +42 -106
- package/src/services/utils.test.ts +1 -1
- package/src/services/utils.ts +3 -1
- package/src/types/enums.ts +31 -2
package/src/constants/index.ts
CHANGED
|
@@ -573,6 +573,62 @@ export const MAINNET_BUNDLES_INFO: MainnetBundleInfo = {
|
|
|
573
573
|
strategyId: Strategies.Identifiers.EoaCloseOnPrice,
|
|
574
574
|
protocol: PROTOCOLS.AaveV4,
|
|
575
575
|
},
|
|
576
|
+
[Bundles.MainnetIds.MAKER_SW_LIQUIDATION_PROTECTION]: {
|
|
577
|
+
strategyOrBundleId: Bundles.MainnetIds.MAKER_SW_LIQUIDATION_PROTECTION,
|
|
578
|
+
strategyId: Strategies.Identifiers.LiquidationProtection,
|
|
579
|
+
protocol: PROTOCOLS.MakerDAO,
|
|
580
|
+
},
|
|
581
|
+
[Bundles.MainnetIds.AAVE_V3_SW_LIQUIDATION_PROTECTION]: {
|
|
582
|
+
strategyOrBundleId: Bundles.MainnetIds.AAVE_V3_SW_LIQUIDATION_PROTECTION,
|
|
583
|
+
strategyId: Strategies.Identifiers.LiquidationProtection,
|
|
584
|
+
protocol: PROTOCOLS.AaveV3,
|
|
585
|
+
},
|
|
586
|
+
[Bundles.MainnetIds.AAVE_V4_SW_LIQUIDATION_PROTECTION]: {
|
|
587
|
+
strategyOrBundleId: Bundles.MainnetIds.AAVE_V4_SW_LIQUIDATION_PROTECTION,
|
|
588
|
+
strategyId: Strategies.Identifiers.LiquidationProtection,
|
|
589
|
+
protocol: PROTOCOLS.AaveV4,
|
|
590
|
+
},
|
|
591
|
+
[Bundles.MainnetIds.SPARK_SW_LIQUIDATION_PROTECTION]: {
|
|
592
|
+
strategyOrBundleId: Bundles.MainnetIds.SPARK_SW_LIQUIDATION_PROTECTION,
|
|
593
|
+
strategyId: Strategies.Identifiers.LiquidationProtection,
|
|
594
|
+
protocol: PROTOCOLS.Spark,
|
|
595
|
+
},
|
|
596
|
+
[Bundles.MainnetIds.COMP_V3_SW_LIQUIDATION_PROTECTION]: {
|
|
597
|
+
strategyOrBundleId: Bundles.MainnetIds.COMP_V3_SW_LIQUIDATION_PROTECTION,
|
|
598
|
+
strategyId: Strategies.Identifiers.LiquidationProtection,
|
|
599
|
+
protocol: PROTOCOLS.CompoundV3,
|
|
600
|
+
},
|
|
601
|
+
[Bundles.MainnetIds.COMP_V3_EOA_LIQUIDATION_PROTECTION]: {
|
|
602
|
+
strategyOrBundleId: Bundles.MainnetIds.COMP_V3_EOA_LIQUIDATION_PROTECTION,
|
|
603
|
+
strategyId: Strategies.Identifiers.EoaLiquidationProtection,
|
|
604
|
+
protocol: PROTOCOLS.CompoundV3,
|
|
605
|
+
},
|
|
606
|
+
[Bundles.MainnetIds.MORPHO_BLUE_SW_LIQUIDATION_PROTECTION]: {
|
|
607
|
+
strategyOrBundleId:
|
|
608
|
+
Bundles.MainnetIds.MORPHO_BLUE_SW_LIQUIDATION_PROTECTION,
|
|
609
|
+
strategyId: Strategies.Identifiers.LiquidationProtection,
|
|
610
|
+
protocol: PROTOCOLS.MorphoBlue,
|
|
611
|
+
},
|
|
612
|
+
[Bundles.MainnetIds.FLUID_T1_SW_LIQUIDATION_PROTECTION]: {
|
|
613
|
+
strategyOrBundleId: Bundles.MainnetIds.FLUID_T1_SW_LIQUIDATION_PROTECTION,
|
|
614
|
+
strategyId: Strategies.Identifiers.LiquidationProtection,
|
|
615
|
+
protocol: PROTOCOLS.FluidT1,
|
|
616
|
+
},
|
|
617
|
+
[Bundles.MainnetIds.AAVE_V3_EOA_LIQUIDATION_PROTECTION]: {
|
|
618
|
+
strategyOrBundleId: Bundles.MainnetIds.AAVE_V3_EOA_LIQUIDATION_PROTECTION,
|
|
619
|
+
strategyId: Strategies.Identifiers.EoaLiquidationProtection,
|
|
620
|
+
protocol: PROTOCOLS.AaveV3,
|
|
621
|
+
},
|
|
622
|
+
[Bundles.MainnetIds.AAVE_V4_EOA_LIQUIDATION_PROTECTION]: {
|
|
623
|
+
strategyOrBundleId: Bundles.MainnetIds.AAVE_V4_EOA_LIQUIDATION_PROTECTION,
|
|
624
|
+
strategyId: Strategies.Identifiers.EoaLiquidationProtection,
|
|
625
|
+
protocol: PROTOCOLS.AaveV4,
|
|
626
|
+
},
|
|
627
|
+
[Bundles.MainnetIds.MORPHO_BLUE_EOA_LIQUIDATION_PROTECTION]: {
|
|
628
|
+
strategyOrBundleId: Bundles.MainnetIds.MORPHO_BLUE_EOA_LIQUIDATION_PROTECTION,
|
|
629
|
+
strategyId: Strategies.Identifiers.EoaLiquidationProtection,
|
|
630
|
+
protocol: PROTOCOLS.MorphoBlue,
|
|
631
|
+
},
|
|
576
632
|
[Bundles.MainnetIds.MORPHO_BLUE_REPAY_ON_PRICE]: {
|
|
577
633
|
strategyOrBundleId: Bundles.MainnetIds.MORPHO_BLUE_REPAY_ON_PRICE,
|
|
578
634
|
strategyId: Strategies.Identifiers.RepayOnPrice,
|
|
@@ -651,7 +707,16 @@ export const OPTIMISM_BUNDLES_INFO: OptimismBundleInfo = {
|
|
|
651
707
|
strategyId: Strategies.Identifiers.EoaCloseOnPrice,
|
|
652
708
|
protocol: PROTOCOLS.AaveV3,
|
|
653
709
|
},
|
|
654
|
-
|
|
710
|
+
[Bundles.OptimismIds.AAVE_V3_SW_LIQUIDATION_PROTECTION]: {
|
|
711
|
+
strategyOrBundleId: Bundles.OptimismIds.AAVE_V3_SW_LIQUIDATION_PROTECTION,
|
|
712
|
+
strategyId: Strategies.Identifiers.LiquidationProtection,
|
|
713
|
+
protocol: PROTOCOLS.AaveV3,
|
|
714
|
+
},
|
|
715
|
+
[Bundles.OptimismIds.AAVE_V3_EOA_LIQUIDATION_PROTECTION]: {
|
|
716
|
+
strategyOrBundleId: Bundles.OptimismIds.AAVE_V3_EOA_LIQUIDATION_PROTECTION,
|
|
717
|
+
strategyId: Strategies.Identifiers.EoaLiquidationProtection,
|
|
718
|
+
protocol: PROTOCOLS.AaveV3,
|
|
719
|
+
},
|
|
655
720
|
};
|
|
656
721
|
|
|
657
722
|
export const BASE_BUNDLES_INFO: BaseBundleInfo = {
|
|
@@ -795,6 +860,41 @@ export const BASE_BUNDLES_INFO: BaseBundleInfo = {
|
|
|
795
860
|
strategyId: Strategies.Identifiers.RepayOnPrice,
|
|
796
861
|
protocol: PROTOCOLS.MorphoBlue,
|
|
797
862
|
},
|
|
863
|
+
[Bundles.BaseIds.AAVE_V3_SW_LIQUIDATION_PROTECTION]: {
|
|
864
|
+
strategyOrBundleId: Bundles.BaseIds.AAVE_V3_SW_LIQUIDATION_PROTECTION,
|
|
865
|
+
strategyId: Strategies.Identifiers.LiquidationProtection,
|
|
866
|
+
protocol: PROTOCOLS.AaveV3,
|
|
867
|
+
},
|
|
868
|
+
[Bundles.BaseIds.COMP_V3_SW_LIQUIDATION_PROTECTION]: {
|
|
869
|
+
strategyOrBundleId: Bundles.BaseIds.COMP_V3_SW_LIQUIDATION_PROTECTION,
|
|
870
|
+
strategyId: Strategies.Identifiers.LiquidationProtection,
|
|
871
|
+
protocol: PROTOCOLS.CompoundV3,
|
|
872
|
+
},
|
|
873
|
+
[Bundles.BaseIds.COMP_V3_EOA_LIQUIDATION_PROTECTION]: {
|
|
874
|
+
strategyOrBundleId: Bundles.BaseIds.COMP_V3_EOA_LIQUIDATION_PROTECTION,
|
|
875
|
+
strategyId: Strategies.Identifiers.EoaLiquidationProtection,
|
|
876
|
+
protocol: PROTOCOLS.CompoundV3,
|
|
877
|
+
},
|
|
878
|
+
[Bundles.BaseIds.MORPHO_BLUE_SW_LIQUIDATION_PROTECTION]: {
|
|
879
|
+
strategyOrBundleId: Bundles.BaseIds.MORPHO_BLUE_SW_LIQUIDATION_PROTECTION,
|
|
880
|
+
strategyId: Strategies.Identifiers.LiquidationProtection,
|
|
881
|
+
protocol: PROTOCOLS.MorphoBlue,
|
|
882
|
+
},
|
|
883
|
+
[Bundles.BaseIds.MORPHO_BLUE_EOA_LIQUIDATION_PROTECTION]: {
|
|
884
|
+
strategyOrBundleId: Bundles.BaseIds.MORPHO_BLUE_EOA_LIQUIDATION_PROTECTION,
|
|
885
|
+
strategyId: Strategies.Identifiers.EoaLiquidationProtection,
|
|
886
|
+
protocol: PROTOCOLS.MorphoBlue,
|
|
887
|
+
},
|
|
888
|
+
[Bundles.BaseIds.FLUID_T1_SW_LIQUIDATION_PROTECTION]: {
|
|
889
|
+
strategyOrBundleId: Bundles.BaseIds.FLUID_T1_SW_LIQUIDATION_PROTECTION,
|
|
890
|
+
strategyId: Strategies.Identifiers.LiquidationProtection,
|
|
891
|
+
protocol: PROTOCOLS.FluidT1,
|
|
892
|
+
},
|
|
893
|
+
[Bundles.BaseIds.AAVE_V3_EOA_LIQUIDATION_PROTECTION]: {
|
|
894
|
+
strategyOrBundleId: Bundles.BaseIds.AAVE_V3_EOA_LIQUIDATION_PROTECTION,
|
|
895
|
+
strategyId: Strategies.Identifiers.EoaLiquidationProtection,
|
|
896
|
+
protocol: PROTOCOLS.AaveV3,
|
|
897
|
+
},
|
|
798
898
|
[Bundles.BaseIds.MORPHO_BLUE_EOA_REPAY]: {
|
|
799
899
|
strategyOrBundleId: Bundles.BaseIds.MORPHO_BLUE_EOA_REPAY,
|
|
800
900
|
strategyId: Strategies.Identifiers.EoaRepay,
|
|
@@ -973,6 +1073,42 @@ export const ARBITRUM_BUNDLES_INFO: ArbitrumBundleInfo = {
|
|
|
973
1073
|
strategyId: Strategies.Identifiers.RepayOnPrice,
|
|
974
1074
|
protocol: PROTOCOLS.MorphoBlue,
|
|
975
1075
|
},
|
|
1076
|
+
[Bundles.ArbitrumIds.AAVE_V3_SW_LIQUIDATION_PROTECTION]: {
|
|
1077
|
+
strategyOrBundleId: Bundles.ArbitrumIds.AAVE_V3_SW_LIQUIDATION_PROTECTION,
|
|
1078
|
+
strategyId: Strategies.Identifiers.LiquidationProtection,
|
|
1079
|
+
protocol: PROTOCOLS.AaveV3,
|
|
1080
|
+
},
|
|
1081
|
+
[Bundles.ArbitrumIds.COMP_V3_SW_LIQUIDATION_PROTECTION]: {
|
|
1082
|
+
strategyOrBundleId: Bundles.ArbitrumIds.COMP_V3_SW_LIQUIDATION_PROTECTION,
|
|
1083
|
+
strategyId: Strategies.Identifiers.LiquidationProtection,
|
|
1084
|
+
protocol: PROTOCOLS.CompoundV3,
|
|
1085
|
+
},
|
|
1086
|
+
[Bundles.ArbitrumIds.COMP_V3_EOA_LIQUIDATION_PROTECTION]: {
|
|
1087
|
+
strategyOrBundleId: Bundles.ArbitrumIds.COMP_V3_EOA_LIQUIDATION_PROTECTION,
|
|
1088
|
+
strategyId: Strategies.Identifiers.EoaLiquidationProtection,
|
|
1089
|
+
protocol: PROTOCOLS.CompoundV3,
|
|
1090
|
+
},
|
|
1091
|
+
[Bundles.ArbitrumIds.MORPHO_BLUE_SW_LIQUIDATION_PROTECTION]: {
|
|
1092
|
+
strategyOrBundleId:
|
|
1093
|
+
Bundles.ArbitrumIds.MORPHO_BLUE_SW_LIQUIDATION_PROTECTION,
|
|
1094
|
+
strategyId: Strategies.Identifiers.LiquidationProtection,
|
|
1095
|
+
protocol: PROTOCOLS.MorphoBlue,
|
|
1096
|
+
},
|
|
1097
|
+
[Bundles.ArbitrumIds.FLUID_T1_SW_LIQUIDATION_PROTECTION]: {
|
|
1098
|
+
strategyOrBundleId: Bundles.ArbitrumIds.FLUID_T1_SW_LIQUIDATION_PROTECTION,
|
|
1099
|
+
strategyId: Strategies.Identifiers.LiquidationProtection,
|
|
1100
|
+
protocol: PROTOCOLS.FluidT1,
|
|
1101
|
+
},
|
|
1102
|
+
[Bundles.ArbitrumIds.AAVE_V3_EOA_LIQUIDATION_PROTECTION]: {
|
|
1103
|
+
strategyOrBundleId: Bundles.ArbitrumIds.AAVE_V3_EOA_LIQUIDATION_PROTECTION,
|
|
1104
|
+
strategyId: Strategies.Identifiers.EoaLiquidationProtection,
|
|
1105
|
+
protocol: PROTOCOLS.AaveV3,
|
|
1106
|
+
},
|
|
1107
|
+
[Bundles.ArbitrumIds.MORPHO_BLUE_EOA_LIQUIDATION_PROTECTION]: {
|
|
1108
|
+
strategyOrBundleId: Bundles.ArbitrumIds.MORPHO_BLUE_EOA_LIQUIDATION_PROTECTION,
|
|
1109
|
+
strategyId: Strategies.Identifiers.EoaLiquidationProtection,
|
|
1110
|
+
protocol: PROTOCOLS.MorphoBlue,
|
|
1111
|
+
},
|
|
976
1112
|
[Bundles.ArbitrumIds.MORPHO_BLUE_EOA_BOOST_ON_PRICE]: {
|
|
977
1113
|
strategyOrBundleId: Bundles.ArbitrumIds.MORPHO_BLUE_EOA_BOOST_ON_PRICE,
|
|
978
1114
|
strategyId: Strategies.Identifiers.EoaBoostOnPrice,
|
package/src/index.ts
CHANGED
|
@@ -24,18 +24,34 @@ import * as enums from './types/enums';
|
|
|
24
24
|
import type * as types from './types';
|
|
25
25
|
|
|
26
26
|
import {
|
|
27
|
-
getRatioStateInfoForAaveCloseStrategy,
|
|
27
|
+
getRatioStateInfoForAaveCloseStrategy,
|
|
28
|
+
compareSubHashes,
|
|
29
|
+
encodeSubId,
|
|
30
|
+
getCloseStrategyType,
|
|
28
31
|
} from './services/utils';
|
|
29
32
|
|
|
30
33
|
const utils = {
|
|
31
|
-
|
|
34
|
+
compareSubHashes,
|
|
35
|
+
encodeSubId,
|
|
36
|
+
getCloseStrategyType,
|
|
37
|
+
getRatioStateInfoForAaveCloseStrategy,
|
|
32
38
|
};
|
|
33
39
|
|
|
34
40
|
export {
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
41
|
+
ArbitrumStrategies,
|
|
42
|
+
BaseStrategies,
|
|
43
|
+
EthereumStrategies,
|
|
44
|
+
LegacyAaveAutomation,
|
|
45
|
+
LegacyCompoundAutomation,
|
|
46
|
+
LegacyMakerAutomation,
|
|
47
|
+
OptimismStrategies,
|
|
48
|
+
constants,
|
|
49
|
+
enums,
|
|
50
|
+
strategiesService,
|
|
51
|
+
strategySubService,
|
|
52
|
+
subDataService,
|
|
53
|
+
triggerService,
|
|
54
|
+
utils,
|
|
39
55
|
};
|
|
40
56
|
|
|
41
57
|
export type { types };
|
|
@@ -106,7 +106,7 @@ function parseMakerLeverageManagement(position: Position.Automated, parseData: P
|
|
|
106
106
|
const { isEnabled } = parseData.strategiesSubsData;
|
|
107
107
|
|
|
108
108
|
const triggerData = triggerService.makerRatioTrigger.decode(subStruct.triggerData);
|
|
109
|
-
const subData = subDataService.
|
|
109
|
+
const subData = subDataService.legacyMakerLeverageManagementSubData.decode(subStruct.subData);
|
|
110
110
|
|
|
111
111
|
_position.strategyData.decoded.triggerData = triggerData;
|
|
112
112
|
_position.strategyData.decoded.subData = subData;
|
|
@@ -140,6 +140,33 @@ function parseMakerLeverageManagement(position: Position.Automated, parseData: P
|
|
|
140
140
|
return _position;
|
|
141
141
|
}
|
|
142
142
|
|
|
143
|
+
function parseMakerLiquidationProtection(position: Position.Automated, parseData: ParseData): Position.Automated {
|
|
144
|
+
const _position = cloneDeep(position);
|
|
145
|
+
|
|
146
|
+
const { subStruct, subId } = parseData.subscriptionEventData;
|
|
147
|
+
const { isEnabled } = parseData.strategiesSubsData;
|
|
148
|
+
|
|
149
|
+
const triggerData = triggerService.makerRatioTrigger.decode(subStruct.triggerData);
|
|
150
|
+
const subData = subDataService.makerLiquidationProtectionSubData.decode(subStruct.subData);
|
|
151
|
+
|
|
152
|
+
_position.strategyData.decoded.triggerData = triggerData;
|
|
153
|
+
_position.strategyData.decoded.subData = subData;
|
|
154
|
+
|
|
155
|
+
_position.positionId = getPositionId(_position.chainId, _position.protocol.id, subData.vaultId);
|
|
156
|
+
|
|
157
|
+
|
|
158
|
+
_position.specific = {
|
|
159
|
+
triggerRepayRatio: triggerData.ratio,
|
|
160
|
+
targetRepayRatio: subData.targetRatio,
|
|
161
|
+
repayEnabled: isEnabled,
|
|
162
|
+
subId1: Number(subId),
|
|
163
|
+
};
|
|
164
|
+
|
|
165
|
+
_position.strategy.strategyId = Strategies.IdOverrides.LiquidationProtection;
|
|
166
|
+
|
|
167
|
+
return _position;
|
|
168
|
+
}
|
|
169
|
+
|
|
143
170
|
function parseLiquityCloseOnPrice(position: Position.Automated, parseData: ParseData): Position.Automated {
|
|
144
171
|
const _position = cloneDeep(position);
|
|
145
172
|
|
|
@@ -196,7 +223,7 @@ function parseAaveV2LeverageManagement(position: Position.Automated, parseData:
|
|
|
196
223
|
const { isEnabled } = parseData.strategiesSubsData;
|
|
197
224
|
|
|
198
225
|
const triggerData = triggerService.aaveV2RatioTrigger.decode(subStruct.triggerData);
|
|
199
|
-
const subData = subDataService.
|
|
226
|
+
const subData = subDataService.legacyAaveV2LeverageManagementSubData.decode(subStruct.subData);
|
|
200
227
|
|
|
201
228
|
_position.strategyData.decoded.triggerData = triggerData;
|
|
202
229
|
_position.strategyData.decoded.subData = subData;
|
|
@@ -240,9 +267,9 @@ function parseAaveV3LeverageManagement(position: Position.Automated, parseData:
|
|
|
240
267
|
const isEOA = _position.strategy.strategyId.includes('eoa');
|
|
241
268
|
let subData;
|
|
242
269
|
if (isEOA) {
|
|
243
|
-
subData = subDataService.aaveV3LeverageManagementSubDataWithoutSubProxy.decode(subStruct.subData);
|
|
244
|
-
} else {
|
|
245
270
|
subData = subDataService.aaveV3LeverageManagementSubData.decode(subStruct.subData);
|
|
271
|
+
} else {
|
|
272
|
+
subData = subDataService.legacyAaveV3LeverageManagementSubData.decode(subStruct.subData);
|
|
246
273
|
}
|
|
247
274
|
|
|
248
275
|
_position.strategyData.decoded.triggerData = triggerData;
|
|
@@ -280,6 +307,35 @@ function parseAaveV3LeverageManagement(position: Position.Automated, parseData:
|
|
|
280
307
|
return _position;
|
|
281
308
|
}
|
|
282
309
|
|
|
310
|
+
function parseAaveV3LiquidationProtection(position: Position.Automated, parseData: ParseData): Position.Automated {
|
|
311
|
+
const _position = cloneDeep(position);
|
|
312
|
+
|
|
313
|
+
const { subStruct, subId, subHash } = parseData.subscriptionEventData;
|
|
314
|
+
const { isEnabled } = parseData.strategiesSubsData;
|
|
315
|
+
|
|
316
|
+
const triggerData = triggerService.aaveV3RatioTrigger.decode(subStruct.triggerData);
|
|
317
|
+
|
|
318
|
+
const subData = subDataService.aaveV3LiquidationProtectionSubData.decode(subStruct.subData);
|
|
319
|
+
|
|
320
|
+
_position.strategyData.decoded.triggerData = triggerData;
|
|
321
|
+
_position.strategyData.decoded.subData = subData;
|
|
322
|
+
|
|
323
|
+
_position.positionId = getPositionId(_position.chainId, _position.protocol.id, _position.owner, triggerData.market);
|
|
324
|
+
|
|
325
|
+
_position.specific = {
|
|
326
|
+
triggerRepayRatio: triggerData.ratio,
|
|
327
|
+
targetRepayRatio: subData.targetRatio,
|
|
328
|
+
repayEnabled: isEnabled,
|
|
329
|
+
subId1: Number(subId),
|
|
330
|
+
subHashRepay: subHash,
|
|
331
|
+
};
|
|
332
|
+
|
|
333
|
+
const isEOA = _position.strategy.strategyId.includes('eoa');
|
|
334
|
+
_position.strategy.strategyId = isEOA ? Strategies.IdOverrides.EoaLiquidationProtection : Strategies.IdOverrides.LiquidationProtection;
|
|
335
|
+
|
|
336
|
+
return _position;
|
|
337
|
+
}
|
|
338
|
+
|
|
283
339
|
function parseAaveV3LeverageManagementOnPrice(position: Position.Automated, parseData: ParseData): Position.Automated {
|
|
284
340
|
const _position = cloneDeep(position);
|
|
285
341
|
const { subStruct } = parseData.subscriptionEventData;
|
|
@@ -437,6 +493,31 @@ function parseAaveV4LeverageManagement(position: Position.Automated, parseData:
|
|
|
437
493
|
return _position;
|
|
438
494
|
}
|
|
439
495
|
|
|
496
|
+
function parseAaveV4LiquidationProtection(position: Position.Automated, parseData: ParseData): Position.Automated {
|
|
497
|
+
const _position = cloneDeep(position);
|
|
498
|
+
const { subStruct, subId, subHash } = parseData.subscriptionEventData;
|
|
499
|
+
const { isEnabled } = parseData.strategiesSubsData;
|
|
500
|
+
const triggerData = triggerService.aaveV4RatioTrigger.decode(subStruct.triggerData);
|
|
501
|
+
const subData = subDataService.aaveV4LiquidationProtectionSubData.decode(subStruct.subData);
|
|
502
|
+
const isEOA = _position.strategy.strategyId.includes('eoa');
|
|
503
|
+
|
|
504
|
+
_position.strategyData.decoded.triggerData = triggerData;
|
|
505
|
+
_position.strategyData.decoded.subData = subData;
|
|
506
|
+
_position.positionId = getPositionId(_position.chainId, _position.protocol.id, _position.owner, triggerData.spoke);
|
|
507
|
+
_position.strategy.strategyId = isEOA ? Strategies.IdOverrides.EoaLiquidationProtection : Strategies.IdOverrides.LiquidationProtection;
|
|
508
|
+
|
|
509
|
+
_position.specific = {
|
|
510
|
+
triggerRepayRatio: triggerData.ratio,
|
|
511
|
+
targetRepayRatio: subData.targetRatio,
|
|
512
|
+
repayEnabled: isEnabled,
|
|
513
|
+
subId1: Number(subId),
|
|
514
|
+
subHashRepay: subHash,
|
|
515
|
+
};
|
|
516
|
+
|
|
517
|
+
return _position;
|
|
518
|
+
}
|
|
519
|
+
|
|
520
|
+
|
|
440
521
|
function parseAaveV4LeverageManagementOnPrice(position: Position.Automated, parseData: ParseData): Position.Automated {
|
|
441
522
|
const _position = cloneDeep(position);
|
|
442
523
|
const { subStruct } = parseData.subscriptionEventData;
|
|
@@ -589,7 +670,7 @@ function parseCompoundV2LeverageManagement(position: Position.Automated, parseDa
|
|
|
589
670
|
const { isEnabled } = parseData.strategiesSubsData;
|
|
590
671
|
|
|
591
672
|
const triggerData = triggerService.compoundV2RatioTrigger.decode(subStruct.triggerData);
|
|
592
|
-
const subData = subDataService.
|
|
673
|
+
const subData = subDataService.legacyCompoundV2LeverageManagementSubData.decode(subStruct.subData);
|
|
593
674
|
|
|
594
675
|
_position.strategyData.decoded.triggerData = triggerData;
|
|
595
676
|
_position.strategyData.decoded.subData = subData;
|
|
@@ -631,7 +712,7 @@ function parseCompoundV3LeverageManagement(position: Position.Automated, parseDa
|
|
|
631
712
|
const { subStruct, subId, subHash } = parseData.subscriptionEventData;
|
|
632
713
|
const { isEnabled } = parseData.strategiesSubsData;
|
|
633
714
|
|
|
634
|
-
const subDataDecoder = subDataService.
|
|
715
|
+
const subDataDecoder = subDataService.compoundV3LeverageManagementSubData;
|
|
635
716
|
|
|
636
717
|
const triggerData = triggerService.compoundV3RatioTrigger.decode(subStruct.triggerData);
|
|
637
718
|
const subData = subDataDecoder.decode(subStruct.subData);
|
|
@@ -670,6 +751,39 @@ function parseCompoundV3LeverageManagement(position: Position.Automated, parseDa
|
|
|
670
751
|
return _position;
|
|
671
752
|
}
|
|
672
753
|
|
|
754
|
+
|
|
755
|
+
function parseCompoundV3LiquidationProtection(position: Position.Automated, parseData: ParseData): Position.Automated {
|
|
756
|
+
const _position = cloneDeep(position);
|
|
757
|
+
|
|
758
|
+
const { subStruct, subId, subHash } = parseData.subscriptionEventData;
|
|
759
|
+
const { isEnabled } = parseData.strategiesSubsData;
|
|
760
|
+
|
|
761
|
+
const subDataDecoder = subDataService.compoundV3LiquidationProtectionSubData;
|
|
762
|
+
|
|
763
|
+
const triggerData = triggerService.compoundV3RatioTrigger.decode(subStruct.triggerData);
|
|
764
|
+
const subData = subDataDecoder.decode(subStruct.subData);
|
|
765
|
+
|
|
766
|
+
_position.strategyData.decoded.triggerData = triggerData;
|
|
767
|
+
_position.strategyData.decoded.subData = subData;
|
|
768
|
+
|
|
769
|
+
_position.positionId = getPositionId(_position.chainId, _position.protocol.id, triggerData.owner.toLowerCase(), triggerData.market);
|
|
770
|
+
|
|
771
|
+
const isEOA = _position.strategy.strategyId.includes('eoa');
|
|
772
|
+
|
|
773
|
+
_position.specific = {
|
|
774
|
+
triggerRepayRatio: triggerData.ratio,
|
|
775
|
+
targetRepayRatio: subData.targetRatio,
|
|
776
|
+
repayEnabled: isEnabled,
|
|
777
|
+
subId1: Number(subId),
|
|
778
|
+
subHashRepay: subHash,
|
|
779
|
+
};
|
|
780
|
+
|
|
781
|
+
_position.strategy.strategyId = isEOA ? Strategies.IdOverrides.EoaLiquidationProtection : Strategies.IdOverrides.LiquidationProtection;
|
|
782
|
+
|
|
783
|
+
return _position;
|
|
784
|
+
}
|
|
785
|
+
|
|
786
|
+
|
|
673
787
|
function parseCompoundV3LeverageManagementOnPrice(position: Position.Automated, parseData: ParseData): Position.Automated {
|
|
674
788
|
const _position = cloneDeep(position);
|
|
675
789
|
|
|
@@ -774,7 +888,7 @@ function parseExchangeLimitOrder(position: Position.Automated, parseData: ParseD
|
|
|
774
888
|
|
|
775
889
|
const { subStruct } = parseData.subscriptionEventData;
|
|
776
890
|
|
|
777
|
-
_position.strategyData.decoded.subData = subDataService.
|
|
891
|
+
_position.strategyData.decoded.subData = subDataService.legacyExchangeLimitOrderSubData.decode(subStruct.subData, chainId);
|
|
778
892
|
const fromTokenDecimals = getAssetInfoByAddress(_position.strategyData.decoded.subData.fromToken, chainId).decimals;
|
|
779
893
|
const toTokenDecimals = getAssetInfoByAddress(_position.strategyData.decoded.subData.toToken, chainId).decimals;
|
|
780
894
|
_position.strategyData.decoded.triggerData = triggerService.exchangeOffchainPriceTrigger.decode(subStruct.triggerData, fromTokenDecimals, toTokenDecimals);
|
|
@@ -791,7 +905,7 @@ function parseLiquityLeverageManagement(position: Position.Automated, parseData:
|
|
|
791
905
|
const { isEnabled } = parseData.strategiesSubsData;
|
|
792
906
|
|
|
793
907
|
const triggerData = triggerService.liquityRatioTrigger.decode(subStruct.triggerData);
|
|
794
|
-
const subData = subDataService.
|
|
908
|
+
const subData = subDataService.legacyLiquityLeverageManagementSubData.decode(subStruct.subData);
|
|
795
909
|
|
|
796
910
|
_position.strategyData.decoded.triggerData = triggerData;
|
|
797
911
|
_position.strategyData.decoded.subData = subData;
|
|
@@ -875,7 +989,7 @@ function parseSparkLeverageManagement(position: Position.Automated, parseData: P
|
|
|
875
989
|
const { isEnabled } = parseData.strategiesSubsData;
|
|
876
990
|
|
|
877
991
|
const triggerData = triggerService.sparkRatioTrigger.decode(subStruct.triggerData);
|
|
878
|
-
const subData = subDataService.
|
|
992
|
+
const subData = subDataService.legacySparkLeverageManagementSubData.decode(subStruct.subData);
|
|
879
993
|
|
|
880
994
|
_position.strategyData.decoded.triggerData = triggerData;
|
|
881
995
|
_position.strategyData.decoded.subData = subData;
|
|
@@ -909,6 +1023,34 @@ function parseSparkLeverageManagement(position: Position.Automated, parseData: P
|
|
|
909
1023
|
return _position;
|
|
910
1024
|
}
|
|
911
1025
|
|
|
1026
|
+
function parseSparkLiquidationProtection(position: Position.Automated, parseData: ParseData): Position.Automated {
|
|
1027
|
+
const _position = cloneDeep(position);
|
|
1028
|
+
|
|
1029
|
+
const { subStruct, subId, subHash } = parseData.subscriptionEventData;
|
|
1030
|
+
const { isEnabled } = parseData.strategiesSubsData;
|
|
1031
|
+
|
|
1032
|
+
const triggerData = triggerService.sparkRatioTrigger.decode(subStruct.triggerData);
|
|
1033
|
+
const subData = subDataService.sparkLiquidationProtectionSubData.decode(subStruct.subData);
|
|
1034
|
+
|
|
1035
|
+
_position.strategyData.decoded.triggerData = triggerData;
|
|
1036
|
+
_position.strategyData.decoded.subData = subData;
|
|
1037
|
+
|
|
1038
|
+
_position.positionId = getPositionId(_position.chainId, _position.protocol.id, _position.owner, triggerData.market);
|
|
1039
|
+
|
|
1040
|
+
_position.specific = {
|
|
1041
|
+
triggerRepayRatio: triggerData.ratio,
|
|
1042
|
+
targetRepayRatio: subData.targetRatio,
|
|
1043
|
+
repayEnabled: isEnabled,
|
|
1044
|
+
subId1: Number(subId),
|
|
1045
|
+
subHashRepay: subHash,
|
|
1046
|
+
};
|
|
1047
|
+
|
|
1048
|
+
_position.strategy.strategyId = Strategies.IdOverrides.LiquidationProtection;
|
|
1049
|
+
|
|
1050
|
+
return _position;
|
|
1051
|
+
}
|
|
1052
|
+
|
|
1053
|
+
|
|
912
1054
|
function parseSparkLeverageManagementOnPrice(position: Position.Automated, parseData: ParseData): Position.Automated {
|
|
913
1055
|
const _position = cloneDeep(position);
|
|
914
1056
|
const { subStruct } = parseData.subscriptionEventData;
|
|
@@ -1108,6 +1250,34 @@ function parseMorphoBlueLeverageManagement(position: Position.Automated, parseDa
|
|
|
1108
1250
|
return _position;
|
|
1109
1251
|
}
|
|
1110
1252
|
|
|
1253
|
+
|
|
1254
|
+
function parseMorphoBlueLiquidationProtection(position: Position.Automated, parseData: ParseData): Position.Automated {
|
|
1255
|
+
const _position = cloneDeep(position);
|
|
1256
|
+
|
|
1257
|
+
const { subStruct, subId, subHash } = parseData.subscriptionEventData;
|
|
1258
|
+
const { isEnabled } = parseData.strategiesSubsData;
|
|
1259
|
+
const triggerData = triggerService.morphoBlueRatioTrigger.decode(subStruct.triggerData);
|
|
1260
|
+
const subData = subDataService.morphoBlueLiquidationProtectionSubData.decode(subStruct.subData);
|
|
1261
|
+
|
|
1262
|
+
_position.strategyData.decoded.triggerData = triggerData;
|
|
1263
|
+
_position.strategyData.decoded.subData = subData;
|
|
1264
|
+
|
|
1265
|
+
_position.positionId = getPositionId(_position.chainId, _position.protocol.id, triggerData.owner.toLowerCase(), triggerData.marketId);
|
|
1266
|
+
|
|
1267
|
+
_position.specific = {
|
|
1268
|
+
triggerRepayRatio: triggerData.ratio,
|
|
1269
|
+
targetRepayRatio: subData.targetRatio,
|
|
1270
|
+
repayEnabled: isEnabled,
|
|
1271
|
+
subId1: Number(subId),
|
|
1272
|
+
subHashRepay: subHash,
|
|
1273
|
+
};
|
|
1274
|
+
|
|
1275
|
+
const isEOA = _position.strategy.strategyId.includes('eoa');
|
|
1276
|
+
_position.strategy.strategyId = isEOA ? Strategies.IdOverrides.EoaLiquidationProtection : Strategies.IdOverrides.LiquidationProtection;
|
|
1277
|
+
|
|
1278
|
+
return _position;
|
|
1279
|
+
}
|
|
1280
|
+
|
|
1111
1281
|
function parseMorphoBlueLeverageManagementOnPrice(position: Position.Automated, parseData: ParseData): Position.Automated {
|
|
1112
1282
|
const _position = cloneDeep(position);
|
|
1113
1283
|
|
|
@@ -1322,6 +1492,37 @@ function parseFluidT1LeverageManagement(position: Position.Automated, parseData:
|
|
|
1322
1492
|
return _position;
|
|
1323
1493
|
}
|
|
1324
1494
|
|
|
1495
|
+
|
|
1496
|
+
function parseFluidT1LiquidationProtection(position: Position.Automated, parseData: ParseData): Position.Automated {
|
|
1497
|
+
const _position = cloneDeep(position);
|
|
1498
|
+
|
|
1499
|
+
const { subStruct, subId, subHash } = parseData.subscriptionEventData;
|
|
1500
|
+
const { isEnabled } = parseData.strategiesSubsData;
|
|
1501
|
+
|
|
1502
|
+
const triggerData = triggerService.fluidRatioTrigger.decode(subStruct.triggerData);
|
|
1503
|
+
const subData = subDataService.fluidLiquidationProtectionSubData.decode(subStruct.subData);
|
|
1504
|
+
|
|
1505
|
+
_position.strategyData.decoded.triggerData = triggerData;
|
|
1506
|
+
_position.strategyData.decoded.subData = subData;
|
|
1507
|
+
|
|
1508
|
+
_position.positionId = getPositionId(
|
|
1509
|
+
_position.chainId, _position.protocol.id, _position.owner, triggerData.nftId, subData.vault,
|
|
1510
|
+
);
|
|
1511
|
+
|
|
1512
|
+
_position.specific = {
|
|
1513
|
+
triggerRepayRatio: triggerData.ratio,
|
|
1514
|
+
targetRepayRatio: subData.targetRatio,
|
|
1515
|
+
repayEnabled: isEnabled,
|
|
1516
|
+
subId1: Number(subId),
|
|
1517
|
+
subHashRepay: subHash,
|
|
1518
|
+
};
|
|
1519
|
+
|
|
1520
|
+
_position.strategy.strategyId = Strategies.IdOverrides.LiquidationProtection;
|
|
1521
|
+
|
|
1522
|
+
return _position;
|
|
1523
|
+
}
|
|
1524
|
+
|
|
1525
|
+
|
|
1325
1526
|
const parsingMethodsMapping: StrategiesToProtocolVersionMapping = {
|
|
1326
1527
|
[ProtocolIdentifiers.StrategiesAutomation.MakerDAO]: {
|
|
1327
1528
|
[Strategies.Identifiers.SavingsLiqProtection]: parseMakerSavingsLiqProtection,
|
|
@@ -1331,6 +1532,7 @@ const parsingMethodsMapping: StrategiesToProtocolVersionMapping = {
|
|
|
1331
1532
|
[Strategies.Identifiers.TrailingStopToDebt]: parseMakerTrailingStop,
|
|
1332
1533
|
[Strategies.Identifiers.Repay]: parseMakerLeverageManagement,
|
|
1333
1534
|
[Strategies.Identifiers.Boost]: parseMakerLeverageManagement,
|
|
1535
|
+
[Strategies.Identifiers.LiquidationProtection]: parseMakerLiquidationProtection,
|
|
1334
1536
|
},
|
|
1335
1537
|
[ProtocolIdentifiers.StrategiesAutomation.Liquity]: {
|
|
1336
1538
|
[Strategies.Identifiers.CloseOnPriceToColl]: parseLiquityCloseOnPrice,
|
|
@@ -1369,6 +1571,8 @@ const parsingMethodsMapping: StrategiesToProtocolVersionMapping = {
|
|
|
1369
1571
|
[Strategies.Identifiers.EoaBoostOnPrice]: parseAaveV3LeverageManagementOnPrice,
|
|
1370
1572
|
[Strategies.Identifiers.EoaCloseOnPrice]: parseAaveV3CloseOnPrice,
|
|
1371
1573
|
[Strategies.Identifiers.CollateralSwitch]: parseAaveV3CollateralSwitch,
|
|
1574
|
+
[Strategies.Identifiers.LiquidationProtection]: parseAaveV3LiquidationProtection,
|
|
1575
|
+
[Strategies.Identifiers.EoaLiquidationProtection]: parseAaveV3LiquidationProtection,
|
|
1372
1576
|
},
|
|
1373
1577
|
[ProtocolIdentifiers.StrategiesAutomation.AaveV4]: {
|
|
1374
1578
|
[Strategies.Identifiers.Repay]: parseAaveV4LeverageManagement,
|
|
@@ -1383,6 +1587,8 @@ const parsingMethodsMapping: StrategiesToProtocolVersionMapping = {
|
|
|
1383
1587
|
[Strategies.Identifiers.EoaCloseOnPrice]: parseAaveV4CloseOnPrice,
|
|
1384
1588
|
[Strategies.Identifiers.CollateralSwitch]: parseAaveV4CollateralSwitch,
|
|
1385
1589
|
[Strategies.Identifiers.EoaCollateralSwitch]: parseAaveV4CollateralSwitch,
|
|
1590
|
+
[Strategies.Identifiers.LiquidationProtection]: parseAaveV4LiquidationProtection,
|
|
1591
|
+
[Strategies.Identifiers.EoaLiquidationProtection]: parseAaveV4LiquidationProtection,
|
|
1386
1592
|
},
|
|
1387
1593
|
[ProtocolIdentifiers.StrategiesAutomation.CompoundV2]: {
|
|
1388
1594
|
[Strategies.Identifiers.Repay]: parseCompoundV2LeverageManagement,
|
|
@@ -1399,6 +1605,8 @@ const parsingMethodsMapping: StrategiesToProtocolVersionMapping = {
|
|
|
1399
1605
|
[Strategies.Identifiers.EoaBoostOnPrice]: parseCompoundV3LeverageManagementOnPrice,
|
|
1400
1606
|
[Strategies.Identifiers.CloseOnPrice]: parseCompoundV3CloseOnPrice,
|
|
1401
1607
|
[Strategies.Identifiers.EoaCloseOnPrice]: parseCompoundV3CloseOnPrice,
|
|
1608
|
+
[Strategies.Identifiers.LiquidationProtection]: parseCompoundV3LiquidationProtection,
|
|
1609
|
+
[Strategies.Identifiers.EoaLiquidationProtection]: parseCompoundV3LiquidationProtection,
|
|
1402
1610
|
},
|
|
1403
1611
|
[ProtocolIdentifiers.StrategiesAutomation.ChickenBonds]: {
|
|
1404
1612
|
[Strategies.Identifiers.Rebond]: parseChickenBondsRebond,
|
|
@@ -1418,6 +1626,7 @@ const parsingMethodsMapping: StrategiesToProtocolVersionMapping = {
|
|
|
1418
1626
|
[Strategies.Identifiers.BoostOnPrice]: parseSparkLeverageManagementOnPrice,
|
|
1419
1627
|
[Strategies.Identifiers.CloseOnPrice]: parseSparkCloseOnPrice,
|
|
1420
1628
|
[Strategies.Identifiers.CollateralSwitch]: parseSparkCollateralSwitch,
|
|
1629
|
+
[Strategies.Identifiers.LiquidationProtection]: parseSparkLiquidationProtection,
|
|
1421
1630
|
},
|
|
1422
1631
|
[ProtocolIdentifiers.StrategiesAutomation.CrvUSD]: {
|
|
1423
1632
|
[Strategies.Identifiers.Repay]: parseCrvUSDLeverageManagement,
|
|
@@ -1434,11 +1643,14 @@ const parsingMethodsMapping: StrategiesToProtocolVersionMapping = {
|
|
|
1434
1643
|
[Strategies.Identifiers.EoaBoostOnPrice]: parseMorphoBlueLeverageManagementOnPrice,
|
|
1435
1644
|
[Strategies.Identifiers.EoaRepayOnPrice]: parseMorphoBlueLeverageManagementOnPrice,
|
|
1436
1645
|
[Strategies.Identifiers.CloseOnPrice]: parseMorphoBlueCloseOnPrice,
|
|
1646
|
+
[Strategies.Identifiers.LiquidationProtection]: parseMorphoBlueLiquidationProtection,
|
|
1647
|
+
[Strategies.Identifiers.EoaLiquidationProtection]: parseMorphoBlueLiquidationProtection,
|
|
1437
1648
|
[Strategies.Identifiers.EoaCloseOnPrice]: parseMorphoBlueCloseOnPrice,
|
|
1438
1649
|
},
|
|
1439
1650
|
[ProtocolIdentifiers.StrategiesAutomation.FluidT1]: {
|
|
1440
1651
|
[Strategies.Identifiers.Repay]: parseFluidT1LeverageManagement,
|
|
1441
1652
|
[Strategies.Identifiers.Boost]: parseFluidT1LeverageManagement,
|
|
1653
|
+
[Strategies.Identifiers.LiquidationProtection]: parseFluidT1LiquidationProtection,
|
|
1442
1654
|
},
|
|
1443
1655
|
};
|
|
1444
1656
|
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { expect } from 'chai';
|
|
2
|
-
import Dec from 'decimal.js';
|
|
3
2
|
import { otherAddresses } from '@defisaver/sdk';
|
|
4
3
|
import { getAssetInfo, MAXUINT } from '@defisaver/tokens';
|
|
5
4
|
import * as web3Utils from 'web3-utils';
|
|
@@ -9,12 +8,10 @@ import type { EthereumAddress, StrategyOrBundleIds, SubData, TriggerData } from
|
|
|
9
8
|
|
|
10
9
|
import '../configuration';
|
|
11
10
|
import {
|
|
12
|
-
chickenBondsEncode,
|
|
13
11
|
liquityEncode,
|
|
14
12
|
makerEncode,
|
|
15
13
|
aaveV3Encode,
|
|
16
14
|
compoundV3Encode,
|
|
17
|
-
morphoAaveV2Encode,
|
|
18
15
|
exchangeEncode,
|
|
19
16
|
crvUSDEncode,
|
|
20
17
|
morphoBlueEncode,
|
|
@@ -137,7 +134,7 @@ describe('Feature: strategySubService.ts', () => {
|
|
|
137
134
|
});
|
|
138
135
|
});
|
|
139
136
|
|
|
140
|
-
describe('
|
|
137
|
+
describe('leverageManagement()', () => {
|
|
141
138
|
const examples: Array<[
|
|
142
139
|
[StrategyOrBundleIds, boolean, TriggerData, SubData],
|
|
143
140
|
[
|
|
@@ -187,7 +184,7 @@ describe('Feature: strategySubService.ts', () => {
|
|
|
187
184
|
|
|
188
185
|
examples.forEach(([expected, actual]) => {
|
|
189
186
|
it(`Given ${actual} should return expected value: ${JSON.stringify(expected)}`, () => {
|
|
190
|
-
expect(makerEncode.
|
|
187
|
+
expect(makerEncode.leverageManagement(...actual)).to.eql(expected);
|
|
191
188
|
});
|
|
192
189
|
});
|
|
193
190
|
});
|
|
@@ -348,26 +345,6 @@ describe('Feature: strategySubService.ts', () => {
|
|
|
348
345
|
});
|
|
349
346
|
});
|
|
350
347
|
|
|
351
|
-
describe('When testing strategySubService.chickenBondsEncode', () => {
|
|
352
|
-
describe('rebond()', () => {
|
|
353
|
-
const examples: Array<[
|
|
354
|
-
SubData,
|
|
355
|
-
[bondId: number],
|
|
356
|
-
]> = [
|
|
357
|
-
[
|
|
358
|
-
['0x00000000000000000000000000000000000000000000000000000000000005e3'],
|
|
359
|
-
[1507]
|
|
360
|
-
]
|
|
361
|
-
];
|
|
362
|
-
|
|
363
|
-
examples.forEach(([expected, actual]) => {
|
|
364
|
-
it(`Given ${actual} should return expected value: ${JSON.stringify(expected)}`, () => {
|
|
365
|
-
expect(chickenBondsEncode.rebond(...actual)).to.eql(expected);
|
|
366
|
-
});
|
|
367
|
-
});
|
|
368
|
-
});
|
|
369
|
-
});
|
|
370
|
-
|
|
371
348
|
describe('When testing strategySubService.aaveV3Encode', () => {
|
|
372
349
|
describe('closeToAsset()', () => {
|
|
373
350
|
const examples: Array<[
|
|
@@ -1156,27 +1133,6 @@ describe('Feature: strategySubService.ts', () => {
|
|
|
1156
1133
|
});
|
|
1157
1134
|
});
|
|
1158
1135
|
|
|
1159
|
-
describe('When testing strategySubService.morphoAaveV2Encode', () => {
|
|
1160
|
-
describe('leverageManagement()', () => {
|
|
1161
|
-
const examples: Array<[[string, string, string, string, boolean], [triggerRepayRatio: number, triggerBoostRatio: number, targetBoostRatio: number, targetRepayRatio: number, boostEnabled: boolean]]> = [
|
|
1162
|
-
[
|
|
1163
|
-
[new Dec(160).mul(1e16).toString(), new Dec(220).mul(1e16).toString(), new Dec(180).mul(1e16).toString(), new Dec(190).mul(1e16).toString(), true],
|
|
1164
|
-
[160, 220, 180, 190, true]
|
|
1165
|
-
],
|
|
1166
|
-
[
|
|
1167
|
-
[new Dec(160).mul(1e16).toString(), new Dec(200).mul(1e16).toString(), new Dec(180).mul(1e16).toString(), new Dec(190).mul(1e16).toString(), false],
|
|
1168
|
-
[160, 200, 180, 190, false]
|
|
1169
|
-
],
|
|
1170
|
-
];
|
|
1171
|
-
|
|
1172
|
-
examples.forEach(([expected, actual]) => {
|
|
1173
|
-
it(`Given ${actual} should return expected value: ${JSON.stringify(expected)}`, () => {
|
|
1174
|
-
expect(morphoAaveV2Encode.leverageManagement(...actual)).to.eql(expected);
|
|
1175
|
-
});
|
|
1176
|
-
});
|
|
1177
|
-
});
|
|
1178
|
-
});
|
|
1179
|
-
|
|
1180
1136
|
describe('When testing strategySubService.exchangeEncode', () => {
|
|
1181
1137
|
describe('dca()', () => {
|
|
1182
1138
|
const examples: Array<[
|