@defisaver/automation-sdk 3.3.17 → 3.3.18-spark-eoa-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 (38) hide show
  1. package/cjs/constants/index.js +170 -0
  2. package/cjs/index.d.ts +2 -2
  3. package/cjs/index.js +5 -2
  4. package/cjs/services/ethereumService.test.js +4 -7
  5. package/cjs/services/strategiesService.js +195 -15
  6. package/cjs/services/strategySubService.d.ts +22 -17
  7. package/cjs/services/strategySubService.js +92 -28
  8. package/cjs/services/strategySubService.test.js +297 -40
  9. package/cjs/services/subDataService.d.ts +108 -20
  10. package/cjs/services/subDataService.js +97 -79
  11. package/cjs/services/subDataService.test.js +479 -174
  12. package/cjs/types/enums.d.ts +44 -6
  13. package/cjs/types/enums.js +38 -0
  14. package/esm/constants/index.js +170 -0
  15. package/esm/index.d.ts +2 -2
  16. package/esm/index.js +5 -2
  17. package/esm/services/ethereumService.test.js +4 -7
  18. package/esm/services/strategiesService.js +195 -15
  19. package/esm/services/strategySubService.d.ts +22 -17
  20. package/esm/services/strategySubService.js +91 -27
  21. package/esm/services/strategySubService.test.js +298 -38
  22. package/esm/services/subDataService.d.ts +108 -20
  23. package/esm/services/subDataService.js +95 -77
  24. package/esm/services/subDataService.test.js +480 -172
  25. package/esm/types/enums.d.ts +44 -6
  26. package/esm/types/enums.js +38 -0
  27. package/package.json +1 -1
  28. package/src/constants/index.ts +172 -1
  29. package/src/index.ts +22 -6
  30. package/src/services/ethereumService.test.ts +5 -8
  31. package/src/services/strategiesService.ts +262 -16
  32. package/src/services/strategySubService.test.ts +384 -46
  33. package/src/services/strategySubService.ts +251 -40
  34. package/src/services/subDataService.test.ts +639 -231
  35. package/src/services/subDataService.ts +149 -106
  36. package/src/services/utils.test.ts +1 -1
  37. package/src/services/utils.ts +3 -1
  38. package/src/types/enums.ts +38 -2
