@defisaver/automation-sdk 3.3.14 → 3.3.15-liq-prot-dev

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (41) hide show
  1. package/cjs/constants/index.js +95 -0
  2. package/cjs/index.d.ts +4 -3
  3. package/cjs/index.js +6 -2
  4. package/cjs/services/strategiesService.js +181 -17
  5. package/cjs/services/strategySubService.d.ts +14 -13
  6. package/cjs/services/strategySubService.js +74 -63
  7. package/cjs/services/strategySubService.test.js +0 -234
  8. package/cjs/services/subDataService.d.ts +98 -1
  9. package/cjs/services/subDataService.js +264 -6
  10. package/cjs/services/subDataService.test.js +0 -42
  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 +29 -6
  15. package/cjs/types/enums.js +23 -0
  16. package/esm/constants/index.js +95 -0
  17. package/esm/index.d.ts +4 -3
  18. package/esm/index.js +7 -3
  19. package/esm/services/strategiesService.js +181 -17
  20. package/esm/services/strategySubService.d.ts +14 -13
  21. package/esm/services/strategySubService.js +74 -60
  22. package/esm/services/strategySubService.test.js +2 -236
  23. package/esm/services/subDataService.d.ts +98 -1
  24. package/esm/services/subDataService.js +262 -5
  25. package/esm/services/subDataService.test.js +0 -42
  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 +29 -6
  30. package/esm/types/enums.js +23 -0
  31. package/package.json +1 -1
  32. package/src/constants/index.ts +96 -0
  33. package/src/index.ts +24 -6
  34. package/src/services/strategiesService.ts +246 -17
  35. package/src/services/strategySubService.test.ts +0 -279
  36. package/src/services/strategySubService.ts +196 -110
  37. package/src/services/subDataService.test.ts +0 -48
  38. package/src/services/subDataService.ts +363 -4
  39. package/src/services/utils.test.ts +32 -1
  40. package/src/services/utils.ts +32 -1
  41. package/src/types/enums.ts +23 -0
@@ -549,6 +549,46 @@ 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_LIQUIDATION_PROTECTION]: {
553
+ strategyOrBundleId: enums_1.Bundles.MainnetIds.MAKER_LIQUIDATION_PROTECTION,
554
+ strategyId: enums_1.Strategies.Identifiers.LiquidationProtection,
555
+ protocol: exports.PROTOCOLS.MakerDAO,
556
+ },
557
+ [enums_1.Bundles.MainnetIds.AAVE_V3_LIQUIDATION_PROTECTION]: {
558
+ strategyOrBundleId: enums_1.Bundles.MainnetIds.AAVE_V3_LIQUIDATION_PROTECTION,
559
+ strategyId: enums_1.Strategies.Identifiers.LiquidationProtection,
560
+ protocol: exports.PROTOCOLS.AaveV3,
561
+ },
562
+ [enums_1.Bundles.MainnetIds.AAVE_V4_LIQUIDATION_PROTECTION]: {
563
+ strategyOrBundleId: enums_1.Bundles.MainnetIds.AAVE_V4_LIQUIDATION_PROTECTION,
564
+ strategyId: enums_1.Strategies.Identifiers.LiquidationProtection,
565
+ protocol: exports.PROTOCOLS.AaveV4,
566
+ },
567
+ [enums_1.Bundles.MainnetIds.SPARK_LIQUIDATION_PROTECTION]: {
568
+ strategyOrBundleId: enums_1.Bundles.MainnetIds.SPARK_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.LiquidationProtection,
580
+ protocol: exports.PROTOCOLS.CompoundV3,
581
+ },
582
+ [enums_1.Bundles.MainnetIds.MORPHO_BLUE_LIQUIDATION_PROTECTION]: {
583
+ strategyOrBundleId: enums_1.Bundles.MainnetIds.MORPHO_BLUE_LIQUIDATION_PROTECTION,
584
+ strategyId: enums_1.Strategies.Identifiers.LiquidationProtection,
585
+ protocol: exports.PROTOCOLS.MorphoBlue,
586
+ },
587
+ [enums_1.Bundles.MainnetIds.FLUID_T1_LIQUIDATION_PROTECTION]: {
588
+ strategyOrBundleId: enums_1.Bundles.MainnetIds.FLUID_T1_LIQUIDATION_PROTECTION,
589
+ strategyId: enums_1.Strategies.Identifiers.LiquidationProtection,
590
+ protocol: exports.PROTOCOLS.FluidT1,
591
+ },
552
592
  };
