@defisaver/automation-sdk 3.3.16 → 3.3.17-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.
Files changed (35) hide show
  1. package/cjs/constants/index.js +190 -0
  2. package/cjs/index.d.ts +2 -2
  3. package/cjs/index.js +5 -2
  4. package/cjs/services/strategiesService.js +169 -12
  5. package/cjs/services/strategySubService.d.ts +22 -17
  6. package/cjs/services/strategySubService.js +115 -38
  7. package/cjs/services/strategySubService.test.js +111 -41
  8. package/cjs/services/subDataService.d.ts +70 -20
  9. package/cjs/services/subDataService.js +23 -79
  10. package/cjs/services/subDataService.test.js +17 -202
  11. package/cjs/types/enums.d.ts +48 -6
  12. package/cjs/types/enums.js +42 -0
  13. package/esm/constants/index.js +190 -0
  14. package/esm/index.d.ts +2 -2
  15. package/esm/index.js +5 -2
  16. package/esm/services/strategiesService.js +169 -12
  17. package/esm/services/strategySubService.d.ts +22 -17
  18. package/esm/services/strategySubService.js +113 -37
  19. package/esm/services/strategySubService.test.js +112 -39
  20. package/esm/services/subDataService.d.ts +70 -20
  21. package/esm/services/subDataService.js +21 -77
  22. package/esm/services/subDataService.test.js +18 -200
  23. package/esm/types/enums.d.ts +48 -6
  24. package/esm/types/enums.js +42 -0
  25. package/package.json +1 -1
  26. package/src/constants/index.ts +192 -1
  27. package/src/index.ts +22 -6
  28. package/src/services/strategiesService.ts +234 -12
  29. package/src/services/strategySubService.test.ts +147 -47
  30. package/src/services/strategySubService.ts +246 -47
  31. package/src/services/subDataService.test.ts +18 -214
  32. package/src/services/subDataService.ts +42 -106
  33. package/src/services/utils.test.ts +1 -1
  34. package/src/services/utils.ts +3 -1
  35. package/src/types/enums.ts +42 -2
@@ -543,11 +543,81 @@ export const MAINNET_BUNDLES_INFO = {
543
543
  strategyId: Strategies.Identifiers.EoaCloseOnPrice,
544
544
  protocol: PROTOCOLS.AaveV4,
545
545
  },
546
+ [Bundles.MainnetIds.MAKER_SW_LIQUIDATION_PROTECTION]: {
547
+ strategyOrBundleId: Bundles.MainnetIds.MAKER_SW_LIQUIDATION_PROTECTION,
548
+ strategyId: Strategies.Identifiers.LiquidationProtection,
549
+ protocol: PROTOCOLS.MakerDAO,
550
+ },
551
+ [Bundles.MainnetIds.AAVE_V3_SW_LIQUIDATION_PROTECTION]: {
552
+ strategyOrBundleId: Bundles.MainnetIds.AAVE_V3_SW_LIQUIDATION_PROTECTION,
553
+ strategyId: Strategies.Identifiers.LiquidationProtection,
554
+ protocol: PROTOCOLS.AaveV3,
555
+ },
556
+ [Bundles.MainnetIds.AAVE_V4_SW_LIQUIDATION_PROTECTION]: {
557
+ strategyOrBundleId: Bundles.MainnetIds.AAVE_V4_SW_LIQUIDATION_PROTECTION,
558
+ strategyId: Strategies.Identifiers.LiquidationProtection,
559
+ protocol: PROTOCOLS.AaveV4,
560
+ },
561
+ [Bundles.MainnetIds.SPARK_SW_LIQUIDATION_PROTECTION]: {
562
+ strategyOrBundleId: Bundles.MainnetIds.SPARK_SW_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.EoaLiquidationProtection,
574
+ protocol: PROTOCOLS.CompoundV3,
575
+ },
576
+ [Bundles.MainnetIds.MORPHO_BLUE_SW_LIQUIDATION_PROTECTION]: {
577
+ strategyOrBundleId: Bundles.MainnetIds.MORPHO_BLUE_SW_LIQUIDATION_PROTECTION,
578
+ strategyId: Strategies.Identifiers.LiquidationProtection,
579
+ protocol: PROTOCOLS.MorphoBlue,
580
+ },
581
+ [Bundles.MainnetIds.FLUID_T1_SW_LIQUIDATION_PROTECTION]: {
582
+ strategyOrBundleId: Bundles.MainnetIds.FLUID_T1_SW_LIQUIDATION_PROTECTION,
583
+ strategyId: Strategies.Identifiers.LiquidationProtection,
584
+ protocol: PROTOCOLS.FluidT1,
585
+ },
586
+ [Bundles.MainnetIds.AAVE_V3_EOA_LIQUIDATION_PROTECTION]: {
587
+ strategyOrBundleId: Bundles.MainnetIds.AAVE_V3_EOA_LIQUIDATION_PROTECTION,
588
+ strategyId: Strategies.Identifiers.EoaLiquidationProtection,
589
+ protocol: PROTOCOLS.AaveV3,
590
+ },
591
+ [Bundles.MainnetIds.AAVE_V4_EOA_LIQUIDATION_PROTECTION]: {
592
+ strategyOrBundleId: Bundles.MainnetIds.AAVE_V4_EOA_LIQUIDATION_PROTECTION,
593
+ strategyId: Strategies.Identifiers.EoaLiquidationProtection,
594
+ protocol: PROTOCOLS.AaveV4,
595
+ },
596
+ [Bundles.MainnetIds.MORPHO_BLUE_EOA_LIQUIDATION_PROTECTION]: {
597
+ strategyOrBundleId: Bundles.MainnetIds.MORPHO_BLUE_EOA_LIQUIDATION_PROTECTION,
598
+ strategyId: Strategies.Identifiers.EoaLiquidationProtection,
599
+ protocol: PROTOCOLS.MorphoBlue,
600
+ },
546
601
  [Bundles.MainnetIds.MORPHO_BLUE_REPAY_ON_PRICE]: {
547
602
  strategyOrBundleId: Bundles.MainnetIds.MORPHO_BLUE_REPAY_ON_PRICE,
548
603
  strategyId: Strategies.Identifiers.RepayOnPrice,
549
604
  protocol: PROTOCOLS.MorphoBlue,
550
605
  },
