@defisaver/automation-sdk 3.3.14 → 3.3.15-liq-prot-1-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 (41) hide show
  1. package/cjs/constants/index.js +130 -0
  2. package/cjs/index.d.ts +4 -3
  3. package/cjs/index.js +6 -2
  4. package/cjs/services/strategiesService.js +178 -17
  5. package/cjs/services/strategySubService.d.ts +14 -13
  6. package/cjs/services/strategySubService.js +79 -63
  7. package/cjs/services/strategySubService.test.js +0 -234
  8. package/cjs/services/subDataService.d.ts +92 -4
  9. package/cjs/services/subDataService.js +245 -35
  10. package/cjs/services/subDataService.test.js +0 -110
  11. package/cjs/services/utils.d.ts +3 -1
  12. package/cjs/services/utils.js +34 -1
  13. package/cjs/services/utils.test.js +25 -0
  14. package/cjs/types/enums.d.ts +36 -6
  15. package/cjs/types/enums.js +30 -0
  16. package/esm/constants/index.js +130 -0
  17. package/esm/index.d.ts +4 -3
  18. package/esm/index.js +7 -3
  19. package/esm/services/strategiesService.js +178 -17
  20. package/esm/services/strategySubService.d.ts +14 -13
  21. package/esm/services/strategySubService.js +79 -60
  22. package/esm/services/strategySubService.test.js +2 -236
  23. package/esm/services/subDataService.d.ts +92 -4
  24. package/esm/services/subDataService.js +243 -34
  25. package/esm/services/subDataService.test.js +0 -110
  26. package/esm/services/utils.d.ts +3 -1
  27. package/esm/services/utils.js +32 -1
  28. package/esm/services/utils.test.js +27 -2
  29. package/esm/types/enums.d.ts +36 -6
  30. package/esm/types/enums.js +30 -0
  31. package/package.json +1 -1
  32. package/src/constants/index.ts +132 -1
  33. package/src/index.ts +24 -6
  34. package/src/services/strategiesService.ts +242 -17
  35. package/src/services/strategySubService.test.ts +0 -279
  36. package/src/services/strategySubService.ts +209 -116
  37. package/src/services/subDataService.test.ts +0 -120
  38. package/src/services/subDataService.ts +335 -49
  39. package/src/services/utils.test.ts +32 -1
  40. package/src/services/utils.ts +32 -1
  41. package/src/types/enums.ts +30 -2
@@ -549,6 +549,61 @@ exports.MAINNET_BUNDLES_INFO = {
549
549
  strategyId: enums_1.Strategies.Identifiers.EoaCloseOnPrice,
550
550
  protocol: exports.PROTOCOLS.AaveV4,
551
551
  },
552
+ [enums_1.Bundles.MainnetIds.MAKER_SW_LIQUIDATION_PROTECTION]: {
553
+ strategyOrBundleId: enums_1.Bundles.MainnetIds.MAKER_SW_LIQUIDATION_PROTECTION,
554
+ strategyId: enums_1.Strategies.Identifiers.LiquidationProtection,
555
+ protocol: exports.PROTOCOLS.MakerDAO,
556
+ },
557
+ [enums_1.Bundles.MainnetIds.AAVE_V3_SW_LIQUIDATION_PROTECTION]: {
558
+ strategyOrBundleId: enums_1.Bundles.MainnetIds.AAVE_V3_SW_LIQUIDATION_PROTECTION,
559
+ strategyId: enums_1.Strategies.Identifiers.LiquidationProtection,
560
+ protocol: exports.PROTOCOLS.AaveV3,
561
+ },
562
+ [enums_1.Bundles.MainnetIds.AAVE_V4_SW_LIQUIDATION_PROTECTION]: {
563
+ strategyOrBundleId: enums_1.Bundles.MainnetIds.AAVE_V4_SW_LIQUIDATION_PROTECTION,
564
+ strategyId: enums_1.Strategies.Identifiers.LiquidationProtection,
565
+ protocol: exports.PROTOCOLS.AaveV4,
566
+ },
567
+ [enums_1.Bundles.MainnetIds.SPARK_SW_LIQUIDATION_PROTECTION]: {
568
+ strategyOrBundleId: enums_1.Bundles.MainnetIds.SPARK_SW_LIQUIDATION_PROTECTION,
569
+ strategyId: enums_1.Strategies.Identifiers.LiquidationProtection,
570
+ protocol: exports.PROTOCOLS.Spark,
571
+ },
572
+ [enums_1.Bundles.MainnetIds.COMP_V3_SW_LIQUIDATION_PROTECTION]: {
573
+ strategyOrBundleId: enums_1.Bundles.MainnetIds.COMP_V3_SW_LIQUIDATION_PROTECTION,
574
+ strategyId: enums_1.Strategies.Identifiers.LiquidationProtection,
575
+ protocol: exports.PROTOCOLS.CompoundV3,
576
+ },
577
+ [enums_1.Bundles.MainnetIds.COMP_V3_EOA_LIQUIDATION_PROTECTION]: {
578
+ strategyOrBundleId: enums_1.Bundles.MainnetIds.COMP_V3_EOA_LIQUIDATION_PROTECTION,
579
+ strategyId: enums_1.Strategies.Identifiers.EoaLiquidationProtection,
580
+ protocol: exports.PROTOCOLS.CompoundV3,
581
+ },
582
+ [enums_1.Bundles.MainnetIds.MORPHO_BLUE_SW_LIQUIDATION_PROTECTION]: {
583
+ strategyOrBundleId: enums_1.Bundles.MainnetIds.MORPHO_BLUE_SW_LIQUIDATION_PROTECTION,
584
+ strategyId: enums_1.Strategies.Identifiers.LiquidationProtection,
585
+ protocol: exports.PROTOCOLS.MorphoBlue,
586
+ },
587
+ [enums_1.Bundles.MainnetIds.FLUID_T1_SW_LIQUIDATION_PROTECTION]: {
588
+ strategyOrBundleId: enums_1.Bundles.MainnetIds.FLUID_T1_SW_LIQUIDATION_PROTECTION,
589
+ strategyId: enums_1.Strategies.Identifiers.LiquidationProtection,
590
+ protocol: exports.PROTOCOLS.FluidT1,
591
+ },
592
+ [enums_1.Bundles.MainnetIds.AAVE_V3_EOA_LIQUIDATION_PROTECTION]: {
593
+ strategyOrBundleId: enums_1.Bundles.MainnetIds.AAVE_V3_EOA_LIQUIDATION_PROTECTION,
594
+ strategyId: enums_1.Strategies.Identifiers.EoaLiquidationProtection,
595
+ protocol: exports.PROTOCOLS.AaveV3,
596
+ },
597
+ [enums_1.Bundles.MainnetIds.AAVE_V4_EOA_LIQUIDATION_PROTECTION]: {
598
+ strategyOrBundleId: enums_1.Bundles.MainnetIds.AAVE_V4_EOA_LIQUIDATION_PROTECTION,
599
+ strategyId: enums_1.Strategies.Identifiers.EoaLiquidationProtection,
600
+ protocol: exports.PROTOCOLS.AaveV4,
601
+ },
602
+ [enums_1.Bundles.MainnetIds.MORPHO_BLUE_EOA_LIQUIDATION_PROTECTION]: {
603
+ strategyOrBundleId: enums_1.Bundles.MainnetIds.MORPHO_BLUE_EOA_LIQUIDATION_PROTECTION,
604
+ strategyId: enums_1.Strategies.Identifiers.EoaLiquidationProtection,
605
+ protocol: exports.PROTOCOLS.MorphoBlue,
606
+ },
552
607
  };
