@defisaver/automation-sdk 3.3.14-strategies-refactor-dev → 3.3.15-liq-prot-dev
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/cjs/constants/index.js +95 -0
- package/cjs/index.d.ts +4 -3
- package/cjs/index.js +6 -2
- package/cjs/services/strategiesService.js +151 -0
- package/cjs/services/strategySubService.d.ts +9 -2
- package/cjs/services/strategySubService.js +47 -1
- package/cjs/services/subDataService.d.ts +64 -0
- package/cjs/services/subDataService.js +199 -5
- package/cjs/services/utils.d.ts +3 -1
- package/cjs/services/utils.js +34 -1
- package/cjs/services/utils.test.js +25 -0
- package/cjs/types/enums.d.ts +29 -6
- package/cjs/types/enums.js +23 -0
- package/esm/constants/index.js +95 -0
- package/esm/index.d.ts +4 -3
- package/esm/index.js +7 -3
- package/esm/services/strategiesService.js +151 -0
- package/esm/services/strategySubService.d.ts +9 -2
- package/esm/services/strategySubService.js +48 -2
- package/esm/services/subDataService.d.ts +64 -0
- package/esm/services/subDataService.js +197 -3
- package/esm/services/utils.d.ts +3 -1
- package/esm/services/utils.js +32 -1
- package/esm/services/utils.test.js +27 -2
- package/esm/types/enums.d.ts +29 -6
- package/esm/types/enums.js +23 -0
- package/package.json +1 -1
- package/src/constants/index.ts +96 -0
- package/src/index.ts +24 -6
- package/src/services/strategiesService.ts +216 -0
- package/src/services/strategySubService.ts +142 -5
- package/src/services/subDataService.ts +283 -3
- package/src/services/utils.test.ts +32 -1
- package/src/services/utils.ts +32 -1
- package/src/types/enums.ts +23 -0
package/cjs/constants/index.js
CHANGED
|
@@ -549,6 +549,46 @@ exports.MAINNET_BUNDLES_INFO = {
|
|
|
549
549
|
strategyId: enums_1.Strategies.Identifiers.EoaCloseOnPrice,
|
|
550
550
|
protocol: exports.PROTOCOLS.AaveV4,
|
|
551
551
|
},
|
|
552
|
+
[enums_1.Bundles.MainnetIds.MAKER_LIQUIDATION_PROTECTION]: {
|
|
553
|
+
strategyOrBundleId: enums_1.Bundles.MainnetIds.MAKER_LIQUIDATION_PROTECTION,
|
|
554
|
+
strategyId: enums_1.Strategies.Identifiers.LiquidationProtection,
|
|
555
|
+
protocol: exports.PROTOCOLS.MakerDAO,
|
|
556
|
+
},
|
|
557
|
+
[enums_1.Bundles.MainnetIds.AAVE_V3_LIQUIDATION_PROTECTION]: {
|
|
558
|
+
strategyOrBundleId: enums_1.Bundles.MainnetIds.AAVE_V3_LIQUIDATION_PROTECTION,
|
|
559
|
+
strategyId: enums_1.Strategies.Identifiers.LiquidationProtection,
|
|
560
|
+
protocol: exports.PROTOCOLS.AaveV3,
|
|
561
|
+
},
|
|
562
|
+
[enums_1.Bundles.MainnetIds.AAVE_V4_LIQUIDATION_PROTECTION]: {
|
|
563
|
+
strategyOrBundleId: enums_1.Bundles.MainnetIds.AAVE_V4_LIQUIDATION_PROTECTION,
|
|
564
|
+
strategyId: enums_1.Strategies.Identifiers.LiquidationProtection,
|
|
565
|
+
protocol: exports.PROTOCOLS.AaveV4,
|
|
566
|
+
},
|
|
567
|
+
[enums_1.Bundles.MainnetIds.SPARK_LIQUIDATION_PROTECTION]: {
|
|
568
|
+
strategyOrBundleId: enums_1.Bundles.MainnetIds.SPARK_LIQUIDATION_PROTECTION,
|
|
569
|
+
strategyId: enums_1.Strategies.Identifiers.LiquidationProtection,
|
|
570
|
+
protocol: exports.PROTOCOLS.Spark,
|
|
571
|
+
},
|
|
572
|
+
[enums_1.Bundles.MainnetIds.COMP_V3_SW_LIQUIDATION_PROTECTION]: {
|
|
573
|
+
strategyOrBundleId: enums_1.Bundles.MainnetIds.COMP_V3_SW_LIQUIDATION_PROTECTION,
|
|
574
|
+
strategyId: enums_1.Strategies.Identifiers.LiquidationProtection,
|
|
575
|
+
protocol: exports.PROTOCOLS.CompoundV3,
|
|
576
|
+
},
|
|
577
|
+
[enums_1.Bundles.MainnetIds.COMP_V3_EOA_LIQUIDATION_PROTECTION]: {
|
|
578
|
+
strategyOrBundleId: enums_1.Bundles.MainnetIds.COMP_V3_EOA_LIQUIDATION_PROTECTION,
|
|
579
|
+
strategyId: enums_1.Strategies.Identifiers.LiquidationProtection,
|
|
580
|
+
protocol: exports.PROTOCOLS.CompoundV3,
|
|
581
|
+
},
|
|
582
|
+
[enums_1.Bundles.MainnetIds.MORPHO_BLUE_LIQUIDATION_PROTECTION]: {
|
|
583
|
+
strategyOrBundleId: enums_1.Bundles.MainnetIds.MORPHO_BLUE_LIQUIDATION_PROTECTION,
|
|
584
|
+
strategyId: enums_1.Strategies.Identifiers.LiquidationProtection,
|
|
585
|
+
protocol: exports.PROTOCOLS.MorphoBlue,
|
|
586
|
+
},
|
|
587
|
+
[enums_1.Bundles.MainnetIds.FLUID_T1_LIQUIDATION_PROTECTION]: {
|
|
588
|
+
strategyOrBundleId: enums_1.Bundles.MainnetIds.FLUID_T1_LIQUIDATION_PROTECTION,
|
|
589
|
+
strategyId: enums_1.Strategies.Identifiers.LiquidationProtection,
|
|
590
|
+
protocol: exports.PROTOCOLS.FluidT1,
|
|
591
|
+
},
|
|
552
592
|
};
|
|
553
593
|
exports.OPTIMISM_BUNDLES_INFO = {
|
|
554
594
|
[enums_1.Bundles.OptimismIds.AAVE_V3_REPAY]: {
|
|
@@ -606,6 +646,11 @@ exports.OPTIMISM_BUNDLES_INFO = {
|
|
|
606
646
|
strategyId: enums_1.Strategies.Identifiers.EoaCloseOnPrice,
|
|
607
647
|
protocol: exports.PROTOCOLS.AaveV3,
|
|
608
648
|
},
|
|
649
|
+
[enums_1.Bundles.OptimismIds.AAVE_V3_LIQUIDATION_PROTECTION]: {
|
|
650
|
+
strategyOrBundleId: enums_1.Bundles.OptimismIds.AAVE_V3_LIQUIDATION_PROTECTION,
|
|
651
|
+
strategyId: enums_1.Strategies.Identifiers.LiquidationProtection,
|
|
652
|
+
protocol: exports.PROTOCOLS.AaveV3,
|
|
653
|
+
},
|
|
609
654
|
};
|
|
610
655
|
exports.BASE_BUNDLES_INFO = {
|
|
611
656
|
[enums_1.Bundles.BaseIds.AAVE_V3_REPAY]: {
|
|
@@ -743,6 +788,31 @@ exports.BASE_BUNDLES_INFO = {
|
|
|
743
788
|
strategyId: enums_1.Strategies.Identifiers.CloseOnPrice,
|
|
744
789
|
protocol: exports.PROTOCOLS.MorphoBlue,
|
|
745
790
|
},
|
|
791
|
+
[enums_1.Bundles.BaseIds.AAVE_V3_LIQUIDATION_PROTECTION]: {
|
|
792
|
+
strategyOrBundleId: enums_1.Bundles.BaseIds.AAVE_V3_LIQUIDATION_PROTECTION,
|
|
793
|
+
strategyId: enums_1.Strategies.Identifiers.LiquidationProtection,
|
|
794
|
+
protocol: exports.PROTOCOLS.AaveV3,
|
|
795
|
+
},
|
|
796
|
+
[enums_1.Bundles.BaseIds.COMP_V3_SW_LIQUIDATION_PROTECTION]: {
|
|
797
|
+
strategyOrBundleId: enums_1.Bundles.BaseIds.COMP_V3_SW_LIQUIDATION_PROTECTION,
|
|
798
|
+
strategyId: enums_1.Strategies.Identifiers.LiquidationProtection,
|
|
799
|
+
protocol: exports.PROTOCOLS.CompoundV3,
|
|
800
|
+
},
|
|
801
|
+
[enums_1.Bundles.BaseIds.COMP_V3_EOA_LIQUIDATION_PROTECTION]: {
|
|
802
|
+
strategyOrBundleId: enums_1.Bundles.BaseIds.COMP_V3_EOA_LIQUIDATION_PROTECTION,
|
|
803
|
+
strategyId: enums_1.Strategies.Identifiers.LiquidationProtection,
|
|
804
|
+
protocol: exports.PROTOCOLS.CompoundV3,
|
|
805
|
+
},
|
|
806
|
+
[enums_1.Bundles.BaseIds.MORPHO_BLUE_LIQUIDATION_PROTECTION]: {
|
|
807
|
+
strategyOrBundleId: enums_1.Bundles.BaseIds.MORPHO_BLUE_LIQUIDATION_PROTECTION,
|
|
808
|
+
strategyId: enums_1.Strategies.Identifiers.LiquidationProtection,
|
|
809
|
+
protocol: exports.PROTOCOLS.MorphoBlue,
|
|
810
|
+
},
|
|
811
|
+
[enums_1.Bundles.BaseIds.FLUID_T1_LIQUIDATION_PROTECTION]: {
|
|
812
|
+
strategyOrBundleId: enums_1.Bundles.BaseIds.FLUID_T1_LIQUIDATION_PROTECTION,
|
|
813
|
+
strategyId: enums_1.Strategies.Identifiers.LiquidationProtection,
|
|
814
|
+
protocol: exports.PROTOCOLS.FluidT1,
|
|
815
|
+
},
|
|
746
816
|
};
|
|
747
817
|
exports.ARBITRUM_BUNDLES_INFO = {
|
|
748
818
|
[enums_1.Bundles.ArbitrumIds.AAVE_V3_REPAY]: {
|
|
@@ -890,6 +960,31 @@ exports.ARBITRUM_BUNDLES_INFO = {
|
|
|
890
960
|
strategyId: enums_1.Strategies.Identifiers.CloseOnPrice,
|
|
891
961
|
protocol: exports.PROTOCOLS.MorphoBlue,
|
|
892
962
|
},
|
|
963
|
+
[enums_1.Bundles.ArbitrumIds.AAVE_V3_LIQUIDATION_PROTECTION]: {
|
|
964
|
+
strategyOrBundleId: enums_1.Bundles.ArbitrumIds.AAVE_V3_LIQUIDATION_PROTECTION,
|
|
965
|
+
strategyId: enums_1.Strategies.Identifiers.LiquidationProtection,
|
|
966
|
+
protocol: exports.PROTOCOLS.AaveV3,
|
|
967
|
+
},
|
|
968
|
+
[enums_1.Bundles.ArbitrumIds.COMP_V3_SW_LIQUIDATION_PROTECTION]: {
|
|
969
|
+
strategyOrBundleId: enums_1.Bundles.ArbitrumIds.COMP_V3_SW_LIQUIDATION_PROTECTION,
|
|
970
|
+
strategyId: enums_1.Strategies.Identifiers.LiquidationProtection,
|
|
971
|
+
protocol: exports.PROTOCOLS.CompoundV3,
|
|
972
|
+
},
|
|
973
|
+
[enums_1.Bundles.ArbitrumIds.COMP_V3_EOA_LIQUIDATION_PROTECTION]: {
|
|
974
|
+
strategyOrBundleId: enums_1.Bundles.ArbitrumIds.COMP_V3_EOA_LIQUIDATION_PROTECTION,
|
|
975
|
+
strategyId: enums_1.Strategies.Identifiers.LiquidationProtection,
|
|
976
|
+
protocol: exports.PROTOCOLS.CompoundV3,
|
|
977
|
+
},
|
|
978
|
+
[enums_1.Bundles.ArbitrumIds.MORPHO_BLUE_LIQUIDATION_PROTECTION]: {
|
|
979
|
+
strategyOrBundleId: enums_1.Bundles.ArbitrumIds.MORPHO_BLUE_LIQUIDATION_PROTECTION,
|
|
980
|
+
strategyId: enums_1.Strategies.Identifiers.LiquidationProtection,
|
|
981
|
+
protocol: exports.PROTOCOLS.MorphoBlue,
|
|
982
|
+
},
|
|
983
|
+
[enums_1.Bundles.ArbitrumIds.FLUID_T1_LIQUIDATION_PROTECTION]: {
|
|
984
|
+
strategyOrBundleId: enums_1.Bundles.ArbitrumIds.FLUID_T1_LIQUIDATION_PROTECTION,
|
|
985
|
+
strategyId: enums_1.Strategies.Identifiers.LiquidationProtection,
|
|
986
|
+
protocol: exports.PROTOCOLS.FluidT1,
|
|
987
|
+
},
|
|
893
988
|
};
|
|
894
989
|
exports.BUNDLES_INFO = {
|
|
895
990
|
[enums_1.ChainId.Ethereum]: exports.MAINNET_BUNDLES_INFO,
|
package/cjs/index.d.ts
CHANGED
|
@@ -13,12 +13,13 @@ import * as strategiesService from './services/strategiesService';
|
|
|
13
13
|
import * as constants from './constants';
|
|
14
14
|
import * as enums from './types/enums';
|
|
15
15
|
import type * as types from './types';
|
|
16
|
-
import { getRatioStateInfoForAaveCloseStrategy, compareSubHashes, encodeSubId, getCloseStrategyType } from './services/utils';
|
|
16
|
+
import { getRatioStateInfoForAaveCloseStrategy, compareSubHashes, encodeSubId, getCloseStrategyType, getCompoundV3LeverageManagementBundleId } from './services/utils';
|
|
17
17
|
declare const utils: {
|
|
18
|
-
getRatioStateInfoForAaveCloseStrategy: typeof getRatioStateInfoForAaveCloseStrategy;
|
|
19
18
|
compareSubHashes: typeof compareSubHashes;
|
|
20
19
|
encodeSubId: typeof encodeSubId;
|
|
21
20
|
getCloseStrategyType: typeof getCloseStrategyType;
|
|
21
|
+
getCompoundV3LeverageManagementBundleId: typeof getCompoundV3LeverageManagementBundleId;
|
|
22
|
+
getRatioStateInfoForAaveCloseStrategy: typeof getRatioStateInfoForAaveCloseStrategy;
|
|
22
23
|
};
|
|
23
|
-
export {
|
|
24
|
+
export { ArbitrumStrategies, BaseStrategies, EthereumStrategies, LegacyAaveAutomation, LegacyCompoundAutomation, LegacyMakerAutomation, OptimismStrategies, constants, enums, strategiesService, strategySubService, subDataService, triggerService, utils, };
|
|
24
25
|
export type { types };
|
package/cjs/index.js
CHANGED
|
@@ -30,7 +30,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
30
30
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
31
31
|
};
|
|
32
32
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
33
|
-
exports.
|
|
33
|
+
exports.utils = exports.triggerService = exports.subDataService = exports.strategySubService = exports.strategiesService = exports.enums = exports.constants = exports.OptimismStrategies = exports.LegacyMakerAutomation = exports.LegacyCompoundAutomation = exports.LegacyAaveAutomation = exports.EthereumStrategies = exports.BaseStrategies = exports.ArbitrumStrategies = void 0;
|
|
34
34
|
require("./configuration");
|
|
35
35
|
const LegacyMakerAutomation_1 = __importDefault(require("./automation/public/legacy/LegacyMakerAutomation"));
|
|
36
36
|
exports.LegacyMakerAutomation = LegacyMakerAutomation_1.default;
|
|
@@ -60,6 +60,10 @@ const enums = __importStar(require("./types/enums"));
|
|
|
60
60
|
exports.enums = enums;
|
|
61
61
|
const utils_1 = require("./services/utils");
|
|
62
62
|
const utils = {
|
|
63
|
-
|
|
63
|
+
compareSubHashes: utils_1.compareSubHashes,
|
|
64
|
+
encodeSubId: utils_1.encodeSubId,
|
|
65
|
+
getCloseStrategyType: utils_1.getCloseStrategyType,
|
|
66
|
+
getCompoundV3LeverageManagementBundleId: utils_1.getCompoundV3LeverageManagementBundleId,
|
|
67
|
+
getRatioStateInfoForAaveCloseStrategy: utils_1.getRatioStateInfoForAaveCloseStrategy,
|
|
64
68
|
};
|
|
65
69
|
exports.utils = utils;
|
|
@@ -123,6 +123,25 @@ function parseMakerLeverageManagement(position, parseData) {
|
|
|
123
123
|
_position.strategy.strategyId = enums_1.Strategies.IdOverrides.LeverageManagement;
|
|
124
124
|
return _position;
|
|
125
125
|
}
|
|
126
|
+
function parseMakerLiquidationProtection(position, parseData) {
|
|
127
|
+
const _position = (0, lodash_1.cloneDeep)(position);
|
|
128
|
+
const { subStruct, subId } = parseData.subscriptionEventData;
|
|
129
|
+
const { isEnabled } = parseData.strategiesSubsData;
|
|
130
|
+
const triggerData = triggerService.makerRatioTrigger.decode(subStruct.triggerData);
|
|
131
|
+
const subData = subDataService.makerLiquidationProtectionSubData.decode(subStruct.subData);
|
|
132
|
+
_position.strategyData.decoded.triggerData = triggerData;
|
|
133
|
+
_position.strategyData.decoded.subData = subData;
|
|
134
|
+
_position.positionId = (0, utils_1.getPositionId)(_position.chainId, _position.protocol.id, subData.vaultId);
|
|
135
|
+
_position.specific = {
|
|
136
|
+
triggerRepayRatio: triggerData.ratio,
|
|
137
|
+
targetRepayRatio: subData.targetRatio,
|
|
138
|
+
repayEnabled: isEnabled,
|
|
139
|
+
subId1: Number(subId),
|
|
140
|
+
};
|
|
141
|
+
// TODO -> Is this ok?
|
|
142
|
+
_position.strategy.strategyId = enums_1.Strategies.IdOverrides.LiquidationProtection;
|
|
143
|
+
return _position;
|
|
144
|
+
}
|
|
126
145
|
function parseLiquityCloseOnPrice(position, parseData) {
|
|
127
146
|
const _position = (0, lodash_1.cloneDeep)(position);
|
|
128
147
|
const { subStruct } = parseData.subscriptionEventData;
|
|
@@ -233,6 +252,27 @@ function parseAaveV3LeverageManagement(position, parseData) {
|
|
|
233
252
|
}
|
|
234
253
|
return _position;
|
|
235
254
|
}
|
|
255
|
+
function parseAaveV3LiquidationProtection(position, parseData) {
|
|
256
|
+
const _position = (0, lodash_1.cloneDeep)(position);
|
|
257
|
+
const { subStruct, subId, subHash } = parseData.subscriptionEventData;
|
|
258
|
+
const { isEnabled } = parseData.strategiesSubsData;
|
|
259
|
+
const triggerData = triggerService.aaveV3RatioTrigger.decode(subStruct.triggerData);
|
|
260
|
+
// const isEOA = _position.strategy.strategyId.includes('eoa');
|
|
261
|
+
const subData = subDataService.aaveV3LiquidationProtectionSubData.decode(subStruct.subData);
|
|
262
|
+
_position.strategyData.decoded.triggerData = triggerData;
|
|
263
|
+
_position.strategyData.decoded.subData = subData;
|
|
264
|
+
_position.positionId = (0, utils_1.getPositionId)(_position.chainId, _position.protocol.id, _position.owner, triggerData.market);
|
|
265
|
+
_position.specific = {
|
|
266
|
+
triggerRepayRatio: triggerData.ratio,
|
|
267
|
+
targetRepayRatio: subData.targetRatio,
|
|
268
|
+
repayEnabled: isEnabled,
|
|
269
|
+
subId1: Number(subId),
|
|
270
|
+
subHashRepay: subHash,
|
|
271
|
+
};
|
|
272
|
+
// TODO -> Should split for EOA or not? Prob not as they will use same encoding and decoding
|
|
273
|
+
_position.strategy.strategyId = enums_1.Strategies.IdOverrides.LiquidationProtection;
|
|
274
|
+
return _position;
|
|
275
|
+
}
|
|
236
276
|
function parseAaveV3LeverageManagementOnPrice(position, parseData) {
|
|
237
277
|
const _position = (0, lodash_1.cloneDeep)(position);
|
|
238
278
|
const { subStruct } = parseData.subscriptionEventData;
|
|
@@ -362,6 +402,27 @@ function parseAaveV4LeverageManagement(position, parseData) {
|
|
|
362
402
|
}
|
|
363
403
|
return _position;
|
|
364
404
|
}
|
|
405
|
+
function parseAaveV4LiquidationProtection(position, parseData) {
|
|
406
|
+
const _position = (0, lodash_1.cloneDeep)(position);
|
|
407
|
+
const { subStruct, subId, subHash } = parseData.subscriptionEventData;
|
|
408
|
+
const { isEnabled } = parseData.strategiesSubsData;
|
|
409
|
+
const triggerData = triggerService.aaveV4RatioTrigger.decode(subStruct.triggerData);
|
|
410
|
+
const subData = subDataService.aaveV4LiquidationProtectionSubData.decode(subStruct.subData);
|
|
411
|
+
// const isEOA = _position.strategy.strategyId.includes('eoa');
|
|
412
|
+
// const isRepay = [Strategies.Identifiers.Repay, Strategies.Identifiers.EoaRepay].includes(_position.strategy.strategyId as Strategies.Identifiers);
|
|
413
|
+
_position.strategyData.decoded.triggerData = triggerData;
|
|
414
|
+
_position.strategyData.decoded.subData = subData;
|
|
415
|
+
_position.positionId = (0, utils_1.getPositionId)(_position.chainId, _position.protocol.id, _position.owner, triggerData.spoke);
|
|
416
|
+
_position.strategy.strategyId = enums_1.Strategies.IdOverrides.LiquidationProtection;
|
|
417
|
+
_position.specific = {
|
|
418
|
+
triggerRepayRatio: triggerData.ratio,
|
|
419
|
+
targetRepayRatio: subData.targetRatio,
|
|
420
|
+
repayEnabled: isEnabled,
|
|
421
|
+
subId1: Number(subId),
|
|
422
|
+
subHashRepay: subHash,
|
|
423
|
+
};
|
|
424
|
+
return _position;
|
|
425
|
+
}
|
|
365
426
|
function parseAaveV4LeverageManagementOnPrice(position, parseData) {
|
|
366
427
|
const _position = (0, lodash_1.cloneDeep)(position);
|
|
367
428
|
const { subStruct } = parseData.subscriptionEventData;
|
|
@@ -546,6 +607,28 @@ function parseCompoundV3LeverageManagement(position, parseData) {
|
|
|
546
607
|
_position.strategy.strategyId = isEOA ? enums_1.Strategies.IdOverrides.EoaLeverageManagement : enums_1.Strategies.IdOverrides.LeverageManagement;
|
|
547
608
|
return _position;
|
|
548
609
|
}
|
|
610
|
+
function parseCompoundV3LiquidationProtection(position, parseData) {
|
|
611
|
+
const _position = (0, lodash_1.cloneDeep)(position);
|
|
612
|
+
const { subStruct, subId, subHash } = parseData.subscriptionEventData;
|
|
613
|
+
const { isEnabled } = parseData.strategiesSubsData;
|
|
614
|
+
const subDataDecoder = subDataService.compoundV3LiquidationProtectionSubData;
|
|
615
|
+
const triggerData = triggerService.compoundV3RatioTrigger.decode(subStruct.triggerData);
|
|
616
|
+
const subData = subDataDecoder.decode(subStruct.subData);
|
|
617
|
+
_position.strategyData.decoded.triggerData = triggerData;
|
|
618
|
+
_position.strategyData.decoded.subData = subData;
|
|
619
|
+
_position.positionId = (0, utils_1.getPositionId)(_position.chainId, _position.protocol.id, triggerData.owner.toLowerCase(), triggerData.market);
|
|
620
|
+
// const isRepay = [Strategies.Identifiers.Repay, Strategies.Identifiers.EoaRepay].includes(_position.strategy.strategyId as Strategies.Identifiers);
|
|
621
|
+
const isEOA = _position.strategy.strategyId.includes('eoa');
|
|
622
|
+
_position.specific = {
|
|
623
|
+
triggerRepayRatio: triggerData.ratio,
|
|
624
|
+
targetRepayRatio: subData.targetRatio,
|
|
625
|
+
repayEnabled: isEnabled,
|
|
626
|
+
subId1: Number(subId),
|
|
627
|
+
subHashRepay: subHash,
|
|
628
|
+
};
|
|
629
|
+
_position.strategy.strategyId = isEOA ? enums_1.Strategies.IdOverrides.EoaLiquidationProtection : enums_1.Strategies.IdOverrides.LiquidationProtection;
|
|
630
|
+
return _position;
|
|
631
|
+
}
|
|
549
632
|
function parseCompoundV3LeverageManagementOnPrice(position, parseData) {
|
|
550
633
|
const _position = (0, lodash_1.cloneDeep)(position);
|
|
551
634
|
const { subStruct } = parseData.subscriptionEventData;
|
|
@@ -725,6 +808,25 @@ function parseSparkLeverageManagement(position, parseData) {
|
|
|
725
808
|
_position.strategy.strategyId = enums_1.Strategies.IdOverrides.LeverageManagement;
|
|
726
809
|
return _position;
|
|
727
810
|
}
|
|
811
|
+
function parseSparkLiquidationProtection(position, parseData) {
|
|
812
|
+
const _position = (0, lodash_1.cloneDeep)(position);
|
|
813
|
+
const { subStruct, subId, subHash } = parseData.subscriptionEventData;
|
|
814
|
+
const { isEnabled } = parseData.strategiesSubsData;
|
|
815
|
+
const triggerData = triggerService.sparkRatioTrigger.decode(subStruct.triggerData);
|
|
816
|
+
const subData = subDataService.sparkLiquidationProtectionSubData.decode(subStruct.subData);
|
|
817
|
+
_position.strategyData.decoded.triggerData = triggerData;
|
|
818
|
+
_position.strategyData.decoded.subData = subData;
|
|
819
|
+
_position.positionId = (0, utils_1.getPositionId)(_position.chainId, _position.protocol.id, _position.owner, triggerData.market);
|
|
820
|
+
_position.specific = {
|
|
821
|
+
triggerRepayRatio: triggerData.ratio,
|
|
822
|
+
targetRepayRatio: subData.targetRatio,
|
|
823
|
+
repayEnabled: isEnabled,
|
|
824
|
+
subId1: Number(subId),
|
|
825
|
+
subHashRepay: subHash,
|
|
826
|
+
};
|
|
827
|
+
_position.strategy.strategyId = enums_1.Strategies.IdOverrides.LiquidationProtection;
|
|
828
|
+
return _position;
|
|
829
|
+
}
|
|
728
830
|
function parseSparkLeverageManagementOnPrice(position, parseData) {
|
|
729
831
|
const _position = (0, lodash_1.cloneDeep)(position);
|
|
730
832
|
const { subStruct } = parseData.subscriptionEventData;
|
|
@@ -879,6 +981,27 @@ function parseMorphoBlueLeverageManagement(position, parseData) {
|
|
|
879
981
|
_position.strategy.strategyId = isEOA ? enums_1.Strategies.IdOverrides.EoaLeverageManagement : enums_1.Strategies.IdOverrides.LeverageManagement;
|
|
880
982
|
return _position;
|
|
881
983
|
}
|
|
984
|
+
function parseMorphoBlueLiquidationProtection(position, parseData) {
|
|
985
|
+
const _position = (0, lodash_1.cloneDeep)(position);
|
|
986
|
+
const { subStruct, subId, subHash } = parseData.subscriptionEventData;
|
|
987
|
+
const { isEnabled } = parseData.strategiesSubsData;
|
|
988
|
+
const triggerData = triggerService.morphoBlueRatioTrigger.decode(subStruct.triggerData);
|
|
989
|
+
const subData = subDataService.morphoBlueLiquidationProtectionSubData.decode(subStruct.subData);
|
|
990
|
+
_position.strategyData.decoded.triggerData = triggerData;
|
|
991
|
+
_position.strategyData.decoded.subData = subData;
|
|
992
|
+
_position.positionId = (0, utils_1.getPositionId)(_position.chainId, _position.protocol.id, triggerData.owner.toLowerCase(), triggerData.marketId);
|
|
993
|
+
_position.specific = {
|
|
994
|
+
triggerRepayRatio: triggerData.ratio,
|
|
995
|
+
targetRepayRatio: subData.targetRatio,
|
|
996
|
+
repayEnabled: isEnabled,
|
|
997
|
+
subId1: Number(subId),
|
|
998
|
+
subHashRepay: subHash,
|
|
999
|
+
};
|
|
1000
|
+
const isEOA = _position.strategy.strategyId.includes('eoa');
|
|
1001
|
+
// TODO -> Should be separate for EOA ?
|
|
1002
|
+
_position.strategy.strategyId = enums_1.Strategies.IdOverrides.LiquidationProtection;
|
|
1003
|
+
return _position;
|
|
1004
|
+
}
|
|
882
1005
|
function parseMorphoBlueLeverageManagementOnPrice(position, parseData) {
|
|
883
1006
|
const _position = (0, lodash_1.cloneDeep)(position);
|
|
884
1007
|
const { subStruct } = parseData.subscriptionEventData;
|
|
@@ -1031,6 +1154,25 @@ function parseFluidT1LeverageManagement(position, parseData) {
|
|
|
1031
1154
|
_position.strategy.strategyId = enums_1.Strategies.IdOverrides.LeverageManagement;
|
|
1032
1155
|
return _position;
|
|
1033
1156
|
}
|
|
1157
|
+
function parseFluidT1LiquidationProtection(position, parseData) {
|
|
1158
|
+
const _position = (0, lodash_1.cloneDeep)(position);
|
|
1159
|
+
const { subStruct, subId, subHash } = parseData.subscriptionEventData;
|
|
1160
|
+
const { isEnabled } = parseData.strategiesSubsData;
|
|
1161
|
+
const triggerData = triggerService.fluidRatioTrigger.decode(subStruct.triggerData);
|
|
1162
|
+
const subData = subDataService.fluidLiquidationProtectionSubData.decode(subStruct.subData);
|
|
1163
|
+
_position.strategyData.decoded.triggerData = triggerData;
|
|
1164
|
+
_position.strategyData.decoded.subData = subData;
|
|
1165
|
+
_position.positionId = (0, utils_1.getPositionId)(_position.chainId, _position.protocol.id, _position.owner, triggerData.nftId, subData.vault);
|
|
1166
|
+
_position.specific = {
|
|
1167
|
+
triggerRepayRatio: triggerData.ratio,
|
|
1168
|
+
targetRepayRatio: subData.targetRatio,
|
|
1169
|
+
repayEnabled: isEnabled,
|
|
1170
|
+
subId1: Number(subId),
|
|
1171
|
+
subHashRepay: subHash,
|
|
1172
|
+
};
|
|
1173
|
+
_position.strategy.strategyId = enums_1.Strategies.IdOverrides.LiquidationProtection;
|
|
1174
|
+
return _position;
|
|
1175
|
+
}
|
|
1034
1176
|
const parsingMethodsMapping = {
|
|
1035
1177
|
[enums_1.ProtocolIdentifiers.StrategiesAutomation.MakerDAO]: {
|
|
1036
1178
|
[enums_1.Strategies.Identifiers.SavingsLiqProtection]: parseMakerSavingsLiqProtection,
|
|
@@ -1040,6 +1182,7 @@ const parsingMethodsMapping = {
|
|
|
1040
1182
|
[enums_1.Strategies.Identifiers.TrailingStopToDebt]: parseMakerTrailingStop,
|
|
1041
1183
|
[enums_1.Strategies.Identifiers.Repay]: parseMakerLeverageManagement,
|
|
1042
1184
|
[enums_1.Strategies.Identifiers.Boost]: parseMakerLeverageManagement,
|
|
1185
|
+
[enums_1.Strategies.Identifiers.LiquidationProtection]: parseMakerLiquidationProtection,
|
|
1043
1186
|
},
|
|
1044
1187
|
[enums_1.ProtocolIdentifiers.StrategiesAutomation.Liquity]: {
|
|
1045
1188
|
[enums_1.Strategies.Identifiers.CloseOnPriceToColl]: parseLiquityCloseOnPrice,
|
|
@@ -1078,6 +1221,7 @@ const parsingMethodsMapping = {
|
|
|
1078
1221
|
[enums_1.Strategies.Identifiers.EoaBoostOnPrice]: parseAaveV3LeverageManagementOnPrice,
|
|
1079
1222
|
[enums_1.Strategies.Identifiers.EoaCloseOnPrice]: parseAaveV3CloseOnPrice,
|
|
1080
1223
|
[enums_1.Strategies.Identifiers.CollateralSwitch]: parseAaveV3CollateralSwitch,
|
|
1224
|
+
[enums_1.Strategies.Identifiers.LiquidationProtection]: parseAaveV3LiquidationProtection,
|
|
1081
1225
|
},
|
|
1082
1226
|
[enums_1.ProtocolIdentifiers.StrategiesAutomation.AaveV4]: {
|
|
1083
1227
|
[enums_1.Strategies.Identifiers.Repay]: parseAaveV4LeverageManagement,
|
|
@@ -1092,6 +1236,7 @@ const parsingMethodsMapping = {
|
|
|
1092
1236
|
[enums_1.Strategies.Identifiers.EoaCloseOnPrice]: parseAaveV4CloseOnPrice,
|
|
1093
1237
|
[enums_1.Strategies.Identifiers.CollateralSwitch]: parseAaveV4CollateralSwitch,
|
|
1094
1238
|
[enums_1.Strategies.Identifiers.EoaCollateralSwitch]: parseAaveV4CollateralSwitch,
|
|
1239
|
+
[enums_1.Strategies.Identifiers.LiquidationProtection]: parseAaveV4LiquidationProtection,
|
|
1095
1240
|
},
|
|
1096
1241
|
[enums_1.ProtocolIdentifiers.StrategiesAutomation.CompoundV2]: {
|
|
1097
1242
|
[enums_1.Strategies.Identifiers.Repay]: parseCompoundV2LeverageManagement,
|
|
@@ -1108,6 +1253,9 @@ const parsingMethodsMapping = {
|
|
|
1108
1253
|
[enums_1.Strategies.Identifiers.EoaBoostOnPrice]: parseCompoundV3LeverageManagementOnPrice,
|
|
1109
1254
|
[enums_1.Strategies.Identifiers.CloseOnPrice]: parseCompoundV3CloseOnPrice,
|
|
1110
1255
|
[enums_1.Strategies.Identifiers.EoaCloseOnPrice]: parseCompoundV3CloseOnPrice,
|
|
1256
|
+
// TODO -> here should prob separate EOA from SW
|
|
1257
|
+
[enums_1.Strategies.Identifiers.LiquidationProtection]: parseCompoundV3LiquidationProtection,
|
|
1258
|
+
[enums_1.Strategies.Identifiers.EoaLiquidationProtection]: parseCompoundV3LiquidationProtection,
|
|
1111
1259
|
},
|
|
1112
1260
|
[enums_1.ProtocolIdentifiers.StrategiesAutomation.ChickenBonds]: {
|
|
1113
1261
|
[enums_1.Strategies.Identifiers.Rebond]: parseChickenBondsRebond,
|
|
@@ -1127,6 +1275,7 @@ const parsingMethodsMapping = {
|
|
|
1127
1275
|
[enums_1.Strategies.Identifiers.BoostOnPrice]: parseSparkLeverageManagementOnPrice,
|
|
1128
1276
|
[enums_1.Strategies.Identifiers.CloseOnPrice]: parseSparkCloseOnPrice,
|
|
1129
1277
|
[enums_1.Strategies.Identifiers.CollateralSwitch]: parseSparkCollateralSwitch,
|
|
1278
|
+
[enums_1.Strategies.Identifiers.LiquidationProtection]: parseSparkLiquidationProtection,
|
|
1130
1279
|
},
|
|
1131
1280
|
[enums_1.ProtocolIdentifiers.StrategiesAutomation.CrvUSD]: {
|
|
1132
1281
|
[enums_1.Strategies.Identifiers.Repay]: parseCrvUSDLeverageManagement,
|
|
@@ -1140,10 +1289,12 @@ const parsingMethodsMapping = {
|
|
|
1140
1289
|
[enums_1.Strategies.Identifiers.EoaBoost]: parseMorphoBlueLeverageManagement,
|
|
1141
1290
|
[enums_1.Strategies.Identifiers.BoostOnPrice]: parseMorphoBlueLeverageManagementOnPrice,
|
|
1142
1291
|
[enums_1.Strategies.Identifiers.CloseOnPrice]: parseMorphoBlueCloseOnPrice,
|
|
1292
|
+
[enums_1.Strategies.Identifiers.LiquidationProtection]: parseMorphoBlueLiquidationProtection,
|
|
1143
1293
|
},
|
|
1144
1294
|
[enums_1.ProtocolIdentifiers.StrategiesAutomation.FluidT1]: {
|
|
1145
1295
|
[enums_1.Strategies.Identifiers.Repay]: parseFluidT1LeverageManagement,
|
|
1146
1296
|
[enums_1.Strategies.Identifiers.Boost]: parseFluidT1LeverageManagement,
|
|
1297
|
+
[enums_1.Strategies.Identifiers.LiquidationProtection]: parseFluidT1LiquidationProtection,
|
|
1147
1298
|
},
|
|
1148
1299
|
};
|
|
1149
1300
|
function getParsingMethod(id, strategy) {
|
|
@@ -1,11 +1,12 @@
|
|
|
1
|
-
import
|
|
2
|
-
import { CloseToAssetType, Bundles, ChainId, RatioState, Strategies } from '../types/enums';
|
|
1
|
+
import { Bundles, ChainId, CloseToAssetType, RatioState, Strategies } from '../types/enums';
|
|
3
2
|
import type { EthereumAddress, StrategyOrBundleIds } from '../types';
|
|
3
|
+
import type { OrderType } from '../types/enums';
|
|
4
4
|
export declare const makerEncode: {
|
|
5
5
|
repayFromSavings(bundleId: StrategyOrBundleIds, vaultId: number, triggerRepayRatio: number, targetRepayRatio: number, isBundle?: boolean, chainId?: ChainId, daiAddr?: EthereumAddress, mcdCdpManagerAddr?: EthereumAddress): (boolean | string[] | Strategies.MainnetIds | Strategies.OptimismIds | Strategies.ArbitrumIds | Strategies.BaseIds | Bundles.MainnetIds | Bundles.OptimismIds | Bundles.ArbitrumIds | Bundles.BaseIds)[];
|
|
6
6
|
closeOnPrice(vaultId: number, ratioState: RatioState, price: string, closeToAssetAddr: EthereumAddress, chainlinkCollAddress: EthereumAddress, chainId?: ChainId, daiAddr?: EthereumAddress, mcdCdpManagerAddr?: EthereumAddress): (boolean | string[] | Strategies.MainnetIds)[];
|
|
7
7
|
trailingStop(vaultId: number, triggerPercentage: number, closeToAssetAddr: EthereumAddress, chainlinkCollAddress: EthereumAddress, roundId: number, chainId?: ChainId, daiAddr?: EthereumAddress, mcdCdpManagerAddr?: EthereumAddress): (boolean | string[] | Strategies.MainnetIds)[];
|
|
8
8
|
leverageManagementWithoutSubProxy(vaultId: number, triggerRatio: number, targetRatio: number, ratioState: RatioState, isBoost: boolean, daiAddr?: EthereumAddress): (boolean | string[] | Bundles.MainnetIds)[];
|
|
9
|
+
liquidationProtection(vaultId: number, triggerRatio: number, targetRatio: number, ratioState: RatioState, daiAddr?: EthereumAddress): (boolean | string[] | Bundles.MainnetIds)[];
|
|
9
10
|
};
|
|
10
11
|
export declare const liquityEncode: {
|
|
11
12
|
closeOnPrice(priceOverOrUnder: RatioState, price: string, closeToAssetAddr: EthereumAddress, chainlinkCollAddress: EthereumAddress, chainId?: ChainId, collAddr?: EthereumAddress, debtAddr?: EthereumAddress): (boolean | string[] | Strategies.MainnetIds)[];
|
|
@@ -60,6 +61,7 @@ export declare const aaveV3Encode: {
|
|
|
60
61
|
targetRatio: number;
|
|
61
62
|
}): (number | boolean | string[])[];
|
|
62
63
|
leverageManagementWithoutSubProxy(strategyOrBundleId: number, market: EthereumAddress, user: EthereumAddress, ratioState: RatioState, targetRatio: number, triggerRatio: number, isGeneric?: boolean): (number | boolean | string[])[];
|
|
64
|
+
liquidationProtection(strategyOrBundleId: number, market: EthereumAddress, user: EthereumAddress, ratioState: RatioState, targetRatio: number, triggerRatio: number): (number | boolean | string[])[];
|
|
63
65
|
leverageManagementOnPriceGeneric(strategyOrBundleId: number, price: number, ratioState: RatioState, collAsset: EthereumAddress, collAssetId: number, debtAsset: EthereumAddress, debtAssetId: number, marketAddr: EthereumAddress, targetRatio: number, user: EthereumAddress): (number | boolean | string[])[];
|
|
64
66
|
closeOnPriceGeneric(strategyOrBundleId: number, collAsset: EthereumAddress, collAssetId: number, debtAsset: EthereumAddress, debtAssetId: number, marketAddr: EthereumAddress, user: EthereumAddress, stopLossPrice?: number, stopLossType?: CloseToAssetType, takeProfitPrice?: number, takeProfitType?: CloseToAssetType): (number | boolean | string[])[];
|
|
65
67
|
collateralSwitch(strategyOrBundleId: number, fromAsset: EthereumAddress, fromAssetId: number, toAsset: EthereumAddress, toAssetId: number, marketAddr: EthereumAddress, amountToSwitch: string, baseTokenAddress: EthereumAddress, quoteTokenAddress: EthereumAddress, price: number, state: RatioState): (number | boolean | string[])[];
|
|
@@ -69,6 +71,7 @@ export declare const compoundV2Encode: {
|
|
|
69
71
|
};
|
|
70
72
|
export declare const compoundV3Encode: {
|
|
71
73
|
leverageManagementWithoutSubProxy(strategyOrBundleId: number, market: EthereumAddress, baseToken: EthereumAddress, user: EthereumAddress, ratioState: RatioState, targetRatio: number, triggerRatio: number): (number | boolean | string[])[];
|
|
74
|
+
liquidationProtection(market: EthereumAddress, baseToken: EthereumAddress, triggerRepayRatio: number, triggerBoostRatio: number, targetBoostRatio: number, targetRepayRatio: number, boostEnabled: boolean, isEOA: boolean): string[];
|
|
72
75
|
leverageManagementOnPrice(strategyOrBundleId: number, market: EthereumAddress, collToken: EthereumAddress, baseToken: EthereumAddress, targetRatio: number, price: number, priceState: RatioState, ratioState: RatioState, user: EthereumAddress): (number | boolean | string[])[];
|
|
73
76
|
closeOnPrice(strategyOrBundleId: number, market: EthereumAddress, collToken: EthereumAddress, baseToken: EthereumAddress, stopLossPrice: number | undefined, stopLossType: CloseToAssetType | undefined, takeProfitPrice: number | undefined, takeProfitType: CloseToAssetType | undefined, user: EthereumAddress): (number | boolean | string[])[];
|
|
74
77
|
};
|
|
@@ -95,6 +98,7 @@ export declare const sparkEncode: {
|
|
|
95
98
|
}): (number | boolean | string[])[];
|
|
96
99
|
closeOnPriceGeneric(strategyOrBundleId: number, collAsset: EthereumAddress, collAssetId: number, debtAsset: EthereumAddress, debtAssetId: number, marketAddr: EthereumAddress, user: EthereumAddress, stopLossPrice?: number, stopLossType?: CloseToAssetType, takeProfitPrice?: number, takeProfitType?: CloseToAssetType): (number | boolean | string[])[];
|
|
97
100
|
leverageManagementWithoutSubProxy(strategyOrBundleId: number, market: EthereumAddress, user: EthereumAddress, ratioState: RatioState, targetRatio: number, triggerRatio: number): (number | boolean | string[])[];
|
|
101
|
+
liquidationProtection(strategyOrBundleId: number, market: EthereumAddress, user: EthereumAddress, ratioState: RatioState, targetRatio: number, triggerRatio: number): (number | boolean | string[])[];
|
|
98
102
|
collateralSwitch(strategyOrBundleId: number, fromAsset: EthereumAddress, fromAssetId: number, toAsset: EthereumAddress, toAssetId: number, marketAddr: EthereumAddress, amountToSwitch: string, baseTokenAddress: EthereumAddress, quoteTokenAddress: EthereumAddress, price: number, state: RatioState): (number | boolean | string[])[];
|
|
99
103
|
};
|
|
100
104
|
export declare const crvUSDEncode: {
|
|
@@ -103,6 +107,7 @@ export declare const crvUSDEncode: {
|
|
|
103
107
|
};
|
|
104
108
|
export declare const morphoBlueEncode: {
|
|
105
109
|
leverageManagement(marketId: string, loanToken: EthereumAddress, collToken: EthereumAddress, oracle: EthereumAddress, irm: EthereumAddress, lltv: string, ratioState: RatioState, targetRatio: number, triggerRatio: number, user: EthereumAddress, isEOA: boolean, network: ChainId): (boolean | string[] | Bundles.BaseIds)[] | (boolean | string[] | Bundles.MainnetIds | Bundles.ArbitrumIds)[];
|
|
110
|
+
liquidationProtection(marketId: string, loanToken: EthereumAddress, collToken: EthereumAddress, oracle: EthereumAddress, irm: EthereumAddress, lltv: string, ratioState: RatioState, targetRatio: number, triggerRatio: number, user: EthereumAddress, isEOA: boolean, network: ChainId): (boolean | string[] | Bundles.MainnetIds)[];
|
|
106
111
|
leverageManagementOnPrice(strategyOrBundleId: number, isBundle: boolean | undefined, loanToken: EthereumAddress, collToken: EthereumAddress, oracle: EthereumAddress, irm: EthereumAddress, lltv: string, user: EthereumAddress, targetRatio: number, price: number, priceState: RatioState): (number | boolean | string[])[];
|
|
107
112
|
closeOnPrice(strategyOrBundleId: number, loanToken: EthereumAddress, collToken: EthereumAddress, oracle: EthereumAddress, irm: EthereumAddress, lltv: string, user: EthereumAddress, stopLossPrice?: number, stopLossType?: CloseToAssetType, takeProfitPrice?: number, takeProfitType?: CloseToAssetType): (number | boolean | string[])[];
|
|
108
113
|
};
|
|
@@ -114,9 +119,11 @@ export declare const liquityV2Encode: {
|
|
|
114
119
|
};
|
|
115
120
|
export declare const fluidEncode: {
|
|
116
121
|
leverageManagement(nftId: string, vault: EthereumAddress, ratioState: RatioState, targetRatio: number, triggerRatio: number, strategyOrBundleId: number): (number | boolean | string[])[];
|
|
122
|
+
liquidationProtection(nftId: string, vault: EthereumAddress, ratioState: RatioState, targetRatio: number, triggerRatio: number, strategyOrBundleId: number): (number | boolean | string[])[];
|
|
117
123
|
};
|
|
118
124
|
export declare const aaveV4Encode: {
|
|
119
125
|
leverageManagement(strategyOrBundleId: number, owner: EthereumAddress, spoke: EthereumAddress, ratioState: RatioState, targetRatio: number, triggerRatio: number): (number | boolean | string[])[];
|
|
126
|
+
liquidationProtection(strategyOrBundleId: number, owner: EthereumAddress, spoke: EthereumAddress, ratioState: RatioState, targetRatio: number, triggerRatio: number): (number | boolean | string[])[];
|
|
120
127
|
leverageManagementOnPrice(strategyOrBundleId: number, owner: EthereumAddress, spoke: EthereumAddress, collAsset: EthereumAddress, collAssetId: number, debtAsset: EthereumAddress, debtAssetId: number, targetRatio: number, price: string, priceState: RatioState, ratioState: RatioState): (number | boolean | string[])[];
|
|
121
128
|
closeOnPrice(strategyOrBundleId: number, owner: EthereumAddress, spoke: EthereumAddress, collAsset: EthereumAddress, collAssetId: number, debtAsset: EthereumAddress, debtAssetId: number, stopLossPrice?: string, stopLossType?: CloseToAssetType, takeProfitPrice?: string, takeProfitType?: CloseToAssetType): (number | boolean | string[])[];
|
|
122
129
|
collateralSwitch(strategyOrBundleId: number, owner: EthereumAddress, spoke: EthereumAddress, fromAsset: EthereumAddress, fromAssetId: number, toAsset: EthereumAddress, toAssetId: number, amountToSwitch: string, price: string, ratioState: RatioState): (number | boolean | string[])[];
|
|
@@ -25,8 +25,8 @@ var __importStar = (this && this.__importStar) || function (mod) {
|
|
|
25
25
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
26
|
exports.aaveV4Encode = exports.fluidEncode = exports.liquityV2Encode = exports.morphoBlueEncode = exports.crvUSDEncode = exports.sparkEncode = exports.exchangeEncode = exports.morphoAaveV2Encode = exports.compoundV3Encode = exports.compoundV2Encode = exports.aaveV3Encode = exports.aaveV2Encode = exports.chickenBondsEncode = exports.liquityEncode = exports.makerEncode = void 0;
|
|
27
27
|
const tokens_1 = require("@defisaver/tokens");
|
|
28
|
-
const enums_1 = require("../types/enums");
|
|
29
28
|
const constants_1 = require("../constants");
|
|
29
|
+
const enums_1 = require("../types/enums");
|
|
30
30
|
const subDataService = __importStar(require("./subDataService"));
|
|
31
31
|
const triggerService = __importStar(require("./triggerService"));
|
|
32
32
|
const utils_1 = require("./utils");
|
|
@@ -67,6 +67,17 @@ exports.makerEncode = {
|
|
|
67
67
|
subData,
|
|
68
68
|
];
|
|
69
69
|
},
|
|
70
|
+
liquidationProtection(vaultId, triggerRatio, targetRatio, ratioState, daiAddr) {
|
|
71
|
+
const bundleId = enums_1.Bundles.MainnetIds.MAKER_LIQUIDATION_PROTECTION;
|
|
72
|
+
const triggerData = triggerService.makerRatioTrigger.encode(vaultId, triggerRatio, ratioState);
|
|
73
|
+
const subData = subDataService.makerLiquidationProtectionSubData.encode(vaultId, targetRatio, daiAddr);
|
|
74
|
+
return [
|
|
75
|
+
bundleId,
|
|
76
|
+
true,
|
|
77
|
+
triggerData,
|
|
78
|
+
subData,
|
|
79
|
+
];
|
|
80
|
+
},
|
|
70
81
|
};
|
|
71
82
|
exports.liquityEncode = {
|
|
72
83
|
closeOnPrice(priceOverOrUnder, price, closeToAssetAddr, chainlinkCollAddress, chainId = enums_1.ChainId.Ethereum, collAddr, debtAddr) {
|
|
@@ -165,6 +176,12 @@ exports.aaveV3Encode = {
|
|
|
165
176
|
const triggerData = triggerService.aaveV3RatioTrigger.encode(user, market, triggerRatio, ratioState);
|
|
166
177
|
return [strategyOrBundleId, isBundle, triggerData, subData];
|
|
167
178
|
},
|
|
179
|
+
liquidationProtection(strategyOrBundleId, market, user, ratioState, targetRatio, triggerRatio) {
|
|
180
|
+
const isBundle = true;
|
|
181
|
+
const subData = subDataService.aaveV3LiquidationProtectionSubData.encode(targetRatio, ratioState, market, user);
|
|
182
|
+
const triggerData = triggerService.aaveV3RatioTrigger.encode(user, market, triggerRatio, ratioState);
|
|
183
|
+
return [strategyOrBundleId, isBundle, triggerData, subData];
|
|
184
|
+
},
|
|
168
185
|
leverageManagementOnPriceGeneric(strategyOrBundleId, price, ratioState, collAsset, collAssetId, debtAsset, debtAssetId, marketAddr, targetRatio, user) {
|
|
169
186
|
const isBundle = true;
|
|
170
187
|
const subDataEncoded = subDataService.aaveV3LeverageManagementOnPriceGeneric.encode(collAsset, collAssetId, debtAsset, debtAssetId, marketAddr, targetRatio, user);
|
|
@@ -200,6 +217,9 @@ exports.compoundV3Encode = {
|
|
|
200
217
|
const triggerData = triggerService.compoundV3RatioTrigger.encode(user, market, triggerRatio, ratioState);
|
|
201
218
|
return [strategyOrBundleId, isBundle, triggerData, subData];
|
|
202
219
|
},
|
|
220
|
+
liquidationProtection(market, baseToken, triggerRepayRatio, triggerBoostRatio, targetBoostRatio, targetRepayRatio, boostEnabled, isEOA) {
|
|
221
|
+
return subDataService.compoundV3LiquidationProtectionSubData.encode(market, baseToken, triggerRepayRatio, triggerBoostRatio, targetBoostRatio, targetRepayRatio, boostEnabled, isEOA);
|
|
222
|
+
},
|
|
203
223
|
leverageManagementOnPrice(strategyOrBundleId, market, collToken, baseToken, targetRatio, price, priceState, ratioState, // REPAY for repay on price, BOOST for boost on price
|
|
204
224
|
user) {
|
|
205
225
|
const isBundle = true;
|
|
@@ -257,6 +277,12 @@ exports.sparkEncode = {
|
|
|
257
277
|
const triggerData = triggerService.sparkRatioTrigger.encode(user, market, triggerRatio, ratioState);
|
|
258
278
|
return [strategyOrBundleId, isBundle, triggerData, subData];
|
|
259
279
|
},
|
|
280
|
+
liquidationProtection(strategyOrBundleId, market, user, ratioState, targetRatio, triggerRatio) {
|
|
281
|
+
const isBundle = true;
|
|
282
|
+
const subData = subDataService.sparkLiquidationProtectionSubData.encode(targetRatio, ratioState);
|
|
283
|
+
const triggerData = triggerService.sparkRatioTrigger.encode(user, market, triggerRatio, ratioState);
|
|
284
|
+
return [strategyOrBundleId, isBundle, triggerData, subData];
|
|
285
|
+
},
|
|
260
286
|
collateralSwitch(strategyOrBundleId, fromAsset, fromAssetId, toAsset, toAssetId, marketAddr, amountToSwitch, baseTokenAddress, quoteTokenAddress, price, state) {
|
|
261
287
|
const isBundle = false;
|
|
262
288
|
const subDataEncoded = subDataService.sparkCollateralSwitchSubData.encode(fromAsset, fromAssetId, toAsset, toAssetId, marketAddr, amountToSwitch);
|
|
@@ -299,6 +325,14 @@ exports.morphoBlueEncode = {
|
|
|
299
325
|
const isBundle = true;
|
|
300
326
|
return [strategyOrBundleId, isBundle, triggerData, subData];
|
|
301
327
|
},
|
|
328
|
+
liquidationProtection(marketId, loanToken, collToken, oracle, irm, lltv, ratioState, targetRatio, triggerRatio, user, isEOA, network) {
|
|
329
|
+
const subData = subDataService.morphoBlueLiquidationProtectionSubData.encode(loanToken, collToken, oracle, irm, lltv, ratioState, targetRatio, user, isEOA);
|
|
330
|
+
const triggerData = triggerService.morphoBlueRatioTrigger.encode(marketId, user, triggerRatio, ratioState);
|
|
331
|
+
// TODO -> Check if need to deploy separate bundles for EOA, or can reuse this for EOA. Logic above is different for EOA and SW on arbi and mainnet. Base uses same for both, not sure if because of lack of EOA support or because it is using same bundle for both.
|
|
332
|
+
const bundleId = (0, utils_1.getBundleIdsByNetwork)(network).MORPHO_BLUE_LIQUIDATION_PROTECTION;
|
|
333
|
+
const isBundle = true;
|
|
334
|
+
return [bundleId, isBundle, triggerData, subData];
|
|
335
|
+
},
|
|
302
336
|
leverageManagementOnPrice(strategyOrBundleId, isBundle = true, loanToken, collToken, oracle, irm, lltv, user, targetRatio, price, priceState) {
|
|
303
337
|
const subData = subDataService.morphoBlueLeverageManagementOnPriceSubData.encode(loanToken, collToken, oracle, irm, lltv, targetRatio, user);
|
|
304
338
|
const triggerData = triggerService.morphoBluePriceTrigger.encode(oracle, collToken, loanToken, price, priceState);
|
|
@@ -347,6 +381,12 @@ exports.fluidEncode = {
|
|
|
347
381
|
const triggerData = triggerService.fluidRatioTrigger.encode(nftId, triggerRatio, ratioState);
|
|
348
382
|
return [strategyOrBundleId, isBundle, triggerData, subData];
|
|
349
383
|
},
|
|
384
|
+
liquidationProtection(nftId, vault, ratioState, targetRatio, triggerRatio, strategyOrBundleId) {
|
|
385
|
+
const isBundle = true;
|
|
386
|
+
const subData = subDataService.fluidLiquidationProtectionSubData.encode(nftId, vault, ratioState, targetRatio);
|
|
387
|
+
const triggerData = triggerService.fluidRatioTrigger.encode(nftId, triggerRatio, ratioState);
|
|
388
|
+
return [strategyOrBundleId, isBundle, triggerData, subData];
|
|
389
|
+
},
|
|
350
390
|
};
|
|
351
391
|
exports.aaveV4Encode = {
|
|
352
392
|
leverageManagement(strategyOrBundleId, owner, spoke, ratioState, targetRatio, triggerRatio) {
|
|
@@ -355,6 +395,12 @@ exports.aaveV4Encode = {
|
|
|
355
395
|
const triggerData = triggerService.aaveV4RatioTrigger.encode(owner, spoke, triggerRatio, ratioState);
|
|
356
396
|
return [strategyOrBundleId, isBundle, triggerData, subData];
|
|
357
397
|
},
|
|
398
|
+
liquidationProtection(strategyOrBundleId, owner, spoke, ratioState, targetRatio, triggerRatio) {
|
|
399
|
+
const isBundle = true;
|
|
400
|
+
const subData = subDataService.aaveV4LiquidationProtectionSubData.encode(spoke, owner, ratioState, targetRatio);
|
|
401
|
+
const triggerData = triggerService.aaveV4RatioTrigger.encode(owner, spoke, triggerRatio, ratioState);
|
|
402
|
+
return [strategyOrBundleId, isBundle, triggerData, subData];
|
|
403
|
+
},
|
|
358
404
|
leverageManagementOnPrice(strategyOrBundleId, owner, spoke, collAsset, collAssetId, debtAsset, debtAssetId, targetRatio, price, priceState, ratioState) {
|
|
359
405
|
const isBundle = true;
|
|
360
406
|
const subData = subDataService.aaveV4LeverageManagementOnPriceSubData.encode(spoke, owner, collAsset, collAssetId, debtAsset, debtAssetId, ratioState, targetRatio);
|