@defisaver/automation-sdk 3.3.17 → 3.3.18-spark-eoa-dev
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/cjs/constants/index.js +170 -0
- package/cjs/index.d.ts +2 -2
- package/cjs/index.js +5 -2
- package/cjs/services/ethereumService.test.js +4 -7
- package/cjs/services/strategiesService.js +195 -15
- package/cjs/services/strategySubService.d.ts +22 -17
- package/cjs/services/strategySubService.js +92 -28
- package/cjs/services/strategySubService.test.js +297 -40
- package/cjs/services/subDataService.d.ts +108 -20
- package/cjs/services/subDataService.js +97 -79
- package/cjs/services/subDataService.test.js +479 -174
- package/cjs/types/enums.d.ts +44 -6
- package/cjs/types/enums.js +38 -0
- package/esm/constants/index.js +170 -0
- package/esm/index.d.ts +2 -2
- package/esm/index.js +5 -2
- package/esm/services/ethereumService.test.js +4 -7
- package/esm/services/strategiesService.js +195 -15
- package/esm/services/strategySubService.d.ts +22 -17
- package/esm/services/strategySubService.js +91 -27
- package/esm/services/strategySubService.test.js +298 -38
- package/esm/services/subDataService.d.ts +108 -20
- package/esm/services/subDataService.js +95 -77
- package/esm/services/subDataService.test.js +480 -172
- package/esm/types/enums.d.ts +44 -6
- package/esm/types/enums.js +38 -0
- package/package.json +1 -1
- package/src/constants/index.ts +172 -1
- package/src/index.ts +22 -6
- package/src/services/ethereumService.test.ts +5 -8
- package/src/services/strategiesService.ts +262 -16
- package/src/services/strategySubService.test.ts +384 -46
- package/src/services/strategySubService.ts +251 -40
- package/src/services/subDataService.test.ts +639 -231
- package/src/services/subDataService.ts +149 -106
- package/src/services/utils.test.ts +1 -1
- package/src/services/utils.ts +3 -1
- package/src/types/enums.ts +38 -2
|
@@ -8,7 +8,7 @@ import type {
|
|
|
8
8
|
BundleInfoUnion, StrategyInfoUnion,
|
|
9
9
|
} from '../types';
|
|
10
10
|
import {
|
|
11
|
-
ChainId, ProtocolIdentifiers,
|
|
11
|
+
ChainId, ProtocolIdentifiers, Strategies,
|
|
12
12
|
} from '../types/enums';
|
|
13
13
|
|
|
14
14
|
import {
|
|
@@ -106,7 +106,7 @@ function parseMakerLeverageManagement(position: Position.Automated, parseData: P
|
|
|
106
106
|
const { isEnabled } = parseData.strategiesSubsData;
|
|
107
107
|
|
|
108
108
|
const triggerData = triggerService.makerRatioTrigger.decode(subStruct.triggerData);
|
|
109
|
-
const subData = subDataService.
|
|
109
|
+
const subData = subDataService.legacyMakerLeverageManagementSubData.decode(subStruct.subData);
|
|
110
110
|
|
|
111
111
|
_position.strategyData.decoded.triggerData = triggerData;
|
|
112
112
|
_position.strategyData.decoded.subData = subData;
|
|
@@ -140,6 +140,33 @@ function parseMakerLeverageManagement(position: Position.Automated, parseData: P
|
|
|
140
140
|
return _position;
|
|
141
141
|
}
|
|
142
142
|
|
|
143
|
+
function parseMakerLiquidationProtection(position: Position.Automated, parseData: ParseData): Position.Automated {
|
|
144
|
+
const _position = cloneDeep(position);
|
|
145
|
+
|
|
146
|
+
const { subStruct, subId } = parseData.subscriptionEventData;
|
|
147
|
+
const { isEnabled } = parseData.strategiesSubsData;
|
|
148
|
+
|
|
149
|
+
const triggerData = triggerService.makerRatioTrigger.decode(subStruct.triggerData);
|
|
150
|
+
const subData = subDataService.makerLiquidationProtectionSubData.decode(subStruct.subData);
|
|
151
|
+
|
|
152
|
+
_position.strategyData.decoded.triggerData = triggerData;
|
|
153
|
+
_position.strategyData.decoded.subData = subData;
|
|
154
|
+
|
|
155
|
+
_position.positionId = getPositionId(_position.chainId, _position.protocol.id, subData.vaultId);
|
|
156
|
+
|
|
157
|
+
|
|
158
|
+
_position.specific = {
|
|
159
|
+
triggerRepayRatio: triggerData.ratio,
|
|
160
|
+
targetRepayRatio: subData.targetRatio,
|
|
161
|
+
repayEnabled: isEnabled,
|
|
162
|
+
subId1: Number(subId),
|
|
163
|
+
};
|
|
164
|
+
|
|
165
|
+
_position.strategy.strategyId = Strategies.IdOverrides.LiquidationProtection;
|
|
166
|
+
|
|
167
|
+
return _position;
|
|
168
|
+
}
|
|
169
|
+
|
|
143
170
|
function parseLiquityCloseOnPrice(position: Position.Automated, parseData: ParseData): Position.Automated {
|
|
144
171
|
const _position = cloneDeep(position);
|
|
145
172
|
|
|
@@ -196,7 +223,7 @@ function parseAaveV2LeverageManagement(position: Position.Automated, parseData:
|
|
|
196
223
|
const { isEnabled } = parseData.strategiesSubsData;
|
|
197
224
|
|
|
198
225
|
const triggerData = triggerService.aaveV2RatioTrigger.decode(subStruct.triggerData);
|
|
199
|
-
const subData = subDataService.
|
|
226
|
+
const subData = subDataService.legacyAaveV2LeverageManagementSubData.decode(subStruct.subData);
|
|
200
227
|
|
|
201
228
|
_position.strategyData.decoded.triggerData = triggerData;
|
|
202
229
|
_position.strategyData.decoded.subData = subData;
|
|
@@ -240,9 +267,9 @@ function parseAaveV3LeverageManagement(position: Position.Automated, parseData:
|
|
|
240
267
|
const isEOA = _position.strategy.strategyId.includes('eoa');
|
|
241
268
|
let subData;
|
|
242
269
|
if (isEOA) {
|
|
243
|
-
subData = subDataService.aaveV3LeverageManagementSubDataWithoutSubProxy.decode(subStruct.subData);
|
|
244
|
-
} else {
|
|
245
270
|
subData = subDataService.aaveV3LeverageManagementSubData.decode(subStruct.subData);
|
|
271
|
+
} else {
|
|
272
|
+
subData = subDataService.legacyAaveV3LeverageManagementSubData.decode(subStruct.subData);
|
|
246
273
|
}
|
|
247
274
|
|
|
248
275
|
_position.strategyData.decoded.triggerData = triggerData;
|
|
@@ -280,6 +307,35 @@ function parseAaveV3LeverageManagement(position: Position.Automated, parseData:
|
|
|
280
307
|
return _position;
|
|
281
308
|
}
|
|
282
309
|
|
|
310
|
+
function parseAaveV3LiquidationProtection(position: Position.Automated, parseData: ParseData): Position.Automated {
|
|
311
|
+
const _position = cloneDeep(position);
|
|
312
|
+
|
|
313
|
+
const { subStruct, subId, subHash } = parseData.subscriptionEventData;
|
|
314
|
+
const { isEnabled } = parseData.strategiesSubsData;
|
|
315
|
+
|
|
316
|
+
const triggerData = triggerService.aaveV3RatioTrigger.decode(subStruct.triggerData);
|
|
317
|
+
|
|
318
|
+
const subData = subDataService.aaveV3LiquidationProtectionSubData.decode(subStruct.subData);
|
|
319
|
+
|
|
320
|
+
_position.strategyData.decoded.triggerData = triggerData;
|
|
321
|
+
_position.strategyData.decoded.subData = subData;
|
|
322
|
+
|
|
323
|
+
_position.positionId = getPositionId(_position.chainId, _position.protocol.id, _position.owner, triggerData.market);
|
|
324
|
+
|
|
325
|
+
_position.specific = {
|
|
326
|
+
triggerRepayRatio: triggerData.ratio,
|
|
327
|
+
targetRepayRatio: subData.targetRatio,
|
|
328
|
+
repayEnabled: isEnabled,
|
|
329
|
+
subId1: Number(subId),
|
|
330
|
+
subHashRepay: subHash,
|
|
331
|
+
};
|
|
332
|
+
|
|
333
|
+
const isEOA = _position.strategy.strategyId.includes('eoa');
|
|
334
|
+
_position.strategy.strategyId = isEOA ? Strategies.IdOverrides.EoaLiquidationProtection : Strategies.IdOverrides.LiquidationProtection;
|
|
335
|
+
|
|
336
|
+
return _position;
|
|
337
|
+
}
|
|
338
|
+
|
|
283
339
|
function parseAaveV3LeverageManagementOnPrice(position: Position.Automated, parseData: ParseData): Position.Automated {
|
|
284
340
|
const _position = cloneDeep(position);
|
|
285
341
|
const { subStruct } = parseData.subscriptionEventData;
|
|
@@ -392,11 +448,17 @@ function parseAaveV3CollateralSwitch(position: Position.Automated, parseData: Pa
|
|
|
392
448
|
function parseSparkCollateralSwitch(position: Position.Automated, parseData: ParseData): Position.Automated {
|
|
393
449
|
const _position = cloneDeep(position);
|
|
394
450
|
const { subStruct } = parseData.subscriptionEventData;
|
|
451
|
+
const isEOA = _position.strategy.strategyId.includes('eoa');
|
|
395
452
|
const triggerData = triggerService.sparkQuotePriceTrigger.decode(subStruct.triggerData);
|
|
396
|
-
const subData =
|
|
453
|
+
const subData = isEOA
|
|
454
|
+
? subDataService.sparkGenericFLCollateralSwitchSubData.decode(subStruct.subData)
|
|
455
|
+
: subDataService.sparkCollateralSwitchSubData.decode(subStruct.subData);
|
|
397
456
|
_position.strategyData.decoded.triggerData = triggerData;
|
|
398
457
|
_position.strategyData.decoded.subData = subData;
|
|
399
458
|
_position.positionId = getPositionId(_position.chainId, _position.protocol.id, _position.owner, subData.marketAddr);
|
|
459
|
+
_position.strategy.strategyId = isEOA
|
|
460
|
+
? Strategies.Identifiers.EoaCollateralSwitch
|
|
461
|
+
: Strategies.Identifiers.CollateralSwitch;
|
|
400
462
|
return _position;
|
|
401
463
|
}
|
|
402
464
|
|
|
@@ -437,6 +499,31 @@ function parseAaveV4LeverageManagement(position: Position.Automated, parseData:
|
|
|
437
499
|
return _position;
|
|
438
500
|
}
|
|
439
501
|
|
|
502
|
+
function parseAaveV4LiquidationProtection(position: Position.Automated, parseData: ParseData): Position.Automated {
|
|
503
|
+
const _position = cloneDeep(position);
|
|
504
|
+
const { subStruct, subId, subHash } = parseData.subscriptionEventData;
|
|
505
|
+
const { isEnabled } = parseData.strategiesSubsData;
|
|
506
|
+
const triggerData = triggerService.aaveV4RatioTrigger.decode(subStruct.triggerData);
|
|
507
|
+
const subData = subDataService.aaveV4LiquidationProtectionSubData.decode(subStruct.subData);
|
|
508
|
+
const isEOA = _position.strategy.strategyId.includes('eoa');
|
|
509
|
+
|
|
510
|
+
_position.strategyData.decoded.triggerData = triggerData;
|
|
511
|
+
_position.strategyData.decoded.subData = subData;
|
|
512
|
+
_position.positionId = getPositionId(_position.chainId, _position.protocol.id, _position.owner, triggerData.spoke);
|
|
513
|
+
_position.strategy.strategyId = isEOA ? Strategies.IdOverrides.EoaLiquidationProtection : Strategies.IdOverrides.LiquidationProtection;
|
|
514
|
+
|
|
515
|
+
_position.specific = {
|
|
516
|
+
triggerRepayRatio: triggerData.ratio,
|
|
517
|
+
targetRepayRatio: subData.targetRatio,
|
|
518
|
+
repayEnabled: isEnabled,
|
|
519
|
+
subId1: Number(subId),
|
|
520
|
+
subHashRepay: subHash,
|
|
521
|
+
};
|
|
522
|
+
|
|
523
|
+
return _position;
|
|
524
|
+
}
|
|
525
|
+
|
|
526
|
+
|
|
440
527
|
function parseAaveV4LeverageManagementOnPrice(position: Position.Automated, parseData: ParseData): Position.Automated {
|
|
441
528
|
const _position = cloneDeep(position);
|
|
442
529
|
const { subStruct } = parseData.subscriptionEventData;
|
|
@@ -589,7 +676,7 @@ function parseCompoundV2LeverageManagement(position: Position.Automated, parseDa
|
|
|
589
676
|
const { isEnabled } = parseData.strategiesSubsData;
|
|
590
677
|
|
|
591
678
|
const triggerData = triggerService.compoundV2RatioTrigger.decode(subStruct.triggerData);
|
|
592
|
-
const subData = subDataService.
|
|
679
|
+
const subData = subDataService.legacyCompoundV2LeverageManagementSubData.decode(subStruct.subData);
|
|
593
680
|
|
|
594
681
|
_position.strategyData.decoded.triggerData = triggerData;
|
|
595
682
|
_position.strategyData.decoded.subData = subData;
|
|
@@ -631,7 +718,7 @@ function parseCompoundV3LeverageManagement(position: Position.Automated, parseDa
|
|
|
631
718
|
const { subStruct, subId, subHash } = parseData.subscriptionEventData;
|
|
632
719
|
const { isEnabled } = parseData.strategiesSubsData;
|
|
633
720
|
|
|
634
|
-
const subDataDecoder = subDataService.
|
|
721
|
+
const subDataDecoder = subDataService.compoundV3LeverageManagementSubData;
|
|
635
722
|
|
|
636
723
|
const triggerData = triggerService.compoundV3RatioTrigger.decode(subStruct.triggerData);
|
|
637
724
|
const subData = subDataDecoder.decode(subStruct.subData);
|
|
@@ -670,6 +757,39 @@ function parseCompoundV3LeverageManagement(position: Position.Automated, parseDa
|
|
|
670
757
|
return _position;
|
|
671
758
|
}
|
|
672
759
|
|
|
760
|
+
|
|
761
|
+
function parseCompoundV3LiquidationProtection(position: Position.Automated, parseData: ParseData): Position.Automated {
|
|
762
|
+
const _position = cloneDeep(position);
|
|
763
|
+
|
|
764
|
+
const { subStruct, subId, subHash } = parseData.subscriptionEventData;
|
|
765
|
+
const { isEnabled } = parseData.strategiesSubsData;
|
|
766
|
+
|
|
767
|
+
const subDataDecoder = subDataService.compoundV3LiquidationProtectionSubData;
|
|
768
|
+
|
|
769
|
+
const triggerData = triggerService.compoundV3RatioTrigger.decode(subStruct.triggerData);
|
|
770
|
+
const subData = subDataDecoder.decode(subStruct.subData);
|
|
771
|
+
|
|
772
|
+
_position.strategyData.decoded.triggerData = triggerData;
|
|
773
|
+
_position.strategyData.decoded.subData = subData;
|
|
774
|
+
|
|
775
|
+
_position.positionId = getPositionId(_position.chainId, _position.protocol.id, triggerData.owner.toLowerCase(), triggerData.market);
|
|
776
|
+
|
|
777
|
+
const isEOA = _position.strategy.strategyId.includes('eoa');
|
|
778
|
+
|
|
779
|
+
_position.specific = {
|
|
780
|
+
triggerRepayRatio: triggerData.ratio,
|
|
781
|
+
targetRepayRatio: subData.targetRatio,
|
|
782
|
+
repayEnabled: isEnabled,
|
|
783
|
+
subId1: Number(subId),
|
|
784
|
+
subHashRepay: subHash,
|
|
785
|
+
};
|
|
786
|
+
|
|
787
|
+
_position.strategy.strategyId = isEOA ? Strategies.IdOverrides.EoaLiquidationProtection : Strategies.IdOverrides.LiquidationProtection;
|
|
788
|
+
|
|
789
|
+
return _position;
|
|
790
|
+
}
|
|
791
|
+
|
|
792
|
+
|
|
673
793
|
function parseCompoundV3LeverageManagementOnPrice(position: Position.Automated, parseData: ParseData): Position.Automated {
|
|
674
794
|
const _position = cloneDeep(position);
|
|
675
795
|
|
|
@@ -774,7 +894,7 @@ function parseExchangeLimitOrder(position: Position.Automated, parseData: ParseD
|
|
|
774
894
|
|
|
775
895
|
const { subStruct } = parseData.subscriptionEventData;
|
|
776
896
|
|
|
777
|
-
_position.strategyData.decoded.subData = subDataService.
|
|
897
|
+
_position.strategyData.decoded.subData = subDataService.legacyExchangeLimitOrderSubData.decode(subStruct.subData, chainId);
|
|
778
898
|
const fromTokenDecimals = getAssetInfoByAddress(_position.strategyData.decoded.subData.fromToken, chainId).decimals;
|
|
779
899
|
const toTokenDecimals = getAssetInfoByAddress(_position.strategyData.decoded.subData.toToken, chainId).decimals;
|
|
780
900
|
_position.strategyData.decoded.triggerData = triggerService.exchangeOffchainPriceTrigger.decode(subStruct.triggerData, fromTokenDecimals, toTokenDecimals);
|
|
@@ -791,7 +911,7 @@ function parseLiquityLeverageManagement(position: Position.Automated, parseData:
|
|
|
791
911
|
const { isEnabled } = parseData.strategiesSubsData;
|
|
792
912
|
|
|
793
913
|
const triggerData = triggerService.liquityRatioTrigger.decode(subStruct.triggerData);
|
|
794
|
-
const subData = subDataService.
|
|
914
|
+
const subData = subDataService.legacyLiquityLeverageManagementSubData.decode(subStruct.subData);
|
|
795
915
|
|
|
796
916
|
_position.strategyData.decoded.triggerData = triggerData;
|
|
797
917
|
_position.strategyData.decoded.subData = subData;
|
|
@@ -873,16 +993,19 @@ function parseSparkLeverageManagement(position: Position.Automated, parseData: P
|
|
|
873
993
|
|
|
874
994
|
const { subStruct, subId, subHash } = parseData.subscriptionEventData;
|
|
875
995
|
const { isEnabled } = parseData.strategiesSubsData;
|
|
996
|
+
const isEOA = _position.strategy.strategyId.includes('eoa');
|
|
876
997
|
|
|
877
998
|
const triggerData = triggerService.sparkRatioTrigger.decode(subStruct.triggerData);
|
|
878
|
-
const subData =
|
|
999
|
+
const subData = isEOA
|
|
1000
|
+
? subDataService.sparkGenericLeverageManagementSubData.decode(subStruct.subData)
|
|
1001
|
+
: subDataService.legacySparkLeverageManagementSubData.decode(subStruct.subData);
|
|
879
1002
|
|
|
880
1003
|
_position.strategyData.decoded.triggerData = triggerData;
|
|
881
1004
|
_position.strategyData.decoded.subData = subData;
|
|
882
1005
|
|
|
883
1006
|
_position.positionId = getPositionId(_position.chainId, _position.protocol.id, _position.owner, triggerData.market);
|
|
884
1007
|
|
|
885
|
-
const isRepay = _position.strategy.strategyId
|
|
1008
|
+
const isRepay = [Strategies.Identifiers.Repay, Strategies.Identifiers.EoaRepay].includes(_position.strategy.strategyId as Strategies.Identifiers);
|
|
886
1009
|
|
|
887
1010
|
if (isRepay) {
|
|
888
1011
|
_position.specific = {
|
|
@@ -890,7 +1013,7 @@ function parseSparkLeverageManagement(position: Position.Automated, parseData: P
|
|
|
890
1013
|
targetRepayRatio: subData.targetRatio,
|
|
891
1014
|
repayEnabled: isEnabled,
|
|
892
1015
|
subId1: Number(subId),
|
|
893
|
-
mergeWithId: Strategies.Identifiers.Boost,
|
|
1016
|
+
mergeWithId: isEOA ? Strategies.Identifiers.EoaBoost : Strategies.Identifiers.Boost,
|
|
894
1017
|
subHashRepay: subHash,
|
|
895
1018
|
};
|
|
896
1019
|
} else {
|
|
@@ -899,22 +1022,61 @@ function parseSparkLeverageManagement(position: Position.Automated, parseData: P
|
|
|
899
1022
|
targetBoostRatio: subData.targetRatio,
|
|
900
1023
|
boostEnabled: isEnabled,
|
|
901
1024
|
subId2: Number(subId),
|
|
902
|
-
mergeId: Strategies.Identifiers.Boost,
|
|
1025
|
+
mergeId: isEOA ? Strategies.Identifiers.EoaBoost : Strategies.Identifiers.Boost,
|
|
903
1026
|
subHashBoost: subHash,
|
|
904
1027
|
};
|
|
905
1028
|
}
|
|
906
1029
|
|
|
907
|
-
_position.strategy.strategyId =
|
|
1030
|
+
_position.strategy.strategyId = isEOA
|
|
1031
|
+
? Strategies.IdOverrides.EoaLeverageManagement
|
|
1032
|
+
: Strategies.IdOverrides.LeverageManagement;
|
|
1033
|
+
|
|
1034
|
+
return _position;
|
|
1035
|
+
}
|
|
1036
|
+
|
|
1037
|
+
function parseSparkLiquidationProtection(position: Position.Automated, parseData: ParseData): Position.Automated {
|
|
1038
|
+
const _position = cloneDeep(position);
|
|
1039
|
+
|
|
1040
|
+
const { subStruct, subId, subHash } = parseData.subscriptionEventData;
|
|
1041
|
+
const { isEnabled } = parseData.strategiesSubsData;
|
|
1042
|
+
const isEOA = _position.strategy.strategyId.includes('eoa');
|
|
1043
|
+
|
|
1044
|
+
const triggerData = triggerService.sparkRatioTrigger.decode(subStruct.triggerData);
|
|
1045
|
+
const subData = isEOA
|
|
1046
|
+
? subDataService.sparkGenericLiquidationProtectionSubData.decode(subStruct.subData)
|
|
1047
|
+
: subDataService.sparkLiquidationProtectionSubData.decode(subStruct.subData);
|
|
1048
|
+
|
|
1049
|
+
_position.strategyData.decoded.triggerData = triggerData;
|
|
1050
|
+
_position.strategyData.decoded.subData = subData;
|
|
1051
|
+
|
|
1052
|
+
_position.positionId = getPositionId(_position.chainId, _position.protocol.id, _position.owner, triggerData.market);
|
|
1053
|
+
|
|
1054
|
+
_position.specific = {
|
|
1055
|
+
triggerRepayRatio: triggerData.ratio,
|
|
1056
|
+
targetRepayRatio: subData.targetRatio,
|
|
1057
|
+
repayEnabled: isEnabled,
|
|
1058
|
+
subId1: Number(subId),
|
|
1059
|
+
subHashRepay: subHash,
|
|
1060
|
+
};
|
|
1061
|
+
|
|
1062
|
+
_position.strategy.strategyId = isEOA
|
|
1063
|
+
? Strategies.IdOverrides.EoaLiquidationProtection
|
|
1064
|
+
: Strategies.IdOverrides.LiquidationProtection;
|
|
1065
|
+
_position.strategy.strategyId = Strategies.IdOverrides.LiquidationProtection;
|
|
908
1066
|
|
|
909
1067
|
return _position;
|
|
910
1068
|
}
|
|
911
1069
|
|
|
1070
|
+
|
|
912
1071
|
function parseSparkLeverageManagementOnPrice(position: Position.Automated, parseData: ParseData): Position.Automated {
|
|
913
1072
|
const _position = cloneDeep(position);
|
|
914
1073
|
const { subStruct } = parseData.subscriptionEventData;
|
|
1074
|
+
const isEOA = _position.strategy.strategyId.includes('eoa');
|
|
915
1075
|
|
|
916
1076
|
const triggerData = triggerService.sparkQuotePriceTrigger.decode(subStruct.triggerData);
|
|
917
|
-
const subData =
|
|
1077
|
+
const subData = isEOA
|
|
1078
|
+
? subDataService.sparkLeverageManagementOnPriceGenericSubData.decode(subStruct.subData)
|
|
1079
|
+
: subDataService.sparkLeverageManagementOnPriceSubData.decode(subStruct.subData);
|
|
918
1080
|
|
|
919
1081
|
_position.strategyData.decoded.triggerData = triggerData;
|
|
920
1082
|
_position.strategyData.decoded.subData = subData;
|
|
@@ -935,6 +1097,10 @@ function parseSparkLeverageManagementOnPrice(position: Position.Automated, parse
|
|
|
935
1097
|
ratioState: triggerData.ratioState,
|
|
936
1098
|
};
|
|
937
1099
|
|
|
1100
|
+
_position.strategy.strategyId = isEOA
|
|
1101
|
+
? Strategies.IdOverrides.EoaLeverageManagementOnPrice
|
|
1102
|
+
: Strategies.IdOverrides.LeverageManagementOnPrice;
|
|
1103
|
+
|
|
938
1104
|
return _position;
|
|
939
1105
|
}
|
|
940
1106
|
|
|
@@ -945,10 +1111,13 @@ function parseSparkCloseOnPrice(position: Position.Automated, parseData: ParseDa
|
|
|
945
1111
|
const triggerData = triggerService.sparkQuotePriceRangeTrigger.decode(subStruct.triggerData);
|
|
946
1112
|
const subData = subDataService.sparkCloseGenericSubData.decode(subStruct.subData);
|
|
947
1113
|
|
|
1114
|
+
const isEOA = _position.strategy.strategyId.includes('eoa');
|
|
1115
|
+
|
|
948
1116
|
_position.strategyData.decoded.triggerData = triggerData;
|
|
949
1117
|
_position.strategyData.decoded.subData = subData;
|
|
950
1118
|
|
|
951
1119
|
_position.positionId = getPositionId(_position.chainId, _position.protocol.id, _position.owner, subData.marketAddr);
|
|
1120
|
+
_position.strategy.strategyId = isEOA ? Strategies.Identifiers.EoaCloseOnPrice : Strategies.Identifiers.CloseOnPrice;
|
|
952
1121
|
|
|
953
1122
|
const { takeProfitType, stopLossType } = getStopLossAndTakeProfitTypeByCloseStrategyType(+subData.closeType);
|
|
954
1123
|
|
|
@@ -1108,6 +1277,34 @@ function parseMorphoBlueLeverageManagement(position: Position.Automated, parseDa
|
|
|
1108
1277
|
return _position;
|
|
1109
1278
|
}
|
|
1110
1279
|
|
|
1280
|
+
|
|
1281
|
+
function parseMorphoBlueLiquidationProtection(position: Position.Automated, parseData: ParseData): Position.Automated {
|
|
1282
|
+
const _position = cloneDeep(position);
|
|
1283
|
+
|
|
1284
|
+
const { subStruct, subId, subHash } = parseData.subscriptionEventData;
|
|
1285
|
+
const { isEnabled } = parseData.strategiesSubsData;
|
|
1286
|
+
const triggerData = triggerService.morphoBlueRatioTrigger.decode(subStruct.triggerData);
|
|
1287
|
+
const subData = subDataService.morphoBlueLiquidationProtectionSubData.decode(subStruct.subData);
|
|
1288
|
+
|
|
1289
|
+
_position.strategyData.decoded.triggerData = triggerData;
|
|
1290
|
+
_position.strategyData.decoded.subData = subData;
|
|
1291
|
+
|
|
1292
|
+
_position.positionId = getPositionId(_position.chainId, _position.protocol.id, triggerData.owner.toLowerCase(), triggerData.marketId);
|
|
1293
|
+
|
|
1294
|
+
_position.specific = {
|
|
1295
|
+
triggerRepayRatio: triggerData.ratio,
|
|
1296
|
+
targetRepayRatio: subData.targetRatio,
|
|
1297
|
+
repayEnabled: isEnabled,
|
|
1298
|
+
subId1: Number(subId),
|
|
1299
|
+
subHashRepay: subHash,
|
|
1300
|
+
};
|
|
1301
|
+
|
|
1302
|
+
const isEOA = _position.strategy.strategyId.includes('eoa');
|
|
1303
|
+
_position.strategy.strategyId = isEOA ? Strategies.IdOverrides.EoaLiquidationProtection : Strategies.IdOverrides.LiquidationProtection;
|
|
1304
|
+
|
|
1305
|
+
return _position;
|
|
1306
|
+
}
|
|
1307
|
+
|
|
1111
1308
|
function parseMorphoBlueLeverageManagementOnPrice(position: Position.Automated, parseData: ParseData): Position.Automated {
|
|
1112
1309
|
const _position = cloneDeep(position);
|
|
1113
1310
|
|
|
@@ -1322,6 +1519,37 @@ function parseFluidT1LeverageManagement(position: Position.Automated, parseData:
|
|
|
1322
1519
|
return _position;
|
|
1323
1520
|
}
|
|
1324
1521
|
|
|
1522
|
+
|
|
1523
|
+
function parseFluidT1LiquidationProtection(position: Position.Automated, parseData: ParseData): Position.Automated {
|
|
1524
|
+
const _position = cloneDeep(position);
|
|
1525
|
+
|
|
1526
|
+
const { subStruct, subId, subHash } = parseData.subscriptionEventData;
|
|
1527
|
+
const { isEnabled } = parseData.strategiesSubsData;
|
|
1528
|
+
|
|
1529
|
+
const triggerData = triggerService.fluidRatioTrigger.decode(subStruct.triggerData);
|
|
1530
|
+
const subData = subDataService.fluidLiquidationProtectionSubData.decode(subStruct.subData);
|
|
1531
|
+
|
|
1532
|
+
_position.strategyData.decoded.triggerData = triggerData;
|
|
1533
|
+
_position.strategyData.decoded.subData = subData;
|
|
1534
|
+
|
|
1535
|
+
_position.positionId = getPositionId(
|
|
1536
|
+
_position.chainId, _position.protocol.id, _position.owner, triggerData.nftId, subData.vault,
|
|
1537
|
+
);
|
|
1538
|
+
|
|
1539
|
+
_position.specific = {
|
|
1540
|
+
triggerRepayRatio: triggerData.ratio,
|
|
1541
|
+
targetRepayRatio: subData.targetRatio,
|
|
1542
|
+
repayEnabled: isEnabled,
|
|
1543
|
+
subId1: Number(subId),
|
|
1544
|
+
subHashRepay: subHash,
|
|
1545
|
+
};
|
|
1546
|
+
|
|
1547
|
+
_position.strategy.strategyId = Strategies.IdOverrides.LiquidationProtection;
|
|
1548
|
+
|
|
1549
|
+
return _position;
|
|
1550
|
+
}
|
|
1551
|
+
|
|
1552
|
+
|
|
1325
1553
|
const parsingMethodsMapping: StrategiesToProtocolVersionMapping = {
|
|
1326
1554
|
[ProtocolIdentifiers.StrategiesAutomation.MakerDAO]: {
|
|
1327
1555
|
[Strategies.Identifiers.SavingsLiqProtection]: parseMakerSavingsLiqProtection,
|
|
@@ -1331,6 +1559,7 @@ const parsingMethodsMapping: StrategiesToProtocolVersionMapping = {
|
|
|
1331
1559
|
[Strategies.Identifiers.TrailingStopToDebt]: parseMakerTrailingStop,
|
|
1332
1560
|
[Strategies.Identifiers.Repay]: parseMakerLeverageManagement,
|
|
1333
1561
|
[Strategies.Identifiers.Boost]: parseMakerLeverageManagement,
|
|
1562
|
+
[Strategies.Identifiers.LiquidationProtection]: parseMakerLiquidationProtection,
|
|
1334
1563
|
},
|
|
1335
1564
|
[ProtocolIdentifiers.StrategiesAutomation.Liquity]: {
|
|
1336
1565
|
[Strategies.Identifiers.CloseOnPriceToColl]: parseLiquityCloseOnPrice,
|
|
@@ -1369,6 +1598,8 @@ const parsingMethodsMapping: StrategiesToProtocolVersionMapping = {
|
|
|
1369
1598
|
[Strategies.Identifiers.EoaBoostOnPrice]: parseAaveV3LeverageManagementOnPrice,
|
|
1370
1599
|
[Strategies.Identifiers.EoaCloseOnPrice]: parseAaveV3CloseOnPrice,
|
|
1371
1600
|
[Strategies.Identifiers.CollateralSwitch]: parseAaveV3CollateralSwitch,
|
|
1601
|
+
[Strategies.Identifiers.LiquidationProtection]: parseAaveV3LiquidationProtection,
|
|
1602
|
+
[Strategies.Identifiers.EoaLiquidationProtection]: parseAaveV3LiquidationProtection,
|
|
1372
1603
|
},
|
|
1373
1604
|
[ProtocolIdentifiers.StrategiesAutomation.AaveV4]: {
|
|
1374
1605
|
[Strategies.Identifiers.Repay]: parseAaveV4LeverageManagement,
|
|
@@ -1383,6 +1614,8 @@ const parsingMethodsMapping: StrategiesToProtocolVersionMapping = {
|
|
|
1383
1614
|
[Strategies.Identifiers.EoaCloseOnPrice]: parseAaveV4CloseOnPrice,
|
|
1384
1615
|
[Strategies.Identifiers.CollateralSwitch]: parseAaveV4CollateralSwitch,
|
|
1385
1616
|
[Strategies.Identifiers.EoaCollateralSwitch]: parseAaveV4CollateralSwitch,
|
|
1617
|
+
[Strategies.Identifiers.LiquidationProtection]: parseAaveV4LiquidationProtection,
|
|
1618
|
+
[Strategies.Identifiers.EoaLiquidationProtection]: parseAaveV4LiquidationProtection,
|
|
1386
1619
|
},
|
|
1387
1620
|
[ProtocolIdentifiers.StrategiesAutomation.CompoundV2]: {
|
|
1388
1621
|
[Strategies.Identifiers.Repay]: parseCompoundV2LeverageManagement,
|
|
@@ -1399,6 +1632,8 @@ const parsingMethodsMapping: StrategiesToProtocolVersionMapping = {
|
|
|
1399
1632
|
[Strategies.Identifiers.EoaBoostOnPrice]: parseCompoundV3LeverageManagementOnPrice,
|
|
1400
1633
|
[Strategies.Identifiers.CloseOnPrice]: parseCompoundV3CloseOnPrice,
|
|
1401
1634
|
[Strategies.Identifiers.EoaCloseOnPrice]: parseCompoundV3CloseOnPrice,
|
|
1635
|
+
[Strategies.Identifiers.LiquidationProtection]: parseCompoundV3LiquidationProtection,
|
|
1636
|
+
[Strategies.Identifiers.EoaLiquidationProtection]: parseCompoundV3LiquidationProtection,
|
|
1402
1637
|
},
|
|
1403
1638
|
[ProtocolIdentifiers.StrategiesAutomation.ChickenBonds]: {
|
|
1404
1639
|
[Strategies.Identifiers.Rebond]: parseChickenBondsRebond,
|
|
@@ -1417,7 +1652,15 @@ const parsingMethodsMapping: StrategiesToProtocolVersionMapping = {
|
|
|
1417
1652
|
[Strategies.Identifiers.RepayOnPrice]: parseSparkLeverageManagementOnPrice,
|
|
1418
1653
|
[Strategies.Identifiers.BoostOnPrice]: parseSparkLeverageManagementOnPrice,
|
|
1419
1654
|
[Strategies.Identifiers.CloseOnPrice]: parseSparkCloseOnPrice,
|
|
1655
|
+
[Strategies.Identifiers.EoaRepay]: parseSparkLeverageManagement,
|
|
1656
|
+
[Strategies.Identifiers.EoaBoost]: parseSparkLeverageManagement,
|
|
1657
|
+
[Strategies.Identifiers.EoaRepayOnPrice]: parseSparkLeverageManagementOnPrice,
|
|
1658
|
+
[Strategies.Identifiers.EoaBoostOnPrice]: parseSparkLeverageManagementOnPrice,
|
|
1659
|
+
[Strategies.Identifiers.EoaCloseOnPrice]: parseSparkCloseOnPrice,
|
|
1420
1660
|
[Strategies.Identifiers.CollateralSwitch]: parseSparkCollateralSwitch,
|
|
1661
|
+
[Strategies.Identifiers.EoaCollateralSwitch]: parseSparkCollateralSwitch,
|
|
1662
|
+
[Strategies.Identifiers.LiquidationProtection]: parseSparkLiquidationProtection,
|
|
1663
|
+
[Strategies.Identifiers.EoaLiquidationProtection]: parseSparkLiquidationProtection,
|
|
1421
1664
|
},
|
|
1422
1665
|
[ProtocolIdentifiers.StrategiesAutomation.CrvUSD]: {
|
|
1423
1666
|
[Strategies.Identifiers.Repay]: parseCrvUSDLeverageManagement,
|
|
@@ -1434,11 +1677,14 @@ const parsingMethodsMapping: StrategiesToProtocolVersionMapping = {
|
|
|
1434
1677
|
[Strategies.Identifiers.EoaBoostOnPrice]: parseMorphoBlueLeverageManagementOnPrice,
|
|
1435
1678
|
[Strategies.Identifiers.EoaRepayOnPrice]: parseMorphoBlueLeverageManagementOnPrice,
|
|
1436
1679
|
[Strategies.Identifiers.CloseOnPrice]: parseMorphoBlueCloseOnPrice,
|
|
1680
|
+
[Strategies.Identifiers.LiquidationProtection]: parseMorphoBlueLiquidationProtection,
|
|
1681
|
+
[Strategies.Identifiers.EoaLiquidationProtection]: parseMorphoBlueLiquidationProtection,
|
|
1437
1682
|
[Strategies.Identifiers.EoaCloseOnPrice]: parseMorphoBlueCloseOnPrice,
|
|
1438
1683
|
},
|
|
1439
1684
|
[ProtocolIdentifiers.StrategiesAutomation.FluidT1]: {
|
|
1440
1685
|
[Strategies.Identifiers.Repay]: parseFluidT1LeverageManagement,
|
|
1441
1686
|
[Strategies.Identifiers.Boost]: parseFluidT1LeverageManagement,
|
|
1687
|
+
[Strategies.Identifiers.LiquidationProtection]: parseFluidT1LiquidationProtection,
|
|
1442
1688
|
},
|
|
1443
1689
|
};
|
|
1444
1690
|
|