@@ -66,7 +66,7 @@ function parseMakerLeverageManagement(position, parseData) {
66
66
  const { subStruct, subId, subHash } = parseData.subscriptionEventData;
67
67
  const { isEnabled } = parseData.strategiesSubsData;
68
68
  const triggerData = triggerService.makerRatioTrigger.decode(subStruct.triggerData);
69
- const subData = subDataService.makerLeverageManagementSubData.decode(subStruct.subData);
69
+ const subData = subDataService.legacyMakerLeverageManagementSubData.decode(subStruct.subData);
70
70
  _position.strategyData.decoded.triggerData = triggerData;
71
71
  _position.strategyData.decoded.subData = subData;
72
72
  _position.positionId = getPositionId(_position.chainId, _position.protocol.id, subData.vaultId);
@@ -94,6 +94,24 @@ function parseMakerLeverageManagement(position, parseData) {
94
94
  _position.strategy.strategyId = Strategies.IdOverrides.LeverageManagement;
95
95
  return _position;
96
96
  }
97
+ function parseMakerLiquidationProtection(position, parseData) {
98
+ const _position = cloneDeep(position);
99
+ const { subStruct, subId } = parseData.subscriptionEventData;
100
+ const { isEnabled } = parseData.strategiesSubsData;
101
+ const triggerData = triggerService.makerRatioTrigger.decode(subStruct.triggerData);
102
+ const subData = subDataService.makerLiquidationProtectionSubData.decode(subStruct.subData);
103
+ _position.strategyData.decoded.triggerData = triggerData;
104
+ _position.strategyData.decoded.subData = subData;
105
+ _position.positionId = getPositionId(_position.chainId, _position.protocol.id, subData.vaultId);
106
+ _position.specific = {
107
+ triggerRepayRatio: triggerData.ratio,
108
+ targetRepayRatio: subData.targetRatio,
109
+ repayEnabled: isEnabled,
110
+ subId1: Number(subId),
111
+ };
112
+ _position.strategy.strategyId = Strategies.IdOverrides.LiquidationProtection;
113
+ return _position;
114
+ }
97
115
  function parseLiquityCloseOnPrice(position, parseData) {
98
116
  const _position = cloneDeep(position);
99
117
  const { subStruct } = parseData.subscriptionEventData;
@@ -131,7 +149,7 @@ function parseAaveV2LeverageManagement(position, parseData) {
131
149
  const { subStruct, subId, subHash } = parseData.subscriptionEventData;
132
150
  const { isEnabled } = parseData.strategiesSubsData;
133
151
  const triggerData = triggerService.aaveV2RatioTrigger.decode(subStruct.triggerData);
134
- const subData = subDataService.aaveV2LeverageManagementSubData.decode(subStruct.subData);
152
+ const subData = subDataService.legacyAaveV2LeverageManagementSubData.decode(subStruct.subData);
135
153
  _position.strategyData.decoded.triggerData = triggerData;
136
154
  _position.strategyData.decoded.subData = subData;
137
155
  _position.positionId = getPositionId(_position.chainId, _position.protocol.id, _position.owner, triggerData.market);
@@ -167,10 +185,10 @@ function parseAaveV3LeverageManagement(position, parseData) {
167
185
  const isEOA = _position.strategy.strategyId.includes('eoa');
168
186
  let subData;
169
187
  if (isEOA) {
170
- subData = subDataService.aaveV3LeverageManagementSubDataWithoutSubProxy.decode(subStruct.subData);
188
+ subData = subDataService.aaveV3LeverageManagementSubData.decode(subStruct.subData);
171
189
  }
172
190
  else {
173
- subData = subDataService.aaveV3LeverageManagementSubData.decode(subStruct.subData);
191
+ subData = subDataService.legacyAaveV3LeverageManagementSubData.decode(subStruct.subData);
174
192
  }
175
193
  _position.strategyData.decoded.triggerData = triggerData;
176
194
  _position.strategyData.decoded.subData = subData;
@@ -204,6 +222,26 @@ function parseAaveV3LeverageManagement(position, parseData) {
204
222
  }
205
223
  return _position;
206
224
  }
225
+ function parseAaveV3LiquidationProtection(position, parseData) {
226
+ const _position = cloneDeep(position);
227
+ const { subStruct, subId, subHash } = parseData.subscriptionEventData;
228
+ const { isEnabled } = parseData.strategiesSubsData;
229
+ const triggerData = triggerService.aaveV3RatioTrigger.decode(subStruct.triggerData);
230
+ const subData = subDataService.aaveV3LiquidationProtectionSubData.decode(subStruct.subData);
231
+ _position.strategyData.decoded.triggerData = triggerData;
232
+ _position.strategyData.decoded.subData = subData;
233
+ _position.positionId = getPositionId(_position.chainId, _position.protocol.id, _position.owner, triggerData.market);
234
+ _position.specific = {
235
+ triggerRepayRatio: triggerData.ratio,
236
+ targetRepayRatio: subData.targetRatio,
237
+ repayEnabled: isEnabled,
238
+ subId1: Number(subId),
239
+ subHashRepay: subHash,
240
+ };
241
+ const isEOA = _position.strategy.strategyId.includes('eoa');
242
+ _position.strategy.strategyId = isEOA ? Strategies.IdOverrides.EoaLiquidationProtection : Strategies.IdOverrides.LiquidationProtection;
243
+ return _position;
244
+ }
207
245
  function parseAaveV3LeverageManagementOnPrice(position, parseData) {
208
246
  const _position = cloneDeep(position);
209
247
  const { subStruct } = parseData.subscriptionEventData;
@@ -292,11 +330,17 @@ function parseAaveV3CollateralSwitch(position, parseData) {
292
330
  function parseSparkCollateralSwitch(position, parseData) {
293
331
  const _position = cloneDeep(position);
294
332
  const { subStruct } = parseData.subscriptionEventData;
333
+ const isEOA = _position.strategy.strategyId.includes('eoa');
295
334
  const triggerData = triggerService.sparkQuotePriceTrigger.decode(subStruct.triggerData);
296
- const subData = subDataService.sparkCollateralSwitchSubData.decode(subStruct.subData);
335
+ const subData = isEOA
336
+ ? subDataService.sparkGenericFLCollateralSwitchSubData.decode(subStruct.subData)
337
+ : subDataService.sparkCollateralSwitchSubData.decode(subStruct.subData);
297
338
  _position.strategyData.decoded.triggerData = triggerData;
298
339
  _position.strategyData.decoded.subData = subData;
299
340
  _position.positionId = getPositionId(_position.chainId, _position.protocol.id, _position.owner, subData.marketAddr);
341
+ _position.strategy.strategyId = isEOA
342
+ ? Strategies.Identifiers.EoaCollateralSwitch
343
+ : Strategies.Identifiers.CollateralSwitch;
300
344
  return _position;
301
345
  }
302
346
  function parseAaveV4LeverageManagement(position, parseData) {
@@ -333,6 +377,26 @@ function parseAaveV4LeverageManagement(position, parseData) {
333
377
  }
334
378
  return _position;
335
379
  }
380
+ function parseAaveV4LiquidationProtection(position, parseData) {
381
+ const _position = cloneDeep(position);
382
+ const { subStruct, subId, subHash } = parseData.subscriptionEventData;
383
+ const { isEnabled } = parseData.strategiesSubsData;
384
+ const triggerData = triggerService.aaveV4RatioTrigger.decode(subStruct.triggerData);
385
+ const subData = subDataService.aaveV4LiquidationProtectionSubData.decode(subStruct.subData);
386
+ const isEOA = _position.strategy.strategyId.includes('eoa');
387
+ _position.strategyData.decoded.triggerData = triggerData;
388
+ _position.strategyData.decoded.subData = subData;
389
+ _position.positionId = getPositionId(_position.chainId, _position.protocol.id, _position.owner, triggerData.spoke);
390
+ _position.strategy.strategyId = isEOA ? Strategies.IdOverrides.EoaLiquidationProtection : Strategies.IdOverrides.LiquidationProtection;
391
+ _position.specific = {
392
+ triggerRepayRatio: triggerData.ratio,
393
+ targetRepayRatio: subData.targetRatio,
394
+ repayEnabled: isEnabled,
395
+ subId1: Number(subId),
396
+ subHashRepay: subHash,
397
+ };
398
+ return _position;
399
+ }
336
400
  function parseAaveV4LeverageManagementOnPrice(position, parseData) {
337
401
  const _position = cloneDeep(position);
338
402
  const { subStruct } = parseData.subscriptionEventData;
@@ -452,7 +516,7 @@ function parseCompoundV2LeverageManagement(position, parseData) {
452
516
  const { subStruct, subId, subHash } = parseData.subscriptionEventData;
453
517
  const { isEnabled } = parseData.strategiesSubsData;
454
518
  const triggerData = triggerService.compoundV2RatioTrigger.decode(subStruct.triggerData);
455
- const subData = subDataService.compoundV2LeverageManagementSubData.decode(subStruct.subData);
519
+ const subData = subDataService.legacyCompoundV2LeverageManagementSubData.decode(subStruct.subData);
456
520
  _position.strategyData.decoded.triggerData = triggerData;
457
521
  _position.strategyData.decoded.subData = subData;
458
522
  _position.owner = triggerData.owner.toLowerCase();
@@ -486,7 +550,7 @@ function parseCompoundV3LeverageManagement(position, parseData) {
486
550
  const _position = cloneDeep(position);
487
551
  const { subStruct, subId, subHash } = parseData.subscriptionEventData;
488
552
  const { isEnabled } = parseData.strategiesSubsData;
489
- const subDataDecoder = subDataService.compoundV3LeverageManagementSubDataWithoutSubProxy;
553
+ const subDataDecoder = subDataService.compoundV3LeverageManagementSubData;
490
554
  const triggerData = triggerService.compoundV3RatioTrigger.decode(subStruct.triggerData);
491
555
  const subData = subDataDecoder.decode(subStruct.subData);
492
556
  _position.strategyData.decoded.triggerData = triggerData;
@@ -517,6 +581,27 @@ function parseCompoundV3LeverageManagement(position, parseData) {
517
581
  _position.strategy.strategyId = isEOA ? Strategies.IdOverrides.EoaLeverageManagement : Strategies.IdOverrides.LeverageManagement;
518
582
  return _position;
519
583
  }
584
+ function parseCompoundV3LiquidationProtection(position, parseData) {
585
+ const _position = cloneDeep(position);
586
+ const { subStruct, subId, subHash } = parseData.subscriptionEventData;
587
+ const { isEnabled } = parseData.strategiesSubsData;
588
+ const subDataDecoder = subDataService.compoundV3LiquidationProtectionSubData;
589
+ const triggerData = triggerService.compoundV3RatioTrigger.decode(subStruct.triggerData);
590
+ const subData = subDataDecoder.decode(subStruct.subData);
591
+ _position.strategyData.decoded.triggerData = triggerData;
592
+ _position.strategyData.decoded.subData = subData;
593
+ _position.positionId = getPositionId(_position.chainId, _position.protocol.id, triggerData.owner.toLowerCase(), triggerData.market);
594
+ const isEOA = _position.strategy.strategyId.includes('eoa');
595
+ _position.specific = {
596
+ triggerRepayRatio: triggerData.ratio,
597
+ targetRepayRatio: subData.targetRatio,
598
+ repayEnabled: isEnabled,
599
+ subId1: Number(subId),
600
+ subHashRepay: subHash,
601
+ };
602
+ _position.strategy.strategyId = isEOA ? Strategies.IdOverrides.EoaLiquidationProtection : Strategies.IdOverrides.LiquidationProtection;
603
+ return _position;
604
+ }
520
605
  function parseCompoundV3LeverageManagementOnPrice(position, parseData) {
521
606
  const _position = cloneDeep(position);
522
607
  const { subStruct } = parseData.subscriptionEventData;
@@ -590,7 +675,7 @@ function parseExchangeDca(position, parseData, chainId) {
590
675
  function parseExchangeLimitOrder(position, parseData, chainId) {
591
676
  const _position = cloneDeep(position);
592
677
  const { subStruct } = parseData.subscriptionEventData;
593
- _position.strategyData.decoded.subData = subDataService.exchangeLimitOrderSubData.decode(subStruct.subData, chainId);
678
+ _position.strategyData.decoded.subData = subDataService.legacyExchangeLimitOrderSubData.decode(subStruct.subData, chainId);
594
679
  const fromTokenDecimals = getAssetInfoByAddress(_position.strategyData.decoded.subData.fromToken, chainId).decimals;
595
680
  const toTokenDecimals = getAssetInfoByAddress(_position.strategyData.decoded.subData.toToken, chainId).decimals;
596
681
  _position.strategyData.decoded.triggerData = triggerService.exchangeOffchainPriceTrigger.decode(subStruct.triggerData, fromTokenDecimals, toTokenDecimals);
@@ -602,7 +687,7 @@ function parseLiquityLeverageManagement(position, parseData) {
602
687
  const { subStruct, subId, subHash } = parseData.subscriptionEventData;
603
688
  const { isEnabled } = parseData.strategiesSubsData;
604
689
  const triggerData = triggerService.liquityRatioTrigger.decode(subStruct.triggerData);
605
- const subData = subDataService.liquityLeverageManagementSubData.decode(subStruct.subData);
690
+ const subData = subDataService.legacyLiquityLeverageManagementSubData.decode(subStruct.subData);
606
691
  _position.strategyData.decoded.triggerData = triggerData;
607
692
  _position.strategyData.decoded.subData = subData;
608
693
  _position.positionId = getPositionId(_position.chainId, _position.protocol.id, _position.owner);
@@ -667,19 +752,22 @@ function parseSparkLeverageManagement(position, parseData) {
667
752
  const _position = cloneDeep(position);
668
753
  const { subStruct, subId, subHash } = parseData.subscriptionEventData;
669
754
  const { isEnabled } = parseData.strategiesSubsData;
755
+ const isEOA = _position.strategy.strategyId.includes('eoa');
670
756
  const triggerData = triggerService.sparkRatioTrigger.decode(subStruct.triggerData);
671
- const subData = subDataService.sparkLeverageManagementSubData.decode(subStruct.subData);
757
+ const subData = isEOA
758
+ ? subDataService.sparkGenericLeverageManagementSubData.decode(subStruct.subData)
759
+ : subDataService.legacySparkLeverageManagementSubData.decode(subStruct.subData);
672
760
  _position.strategyData.decoded.triggerData = triggerData;
673
761
  _position.strategyData.decoded.subData = subData;
674
762
  _position.positionId = getPositionId(_position.chainId, _position.protocol.id, _position.owner, triggerData.market);
675
- const isRepay = _position.strategy.strategyId === Strategies.Identifiers.Repay;
763
+ const isRepay = [Strategies.Identifiers.Repay, Strategies.Identifiers.EoaRepay].includes(_position.strategy.strategyId);
676
764
  if (isRepay) {
677
765
  _position.specific = {
678
766
  triggerRepayRatio: triggerData.ratio,
679
767
  targetRepayRatio: subData.targetRatio,
680
768
  repayEnabled: isEnabled,
681
769
  subId1: Number(subId),
682
- mergeWithId: Strategies.Identifiers.Boost,
770
+ mergeWithId: isEOA ? Strategies.Identifiers.EoaBoost : Strategies.Identifiers.Boost,
683
771
  subHashRepay: subHash,
684
772
  };
685
773
  }
@@ -689,18 +777,48 @@ function parseSparkLeverageManagement(position, parseData) {
689
777
  targetBoostRatio: subData.targetRatio,
690
778
  boostEnabled: isEnabled,
691
779
  subId2: Number(subId),
692
- mergeId: Strategies.Identifiers.Boost,
780
+ mergeId: isEOA ? Strategies.Identifiers.EoaBoost : Strategies.Identifiers.Boost,
693
781
  subHashBoost: subHash,
694
782
  };
695
783
  }
696
- _position.strategy.strategyId = Strategies.IdOverrides.LeverageManagement;
784
+ _position.strategy.strategyId = isEOA
785
+ ? Strategies.IdOverrides.EoaLeverageManagement
786
+ : Strategies.IdOverrides.LeverageManagement;
787
+ return _position;
788
+ }
789
+ function parseSparkLiquidationProtection(position, parseData) {
790
+ const _position = cloneDeep(position);
791
+ const { subStruct, subId, subHash } = parseData.subscriptionEventData;
792
+ const { isEnabled } = parseData.strategiesSubsData;
793
+ const isEOA = _position.strategy.strategyId.includes('eoa');
794
+ const triggerData = triggerService.sparkRatioTrigger.decode(subStruct.triggerData);
795
+ const subData = isEOA
796
+ ? subDataService.sparkGenericLiquidationProtectionSubData.decode(subStruct.subData)
797
+ : subDataService.sparkLiquidationProtectionSubData.decode(subStruct.subData);
798
+ _position.strategyData.decoded.triggerData = triggerData;
799
+ _position.strategyData.decoded.subData = subData;
800
+ _position.positionId = getPositionId(_position.chainId, _position.protocol.id, _position.owner, triggerData.market);
801
+ _position.specific = {
802
+ triggerRepayRatio: triggerData.ratio,
803
+ targetRepayRatio: subData.targetRatio,
804
+ repayEnabled: isEnabled,
805
+ subId1: Number(subId),
806
+ subHashRepay: subHash,
807
+ };
808
+ _position.strategy.strategyId = isEOA
809
+ ? Strategies.IdOverrides.EoaLiquidationProtection
810
+ : Strategies.IdOverrides.LiquidationProtection;
811
+ _position.strategy.strategyId = Strategies.IdOverrides.LiquidationProtection;
697
812
  return _position;
698
813
  }
699
814
  function parseSparkLeverageManagementOnPrice(position, parseData) {
700
815
  const _position = cloneDeep(position);
701
816
  const { subStruct } = parseData.subscriptionEventData;
817
+ const isEOA = _position.strategy.strategyId.includes('eoa');
702
818
  const triggerData = triggerService.sparkQuotePriceTrigger.decode(subStruct.triggerData);
703
- const subData = subDataService.sparkLeverageManagementOnPriceSubData.decode(subStruct.subData);
819
+ const subData = isEOA
820
+ ? subDataService.sparkLeverageManagementOnPriceGenericSubData.decode(subStruct.subData)
821
+ : subDataService.sparkLeverageManagementOnPriceSubData.decode(subStruct.subData);
704
822
  _position.strategyData.decoded.triggerData = triggerData;
705
823
  _position.strategyData.decoded.subData = subData;
706
824
  _position.positionId = getPositionId(_position.chainId, _position.protocol.id, _position.owner, subData.marketAddr);
@@ -717,6 +835,9 @@ function parseSparkLeverageManagementOnPrice(position, parseData) {
717
835
  price: triggerData.price,
718
836
  ratioState: triggerData.ratioState,
719
837
  };
838
+ _position.strategy.strategyId = isEOA
839
+ ? Strategies.IdOverrides.EoaLeverageManagementOnPrice
840
+ : Strategies.IdOverrides.LeverageManagementOnPrice;
720
841
  return _position;
721
842
  }
722
843
  function parseSparkCloseOnPrice(position, parseData) {
@@ -724,9 +845,11 @@ function parseSparkCloseOnPrice(position, parseData) {
724
845
  const { subStruct } = parseData.subscriptionEventData;
725
846
  const triggerData = triggerService.sparkQuotePriceRangeTrigger.decode(subStruct.triggerData);
726
847
  const subData = subDataService.sparkCloseGenericSubData.decode(subStruct.subData);
848
+ const isEOA = _position.strategy.strategyId.includes('eoa');
727
849
  _position.strategyData.decoded.triggerData = triggerData;
728
850
  _position.strategyData.decoded.subData = subData;
729
851
  _position.positionId = getPositionId(_position.chainId, _position.protocol.id, _position.owner, subData.marketAddr);
852
+ _position.strategy.strategyId = isEOA ? Strategies.Identifiers.EoaCloseOnPrice : Strategies.Identifiers.CloseOnPrice;
730
853
  const { takeProfitType, stopLossType } = getStopLossAndTakeProfitTypeByCloseStrategyType(+subData.closeType);
731
854
  _position.specific = {
732
855
  collAsset: subData.collAsset,
@@ -850,6 +973,26 @@ function parseMorphoBlueLeverageManagement(position, parseData) {
850
973
  _position.strategy.strategyId = isEOA ? Strategies.IdOverrides.EoaLeverageManagement : Strategies.IdOverrides.LeverageManagement;
851
974
  return _position;
852
975
  }
976
+ function parseMorphoBlueLiquidationProtection(position, parseData) {
977
+ const _position = cloneDeep(position);
978
+ const { subStruct, subId, subHash } = parseData.subscriptionEventData;
979
+ const { isEnabled } = parseData.strategiesSubsData;
980
+ const triggerData = triggerService.morphoBlueRatioTrigger.decode(subStruct.triggerData);
981
+ const subData = subDataService.morphoBlueLiquidationProtectionSubData.decode(subStruct.subData);
982
+ _position.strategyData.decoded.triggerData = triggerData;
983
+ _position.strategyData.decoded.subData = subData;
984
+ _position.positionId = getPositionId(_position.chainId, _position.protocol.id, triggerData.owner.toLowerCase(), triggerData.marketId);
985
+ _position.specific = {
986
+ triggerRepayRatio: triggerData.ratio,
987
+ targetRepayRatio: subData.targetRatio,
988
+ repayEnabled: isEnabled,
989
+ subId1: Number(subId),
990
+ subHashRepay: subHash,
991
+ };
992
+ const isEOA = _position.strategy.strategyId.includes('eoa');
993
+ _position.strategy.strategyId = isEOA ? Strategies.IdOverrides.EoaLiquidationProtection : Strategies.IdOverrides.LiquidationProtection;
994
+ return _position;
995
+ }
853
996
  function parseMorphoBlueLeverageManagementOnPrice(position, parseData) {
854
997
  const _position = cloneDeep(position);
855
998
  const { subStruct } = parseData.subscriptionEventData;
@@ -1008,6 +1151,25 @@ function parseFluidT1LeverageManagement(position, parseData) {
1008
1151
  _position.strategy.strategyId = Strategies.IdOverrides.LeverageManagement;
1009
1152
  return _position;
1010
1153
  }
1154
+ function parseFluidT1LiquidationProtection(position, parseData) {
1155
+ const _position = cloneDeep(position);
1156
+ const { subStruct, subId, subHash } = parseData.subscriptionEventData;
1157
+ const { isEnabled } = parseData.strategiesSubsData;
1158
+ const triggerData = triggerService.fluidRatioTrigger.decode(subStruct.triggerData);
1159
+ const subData = subDataService.fluidLiquidationProtectionSubData.decode(subStruct.subData);
1160
+ _position.strategyData.decoded.triggerData = triggerData;
1161
+ _position.strategyData.decoded.subData = subData;
1162
+ _position.positionId = getPositionId(_position.chainId, _position.protocol.id, _position.owner, triggerData.nftId, subData.vault);
1163
+ _position.specific = {
1164
+ triggerRepayRatio: triggerData.ratio,
1165
+ targetRepayRatio: subData.targetRatio,
1166
+ repayEnabled: isEnabled,
1167
+ subId1: Number(subId),
1168
+ subHashRepay: subHash,
1169
+ };
1170
+ _position.strategy.strategyId = Strategies.IdOverrides.LiquidationProtection;
1171
+ return _position;
1172
+ }
1011
1173
  const parsingMethodsMapping = {
1012
1174
  [ProtocolIdentifiers.StrategiesAutomation.MakerDAO]: {
1013
1175
  [Strategies.Identifiers.SavingsLiqProtection]: parseMakerSavingsLiqProtection,
@@ -1017,6 +1179,7 @@ const parsingMethodsMapping = {
1017
1179
  [Strategies.Identifiers.TrailingStopToDebt]: parseMakerTrailingStop,
1018
1180
  [Strategies.Identifiers.Repay]: parseMakerLeverageManagement,
1019
1181
  [Strategies.Identifiers.Boost]: parseMakerLeverageManagement,
1182
+ [Strategies.Identifiers.LiquidationProtection]: parseMakerLiquidationProtection,
1020
1183
  },
1021
1184
  [ProtocolIdentifiers.StrategiesAutomation.Liquity]: {
1022
1185
  [Strategies.Identifiers.CloseOnPriceToColl]: parseLiquityCloseOnPrice,
@@ -1055,6 +1218,8 @@ const parsingMethodsMapping = {
1055
1218
  [Strategies.Identifiers.EoaBoostOnPrice]: parseAaveV3LeverageManagementOnPrice,
1056
1219
  [Strategies.Identifiers.EoaCloseOnPrice]: parseAaveV3CloseOnPrice,
1057
1220
  [Strategies.Identifiers.CollateralSwitch]: parseAaveV3CollateralSwitch,
1221
+ [Strategies.Identifiers.LiquidationProtection]: parseAaveV3LiquidationProtection,
1222
+ [Strategies.Identifiers.EoaLiquidationProtection]: parseAaveV3LiquidationProtection,
1058
1223
  },
1059
1224
  [ProtocolIdentifiers.StrategiesAutomation.AaveV4]: {
1060
1225
  [Strategies.Identifiers.Repay]: parseAaveV4LeverageManagement,
@@ -1069,6 +1234,8 @@ const parsingMethodsMapping = {
1069
1234
  [Strategies.Identifiers.EoaCloseOnPrice]: parseAaveV4CloseOnPrice,
1070
1235
  [Strategies.Identifiers.CollateralSwitch]: parseAaveV4CollateralSwitch,
1071
1236
  [Strategies.Identifiers.EoaCollateralSwitch]: parseAaveV4CollateralSwitch,
1237
+ [Strategies.Identifiers.LiquidationProtection]: parseAaveV4LiquidationProtection,
1238
+ [Strategies.Identifiers.EoaLiquidationProtection]: parseAaveV4LiquidationProtection,
1072
1239
  },
1073
1240
  [ProtocolIdentifiers.StrategiesAutomation.CompoundV2]: {
1074
1241
  [Strategies.Identifiers.Repay]: parseCompoundV2LeverageManagement,
@@ -1085,6 +1252,8 @@ const parsingMethodsMapping = {
1085
1252
  [Strategies.Identifiers.EoaBoostOnPrice]: parseCompoundV3LeverageManagementOnPrice,
1086
1253
  [Strategies.Identifiers.CloseOnPrice]: parseCompoundV3CloseOnPrice,
1087
1254
  [Strategies.Identifiers.EoaCloseOnPrice]: parseCompoundV3CloseOnPrice,
1255
+ [Strategies.Identifiers.LiquidationProtection]: parseCompoundV3LiquidationProtection,
1256
+ [Strategies.Identifiers.EoaLiquidationProtection]: parseCompoundV3LiquidationProtection,
1088
1257
  },
1089
1258
  [ProtocolIdentifiers.StrategiesAutomation.ChickenBonds]: {
1090
1259
  [Strategies.Identifiers.Rebond]: parseChickenBondsRebond,
@@ -1103,7 +1272,15 @@ const parsingMethodsMapping = {
1103
1272
  [Strategies.Identifiers.RepayOnPrice]: parseSparkLeverageManagementOnPrice,
1104
1273
  [Strategies.Identifiers.BoostOnPrice]: parseSparkLeverageManagementOnPrice,
1105
1274
  [Strategies.Identifiers.CloseOnPrice]: parseSparkCloseOnPrice,
1275
+ [Strategies.Identifiers.EoaRepay]: parseSparkLeverageManagement,
1276
+ [Strategies.Identifiers.EoaBoost]: parseSparkLeverageManagement,
1277
+ [Strategies.Identifiers.EoaRepayOnPrice]: parseSparkLeverageManagementOnPrice,
1278
+ [Strategies.Identifiers.EoaBoostOnPrice]: parseSparkLeverageManagementOnPrice,
1279
+ [Strategies.Identifiers.EoaCloseOnPrice]: parseSparkCloseOnPrice,
1106
1280
  [Strategies.Identifiers.CollateralSwitch]: parseSparkCollateralSwitch,
1281
+ [Strategies.Identifiers.EoaCollateralSwitch]: parseSparkCollateralSwitch,
1282
+ [Strategies.Identifiers.LiquidationProtection]: parseSparkLiquidationProtection,
1283
+ [Strategies.Identifiers.EoaLiquidationProtection]: parseSparkLiquidationProtection,
1107
1284
  },
1108
1285
  [ProtocolIdentifiers.StrategiesAutomation.CrvUSD]: {
1109
1286
  [Strategies.Identifiers.Repay]: parseCrvUSDLeverageManagement,
@@ -1120,11 +1297,14 @@ const parsingMethodsMapping = {
1120
1297
  [Strategies.Identifiers.EoaBoostOnPrice]: parseMorphoBlueLeverageManagementOnPrice,
1121
1298
  [Strategies.Identifiers.EoaRepayOnPrice]: parseMorphoBlueLeverageManagementOnPrice,
1122
1299
  [Strategies.Identifiers.CloseOnPrice]: parseMorphoBlueCloseOnPrice,
1300
+ [Strategies.Identifiers.LiquidationProtection]: parseMorphoBlueLiquidationProtection,
1301
+ [Strategies.Identifiers.EoaLiquidationProtection]: parseMorphoBlueLiquidationProtection,
1123
1302
  [Strategies.Identifiers.EoaCloseOnPrice]: parseMorphoBlueCloseOnPrice,
1124
1303
  },
1125
1304
  [ProtocolIdentifiers.StrategiesAutomation.FluidT1]: {
1126
1305
  [Strategies.Identifiers.Repay]: parseFluidT1LeverageManagement,
1127
1306
  [Strategies.Identifiers.Boost]: parseFluidT1LeverageManagement,
1307
+ [Strategies.Identifiers.LiquidationProtection]: parseFluidT1LiquidationProtection,
1128
1308
  },
1129
1309
  };
1130
1310
  function getParsingMethod(id, strategy) {
@@ -1,26 +1,24 @@
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
- leverageManagementWithoutSubProxy(vaultId: number, triggerRatio: number, targetRatio: number, ratioState: RatioState, isBoost: boolean, daiAddr?: EthereumAddress): (boolean | string[] | Bundles.MainnetIds)[];
8
+ leverageManagement(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)[];
12
13
  trailingStop(triggerPercentage: number, closeToAssetAddr: EthereumAddress, chainlinkCollAddress: EthereumAddress, roundId: number, chainId?: ChainId, collAddr?: EthereumAddress, debtAddr?: EthereumAddress): (boolean | string[] | Strategies.MainnetIds)[];
13
14
  paybackFromChickenBondStrategySub(proxyAddress: EthereumAddress, ratio: number, sourceId: string, sourceType: number, ratioState?: RatioState): (boolean | string[] | Bundles.MainnetIds)[];
14
- leverageManagementWithoutSubProxy(strategyOrBundleId: number, user: EthereumAddress, ratioState: RatioState, targetRatio: number, triggerRatio: number): (number | boolean | string[])[];
15
+ leverageManagement(strategyOrBundleId: number, user: EthereumAddress, ratioState: RatioState, targetRatio: number, triggerRatio: number): (number | boolean | string[])[];
15
16
  dsrPayback(proxyAddress: EthereumAddress, triggerRatio: number, targetRatio: number): (boolean | string[] | Strategies.MainnetIds)[];
16
17
  dsrSupply(proxyAddress: EthereumAddress, triggerRatio: number, targetRatio: number): (boolean | string[] | Strategies.MainnetIds)[];
17
18
  debtInFrontRepay(proxyAddress: EthereumAddress, debtInFrontMin: string, targetRatioIncrease: number): (boolean | string[] | Strategies.MainnetIds)[];
18
19
  };
19
- export declare const chickenBondsEncode: {
20
- rebond(bondId: number): string[];
21
- };
22
20
  export declare const aaveV2Encode: {
23
- leverageManagementWithoutSubProxy(strategyOrBundleId: number, market: EthereumAddress, user: EthereumAddress, ratioState: RatioState, targetRatio: number, triggerRatio: number): (number | boolean | string[])[];
21
+ leverageManagement(strategyOrBundleId: number, market: EthereumAddress, user: EthereumAddress, ratioState: RatioState, targetRatio: number, triggerRatio: number): (number | boolean | string[])[];
24
22
  };
25
23
  export declare const aaveV3Encode: {
26
24
  closeToAsset(strategyOrBundleId: number, isBundle: boolean | undefined, triggerData: {
@@ -59,25 +57,24 @@ export declare const aaveV3Encode: {
59
57
  marketAddr: EthereumAddress;
60
58
  targetRatio: number;
61
59
  }): (number | boolean | string[])[];
62
- leverageManagementWithoutSubProxy(strategyOrBundleId: number, market: EthereumAddress, user: EthereumAddress, ratioState: RatioState, targetRatio: number, triggerRatio: number, isGeneric?: boolean): (number | boolean | string[])[];
60
+ leverageManagement(strategyOrBundleId: number, market: EthereumAddress, user: EthereumAddress, ratioState: RatioState, targetRatio: number, triggerRatio: number, isGeneric?: boolean): (number | boolean | string[])[];
61
+ liquidationProtection(strategyOrBundleId: number, market: EthereumAddress, user: EthereumAddress, ratioState: RatioState, targetRatio: number, triggerRatio: number): (number | boolean | string[])[];
63
62
  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
63
  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
64
  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[])[];
66
65
  };
67
66
  export declare const compoundV2Encode: {
68
- leverageManagementWithoutSubProxy(strategyOrBundleId: number, user: EthereumAddress, ratioState: RatioState, targetRatio: number, triggerRatio: number): (number | boolean | string[])[];
67
+ leverageManagement(strategyOrBundleId: number, user: EthereumAddress, ratioState: RatioState, targetRatio: number, triggerRatio: number): (number | boolean | string[])[];
69
68
  };
70
69
  export declare const compoundV3Encode: {
71
- leverageManagementWithoutSubProxy(strategyOrBundleId: number, market: EthereumAddress, baseToken: EthereumAddress, user: EthereumAddress, ratioState: RatioState, targetRatio: number, triggerRatio: number): (number | boolean | string[])[];
70
+ leverageManagement(strategyOrBundleId: number, market: EthereumAddress, baseToken: EthereumAddress, user: EthereumAddress, ratioState: RatioState, targetRatio: number, triggerRatio: number): (number | boolean | string[])[];
71
+ liquidationProtection(strategyOrBundleId: number, market: EthereumAddress, baseToken: EthereumAddress, user: EthereumAddress, ratioState: RatioState, targetRatio: number, triggerRatio: number): (number | boolean | string[])[];
72
72
  leverageManagementOnPrice(strategyOrBundleId: number, market: EthereumAddress, collToken: EthereumAddress, baseToken: EthereumAddress, targetRatio: number, price: number, priceState: RatioState, ratioState: RatioState, user: EthereumAddress): (number | boolean | string[])[];
73
73
  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
74
  };
75
- export declare const morphoAaveV2Encode: {
76
- leverageManagement(triggerRepayRatio: number, triggerBoostRatio: number, targetBoostRatio: number, targetRepayRatio: number, boostEnabled: boolean): string[];
77
- };
78
75
  export declare const exchangeEncode: {
79
76
  dca(fromToken: EthereumAddress, toToken: EthereumAddress, amount: string, timestamp: number, interval: number, network: ChainId): (boolean | string[] | Strategies.MainnetIds | Strategies.OptimismIds | Strategies.ArbitrumIds | Strategies.BaseIds)[];
80
- limitOrderWithoutSubProxy(fromToken: EthereumAddress, toToken: EthereumAddress, amount: string, targetPrice: string, goodUntil: string | number, orderType: OrderType, fromTokenDecimals: number, toTokenDecimals: number, network: ChainId): (boolean | string[] | Strategies.MainnetIds | Strategies.OptimismIds | Strategies.ArbitrumIds | Strategies.BaseIds)[];
77
+ limitOrder(fromToken: EthereumAddress, toToken: EthereumAddress, amount: string, targetPrice: string, goodUntil: string | number, orderType: OrderType, fromTokenDecimals: number, toTokenDecimals: number, network: ChainId): (boolean | string[] | Strategies.MainnetIds | Strategies.OptimismIds | Strategies.ArbitrumIds | Strategies.BaseIds)[];
81
78
  };
82
79
  export declare const sparkEncode: {
83
80
  leverageManagementOnPrice(strategyOrBundleId: number, isBundle: boolean | undefined, triggerData: {
@@ -94,17 +91,23 @@ export declare const sparkEncode: {
94
91
  targetRatio: number;
95
92
  }): (number | boolean | string[])[];
96
93
  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
- leverageManagementWithoutSubProxy(strategyOrBundleId: number, market: EthereumAddress, user: EthereumAddress, ratioState: RatioState, targetRatio: number, triggerRatio: number): (number | boolean | string[])[];
94
+ leverageManagement(strategyOrBundleId: number, market: EthereumAddress, user: EthereumAddress, ratioState: RatioState, targetRatio: number, triggerRatio: number): (number | boolean | string[])[];
95
+ liquidationProtection(strategyOrBundleId: number, market: EthereumAddress, user: EthereumAddress, ratioState: RatioState, targetRatio: number, triggerRatio: number): (number | boolean | string[])[];
96
+ leverageManagementGeneric(strategyOrBundleId: number, market: EthereumAddress, user: EthereumAddress, ratioState: RatioState, targetRatio: number, triggerRatio: number): (number | boolean | string[])[];
97
+ liquidationProtectionGeneric(strategyOrBundleId: number, market: EthereumAddress, user: EthereumAddress, ratioState: RatioState, targetRatio: number, triggerRatio: number): (number | boolean | string[])[];
98
+ leverageManagementOnPriceGeneric(strategyOrBundleId: number, price: number, ratioState: RatioState, collAsset: EthereumAddress, collAssetId: number, debtAsset: EthereumAddress, debtAssetId: number, marketAddr: EthereumAddress, targetRatio: number, user: EthereumAddress): (number | boolean | string[])[];
98
99
  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[])[];
100
+ collateralSwitchGeneric(strategyOrBundleId: number, fromAsset: EthereumAddress, fromAssetId: number, toAsset: EthereumAddress, toAssetId: number, marketAddr: EthereumAddress, amountToSwitch: string, user: EthereumAddress, baseTokenAddress: EthereumAddress, quoteTokenAddress: EthereumAddress, price: number, state: RatioState): (number | boolean | string[])[];
99
101
  };
100
102
  export declare const crvUSDEncode: {
101
103
  leverageManagement(owner: EthereumAddress, controllerAddr: EthereumAddress, ratioState: RatioState, targetRatio: number, triggerRatio: number, collTokenAddr: EthereumAddress, crvUSDAddr: EthereumAddress): (boolean | string[] | Bundles.MainnetIds)[];
102
104
  payback(proxyAddress: EthereumAddress, addressToPullTokensFrom: EthereumAddress, positionOwner: EthereumAddress, paybackAmount: string, crvUSDAddr: EthereumAddress, controllerAddr: EthereumAddress, minHealthRatio: number): (boolean | string[] | Strategies.MainnetIds)[];
103
105
  };
104
- export type MorphoBlueBundleStrategy = 'repay' | 'boost' | 'repayOnPrice' | 'boostOnPrice' | 'close';
106
+ export type MorphoBlueBundleStrategy = 'repay' | 'boost' | 'repayOnPrice' | 'boostOnPrice' | 'close' | 'liquidationProtection';
105
107
  export declare function getMorphoBlueBundleId(network: ChainId, strategy: MorphoBlueBundleStrategy, isEOA: boolean): number;
106
108
  export declare const morphoBlueEncode: {
107
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): (number | boolean | string[])[];
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): (number | boolean | string[])[];
108
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[])[];
109
112
  leverageManagementOnPriceGeneric(loanToken: EthereumAddress, collToken: EthereumAddress, oracle: EthereumAddress, irm: EthereumAddress, lltv: string, user: EthereumAddress, targetRatio: number, price: number, priceState: RatioState, isBoost: boolean, isEOA: boolean, network: ChainId): (number | boolean | string[])[];
110
113
  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[])[];
@@ -118,9 +121,11 @@ export declare const liquityV2Encode: {
118
121
  };
119
122
  export declare const fluidEncode: {
120
123
  leverageManagement(nftId: string, vault: EthereumAddress, ratioState: RatioState, targetRatio: number, triggerRatio: number, strategyOrBundleId: number): (number | boolean | string[])[];
124
+ liquidationProtection(nftId: string, vault: EthereumAddress, ratioState: RatioState, targetRatio: number, triggerRatio: number, strategyOrBundleId: number): (number | boolean | string[])[];
121
125
  };
122
126
  export declare const aaveV4Encode: {
123
127
  leverageManagement(strategyOrBundleId: number, owner: EthereumAddress, spoke: EthereumAddress, ratioState: RatioState, targetRatio: number, triggerRatio: number): (number | boolean | string[])[];
128
+ liquidationProtection(strategyOrBundleId: number, owner: EthereumAddress, spoke: EthereumAddress, ratioState: RatioState, targetRatio: number, triggerRatio: number): (number | boolean | string[])[];
124
129
  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[])[];
125
130
  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[])[];
126
131
  collateralSwitch(strategyOrBundleId: number, owner: EthereumAddress, spoke: EthereumAddress, fromAsset: EthereumAddress, fromAssetId: number, toAsset: EthereumAddress, toAssetId: number, amountToSwitch: string, price: string, ratioState: RatioState): (number | boolean | string[])[];