553
593
  exports.OPTIMISM_BUNDLES_INFO = {
554
594
  [enums_1.Bundles.OptimismIds.AAVE_V3_REPAY]: {
@@ -606,6 +646,11 @@ exports.OPTIMISM_BUNDLES_INFO = {
606
646
  strategyId: enums_1.Strategies.Identifiers.EoaCloseOnPrice,
607
647
  protocol: exports.PROTOCOLS.AaveV3,
608
648
  },
649
+ [enums_1.Bundles.OptimismIds.AAVE_V3_LIQUIDATION_PROTECTION]: {
650
+ strategyOrBundleId: enums_1.Bundles.OptimismIds.AAVE_V3_LIQUIDATION_PROTECTION,
651
+ strategyId: enums_1.Strategies.Identifiers.LiquidationProtection,
652
+ protocol: exports.PROTOCOLS.AaveV3,
653
+ },
609
654
  };
610
655
  exports.BASE_BUNDLES_INFO = {
611
656
  [enums_1.Bundles.BaseIds.AAVE_V3_REPAY]: {
@@ -743,6 +788,31 @@ exports.BASE_BUNDLES_INFO = {
743
788
  strategyId: enums_1.Strategies.Identifiers.CloseOnPrice,
744
789
  protocol: exports.PROTOCOLS.MorphoBlue,
745
790
  },
791
+ [enums_1.Bundles.BaseIds.AAVE_V3_LIQUIDATION_PROTECTION]: {
792
+ strategyOrBundleId: enums_1.Bundles.BaseIds.AAVE_V3_LIQUIDATION_PROTECTION,
793
+ strategyId: enums_1.Strategies.Identifiers.LiquidationProtection,
794
+ protocol: exports.PROTOCOLS.AaveV3,
795
+ },
796
+ [enums_1.Bundles.BaseIds.COMP_V3_SW_LIQUIDATION_PROTECTION]: {
797
+ strategyOrBundleId: enums_1.Bundles.BaseIds.COMP_V3_SW_LIQUIDATION_PROTECTION,
798
+ strategyId: enums_1.Strategies.Identifiers.LiquidationProtection,
799
+ protocol: exports.PROTOCOLS.CompoundV3,
800
+ },
801
+ [enums_1.Bundles.BaseIds.COMP_V3_EOA_LIQUIDATION_PROTECTION]: {
802
+ strategyOrBundleId: enums_1.Bundles.BaseIds.COMP_V3_EOA_LIQUIDATION_PROTECTION,
803
+ strategyId: enums_1.Strategies.Identifiers.LiquidationProtection,
804
+ protocol: exports.PROTOCOLS.CompoundV3,
805
+ },
806
+ [enums_1.Bundles.BaseIds.MORPHO_BLUE_LIQUIDATION_PROTECTION]: {
807
+ strategyOrBundleId: enums_1.Bundles.BaseIds.MORPHO_BLUE_LIQUIDATION_PROTECTION,
808
+ strategyId: enums_1.Strategies.Identifiers.LiquidationProtection,
809
+ protocol: exports.PROTOCOLS.MorphoBlue,
810
+ },
811
+ [enums_1.Bundles.BaseIds.FLUID_T1_LIQUIDATION_PROTECTION]: {
812
+ strategyOrBundleId: enums_1.Bundles.BaseIds.FLUID_T1_LIQUIDATION_PROTECTION,
813
+ strategyId: enums_1.Strategies.Identifiers.LiquidationProtection,
814
+ protocol: exports.PROTOCOLS.FluidT1,
815
+ },
746
816
  };
747
817
  exports.ARBITRUM_BUNDLES_INFO = {
748
818
  [enums_1.Bundles.ArbitrumIds.AAVE_V3_REPAY]: {
@@ -890,6 +960,31 @@ exports.ARBITRUM_BUNDLES_INFO = {
890
960
  strategyId: enums_1.Strategies.Identifiers.CloseOnPrice,
891
961
  protocol: exports.PROTOCOLS.MorphoBlue,
892
962
  },
963
+ [enums_1.Bundles.ArbitrumIds.AAVE_V3_LIQUIDATION_PROTECTION]: {
964
+ strategyOrBundleId: enums_1.Bundles.ArbitrumIds.AAVE_V3_LIQUIDATION_PROTECTION,
965
+ strategyId: enums_1.Strategies.Identifiers.LiquidationProtection,
966
+ protocol: exports.PROTOCOLS.AaveV3,
967
+ },
968
+ [enums_1.Bundles.ArbitrumIds.COMP_V3_SW_LIQUIDATION_PROTECTION]: {
969
+ strategyOrBundleId: enums_1.Bundles.ArbitrumIds.COMP_V3_SW_LIQUIDATION_PROTECTION,
970
+ strategyId: enums_1.Strategies.Identifiers.LiquidationProtection,
971
+ protocol: exports.PROTOCOLS.CompoundV3,
972
+ },
973
+ [enums_1.Bundles.ArbitrumIds.COMP_V3_EOA_LIQUIDATION_PROTECTION]: {
974
+ strategyOrBundleId: enums_1.Bundles.ArbitrumIds.COMP_V3_EOA_LIQUIDATION_PROTECTION,
975
+ strategyId: enums_1.Strategies.Identifiers.LiquidationProtection,
976
+ protocol: exports.PROTOCOLS.CompoundV3,
977
+ },
978
+ [enums_1.Bundles.ArbitrumIds.MORPHO_BLUE_LIQUIDATION_PROTECTION]: {
979
+ strategyOrBundleId: enums_1.Bundles.ArbitrumIds.MORPHO_BLUE_LIQUIDATION_PROTECTION,
980
+ strategyId: enums_1.Strategies.Identifiers.LiquidationProtection,
981
+ protocol: exports.PROTOCOLS.MorphoBlue,
982
+ },
983
+ [enums_1.Bundles.ArbitrumIds.FLUID_T1_LIQUIDATION_PROTECTION]: {
984
+ strategyOrBundleId: enums_1.Bundles.ArbitrumIds.FLUID_T1_LIQUIDATION_PROTECTION,
985
+ strategyId: enums_1.Strategies.Identifiers.LiquidationProtection,
986
+ protocol: exports.PROTOCOLS.FluidT1,
987
+ },
893
988
  };
894
989
  exports.BUNDLES_INFO = {
895
990
  [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,31 @@ 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
+ // TODO -> Is this ok?
142
+ _position.strategy.strategyId = enums_1.Strategies.IdOverrides.LiquidationProtection;
143
+ return _position;
144
+ }
124
145
  function parseLiquityCloseOnPrice(position, parseData) {
125
146
  const _position = (0, lodash_1.cloneDeep)(position);
126
147
  const { subStruct } = parseData.subscriptionEventData;
@@ -155,7 +176,7 @@ function parseLiquityTrailingStop(position, parseData) {
155
176
  }
156
177
  function parseAaveV2LeverageManagement(position, parseData) {
157
178
  const _position = (0, lodash_1.cloneDeep)(position);
158
- const { subStruct, subId } = parseData.subscriptionEventData;
179
+ const { subStruct, subId, subHash } = parseData.subscriptionEventData;
159
180
  const { isEnabled } = parseData.strategiesSubsData;
160
181
  const triggerData = triggerService.aaveV2RatioTrigger.decode(subStruct.triggerData);
161
182
  const subData = subDataService.aaveV2LeverageManagementSubData.decode(subStruct.subData);
@@ -167,9 +188,10 @@ function parseAaveV2LeverageManagement(position, parseData) {
167
188
  _position.specific = {
168
189
  triggerRepayRatio: triggerData.ratio,
169
190
  targetRepayRatio: subData.targetRatio,
170
- repayEnabled: true,
191
+ repayEnabled: isEnabled,
171
192
  subId1: Number(subId),
172
193
  mergeWithId: enums_1.Strategies.Identifiers.Boost,
194
+ subHashRepay: subHash,
173
195
  };
174
196
  }
175
197
  else {
@@ -179,6 +201,7 @@ function parseAaveV2LeverageManagement(position, parseData) {
179
201
  boostEnabled: isEnabled,
180
202
  subId2: Number(subId),
181
203
  mergeId: enums_1.Strategies.Identifiers.Boost,
204
+ subHashBoost: subHash,
182
205
  };
183
206
  }
184
207
  _position.strategy.strategyId = enums_1.Strategies.IdOverrides.LeverageManagement;
@@ -229,6 +252,27 @@ function parseAaveV3LeverageManagement(position, parseData) {
229
252
  }
230
253
  return _position;
231
254
  }
255
+ function parseAaveV3LiquidationProtection(position, parseData) {
256
+ const _position = (0, lodash_1.cloneDeep)(position);
257
+ const { subStruct, subId, subHash } = parseData.subscriptionEventData;
258
+ const { isEnabled } = parseData.strategiesSubsData;
259
+ const triggerData = triggerService.aaveV3RatioTrigger.decode(subStruct.triggerData);
260
+ // const isEOA = _position.strategy.strategyId.includes('eoa');
261
+ const subData = subDataService.aaveV3LiquidationProtectionSubData.decode(subStruct.subData);
262
+ _position.strategyData.decoded.triggerData = triggerData;
263
+ _position.strategyData.decoded.subData = subData;
264
+ _position.positionId = (0, utils_1.getPositionId)(_position.chainId, _position.protocol.id, _position.owner, triggerData.market);
265
+ _position.specific = {
266
+ triggerRepayRatio: triggerData.ratio,
267
+ targetRepayRatio: subData.targetRatio,
268
+ repayEnabled: isEnabled,
269
+ subId1: Number(subId),
270
+ subHashRepay: subHash,
271
+ };
272
+ // TODO -> Should split for EOA or not? Prob not as they will use same encoding and decoding
273
+ _position.strategy.strategyId = enums_1.Strategies.IdOverrides.LiquidationProtection;
274
+ return _position;
275
+ }
232
276
  function parseAaveV3LeverageManagementOnPrice(position, parseData) {
233
277
  const _position = (0, lodash_1.cloneDeep)(position);
234
278
  const { subStruct } = parseData.subscriptionEventData;
@@ -358,6 +402,27 @@ function parseAaveV4LeverageManagement(position, parseData) {
358
402
  }
359
403
  return _position;
360
404
  }
405
+ function parseAaveV4LiquidationProtection(position, parseData) {
406
+ const _position = (0, lodash_1.cloneDeep)(position);
407
+ const { subStruct, subId, subHash } = parseData.subscriptionEventData;
408
+ const { isEnabled } = parseData.strategiesSubsData;
409
+ const triggerData = triggerService.aaveV4RatioTrigger.decode(subStruct.triggerData);
410
+ const subData = subDataService.aaveV4LiquidationProtectionSubData.decode(subStruct.subData);
411
+ // const isEOA = _position.strategy.strategyId.includes('eoa');
412
+ // const isRepay = [Strategies.Identifiers.Repay, Strategies.Identifiers.EoaRepay].includes(_position.strategy.strategyId as Strategies.Identifiers);
413
+ _position.strategyData.decoded.triggerData = triggerData;
414
+ _position.strategyData.decoded.subData = subData;
415
+ _position.positionId = (0, utils_1.getPositionId)(_position.chainId, _position.protocol.id, _position.owner, triggerData.spoke);
416
+ _position.strategy.strategyId = enums_1.Strategies.IdOverrides.LiquidationProtection;
417
+ _position.specific = {
418
+ triggerRepayRatio: triggerData.ratio,
419
+ targetRepayRatio: subData.targetRatio,
420
+ repayEnabled: isEnabled,
421
+ subId1: Number(subId),
422
+ subHashRepay: subHash,
423
+ };
424
+ return _position;
425
+ }
361
426
  function parseAaveV4LeverageManagementOnPrice(position, parseData) {
362
427
  const _position = (0, lodash_1.cloneDeep)(position);
363
428
  const { subStruct } = parseData.subscriptionEventData;
@@ -416,7 +481,7 @@ function parseAaveV4CollateralSwitch(position, parseData) {
416
481
  }
417
482
  function parseMorphoAaveV2LeverageManagement(position, parseData) {
418
483
  const _position = (0, lodash_1.cloneDeep)(position);
419
- const { subStruct, subId } = parseData.subscriptionEventData;
484
+ const { subStruct, subId, subHash } = parseData.subscriptionEventData;
420
485
  const { isEnabled } = parseData.strategiesSubsData;
421
486
  const triggerData = triggerService.morphoAaveV2RatioTrigger.decode(subStruct.triggerData);
422
487
  const subData = subDataService.morphoAaveV2LeverageManagementSubData.decode(subStruct.subData);
@@ -428,9 +493,10 @@ function parseMorphoAaveV2LeverageManagement(position, parseData) {
428
493
  _position.specific = {
429
494
  triggerRepayRatio: triggerData.ratio,
430
495
  targetRepayRatio: subData.targetRatio,
431
- repayEnabled: true,
496
+ repayEnabled: isEnabled,
432
497
  subId1: Number(subId),
433
498
  mergeWithId: enums_1.Strategies.Identifiers.Boost,
499
+ subHashRepay: subHash,
434
500
  };
435
501
  }
436
502
  else {
@@ -440,6 +506,7 @@ function parseMorphoAaveV2LeverageManagement(position, parseData) {
440
506
  boostEnabled: isEnabled,
441
507
  subId2: Number(subId),
442
508
  mergeId: enums_1.Strategies.Identifiers.Boost,
509
+ subHashBoost: subHash,
443
510
  };
444
511
  }
445
512
  _position.strategy.strategyId = enums_1.Strategies.IdOverrides.LeverageManagement;
@@ -472,7 +539,7 @@ function parseAaveV3CloseOnPriceWithMaximumGasPrice(position, parseData) {
472
539
  }
473
540
  function parseCompoundV2LeverageManagement(position, parseData) {
474
541
  const _position = (0, lodash_1.cloneDeep)(position);
475
- const { subStruct, subId } = parseData.subscriptionEventData;
542
+ const { subStruct, subId, subHash } = parseData.subscriptionEventData;
476
543
  const { isEnabled } = parseData.strategiesSubsData;
477
544
  const triggerData = triggerService.compoundV2RatioTrigger.decode(subStruct.triggerData);
478
545
  const subData = subDataService.compoundV2LeverageManagementSubData.decode(subStruct.subData);
@@ -485,9 +552,10 @@ function parseCompoundV2LeverageManagement(position, parseData) {
485
552
  _position.specific = {
486
553
  triggerRepayRatio: triggerData.ratio,
487
554
  targetRepayRatio: subData.targetRatio,
488
- repayEnabled: true,
555
+ repayEnabled: isEnabled,
489
556
  subId1: Number(subId),
490
557
  mergeWithId: enums_1.Strategies.Identifiers.Boost,
558
+ subHashRepay: subHash,
491
559
  };
492
560
  }
493
561
  else {
@@ -497,6 +565,7 @@ function parseCompoundV2LeverageManagement(position, parseData) {
497
565
  boostEnabled: isEnabled,
498
566
  subId2: Number(subId),
499
567
  mergeId: enums_1.Strategies.Identifiers.Boost,
568
+ subHashBoost: subHash,
500
569
  };
501
570
  }
502
571
  const isEOA = _position.strategy.strategyId.includes('eoa');
@@ -505,11 +574,9 @@ function parseCompoundV2LeverageManagement(position, parseData) {
505
574
  }
506
575
  function parseCompoundV3LeverageManagement(position, parseData) {
507
576
  const _position = (0, lodash_1.cloneDeep)(position);
508
- const { subStruct, subId } = parseData.subscriptionEventData;
577
+ const { subStruct, subId, subHash } = parseData.subscriptionEventData;
509
578
  const { isEnabled } = parseData.strategiesSubsData;
510
- const subDataDecoder = position.chainId !== 1
511
- ? subDataService.compoundV3L2LeverageManagementSubData
512
- : subDataService.compoundV3LeverageManagementSubData;
579
+ const subDataDecoder = subDataService.compoundV3LeverageManagementSubDataWithoutSubProxy;
513
580
  const triggerData = triggerService.compoundV3RatioTrigger.decode(subStruct.triggerData);
514
581
  const subData = subDataDecoder.decode(subStruct.subData);
515
582
  _position.strategyData.decoded.triggerData = triggerData;
@@ -521,9 +588,10 @@ function parseCompoundV3LeverageManagement(position, parseData) {
521
588
  _position.specific = {
522
589
  triggerRepayRatio: triggerData.ratio,
523
590
  targetRepayRatio: subData.targetRatio,
524
- repayEnabled: true,
591
+ repayEnabled: isEnabled,
525
592
  subId1: Number(subId),
526
593
  mergeWithId: isEOA ? enums_1.Strategies.Identifiers.EoaBoost : enums_1.Strategies.Identifiers.Boost,
594
+ subHashRepay: subHash,
527
595
  };
528
596
  }
529
597
  else {
@@ -533,11 +601,34 @@ function parseCompoundV3LeverageManagement(position, parseData) {
533
601
  boostEnabled: isEnabled,
534
602
  subId2: Number(subId),
535
603
  mergeId: isEOA ? enums_1.Strategies.Identifiers.EoaBoost : enums_1.Strategies.Identifiers.Boost,
604
+ subHashBoost: subHash,
536
605
  };
537
606
  }
538
607
  _position.strategy.strategyId = isEOA ? enums_1.Strategies.IdOverrides.EoaLeverageManagement : enums_1.Strategies.IdOverrides.LeverageManagement;
539
608
  return _position;
540
609
  }
610
+ function parseCompoundV3LiquidationProtection(position, parseData) {
611
+ const _position = (0, lodash_1.cloneDeep)(position);
612
+ const { subStruct, subId, subHash } = parseData.subscriptionEventData;
613
+ const { isEnabled } = parseData.strategiesSubsData;
614
+ const subDataDecoder = subDataService.compoundV3LiquidationProtectionSubData;
615
+ const triggerData = triggerService.compoundV3RatioTrigger.decode(subStruct.triggerData);
616
+ const subData = subDataDecoder.decode(subStruct.subData);
617
+ _position.strategyData.decoded.triggerData = triggerData;
618
+ _position.strategyData.decoded.subData = subData;
619
+ _position.positionId = (0, utils_1.getPositionId)(_position.chainId, _position.protocol.id, triggerData.owner.toLowerCase(), triggerData.market);
620
+ // const isRepay = [Strategies.Identifiers.Repay, Strategies.Identifiers.EoaRepay].includes(_position.strategy.strategyId as Strategies.Identifiers);
621
+ const isEOA = _position.strategy.strategyId.includes('eoa');
622
+ _position.specific = {
623
+ triggerRepayRatio: triggerData.ratio,
624
+ targetRepayRatio: subData.targetRatio,
625
+ repayEnabled: isEnabled,
626
+ subId1: Number(subId),
627
+ subHashRepay: subHash,
628
+ };
629
+ _position.strategy.strategyId = isEOA ? enums_1.Strategies.IdOverrides.EoaLiquidationProtection : enums_1.Strategies.IdOverrides.LiquidationProtection;
630
+ return _position;
631
+ }
541
632
  function parseCompoundV3LeverageManagementOnPrice(position, parseData) {
542
633
  const _position = (0, lodash_1.cloneDeep)(position);
543
634
  const { subStruct } = parseData.subscriptionEventData;
@@ -620,7 +711,7 @@ function parseExchangeLimitOrder(position, parseData, chainId) {
620
711
  }
621
712
  function parseLiquityLeverageManagement(position, parseData) {
622
713
  const _position = (0, lodash_1.cloneDeep)(position);
623
- const { subStruct, subId } = parseData.subscriptionEventData;
714
+ const { subStruct, subId, subHash } = parseData.subscriptionEventData;
624
715
  const { isEnabled } = parseData.strategiesSubsData;
625
716
  const triggerData = triggerService.liquityRatioTrigger.decode(subStruct.triggerData);
626
717
  const subData = subDataService.liquityLeverageManagementSubData.decode(subStruct.subData);
@@ -632,9 +723,10 @@ function parseLiquityLeverageManagement(position, parseData) {
632
723
  _position.specific = {
633
724
  triggerRepayRatio: triggerData.ratio,
634
725
  targetRepayRatio: subData.targetRatio,
635
- repayEnabled: true,
726
+ repayEnabled: isEnabled,
636
727
  subId1: Number(subId),
637
728
  mergeWithId: enums_1.Strategies.Identifiers.Boost,
729
+ subHashRepay: subHash,
638
730
  };
639
731
  }
640
732
  else {
@@ -644,6 +736,7 @@ function parseLiquityLeverageManagement(position, parseData) {
644
736
  boostEnabled: isEnabled,
645
737
  subId2: Number(subId),
646
738
  mergeId: enums_1.Strategies.Identifiers.Boost,
739
+ subHashBoost: subHash,
647
740
  };
648
741
  }
649
742
  _position.strategy.strategyId = enums_1.Strategies.IdOverrides.LeverageManagement;
@@ -684,7 +777,7 @@ function parseLiquityV2LeverageManagement(position, parseData) {
684
777
  }
685
778
  function parseSparkLeverageManagement(position, parseData) {
686
779
  const _position = (0, lodash_1.cloneDeep)(position);
687
- const { subStruct, subId } = parseData.subscriptionEventData;
780
+ const { subStruct, subId, subHash } = parseData.subscriptionEventData;
688
781
  const { isEnabled } = parseData.strategiesSubsData;
689
782
  const triggerData = triggerService.sparkRatioTrigger.decode(subStruct.triggerData);
690
783
  const subData = subDataService.sparkLeverageManagementSubData.decode(subStruct.subData);
@@ -696,9 +789,10 @@ function parseSparkLeverageManagement(position, parseData) {
696
789
  _position.specific = {
697
790
  triggerRepayRatio: triggerData.ratio,
698
791
  targetRepayRatio: subData.targetRatio,
699
- repayEnabled: true,
792
+ repayEnabled: isEnabled,
700
793
  subId1: Number(subId),
701
794
  mergeWithId: enums_1.Strategies.Identifiers.Boost,
795
+ subHashRepay: subHash,
702
796
  };
703
797
  }
704
798
  else {
@@ -708,11 +802,31 @@ function parseSparkLeverageManagement(position, parseData) {
708
802
  boostEnabled: isEnabled,
709
803
  subId2: Number(subId),
710
804
  mergeId: enums_1.Strategies.Identifiers.Boost,
805
+ subHashBoost: subHash,
711
806
  };
712
807
  }
713
808
  _position.strategy.strategyId = enums_1.Strategies.IdOverrides.LeverageManagement;
714
809
  return _position;
715
810
  }
811
+ function parseSparkLiquidationProtection(position, parseData) {
812
+ const _position = (0, lodash_1.cloneDeep)(position);
813
+ const { subStruct, subId, subHash } = parseData.subscriptionEventData;
814
+ const { isEnabled } = parseData.strategiesSubsData;
815
+ const triggerData = triggerService.sparkRatioTrigger.decode(subStruct.triggerData);
816
+ const subData = subDataService.sparkLiquidationProtectionSubData.decode(subStruct.subData);
817
+ _position.strategyData.decoded.triggerData = triggerData;
818
+ _position.strategyData.decoded.subData = subData;
819
+ _position.positionId = (0, utils_1.getPositionId)(_position.chainId, _position.protocol.id, _position.owner, triggerData.market);
820
+ _position.specific = {
821
+ triggerRepayRatio: triggerData.ratio,
822
+ targetRepayRatio: subData.targetRatio,
823
+ repayEnabled: isEnabled,
824
+ subId1: Number(subId),
825
+ subHashRepay: subHash,
826
+ };
827
+ _position.strategy.strategyId = enums_1.Strategies.IdOverrides.LiquidationProtection;
828
+ return _position;
829
+ }
716
830
  function parseSparkLeverageManagementOnPrice(position, parseData) {
717
831
  const _position = (0, lodash_1.cloneDeep)(position);
718
832
  const { subStruct } = parseData.subscriptionEventData;
@@ -867,6 +981,27 @@ function parseMorphoBlueLeverageManagement(position, parseData) {
867
981
  _position.strategy.strategyId = isEOA ? enums_1.Strategies.IdOverrides.EoaLeverageManagement : enums_1.Strategies.IdOverrides.LeverageManagement;
868
982
  return _position;
869
983
  }
984
+ function parseMorphoBlueLiquidationProtection(position, parseData) {
985
+ const _position = (0, lodash_1.cloneDeep)(position);
986
+ const { subStruct, subId, subHash } = parseData.subscriptionEventData;
987
+ const { isEnabled } = parseData.strategiesSubsData;
988
+ const triggerData = triggerService.morphoBlueRatioTrigger.decode(subStruct.triggerData);
989
+ const subData = subDataService.morphoBlueLiquidationProtectionSubData.decode(subStruct.subData);
990
+ _position.strategyData.decoded.triggerData = triggerData;
991
+ _position.strategyData.decoded.subData = subData;
992
+ _position.positionId = (0, utils_1.getPositionId)(_position.chainId, _position.protocol.id, triggerData.owner.toLowerCase(), triggerData.marketId);
993
+ _position.specific = {
994
+ triggerRepayRatio: triggerData.ratio,
995
+ targetRepayRatio: subData.targetRatio,
996
+ repayEnabled: isEnabled,
997
+ subId1: Number(subId),
998
+ subHashRepay: subHash,
999
+ };
1000
+ const isEOA = _position.strategy.strategyId.includes('eoa');
1001
+ // TODO -> Should be separate for EOA ?
1002
+ _position.strategy.strategyId = enums_1.Strategies.IdOverrides.LiquidationProtection;
1003
+ return _position;
1004
+ }
870
1005
  function parseMorphoBlueLeverageManagementOnPrice(position, parseData) {
871
1006
  const _position = (0, lodash_1.cloneDeep)(position);
872
1007
  const { subStruct } = parseData.subscriptionEventData;
@@ -890,6 +1025,7 @@ function parseMorphoBlueLeverageManagementOnPrice(position, parseData) {
890
1025
  debtAsset: subData.loanToken,
891
1026
  price: triggerData.price,
892
1027
  ratio: subData.targetRatio,
1028
+ ratioState: triggerData.priceState,
893
1029
  };
894
1030
  return _position;
895
1031
  }
@@ -1018,6 +1154,25 @@ function parseFluidT1LeverageManagement(position, parseData) {
1018
1154
  _position.strategy.strategyId = enums_1.Strategies.IdOverrides.LeverageManagement;
1019
1155
  return _position;
1020
1156
  }
1157
+ function parseFluidT1LiquidationProtection(position, parseData) {
1158
+ const _position = (0, lodash_1.cloneDeep)(position);
1159
+ const { subStruct, subId, subHash } = parseData.subscriptionEventData;
1160
+ const { isEnabled } = parseData.strategiesSubsData;
1161
+ const triggerData = triggerService.fluidRatioTrigger.decode(subStruct.triggerData);
1162
+ const subData = subDataService.fluidLiquidationProtectionSubData.decode(subStruct.subData);
1163
+ _position.strategyData.decoded.triggerData = triggerData;
1164
+ _position.strategyData.decoded.subData = subData;
1165
+ _position.positionId = (0, utils_1.getPositionId)(_position.chainId, _position.protocol.id, _position.owner, triggerData.nftId, subData.vault);
1166
+ _position.specific = {
1167
+ triggerRepayRatio: triggerData.ratio,
1168
+ targetRepayRatio: subData.targetRatio,
1169
+ repayEnabled: isEnabled,
1170
+ subId1: Number(subId),
1171
+ subHashRepay: subHash,
1172
+ };
1173
+ _position.strategy.strategyId = enums_1.Strategies.IdOverrides.LiquidationProtection;
1174
+ return _position;
1175
+ }
1021
1176
  const parsingMethodsMapping = {
1022
1177
  [enums_1.ProtocolIdentifiers.StrategiesAutomation.MakerDAO]: {
1023
1178
  [enums_1.Strategies.Identifiers.SavingsLiqProtection]: parseMakerSavingsLiqProtection,
@@ -1027,6 +1182,7 @@ const parsingMethodsMapping = {
1027
1182
  [enums_1.Strategies.Identifiers.TrailingStopToDebt]: parseMakerTrailingStop,
1028
1183
  [enums_1.Strategies.Identifiers.Repay]: parseMakerLeverageManagement,
1029
1184
  [enums_1.Strategies.Identifiers.Boost]: parseMakerLeverageManagement,
1185
+ [enums_1.Strategies.Identifiers.LiquidationProtection]: parseMakerLiquidationProtection,
1030
1186
  },
1031
1187
  [enums_1.ProtocolIdentifiers.StrategiesAutomation.Liquity]: {
1032
1188
  [enums_1.Strategies.Identifiers.CloseOnPriceToColl]: parseLiquityCloseOnPrice,
@@ -1065,6 +1221,7 @@ const parsingMethodsMapping = {
1065
1221
  [enums_1.Strategies.Identifiers.EoaBoostOnPrice]: parseAaveV3LeverageManagementOnPrice,
1066
1222
  [enums_1.Strategies.Identifiers.EoaCloseOnPrice]: parseAaveV3CloseOnPrice,
1067
1223
  [enums_1.Strategies.Identifiers.CollateralSwitch]: parseAaveV3CollateralSwitch,
1224
+ [enums_1.Strategies.Identifiers.LiquidationProtection]: parseAaveV3LiquidationProtection,
1068
1225
  },
1069
1226
  [enums_1.ProtocolIdentifiers.StrategiesAutomation.AaveV4]: {
1070
1227
  [enums_1.Strategies.Identifiers.Repay]: parseAaveV4LeverageManagement,
@@ -1079,6 +1236,7 @@ const parsingMethodsMapping = {
1079
1236
  [enums_1.Strategies.Identifiers.EoaCloseOnPrice]: parseAaveV4CloseOnPrice,
1080
1237
  [enums_1.Strategies.Identifiers.CollateralSwitch]: parseAaveV4CollateralSwitch,
1081
1238
  [enums_1.Strategies.Identifiers.EoaCollateralSwitch]: parseAaveV4CollateralSwitch,
1239
+ [enums_1.Strategies.Identifiers.LiquidationProtection]: parseAaveV4LiquidationProtection,
1082
1240
  },
1083
1241
  [enums_1.ProtocolIdentifiers.StrategiesAutomation.CompoundV2]: {
1084
1242
  [enums_1.Strategies.Identifiers.Repay]: parseCompoundV2LeverageManagement,
@@ -1095,6 +1253,9 @@ const parsingMethodsMapping = {
1095
1253
  [enums_1.Strategies.Identifiers.EoaBoostOnPrice]: parseCompoundV3LeverageManagementOnPrice,
1096
1254
  [enums_1.Strategies.Identifiers.CloseOnPrice]: parseCompoundV3CloseOnPrice,
1097
1255
  [enums_1.Strategies.Identifiers.EoaCloseOnPrice]: parseCompoundV3CloseOnPrice,
1256
+ // TODO -> here should prob separate EOA from SW
1257
+ [enums_1.Strategies.Identifiers.LiquidationProtection]: parseCompoundV3LiquidationProtection,
1258
+ [enums_1.Strategies.Identifiers.EoaLiquidationProtection]: parseCompoundV3LiquidationProtection,
1098
1259
  },
1099
1260
  [enums_1.ProtocolIdentifiers.StrategiesAutomation.ChickenBonds]: {
1100
1261
  [enums_1.Strategies.Identifiers.Rebond]: parseChickenBondsRebond,
@@ -1114,6 +1275,7 @@ const parsingMethodsMapping = {
1114
1275
  [enums_1.Strategies.Identifiers.BoostOnPrice]: parseSparkLeverageManagementOnPrice,
1115
1276
  [enums_1.Strategies.Identifiers.CloseOnPrice]: parseSparkCloseOnPrice,
1116
1277
  [enums_1.Strategies.Identifiers.CollateralSwitch]: parseSparkCollateralSwitch,
1278
+ [enums_1.Strategies.Identifiers.LiquidationProtection]: parseSparkLiquidationProtection,
1117
1279
  },
1118
1280
  [enums_1.ProtocolIdentifiers.StrategiesAutomation.CrvUSD]: {
1119
1281
  [enums_1.Strategies.Identifiers.Repay]: parseCrvUSDLeverageManagement,
@@ -1127,10 +1289,12 @@ const parsingMethodsMapping = {
1127
1289
  [enums_1.Strategies.Identifiers.EoaBoost]: parseMorphoBlueLeverageManagement,
1128
1290
  [enums_1.Strategies.Identifiers.BoostOnPrice]: parseMorphoBlueLeverageManagementOnPrice,
1129
1291
  [enums_1.Strategies.Identifiers.CloseOnPrice]: parseMorphoBlueCloseOnPrice,
1292
+ [enums_1.Strategies.Identifiers.LiquidationProtection]: parseMorphoBlueLiquidationProtection,
1130
1293
  },
1131
1294
  [enums_1.ProtocolIdentifiers.StrategiesAutomation.FluidT1]: {
1132
1295
  [enums_1.Strategies.Identifiers.Repay]: parseFluidT1LeverageManagement,
1133
1296
  [enums_1.Strategies.Identifiers.Boost]: parseFluidT1LeverageManagement,
1297
+ [enums_1.Strategies.Identifiers.LiquidationProtection]: parseFluidT1LiquidationProtection,
1134
1298
  },
1135
1299
  };
1136
1300
  function getParsingMethod(id, strategy) {