553
608
  exports.OPTIMISM_BUNDLES_INFO = {
554
609
  [enums_1.Bundles.OptimismIds.AAVE_V3_REPAY]: {
@@ -606,6 +661,16 @@ exports.OPTIMISM_BUNDLES_INFO = {
606
661
  strategyId: enums_1.Strategies.Identifiers.EoaCloseOnPrice,
607
662
  protocol: exports.PROTOCOLS.AaveV3,
608
663
  },
664
+ [enums_1.Bundles.OptimismIds.AAVE_V3_SW_LIQUIDATION_PROTECTION]: {
665
+ strategyOrBundleId: enums_1.Bundles.OptimismIds.AAVE_V3_SW_LIQUIDATION_PROTECTION,
666
+ strategyId: enums_1.Strategies.Identifiers.LiquidationProtection,
667
+ protocol: exports.PROTOCOLS.AaveV3,
668
+ },
669
+ [enums_1.Bundles.OptimismIds.AAVE_V3_EOA_LIQUIDATION_PROTECTION]: {
670
+ strategyOrBundleId: enums_1.Bundles.OptimismIds.AAVE_V3_EOA_LIQUIDATION_PROTECTION,
671
+ strategyId: enums_1.Strategies.Identifiers.EoaLiquidationProtection,
672
+ protocol: exports.PROTOCOLS.AaveV3,
673
+ },
609
674
  };
610
675
  exports.BASE_BUNDLES_INFO = {
611
676
  [enums_1.Bundles.BaseIds.AAVE_V3_REPAY]: {
@@ -743,6 +808,36 @@ exports.BASE_BUNDLES_INFO = {
743
808
  strategyId: enums_1.Strategies.Identifiers.CloseOnPrice,
744
809
  protocol: exports.PROTOCOLS.MorphoBlue,
745
810
  },
811
+ [enums_1.Bundles.BaseIds.AAVE_V3_SW_LIQUIDATION_PROTECTION]: {
812
+ strategyOrBundleId: enums_1.Bundles.BaseIds.AAVE_V3_SW_LIQUIDATION_PROTECTION,
813
+ strategyId: enums_1.Strategies.Identifiers.LiquidationProtection,
814
+ protocol: exports.PROTOCOLS.AaveV3,
815
+ },
816
+ [enums_1.Bundles.BaseIds.COMP_V3_SW_LIQUIDATION_PROTECTION]: {
817
+ strategyOrBundleId: enums_1.Bundles.BaseIds.COMP_V3_SW_LIQUIDATION_PROTECTION,
818
+ strategyId: enums_1.Strategies.Identifiers.LiquidationProtection,
819
+ protocol: exports.PROTOCOLS.CompoundV3,
820
+ },
821
+ [enums_1.Bundles.BaseIds.COMP_V3_EOA_LIQUIDATION_PROTECTION]: {
822
+ strategyOrBundleId: enums_1.Bundles.BaseIds.COMP_V3_EOA_LIQUIDATION_PROTECTION,
823
+ strategyId: enums_1.Strategies.Identifiers.EoaLiquidationProtection,
824
+ protocol: exports.PROTOCOLS.CompoundV3,
825
+ },
826
+ [enums_1.Bundles.BaseIds.MORPHO_BLUE_SW_LIQUIDATION_PROTECTION]: {
827
+ strategyOrBundleId: enums_1.Bundles.BaseIds.MORPHO_BLUE_SW_LIQUIDATION_PROTECTION,
828
+ strategyId: enums_1.Strategies.Identifiers.LiquidationProtection,
829
+ protocol: exports.PROTOCOLS.MorphoBlue,
830
+ },
831
+ [enums_1.Bundles.BaseIds.FLUID_T1_SW_LIQUIDATION_PROTECTION]: {
832
+ strategyOrBundleId: enums_1.Bundles.BaseIds.FLUID_T1_SW_LIQUIDATION_PROTECTION,
833
+ strategyId: enums_1.Strategies.Identifiers.LiquidationProtection,
834
+ protocol: exports.PROTOCOLS.FluidT1,
835
+ },
836
+ [enums_1.Bundles.BaseIds.AAVE_V3_EOA_LIQUIDATION_PROTECTION]: {
837
+ strategyOrBundleId: enums_1.Bundles.BaseIds.AAVE_V3_EOA_LIQUIDATION_PROTECTION,
838
+ strategyId: enums_1.Strategies.Identifiers.EoaLiquidationProtection,
839
+ protocol: exports.PROTOCOLS.AaveV3,
840
+ },
746
841
  };
747
842
  exports.ARBITRUM_BUNDLES_INFO = {
748
843
  [enums_1.Bundles.ArbitrumIds.AAVE_V3_REPAY]: {
@@ -890,6 +985,41 @@ exports.ARBITRUM_BUNDLES_INFO = {
890
985
  strategyId: enums_1.Strategies.Identifiers.CloseOnPrice,
891
986
  protocol: exports.PROTOCOLS.MorphoBlue,
892
987
  },
988
+ [enums_1.Bundles.ArbitrumIds.AAVE_V3_SW_LIQUIDATION_PROTECTION]: {
989
+ strategyOrBundleId: enums_1.Bundles.ArbitrumIds.AAVE_V3_SW_LIQUIDATION_PROTECTION,
990
+ strategyId: enums_1.Strategies.Identifiers.LiquidationProtection,
991
+ protocol: exports.PROTOCOLS.AaveV3,
992
+ },
993
+ [enums_1.Bundles.ArbitrumIds.COMP_V3_SW_LIQUIDATION_PROTECTION]: {
994
+ strategyOrBundleId: enums_1.Bundles.ArbitrumIds.COMP_V3_SW_LIQUIDATION_PROTECTION,
995
+ strategyId: enums_1.Strategies.Identifiers.LiquidationProtection,
996
+ protocol: exports.PROTOCOLS.CompoundV3,
997
+ },
998
+ [enums_1.Bundles.ArbitrumIds.COMP_V3_EOA_LIQUIDATION_PROTECTION]: {
999
+ strategyOrBundleId: enums_1.Bundles.ArbitrumIds.COMP_V3_EOA_LIQUIDATION_PROTECTION,
1000
+ strategyId: enums_1.Strategies.Identifiers.EoaLiquidationProtection,
1001
+ protocol: exports.PROTOCOLS.CompoundV3,
1002
+ },
1003
+ [enums_1.Bundles.ArbitrumIds.MORPHO_BLUE_SW_LIQUIDATION_PROTECTION]: {
1004
+ strategyOrBundleId: enums_1.Bundles.ArbitrumIds.MORPHO_BLUE_SW_LIQUIDATION_PROTECTION,
1005
+ strategyId: enums_1.Strategies.Identifiers.LiquidationProtection,
1006
+ protocol: exports.PROTOCOLS.MorphoBlue,
1007
+ },
1008
+ [enums_1.Bundles.ArbitrumIds.FLUID_T1_SW_LIQUIDATION_PROTECTION]: {
1009
+ strategyOrBundleId: enums_1.Bundles.ArbitrumIds.FLUID_T1_SW_LIQUIDATION_PROTECTION,
1010
+ strategyId: enums_1.Strategies.Identifiers.LiquidationProtection,
1011
+ protocol: exports.PROTOCOLS.FluidT1,
1012
+ },
1013
+ [enums_1.Bundles.ArbitrumIds.AAVE_V3_EOA_LIQUIDATION_PROTECTION]: {
1014
+ strategyOrBundleId: enums_1.Bundles.ArbitrumIds.AAVE_V3_EOA_LIQUIDATION_PROTECTION,
1015
+ strategyId: enums_1.Strategies.Identifiers.EoaLiquidationProtection,
1016
+ protocol: exports.PROTOCOLS.AaveV3,
1017
+ },
1018
+ [enums_1.Bundles.ArbitrumIds.MORPHO_BLUE_EOA_LIQUIDATION_PROTECTION]: {
1019
+ strategyOrBundleId: enums_1.Bundles.ArbitrumIds.MORPHO_BLUE_EOA_LIQUIDATION_PROTECTION,
1020
+ strategyId: enums_1.Strategies.Identifiers.EoaLiquidationProtection,
1021
+ protocol: exports.PROTOCOLS.MorphoBlue,
1022
+ },
893
1023
  };
894
1024
  exports.BUNDLES_INFO = {
895
1025
  [enums_1.ChainId.Ethereum]: exports.MAINNET_BUNDLES_INFO,
package/cjs/index.d.ts CHANGED
@@ -13,12 +13,13 @@ import * as strategiesService from './services/strategiesService';
13
13
  import * as constants from './constants';
14
14
  import * as enums from './types/enums';
15
15
  import type * as types from './types';
16
- import { getRatioStateInfoForAaveCloseStrategy, compareSubHashes, encodeSubId, getCloseStrategyType } from './services/utils';
16
+ import { getRatioStateInfoForAaveCloseStrategy, compareSubHashes, encodeSubId, getCloseStrategyType, getCompoundV3LeverageManagementBundleId } from './services/utils';
17
17
  declare const utils: {
18
- getRatioStateInfoForAaveCloseStrategy: typeof getRatioStateInfoForAaveCloseStrategy;
19
18
  compareSubHashes: typeof compareSubHashes;
20
19
  encodeSubId: typeof encodeSubId;
21
20
  getCloseStrategyType: typeof getCloseStrategyType;
21
+ getCompoundV3LeverageManagementBundleId: typeof getCompoundV3LeverageManagementBundleId;
22
+ getRatioStateInfoForAaveCloseStrategy: typeof getRatioStateInfoForAaveCloseStrategy;
22
23
  };
23
- export { LegacyMakerAutomation, LegacyAaveAutomation, LegacyCompoundAutomation, EthereumStrategies, OptimismStrategies, ArbitrumStrategies, BaseStrategies, triggerService, subDataService, strategySubService, utils, enums, constants, strategiesService, };
24
+ export { ArbitrumStrategies, BaseStrategies, EthereumStrategies, LegacyAaveAutomation, LegacyCompoundAutomation, LegacyMakerAutomation, OptimismStrategies, constants, enums, strategiesService, strategySubService, subDataService, triggerService, utils, };
24
25
  export type { types };
package/cjs/index.js CHANGED
@@ -30,7 +30,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
30
30
  return (mod && mod.__esModule) ? mod : { "default": mod };
31
31
  };
32
32
  Object.defineProperty(exports, "__esModule", { value: true });
33
- exports.strategiesService = exports.constants = exports.enums = exports.utils = exports.strategySubService = exports.subDataService = exports.triggerService = exports.BaseStrategies = exports.ArbitrumStrategies = exports.OptimismStrategies = exports.EthereumStrategies = exports.LegacyCompoundAutomation = exports.LegacyAaveAutomation = exports.LegacyMakerAutomation = void 0;
33
+ exports.utils = exports.triggerService = exports.subDataService = exports.strategySubService = exports.strategiesService = exports.enums = exports.constants = exports.OptimismStrategies = exports.LegacyMakerAutomation = exports.LegacyCompoundAutomation = exports.LegacyAaveAutomation = exports.EthereumStrategies = exports.BaseStrategies = exports.ArbitrumStrategies = void 0;
34
34
  require("./configuration");
35
35
  const LegacyMakerAutomation_1 = __importDefault(require("./automation/public/legacy/LegacyMakerAutomation"));
36
36
  exports.LegacyMakerAutomation = LegacyMakerAutomation_1.default;
@@ -60,6 +60,10 @@ const enums = __importStar(require("./types/enums"));
60
60
  exports.enums = enums;
61
61
  const utils_1 = require("./services/utils");
62
62
  const utils = {
63
- getRatioStateInfoForAaveCloseStrategy: utils_1.getRatioStateInfoForAaveCloseStrategy, compareSubHashes: utils_1.compareSubHashes, encodeSubId: utils_1.encodeSubId, getCloseStrategyType: utils_1.getCloseStrategyType,
63
+ compareSubHashes: utils_1.compareSubHashes,
64
+ encodeSubId: utils_1.encodeSubId,
65
+ getCloseStrategyType: utils_1.getCloseStrategyType,
66
+ getCompoundV3LeverageManagementBundleId: utils_1.getCompoundV3LeverageManagementBundleId,
67
+ getRatioStateInfoForAaveCloseStrategy: utils_1.getRatioStateInfoForAaveCloseStrategy,
64
68
  };
65
69
  exports.utils = utils;
@@ -92,7 +92,7 @@ function parseMakerTrailingStop(position, parseData) {
92
92
  }
93
93
  function parseMakerLeverageManagement(position, parseData) {
94
94
  const _position = (0, lodash_1.cloneDeep)(position);
95
- const { subStruct, subId } = parseData.subscriptionEventData;
95
+ const { subStruct, subId, subHash } = parseData.subscriptionEventData;
96
96
  const { isEnabled } = parseData.strategiesSubsData;
97
97
  const triggerData = triggerService.makerRatioTrigger.decode(subStruct.triggerData);
98
98
  const subData = subDataService.makerLeverageManagementSubData.decode(subStruct.subData);
@@ -104,9 +104,10 @@ function parseMakerLeverageManagement(position, parseData) {
104
104
  _position.specific = {
105
105
  triggerRepayRatio: triggerData.ratio,
106
106
  targetRepayRatio: subData.targetRatio,
107
- repayEnabled: true,
107
+ repayEnabled: isEnabled,
108
108
  subId1: Number(subId),
109
109
  mergeWithId: enums_1.Strategies.Identifiers.Boost,
110
+ subHashRepay: subHash,
110
111
  };
111
112
  }
112
113
  else {
@@ -116,11 +117,30 @@ function parseMakerLeverageManagement(position, parseData) {
116
117
  boostEnabled: isEnabled,
117
118
  subId2: Number(subId),
118
119
  mergeId: enums_1.Strategies.Identifiers.Boost,
120
+ subHashBoost: subHash,
119
121
  };
120
122
  }
121
123
  _position.strategy.strategyId = enums_1.Strategies.IdOverrides.LeverageManagement;
122
124
  return _position;
123
125
  }
126
+ function parseMakerLiquidationProtection(position, parseData) {
127
+ const _position = (0, lodash_1.cloneDeep)(position);
128
+ const { subStruct, subId } = parseData.subscriptionEventData;
129
+ const { isEnabled } = parseData.strategiesSubsData;
130
+ const triggerData = triggerService.makerRatioTrigger.decode(subStruct.triggerData);
131
+ const subData = subDataService.makerLiquidationProtectionSubData.decode(subStruct.subData);
132
+ _position.strategyData.decoded.triggerData = triggerData;
133
+ _position.strategyData.decoded.subData = subData;
134
+ _position.positionId = (0, utils_1.getPositionId)(_position.chainId, _position.protocol.id, subData.vaultId);
135
+ _position.specific = {
136
+ triggerRepayRatio: triggerData.ratio,
137
+ targetRepayRatio: subData.targetRatio,
138
+ repayEnabled: isEnabled,
139
+ subId1: Number(subId),
140
+ };
141
+ _position.strategy.strategyId = enums_1.Strategies.IdOverrides.LiquidationProtection;
142
+ return _position;
143
+ }
124
144
  function parseLiquityCloseOnPrice(position, parseData) {
125
145
  const _position = (0, lodash_1.cloneDeep)(position);
126
146
  const { subStruct } = parseData.subscriptionEventData;
@@ -155,7 +175,7 @@ function parseLiquityTrailingStop(position, parseData) {
155
175
  }
156
176
  function parseAaveV2LeverageManagement(position, parseData) {
157
177
  const _position = (0, lodash_1.cloneDeep)(position);
158
- const { subStruct, subId } = parseData.subscriptionEventData;
178
+ const { subStruct, subId, subHash } = parseData.subscriptionEventData;
159
179
  const { isEnabled } = parseData.strategiesSubsData;
160
180
  const triggerData = triggerService.aaveV2RatioTrigger.decode(subStruct.triggerData);
161
181
  const subData = subDataService.aaveV2LeverageManagementSubData.decode(subStruct.subData);
@@ -167,9 +187,10 @@ function parseAaveV2LeverageManagement(position, parseData) {
167
187
  _position.specific = {
168
188
  triggerRepayRatio: triggerData.ratio,
169
189
  targetRepayRatio: subData.targetRatio,
170
- repayEnabled: true,
190
+ repayEnabled: isEnabled,
171
191
  subId1: Number(subId),
172
192
  mergeWithId: enums_1.Strategies.Identifiers.Boost,
193
+ subHashRepay: subHash,
173
194
  };
174
195
  }
175
196
  else {
@@ -179,6 +200,7 @@ function parseAaveV2LeverageManagement(position, parseData) {
179
200
  boostEnabled: isEnabled,
180
201
  subId2: Number(subId),
181
202
  mergeId: enums_1.Strategies.Identifiers.Boost,
203
+ subHashBoost: subHash,
182
204
  };
183
205
  }
184
206
  _position.strategy.strategyId = enums_1.Strategies.IdOverrides.LeverageManagement;
@@ -229,6 +251,26 @@ function parseAaveV3LeverageManagement(position, parseData) {
229
251
  }
230
252
  return _position;
231
253
  }
254
+ function parseAaveV3LiquidationProtection(position, parseData) {
255
+ const _position = (0, lodash_1.cloneDeep)(position);
256
+ const { subStruct, subId, subHash } = parseData.subscriptionEventData;
257
+ const { isEnabled } = parseData.strategiesSubsData;
258
+ const triggerData = triggerService.aaveV3RatioTrigger.decode(subStruct.triggerData);
259
+ const subData = subDataService.aaveV3LiquidationProtectionSubData.decode(subStruct.subData);
260
+ _position.strategyData.decoded.triggerData = triggerData;
261
+ _position.strategyData.decoded.subData = subData;
262
+ _position.positionId = (0, utils_1.getPositionId)(_position.chainId, _position.protocol.id, _position.owner, triggerData.market);
263
+ _position.specific = {
264
+ triggerRepayRatio: triggerData.ratio,
265
+ targetRepayRatio: subData.targetRatio,
266
+ repayEnabled: isEnabled,
267
+ subId1: Number(subId),
268
+ subHashRepay: subHash,
269
+ };
270
+ const isEOA = _position.strategy.strategyId.includes('eoa');
271
+ _position.strategy.strategyId = isEOA ? enums_1.Strategies.IdOverrides.EoaLiquidationProtection : enums_1.Strategies.IdOverrides.LiquidationProtection;
272
+ return _position;
273
+ }
232
274
  function parseAaveV3LeverageManagementOnPrice(position, parseData) {
233
275
  const _position = (0, lodash_1.cloneDeep)(position);
234
276
  const { subStruct } = parseData.subscriptionEventData;
@@ -358,6 +400,26 @@ function parseAaveV4LeverageManagement(position, parseData) {
358
400
  }
359
401
  return _position;
360
402
  }
403
+ function parseAaveV4LiquidationProtection(position, parseData) {
404
+ const _position = (0, lodash_1.cloneDeep)(position);
405
+ const { subStruct, subId, subHash } = parseData.subscriptionEventData;
406
+ const { isEnabled } = parseData.strategiesSubsData;
407
+ const triggerData = triggerService.aaveV4RatioTrigger.decode(subStruct.triggerData);
408
+ const subData = subDataService.aaveV4LiquidationProtectionSubData.decode(subStruct.subData);
409
+ const isEOA = _position.strategy.strategyId.includes('eoa');
410
+ _position.strategyData.decoded.triggerData = triggerData;
411
+ _position.strategyData.decoded.subData = subData;
412
+ _position.positionId = (0, utils_1.getPositionId)(_position.chainId, _position.protocol.id, _position.owner, triggerData.spoke);
413
+ _position.strategy.strategyId = isEOA ? enums_1.Strategies.IdOverrides.EoaLiquidationProtection : enums_1.Strategies.IdOverrides.LiquidationProtection;
414
+ _position.specific = {
415
+ triggerRepayRatio: triggerData.ratio,
416
+ targetRepayRatio: subData.targetRatio,
417
+ repayEnabled: isEnabled,
418
+ subId1: Number(subId),
419
+ subHashRepay: subHash,
420
+ };
421
+ return _position;
422
+ }
361
423
  function parseAaveV4LeverageManagementOnPrice(position, parseData) {
362
424
  const _position = (0, lodash_1.cloneDeep)(position);
363
425
  const { subStruct } = parseData.subscriptionEventData;
@@ -416,7 +478,7 @@ function parseAaveV4CollateralSwitch(position, parseData) {
416
478
  }
417
479
  function parseMorphoAaveV2LeverageManagement(position, parseData) {
418
480
  const _position = (0, lodash_1.cloneDeep)(position);
419
- const { subStruct, subId } = parseData.subscriptionEventData;
481
+ const { subStruct, subId, subHash } = parseData.subscriptionEventData;
420
482
  const { isEnabled } = parseData.strategiesSubsData;
421
483
  const triggerData = triggerService.morphoAaveV2RatioTrigger.decode(subStruct.triggerData);
422
484
  const subData = subDataService.morphoAaveV2LeverageManagementSubData.decode(subStruct.subData);
@@ -428,9 +490,10 @@ function parseMorphoAaveV2LeverageManagement(position, parseData) {
428
490
  _position.specific = {
429
491
  triggerRepayRatio: triggerData.ratio,
430
492
  targetRepayRatio: subData.targetRatio,
431
- repayEnabled: true,
493
+ repayEnabled: isEnabled,
432
494
  subId1: Number(subId),
433
495
  mergeWithId: enums_1.Strategies.Identifiers.Boost,
496
+ subHashRepay: subHash,
434
497
  };
435
498
  }
436
499
  else {
@@ -440,6 +503,7 @@ function parseMorphoAaveV2LeverageManagement(position, parseData) {
440
503
  boostEnabled: isEnabled,
441
504
  subId2: Number(subId),
442
505
  mergeId: enums_1.Strategies.Identifiers.Boost,
506
+ subHashBoost: subHash,
443
507
  };
444
508
  }
445
509
  _position.strategy.strategyId = enums_1.Strategies.IdOverrides.LeverageManagement;
@@ -472,7 +536,7 @@ function parseAaveV3CloseOnPriceWithMaximumGasPrice(position, parseData) {
472
536
  }
473
537
  function parseCompoundV2LeverageManagement(position, parseData) {
474
538
  const _position = (0, lodash_1.cloneDeep)(position);
475
- const { subStruct, subId } = parseData.subscriptionEventData;
539
+ const { subStruct, subId, subHash } = parseData.subscriptionEventData;
476
540
  const { isEnabled } = parseData.strategiesSubsData;
477
541
  const triggerData = triggerService.compoundV2RatioTrigger.decode(subStruct.triggerData);
478
542
  const subData = subDataService.compoundV2LeverageManagementSubData.decode(subStruct.subData);
@@ -485,9 +549,10 @@ function parseCompoundV2LeverageManagement(position, parseData) {
485
549
  _position.specific = {
486
550
  triggerRepayRatio: triggerData.ratio,
487
551
  targetRepayRatio: subData.targetRatio,
488
- repayEnabled: true,
552
+ repayEnabled: isEnabled,
489
553
  subId1: Number(subId),
490
554
  mergeWithId: enums_1.Strategies.Identifiers.Boost,
555
+ subHashRepay: subHash,
491
556
  };
492
557
  }
493
558
  else {
@@ -497,6 +562,7 @@ function parseCompoundV2LeverageManagement(position, parseData) {
497
562
  boostEnabled: isEnabled,
498
563
  subId2: Number(subId),
499
564
  mergeId: enums_1.Strategies.Identifiers.Boost,
565
+ subHashBoost: subHash,
500
566
  };
501
567
  }
502
568
  const isEOA = _position.strategy.strategyId.includes('eoa');
@@ -505,11 +571,9 @@ function parseCompoundV2LeverageManagement(position, parseData) {
505
571
  }
506
572
  function parseCompoundV3LeverageManagement(position, parseData) {
507
573
  const _position = (0, lodash_1.cloneDeep)(position);
508
- const { subStruct, subId } = parseData.subscriptionEventData;
574
+ const { subStruct, subId, subHash } = parseData.subscriptionEventData;
509
575
  const { isEnabled } = parseData.strategiesSubsData;
510
- const subDataDecoder = position.chainId !== 1
511
- ? subDataService.compoundV3L2LeverageManagementSubData
512
- : subDataService.compoundV3LeverageManagementSubData;
576
+ const subDataDecoder = subDataService.compoundV3LeverageManagementSubDataWithoutSubProxy;
513
577
  const triggerData = triggerService.compoundV3RatioTrigger.decode(subStruct.triggerData);
514
578
  const subData = subDataDecoder.decode(subStruct.subData);
515
579
  _position.strategyData.decoded.triggerData = triggerData;
@@ -521,9 +585,10 @@ function parseCompoundV3LeverageManagement(position, parseData) {
521
585
  _position.specific = {
522
586
  triggerRepayRatio: triggerData.ratio,
523
587
  targetRepayRatio: subData.targetRatio,
524
- repayEnabled: true,
588
+ repayEnabled: isEnabled,
525
589
  subId1: Number(subId),
526
590
  mergeWithId: isEOA ? enums_1.Strategies.Identifiers.EoaBoost : enums_1.Strategies.Identifiers.Boost,
591
+ subHashRepay: subHash,
527
592
  };
528
593
  }
529
594
  else {
@@ -533,11 +598,33 @@ function parseCompoundV3LeverageManagement(position, parseData) {
533
598
  boostEnabled: isEnabled,
534
599
  subId2: Number(subId),
535
600
  mergeId: isEOA ? enums_1.Strategies.Identifiers.EoaBoost : enums_1.Strategies.Identifiers.Boost,
601
+ subHashBoost: subHash,
536
602
  };
537
603
  }
538
604
  _position.strategy.strategyId = isEOA ? enums_1.Strategies.IdOverrides.EoaLeverageManagement : enums_1.Strategies.IdOverrides.LeverageManagement;
539
605
  return _position;
540
606
  }
607
+ function parseCompoundV3LiquidationProtection(position, parseData) {
608
+ const _position = (0, lodash_1.cloneDeep)(position);
609
+ const { subStruct, subId, subHash } = parseData.subscriptionEventData;
610
+ const { isEnabled } = parseData.strategiesSubsData;
611
+ const subDataDecoder = subDataService.compoundV3LiquidationProtectionSubDataWithoutSubProxy;
612
+ const triggerData = triggerService.compoundV3RatioTrigger.decode(subStruct.triggerData);
613
+ const subData = subDataDecoder.decode(subStruct.subData);
614
+ _position.strategyData.decoded.triggerData = triggerData;
615
+ _position.strategyData.decoded.subData = subData;
616
+ _position.positionId = (0, utils_1.getPositionId)(_position.chainId, _position.protocol.id, triggerData.owner.toLowerCase(), triggerData.market);
617
+ const isEOA = _position.strategy.strategyId.includes('eoa');
618
+ _position.specific = {
619
+ triggerRepayRatio: triggerData.ratio,
620
+ targetRepayRatio: subData.targetRatio,
621
+ repayEnabled: isEnabled,
622
+ subId1: Number(subId),
623
+ subHashRepay: subHash,
624
+ };
625
+ _position.strategy.strategyId = isEOA ? enums_1.Strategies.IdOverrides.EoaLiquidationProtection : enums_1.Strategies.IdOverrides.LiquidationProtection;
626
+ return _position;
627
+ }
541
628
  function parseCompoundV3LeverageManagementOnPrice(position, parseData) {
542
629
  const _position = (0, lodash_1.cloneDeep)(position);
543
630
  const { subStruct } = parseData.subscriptionEventData;
@@ -620,7 +707,7 @@ function parseExchangeLimitOrder(position, parseData, chainId) {
620
707
  }
621
708
  function parseLiquityLeverageManagement(position, parseData) {
622
709
  const _position = (0, lodash_1.cloneDeep)(position);
623
- const { subStruct, subId } = parseData.subscriptionEventData;
710
+ const { subStruct, subId, subHash } = parseData.subscriptionEventData;
624
711
  const { isEnabled } = parseData.strategiesSubsData;
625
712
  const triggerData = triggerService.liquityRatioTrigger.decode(subStruct.triggerData);
626
713
  const subData = subDataService.liquityLeverageManagementSubData.decode(subStruct.subData);
@@ -632,9 +719,10 @@ function parseLiquityLeverageManagement(position, parseData) {
632
719
  _position.specific = {
633
720
  triggerRepayRatio: triggerData.ratio,
634
721
  targetRepayRatio: subData.targetRatio,
635
- repayEnabled: true,
722
+ repayEnabled: isEnabled,
636
723
  subId1: Number(subId),
637
724
  mergeWithId: enums_1.Strategies.Identifiers.Boost,
725
+ subHashRepay: subHash,
638
726
  };
639
727
  }
640
728
  else {
@@ -644,6 +732,7 @@ function parseLiquityLeverageManagement(position, parseData) {
644
732
  boostEnabled: isEnabled,
645
733
  subId2: Number(subId),
646
734
  mergeId: enums_1.Strategies.Identifiers.Boost,
735
+ subHashBoost: subHash,
647
736
  };
648
737
  }
649
738
  _position.strategy.strategyId = enums_1.Strategies.IdOverrides.LeverageManagement;
@@ -684,7 +773,7 @@ function parseLiquityV2LeverageManagement(position, parseData) {
684
773
  }
685
774
  function parseSparkLeverageManagement(position, parseData) {
686
775
  const _position = (0, lodash_1.cloneDeep)(position);
687
- const { subStruct, subId } = parseData.subscriptionEventData;
776
+ const { subStruct, subId, subHash } = parseData.subscriptionEventData;
688
777
  const { isEnabled } = parseData.strategiesSubsData;
689
778
  const triggerData = triggerService.sparkRatioTrigger.decode(subStruct.triggerData);
690
779
  const subData = subDataService.sparkLeverageManagementSubData.decode(subStruct.subData);
@@ -696,9 +785,10 @@ function parseSparkLeverageManagement(position, parseData) {
696
785
  _position.specific = {
697
786
  triggerRepayRatio: triggerData.ratio,
698
787
  targetRepayRatio: subData.targetRatio,
699
- repayEnabled: true,
788
+ repayEnabled: isEnabled,
700
789
  subId1: Number(subId),
701
790
  mergeWithId: enums_1.Strategies.Identifiers.Boost,
791
+ subHashRepay: subHash,
702
792
  };
703
793
  }
704
794
  else {
@@ -708,11 +798,31 @@ function parseSparkLeverageManagement(position, parseData) {
708
798
  boostEnabled: isEnabled,
709
799
  subId2: Number(subId),
710
800
  mergeId: enums_1.Strategies.Identifiers.Boost,
801
+ subHashBoost: subHash,
711
802
  };
712
803
  }
713
804
  _position.strategy.strategyId = enums_1.Strategies.IdOverrides.LeverageManagement;
714
805
  return _position;
715
806
  }
807
+ function parseSparkLiquidationProtection(position, parseData) {
808
+ const _position = (0, lodash_1.cloneDeep)(position);
809
+ const { subStruct, subId, subHash } = parseData.subscriptionEventData;
810
+ const { isEnabled } = parseData.strategiesSubsData;
811
+ const triggerData = triggerService.sparkRatioTrigger.decode(subStruct.triggerData);
812
+ const subData = subDataService.sparkLiquidationProtectionSubData.decode(subStruct.subData);
813
+ _position.strategyData.decoded.triggerData = triggerData;
814
+ _position.strategyData.decoded.subData = subData;
815
+ _position.positionId = (0, utils_1.getPositionId)(_position.chainId, _position.protocol.id, _position.owner, triggerData.market);
816
+ _position.specific = {
817
+ triggerRepayRatio: triggerData.ratio,
818
+ targetRepayRatio: subData.targetRatio,
819
+ repayEnabled: isEnabled,
820
+ subId1: Number(subId),
821
+ subHashRepay: subHash,
822
+ };
823
+ _position.strategy.strategyId = enums_1.Strategies.IdOverrides.LiquidationProtection;
824
+ return _position;
825
+ }
716
826
  function parseSparkLeverageManagementOnPrice(position, parseData) {
717
827
  const _position = (0, lodash_1.cloneDeep)(position);
718
828
  const { subStruct } = parseData.subscriptionEventData;
@@ -867,6 +977,26 @@ function parseMorphoBlueLeverageManagement(position, parseData) {
867
977
  _position.strategy.strategyId = isEOA ? enums_1.Strategies.IdOverrides.EoaLeverageManagement : enums_1.Strategies.IdOverrides.LeverageManagement;
868
978
  return _position;
869
979
  }
980
+ function parseMorphoBlueLiquidationProtection(position, parseData) {
981
+ const _position = (0, lodash_1.cloneDeep)(position);
982
+ const { subStruct, subId, subHash } = parseData.subscriptionEventData;
983
+ const { isEnabled } = parseData.strategiesSubsData;
984
+ const triggerData = triggerService.morphoBlueRatioTrigger.decode(subStruct.triggerData);
985
+ const subData = subDataService.morphoBlueLiquidationProtectionSubData.decode(subStruct.subData);
986
+ _position.strategyData.decoded.triggerData = triggerData;
987
+ _position.strategyData.decoded.subData = subData;
988
+ _position.positionId = (0, utils_1.getPositionId)(_position.chainId, _position.protocol.id, triggerData.owner.toLowerCase(), triggerData.marketId);
989
+ _position.specific = {
990
+ triggerRepayRatio: triggerData.ratio,
991
+ targetRepayRatio: subData.targetRatio,
992
+ repayEnabled: isEnabled,
993
+ subId1: Number(subId),
994
+ subHashRepay: subHash,
995
+ };
996
+ const isEOA = _position.strategy.strategyId.includes('eoa');
997
+ _position.strategy.strategyId = isEOA ? enums_1.Strategies.IdOverrides.EoaLiquidationProtection : enums_1.Strategies.IdOverrides.LiquidationProtection;
998
+ return _position;
999
+ }
870
1000
  function parseMorphoBlueLeverageManagementOnPrice(position, parseData) {
871
1001
  const _position = (0, lodash_1.cloneDeep)(position);
872
1002
  const { subStruct } = parseData.subscriptionEventData;
@@ -890,6 +1020,7 @@ function parseMorphoBlueLeverageManagementOnPrice(position, parseData) {
890
1020
  debtAsset: subData.loanToken,
891
1021
  price: triggerData.price,
892
1022
  ratio: subData.targetRatio,
1023
+ ratioState: triggerData.priceState,
893
1024
  };
894
1025
  return _position;
895
1026
  }
@@ -1018,6 +1149,25 @@ function parseFluidT1LeverageManagement(position, parseData) {
1018
1149
  _position.strategy.strategyId = enums_1.Strategies.IdOverrides.LeverageManagement;
1019
1150
  return _position;
1020
1151
  }
1152
+ function parseFluidT1LiquidationProtection(position, parseData) {
1153
+ const _position = (0, lodash_1.cloneDeep)(position);
1154
+ const { subStruct, subId, subHash } = parseData.subscriptionEventData;
1155
+ const { isEnabled } = parseData.strategiesSubsData;
1156
+ const triggerData = triggerService.fluidRatioTrigger.decode(subStruct.triggerData);
1157
+ const subData = subDataService.fluidLiquidationProtectionSubData.decode(subStruct.subData);
1158
+ _position.strategyData.decoded.triggerData = triggerData;
1159
+ _position.strategyData.decoded.subData = subData;
1160
+ _position.positionId = (0, utils_1.getPositionId)(_position.chainId, _position.protocol.id, _position.owner, triggerData.nftId, subData.vault);
1161
+ _position.specific = {
1162
+ triggerRepayRatio: triggerData.ratio,
1163
+ targetRepayRatio: subData.targetRatio,
1164
+ repayEnabled: isEnabled,
1165
+ subId1: Number(subId),
1166
+ subHashRepay: subHash,
1167
+ };
1168
+ _position.strategy.strategyId = enums_1.Strategies.IdOverrides.LiquidationProtection;
1169
+ return _position;
1170
+ }
1021
1171
  const parsingMethodsMapping = {
1022
1172
  [enums_1.ProtocolIdentifiers.StrategiesAutomation.MakerDAO]: {
1023
1173
  [enums_1.Strategies.Identifiers.SavingsLiqProtection]: parseMakerSavingsLiqProtection,
@@ -1027,6 +1177,7 @@ const parsingMethodsMapping = {
1027
1177
  [enums_1.Strategies.Identifiers.TrailingStopToDebt]: parseMakerTrailingStop,
1028
1178
  [enums_1.Strategies.Identifiers.Repay]: parseMakerLeverageManagement,
1029
1179
  [enums_1.Strategies.Identifiers.Boost]: parseMakerLeverageManagement,
1180
+ [enums_1.Strategies.Identifiers.LiquidationProtection]: parseMakerLiquidationProtection,
1030
1181
  },
1031
1182
  [enums_1.ProtocolIdentifiers.StrategiesAutomation.Liquity]: {
1032
1183
  [enums_1.Strategies.Identifiers.CloseOnPriceToColl]: parseLiquityCloseOnPrice,
@@ -1065,6 +1216,8 @@ const parsingMethodsMapping = {
1065
1216
  [enums_1.Strategies.Identifiers.EoaBoostOnPrice]: parseAaveV3LeverageManagementOnPrice,
1066
1217
  [enums_1.Strategies.Identifiers.EoaCloseOnPrice]: parseAaveV3CloseOnPrice,
1067
1218
  [enums_1.Strategies.Identifiers.CollateralSwitch]: parseAaveV3CollateralSwitch,
1219
+ [enums_1.Strategies.Identifiers.LiquidationProtection]: parseAaveV3LiquidationProtection,
1220
+ [enums_1.Strategies.Identifiers.EoaLiquidationProtection]: parseAaveV3LiquidationProtection,
1068
1221
  },
1069
1222
  [enums_1.ProtocolIdentifiers.StrategiesAutomation.AaveV4]: {
1070
1223
  [enums_1.Strategies.Identifiers.Repay]: parseAaveV4LeverageManagement,
@@ -1079,6 +1232,8 @@ const parsingMethodsMapping = {
1079
1232
  [enums_1.Strategies.Identifiers.EoaCloseOnPrice]: parseAaveV4CloseOnPrice,
1080
1233
  [enums_1.Strategies.Identifiers.CollateralSwitch]: parseAaveV4CollateralSwitch,
1081
1234
  [enums_1.Strategies.Identifiers.EoaCollateralSwitch]: parseAaveV4CollateralSwitch,
1235
+ [enums_1.Strategies.Identifiers.LiquidationProtection]: parseAaveV4LiquidationProtection,
1236
+ [enums_1.Strategies.Identifiers.EoaLiquidationProtection]: parseAaveV4LiquidationProtection,
1082
1237
  },
1083
1238
  [enums_1.ProtocolIdentifiers.StrategiesAutomation.CompoundV2]: {
1084
1239
  [enums_1.Strategies.Identifiers.Repay]: parseCompoundV2LeverageManagement,
@@ -1095,6 +1250,8 @@ const parsingMethodsMapping = {
1095
1250
  [enums_1.Strategies.Identifiers.EoaBoostOnPrice]: parseCompoundV3LeverageManagementOnPrice,
1096
1251
  [enums_1.Strategies.Identifiers.CloseOnPrice]: parseCompoundV3CloseOnPrice,
1097
1252
  [enums_1.Strategies.Identifiers.EoaCloseOnPrice]: parseCompoundV3CloseOnPrice,
1253
+ [enums_1.Strategies.Identifiers.LiquidationProtection]: parseCompoundV3LiquidationProtection,
1254
+ [enums_1.Strategies.Identifiers.EoaLiquidationProtection]: parseCompoundV3LiquidationProtection,
1098
1255
  },
1099
1256
  [enums_1.ProtocolIdentifiers.StrategiesAutomation.ChickenBonds]: {
1100
1257
  [enums_1.Strategies.Identifiers.Rebond]: parseChickenBondsRebond,
@@ -1114,6 +1271,7 @@ const parsingMethodsMapping = {
1114
1271
  [enums_1.Strategies.Identifiers.BoostOnPrice]: parseSparkLeverageManagementOnPrice,
1115
1272
  [enums_1.Strategies.Identifiers.CloseOnPrice]: parseSparkCloseOnPrice,
1116
1273
  [enums_1.Strategies.Identifiers.CollateralSwitch]: parseSparkCollateralSwitch,
1274
+ [enums_1.Strategies.Identifiers.LiquidationProtection]: parseSparkLiquidationProtection,
1117
1275
  },
1118
1276
  [enums_1.ProtocolIdentifiers.StrategiesAutomation.CrvUSD]: {
1119
1277
  [enums_1.Strategies.Identifiers.Repay]: parseCrvUSDLeverageManagement,
@@ -1127,10 +1285,13 @@ const parsingMethodsMapping = {
1127
1285
  [enums_1.Strategies.Identifiers.EoaBoost]: parseMorphoBlueLeverageManagement,
1128
1286
  [enums_1.Strategies.Identifiers.BoostOnPrice]: parseMorphoBlueLeverageManagementOnPrice,
1129
1287
  [enums_1.Strategies.Identifiers.CloseOnPrice]: parseMorphoBlueCloseOnPrice,
1288
+ [enums_1.Strategies.Identifiers.LiquidationProtection]: parseMorphoBlueLiquidationProtection,
1289
+ [enums_1.Strategies.Identifiers.EoaLiquidationProtection]: parseMorphoBlueLiquidationProtection,
1130
1290
  },
1131
1291
  [enums_1.ProtocolIdentifiers.StrategiesAutomation.FluidT1]: {
1132
1292
  [enums_1.Strategies.Identifiers.Repay]: parseFluidT1LeverageManagement,
1133
1293
  [enums_1.Strategies.Identifiers.Boost]: parseFluidT1LeverageManagement,
1294
+ [enums_1.Strategies.Identifiers.LiquidationProtection]: parseFluidT1LiquidationProtection,
1134
1295
  },
1135
1296
  };
1136
1297
  function getParsingMethod(id, strategy) {