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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (41) hide show
  1. package/cjs/constants/index.js +130 -0
  2. package/cjs/index.d.ts +4 -3
  3. package/cjs/index.js +6 -2
  4. package/cjs/services/strategiesService.js +178 -17
  5. package/cjs/services/strategySubService.d.ts +14 -13
  6. package/cjs/services/strategySubService.js +79 -63
  7. package/cjs/services/strategySubService.test.js +0 -234
  8. package/cjs/services/subDataService.d.ts +92 -4
  9. package/cjs/services/subDataService.js +245 -35
  10. package/cjs/services/subDataService.test.js +0 -110
  11. package/cjs/services/utils.d.ts +3 -1
  12. package/cjs/services/utils.js +34 -1
  13. package/cjs/services/utils.test.js +25 -0
  14. package/cjs/types/enums.d.ts +36 -6
  15. package/cjs/types/enums.js +30 -0
  16. package/esm/constants/index.js +130 -0
  17. package/esm/index.d.ts +4 -3
  18. package/esm/index.js +7 -3
  19. package/esm/services/strategiesService.js +178 -17
  20. package/esm/services/strategySubService.d.ts +14 -13
  21. package/esm/services/strategySubService.js +79 -60
  22. package/esm/services/strategySubService.test.js +2 -236
  23. package/esm/services/subDataService.d.ts +92 -4
  24. package/esm/services/subDataService.js +243 -34
  25. package/esm/services/subDataService.test.js +0 -110
  26. package/esm/services/utils.d.ts +3 -1
  27. package/esm/services/utils.js +32 -1
  28. package/esm/services/utils.test.js +27 -2
  29. package/esm/types/enums.d.ts +36 -6
  30. package/esm/types/enums.js +30 -0
  31. package/package.json +1 -1
  32. package/src/constants/index.ts +132 -1
  33. package/src/index.ts +24 -6
  34. package/src/services/strategiesService.ts +242 -17
  35. package/src/services/strategySubService.test.ts +0 -279
  36. package/src/services/strategySubService.ts +209 -116
  37. package/src/services/subDataService.test.ts +0 -120
  38. package/src/services/subDataService.ts +335 -49
  39. package/src/services/utils.test.ts +32 -1
  40. package/src/services/utils.ts +32 -1
  41. package/src/types/enums.ts +30 -2
@@ -63,7 +63,7 @@ function parseMakerTrailingStop(position, parseData) {
63
63
  }
