@defisaver/automation-sdk 3.3.14-strategies-refactor-dev → 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.
@@ -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;
@@ -123,6 +123,25 @@ function parseMakerLeverageManagement(position, parseData) {
123
123
  _position.strategy.strategyId = enums_1.Strategies.IdOverrides.LeverageManagement;
124
124
  return _position;
125
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
+ }
126
145
  function parseLiquityCloseOnPrice(position, parseData) {
127
146
  const _position = (0, lodash_1.cloneDeep)(position);
128
147
  const { subStruct } = parseData.subscriptionEventData;
@@ -233,6 +252,27 @@ function parseAaveV3LeverageManagement(position, parseData) {
233
252
  }
234
253
  return _position;
235
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
+ }
236
276
  function parseAaveV3LeverageManagementOnPrice(position, parseData) {
237
277
  const _position = (0, lodash_1.cloneDeep)(position);
238
278
  const { subStruct } = parseData.subscriptionEventData;
@@ -362,6 +402,27 @@ function parseAaveV4LeverageManagement(position, parseData) {
362
402
  }
363
403
  return _position;
364
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
+ }
365
426
  function parseAaveV4LeverageManagementOnPrice(position, parseData) {
366
427
  const _position = (0, lodash_1.cloneDeep)(position);
367
428
  const { subStruct } = parseData.subscriptionEventData;
@@ -546,6 +607,28 @@ function parseCompoundV3LeverageManagement(position, parseData) {
546
607
  _position.strategy.strategyId = isEOA ? enums_1.Strategies.IdOverrides.EoaLeverageManagement : enums_1.Strategies.IdOverrides.LeverageManagement;
547
608
  return _position;
548
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
+ }
549
632
  function parseCompoundV3LeverageManagementOnPrice(position, parseData) {
550
633
  const _position = (0, lodash_1.cloneDeep)(position);
551
634
  const { subStruct } = parseData.subscriptionEventData;
@@ -725,6 +808,25 @@ function parseSparkLeverageManagement(position, parseData) {
725
808
  _position.strategy.strategyId = enums_1.Strategies.IdOverrides.LeverageManagement;
726
809
  return _position;
727
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
+ }
728
830
  function parseSparkLeverageManagementOnPrice(position, parseData) {
729
831
  const _position = (0, lodash_1.cloneDeep)(position);
730
832
  const { subStruct } = parseData.subscriptionEventData;
@@ -879,6 +981,27 @@ function parseMorphoBlueLeverageManagement(position, parseData) {
879
981
  _position.strategy.strategyId = isEOA ? enums_1.Strategies.IdOverrides.EoaLeverageManagement : enums_1.Strategies.IdOverrides.LeverageManagement;
880
982
  return _position;
881
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
+ }
882
1005
  function parseMorphoBlueLeverageManagementOnPrice(position, parseData) {
883
1006
  const _position = (0, lodash_1.cloneDeep)(position);
884
1007
  const { subStruct } = parseData.subscriptionEventData;
@@ -1031,6 +1154,25 @@ function parseFluidT1LeverageManagement(position, parseData) {
1031
1154
  _position.strategy.strategyId = enums_1.Strategies.IdOverrides.LeverageManagement;
1032
1155
  return _position;
1033
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
+ }
1034
1176
  const parsingMethodsMapping = {
1035
1177
  [enums_1.ProtocolIdentifiers.StrategiesAutomation.MakerDAO]: {
1036
1178
  [enums_1.Strategies.Identifiers.SavingsLiqProtection]: parseMakerSavingsLiqProtection,
@@ -1040,6 +1182,7 @@ const parsingMethodsMapping = {
1040
1182
  [enums_1.Strategies.Identifiers.TrailingStopToDebt]: parseMakerTrailingStop,
1041
1183
  [enums_1.Strategies.Identifiers.Repay]: parseMakerLeverageManagement,
1042
1184
  [enums_1.Strategies.Identifiers.Boost]: parseMakerLeverageManagement,
1185
+ [enums_1.Strategies.Identifiers.LiquidationProtection]: parseMakerLiquidationProtection,
1043
1186
  },
1044
1187
  [enums_1.ProtocolIdentifiers.StrategiesAutomation.Liquity]: {
1045
1188
  [enums_1.Strategies.Identifiers.CloseOnPriceToColl]: parseLiquityCloseOnPrice,
@@ -1078,6 +1221,7 @@ const parsingMethodsMapping = {
1078
1221
  [enums_1.Strategies.Identifiers.EoaBoostOnPrice]: parseAaveV3LeverageManagementOnPrice,
1079
1222
  [enums_1.Strategies.Identifiers.EoaCloseOnPrice]: parseAaveV3CloseOnPrice,
1080
1223
  [enums_1.Strategies.Identifiers.CollateralSwitch]: parseAaveV3CollateralSwitch,
1224
+ [enums_1.Strategies.Identifiers.LiquidationProtection]: parseAaveV3LiquidationProtection,
1081
1225
  },
1082
1226
  [enums_1.ProtocolIdentifiers.StrategiesAutomation.AaveV4]: {
1083
1227
  [enums_1.Strategies.Identifiers.Repay]: parseAaveV4LeverageManagement,
@@ -1092,6 +1236,7 @@ const parsingMethodsMapping = {
1092
1236
  [enums_1.Strategies.Identifiers.EoaCloseOnPrice]: parseAaveV4CloseOnPrice,
1093
1237
  [enums_1.Strategies.Identifiers.CollateralSwitch]: parseAaveV4CollateralSwitch,
1094
1238
  [enums_1.Strategies.Identifiers.EoaCollateralSwitch]: parseAaveV4CollateralSwitch,
1239
+ [enums_1.Strategies.Identifiers.LiquidationProtection]: parseAaveV4LiquidationProtection,
1095
1240
  },
1096
1241
  [enums_1.ProtocolIdentifiers.StrategiesAutomation.CompoundV2]: {
1097
1242
  [enums_1.Strategies.Identifiers.Repay]: parseCompoundV2LeverageManagement,
@@ -1108,6 +1253,9 @@ const parsingMethodsMapping = {
1108
1253
  [enums_1.Strategies.Identifiers.EoaBoostOnPrice]: parseCompoundV3LeverageManagementOnPrice,
1109
1254
  [enums_1.Strategies.Identifiers.CloseOnPrice]: parseCompoundV3CloseOnPrice,
1110
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,
1111
1259
  },
1112
1260
  [enums_1.ProtocolIdentifiers.StrategiesAutomation.ChickenBonds]: {
1113
1261
  [enums_1.Strategies.Identifiers.Rebond]: parseChickenBondsRebond,
@@ -1127,6 +1275,7 @@ const parsingMethodsMapping = {
1127
1275
  [enums_1.Strategies.Identifiers.BoostOnPrice]: parseSparkLeverageManagementOnPrice,
1128
1276
  [enums_1.Strategies.Identifiers.CloseOnPrice]: parseSparkCloseOnPrice,
1129
1277
  [enums_1.Strategies.Identifiers.CollateralSwitch]: parseSparkCollateralSwitch,
1278
+ [enums_1.Strategies.Identifiers.LiquidationProtection]: parseSparkLiquidationProtection,
1130
1279
  },
1131
1280
  [enums_1.ProtocolIdentifiers.StrategiesAutomation.CrvUSD]: {
1132
1281
  [enums_1.Strategies.Identifiers.Repay]: parseCrvUSDLeverageManagement,
@@ -1140,10 +1289,12 @@ const parsingMethodsMapping = {
1140
1289
  [enums_1.Strategies.Identifiers.EoaBoost]: parseMorphoBlueLeverageManagement,
1141
1290
  [enums_1.Strategies.Identifiers.BoostOnPrice]: parseMorphoBlueLeverageManagementOnPrice,
1142
1291
  [enums_1.Strategies.Identifiers.CloseOnPrice]: parseMorphoBlueCloseOnPrice,
1292
+ [enums_1.Strategies.Identifiers.LiquidationProtection]: parseMorphoBlueLiquidationProtection,
1143
1293
  },
1144
1294
  [enums_1.ProtocolIdentifiers.StrategiesAutomation.FluidT1]: {
1145
1295
  [enums_1.Strategies.Identifiers.Repay]: parseFluidT1LeverageManagement,
1146
1296
  [enums_1.Strategies.Identifiers.Boost]: parseFluidT1LeverageManagement,
1297
+ [enums_1.Strategies.Identifiers.LiquidationProtection]: parseFluidT1LiquidationProtection,
1147
1298
  },
1148
1299
  };
1149
1300
  function getParsingMethod(id, strategy) {
@@ -1,11 +1,12 @@
1
- import type { OrderType } from '../types/enums';
2
- import { CloseToAssetType, Bundles, ChainId, RatioState, Strategies } from '../types/enums';
1
+ import { Bundles, ChainId, CloseToAssetType, RatioState, Strategies } from '../types/enums';
3
2
  import type { EthereumAddress, StrategyOrBundleIds } from '../types';
3
+ import type { OrderType } from '../types/enums';
4
4
  export declare const makerEncode: {
5
5
  repayFromSavings(bundleId: StrategyOrBundleIds, vaultId: number, triggerRepayRatio: number, targetRepayRatio: number, isBundle?: boolean, chainId?: ChainId, daiAddr?: EthereumAddress, mcdCdpManagerAddr?: EthereumAddress): (boolean | string[] | Strategies.MainnetIds | Strategies.OptimismIds | Strategies.ArbitrumIds | Strategies.BaseIds | Bundles.MainnetIds | Bundles.OptimismIds | Bundles.ArbitrumIds | Bundles.BaseIds)[];
6
6
  closeOnPrice(vaultId: number, ratioState: RatioState, price: string, closeToAssetAddr: EthereumAddress, chainlinkCollAddress: EthereumAddress, chainId?: ChainId, daiAddr?: EthereumAddress, mcdCdpManagerAddr?: EthereumAddress): (boolean | string[] | Strategies.MainnetIds)[];
7
7
  trailingStop(vaultId: number, triggerPercentage: number, closeToAssetAddr: EthereumAddress, chainlinkCollAddress: EthereumAddress, roundId: number, chainId?: ChainId, daiAddr?: EthereumAddress, mcdCdpManagerAddr?: EthereumAddress): (boolean | string[] | Strategies.MainnetIds)[];
8
8
  leverageManagementWithoutSubProxy(vaultId: number, triggerRatio: number, targetRatio: number, ratioState: RatioState, isBoost: boolean, daiAddr?: EthereumAddress): (boolean | string[] | Bundles.MainnetIds)[];
9
+ liquidationProtection(vaultId: number, triggerRatio: number, targetRatio: number, ratioState: RatioState, daiAddr?: EthereumAddress): (boolean | string[] | Bundles.MainnetIds)[];
9
10
  };
10
11
  export declare const liquityEncode: {
11
12
  closeOnPrice(priceOverOrUnder: RatioState, price: string, closeToAssetAddr: EthereumAddress, chainlinkCollAddress: EthereumAddress, chainId?: ChainId, collAddr?: EthereumAddress, debtAddr?: EthereumAddress): (boolean | string[] | Strategies.MainnetIds)[];
@@ -60,6 +61,7 @@ export declare const aaveV3Encode: {
60
61
  targetRatio: number;
61
62
  }): (number | boolean | string[])[];
62
63
  leverageManagementWithoutSubProxy(strategyOrBundleId: number, market: EthereumAddress, user: EthereumAddress, ratioState: RatioState, targetRatio: number, triggerRatio: number, isGeneric?: boolean): (number | boolean | string[])[];
64
+ liquidationProtection(strategyOrBundleId: number, market: EthereumAddress, user: EthereumAddress, ratioState: RatioState, targetRatio: number, triggerRatio: number): (number | boolean | string[])[];
63
65
  leverageManagementOnPriceGeneric(strategyOrBundleId: number, price: number, ratioState: RatioState, collAsset: EthereumAddress, collAssetId: number, debtAsset: EthereumAddress, debtAssetId: number, marketAddr: EthereumAddress, targetRatio: number, user: EthereumAddress): (number | boolean | string[])[];
64
66
  closeOnPriceGeneric(strategyOrBundleId: number, collAsset: EthereumAddress, collAssetId: number, debtAsset: EthereumAddress, debtAssetId: number, marketAddr: EthereumAddress, user: EthereumAddress, stopLossPrice?: number, stopLossType?: CloseToAssetType, takeProfitPrice?: number, takeProfitType?: CloseToAssetType): (number | boolean | string[])[];
65
67
  collateralSwitch(strategyOrBundleId: number, fromAsset: EthereumAddress, fromAssetId: number, toAsset: EthereumAddress, toAssetId: number, marketAddr: EthereumAddress, amountToSwitch: string, baseTokenAddress: EthereumAddress, quoteTokenAddress: EthereumAddress, price: number, state: RatioState): (number | boolean | string[])[];
@@ -69,6 +71,7 @@ export declare const compoundV2Encode: {
69
71
  };
70
72
  export declare const compoundV3Encode: {
71
73
  leverageManagementWithoutSubProxy(strategyOrBundleId: number, market: EthereumAddress, baseToken: EthereumAddress, user: EthereumAddress, ratioState: RatioState, targetRatio: number, triggerRatio: number): (number | boolean | string[])[];
74
+ liquidationProtection(market: EthereumAddress, baseToken: EthereumAddress, triggerRepayRatio: number, triggerBoostRatio: number, targetBoostRatio: number, targetRepayRatio: number, boostEnabled: boolean, isEOA: boolean): string[];
72
75
  leverageManagementOnPrice(strategyOrBundleId: number, market: EthereumAddress, collToken: EthereumAddress, baseToken: EthereumAddress, targetRatio: number, price: number, priceState: RatioState, ratioState: RatioState, user: EthereumAddress): (number | boolean | string[])[];
73
76
  closeOnPrice(strategyOrBundleId: number, market: EthereumAddress, collToken: EthereumAddress, baseToken: EthereumAddress, stopLossPrice: number | undefined, stopLossType: CloseToAssetType | undefined, takeProfitPrice: number | undefined, takeProfitType: CloseToAssetType | undefined, user: EthereumAddress): (number | boolean | string[])[];
74
77
  };
@@ -95,6 +98,7 @@ export declare const sparkEncode: {
95
98
  }): (number | boolean | string[])[];
96
99
  closeOnPriceGeneric(strategyOrBundleId: number, collAsset: EthereumAddress, collAssetId: number, debtAsset: EthereumAddress, debtAssetId: number, marketAddr: EthereumAddress, user: EthereumAddress, stopLossPrice?: number, stopLossType?: CloseToAssetType, takeProfitPrice?: number, takeProfitType?: CloseToAssetType): (number | boolean | string[])[];
97
100
  leverageManagementWithoutSubProxy(strategyOrBundleId: number, market: EthereumAddress, user: EthereumAddress, ratioState: RatioState, targetRatio: number, triggerRatio: number): (number | boolean | string[])[];
101
+ liquidationProtection(strategyOrBundleId: number, market: EthereumAddress, user: EthereumAddress, ratioState: RatioState, targetRatio: number, triggerRatio: number): (number | boolean | string[])[];
98
102
  collateralSwitch(strategyOrBundleId: number, fromAsset: EthereumAddress, fromAssetId: number, toAsset: EthereumAddress, toAssetId: number, marketAddr: EthereumAddress, amountToSwitch: string, baseTokenAddress: EthereumAddress, quoteTokenAddress: EthereumAddress, price: number, state: RatioState): (number | boolean | string[])[];
99
103
  };
100
104
  export declare const crvUSDEncode: {
@@ -103,6 +107,7 @@ export declare const crvUSDEncode: {
103
107
  };
104
108
  export declare const morphoBlueEncode: {
105
109
  leverageManagement(marketId: string, loanToken: EthereumAddress, collToken: EthereumAddress, oracle: EthereumAddress, irm: EthereumAddress, lltv: string, ratioState: RatioState, targetRatio: number, triggerRatio: number, user: EthereumAddress, isEOA: boolean, network: ChainId): (boolean | string[] | Bundles.BaseIds)[] | (boolean | string[] | Bundles.MainnetIds | Bundles.ArbitrumIds)[];
110
+ liquidationProtection(marketId: string, loanToken: EthereumAddress, collToken: EthereumAddress, oracle: EthereumAddress, irm: EthereumAddress, lltv: string, ratioState: RatioState, targetRatio: number, triggerRatio: number, user: EthereumAddress, isEOA: boolean, network: ChainId): (boolean | string[] | Bundles.MainnetIds)[];
106
111
  leverageManagementOnPrice(strategyOrBundleId: number, isBundle: boolean | undefined, loanToken: EthereumAddress, collToken: EthereumAddress, oracle: EthereumAddress, irm: EthereumAddress, lltv: string, user: EthereumAddress, targetRatio: number, price: number, priceState: RatioState): (number | boolean | string[])[];
107
112
  closeOnPrice(strategyOrBundleId: number, loanToken: EthereumAddress, collToken: EthereumAddress, oracle: EthereumAddress, irm: EthereumAddress, lltv: string, user: EthereumAddress, stopLossPrice?: number, stopLossType?: CloseToAssetType, takeProfitPrice?: number, takeProfitType?: CloseToAssetType): (number | boolean | string[])[];
108
113
  };
@@ -114,9 +119,11 @@ export declare const liquityV2Encode: {
114
119
  };
115
120
  export declare const fluidEncode: {
116
121
  leverageManagement(nftId: string, vault: EthereumAddress, ratioState: RatioState, targetRatio: number, triggerRatio: number, strategyOrBundleId: number): (number | boolean | string[])[];
122
+ liquidationProtection(nftId: string, vault: EthereumAddress, ratioState: RatioState, targetRatio: number, triggerRatio: number, strategyOrBundleId: number): (number | boolean | string[])[];
117
123
  };
118
124
  export declare const aaveV4Encode: {
119
125
  leverageManagement(strategyOrBundleId: number, owner: EthereumAddress, spoke: EthereumAddress, ratioState: RatioState, targetRatio: number, triggerRatio: number): (number | boolean | string[])[];
126
+ liquidationProtection(strategyOrBundleId: number, owner: EthereumAddress, spoke: EthereumAddress, ratioState: RatioState, targetRatio: number, triggerRatio: number): (number | boolean | string[])[];
120
127
  leverageManagementOnPrice(strategyOrBundleId: number, owner: EthereumAddress, spoke: EthereumAddress, collAsset: EthereumAddress, collAssetId: number, debtAsset: EthereumAddress, debtAssetId: number, targetRatio: number, price: string, priceState: RatioState, ratioState: RatioState): (number | boolean | string[])[];
121
128
  closeOnPrice(strategyOrBundleId: number, owner: EthereumAddress, spoke: EthereumAddress, collAsset: EthereumAddress, collAssetId: number, debtAsset: EthereumAddress, debtAssetId: number, stopLossPrice?: string, stopLossType?: CloseToAssetType, takeProfitPrice?: string, takeProfitType?: CloseToAssetType): (number | boolean | string[])[];
122
129
  collateralSwitch(strategyOrBundleId: number, owner: EthereumAddress, spoke: EthereumAddress, fromAsset: EthereumAddress, fromAssetId: number, toAsset: EthereumAddress, toAssetId: number, amountToSwitch: string, price: string, ratioState: RatioState): (number | boolean | string[])[];
@@ -25,8 +25,8 @@ var __importStar = (this && this.__importStar) || function (mod) {
25
25
  Object.defineProperty(exports, "__esModule", { value: true });
26
26
  exports.aaveV4Encode = exports.fluidEncode = exports.liquityV2Encode = exports.morphoBlueEncode = exports.crvUSDEncode = exports.sparkEncode = exports.exchangeEncode = exports.morphoAaveV2Encode = exports.compoundV3Encode = exports.compoundV2Encode = exports.aaveV3Encode = exports.aaveV2Encode = exports.chickenBondsEncode = exports.liquityEncode = exports.makerEncode = void 0;
27
27
  const tokens_1 = require("@defisaver/tokens");
28
- const enums_1 = require("../types/enums");
29
28
  const constants_1 = require("../constants");
29
+ const enums_1 = require("../types/enums");
30
30
  const subDataService = __importStar(require("./subDataService"));
31
31
  const triggerService = __importStar(require("./triggerService"));
32
32
  const utils_1 = require("./utils");
@@ -67,6 +67,17 @@ exports.makerEncode = {
67
67
  subData,
68
68
  ];
69
69
  },
70
+ liquidationProtection(vaultId, triggerRatio, targetRatio, ratioState, daiAddr) {
71
+ const bundleId = enums_1.Bundles.MainnetIds.MAKER_LIQUIDATION_PROTECTION;
72
+ const triggerData = triggerService.makerRatioTrigger.encode(vaultId, triggerRatio, ratioState);
73
+ const subData = subDataService.makerLiquidationProtectionSubData.encode(vaultId, targetRatio, daiAddr);
74
+ return [
75
+ bundleId,
76
+ true,
77
+ triggerData,
78
+ subData,
79
+ ];
80
+ },
70
81
  };
71
82
  exports.liquityEncode = {
72
83
  closeOnPrice(priceOverOrUnder, price, closeToAssetAddr, chainlinkCollAddress, chainId = enums_1.ChainId.Ethereum, collAddr, debtAddr) {
@@ -165,6 +176,12 @@ exports.aaveV3Encode = {
165
176
  const triggerData = triggerService.aaveV3RatioTrigger.encode(user, market, triggerRatio, ratioState);
166
177
  return [strategyOrBundleId, isBundle, triggerData, subData];
167
178
  },
179
+ liquidationProtection(strategyOrBundleId, market, user, ratioState, targetRatio, triggerRatio) {
180
+ const isBundle = true;
181
+ const subData = subDataService.aaveV3LiquidationProtectionSubData.encode(targetRatio, ratioState, market, user);
182
+ const triggerData = triggerService.aaveV3RatioTrigger.encode(user, market, triggerRatio, ratioState);
183
+ return [strategyOrBundleId, isBundle, triggerData, subData];
184
+ },
168
185
  leverageManagementOnPriceGeneric(strategyOrBundleId, price, ratioState, collAsset, collAssetId, debtAsset, debtAssetId, marketAddr, targetRatio, user) {
169
186
  const isBundle = true;
170
187
  const subDataEncoded = subDataService.aaveV3LeverageManagementOnPriceGeneric.encode(collAsset, collAssetId, debtAsset, debtAssetId, marketAddr, targetRatio, user);
@@ -200,6 +217,9 @@ exports.compoundV3Encode = {
200
217
  const triggerData = triggerService.compoundV3RatioTrigger.encode(user, market, triggerRatio, ratioState);
201
218
  return [strategyOrBundleId, isBundle, triggerData, subData];
202
219
  },
220
+ liquidationProtection(market, baseToken, triggerRepayRatio, triggerBoostRatio, targetBoostRatio, targetRepayRatio, boostEnabled, isEOA) {
221
+ return subDataService.compoundV3LiquidationProtectionSubData.encode(market, baseToken, triggerRepayRatio, triggerBoostRatio, targetBoostRatio, targetRepayRatio, boostEnabled, isEOA);
222
+ },
203
223
  leverageManagementOnPrice(strategyOrBundleId, market, collToken, baseToken, targetRatio, price, priceState, ratioState, // REPAY for repay on price, BOOST for boost on price
204
224
  user) {
205
225
  const isBundle = true;
@@ -257,6 +277,12 @@ exports.sparkEncode = {
257
277
  const triggerData = triggerService.sparkRatioTrigger.encode(user, market, triggerRatio, ratioState);
258
278
  return [strategyOrBundleId, isBundle, triggerData, subData];
259
279
  },
280
+ liquidationProtection(strategyOrBundleId, market, user, ratioState, targetRatio, triggerRatio) {
281
+ const isBundle = true;
282
+ const subData = subDataService.sparkLiquidationProtectionSubData.encode(targetRatio, ratioState);
283
+ const triggerData = triggerService.sparkRatioTrigger.encode(user, market, triggerRatio, ratioState);
284
+ return [strategyOrBundleId, isBundle, triggerData, subData];
285
+ },
260
286
  collateralSwitch(strategyOrBundleId, fromAsset, fromAssetId, toAsset, toAssetId, marketAddr, amountToSwitch, baseTokenAddress, quoteTokenAddress, price, state) {
261
287
  const isBundle = false;
262
288
  const subDataEncoded = subDataService.sparkCollateralSwitchSubData.encode(fromAsset, fromAssetId, toAsset, toAssetId, marketAddr, amountToSwitch);
@@ -299,6 +325,14 @@ exports.morphoBlueEncode = {
299
325
  const isBundle = true;
300
326
  return [strategyOrBundleId, isBundle, triggerData, subData];
301
327
  },
328
+ liquidationProtection(marketId, loanToken, collToken, oracle, irm, lltv, ratioState, targetRatio, triggerRatio, user, isEOA, network) {
329
+ const subData = subDataService.morphoBlueLiquidationProtectionSubData.encode(loanToken, collToken, oracle, irm, lltv, ratioState, targetRatio, user, isEOA);
330
+ const triggerData = triggerService.morphoBlueRatioTrigger.encode(marketId, user, triggerRatio, ratioState);
331
+ // TODO -> Check if need to deploy separate bundles for EOA, or can reuse this for EOA. Logic above is different for EOA and SW on arbi and mainnet. Base uses same for both, not sure if because of lack of EOA support or because it is using same bundle for both.
332
+ const bundleId = (0, utils_1.getBundleIdsByNetwork)(network).MORPHO_BLUE_LIQUIDATION_PROTECTION;
333
+ const isBundle = true;
334
+ return [bundleId, isBundle, triggerData, subData];
335
+ },
302
336
  leverageManagementOnPrice(strategyOrBundleId, isBundle = true, loanToken, collToken, oracle, irm, lltv, user, targetRatio, price, priceState) {
303
337
  const subData = subDataService.morphoBlueLeverageManagementOnPriceSubData.encode(loanToken, collToken, oracle, irm, lltv, targetRatio, user);
304
338
  const triggerData = triggerService.morphoBluePriceTrigger.encode(oracle, collToken, loanToken, price, priceState);
@@ -347,6 +381,12 @@ exports.fluidEncode = {
347
381
  const triggerData = triggerService.fluidRatioTrigger.encode(nftId, triggerRatio, ratioState);
348
382
  return [strategyOrBundleId, isBundle, triggerData, subData];
349
383
  },
384
+ liquidationProtection(nftId, vault, ratioState, targetRatio, triggerRatio, strategyOrBundleId) {
385
+ const isBundle = true;
386
+ const subData = subDataService.fluidLiquidationProtectionSubData.encode(nftId, vault, ratioState, targetRatio);
387
+ const triggerData = triggerService.fluidRatioTrigger.encode(nftId, triggerRatio, ratioState);
388
+ return [strategyOrBundleId, isBundle, triggerData, subData];
389
+ },
350
390
  };
351
391
  exports.aaveV4Encode = {
352
392
  leverageManagement(strategyOrBundleId, owner, spoke, ratioState, targetRatio, triggerRatio) {
@@ -355,6 +395,12 @@ exports.aaveV4Encode = {
355
395
  const triggerData = triggerService.aaveV4RatioTrigger.encode(owner, spoke, triggerRatio, ratioState);
356
396
  return [strategyOrBundleId, isBundle, triggerData, subData];
357
397
  },
398
+ liquidationProtection(strategyOrBundleId, owner, spoke, ratioState, targetRatio, triggerRatio) {
399
+ const isBundle = true;
400
+ const subData = subDataService.aaveV4LiquidationProtectionSubData.encode(spoke, owner, ratioState, targetRatio);
401
+ const triggerData = triggerService.aaveV4RatioTrigger.encode(owner, spoke, triggerRatio, ratioState);
402
+ return [strategyOrBundleId, isBundle, triggerData, subData];
403
+ },
358
404
  leverageManagementOnPrice(strategyOrBundleId, owner, spoke, collAsset, collAssetId, debtAsset, debtAssetId, targetRatio, price, priceState, ratioState) {
359
405
  const isBundle = true;
360
406
  const subData = subDataService.aaveV4LeverageManagementOnPriceSubData.encode(spoke, owner, collAsset, collAssetId, debtAsset, debtAssetId, ratioState, targetRatio);