@defisaver/automation-sdk 3.3.16-dev-13082-morpho-eoa-dev → 3.3.16-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 (39) hide show
  1. package/cjs/constants/index.js +117 -42
  2. package/cjs/index.d.ts +2 -2
  3. package/cjs/index.js +5 -2
  4. package/cjs/services/strategiesService.js +157 -12
  5. package/cjs/services/strategySubService.d.ts +18 -21
  6. package/cjs/services/strategySubService.js +78 -74
  7. package/cjs/services/strategySubService.test.js +3 -149
  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/services/utils.d.ts +2 -1
  12. package/cjs/services/utils.js +14 -1
  13. package/cjs/types/enums.d.ts +36 -17
  14. package/cjs/types/enums.js +30 -11
  15. package/esm/constants/index.js +117 -42
  16. package/esm/index.d.ts +2 -2
  17. package/esm/index.js +5 -2
  18. package/esm/services/strategiesService.js +157 -12
  19. package/esm/services/strategySubService.d.ts +18 -21
  20. package/esm/services/strategySubService.js +78 -73
  21. package/esm/services/strategySubService.test.js +4 -147
  22. package/esm/services/subDataService.d.ts +70 -20
  23. package/esm/services/subDataService.js +21 -77
  24. package/esm/services/subDataService.test.js +18 -200
  25. package/esm/services/utils.d.ts +2 -1
  26. package/esm/services/utils.js +13 -1
  27. package/esm/types/enums.d.ts +36 -17
  28. package/esm/types/enums.js +30 -11
  29. package/package.json +1 -1
  30. package/src/constants/index.ts +119 -43
  31. package/src/index.ts +22 -6
  32. package/src/services/strategiesService.ts +221 -12
  33. package/src/services/strategySubService.test.ts +3 -191
  34. package/src/services/strategySubService.ts +173 -121
  35. package/src/services/subDataService.test.ts +18 -214
  36. package/src/services/subDataService.ts +42 -106
  37. package/src/services/utils.test.ts +1 -1
  38. package/src/services/utils.ts +15 -1
  39. package/src/types/enums.ts +30 -13
@@ -543,24 +543,64 @@ export const MAINNET_BUNDLES_INFO = {
543
543
  strategyId: Strategies.Identifiers.EoaCloseOnPrice,
544
544
  protocol: PROTOCOLS.AaveV4,
545
545
  },
546
- [Bundles.MainnetIds.MORPHO_BLUE_REPAY_ON_PRICE]: {
547
- strategyOrBundleId: Bundles.MainnetIds.MORPHO_BLUE_REPAY_ON_PRICE,
548
- strategyId: Strategies.Identifiers.RepayOnPrice,
549
- protocol: PROTOCOLS.MorphoBlue,
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
550
  },
551
- [Bundles.MainnetIds.MORPHO_BLUE_EOA_BOOST_ON_PRICE]: {
552
- strategyOrBundleId: Bundles.MainnetIds.MORPHO_BLUE_EOA_BOOST_ON_PRICE,
553
- strategyId: Strategies.Identifiers.EoaBoostOnPrice,
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,
554
579
  protocol: PROTOCOLS.MorphoBlue,
555
580
  },
556
- [Bundles.MainnetIds.MORPHO_BLUE_EOA_REPAY_ON_PRICE]: {
557
- strategyOrBundleId: Bundles.MainnetIds.MORPHO_BLUE_EOA_REPAY_ON_PRICE,
558
- strategyId: Strategies.Identifiers.EoaRepayOnPrice,
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,
559
599
  protocol: PROTOCOLS.MorphoBlue,
560
600
  },
561
- [Bundles.MainnetIds.MORPHO_BLUE_EOA_CLOSE]: {
562
- strategyOrBundleId: Bundles.MainnetIds.MORPHO_BLUE_EOA_CLOSE,
563
- strategyId: Strategies.Identifiers.EoaCloseOnPrice,
601
+ [Bundles.MainnetIds.MORPHO_BLUE_REPAY_ON_PRICE]: {
602
+ strategyOrBundleId: Bundles.MainnetIds.MORPHO_BLUE_REPAY_ON_PRICE,
603
+ strategyId: Strategies.Identifiers.RepayOnPrice,
564
604
  protocol: PROTOCOLS.MorphoBlue,
565
605
  },
566
606
  };
@@ -620,6 +660,16 @@ export const OPTIMISM_BUNDLES_INFO = {
620
660
  strategyId: Strategies.Identifiers.EoaCloseOnPrice,
621
661
  protocol: PROTOCOLS.AaveV3,
622
662
  },