64
64
  function parseMakerLeverageManagement(position, parseData) {
65
65
  const _position = cloneDeep(position);
66
- const { subStruct, subId } = parseData.subscriptionEventData;
66
+ const { subStruct, subId, subHash } = parseData.subscriptionEventData;
67
67
  const { isEnabled } = parseData.strategiesSubsData;
68
68
  const triggerData = triggerService.makerRatioTrigger.decode(subStruct.triggerData);
69
69
  const subData = subDataService.makerLeverageManagementSubData.decode(subStruct.subData);
@@ -75,9 +75,10 @@ function parseMakerLeverageManagement(position, parseData) {
75
75
  _position.specific = {
76
76
  triggerRepayRatio: triggerData.ratio,
77
77
  targetRepayRatio: subData.targetRatio,
78
- repayEnabled: true,
78
+ repayEnabled: isEnabled,
79
79
  subId1: Number(subId),
80
80
  mergeWithId: Strategies.Identifiers.Boost,
81
+ subHashRepay: subHash,
81
82
  };
82
83
  }
83
84
  else {
@@ -87,11 +88,30 @@ function parseMakerLeverageManagement(position, parseData) {
87
88
  boostEnabled: isEnabled,
88
89
  subId2: Number(subId),
89
90
  mergeId: Strategies.Identifiers.Boost,
91
+ subHashBoost: subHash,
90
92
  };
91
93
  }
92
94
  _position.strategy.strategyId = Strategies.IdOverrides.LeverageManagement;
93
95
  return _position;
94
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
+ }
95
115
  function parseLiquityCloseOnPrice(position, parseData) {
96
116
  const _position = cloneDeep(position);
97
117
  const { subStruct } = parseData.subscriptionEventData;
@@ -126,7 +146,7 @@ function parseLiquityTrailingStop(position, parseData) {
126
146
  }
127
147
  function parseAaveV2LeverageManagement(position, parseData) {
128
148
  const _position = cloneDeep(position);
129
- const { subStruct, subId } = parseData.subscriptionEventData;
149
+ const { subStruct, subId, subHash } = parseData.subscriptionEventData;
130
150
  const { isEnabled } = parseData.strategiesSubsData;
131
151
  const triggerData = triggerService.aaveV2RatioTrigger.decode(subStruct.triggerData);
132
152
  const subData = subDataService.aaveV2LeverageManagementSubData.decode(subStruct.subData);
@@ -138,9 +158,10 @@ function parseAaveV2LeverageManagement(position, parseData) {
138
158
  _position.specific = {
139
159
  triggerRepayRatio: triggerData.ratio,
140
160
  targetRepayRatio: subData.targetRatio,
141
- repayEnabled: true,
161
+ repayEnabled: isEnabled,
142
162
  subId1: Number(subId),
143
163
  mergeWithId: Strategies.Identifiers.Boost,
164
+ subHashRepay: subHash,
144
165
  };
145
166
  }
146
167
  else {
@@ -150,6 +171,7 @@ function parseAaveV2LeverageManagement(position, parseData) {
150
171
  boostEnabled: isEnabled,
151
172
  subId2: Number(subId),
152
173
  mergeId: Strategies.Identifiers.Boost,
174
+ subHashBoost: subHash,
153
175
  };
154
176
  }
155
177
  _position.strategy.strategyId = Strategies.IdOverrides.LeverageManagement;
@@ -200,6 +222,26 @@ function parseAaveV3LeverageManagement(position, parseData) {
200
222
  }
201
223
  return _position;
202
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
+ }
203
245
  function parseAaveV3LeverageManagementOnPrice(position, parseData) {
204
246
  const _position = cloneDeep(position);
205
247
  const { subStruct } = parseData.subscriptionEventData;
@@ -329,6 +371,26 @@ function parseAaveV4LeverageManagement(position, parseData) {
329
371
  }
330
372
  return _position;
331
373
  }
374
+ function parseAaveV4LiquidationProtection(position, parseData) {
375
+ const _position = cloneDeep(position);
376
+ const { subStruct, subId, subHash } = parseData.subscriptionEventData;
377
+ const { isEnabled } = parseData.strategiesSubsData;
378
+ const triggerData = triggerService.aaveV4RatioTrigger.decode(subStruct.triggerData);
379
+ const subData = subDataService.aaveV4LiquidationProtectionSubData.decode(subStruct.subData);
380
+ const isEOA = _position.strategy.strategyId.includes('eoa');
381
+ _position.strategyData.decoded.triggerData = triggerData;
382
+ _position.strategyData.decoded.subData = subData;
383
+ _position.positionId = getPositionId(_position.chainId, _position.protocol.id, _position.owner, triggerData.spoke);
384
+ _position.strategy.strategyId = isEOA ? Strategies.IdOverrides.EoaLiquidationProtection : Strategies.IdOverrides.LiquidationProtection;
385
+ _position.specific = {
386
+ triggerRepayRatio: triggerData.ratio,
387
+ targetRepayRatio: subData.targetRatio,
388
+ repayEnabled: isEnabled,
389
+ subId1: Number(subId),
390
+ subHashRepay: subHash,
391
+ };
392
+ return _position;
393
+ }
332
394
  function parseAaveV4LeverageManagementOnPrice(position, parseData) {
333
395
  const _position = cloneDeep(position);
334
396
  const { subStruct } = parseData.subscriptionEventData;
@@ -387,7 +449,7 @@ function parseAaveV4CollateralSwitch(position, parseData) {
387
449
  }
388
450
  function parseMorphoAaveV2LeverageManagement(position, parseData) {
389
451
  const _position = cloneDeep(position);
390
- const { subStruct, subId } = parseData.subscriptionEventData;
452
+ const { subStruct, subId, subHash } = parseData.subscriptionEventData;
391
453
  const { isEnabled } = parseData.strategiesSubsData;
392
454
  const triggerData = triggerService.morphoAaveV2RatioTrigger.decode(subStruct.triggerData);
393
455
  const subData = subDataService.morphoAaveV2LeverageManagementSubData.decode(subStruct.subData);
@@ -399,9 +461,10 @@ function parseMorphoAaveV2LeverageManagement(position, parseData) {
399
461
  _position.specific = {
400
462
  triggerRepayRatio: triggerData.ratio,
401
463
  targetRepayRatio: subData.targetRatio,
402
- repayEnabled: true,
464
+ repayEnabled: isEnabled,
403
465
  subId1: Number(subId),
404
466
  mergeWithId: Strategies.Identifiers.Boost,
467
+ subHashRepay: subHash,
405
468
  };
406
469
  }
407
470
  else {
@@ -411,6 +474,7 @@ function parseMorphoAaveV2LeverageManagement(position, parseData) {
411
474
  boostEnabled: isEnabled,
412
475
  subId2: Number(subId),
413
476
  mergeId: Strategies.Identifiers.Boost,
477
+ subHashBoost: subHash,
414
478
  };
415
479
  }
416
480
  _position.strategy.strategyId = Strategies.IdOverrides.LeverageManagement;
@@ -443,7 +507,7 @@ function parseAaveV3CloseOnPriceWithMaximumGasPrice(position, parseData) {
443
507
  }
444
508
  function parseCompoundV2LeverageManagement(position, parseData) {
445
509
  const _position = cloneDeep(position);
446
- const { subStruct, subId } = parseData.subscriptionEventData;
510
+ const { subStruct, subId, subHash } = parseData.subscriptionEventData;
447
511
  const { isEnabled } = parseData.strategiesSubsData;
448
512
  const triggerData = triggerService.compoundV2RatioTrigger.decode(subStruct.triggerData);
449
513
  const subData = subDataService.compoundV2LeverageManagementSubData.decode(subStruct.subData);
@@ -456,9 +520,10 @@ function parseCompoundV2LeverageManagement(position, parseData) {
456
520
  _position.specific = {
457
521
  triggerRepayRatio: triggerData.ratio,
458
522
  targetRepayRatio: subData.targetRatio,
459
- repayEnabled: true,
523
+ repayEnabled: isEnabled,
460
524
  subId1: Number(subId),
461
525
  mergeWithId: Strategies.Identifiers.Boost,
526
+ subHashRepay: subHash,
462
527
  };
463
528
  }
464
529
  else {
@@ -468,6 +533,7 @@ function parseCompoundV2LeverageManagement(position, parseData) {
468
533
  boostEnabled: isEnabled,
469
534
  subId2: Number(subId),
470
535
  mergeId: Strategies.Identifiers.Boost,
536
+ subHashBoost: subHash,
471
537
  };
472
538
  }
473
539
  const isEOA = _position.strategy.strategyId.includes('eoa');
@@ -476,11 +542,9 @@ function parseCompoundV2LeverageManagement(position, parseData) {
476
542
  }
477
543
  function parseCompoundV3LeverageManagement(position, parseData) {
478
544
  const _position = cloneDeep(position);
479
- const { subStruct, subId } = parseData.subscriptionEventData;
545
+ const { subStruct, subId, subHash } = parseData.subscriptionEventData;
480
546
  const { isEnabled } = parseData.strategiesSubsData;
481
- const subDataDecoder = position.chainId !== 1
482
- ? subDataService.compoundV3L2LeverageManagementSubData
483
- : subDataService.compoundV3LeverageManagementSubData;
547
+ const subDataDecoder = subDataService.compoundV3LeverageManagementSubDataWithoutSubProxy;
484
548
  const triggerData = triggerService.compoundV3RatioTrigger.decode(subStruct.triggerData);
485
549
  const subData = subDataDecoder.decode(subStruct.subData);
486
550
  _position.strategyData.decoded.triggerData = triggerData;
@@ -492,9 +556,10 @@ function parseCompoundV3LeverageManagement(position, parseData) {
492
556
  _position.specific = {
493
557
  triggerRepayRatio: triggerData.ratio,
494
558
  targetRepayRatio: subData.targetRatio,
495
- repayEnabled: true,
559
+ repayEnabled: isEnabled,
496
560
  subId1: Number(subId),
497
561
  mergeWithId: isEOA ? Strategies.Identifiers.EoaBoost : Strategies.Identifiers.Boost,
562
+ subHashRepay: subHash,
498
563
  };
499
564
  }
500
565
  else {
@@ -504,11 +569,33 @@ function parseCompoundV3LeverageManagement(position, parseData) {
504
569
  boostEnabled: isEnabled,
505
570
  subId2: Number(subId),
506
571
  mergeId: isEOA ? Strategies.Identifiers.EoaBoost : Strategies.Identifiers.Boost,
572
+ subHashBoost: subHash,
507
573
  };
508
574
  }
509
575
  _position.strategy.strategyId = isEOA ? Strategies.IdOverrides.EoaLeverageManagement : Strategies.IdOverrides.LeverageManagement;
510
576
  return _position;
511
577
  }
578
+ function parseCompoundV3LiquidationProtection(position, parseData) {
579
+ const _position = cloneDeep(position);
580
+ const { subStruct, subId, subHash } = parseData.subscriptionEventData;
581
+ const { isEnabled } = parseData.strategiesSubsData;
582
+ const subDataDecoder = subDataService.compoundV3LiquidationProtectionSubDataWithoutSubProxy;
583
+ const triggerData = triggerService.compoundV3RatioTrigger.decode(subStruct.triggerData);
584
+ const subData = subDataDecoder.decode(subStruct.subData);
585
+ _position.strategyData.decoded.triggerData = triggerData;
586
+ _position.strategyData.decoded.subData = subData;
587
+ _position.positionId = getPositionId(_position.chainId, _position.protocol.id, triggerData.owner.toLowerCase(), triggerData.market);
588
+ const isEOA = _position.strategy.strategyId.includes('eoa');
589
+ _position.specific = {
590
+ triggerRepayRatio: triggerData.ratio,
591
+ targetRepayRatio: subData.targetRatio,
592
+ repayEnabled: isEnabled,
593
+ subId1: Number(subId),
594
+ subHashRepay: subHash,
595
+ };
596
+ _position.strategy.strategyId = isEOA ? Strategies.IdOverrides.EoaLiquidationProtection : Strategies.IdOverrides.LiquidationProtection;
597
+ return _position;
598
+ }
512
599
  function parseCompoundV3LeverageManagementOnPrice(position, parseData) {
513
600
  const _position = cloneDeep(position);
514
601
  const { subStruct } = parseData.subscriptionEventData;
@@ -591,7 +678,7 @@ function parseExchangeLimitOrder(position, parseData, chainId) {
591
678
  }
592
679
  function parseLiquityLeverageManagement(position, parseData) {
593
680
  const _position = cloneDeep(position);
594
- const { subStruct, subId } = parseData.subscriptionEventData;
681
+ const { subStruct, subId, subHash } = parseData.subscriptionEventData;
595
682
  const { isEnabled } = parseData.strategiesSubsData;
596
683
  const triggerData = triggerService.liquityRatioTrigger.decode(subStruct.triggerData);
597
684
  const subData = subDataService.liquityLeverageManagementSubData.decode(subStruct.subData);
@@ -603,9 +690,10 @@ function parseLiquityLeverageManagement(position, parseData) {
603
690
  _position.specific = {
604
691
  triggerRepayRatio: triggerData.ratio,
605
692
  targetRepayRatio: subData.targetRatio,
606
- repayEnabled: true,
693
+ repayEnabled: isEnabled,
607
694
  subId1: Number(subId),
608
695
  mergeWithId: Strategies.Identifiers.Boost,
696
+ subHashRepay: subHash,
609
697
  };
610
698
  }
611
699
  else {
@@ -615,6 +703,7 @@ function parseLiquityLeverageManagement(position, parseData) {
615
703
  boostEnabled: isEnabled,
616
704
  subId2: Number(subId),
617
705
  mergeId: Strategies.Identifiers.Boost,
706
+ subHashBoost: subHash,
618
707
  };
619
708
  }
620
709
  _position.strategy.strategyId = Strategies.IdOverrides.LeverageManagement;
@@ -655,7 +744,7 @@ function parseLiquityV2LeverageManagement(position, parseData) {
655
744
  }
656
745
  function parseSparkLeverageManagement(position, parseData) {
657
746
  const _position = cloneDeep(position);
658
- const { subStruct, subId } = parseData.subscriptionEventData;
747
+ const { subStruct, subId, subHash } = parseData.subscriptionEventData;
659
748
  const { isEnabled } = parseData.strategiesSubsData;
660
749
  const triggerData = triggerService.sparkRatioTrigger.decode(subStruct.triggerData);
661
750
  const subData = subDataService.sparkLeverageManagementSubData.decode(subStruct.subData);
@@ -667,9 +756,10 @@ function parseSparkLeverageManagement(position, parseData) {
667
756
  _position.specific = {
668
757
  triggerRepayRatio: triggerData.ratio,
669
758
  targetRepayRatio: subData.targetRatio,
670
- repayEnabled: true,
759
+ repayEnabled: isEnabled,
671
760
  subId1: Number(subId),
672
761
  mergeWithId: Strategies.Identifiers.Boost,
762
+ subHashRepay: subHash,
673
763
  };
674
764
  }
675
765
  else {
@@ -679,11 +769,31 @@ function parseSparkLeverageManagement(position, parseData) {
679
769
  boostEnabled: isEnabled,
680
770
  subId2: Number(subId),
681
771
  mergeId: Strategies.Identifiers.Boost,
772
+ subHashBoost: subHash,
682
773
  };
683
774
  }
684
775
  _position.strategy.strategyId = Strategies.IdOverrides.LeverageManagement;
685
776
  return _position;
686
777
  }
778
+ function parseSparkLiquidationProtection(position, parseData) {
779
+ const _position = cloneDeep(position);
780
+ const { subStruct, subId, subHash } = parseData.subscriptionEventData;
781
+ const { isEnabled } = parseData.strategiesSubsData;
782
+ const triggerData = triggerService.sparkRatioTrigger.decode(subStruct.triggerData);
783
+ const subData = subDataService.sparkLiquidationProtectionSubData.decode(subStruct.subData);
784
+ _position.strategyData.decoded.triggerData = triggerData;
785
+ _position.strategyData.decoded.subData = subData;
786
+ _position.positionId = getPositionId(_position.chainId, _position.protocol.id, _position.owner, triggerData.market);
787
+ _position.specific = {
788
+ triggerRepayRatio: triggerData.ratio,
789
+ targetRepayRatio: subData.targetRatio,
790
+ repayEnabled: isEnabled,
791
+ subId1: Number(subId),
792
+ subHashRepay: subHash,
793
+ };
794
+ _position.strategy.strategyId = Strategies.IdOverrides.LiquidationProtection;
795
+ return _position;
796
+ }
687
797
  function parseSparkLeverageManagementOnPrice(position, parseData) {
688
798
  const _position = cloneDeep(position);
689
799
  const { subStruct } = parseData.subscriptionEventData;
@@ -838,6 +948,26 @@ function parseMorphoBlueLeverageManagement(position, parseData) {
838
948
  _position.strategy.strategyId = isEOA ? Strategies.IdOverrides.EoaLeverageManagement : Strategies.IdOverrides.LeverageManagement;
839
949
  return _position;
840
950
  }
951
+ function parseMorphoBlueLiquidationProtection(position, parseData) {
952
+ const _position = cloneDeep(position);
953
+ const { subStruct, subId, subHash } = parseData.subscriptionEventData;
954
+ const { isEnabled } = parseData.strategiesSubsData;
955
+ const triggerData = triggerService.morphoBlueRatioTrigger.decode(subStruct.triggerData);
956
+ const subData = subDataService.morphoBlueLiquidationProtectionSubData.decode(subStruct.subData);
957
+ _position.strategyData.decoded.triggerData = triggerData;
958
+ _position.strategyData.decoded.subData = subData;
959
+ _position.positionId = getPositionId(_position.chainId, _position.protocol.id, triggerData.owner.toLowerCase(), triggerData.marketId);
960
+ _position.specific = {
961
+ triggerRepayRatio: triggerData.ratio,
962
+ targetRepayRatio: subData.targetRatio,
963
+ repayEnabled: isEnabled,
964
+ subId1: Number(subId),
965
+ subHashRepay: subHash,
966
+ };
967
+ const isEOA = _position.strategy.strategyId.includes('eoa');
968
+ _position.strategy.strategyId = isEOA ? Strategies.IdOverrides.EoaLiquidationProtection : Strategies.IdOverrides.LiquidationProtection;
969
+ return _position;
970
+ }
841
971
  function parseMorphoBlueLeverageManagementOnPrice(position, parseData) {
842
972
  const _position = cloneDeep(position);
843
973
  const { subStruct } = parseData.subscriptionEventData;
@@ -861,6 +991,7 @@ function parseMorphoBlueLeverageManagementOnPrice(position, parseData) {
861
991
  debtAsset: subData.loanToken,
862
992
  price: triggerData.price,
863
993
  ratio: subData.targetRatio,
994
+ ratioState: triggerData.priceState,
864
995
  };
865
996
  return _position;
866
997
  }
@@ -989,6 +1120,25 @@ function parseFluidT1LeverageManagement(position, parseData) {
989
1120
  _position.strategy.strategyId = Strategies.IdOverrides.LeverageManagement;
990
1121
  return _position;
991
1122
  }
1123
+ function parseFluidT1LiquidationProtection(position, parseData) {
1124
+ const _position = cloneDeep(position);
1125
+ const { subStruct, subId, subHash } = parseData.subscriptionEventData;
1126
+ const { isEnabled } = parseData.strategiesSubsData;
1127
+ const triggerData = triggerService.fluidRatioTrigger.decode(subStruct.triggerData);
1128
+ const subData = subDataService.fluidLiquidationProtectionSubData.decode(subStruct.subData);
1129
+ _position.strategyData.decoded.triggerData = triggerData;
1130
+ _position.strategyData.decoded.subData = subData;
1131
+ _position.positionId = getPositionId(_position.chainId, _position.protocol.id, _position.owner, triggerData.nftId, subData.vault);
1132
+ _position.specific = {
1133
+ triggerRepayRatio: triggerData.ratio,
1134
+ targetRepayRatio: subData.targetRatio,
1135
+ repayEnabled: isEnabled,
1136
+ subId1: Number(subId),
1137
+ subHashRepay: subHash,
1138
+ };
1139
+ _position.strategy.strategyId = Strategies.IdOverrides.LiquidationProtection;
1140
+ return _position;
1141
+ }
992
1142
  const parsingMethodsMapping = {
993
1143
  [ProtocolIdentifiers.StrategiesAutomation.MakerDAO]: {
994
1144
  [Strategies.Identifiers.SavingsLiqProtection]: parseMakerSavingsLiqProtection,
@@ -998,6 +1148,7 @@ const parsingMethodsMapping = {
998
1148
  [Strategies.Identifiers.TrailingStopToDebt]: parseMakerTrailingStop,
999
1149
  [Strategies.Identifiers.Repay]: parseMakerLeverageManagement,
1000
1150
  [Strategies.Identifiers.Boost]: parseMakerLeverageManagement,
1151
+ [Strategies.Identifiers.LiquidationProtection]: parseMakerLiquidationProtection,
1001
1152
  },
1002
1153
  [ProtocolIdentifiers.StrategiesAutomation.Liquity]: {
1003
1154
  [Strategies.Identifiers.CloseOnPriceToColl]: parseLiquityCloseOnPrice,
@@ -1036,6 +1187,8 @@ const parsingMethodsMapping = {
1036
1187
  [Strategies.Identifiers.EoaBoostOnPrice]: parseAaveV3LeverageManagementOnPrice,
1037
1188
  [Strategies.Identifiers.EoaCloseOnPrice]: parseAaveV3CloseOnPrice,
1038
1189
  [Strategies.Identifiers.CollateralSwitch]: parseAaveV3CollateralSwitch,
1190
+ [Strategies.Identifiers.LiquidationProtection]: parseAaveV3LiquidationProtection,
1191
+ [Strategies.Identifiers.EoaLiquidationProtection]: parseAaveV3LiquidationProtection,
1039
1192
  },
1040
1193
  [ProtocolIdentifiers.StrategiesAutomation.AaveV4]: {
1041
1194
  [Strategies.Identifiers.Repay]: parseAaveV4LeverageManagement,
@@ -1050,6 +1203,8 @@ const parsingMethodsMapping = {
1050
1203
  [Strategies.Identifiers.EoaCloseOnPrice]: parseAaveV4CloseOnPrice,
1051
1204
  [Strategies.Identifiers.CollateralSwitch]: parseAaveV4CollateralSwitch,
1052
1205
  [Strategies.Identifiers.EoaCollateralSwitch]: parseAaveV4CollateralSwitch,
1206
+ [Strategies.Identifiers.LiquidationProtection]: parseAaveV4LiquidationProtection,
1207
+ [Strategies.Identifiers.EoaLiquidationProtection]: parseAaveV4LiquidationProtection,
1053
1208
  },
1054
1209
  [ProtocolIdentifiers.StrategiesAutomation.CompoundV2]: {
1055
1210
  [Strategies.Identifiers.Repay]: parseCompoundV2LeverageManagement,
@@ -1066,6 +1221,8 @@ const parsingMethodsMapping = {
1066
1221
  [Strategies.Identifiers.EoaBoostOnPrice]: parseCompoundV3LeverageManagementOnPrice,
1067
1222
  [Strategies.Identifiers.CloseOnPrice]: parseCompoundV3CloseOnPrice,
1068
1223
  [Strategies.Identifiers.EoaCloseOnPrice]: parseCompoundV3CloseOnPrice,
1224
+ [Strategies.Identifiers.LiquidationProtection]: parseCompoundV3LiquidationProtection,
1225
+ [Strategies.Identifiers.EoaLiquidationProtection]: parseCompoundV3LiquidationProtection,
1069
1226
  },
1070
1227
  [ProtocolIdentifiers.StrategiesAutomation.ChickenBonds]: {
1071
1228
  [Strategies.Identifiers.Rebond]: parseChickenBondsRebond,
@@ -1085,6 +1242,7 @@ const parsingMethodsMapping = {
1085
1242
  [Strategies.Identifiers.BoostOnPrice]: parseSparkLeverageManagementOnPrice,
1086
1243
  [Strategies.Identifiers.CloseOnPrice]: parseSparkCloseOnPrice,
1087
1244
  [Strategies.Identifiers.CollateralSwitch]: parseSparkCollateralSwitch,
1245
+ [Strategies.Identifiers.LiquidationProtection]: parseSparkLiquidationProtection,
1088
1246
  },
1089
1247
  [ProtocolIdentifiers.StrategiesAutomation.CrvUSD]: {
1090
1248
  [Strategies.Identifiers.Repay]: parseCrvUSDLeverageManagement,
@@ -1098,10 +1256,13 @@ const parsingMethodsMapping = {
1098
1256
  [Strategies.Identifiers.EoaBoost]: parseMorphoBlueLeverageManagement,
1099
1257
  [Strategies.Identifiers.BoostOnPrice]: parseMorphoBlueLeverageManagementOnPrice,
1100
1258
  [Strategies.Identifiers.CloseOnPrice]: parseMorphoBlueCloseOnPrice,
1259
+ [Strategies.Identifiers.LiquidationProtection]: parseMorphoBlueLiquidationProtection,
1260
+ [Strategies.Identifiers.EoaLiquidationProtection]: parseMorphoBlueLiquidationProtection,
1101
1261
  },
1102
1262
  [ProtocolIdentifiers.StrategiesAutomation.FluidT1]: {
1103
1263
  [Strategies.Identifiers.Repay]: parseFluidT1LeverageManagement,
1104
1264
  [Strategies.Identifiers.Boost]: parseFluidT1LeverageManagement,
1265
+ [Strategies.Identifiers.LiquidationProtection]: parseFluidT1LiquidationProtection,
1105
1266
  },
1106
1267
  };
1107
1268
  function getParsingMethod(id, strategy) {
@@ -1,18 +1,18 @@
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
- leverageManagement(vaultId: number, triggerRepayRatio: string, triggerBoostRatio: string, targetBoostRatio: string, targetRepayRatio: string, boostEnabled: boolean): (string | number | boolean)[];
9
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)[];
10
10
  };
11
11
  export declare const liquityEncode: {
12
12
  closeOnPrice(priceOverOrUnder: RatioState, price: string, closeToAssetAddr: EthereumAddress, chainlinkCollAddress: EthereumAddress, chainId?: ChainId, collAddr?: EthereumAddress, debtAddr?: EthereumAddress): (boolean | string[] | Strategies.MainnetIds)[];
13
13
  trailingStop(triggerPercentage: number, closeToAssetAddr: EthereumAddress, chainlinkCollAddress: EthereumAddress, roundId: number, chainId?: ChainId, collAddr?: EthereumAddress, debtAddr?: EthereumAddress): (boolean | string[] | Strategies.MainnetIds)[];
14
14
  paybackFromChickenBondStrategySub(proxyAddress: EthereumAddress, ratio: number, sourceId: string, sourceType: number, ratioState?: RatioState): (boolean | string[] | Bundles.MainnetIds)[];
15
- leverageManagement(triggerRepayRatio: string, triggerBoostRatio: string, targetBoostRatio: string, targetRepayRatio: string, boostEnabled: boolean): (string | boolean)[];
15
+ leverageManagementWithoutSubProxy(strategyOrBundleId: number, user: EthereumAddress, ratioState: RatioState, targetRatio: number, triggerRatio: number): (number | boolean | string[])[];
16
16
  dsrPayback(proxyAddress: EthereumAddress, triggerRatio: number, targetRatio: number): (boolean | string[] | Strategies.MainnetIds)[];
17
17
  dsrSupply(proxyAddress: EthereumAddress, triggerRatio: number, targetRatio: number): (boolean | string[] | Strategies.MainnetIds)[];
18
18
  debtInFrontRepay(proxyAddress: EthereumAddress, debtInFrontMin: string, targetRatioIncrease: number): (boolean | string[] | Strategies.MainnetIds)[];
@@ -21,10 +21,9 @@ export declare const chickenBondsEncode: {
21
21
  rebond(bondId: number): string[];
22
22
  };
23
23
  export declare const aaveV2Encode: {
24
- leverageManagement(triggerRepayRatio: number, triggerBoostRatio: number, targetBoostRatio: number, targetRepayRatio: number, boostEnabled: boolean): string[];
24
+ leverageManagementWithoutSubProxy(strategyOrBundleId: number, market: EthereumAddress, user: EthereumAddress, ratioState: RatioState, targetRatio: number, triggerRatio: number): (number | boolean | string[])[];
25
25
  };
26
26
  export declare const aaveV3Encode: {
27
- leverageManagement(triggerRepayRatio: number, triggerBoostRatio: number, targetBoostRatio: number, targetRepayRatio: number, boostEnabled: boolean): string;
28
27
  closeToAsset(strategyOrBundleId: number, isBundle: boolean | undefined, triggerData: {
29
28
  baseTokenAddress: EthereumAddress;
30
29
  quoteTokenAddress: EthereumAddress;
@@ -62,30 +61,28 @@ export declare const aaveV3Encode: {
62
61
  targetRatio: number;
63
62
  }): (number | boolean | string[])[];
64
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[])[];
65
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[])[];
66
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[])[];
67
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[])[];
68
68
  };
69
69
  export declare const compoundV2Encode: {
70
- leverageManagement(triggerRepayRatio: number, triggerBoostRatio: number, targetBoostRatio: number, targetRepayRatio: number, boostEnabled: boolean): string[];
70
+ leverageManagementWithoutSubProxy(strategyOrBundleId: number, user: EthereumAddress, ratioState: RatioState, targetRatio: number, triggerRatio: number): (number | boolean | string[])[];
71
71
  };
72
72
  export declare const compoundV3Encode: {
73
- leverageManagement(market: EthereumAddress, baseToken: EthereumAddress, triggerRepayRatio: number, triggerBoostRatio: number, targetBoostRatio: number, targetRepayRatio: number, boostEnabled: boolean, isEOA: boolean): string[];
73
+ leverageManagementWithoutSubProxy(strategyOrBundleId: number, market: EthereumAddress, baseToken: EthereumAddress, user: EthereumAddress, ratioState: RatioState, targetRatio: number, triggerRatio: number): (number | boolean | string[])[];
74
+ liquidationProtectionWithoutSubProxy(strategyOrBundleId: number, market: EthereumAddress, baseToken: EthereumAddress, user: EthereumAddress, ratioState: RatioState, targetRatio: number, triggerRatio: number): (number | boolean | string[])[];
74
75
  leverageManagementOnPrice(strategyOrBundleId: number, market: EthereumAddress, collToken: EthereumAddress, baseToken: EthereumAddress, targetRatio: number, price: number, priceState: RatioState, ratioState: RatioState, user: EthereumAddress): (number | boolean | string[])[];
75
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[])[];
76
77
  };
77
- export declare const compoundV3L2Encode: {
78
- leverageManagement(market: EthereumAddress, baseToken: EthereumAddress, triggerRepayRatio: number, triggerBoostRatio: number, targetBoostRatio: number, targetRepayRatio: number, boostEnabled: boolean, isEOA?: boolean): string;
79
- };
80
78
  export declare const morphoAaveV2Encode: {
81
79
  leverageManagement(triggerRepayRatio: number, triggerBoostRatio: number, targetBoostRatio: number, targetRepayRatio: number, boostEnabled: boolean): string[];
82
80
  };
83
81
  export declare const exchangeEncode: {
84
82
  dca(fromToken: EthereumAddress, toToken: EthereumAddress, amount: string, timestamp: number, interval: number, network: ChainId): (boolean | string[] | Strategies.MainnetIds | Strategies.OptimismIds | Strategies.ArbitrumIds | Strategies.BaseIds)[];
85
- limitOrder(fromToken: EthereumAddress, toToken: EthereumAddress, amount: string, targetPrice: string, goodUntil: string | number, orderType: OrderType): string[];
83
+ 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)[];
86
84
  };
87
85
  export declare const sparkEncode: {
88
- leverageManagement(triggerRepayRatio: number, triggerBoostRatio: number, targetBoostRatio: number, targetRepayRatio: number, boostEnabled: boolean): string;
89
86
  leverageManagementOnPrice(strategyOrBundleId: number, isBundle: boolean | undefined, triggerData: {
90
87
  baseTokenAddr: EthereumAddress;
91
88
  quoteTokenAddr: EthereumAddress;
@@ -101,6 +98,7 @@ export declare const sparkEncode: {
101
98
  }): (number | boolean | string[])[];
102
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[])[];
103
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[])[];
104
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[])[];
105
103
  };
106
104
  export declare const crvUSDEncode: {
@@ -109,6 +107,7 @@ export declare const crvUSDEncode: {
109
107
  };
110
108
  export declare const morphoBlueEncode: {
111
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)[];
112
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[])[];
113
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[])[];
114
113
  };
@@ -120,9 +119,11 @@ export declare const liquityV2Encode: {
120
119
  };
121
120
  export declare const fluidEncode: {
122
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[])[];
123
123
  };
124
124
  export declare const aaveV4Encode: {
125
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[])[];
126
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[])[];
127
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[])[];
128
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[])[];