@defisaver/automation-sdk 3.3.17 → 3.3.18-audit-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.
- package/cjs/constants/index.js +135 -0
- package/cjs/index.d.ts +2 -2
- package/cjs/index.js +5 -2
- package/cjs/services/strategiesService.js +157 -9
- package/cjs/services/strategySubService.d.ts +18 -17
- package/cjs/services/strategySubService.js +68 -28
- package/cjs/services/strategySubService.test.js +2 -40
- package/cjs/services/subDataService.d.ts +70 -20
- package/cjs/services/subDataService.js +23 -79
- package/cjs/services/subDataService.test.js +17 -202
- package/cjs/types/enums.d.ts +35 -4
- package/cjs/types/enums.js +31 -0
- package/esm/constants/index.js +135 -0
- package/esm/index.d.ts +2 -2
- package/esm/index.js +5 -2
- package/esm/services/strategiesService.js +157 -9
- package/esm/services/strategySubService.d.ts +18 -17
- package/esm/services/strategySubService.js +67 -27
- package/esm/services/strategySubService.test.js +3 -38
- package/esm/services/subDataService.d.ts +70 -20
- package/esm/services/subDataService.js +21 -77
- package/esm/services/subDataService.test.js +18 -200
- package/esm/types/enums.d.ts +35 -4
- package/esm/types/enums.js +31 -0
- package/package.json +10 -2
- package/src/constants/index.ts +137 -1
- package/src/index.ts +22 -6
- package/src/services/strategiesService.ts +221 -9
- package/src/services/strategySubService.test.ts +2 -46
- package/src/services/strategySubService.ts +164 -40
- package/src/services/subDataService.test.ts +18 -214
- package/src/services/subDataService.ts +42 -106
- package/src/services/utils.test.ts +1 -1
- package/src/services/utils.ts +3 -1
- package/src/types/enums.ts +31 -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.
|
|
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.
|
|
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.
|
|
188
|
+
subData = subDataService.aaveV3LeverageManagementSubData.decode(subStruct.subData);
|
|
171
189
|
}
|
|
172
190
|
else {
|
|
173
|
-
subData = subDataService.
|
|
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;
|
|
@@ -333,6 +371,26 @@ function parseAaveV4LeverageManagement(position, parseData) {
|
|
|
333
371
|
}
|
|
334
372
|
return _position;
|
|
335
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
|
+
}
|
|
336
394
|
function parseAaveV4LeverageManagementOnPrice(position, parseData) {
|
|
337
395
|
const _position = cloneDeep(position);
|
|
338
396
|
const { subStruct } = parseData.subscriptionEventData;
|
|
@@ -452,7 +510,7 @@ function parseCompoundV2LeverageManagement(position, parseData) {
|
|
|
452
510
|
const { subStruct, subId, subHash } = parseData.subscriptionEventData;
|
|
453
511
|
const { isEnabled } = parseData.strategiesSubsData;
|
|
454
512
|
const triggerData = triggerService.compoundV2RatioTrigger.decode(subStruct.triggerData);
|
|
455
|
-
const subData = subDataService.
|
|
513
|
+
const subData = subDataService.legacyCompoundV2LeverageManagementSubData.decode(subStruct.subData);
|
|
456
514
|
_position.strategyData.decoded.triggerData = triggerData;
|
|
457
515
|
_position.strategyData.decoded.subData = subData;
|
|
458
516
|
_position.owner = triggerData.owner.toLowerCase();
|
|
@@ -486,7 +544,7 @@ function parseCompoundV3LeverageManagement(position, parseData) {
|
|
|
486
544
|
const _position = cloneDeep(position);
|
|
487
545
|
const { subStruct, subId, subHash } = parseData.subscriptionEventData;
|
|
488
546
|
const { isEnabled } = parseData.strategiesSubsData;
|
|
489
|
-
const subDataDecoder = subDataService.
|
|
547
|
+
const subDataDecoder = subDataService.compoundV3LeverageManagementSubData;
|
|
490
548
|
const triggerData = triggerService.compoundV3RatioTrigger.decode(subStruct.triggerData);
|
|
491
549
|
const subData = subDataDecoder.decode(subStruct.subData);
|
|
492
550
|
_position.strategyData.decoded.triggerData = triggerData;
|
|
@@ -517,6 +575,27 @@ function parseCompoundV3LeverageManagement(position, parseData) {
|
|
|
517
575
|
_position.strategy.strategyId = isEOA ? Strategies.IdOverrides.EoaLeverageManagement : Strategies.IdOverrides.LeverageManagement;
|
|
518
576
|
return _position;
|
|
519
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.compoundV3LiquidationProtectionSubData;
|
|
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
|
+
}
|
|
520
599
|
function parseCompoundV3LeverageManagementOnPrice(position, parseData) {
|
|
521
600
|
const _position = cloneDeep(position);
|
|
522
601
|
const { subStruct } = parseData.subscriptionEventData;
|
|
@@ -590,7 +669,7 @@ function parseExchangeDca(position, parseData, chainId) {
|
|
|
590
669
|
function parseExchangeLimitOrder(position, parseData, chainId) {
|
|
591
670
|
const _position = cloneDeep(position);
|
|
592
671
|
const { subStruct } = parseData.subscriptionEventData;
|
|
593
|
-
_position.strategyData.decoded.subData = subDataService.
|
|
672
|
+
_position.strategyData.decoded.subData = subDataService.legacyExchangeLimitOrderSubData.decode(subStruct.subData, chainId);
|
|
594
673
|
const fromTokenDecimals = getAssetInfoByAddress(_position.strategyData.decoded.subData.fromToken, chainId).decimals;
|
|
595
674
|
const toTokenDecimals = getAssetInfoByAddress(_position.strategyData.decoded.subData.toToken, chainId).decimals;
|
|
596
675
|
_position.strategyData.decoded.triggerData = triggerService.exchangeOffchainPriceTrigger.decode(subStruct.triggerData, fromTokenDecimals, toTokenDecimals);
|
|
@@ -602,7 +681,7 @@ function parseLiquityLeverageManagement(position, parseData) {
|
|
|
602
681
|
const { subStruct, subId, subHash } = parseData.subscriptionEventData;
|
|
603
682
|
const { isEnabled } = parseData.strategiesSubsData;
|
|
604
683
|
const triggerData = triggerService.liquityRatioTrigger.decode(subStruct.triggerData);
|
|
605
|
-
const subData = subDataService.
|
|
684
|
+
const subData = subDataService.legacyLiquityLeverageManagementSubData.decode(subStruct.subData);
|
|
606
685
|
_position.strategyData.decoded.triggerData = triggerData;
|
|
607
686
|
_position.strategyData.decoded.subData = subData;
|
|
608
687
|
_position.positionId = getPositionId(_position.chainId, _position.protocol.id, _position.owner);
|
|
@@ -668,7 +747,7 @@ function parseSparkLeverageManagement(position, parseData) {
|
|
|
668
747
|
const { subStruct, subId, subHash } = parseData.subscriptionEventData;
|
|
669
748
|
const { isEnabled } = parseData.strategiesSubsData;
|
|
670
749
|
const triggerData = triggerService.sparkRatioTrigger.decode(subStruct.triggerData);
|
|
671
|
-
const subData = subDataService.
|
|
750
|
+
const subData = subDataService.legacySparkLeverageManagementSubData.decode(subStruct.subData);
|
|
672
751
|
_position.strategyData.decoded.triggerData = triggerData;
|
|
673
752
|
_position.strategyData.decoded.subData = subData;
|
|
674
753
|
_position.positionId = getPositionId(_position.chainId, _position.protocol.id, _position.owner, triggerData.market);
|
|
@@ -696,6 +775,25 @@ function parseSparkLeverageManagement(position, parseData) {
|
|
|
696
775
|
_position.strategy.strategyId = Strategies.IdOverrides.LeverageManagement;
|
|
697
776
|
return _position;
|
|
698
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
|
+
}
|
|
699
797
|
function parseSparkLeverageManagementOnPrice(position, parseData) {
|
|
700
798
|
const _position = cloneDeep(position);
|
|
701
799
|
const { subStruct } = parseData.subscriptionEventData;
|
|
@@ -850,6 +948,26 @@ function parseMorphoBlueLeverageManagement(position, parseData) {
|
|
|
850
948
|
_position.strategy.strategyId = isEOA ? Strategies.IdOverrides.EoaLeverageManagement : Strategies.IdOverrides.LeverageManagement;
|
|
851
949
|
return _position;
|
|
852
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
|
+
}
|
|
853
971
|
function parseMorphoBlueLeverageManagementOnPrice(position, parseData) {
|
|
854
972
|
const _position = cloneDeep(position);
|
|
855
973
|
const { subStruct } = parseData.subscriptionEventData;
|
|
@@ -1008,6 +1126,25 @@ function parseFluidT1LeverageManagement(position, parseData) {
|
|
|
1008
1126
|
_position.strategy.strategyId = Strategies.IdOverrides.LeverageManagement;
|
|
1009
1127
|
return _position;
|
|
1010
1128
|
}
|
|
1129
|
+
function parseFluidT1LiquidationProtection(position, parseData) {
|
|
1130
|
+
const _position = cloneDeep(position);
|
|
1131
|
+
const { subStruct, subId, subHash } = parseData.subscriptionEventData;
|
|
1132
|
+
const { isEnabled } = parseData.strategiesSubsData;
|
|
1133
|
+
const triggerData = triggerService.fluidRatioTrigger.decode(subStruct.triggerData);
|
|
1134
|
+
const subData = subDataService.fluidLiquidationProtectionSubData.decode(subStruct.subData);
|
|
1135
|
+
_position.strategyData.decoded.triggerData = triggerData;
|
|
1136
|
+
_position.strategyData.decoded.subData = subData;
|
|
1137
|
+
_position.positionId = getPositionId(_position.chainId, _position.protocol.id, _position.owner, triggerData.nftId, subData.vault);
|
|
1138
|
+
_position.specific = {
|
|
1139
|
+
triggerRepayRatio: triggerData.ratio,
|
|
1140
|
+
targetRepayRatio: subData.targetRatio,
|
|
1141
|
+
repayEnabled: isEnabled,
|
|
1142
|
+
subId1: Number(subId),
|
|
1143
|
+
subHashRepay: subHash,
|
|
1144
|
+
};
|
|
1145
|
+
_position.strategy.strategyId = Strategies.IdOverrides.LiquidationProtection;
|
|
1146
|
+
return _position;
|
|
1147
|
+
}
|
|
1011
1148
|
const parsingMethodsMapping = {
|
|
1012
1149
|
[ProtocolIdentifiers.StrategiesAutomation.MakerDAO]: {
|
|
1013
1150
|
[Strategies.Identifiers.SavingsLiqProtection]: parseMakerSavingsLiqProtection,
|
|
@@ -1017,6 +1154,7 @@ const parsingMethodsMapping = {
|
|
|
1017
1154
|
[Strategies.Identifiers.TrailingStopToDebt]: parseMakerTrailingStop,
|
|
1018
1155
|
[Strategies.Identifiers.Repay]: parseMakerLeverageManagement,
|
|
1019
1156
|
[Strategies.Identifiers.Boost]: parseMakerLeverageManagement,
|
|
1157
|
+
[Strategies.Identifiers.LiquidationProtection]: parseMakerLiquidationProtection,
|
|
1020
1158
|
},
|
|
1021
1159
|
[ProtocolIdentifiers.StrategiesAutomation.Liquity]: {
|
|
1022
1160
|
[Strategies.Identifiers.CloseOnPriceToColl]: parseLiquityCloseOnPrice,
|
|
@@ -1055,6 +1193,8 @@ const parsingMethodsMapping = {
|
|
|
1055
1193
|
[Strategies.Identifiers.EoaBoostOnPrice]: parseAaveV3LeverageManagementOnPrice,
|
|
1056
1194
|
[Strategies.Identifiers.EoaCloseOnPrice]: parseAaveV3CloseOnPrice,
|
|
1057
1195
|
[Strategies.Identifiers.CollateralSwitch]: parseAaveV3CollateralSwitch,
|
|
1196
|
+
[Strategies.Identifiers.LiquidationProtection]: parseAaveV3LiquidationProtection,
|
|
1197
|
+
[Strategies.Identifiers.EoaLiquidationProtection]: parseAaveV3LiquidationProtection,
|
|
1058
1198
|
},
|
|
1059
1199
|
[ProtocolIdentifiers.StrategiesAutomation.AaveV4]: {
|
|
1060
1200
|
[Strategies.Identifiers.Repay]: parseAaveV4LeverageManagement,
|
|
@@ -1069,6 +1209,8 @@ const parsingMethodsMapping = {
|
|
|
1069
1209
|
[Strategies.Identifiers.EoaCloseOnPrice]: parseAaveV4CloseOnPrice,
|
|
1070
1210
|
[Strategies.Identifiers.CollateralSwitch]: parseAaveV4CollateralSwitch,
|
|
1071
1211
|
[Strategies.Identifiers.EoaCollateralSwitch]: parseAaveV4CollateralSwitch,
|
|
1212
|
+
[Strategies.Identifiers.LiquidationProtection]: parseAaveV4LiquidationProtection,
|
|
1213
|
+
[Strategies.Identifiers.EoaLiquidationProtection]: parseAaveV4LiquidationProtection,
|
|
1072
1214
|
},
|
|
1073
1215
|
[ProtocolIdentifiers.StrategiesAutomation.CompoundV2]: {
|
|
1074
1216
|
[Strategies.Identifiers.Repay]: parseCompoundV2LeverageManagement,
|
|
@@ -1085,6 +1227,8 @@ const parsingMethodsMapping = {
|
|
|
1085
1227
|
[Strategies.Identifiers.EoaBoostOnPrice]: parseCompoundV3LeverageManagementOnPrice,
|
|
1086
1228
|
[Strategies.Identifiers.CloseOnPrice]: parseCompoundV3CloseOnPrice,
|
|
1087
1229
|
[Strategies.Identifiers.EoaCloseOnPrice]: parseCompoundV3CloseOnPrice,
|
|
1230
|
+
[Strategies.Identifiers.LiquidationProtection]: parseCompoundV3LiquidationProtection,
|
|
1231
|
+
[Strategies.Identifiers.EoaLiquidationProtection]: parseCompoundV3LiquidationProtection,
|
|
1088
1232
|
},
|
|
1089
1233
|
[ProtocolIdentifiers.StrategiesAutomation.ChickenBonds]: {
|
|
1090
1234
|
[Strategies.Identifiers.Rebond]: parseChickenBondsRebond,
|
|
@@ -1104,6 +1248,7 @@ const parsingMethodsMapping = {
|
|
|
1104
1248
|
[Strategies.Identifiers.BoostOnPrice]: parseSparkLeverageManagementOnPrice,
|
|
1105
1249
|
[Strategies.Identifiers.CloseOnPrice]: parseSparkCloseOnPrice,
|
|
1106
1250
|
[Strategies.Identifiers.CollateralSwitch]: parseSparkCollateralSwitch,
|
|
1251
|
+
[Strategies.Identifiers.LiquidationProtection]: parseSparkLiquidationProtection,
|
|
1107
1252
|
},
|
|
1108
1253
|
[ProtocolIdentifiers.StrategiesAutomation.CrvUSD]: {
|
|
1109
1254
|
[Strategies.Identifiers.Repay]: parseCrvUSDLeverageManagement,
|
|
@@ -1120,11 +1265,14 @@ const parsingMethodsMapping = {
|
|
|
1120
1265
|
[Strategies.Identifiers.EoaBoostOnPrice]: parseMorphoBlueLeverageManagementOnPrice,
|
|
1121
1266
|
[Strategies.Identifiers.EoaRepayOnPrice]: parseMorphoBlueLeverageManagementOnPrice,
|
|
1122
1267
|
[Strategies.Identifiers.CloseOnPrice]: parseMorphoBlueCloseOnPrice,
|
|
1268
|
+
[Strategies.Identifiers.LiquidationProtection]: parseMorphoBlueLiquidationProtection,
|
|
1269
|
+
[Strategies.Identifiers.EoaLiquidationProtection]: parseMorphoBlueLiquidationProtection,
|
|
1123
1270
|
[Strategies.Identifiers.EoaCloseOnPrice]: parseMorphoBlueCloseOnPrice,
|
|
1124
1271
|
},
|
|
1125
1272
|
[ProtocolIdentifiers.StrategiesAutomation.FluidT1]: {
|
|
1126
1273
|
[Strategies.Identifiers.Repay]: parseFluidT1LeverageManagement,
|
|
1127
1274
|
[Strategies.Identifiers.Boost]: parseFluidT1LeverageManagement,
|
|
1275
|
+
[Strategies.Identifiers.LiquidationProtection]: parseFluidT1LiquidationProtection,
|
|
1128
1276
|
},
|
|
1129
1277
|
};
|
|
1130
1278
|
function getParsingMethod(id, strategy) {
|
|
@@ -1,26 +1,24 @@
|
|
|
1
|
-
import
|
|
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
|
+
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
67
|
+
leverageManagement(strategyOrBundleId: number, user: EthereumAddress, ratioState: RatioState, targetRatio: number, triggerRatio: number): (number | boolean | string[])[];
|
|
69
68
|
};
|
|
70
69
|
export declare const compoundV3Encode: {
|
|
71
|
-
|
|
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
|
-
|
|
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,19 @@ 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
|
-
|
|
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[])[];
|
|
98
96
|
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
97
|
};
|
|
100
98
|
export declare const crvUSDEncode: {
|
|
101
99
|
leverageManagement(owner: EthereumAddress, controllerAddr: EthereumAddress, ratioState: RatioState, targetRatio: number, triggerRatio: number, collTokenAddr: EthereumAddress, crvUSDAddr: EthereumAddress): (boolean | string[] | Bundles.MainnetIds)[];
|
|
102
100
|
payback(proxyAddress: EthereumAddress, addressToPullTokensFrom: EthereumAddress, positionOwner: EthereumAddress, paybackAmount: string, crvUSDAddr: EthereumAddress, controllerAddr: EthereumAddress, minHealthRatio: number): (boolean | string[] | Strategies.MainnetIds)[];
|
|
103
101
|
};
|
|
104
|
-
export type MorphoBlueBundleStrategy = 'repay' | 'boost' | 'repayOnPrice' | 'boostOnPrice' | 'close';
|
|
102
|
+
export type MorphoBlueBundleStrategy = 'repay' | 'boost' | 'repayOnPrice' | 'boostOnPrice' | 'close' | 'liquidationProtection';
|
|
105
103
|
export declare function getMorphoBlueBundleId(network: ChainId, strategy: MorphoBlueBundleStrategy, isEOA: boolean): number;
|
|
106
104
|
export declare const morphoBlueEncode: {
|
|
107
105
|
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[])[];
|
|
106
|
+
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
107
|
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
108
|
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
109
|
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 +117,11 @@ export declare const liquityV2Encode: {
|
|
|
118
117
|
};
|
|
119
118
|
export declare const fluidEncode: {
|
|
120
119
|
leverageManagement(nftId: string, vault: EthereumAddress, ratioState: RatioState, targetRatio: number, triggerRatio: number, strategyOrBundleId: number): (number | boolean | string[])[];
|
|
120
|
+
liquidationProtection(nftId: string, vault: EthereumAddress, ratioState: RatioState, targetRatio: number, triggerRatio: number, strategyOrBundleId: number): (number | boolean | string[])[];
|
|
121
121
|
};
|
|
122
122
|
export declare const aaveV4Encode: {
|
|
123
123
|
leverageManagement(strategyOrBundleId: number, owner: EthereumAddress, spoke: EthereumAddress, ratioState: RatioState, targetRatio: number, triggerRatio: number): (number | boolean | string[])[];
|
|
124
|
+
liquidationProtection(strategyOrBundleId: number, owner: EthereumAddress, spoke: EthereumAddress, ratioState: RatioState, targetRatio: number, triggerRatio: number): (number | boolean | string[])[];
|
|
124
125
|
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
126
|
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
127
|
collateralSwitch(strategyOrBundleId: number, owner: EthereumAddress, spoke: EthereumAddress, fromAsset: EthereumAddress, fromAssetId: number, toAsset: EthereumAddress, toAssetId: number, amountToSwitch: string, price: string, ratioState: RatioState): (number | boolean | string[])[];
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { getAssetInfo } from '@defisaver/tokens';
|
|
2
|
-
import { CloseToAssetType, Bundles, ChainId, RatioState, Strategies, } from '../types/enums';
|
|
3
2
|
import { STRATEGY_IDS } from '../constants';
|
|
3
|
+
import { Bundles, ChainId, CloseToAssetType, RatioState, Strategies, } from '../types/enums';
|
|
4
4
|
import * as subDataService from './subDataService';
|
|
5
5
|
import * as triggerService from './triggerService';
|
|
6
6
|
import { compareAddresses, getCloseStrategyType, requireAddress, requireAddresses, } from './utils';
|
|
@@ -30,10 +30,21 @@ export const makerEncode = {
|
|
|
30
30
|
const isBundle = false;
|
|
31
31
|
return [strategyOrBundleId, isBundle, triggerData, subData];
|
|
32
32
|
},
|
|
33
|
-
|
|
33
|
+
leverageManagement(vaultId, triggerRatio, targetRatio, ratioState, isBoost, daiAddr) {
|
|
34
34
|
const bundleId = isBoost ? Bundles.MainnetIds.MAKER_BOOST : Bundles.MainnetIds.MAKER_REPAY;
|
|
35
35
|
const triggerData = triggerService.makerRatioTrigger.encode(vaultId, triggerRatio, ratioState);
|
|
36
|
-
const subData = subDataService.
|
|
36
|
+
const subData = subDataService.makerLeverageManagementSubData.encode(vaultId, targetRatio, daiAddr);
|
|
37
|
+
return [
|
|
38
|
+
bundleId,
|
|
39
|
+
true,
|
|
40
|
+
triggerData,
|
|
41
|
+
subData,
|
|
42
|
+
];
|
|
43
|
+
},
|
|
44
|
+
liquidationProtection(vaultId, triggerRatio, targetRatio, ratioState, daiAddr) {
|
|
45
|
+
const bundleId = Bundles.MainnetIds.MAKER_SW_LIQUIDATION_PROTECTION;
|
|
46
|
+
const triggerData = triggerService.makerRatioTrigger.encode(vaultId, triggerRatio, ratioState);
|
|
47
|
+
const subData = subDataService.makerLiquidationProtectionSubData.encode(vaultId, targetRatio, daiAddr);
|
|
37
48
|
return [
|
|
38
49
|
bundleId,
|
|
39
50
|
true,
|
|
@@ -67,9 +78,9 @@ export const liquityEncode = {
|
|
|
67
78
|
const isBundle = true;
|
|
68
79
|
return [strategyId, isBundle, triggerData, subData];
|
|
69
80
|
},
|
|
70
|
-
|
|
81
|
+
leverageManagement(strategyOrBundleId, user, ratioState, targetRatio, triggerRatio) {
|
|
71
82
|
const isBundle = true;
|
|
72
|
-
const subData = subDataService.
|
|
83
|
+
const subData = subDataService.liquityLeverageManagementSubData.encode(targetRatio, ratioState);
|
|
73
84
|
const triggerData = triggerService.liquityRatioTrigger.encode(user, triggerRatio, ratioState);
|
|
74
85
|
return [strategyOrBundleId, isBundle, triggerData, subData];
|
|
75
86
|
},
|
|
@@ -98,15 +109,10 @@ export const liquityEncode = {
|
|
|
98
109
|
return [strategyOrBundleId, isBundle, triggerData, subData];
|
|
99
110
|
},
|
|
100
111
|
};
|
|
101
|
-
export const chickenBondsEncode = {
|
|
102
|
-
rebond(bondId) {
|
|
103
|
-
return subDataService.cBondsRebondSubData.encode(bondId);
|
|
104
|
-
},
|
|
105
|
-
};
|
|
106
112
|
export const aaveV2Encode = {
|
|
107
|
-
|
|
113
|
+
leverageManagement(strategyOrBundleId, market, user, ratioState, targetRatio, triggerRatio) {
|
|
108
114
|
const isBundle = true;
|
|
109
|
-
const subData = subDataService.
|
|
115
|
+
const subData = subDataService.aaveV2LeverageManagementSubData.encode(market, targetRatio, ratioState);
|
|
110
116
|
const triggerData = triggerService.aaveV2RatioTrigger.encode(user, market, triggerRatio, ratioState);
|
|
111
117
|
return [strategyOrBundleId, isBundle, triggerData, subData];
|
|
112
118
|
},
|
|
@@ -133,9 +139,15 @@ export const aaveV3Encode = {
|
|
|
133
139
|
const triggerDataEncoded = triggerService.aaveV3QuotePriceTrigger.encode(baseTokenAddress, quoteTokenAddress, price, state);
|
|
134
140
|
return [strategyOrBundleId, isBundle, triggerDataEncoded, subDataEncoded];
|
|
135
141
|
},
|
|
136
|
-
|
|
142
|
+
leverageManagement(strategyOrBundleId, market, user, ratioState, targetRatio, triggerRatio, isGeneric = false) {
|
|
143
|
+
const isBundle = true;
|
|
144
|
+
const subData = subDataService.aaveV3LeverageManagementSubData.encode(targetRatio, ratioState, market, user, isGeneric);
|
|
145
|
+
const triggerData = triggerService.aaveV3RatioTrigger.encode(user, market, triggerRatio, ratioState);
|
|
146
|
+
return [strategyOrBundleId, isBundle, triggerData, subData];
|
|
147
|
+
},
|
|
148
|
+
liquidationProtection(strategyOrBundleId, market, user, ratioState, targetRatio, triggerRatio) {
|
|
137
149
|
const isBundle = true;
|
|
138
|
-
const subData = subDataService.
|
|
150
|
+
const subData = subDataService.aaveV3LiquidationProtectionSubData.encode(targetRatio, ratioState, market, user, true);
|
|
139
151
|
const triggerData = triggerService.aaveV3RatioTrigger.encode(user, market, triggerRatio, ratioState);
|
|
140
152
|
return [strategyOrBundleId, isBundle, triggerData, subData];
|
|
141
153
|
},
|
|
@@ -160,17 +172,23 @@ export const aaveV3Encode = {
|
|
|
160
172
|
},
|
|
161
173
|
};
|
|
162
174
|
export const compoundV2Encode = {
|
|
163
|
-
|
|
175
|
+
leverageManagement(strategyOrBundleId, user, ratioState, targetRatio, triggerRatio) {
|
|
164
176
|
const isBundle = true;
|
|
165
|
-
const subData = subDataService.
|
|
177
|
+
const subData = subDataService.compoundV2LeverageManagementSubData.encode(targetRatio, ratioState);
|
|
166
178
|
const triggerData = triggerService.compoundV2RatioTrigger.encode(user, triggerRatio, ratioState);
|
|
167
179
|
return [strategyOrBundleId, isBundle, triggerData, subData];
|
|
168
180
|
},
|
|
169
181
|
};
|
|
170
182
|
export const compoundV3Encode = {
|
|
171
|
-
|
|
183
|
+
leverageManagement(strategyOrBundleId, market, baseToken, user, ratioState, targetRatio, triggerRatio) {
|
|
184
|
+
const isBundle = true;
|
|
185
|
+
const subData = subDataService.compoundV3LeverageManagementSubData.encode(market, baseToken, targetRatio, ratioState);
|
|
186
|
+
const triggerData = triggerService.compoundV3RatioTrigger.encode(user, market, triggerRatio, ratioState);
|
|
187
|
+
return [strategyOrBundleId, isBundle, triggerData, subData];
|
|
188
|
+
},
|
|
189
|
+
liquidationProtection(strategyOrBundleId, market, baseToken, user, ratioState, targetRatio, triggerRatio) {
|
|
172
190
|
const isBundle = true;
|
|
173
|
-
const subData = subDataService.
|
|
191
|
+
const subData = subDataService.compoundV3LiquidationProtectionSubData.encode(market, baseToken, targetRatio, ratioState);
|
|
174
192
|
const triggerData = triggerService.compoundV3RatioTrigger.encode(user, market, triggerRatio, ratioState);
|
|
175
193
|
return [strategyOrBundleId, isBundle, triggerData, subData];
|
|
176
194
|
},
|
|
@@ -189,11 +207,6 @@ export const compoundV3Encode = {
|
|
|
189
207
|
return [strategyOrBundleId, isBundle, triggerDataEncoded, subDataEncoded];
|
|
190
208
|
},
|
|
191
209
|
};
|
|
192
|
-
export const morphoAaveV2Encode = {
|
|
193
|
-
leverageManagement(triggerRepayRatio, triggerBoostRatio, targetBoostRatio, targetRepayRatio, boostEnabled) {
|
|
194
|
-
return subDataService.morphoAaveV2LeverageManagementSubData.encode(triggerRepayRatio, triggerBoostRatio, targetBoostRatio, targetRepayRatio, boostEnabled);
|
|
195
|
-
},
|
|
196
|
-
};
|
|
197
210
|
export const exchangeEncode = {
|
|
198
211
|
dca(fromToken, toToken, amount, timestamp, interval, network) {
|
|
199
212
|
requireAddresses([fromToken, toToken]);
|
|
@@ -202,9 +215,9 @@ export const exchangeEncode = {
|
|
|
202
215
|
const strategyId = STRATEGY_IDS[network].EXCHANGE_DCA;
|
|
203
216
|
return [strategyId, false, triggerData, subData];
|
|
204
217
|
},
|
|
205
|
-
|
|
218
|
+
limitOrder(fromToken, toToken, amount, targetPrice, goodUntil, orderType, fromTokenDecimals, toTokenDecimals, network) {
|
|
206
219
|
requireAddresses([fromToken, toToken]);
|
|
207
|
-
const subData = subDataService.
|
|
220
|
+
const subData = subDataService.exchangeLimitOrderSubData.encode(fromToken, toToken, amount);
|
|
208
221
|
const triggerData = triggerService.exchangeOffchainPriceTrigger.encode(targetPrice, Number(goodUntil), orderType, fromTokenDecimals, toTokenDecimals);
|
|
209
222
|
const strategyId = STRATEGY_IDS[network].EXCHANGE_LIMIT_ORDER;
|
|
210
223
|
return [strategyId, false, triggerData, subData];
|
|
@@ -225,9 +238,15 @@ export const sparkEncode = {
|
|
|
225
238
|
const triggerDataEncoded = triggerService.sparkQuotePriceRangeTrigger.encode(collAsset, debtAsset, stopLossPrice, takeProfitPrice);
|
|
226
239
|
return [strategyOrBundleId, isBundle, triggerDataEncoded, subDataEncoded];
|
|
227
240
|
},
|
|
228
|
-
|
|
241
|
+
leverageManagement(strategyOrBundleId, market, user, ratioState, targetRatio, triggerRatio) {
|
|
229
242
|
const isBundle = true;
|
|
230
|
-
const subData = subDataService.
|
|
243
|
+
const subData = subDataService.sparkLeverageManagementSubData.encode(targetRatio, ratioState);
|
|
244
|
+
const triggerData = triggerService.sparkRatioTrigger.encode(user, market, triggerRatio, ratioState);
|
|
245
|
+
return [strategyOrBundleId, isBundle, triggerData, subData];
|
|
246
|
+
},
|
|
247
|
+
liquidationProtection(strategyOrBundleId, market, user, ratioState, targetRatio, triggerRatio) {
|
|
248
|
+
const isBundle = true;
|
|
249
|
+
const subData = subDataService.sparkLiquidationProtectionSubData.encode(targetRatio, ratioState);
|
|
231
250
|
const triggerData = triggerService.sparkRatioTrigger.encode(user, market, triggerRatio, ratioState);
|
|
232
251
|
return [strategyOrBundleId, isBundle, triggerData, subData];
|
|
233
252
|
},
|
|
@@ -280,6 +299,8 @@ export function getMorphoBlueBundleId(network, strategy, isEOA) {
|
|
|
280
299
|
return isEOA ? bundlesIds.MORPHO_BLUE_EOA_BOOST_ON_PRICE : bundlesIds.MORPHO_BLUE_BOOST_ON_PRICE;
|
|
281
300
|
case 'close':
|
|
282
301
|
return isEOA ? bundlesIds.MORPHO_BLUE_EOA_CLOSE : bundlesIds.MORPHO_BLUE_CLOSE;
|
|
302
|
+
case 'liquidationProtection':
|
|
303
|
+
return isEOA ? bundlesIds.MORPHO_BLUE_EOA_LIQUIDATION_PROTECTION : bundlesIds.MORPHO_BLUE_SW_LIQUIDATION_PROTECTION;
|
|
283
304
|
default:
|
|
284
305
|
throw new Error(`Unknown Morpho Blue strategy: ${strategy}`);
|
|
285
306
|
}
|
|
@@ -294,6 +315,13 @@ export const morphoBlueEncode = {
|
|
|
294
315
|
const isBundle = true;
|
|
295
316
|
return [bundleId, isBundle, triggerData, subData];
|
|
296
317
|
},
|
|
318
|
+
liquidationProtection(marketId, loanToken, collToken, oracle, irm, lltv, ratioState, targetRatio, triggerRatio, user, isEOA, network) {
|
|
319
|
+
const subData = subDataService.morphoBlueLiquidationProtectionSubData.encode(loanToken, collToken, oracle, irm, lltv, ratioState, targetRatio, user, isEOA);
|
|
320
|
+
const triggerData = triggerService.morphoBlueRatioTrigger.encode(marketId, user, triggerRatio, ratioState);
|
|
321
|
+
const bundleId = getMorphoBlueBundleId(network, 'liquidationProtection', isEOA);
|
|
322
|
+
const isBundle = true;
|
|
323
|
+
return [bundleId, isBundle, triggerData, subData];
|
|
324
|
+
},
|
|
297
325
|
leverageManagementOnPrice(strategyOrBundleId, isBundle = true, loanToken, collToken, oracle, irm, lltv, user, targetRatio, price, priceState) {
|
|
298
326
|
const subData = subDataService.morphoBlueLeverageManagementOnPriceSubData.encode(loanToken, collToken, oracle, irm, lltv, targetRatio, user);
|
|
299
327
|
const triggerData = triggerService.morphoBluePriceTrigger.encode(oracle, collToken, loanToken, price, priceState);
|
|
@@ -357,6 +385,12 @@ export const fluidEncode = {
|
|
|
357
385
|
const triggerData = triggerService.fluidRatioTrigger.encode(nftId, triggerRatio, ratioState);
|
|
358
386
|
return [strategyOrBundleId, isBundle, triggerData, subData];
|
|
359
387
|
},
|
|
388
|
+
liquidationProtection(nftId, vault, ratioState, targetRatio, triggerRatio, strategyOrBundleId) {
|
|
389
|
+
const isBundle = true;
|
|
390
|
+
const subData = subDataService.fluidLiquidationProtectionSubData.encode(nftId, vault, ratioState, targetRatio);
|
|
391
|
+
const triggerData = triggerService.fluidRatioTrigger.encode(nftId, triggerRatio, ratioState);
|
|
392
|
+
return [strategyOrBundleId, isBundle, triggerData, subData];
|
|
393
|
+
},
|
|
360
394
|
};
|
|
361
395
|
export const aaveV4Encode = {
|
|
362
396
|
leverageManagement(strategyOrBundleId, owner, spoke, ratioState, targetRatio, triggerRatio) {
|
|
@@ -365,6 +399,12 @@ export const aaveV4Encode = {
|
|
|
365
399
|
const triggerData = triggerService.aaveV4RatioTrigger.encode(owner, spoke, triggerRatio, ratioState);
|
|
366
400
|
return [strategyOrBundleId, isBundle, triggerData, subData];
|
|
367
401
|
},
|
|
402
|
+
liquidationProtection(strategyOrBundleId, owner, spoke, ratioState, targetRatio, triggerRatio) {
|
|
403
|
+
const isBundle = true;
|
|
404
|
+
const subData = subDataService.aaveV4LiquidationProtectionSubData.encode(spoke, owner, ratioState, targetRatio);
|
|
405
|
+
const triggerData = triggerService.aaveV4RatioTrigger.encode(owner, spoke, triggerRatio, ratioState);
|
|
406
|
+
return [strategyOrBundleId, isBundle, triggerData, subData];
|
|
407
|
+
},
|
|
368
408
|
leverageManagementOnPrice(strategyOrBundleId, owner, spoke, collAsset, collAssetId, debtAsset, debtAssetId, targetRatio, price, priceState, ratioState) {
|
|
369
409
|
const isBundle = true;
|
|
370
410
|
const subData = subDataService.aaveV4LeverageManagementOnPriceSubData.encode(spoke, owner, collAsset, collAssetId, debtAsset, debtAssetId, ratioState, targetRatio);
|