663
+ [Bundles.OptimismIds.AAVE_V3_SW_LIQUIDATION_PROTECTION]: {
664
+ strategyOrBundleId: Bundles.OptimismIds.AAVE_V3_SW_LIQUIDATION_PROTECTION,
665
+ strategyId: Strategies.Identifiers.LiquidationProtection,
666
+ protocol: PROTOCOLS.AaveV3,
667
+ },
668
+ [Bundles.OptimismIds.AAVE_V3_EOA_LIQUIDATION_PROTECTION]: {
669
+ strategyOrBundleId: Bundles.OptimismIds.AAVE_V3_EOA_LIQUIDATION_PROTECTION,
670
+ strategyId: Strategies.Identifiers.EoaLiquidationProtection,
671
+ protocol: PROTOCOLS.AaveV3,
672
+ },
623
673
  };
624
674
  export const BASE_BUNDLES_INFO = {
625
675
  [Bundles.BaseIds.AAVE_V3_REPAY]: {
@@ -762,30 +812,35 @@ export const BASE_BUNDLES_INFO = {
762
812
  strategyId: Strategies.Identifiers.RepayOnPrice,
763
813
  protocol: PROTOCOLS.MorphoBlue,
764
814
  },
765
- [Bundles.BaseIds.MORPHO_BLUE_EOA_REPAY]: {
766
- strategyOrBundleId: Bundles.BaseIds.MORPHO_BLUE_EOA_REPAY,
767
- strategyId: Strategies.Identifiers.EoaRepay,
768
- protocol: PROTOCOLS.MorphoBlue,
815
+ [Bundles.BaseIds.AAVE_V3_SW_LIQUIDATION_PROTECTION]: {
816
+ strategyOrBundleId: Bundles.BaseIds.AAVE_V3_SW_LIQUIDATION_PROTECTION,
817
+ strategyId: Strategies.Identifiers.LiquidationProtection,
818
+ protocol: PROTOCOLS.AaveV3,
769
819
  },
770
- [Bundles.BaseIds.MORPHO_BLUE_EOA_BOOST]: {
771
- strategyOrBundleId: Bundles.BaseIds.MORPHO_BLUE_EOA_BOOST,
772
- strategyId: Strategies.Identifiers.EoaBoost,
773
- protocol: PROTOCOLS.MorphoBlue,
820
+ [Bundles.BaseIds.COMP_V3_SW_LIQUIDATION_PROTECTION]: {
821
+ strategyOrBundleId: Bundles.BaseIds.COMP_V3_SW_LIQUIDATION_PROTECTION,
822
+ strategyId: Strategies.Identifiers.LiquidationProtection,
823
+ protocol: PROTOCOLS.CompoundV3,
774
824
  },
775
- [Bundles.BaseIds.MORPHO_BLUE_EOA_BOOST_ON_PRICE]: {
776
- strategyOrBundleId: Bundles.BaseIds.MORPHO_BLUE_EOA_BOOST_ON_PRICE,
777
- strategyId: Strategies.Identifiers.EoaBoostOnPrice,
778
- protocol: PROTOCOLS.MorphoBlue,
825
+ [Bundles.BaseIds.COMP_V3_EOA_LIQUIDATION_PROTECTION]: {
826
+ strategyOrBundleId: Bundles.BaseIds.COMP_V3_EOA_LIQUIDATION_PROTECTION,
827
+ strategyId: Strategies.Identifiers.EoaLiquidationProtection,
828
+ protocol: PROTOCOLS.CompoundV3,
779
829
  },
780
- [Bundles.BaseIds.MORPHO_BLUE_EOA_REPAY_ON_PRICE]: {
781
- strategyOrBundleId: Bundles.BaseIds.MORPHO_BLUE_EOA_REPAY_ON_PRICE,
782
- strategyId: Strategies.Identifiers.EoaRepayOnPrice,
830
+ [Bundles.BaseIds.MORPHO_BLUE_SW_LIQUIDATION_PROTECTION]: {
831
+ strategyOrBundleId: Bundles.BaseIds.MORPHO_BLUE_SW_LIQUIDATION_PROTECTION,
832
+ strategyId: Strategies.Identifiers.LiquidationProtection,
783
833
  protocol: PROTOCOLS.MorphoBlue,
784
834
  },
785
- [Bundles.BaseIds.MORPHO_BLUE_EOA_CLOSE]: {
786
- strategyOrBundleId: Bundles.BaseIds.MORPHO_BLUE_EOA_CLOSE,
787
- strategyId: Strategies.Identifiers.EoaCloseOnPrice,
788
- protocol: PROTOCOLS.MorphoBlue,
835
+ [Bundles.BaseIds.FLUID_T1_SW_LIQUIDATION_PROTECTION]: {
836
+ strategyOrBundleId: Bundles.BaseIds.FLUID_T1_SW_LIQUIDATION_PROTECTION,
837
+ strategyId: Strategies.Identifiers.LiquidationProtection,
838
+ protocol: PROTOCOLS.FluidT1,
839
+ },
840
+ [Bundles.BaseIds.AAVE_V3_EOA_LIQUIDATION_PROTECTION]: {
841
+ strategyOrBundleId: Bundles.BaseIds.AAVE_V3_EOA_LIQUIDATION_PROTECTION,
842
+ strategyId: Strategies.Identifiers.EoaLiquidationProtection,
843
+ protocol: PROTOCOLS.AaveV3,
789
844
  },
790
845
  };
791
846
  export const ARBITRUM_BUNDLES_INFO = {
@@ -939,19 +994,39 @@ export const ARBITRUM_BUNDLES_INFO = {
939
994
  strategyId: Strategies.Identifiers.RepayOnPrice,
940
995
  protocol: PROTOCOLS.MorphoBlue,
941
996
  },
942
- [Bundles.ArbitrumIds.MORPHO_BLUE_EOA_BOOST_ON_PRICE]: {
943
- strategyOrBundleId: Bundles.ArbitrumIds.MORPHO_BLUE_EOA_BOOST_ON_PRICE,
944
- strategyId: Strategies.Identifiers.EoaBoostOnPrice,
945
- protocol: PROTOCOLS.MorphoBlue,
997
+ [Bundles.ArbitrumIds.AAVE_V3_SW_LIQUIDATION_PROTECTION]: {
998
+ strategyOrBundleId: Bundles.ArbitrumIds.AAVE_V3_SW_LIQUIDATION_PROTECTION,
999
+ strategyId: Strategies.Identifiers.LiquidationProtection,
1000
+ protocol: PROTOCOLS.AaveV3,
946
1001
  },
947
- [Bundles.ArbitrumIds.MORPHO_BLUE_EOA_REPAY_ON_PRICE]: {
948
- strategyOrBundleId: Bundles.ArbitrumIds.MORPHO_BLUE_EOA_REPAY_ON_PRICE,
949
- strategyId: Strategies.Identifiers.EoaRepayOnPrice,
1002
+ [Bundles.ArbitrumIds.COMP_V3_SW_LIQUIDATION_PROTECTION]: {
1003
+ strategyOrBundleId: Bundles.ArbitrumIds.COMP_V3_SW_LIQUIDATION_PROTECTION,
1004
+ strategyId: Strategies.Identifiers.LiquidationProtection,
1005
+ protocol: PROTOCOLS.CompoundV3,
1006
+ },
1007
+ [Bundles.ArbitrumIds.COMP_V3_EOA_LIQUIDATION_PROTECTION]: {
1008
+ strategyOrBundleId: Bundles.ArbitrumIds.COMP_V3_EOA_LIQUIDATION_PROTECTION,
1009
+ strategyId: Strategies.Identifiers.EoaLiquidationProtection,
1010
+ protocol: PROTOCOLS.CompoundV3,
1011
+ },
1012
+ [Bundles.ArbitrumIds.MORPHO_BLUE_SW_LIQUIDATION_PROTECTION]: {
1013
+ strategyOrBundleId: Bundles.ArbitrumIds.MORPHO_BLUE_SW_LIQUIDATION_PROTECTION,
1014
+ strategyId: Strategies.Identifiers.LiquidationProtection,
950
1015
  protocol: PROTOCOLS.MorphoBlue,
951
1016
  },
952
- [Bundles.ArbitrumIds.MORPHO_BLUE_EOA_CLOSE]: {
953
- strategyOrBundleId: Bundles.ArbitrumIds.MORPHO_BLUE_EOA_CLOSE,
954
- strategyId: Strategies.Identifiers.EoaCloseOnPrice,
1017
+ [Bundles.ArbitrumIds.FLUID_T1_SW_LIQUIDATION_PROTECTION]: {
1018
+ strategyOrBundleId: Bundles.ArbitrumIds.FLUID_T1_SW_LIQUIDATION_PROTECTION,
1019
+ strategyId: Strategies.Identifiers.LiquidationProtection,
1020
+ protocol: PROTOCOLS.FluidT1,
1021
+ },
1022
+ [Bundles.ArbitrumIds.AAVE_V3_EOA_LIQUIDATION_PROTECTION]: {
1023
+ strategyOrBundleId: Bundles.ArbitrumIds.AAVE_V3_EOA_LIQUIDATION_PROTECTION,
1024
+ strategyId: Strategies.Identifiers.EoaLiquidationProtection,
1025
+ protocol: PROTOCOLS.AaveV3,
1026
+ },
1027
+ [Bundles.ArbitrumIds.MORPHO_BLUE_EOA_LIQUIDATION_PROTECTION]: {
1028
+ strategyOrBundleId: Bundles.ArbitrumIds.MORPHO_BLUE_EOA_LIQUIDATION_PROTECTION,
1029
+ strategyId: Strategies.Identifiers.EoaLiquidationProtection,
955
1030
  protocol: PROTOCOLS.MorphoBlue,
956
1031
  },
957
1032
  };
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;
@@ -850,6 +948,26 @@ function parseMorphoBlueLeverageManagement(position, parseData) {
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;
@@ -1002,6 +1120,25 @@ function parseFluidT1LeverageManagement(position, parseData) {
1002
1120
  _position.strategy.strategyId = Strategies.IdOverrides.LeverageManagement;
1003
1121
  return _position;
1004
1122
  }
1123
+ function parseFluidT1LiquidationProtection(position, parseData) {
1124
+ const _position = cloneDeep(position);
1125
+ const { subStruct, subId, subHash } = parseData.subscriptionEventData;
1126
+ const { isEnabled } = parseData.strategiesSubsData;
1127
+ const triggerData = triggerService.fluidRatioTrigger.decode(subStruct.triggerData);
1128
+ const subData = subDataService.fluidLiquidationProtectionSubData.decode(subStruct.subData);
1129
+ _position.strategyData.decoded.triggerData = triggerData;
1130
+ _position.strategyData.decoded.subData = subData;
1131
+ _position.positionId = getPositionId(_position.chainId, _position.protocol.id, _position.owner, triggerData.nftId, subData.vault);
1132
+ _position.specific = {
1133
+ triggerRepayRatio: triggerData.ratio,
1134
+ targetRepayRatio: subData.targetRatio,
1135
+ repayEnabled: isEnabled,
1136
+ subId1: Number(subId),
1137
+ subHashRepay: subHash,
1138
+ };
1139
+ _position.strategy.strategyId = Strategies.IdOverrides.LiquidationProtection;
1140
+ return _position;
1141
+ }
1005
1142
  const parsingMethodsMapping = {
1006
1143
  [ProtocolIdentifiers.StrategiesAutomation.MakerDAO]: {
1007
1144
  [Strategies.Identifiers.SavingsLiqProtection]: parseMakerSavingsLiqProtection,
@@ -1011,6 +1148,7 @@ const parsingMethodsMapping = {
1011
1148
  [Strategies.Identifiers.TrailingStopToDebt]: parseMakerTrailingStop,
1012
1149
  [Strategies.Identifiers.Repay]: parseMakerLeverageManagement,
1013
1150
  [Strategies.Identifiers.Boost]: parseMakerLeverageManagement,
1151
+ [Strategies.Identifiers.LiquidationProtection]: parseMakerLiquidationProtection,
1014
1152
  },
1015
1153
  [ProtocolIdentifiers.StrategiesAutomation.Liquity]: {
1016
1154
  [Strategies.Identifiers.CloseOnPriceToColl]: parseLiquityCloseOnPrice,
@@ -1049,6 +1187,8 @@ const parsingMethodsMapping = {
1049
1187
  [Strategies.Identifiers.EoaBoostOnPrice]: parseAaveV3LeverageManagementOnPrice,
1050
1188
  [Strategies.Identifiers.EoaCloseOnPrice]: parseAaveV3CloseOnPrice,
1051
1189
  [Strategies.Identifiers.CollateralSwitch]: parseAaveV3CollateralSwitch,
1190
+ [Strategies.Identifiers.LiquidationProtection]: parseAaveV3LiquidationProtection,
1191
+ [Strategies.Identifiers.EoaLiquidationProtection]: parseAaveV3LiquidationProtection,
1052
1192
  },
1053
1193
  [ProtocolIdentifiers.StrategiesAutomation.AaveV4]: {
1054
1194
  [Strategies.Identifiers.Repay]: parseAaveV4LeverageManagement,
@@ -1063,6 +1203,8 @@ const parsingMethodsMapping = {
1063
1203
  [Strategies.Identifiers.EoaCloseOnPrice]: parseAaveV4CloseOnPrice,
1064
1204
  [Strategies.Identifiers.CollateralSwitch]: parseAaveV4CollateralSwitch,
1065
1205
  [Strategies.Identifiers.EoaCollateralSwitch]: parseAaveV4CollateralSwitch,
1206
+ [Strategies.Identifiers.LiquidationProtection]: parseAaveV4LiquidationProtection,
1207
+ [Strategies.Identifiers.EoaLiquidationProtection]: parseAaveV4LiquidationProtection,
1066
1208
  },
1067
1209
  [ProtocolIdentifiers.StrategiesAutomation.CompoundV2]: {
1068
1210
  [Strategies.Identifiers.Repay]: parseCompoundV2LeverageManagement,
@@ -1079,6 +1221,8 @@ const parsingMethodsMapping = {
1079
1221
  [Strategies.Identifiers.EoaBoostOnPrice]: parseCompoundV3LeverageManagementOnPrice,
1080
1222
  [Strategies.Identifiers.CloseOnPrice]: parseCompoundV3CloseOnPrice,
1081
1223
  [Strategies.Identifiers.EoaCloseOnPrice]: parseCompoundV3CloseOnPrice,
1224
+ [Strategies.Identifiers.LiquidationProtection]: parseCompoundV3LiquidationProtection,
1225
+ [Strategies.Identifiers.EoaLiquidationProtection]: parseCompoundV3LiquidationProtection,
1082
1226
  },
1083
1227
  [ProtocolIdentifiers.StrategiesAutomation.ChickenBonds]: {
1084
1228
  [Strategies.Identifiers.Rebond]: parseChickenBondsRebond,
@@ -1098,6 +1242,7 @@ const parsingMethodsMapping = {
1098
1242
  [Strategies.Identifiers.BoostOnPrice]: parseSparkLeverageManagementOnPrice,
1099
1243
  [Strategies.Identifiers.CloseOnPrice]: parseSparkCloseOnPrice,
1100
1244
  [Strategies.Identifiers.CollateralSwitch]: parseSparkCollateralSwitch,
1245
+ [Strategies.Identifiers.LiquidationProtection]: parseSparkLiquidationProtection,
1101
1246
  },
1102
1247
  [ProtocolIdentifiers.StrategiesAutomation.CrvUSD]: {
1103
1248
  [Strategies.Identifiers.Repay]: parseCrvUSDLeverageManagement,
@@ -1111,14 +1256,14 @@ const parsingMethodsMapping = {
1111
1256
  [Strategies.Identifiers.EoaBoost]: parseMorphoBlueLeverageManagement,
1112
1257
  [Strategies.Identifiers.BoostOnPrice]: parseMorphoBlueLeverageManagementOnPrice,
1113
1258
  [Strategies.Identifiers.RepayOnPrice]: parseMorphoBlueLeverageManagementOnPrice,
1114
- [Strategies.Identifiers.EoaBoostOnPrice]: parseMorphoBlueLeverageManagementOnPrice,
1115
- [Strategies.Identifiers.EoaRepayOnPrice]: parseMorphoBlueLeverageManagementOnPrice,
1116
1259
  [Strategies.Identifiers.CloseOnPrice]: parseMorphoBlueCloseOnPrice,
1117
- [Strategies.Identifiers.EoaCloseOnPrice]: parseMorphoBlueCloseOnPrice,
1260
+ [Strategies.Identifiers.LiquidationProtection]: parseMorphoBlueLiquidationProtection,
1261
+ [Strategies.Identifiers.EoaLiquidationProtection]: parseMorphoBlueLiquidationProtection,
1118
1262
  },
1119
1263
  [ProtocolIdentifiers.StrategiesAutomation.FluidT1]: {
1120
1264
  [Strategies.Identifiers.Repay]: parseFluidT1LeverageManagement,
1121
1265
  [Strategies.Identifiers.Boost]: parseFluidT1LeverageManagement,
1266
+ [Strategies.Identifiers.LiquidationProtection]: parseFluidT1LiquidationProtection,
1122
1267
  },
1123
1268
  };
1124
1269
  function getParsingMethod(id, strategy) {