606
+ [Bundles.MainnetIds.MORPHO_BLUE_EOA_BOOST_ON_PRICE]: {
607
+ strategyOrBundleId: Bundles.MainnetIds.MORPHO_BLUE_EOA_BOOST_ON_PRICE,
608
+ strategyId: Strategies.Identifiers.EoaBoostOnPrice,
609
+ protocol: PROTOCOLS.MorphoBlue,
610
+ },
611
+ [Bundles.MainnetIds.MORPHO_BLUE_EOA_REPAY_ON_PRICE]: {
612
+ strategyOrBundleId: Bundles.MainnetIds.MORPHO_BLUE_EOA_REPAY_ON_PRICE,
613
+ strategyId: Strategies.Identifiers.EoaRepayOnPrice,
614
+ protocol: PROTOCOLS.MorphoBlue,
615
+ },
616
+ [Bundles.MainnetIds.MORPHO_BLUE_EOA_CLOSE]: {
617
+ strategyOrBundleId: Bundles.MainnetIds.MORPHO_BLUE_EOA_CLOSE,
618
+ strategyId: Strategies.Identifiers.EoaCloseOnPrice,
619
+ protocol: PROTOCOLS.MorphoBlue,
620
+ },
551
621
  };
552
622
  export const OPTIMISM_BUNDLES_INFO = {
553
623
  [Bundles.OptimismIds.AAVE_V3_REPAY]: {
@@ -605,6 +675,16 @@ export const OPTIMISM_BUNDLES_INFO = {
605
675
  strategyId: Strategies.Identifiers.EoaCloseOnPrice,
606
676
  protocol: PROTOCOLS.AaveV3,
607
677
  },
678
+ [Bundles.OptimismIds.AAVE_V3_SW_LIQUIDATION_PROTECTION]: {
679
+ strategyOrBundleId: Bundles.OptimismIds.AAVE_V3_SW_LIQUIDATION_PROTECTION,
680
+ strategyId: Strategies.Identifiers.LiquidationProtection,
681
+ protocol: PROTOCOLS.AaveV3,
682
+ },
683
+ [Bundles.OptimismIds.AAVE_V3_EOA_LIQUIDATION_PROTECTION]: {
684
+ strategyOrBundleId: Bundles.OptimismIds.AAVE_V3_EOA_LIQUIDATION_PROTECTION,
685
+ strategyId: Strategies.Identifiers.EoaLiquidationProtection,
686
+ protocol: PROTOCOLS.AaveV3,
687
+ },
608
688
  };
609
689
  export const BASE_BUNDLES_INFO = {
610
690
  [Bundles.BaseIds.AAVE_V3_REPAY]: {
@@ -747,6 +827,66 @@ export const BASE_BUNDLES_INFO = {
747
827
  strategyId: Strategies.Identifiers.RepayOnPrice,
748
828
  protocol: PROTOCOLS.MorphoBlue,
749
829
  },
830
+ [Bundles.BaseIds.AAVE_V3_SW_LIQUIDATION_PROTECTION]: {
831
+ strategyOrBundleId: Bundles.BaseIds.AAVE_V3_SW_LIQUIDATION_PROTECTION,
832
+ strategyId: Strategies.Identifiers.LiquidationProtection,
833
+ protocol: PROTOCOLS.AaveV3,
834
+ },
835
+ [Bundles.BaseIds.COMP_V3_SW_LIQUIDATION_PROTECTION]: {
836
+ strategyOrBundleId: Bundles.BaseIds.COMP_V3_SW_LIQUIDATION_PROTECTION,
837
+ strategyId: Strategies.Identifiers.LiquidationProtection,
838
+ protocol: PROTOCOLS.CompoundV3,
839
+ },
840
+ [Bundles.BaseIds.COMP_V3_EOA_LIQUIDATION_PROTECTION]: {
841
+ strategyOrBundleId: Bundles.BaseIds.COMP_V3_EOA_LIQUIDATION_PROTECTION,
842
+ strategyId: Strategies.Identifiers.EoaLiquidationProtection,
843
+ protocol: PROTOCOLS.CompoundV3,
844
+ },
845
+ [Bundles.BaseIds.MORPHO_BLUE_SW_LIQUIDATION_PROTECTION]: {
846
+ strategyOrBundleId: Bundles.BaseIds.MORPHO_BLUE_SW_LIQUIDATION_PROTECTION,
847
+ strategyId: Strategies.Identifiers.LiquidationProtection,
848
+ protocol: PROTOCOLS.MorphoBlue,
849
+ },
850
+ [Bundles.BaseIds.MORPHO_BLUE_EOA_LIQUIDATION_PROTECTION]: {
851
+ strategyOrBundleId: Bundles.BaseIds.MORPHO_BLUE_EOA_LIQUIDATION_PROTECTION,
852
+ strategyId: Strategies.Identifiers.EoaLiquidationProtection,
853
+ protocol: PROTOCOLS.MorphoBlue,
854
+ },
855
+ [Bundles.BaseIds.FLUID_T1_SW_LIQUIDATION_PROTECTION]: {
856
+ strategyOrBundleId: Bundles.BaseIds.FLUID_T1_SW_LIQUIDATION_PROTECTION,
857
+ strategyId: Strategies.Identifiers.LiquidationProtection,
858
+ protocol: PROTOCOLS.FluidT1,
859
+ },
860
+ [Bundles.BaseIds.AAVE_V3_EOA_LIQUIDATION_PROTECTION]: {
861
+ strategyOrBundleId: Bundles.BaseIds.AAVE_V3_EOA_LIQUIDATION_PROTECTION,
862
+ strategyId: Strategies.Identifiers.EoaLiquidationProtection,
863
+ protocol: PROTOCOLS.AaveV3,
864
+ },
865
+ [Bundles.BaseIds.MORPHO_BLUE_EOA_REPAY]: {
866
+ strategyOrBundleId: Bundles.BaseIds.MORPHO_BLUE_EOA_REPAY,
867
+ strategyId: Strategies.Identifiers.EoaRepay,
868
+ protocol: PROTOCOLS.MorphoBlue,
869
+ },
870
+ [Bundles.BaseIds.MORPHO_BLUE_EOA_BOOST]: {
871
+ strategyOrBundleId: Bundles.BaseIds.MORPHO_BLUE_EOA_BOOST,
872
+ strategyId: Strategies.Identifiers.EoaBoost,
873
+ protocol: PROTOCOLS.MorphoBlue,
874
+ },
875
+ [Bundles.BaseIds.MORPHO_BLUE_EOA_BOOST_ON_PRICE]: {
876
+ strategyOrBundleId: Bundles.BaseIds.MORPHO_BLUE_EOA_BOOST_ON_PRICE,
877
+ strategyId: Strategies.Identifiers.EoaBoostOnPrice,
878
+ protocol: PROTOCOLS.MorphoBlue,
879
+ },
880
+ [Bundles.BaseIds.MORPHO_BLUE_EOA_REPAY_ON_PRICE]: {
881
+ strategyOrBundleId: Bundles.BaseIds.MORPHO_BLUE_EOA_REPAY_ON_PRICE,
882
+ strategyId: Strategies.Identifiers.EoaRepayOnPrice,
883
+ protocol: PROTOCOLS.MorphoBlue,
884
+ },
885
+ [Bundles.BaseIds.MORPHO_BLUE_EOA_CLOSE]: {
886
+ strategyOrBundleId: Bundles.BaseIds.MORPHO_BLUE_EOA_CLOSE,
887
+ strategyId: Strategies.Identifiers.EoaCloseOnPrice,
888
+ protocol: PROTOCOLS.MorphoBlue,
889
+ },
750
890
  };
751
891
  export const ARBITRUM_BUNDLES_INFO = {
752
892
  [Bundles.ArbitrumIds.AAVE_V3_REPAY]: {
@@ -899,6 +1039,56 @@ export const ARBITRUM_BUNDLES_INFO = {
899
1039
  strategyId: Strategies.Identifiers.RepayOnPrice,
900
1040
  protocol: PROTOCOLS.MorphoBlue,
901
1041
  },
1042
+ [Bundles.ArbitrumIds.AAVE_V3_SW_LIQUIDATION_PROTECTION]: {
1043
+ strategyOrBundleId: Bundles.ArbitrumIds.AAVE_V3_SW_LIQUIDATION_PROTECTION,
1044
+ strategyId: Strategies.Identifiers.LiquidationProtection,
1045
+ protocol: PROTOCOLS.AaveV3,
1046
+ },
1047
+ [Bundles.ArbitrumIds.COMP_V3_SW_LIQUIDATION_PROTECTION]: {
1048
+ strategyOrBundleId: Bundles.ArbitrumIds.COMP_V3_SW_LIQUIDATION_PROTECTION,
1049
+ strategyId: Strategies.Identifiers.LiquidationProtection,
1050
+ protocol: PROTOCOLS.CompoundV3,
1051
+ },
1052
+ [Bundles.ArbitrumIds.COMP_V3_EOA_LIQUIDATION_PROTECTION]: {
1053
+ strategyOrBundleId: Bundles.ArbitrumIds.COMP_V3_EOA_LIQUIDATION_PROTECTION,
1054
+ strategyId: Strategies.Identifiers.EoaLiquidationProtection,
1055
+ protocol: PROTOCOLS.CompoundV3,
1056
+ },
1057
+ [Bundles.ArbitrumIds.MORPHO_BLUE_SW_LIQUIDATION_PROTECTION]: {
1058
+ strategyOrBundleId: Bundles.ArbitrumIds.MORPHO_BLUE_SW_LIQUIDATION_PROTECTION,
1059
+ strategyId: Strategies.Identifiers.LiquidationProtection,
1060
+ protocol: PROTOCOLS.MorphoBlue,
1061
+ },
1062
+ [Bundles.ArbitrumIds.FLUID_T1_SW_LIQUIDATION_PROTECTION]: {
1063
+ strategyOrBundleId: Bundles.ArbitrumIds.FLUID_T1_SW_LIQUIDATION_PROTECTION,
1064
+ strategyId: Strategies.Identifiers.LiquidationProtection,
1065
+ protocol: PROTOCOLS.FluidT1,
1066
+ },
1067
+ [Bundles.ArbitrumIds.AAVE_V3_EOA_LIQUIDATION_PROTECTION]: {
1068
+ strategyOrBundleId: Bundles.ArbitrumIds.AAVE_V3_EOA_LIQUIDATION_PROTECTION,
1069
+ strategyId: Strategies.Identifiers.EoaLiquidationProtection,
1070
+ protocol: PROTOCOLS.AaveV3,
1071
+ },
1072
+ [Bundles.ArbitrumIds.MORPHO_BLUE_EOA_LIQUIDATION_PROTECTION]: {
1073
+ strategyOrBundleId: Bundles.ArbitrumIds.MORPHO_BLUE_EOA_LIQUIDATION_PROTECTION,
1074
+ strategyId: Strategies.Identifiers.EoaLiquidationProtection,
1075
+ protocol: PROTOCOLS.MorphoBlue,
1076
+ },
1077
+ [Bundles.ArbitrumIds.MORPHO_BLUE_EOA_BOOST_ON_PRICE]: {
1078
+ strategyOrBundleId: Bundles.ArbitrumIds.MORPHO_BLUE_EOA_BOOST_ON_PRICE,
1079
+ strategyId: Strategies.Identifiers.EoaBoostOnPrice,
1080
+ protocol: PROTOCOLS.MorphoBlue,
1081
+ },
1082
+ [Bundles.ArbitrumIds.MORPHO_BLUE_EOA_REPAY_ON_PRICE]: {
1083
+ strategyOrBundleId: Bundles.ArbitrumIds.MORPHO_BLUE_EOA_REPAY_ON_PRICE,
1084
+ strategyId: Strategies.Identifiers.EoaRepayOnPrice,
1085
+ protocol: PROTOCOLS.MorphoBlue,
1086
+ },
1087
+ [Bundles.ArbitrumIds.MORPHO_BLUE_EOA_CLOSE]: {
1088
+ strategyOrBundleId: Bundles.ArbitrumIds.MORPHO_BLUE_EOA_CLOSE,
1089
+ strategyId: Strategies.Identifiers.EoaCloseOnPrice,
1090
+ protocol: PROTOCOLS.MorphoBlue,
1091
+ },
902
1092
  };
903
1093
  export const BUNDLES_INFO = {
904
1094
  [ChainId.Ethereum]: MAINNET_BUNDLES_INFO,
package/esm/index.d.ts CHANGED
@@ -15,10 +15,10 @@ import * as enums from './types/enums';
15
15
  import type * as types from './types';
16
16
  import { getRatioStateInfoForAaveCloseStrategy, compareSubHashes, encodeSubId, getCloseStrategyType } 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
+ getRatioStateInfoForAaveCloseStrategy: typeof getRatioStateInfoForAaveCloseStrategy;
22
22
  };
23
- export { LegacyMakerAutomation, LegacyAaveAutomation, LegacyCompoundAutomation, EthereumStrategies, OptimismStrategies, ArbitrumStrategies, BaseStrategies, triggerService, subDataService, strategySubService, utils, enums, constants, strategiesService, };
23
+ export { ArbitrumStrategies, BaseStrategies, EthereumStrategies, LegacyAaveAutomation, LegacyCompoundAutomation, LegacyMakerAutomation, OptimismStrategies, constants, enums, strategiesService, strategySubService, subDataService, triggerService, utils, };
24
24
  export type { types };
package/esm/index.js CHANGED
@@ -18,6 +18,9 @@ import * as constants from './constants';
18
18
  import * as enums from './types/enums';
19
19
  import { getRatioStateInfoForAaveCloseStrategy, compareSubHashes, encodeSubId, getCloseStrategyType, } from './services/utils';
20
20
  const utils = {
21
- getRatioStateInfoForAaveCloseStrategy, compareSubHashes, encodeSubId, getCloseStrategyType,
21
+ compareSubHashes,
22
+ encodeSubId,
23
+ getCloseStrategyType,
24
+ getRatioStateInfoForAaveCloseStrategy,
22
25
  };
23
- export { LegacyMakerAutomation, LegacyAaveAutomation, LegacyCompoundAutomation, EthereumStrategies, OptimismStrategies, ArbitrumStrategies, BaseStrategies, triggerService, subDataService, strategySubService, utils, enums, constants, strategiesService, };
26
+ export { ArbitrumStrategies, BaseStrategies, EthereumStrategies, LegacyAaveAutomation, LegacyCompoundAutomation, LegacyMakerAutomation, OptimismStrategies, constants, enums, strategiesService, strategySubService, subDataService, triggerService, utils, };
@@ -66,7 +66,7 @@ function parseMakerLeverageManagement(position, parseData) {
66
66
  const { subStruct, subId, subHash } = parseData.subscriptionEventData;
67
67
  const { isEnabled } = parseData.strategiesSubsData;
68
68
  const triggerData = triggerService.makerRatioTrigger.decode(subStruct.triggerData);
69
- const subData = subDataService.makerLeverageManagementSubData.decode(subStruct.subData);
69
+ const subData = subDataService.legacyMakerLeverageManagementSubData.decode(subStruct.subData);
70
70
  _position.strategyData.decoded.triggerData = triggerData;
71
71
  _position.strategyData.decoded.subData = subData;
72
72
  _position.positionId = getPositionId(_position.chainId, _position.protocol.id, subData.vaultId);
@@ -94,6 +94,24 @@ 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
+ _position.strategy.strategyId = Strategies.IdOverrides.LiquidationProtection;
113
+ return _position;
114
+ }
97
115
  function parseLiquityCloseOnPrice(position, parseData) {
98
116
  const _position = cloneDeep(position);
99
117
  const { subStruct } = parseData.subscriptionEventData;
@@ -131,7 +149,7 @@ function parseAaveV2LeverageManagement(position, parseData) {
131
149
  const { subStruct, subId, subHash } = parseData.subscriptionEventData;
132
150
  const { isEnabled } = parseData.strategiesSubsData;
133
151
  const triggerData = triggerService.aaveV2RatioTrigger.decode(subStruct.triggerData);
134
- const subData = subDataService.aaveV2LeverageManagementSubData.decode(subStruct.subData);
152
+ const subData = subDataService.legacyAaveV2LeverageManagementSubData.decode(subStruct.subData);
135
153
  _position.strategyData.decoded.triggerData = triggerData;
136
154
  _position.strategyData.decoded.subData = subData;
137
155
  _position.positionId = getPositionId(_position.chainId, _position.protocol.id, _position.owner, triggerData.market);
@@ -167,10 +185,10 @@ function parseAaveV3LeverageManagement(position, parseData) {
167
185
  const isEOA = _position.strategy.strategyId.includes('eoa');
168
186
  let subData;
169
187
  if (isEOA) {
170
- subData = subDataService.aaveV3LeverageManagementSubDataWithoutSubProxy.decode(subStruct.subData);
188
+ subData = subDataService.aaveV3LeverageManagementSubData.decode(subStruct.subData);
171
189
  }
172
190
  else {
173
- subData = subDataService.aaveV3LeverageManagementSubData.decode(subStruct.subData);
191
+ subData = subDataService.legacyAaveV3LeverageManagementSubData.decode(subStruct.subData);
174
192
  }
175
193
  _position.strategyData.decoded.triggerData = triggerData;
176
194
  _position.strategyData.decoded.subData = subData;
@@ -204,6 +222,26 @@ function parseAaveV3LeverageManagement(position, parseData) {
204
222
  }
205
223
  return _position;
206
224
  }
225
+ function parseAaveV3LiquidationProtection(position, parseData) {
226
+ const _position = cloneDeep(position);
227
+ const { subStruct, subId, subHash } = parseData.subscriptionEventData;
228
+ const { isEnabled } = parseData.strategiesSubsData;
229
+ const triggerData = triggerService.aaveV3RatioTrigger.decode(subStruct.triggerData);
230
+ const subData = subDataService.aaveV3LiquidationProtectionSubData.decode(subStruct.subData);
231
+ _position.strategyData.decoded.triggerData = triggerData;
232
+ _position.strategyData.decoded.subData = subData;
233
+ _position.positionId = getPositionId(_position.chainId, _position.protocol.id, _position.owner, triggerData.market);
234
+ _position.specific = {
235
+ triggerRepayRatio: triggerData.ratio,
236
+ targetRepayRatio: subData.targetRatio,
237
+ repayEnabled: isEnabled,
238
+ subId1: Number(subId),
239
+ subHashRepay: subHash,
240
+ };
241
+ const isEOA = _position.strategy.strategyId.includes('eoa');
242
+ _position.strategy.strategyId = isEOA ? Strategies.IdOverrides.EoaLiquidationProtection : Strategies.IdOverrides.LiquidationProtection;
243
+ return _position;
244
+ }
207
245
  function parseAaveV3LeverageManagementOnPrice(position, parseData) {
208
246
  const _position = cloneDeep(position);
209
247
  const { subStruct } = parseData.subscriptionEventData;
@@ -333,6 +371,26 @@ function parseAaveV4LeverageManagement(position, parseData) {
333
371
  }
334
372
  return _position;
335
373
  }
374
+ function parseAaveV4LiquidationProtection(position, parseData) {
375
+ const _position = cloneDeep(position);
376
+ const { subStruct, subId, subHash } = parseData.subscriptionEventData;
377
+ const { isEnabled } = parseData.strategiesSubsData;
378
+ const triggerData = triggerService.aaveV4RatioTrigger.decode(subStruct.triggerData);
379
+ const subData = subDataService.aaveV4LiquidationProtectionSubData.decode(subStruct.subData);
380
+ const isEOA = _position.strategy.strategyId.includes('eoa');
381
+ _position.strategyData.decoded.triggerData = triggerData;
382
+ _position.strategyData.decoded.subData = subData;
383
+ _position.positionId = getPositionId(_position.chainId, _position.protocol.id, _position.owner, triggerData.spoke);
384
+ _position.strategy.strategyId = isEOA ? Strategies.IdOverrides.EoaLiquidationProtection : Strategies.IdOverrides.LiquidationProtection;
385
+ _position.specific = {
386
+ triggerRepayRatio: triggerData.ratio,
387
+ targetRepayRatio: subData.targetRatio,
388
+ repayEnabled: isEnabled,
389
+ subId1: Number(subId),
390
+ subHashRepay: subHash,
391
+ };
392
+ return _position;
393
+ }
336
394
  function parseAaveV4LeverageManagementOnPrice(position, parseData) {
337
395
  const _position = cloneDeep(position);
338
396
  const { subStruct } = parseData.subscriptionEventData;
@@ -452,7 +510,7 @@ function parseCompoundV2LeverageManagement(position, parseData) {
452
510
  const { subStruct, subId, subHash } = parseData.subscriptionEventData;
453
511
  const { isEnabled } = parseData.strategiesSubsData;
454
512
  const triggerData = triggerService.compoundV2RatioTrigger.decode(subStruct.triggerData);
455
- const subData = subDataService.compoundV2LeverageManagementSubData.decode(subStruct.subData);
513
+ const subData = subDataService.legacyCompoundV2LeverageManagementSubData.decode(subStruct.subData);
456
514
  _position.strategyData.decoded.triggerData = triggerData;
457
515
  _position.strategyData.decoded.subData = subData;
458
516
  _position.owner = triggerData.owner.toLowerCase();
@@ -486,7 +544,7 @@ function parseCompoundV3LeverageManagement(position, parseData) {
486
544
  const _position = cloneDeep(position);
487
545
  const { subStruct, subId, subHash } = parseData.subscriptionEventData;
488
546
  const { isEnabled } = parseData.strategiesSubsData;
489
- const subDataDecoder = subDataService.compoundV3LeverageManagementSubDataWithoutSubProxy;
547
+ const subDataDecoder = subDataService.compoundV3LeverageManagementSubData;
490
548
  const triggerData = triggerService.compoundV3RatioTrigger.decode(subStruct.triggerData);
491
549
  const subData = subDataDecoder.decode(subStruct.subData);
492
550
  _position.strategyData.decoded.triggerData = triggerData;
@@ -517,6 +575,27 @@ function parseCompoundV3LeverageManagement(position, parseData) {
517
575
  _position.strategy.strategyId = isEOA ? Strategies.IdOverrides.EoaLeverageManagement : Strategies.IdOverrides.LeverageManagement;
518
576
  return _position;
519
577
  }
578
+ function parseCompoundV3LiquidationProtection(position, parseData) {
579
+ const _position = cloneDeep(position);
580
+ const { subStruct, subId, subHash } = parseData.subscriptionEventData;
581
+ const { isEnabled } = parseData.strategiesSubsData;
582
+ const subDataDecoder = subDataService.compoundV3LiquidationProtectionSubData;
583
+ const triggerData = triggerService.compoundV3RatioTrigger.decode(subStruct.triggerData);
584
+ const subData = subDataDecoder.decode(subStruct.subData);
585
+ _position.strategyData.decoded.triggerData = triggerData;
586
+ _position.strategyData.decoded.subData = subData;
587
+ _position.positionId = getPositionId(_position.chainId, _position.protocol.id, triggerData.owner.toLowerCase(), triggerData.market);
588
+ const isEOA = _position.strategy.strategyId.includes('eoa');
589
+ _position.specific = {
590
+ triggerRepayRatio: triggerData.ratio,
591
+ targetRepayRatio: subData.targetRatio,
592
+ repayEnabled: isEnabled,
593
+ subId1: Number(subId),
594
+ subHashRepay: subHash,
595
+ };
596
+ _position.strategy.strategyId = isEOA ? Strategies.IdOverrides.EoaLiquidationProtection : Strategies.IdOverrides.LiquidationProtection;
597
+ return _position;
598
+ }
520
599
  function parseCompoundV3LeverageManagementOnPrice(position, parseData) {
521
600
  const _position = cloneDeep(position);
522
601
  const { subStruct } = parseData.subscriptionEventData;
@@ -590,7 +669,7 @@ function parseExchangeDca(position, parseData, chainId) {
590
669
  function parseExchangeLimitOrder(position, parseData, chainId) {
591
670
  const _position = cloneDeep(position);
592
671
  const { subStruct } = parseData.subscriptionEventData;
593
- _position.strategyData.decoded.subData = subDataService.exchangeLimitOrderSubData.decode(subStruct.subData, chainId);
672
+ _position.strategyData.decoded.subData = subDataService.legacyExchangeLimitOrderSubData.decode(subStruct.subData, chainId);
594
673
  const fromTokenDecimals = getAssetInfoByAddress(_position.strategyData.decoded.subData.fromToken, chainId).decimals;
595
674
  const toTokenDecimals = getAssetInfoByAddress(_position.strategyData.decoded.subData.toToken, chainId).decimals;
596
675
  _position.strategyData.decoded.triggerData = triggerService.exchangeOffchainPriceTrigger.decode(subStruct.triggerData, fromTokenDecimals, toTokenDecimals);
@@ -602,7 +681,7 @@ function parseLiquityLeverageManagement(position, parseData) {
602
681
  const { subStruct, subId, subHash } = parseData.subscriptionEventData;
603
682
  const { isEnabled } = parseData.strategiesSubsData;
604
683
  const triggerData = triggerService.liquityRatioTrigger.decode(subStruct.triggerData);
605
- const subData = subDataService.liquityLeverageManagementSubData.decode(subStruct.subData);
684
+ const subData = subDataService.legacyLiquityLeverageManagementSubData.decode(subStruct.subData);
606
685
  _position.strategyData.decoded.triggerData = triggerData;
607
686
  _position.strategyData.decoded.subData = subData;
608
687
  _position.positionId = getPositionId(_position.chainId, _position.protocol.id, _position.owner);
@@ -668,7 +747,7 @@ function parseSparkLeverageManagement(position, parseData) {
668
747
  const { subStruct, subId, subHash } = parseData.subscriptionEventData;
669
748
  const { isEnabled } = parseData.strategiesSubsData;
670
749
  const triggerData = triggerService.sparkRatioTrigger.decode(subStruct.triggerData);
671
- const subData = subDataService.sparkLeverageManagementSubData.decode(subStruct.subData);
750
+ const subData = subDataService.legacySparkLeverageManagementSubData.decode(subStruct.subData);
672
751
  _position.strategyData.decoded.triggerData = triggerData;
673
752
  _position.strategyData.decoded.subData = subData;
674
753
  _position.positionId = getPositionId(_position.chainId, _position.protocol.id, _position.owner, triggerData.market);
@@ -696,6 +775,25 @@ function parseSparkLeverageManagement(position, parseData) {
696
775
  _position.strategy.strategyId = Strategies.IdOverrides.LeverageManagement;
697
776
  return _position;
698
777
  }
778
+ function parseSparkLiquidationProtection(position, parseData) {
779
+ const _position = cloneDeep(position);
780
+ const { subStruct, subId, subHash } = parseData.subscriptionEventData;
781
+ const { isEnabled } = parseData.strategiesSubsData;
782
+ const triggerData = triggerService.sparkRatioTrigger.decode(subStruct.triggerData);
783
+ const subData = subDataService.sparkLiquidationProtectionSubData.decode(subStruct.subData);
784
+ _position.strategyData.decoded.triggerData = triggerData;
785
+ _position.strategyData.decoded.subData = subData;
786
+ _position.positionId = getPositionId(_position.chainId, _position.protocol.id, _position.owner, triggerData.market);
787
+ _position.specific = {
788
+ triggerRepayRatio: triggerData.ratio,
789
+ targetRepayRatio: subData.targetRatio,
790
+ repayEnabled: isEnabled,
791
+ subId1: Number(subId),
792
+ subHashRepay: subHash,
793
+ };
794
+ _position.strategy.strategyId = Strategies.IdOverrides.LiquidationProtection;
795
+ return _position;
796
+ }
699
797
  function parseSparkLeverageManagementOnPrice(position, parseData) {
700
798
  const _position = cloneDeep(position);
701
799
  const { subStruct } = parseData.subscriptionEventData;
@@ -820,6 +918,7 @@ function parseMorphoBlueLeverageManagement(position, parseData) {
820
918
  const _position = cloneDeep(position);
821
919
  const { subStruct, subId, subHash } = parseData.subscriptionEventData;
822
920
  const { isEnabled } = parseData.strategiesSubsData;
921
+ const isEOA = _position.strategy.strategyId.includes('eoa');
823
922
  const triggerData = triggerService.morphoBlueRatioTrigger.decode(subStruct.triggerData);
824
923
  const subData = subDataService.morphoBlueLeverageManagementSubData.decode(subStruct.subData);
825
924
  _position.strategyData.decoded.triggerData = triggerData;
@@ -833,7 +932,7 @@ function parseMorphoBlueLeverageManagement(position, parseData) {
833
932
  repayEnabled: isEnabled,
834
933
  subId1: Number(subId),
835
934
  subHashRepay: subHash,
836
- mergeWithId: Strategies.Identifiers.Boost,
935
+ mergeWithId: isEOA ? Strategies.Identifiers.EoaBoost : Strategies.Identifiers.Boost,
837
936
  };
838
937
  }
839
938
  else {
@@ -843,16 +942,36 @@ function parseMorphoBlueLeverageManagement(position, parseData) {
843
942
  boostEnabled: isEnabled,
844
943
  subId2: Number(subId),
845
944
  subHashBoost: subHash,
846
- mergeId: Strategies.Identifiers.Boost,
945
+ mergeId: isEOA ? Strategies.Identifiers.EoaBoost : Strategies.Identifiers.Boost,
847
946
  };
848
947
  }
849
- const isEOA = _position.strategy.strategyId.includes('eoa');
850
948
  _position.strategy.strategyId = isEOA ? Strategies.IdOverrides.EoaLeverageManagement : Strategies.IdOverrides.LeverageManagement;
851
949
  return _position;
852
950
  }
951
+ function parseMorphoBlueLiquidationProtection(position, parseData) {
952
+ const _position = cloneDeep(position);
953
+ const { subStruct, subId, subHash } = parseData.subscriptionEventData;
954
+ const { isEnabled } = parseData.strategiesSubsData;
955
+ const triggerData = triggerService.morphoBlueRatioTrigger.decode(subStruct.triggerData);
956
+ const subData = subDataService.morphoBlueLiquidationProtectionSubData.decode(subStruct.subData);
957
+ _position.strategyData.decoded.triggerData = triggerData;
958
+ _position.strategyData.decoded.subData = subData;
959
+ _position.positionId = getPositionId(_position.chainId, _position.protocol.id, triggerData.owner.toLowerCase(), triggerData.marketId);
960
+ _position.specific = {
961
+ triggerRepayRatio: triggerData.ratio,
962
+ targetRepayRatio: subData.targetRatio,
963
+ repayEnabled: isEnabled,
964
+ subId1: Number(subId),
965
+ subHashRepay: subHash,
966
+ };
967
+ const isEOA = _position.strategy.strategyId.includes('eoa');
968
+ _position.strategy.strategyId = isEOA ? Strategies.IdOverrides.EoaLiquidationProtection : Strategies.IdOverrides.LiquidationProtection;
969
+ return _position;
970
+ }
853
971
  function parseMorphoBlueLeverageManagementOnPrice(position, parseData) {
854
972
  const _position = cloneDeep(position);
855
973
  const { subStruct } = parseData.subscriptionEventData;
974
+ const isEOA = _position.strategy.strategyId.includes('eoa');
856
975
  const triggerData = triggerService.morphoBluePriceTrigger.decode(subStruct.triggerData);
857
976
  const subData = subDataService.morphoBlueLeverageManagementOnPriceSubData.decode(subStruct.subData);
858
977
  _position.strategyData.decoded.triggerData = triggerData;
@@ -875,11 +994,15 @@ function parseMorphoBlueLeverageManagementOnPrice(position, parseData) {
875
994
  ratio: subData.targetRatio,
876
995
  ratioState: triggerData.priceState,
877
996
  };
997
+ _position.strategy.strategyId = isEOA
998
+ ? Strategies.IdOverrides.EoaLeverageManagementOnPrice
999
+ : Strategies.IdOverrides.LeverageManagementOnPrice;
878
1000
  return _position;
879
1001
  }
880
1002
  function parseMorphoBlueCloseOnPrice(position, parseData) {
881
1003
  const _position = cloneDeep(position);
882
1004
  const { subStruct } = parseData.subscriptionEventData;
1005
+ const isEOA = _position.strategy.strategyId.includes('eoa');
883
1006
  const triggerData = triggerService.morphoBluePriceRangeTrigger.decode(subStruct.triggerData);
884
1007
  const subData = subDataService.morphoBlueCloseOnPriceSubData.decode(subStruct.subData);
885
1008
  _position.strategyData.decoded.triggerData = triggerData;
@@ -894,6 +1017,7 @@ function parseMorphoBlueCloseOnPrice(position, parseData) {
894
1017
  ]);
895
1018
  const marketId = web3.utils.keccak256(marketIdEncodedData);
896
1019
  const { takeProfitType, stopLossType } = getStopLossAndTakeProfitTypeByCloseStrategyType(+subData.closeType);
1020
+ _position.strategy.strategyId = isEOA ? Strategies.Identifiers.EoaCloseOnPrice : Strategies.Identifiers.CloseOnPrice;
897
1021
  _position.specific = {
898
1022
  subHash: _position.subHash,
899
1023
  marketId,
@@ -1002,6 +1126,25 @@ function parseFluidT1LeverageManagement(position, parseData) {
1002
1126
  _position.strategy.strategyId = Strategies.IdOverrides.LeverageManagement;
1003
1127
  return _position;
1004
1128
  }
1129
+ function parseFluidT1LiquidationProtection(position, parseData) {
1130
+ const _position = cloneDeep(position);
1131
+ const { subStruct, subId, subHash } = parseData.subscriptionEventData;
1132
+ const { isEnabled } = parseData.strategiesSubsData;
1133
+ const triggerData = triggerService.fluidRatioTrigger.decode(subStruct.triggerData);
1134
+ const subData = subDataService.fluidLiquidationProtectionSubData.decode(subStruct.subData);
1135
+ _position.strategyData.decoded.triggerData = triggerData;
1136
+ _position.strategyData.decoded.subData = subData;
1137
+ _position.positionId = getPositionId(_position.chainId, _position.protocol.id, _position.owner, triggerData.nftId, subData.vault);
1138
+ _position.specific = {
1139
+ triggerRepayRatio: triggerData.ratio,
1140
+ targetRepayRatio: subData.targetRatio,
1141
+ repayEnabled: isEnabled,
1142
+ subId1: Number(subId),
1143
+ subHashRepay: subHash,
1144
+ };
1145
+ _position.strategy.strategyId = Strategies.IdOverrides.LiquidationProtection;
1146
+ return _position;
1147
+ }
1005
1148
  const parsingMethodsMapping = {
1006
1149
  [ProtocolIdentifiers.StrategiesAutomation.MakerDAO]: {
1007
1150
  [Strategies.Identifiers.SavingsLiqProtection]: parseMakerSavingsLiqProtection,
@@ -1011,6 +1154,7 @@ const parsingMethodsMapping = {
1011
1154
  [Strategies.Identifiers.TrailingStopToDebt]: parseMakerTrailingStop,
1012
1155
  [Strategies.Identifiers.Repay]: parseMakerLeverageManagement,
1013
1156
  [Strategies.Identifiers.Boost]: parseMakerLeverageManagement,
1157
+ [Strategies.Identifiers.LiquidationProtection]: parseMakerLiquidationProtection,
1014
1158
  },
1015
1159
  [ProtocolIdentifiers.StrategiesAutomation.Liquity]: {
1016
1160
  [Strategies.Identifiers.CloseOnPriceToColl]: parseLiquityCloseOnPrice,
@@ -1049,6 +1193,8 @@ const parsingMethodsMapping = {
1049
1193
  [Strategies.Identifiers.EoaBoostOnPrice]: parseAaveV3LeverageManagementOnPrice,
1050
1194
  [Strategies.Identifiers.EoaCloseOnPrice]: parseAaveV3CloseOnPrice,
1051
1195
  [Strategies.Identifiers.CollateralSwitch]: parseAaveV3CollateralSwitch,
1196
+ [Strategies.Identifiers.LiquidationProtection]: parseAaveV3LiquidationProtection,
1197
+ [Strategies.Identifiers.EoaLiquidationProtection]: parseAaveV3LiquidationProtection,
1052
1198
  },
1053
1199
  [ProtocolIdentifiers.StrategiesAutomation.AaveV4]: {
1054
1200
  [Strategies.Identifiers.Repay]: parseAaveV4LeverageManagement,
@@ -1063,6 +1209,8 @@ const parsingMethodsMapping = {
1063
1209
  [Strategies.Identifiers.EoaCloseOnPrice]: parseAaveV4CloseOnPrice,
1064
1210
  [Strategies.Identifiers.CollateralSwitch]: parseAaveV4CollateralSwitch,
1065
1211
  [Strategies.Identifiers.EoaCollateralSwitch]: parseAaveV4CollateralSwitch,
1212
+ [Strategies.Identifiers.LiquidationProtection]: parseAaveV4LiquidationProtection,
1213
+ [Strategies.Identifiers.EoaLiquidationProtection]: parseAaveV4LiquidationProtection,
1066
1214
  },
1067
1215
  [ProtocolIdentifiers.StrategiesAutomation.CompoundV2]: {
1068
1216
  [Strategies.Identifiers.Repay]: parseCompoundV2LeverageManagement,
@@ -1079,6 +1227,8 @@ const parsingMethodsMapping = {
1079
1227
  [Strategies.Identifiers.EoaBoostOnPrice]: parseCompoundV3LeverageManagementOnPrice,
1080
1228
  [Strategies.Identifiers.CloseOnPrice]: parseCompoundV3CloseOnPrice,
1081
1229
  [Strategies.Identifiers.EoaCloseOnPrice]: parseCompoundV3CloseOnPrice,
1230
+ [Strategies.Identifiers.LiquidationProtection]: parseCompoundV3LiquidationProtection,
1231
+ [Strategies.Identifiers.EoaLiquidationProtection]: parseCompoundV3LiquidationProtection,
1082
1232
  },
1083
1233
  [ProtocolIdentifiers.StrategiesAutomation.ChickenBonds]: {
1084
1234
  [Strategies.Identifiers.Rebond]: parseChickenBondsRebond,
@@ -1098,6 +1248,7 @@ const parsingMethodsMapping = {
1098
1248
  [Strategies.Identifiers.BoostOnPrice]: parseSparkLeverageManagementOnPrice,
1099
1249
  [Strategies.Identifiers.CloseOnPrice]: parseSparkCloseOnPrice,
1100
1250
  [Strategies.Identifiers.CollateralSwitch]: parseSparkCollateralSwitch,
1251
+ [Strategies.Identifiers.LiquidationProtection]: parseSparkLiquidationProtection,
1101
1252
  },
1102
1253
  [ProtocolIdentifiers.StrategiesAutomation.CrvUSD]: {
1103
1254
  [Strategies.Identifiers.Repay]: parseCrvUSDLeverageManagement,
@@ -1111,11 +1262,17 @@ const parsingMethodsMapping = {
1111
1262
  [Strategies.Identifiers.EoaBoost]: parseMorphoBlueLeverageManagement,
1112
1263
  [Strategies.Identifiers.BoostOnPrice]: parseMorphoBlueLeverageManagementOnPrice,
1113
1264
  [Strategies.Identifiers.RepayOnPrice]: parseMorphoBlueLeverageManagementOnPrice,
1265
+ [Strategies.Identifiers.EoaBoostOnPrice]: parseMorphoBlueLeverageManagementOnPrice,
1266
+ [Strategies.Identifiers.EoaRepayOnPrice]: parseMorphoBlueLeverageManagementOnPrice,
1114
1267
  [Strategies.Identifiers.CloseOnPrice]: parseMorphoBlueCloseOnPrice,
1268
+ [Strategies.Identifiers.LiquidationProtection]: parseMorphoBlueLiquidationProtection,
1269
+ [Strategies.Identifiers.EoaLiquidationProtection]: parseMorphoBlueLiquidationProtection,
1270
+ [Strategies.Identifiers.EoaCloseOnPrice]: parseMorphoBlueCloseOnPrice,
1115
1271
  },
1116
1272
  [ProtocolIdentifiers.StrategiesAutomation.FluidT1]: {
1117
1273
  [Strategies.Identifiers.Repay]: parseFluidT1LeverageManagement,
1118
1274
  [Strategies.Identifiers.Boost]: parseFluidT1LeverageManagement,
1275
+ [Strategies.Identifiers.LiquidationProtection]: parseFluidT1LiquidationProtection,
1119
1276
  },
1120
1277
  };
1121
1278
  function getParsingMethod(id, strategy) {