@defisaver/automation-sdk 3.3.0 → 3.3.2-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 +5 -0
- package/cjs/services/strategiesService.js +18 -2
- package/cjs/services/strategySubService.d.ts +1 -0
- package/cjs/services/strategySubService.js +7 -0
- package/cjs/services/subDataService.d.ts +8 -0
- package/cjs/services/subDataService.js +25 -1
- package/cjs/services/triggerService.d.ts +9 -0
- package/cjs/services/triggerService.js +17 -1
- package/cjs/types/enums.d.ts +4 -2
- package/cjs/types/enums.js +2 -0
- package/cjs/types/index.d.ts +8 -1
- package/esm/constants/index.js +5 -0
- package/esm/services/strategiesService.js +18 -2
- package/esm/services/strategySubService.d.ts +1 -0
- package/esm/services/strategySubService.js +7 -0
- package/esm/services/subDataService.d.ts +8 -0
- package/esm/services/subDataService.js +24 -0
- package/esm/services/triggerService.d.ts +9 -0
- package/esm/services/triggerService.js +16 -0
- package/esm/types/enums.d.ts +4 -2
- package/esm/types/enums.js +2 -0
- package/esm/types/index.d.ts +8 -1
- package/package.json +2 -2
- package/src/constants/index.ts +5 -0
- package/src/services/strategiesService.ts +27 -3
- package/src/services/strategySubService.ts +19 -0
- package/src/services/subDataService.ts +31 -0
- package/src/services/triggerService.ts +22 -0
- package/src/types/enums.ts +2 -0
- package/src/types/index.ts +9 -0
- package/umd/index.js +34219 -0
package/cjs/constants/index.js
CHANGED
|
@@ -101,6 +101,11 @@ exports.MAINNET_STRATEGIES_INFO = {
|
|
|
101
101
|
strategyId: enums_1.Strategies.Identifiers.Payback,
|
|
102
102
|
protocol: exports.PROTOCOLS.LiquityV2,
|
|
103
103
|
},
|
|
104
|
+
[enums_1.Strategies.MainnetIds.LIQUITY_V2_INTEREST_RATE_ADJUSTMENT]: {
|
|
105
|
+
strategyOrBundleId: enums_1.Strategies.MainnetIds.LIQUITY_V2_INTEREST_RATE_ADJUSTMENT,
|
|
106
|
+
strategyId: enums_1.Strategies.Identifiers.InterestRateAdjustment,
|
|
107
|
+
protocol: exports.PROTOCOLS.LiquityV2,
|
|
108
|
+
},
|
|
104
109
|
};
|
|
105
110
|
exports.OPTIMISM_STRATEGIES_INFO = {
|
|
106
111
|
[enums_1.Strategies.OptimismIds.EXCHANGE_DCA]: {
|
|
@@ -380,8 +380,6 @@ function parseCompoundV3LeverageManagementOnPrice(position, parseData) {
|
|
|
380
380
|
price: triggerData.price,
|
|
381
381
|
priceState: triggerData.priceState,
|
|
382
382
|
};
|
|
383
|
-
const isEOA = _position.strategy.strategyId.includes('eoa');
|
|
384
|
-
_position.strategy.strategyId = isEOA ? enums_1.Strategies.IdOverrides.EoaLeverageManagementOnPrice : enums_1.Strategies.IdOverrides.LeverageManagementOnPrice;
|
|
385
383
|
return _position;
|
|
386
384
|
}
|
|
387
385
|
function parseCompoundV3CloseOnPrice(position, parseData) {
|
|
@@ -814,6 +812,23 @@ function parseFluidT1LeverageManagement(position, parseData) {
|
|
|
814
812
|
_position.strategy.strategyId = enums_1.Strategies.IdOverrides.LeverageManagement;
|
|
815
813
|
return _position;
|
|
816
814
|
}
|
|
815
|
+
function parseLiquityV2InterestRateAdjustment(position, parseData) {
|
|
816
|
+
const _position = (0, lodash_1.cloneDeep)(position);
|
|
817
|
+
const { subStruct } = parseData.subscriptionEventData;
|
|
818
|
+
const triggerData = triggerService.liquityV2InterestRateAdjustmentTrigger.decode(subStruct.triggerData);
|
|
819
|
+
const subData = subDataService.liquityV2InterestRateAdjustmentSubData.decode(subStruct.subData);
|
|
820
|
+
_position.strategyData.decoded.triggerData = triggerData;
|
|
821
|
+
_position.strategyData.decoded.subData = subData;
|
|
822
|
+
_position.positionId = (0, utils_1.getPositionId)(_position.chainId, _position.protocol.id, _position.owner, triggerData.troveId, triggerData.market);
|
|
823
|
+
_position.specific = {
|
|
824
|
+
market: subData.market,
|
|
825
|
+
troveId: subData.troveId,
|
|
826
|
+
criticalDebtInFrontLimit: triggerData.criticalDebtInFrontLimit,
|
|
827
|
+
nonCriticalDebtInFrontLimit: triggerData.nonCriticalDebtInFrontLimit,
|
|
828
|
+
interestRateChange: subData.interestRateChange,
|
|
829
|
+
};
|
|
830
|
+
return _position;
|
|
831
|
+
}
|
|
817
832
|
const parsingMethodsMapping = {
|
|
818
833
|
[enums_1.ProtocolIdentifiers.StrategiesAutomation.MakerDAO]: {
|
|
819
834
|
[enums_1.Strategies.Identifiers.SavingsLiqProtection]: parseMakerSavingsLiqProtection,
|
|
@@ -841,6 +856,7 @@ const parsingMethodsMapping = {
|
|
|
841
856
|
[enums_1.Strategies.Identifiers.BoostOnPrice]: parseLiquityV2LeverageManagementOnPrice,
|
|
842
857
|
[enums_1.Strategies.Identifiers.RepayOnPrice]: parseLiquityV2LeverageManagementOnPrice,
|
|
843
858
|
[enums_1.Strategies.Identifiers.Payback]: parseLiquityV2Payback,
|
|
859
|
+
[enums_1.Strategies.Identifiers.InterestRateAdjustment]: parseLiquityV2InterestRateAdjustment,
|
|
844
860
|
},
|
|
845
861
|
[enums_1.ProtocolIdentifiers.StrategiesAutomation.AaveV2]: {
|
|
846
862
|
[enums_1.Strategies.Identifiers.Repay]: parseAaveV2LeverageManagement,
|
|
@@ -107,6 +107,7 @@ export declare const liquityV2Encode: {
|
|
|
107
107
|
closeOnPrice(strategyOrBundleId: number, market: EthereumAddress, troveId: string, collToken: EthereumAddress, boldToken: EthereumAddress, stopLossPrice?: number, stopLossType?: CloseToAssetType, takeProfitPrice?: number, takeProfitType?: CloseToAssetType): (number | boolean | string[])[];
|
|
108
108
|
leverageManagementOnPrice(strategyOrBundleId: number, market: EthereumAddress, price: number, state: RatioState, troveId: string, collToken: EthereumAddress, boldToken: EthereumAddress, targetRatio: number, isRepayOnPrice: boolean): (number | boolean | string[])[];
|
|
109
109
|
payback(market: EthereumAddress, troveId: string, boldToken: EthereumAddress, targetRatio: number, ratioState: RatioState, triggerRatio: number): (boolean | string[] | Strategies.MainnetIds)[];
|
|
110
|
+
interestRateAdjustment(market: EthereumAddress, troveId: string, criticalDebtInFrontLimit: string, nonCriticalDebtInFrontLimit: string, interestRateChange: string): (boolean | string[] | Strategies.MainnetIds)[];
|
|
110
111
|
};
|
|
111
112
|
export declare const fluidEncode: {
|
|
112
113
|
leverageManagement(nftId: string, vault: EthereumAddress, ratioState: RatioState, targetRatio: number, triggerRatio: number, strategyOrBundleId: number): (number | boolean | string[])[];
|
|
@@ -317,6 +317,13 @@ exports.liquityV2Encode = {
|
|
|
317
317
|
const triggerData = triggerService.liquityV2RatioTrigger.encode(market, troveId, triggerRatio, ratioState);
|
|
318
318
|
return [strategyId, isBundle, triggerData, subData];
|
|
319
319
|
},
|
|
320
|
+
interestRateAdjustment(market, troveId, criticalDebtInFrontLimit, nonCriticalDebtInFrontLimit, interestRateChange) {
|
|
321
|
+
const strategyId = enums_1.Strategies.MainnetIds.LIQUITY_V2_INTEREST_RATE_ADJUSTMENT;
|
|
322
|
+
const isBundle = false;
|
|
323
|
+
const subData = subDataService.liquityV2InterestRateAdjustmentSubData.encode(market, troveId, interestRateChange);
|
|
324
|
+
const triggerData = triggerService.liquityV2InterestRateAdjustmentTrigger.encode(market, troveId, criticalDebtInFrontLimit, nonCriticalDebtInFrontLimit);
|
|
325
|
+
return [strategyId, isBundle, triggerData, subData];
|
|
326
|
+
},
|
|
320
327
|
};
|
|
321
328
|
exports.fluidEncode = {
|
|
322
329
|
leverageManagement(nftId, vault, ratioState, targetRatio, triggerRatio, strategyOrBundleId) {
|
|
@@ -280,3 +280,11 @@ export declare const compoundV3CloseSubData: {
|
|
|
280
280
|
owner: EthereumAddress;
|
|
281
281
|
};
|
|
282
282
|
};
|
|
283
|
+
export declare const liquityV2InterestRateAdjustmentSubData: {
|
|
284
|
+
encode: (market: EthereumAddress, troveId: string, interestRateChange: string) => string[];
|
|
285
|
+
decode: (subData: string[]) => {
|
|
286
|
+
market: string;
|
|
287
|
+
troveId: string;
|
|
288
|
+
interestRateChange: string;
|
|
289
|
+
};
|
|
290
|
+
};
|
|
@@ -3,7 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.compoundV3CloseSubData = exports.compoundV3LeverageManagementOnPriceSubData = exports.fluidLeverageManagementSubData = exports.liquityV2PaybackSubData = exports.morphoBlueLeverageManagementOnPriceSubData = exports.liquityV2LeverageManagementOnPriceSubData = exports.liquityV2CloseSubData = exports.liquityV2LeverageManagementSubData = exports.aaveV3LeverageManagementOnPriceSubData = exports.morphoBlueLeverageManagementSubData = exports.crvUSDPaybackSubData = exports.crvUSDLeverageManagementSubData = exports.liquityDebtInFrontRepaySubData = exports.liquityDsrSupplySubData = exports.liquityDsrPaybackSubData = exports.sparkQuotePriceSubData = exports.sparkLeverageManagementSubData = exports.exchangeLimitOrderSubData = exports.exchangeDcaSubData = exports.liquityPaybackUsingChickenBondSubData = exports.cBondsRebondSubData = exports.morphoAaveV2LeverageManagementSubData = exports.compoundV3L2LeverageManagementSubData = exports.compoundV3LeverageManagementSubData = exports.compoundV2LeverageManagementSubData = exports.aaveV3QuotePriceSubData = exports.aaveV3LeverageManagementSubDataWithoutSubProxy = exports.aaveV3LeverageManagementSubData = exports.aaveV2LeverageManagementSubData = exports.liquityCloseSubData = exports.liquityLeverageManagementSubData = exports.makerLeverageManagementSubData = exports.makerCloseSubData = exports.liquityRepayFromSavingsSubData = exports.makerRepayFromSavingsSubData = void 0;
|
|
6
|
+
exports.liquityV2InterestRateAdjustmentSubData = exports.compoundV3CloseSubData = exports.compoundV3LeverageManagementOnPriceSubData = exports.fluidLeverageManagementSubData = exports.liquityV2PaybackSubData = exports.morphoBlueLeverageManagementOnPriceSubData = exports.liquityV2LeverageManagementOnPriceSubData = exports.liquityV2CloseSubData = exports.liquityV2LeverageManagementSubData = exports.aaveV3LeverageManagementOnPriceSubData = exports.morphoBlueLeverageManagementSubData = exports.crvUSDPaybackSubData = exports.crvUSDLeverageManagementSubData = exports.liquityDebtInFrontRepaySubData = exports.liquityDsrSupplySubData = exports.liquityDsrPaybackSubData = exports.sparkQuotePriceSubData = exports.sparkLeverageManagementSubData = exports.exchangeLimitOrderSubData = exports.exchangeDcaSubData = exports.liquityPaybackUsingChickenBondSubData = exports.cBondsRebondSubData = exports.morphoAaveV2LeverageManagementSubData = exports.compoundV3L2LeverageManagementSubData = exports.compoundV3LeverageManagementSubData = exports.compoundV2LeverageManagementSubData = exports.aaveV3QuotePriceSubData = exports.aaveV3LeverageManagementSubDataWithoutSubProxy = exports.aaveV3LeverageManagementSubData = exports.aaveV2LeverageManagementSubData = exports.liquityCloseSubData = exports.liquityLeverageManagementSubData = exports.makerLeverageManagementSubData = exports.makerCloseSubData = exports.liquityRepayFromSavingsSubData = exports.makerRepayFromSavingsSubData = void 0;
|
|
7
7
|
const decimal_js_1 = __importDefault(require("decimal.js"));
|
|
8
8
|
const web3_eth_abi_1 = __importDefault(require("web3-eth-abi"));
|
|
9
9
|
const web3_utils_1 = require("web3-utils");
|
|
@@ -738,3 +738,27 @@ exports.compoundV3CloseSubData = {
|
|
|
738
738
|
};
|
|
739
739
|
},
|
|
740
740
|
};
|
|
741
|
+
exports.liquityV2InterestRateAdjustmentSubData = {
|
|
742
|
+
encode: (market, troveId, interestRateChange) => {
|
|
743
|
+
const marketEncoded = web3_eth_abi_1.default.encodeParameter('address', market);
|
|
744
|
+
const troveIdEncoded = web3_eth_abi_1.default.encodeParameter('uint256', troveId);
|
|
745
|
+
const interestRateChangeWei = new decimal_js_1.default(interestRateChange).mul(1e16).toString();
|
|
746
|
+
const interestRateChangeEncoded = web3_eth_abi_1.default.encodeParameter('uint256', interestRateChangeWei.toString());
|
|
747
|
+
return [
|
|
748
|
+
marketEncoded,
|
|
749
|
+
troveIdEncoded,
|
|
750
|
+
interestRateChangeEncoded,
|
|
751
|
+
];
|
|
752
|
+
},
|
|
753
|
+
decode: (subData) => {
|
|
754
|
+
const market = web3_eth_abi_1.default.decodeParameter('address', subData[0]);
|
|
755
|
+
const troveId = web3_eth_abi_1.default.decodeParameter('uint256', subData[1]);
|
|
756
|
+
const interestRateChangeWei = web3_eth_abi_1.default.decodeParameter('uint256', subData[2]);
|
|
757
|
+
const interestRateChange = new decimal_js_1.default(interestRateChangeWei).div(Math.pow(10, 16)).toString();
|
|
758
|
+
return {
|
|
759
|
+
market,
|
|
760
|
+
troveId,
|
|
761
|
+
interestRateChange,
|
|
762
|
+
};
|
|
763
|
+
},
|
|
764
|
+
};
|
|
@@ -266,3 +266,12 @@ export declare const compoundV3PriceRangeTrigger: {
|
|
|
266
266
|
upperPrice: string;
|
|
267
267
|
};
|
|
268
268
|
};
|
|
269
|
+
export declare const liquityV2InterestRateAdjustmentTrigger: {
|
|
270
|
+
encode(market: EthereumAddress, troveId: string, criticalDebtInFrontLimit: string, nonCriticalDebtInFrontLimit: string): string[];
|
|
271
|
+
decode(triggerData: string[]): {
|
|
272
|
+
market: EthereumAddress;
|
|
273
|
+
troveId: string;
|
|
274
|
+
criticalDebtInFrontLimit: string;
|
|
275
|
+
nonCriticalDebtInFrontLimit: string;
|
|
276
|
+
};
|
|
277
|
+
};
|
|
@@ -26,7 +26,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
26
26
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
27
27
|
};
|
|
28
28
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
29
|
-
exports.compoundV3PriceRangeTrigger = exports.compoundV3PriceTrigger = exports.fluidRatioTrigger = exports.morphoBluePriceTrigger = exports.closePriceTrigger = exports.liquityV2QuotePriceTrigger = exports.liquityV2RatioTrigger = exports.morphoBlueRatioTrigger = exports.crvUsdHealthRatioTrigger = exports.crvUSDRatioTrigger = exports.curveUsdSoftLiquidationTrigger = exports.curveUsdBorrowRateTrigger = exports.sparkQuotePriceTrigger = exports.sparkRatioTrigger = exports.exchangeOffchainPriceTrigger = exports.exchangeTimestampTrigger = exports.compoundV3RatioTrigger = exports.cBondsRebondTrigger = exports.aaveV2RatioTrigger = exports.liquityV2AdjustTimeTrigger = exports.liquityV2DebtInFrontTrigger = exports.liquityDebtInFrontWithLimitTrigger = exports.liquityDebtInFrontTrigger = exports.liquityRatioTrigger = exports.compoundV2RatioTrigger = exports.aaveV3QuotePriceWithMaximumGasPriceTrigger = exports.aaveV3QuotePriceTrigger = exports.morphoAaveV2RatioTrigger = exports.aaveV3RatioTrigger = exports.makerRatioTrigger = exports.trailingStopTrigger = exports.chainlinkPriceTrigger = void 0;
|
|
29
|
+
exports.liquityV2InterestRateAdjustmentTrigger = exports.compoundV3PriceRangeTrigger = exports.compoundV3PriceTrigger = exports.fluidRatioTrigger = exports.morphoBluePriceTrigger = exports.closePriceTrigger = exports.liquityV2QuotePriceTrigger = exports.liquityV2RatioTrigger = exports.morphoBlueRatioTrigger = exports.crvUsdHealthRatioTrigger = exports.crvUSDRatioTrigger = exports.curveUsdSoftLiquidationTrigger = exports.curveUsdBorrowRateTrigger = exports.sparkQuotePriceTrigger = exports.sparkRatioTrigger = exports.exchangeOffchainPriceTrigger = exports.exchangeTimestampTrigger = exports.compoundV3RatioTrigger = exports.cBondsRebondTrigger = exports.aaveV2RatioTrigger = exports.liquityV2AdjustTimeTrigger = exports.liquityV2DebtInFrontTrigger = exports.liquityDebtInFrontWithLimitTrigger = exports.liquityDebtInFrontTrigger = exports.liquityRatioTrigger = exports.compoundV2RatioTrigger = exports.aaveV3QuotePriceWithMaximumGasPriceTrigger = exports.aaveV3QuotePriceTrigger = exports.morphoAaveV2RatioTrigger = exports.aaveV3RatioTrigger = exports.makerRatioTrigger = exports.trailingStopTrigger = exports.chainlinkPriceTrigger = void 0;
|
|
30
30
|
const decimal_js_1 = __importDefault(require("decimal.js"));
|
|
31
31
|
const tokens_1 = require("@defisaver/tokens");
|
|
32
32
|
const web3_eth_abi_1 = __importDefault(require("web3-eth-abi"));
|
|
@@ -507,3 +507,19 @@ exports.compoundV3PriceRangeTrigger = {
|
|
|
507
507
|
};
|
|
508
508
|
},
|
|
509
509
|
};
|
|
510
|
+
exports.liquityV2InterestRateAdjustmentTrigger = {
|
|
511
|
+
encode(market, troveId, criticalDebtInFrontLimit, nonCriticalDebtInFrontLimit) {
|
|
512
|
+
const criticalDebtInFrontLimitWei = web3Utils.toWei(new decimal_js_1.default(criticalDebtInFrontLimit).toString(), 'ether');
|
|
513
|
+
const nonCriticalDebtInFrontLimitWei = web3Utils.toWei(new decimal_js_1.default(nonCriticalDebtInFrontLimit).toString(), 'ether');
|
|
514
|
+
return [web3_eth_abi_1.default.encodeParameters(['address', 'uint256', 'uint256', 'uint256'], [market, troveId, criticalDebtInFrontLimitWei, nonCriticalDebtInFrontLimitWei])];
|
|
515
|
+
},
|
|
516
|
+
decode(triggerData) {
|
|
517
|
+
const decodedData = web3_eth_abi_1.default.decodeParameters(['address', 'uint256', 'uint256', 'uint256'], triggerData[0]);
|
|
518
|
+
return {
|
|
519
|
+
market: decodedData[0],
|
|
520
|
+
troveId: decodedData[1],
|
|
521
|
+
criticalDebtInFrontLimit: new decimal_js_1.default(decodedData[2]).div(Math.pow(10, 18)).toString(),
|
|
522
|
+
nonCriticalDebtInFrontLimit: new decimal_js_1.default(decodedData[3]).div(Math.pow(10, 18)).toString(),
|
|
523
|
+
};
|
|
524
|
+
},
|
|
525
|
+
};
|
package/cjs/types/enums.d.ts
CHANGED
|
@@ -85,7 +85,8 @@ export declare namespace Strategies {
|
|
|
85
85
|
LIQUITY_DSR_SUPPLY = 70,
|
|
86
86
|
LIQUITY_DEBT_IN_FRONT_REPAY = 75,
|
|
87
87
|
CURVEUSD_PAYBACK = 92,
|
|
88
|
-
LIQUITY_V2_PAYBACK = 113
|
|
88
|
+
LIQUITY_V2_PAYBACK = 113,
|
|
89
|
+
LIQUITY_V2_INTEREST_RATE_ADJUSTMENT = 124
|
|
89
90
|
}
|
|
90
91
|
enum OptimismIds {
|
|
91
92
|
EXCHANGE_DCA = 8,
|
|
@@ -128,7 +129,8 @@ export declare namespace Strategies {
|
|
|
128
129
|
BoostOnPrice = "boost-on-price",
|
|
129
130
|
RepayOnPrice = "repay-on-price",
|
|
130
131
|
EoaBoostOnPrice = "eoa-boost-on-price",
|
|
131
|
-
EoaRepayOnPrice = "eoa-repay-on-price"
|
|
132
|
+
EoaRepayOnPrice = "eoa-repay-on-price",
|
|
133
|
+
InterestRateAdjustment = "interest-rate-adjustment"
|
|
132
134
|
}
|
|
133
135
|
enum IdOverrides {
|
|
134
136
|
TakeProfit = "take-profit",
|
package/cjs/types/enums.js
CHANGED
|
@@ -102,6 +102,7 @@ var Strategies;
|
|
|
102
102
|
MainnetIds[MainnetIds["LIQUITY_DEBT_IN_FRONT_REPAY"] = 75] = "LIQUITY_DEBT_IN_FRONT_REPAY";
|
|
103
103
|
MainnetIds[MainnetIds["CURVEUSD_PAYBACK"] = 92] = "CURVEUSD_PAYBACK";
|
|
104
104
|
MainnetIds[MainnetIds["LIQUITY_V2_PAYBACK"] = 113] = "LIQUITY_V2_PAYBACK";
|
|
105
|
+
MainnetIds[MainnetIds["LIQUITY_V2_INTEREST_RATE_ADJUSTMENT"] = 124] = "LIQUITY_V2_INTEREST_RATE_ADJUSTMENT";
|
|
105
106
|
})(MainnetIds = Strategies.MainnetIds || (Strategies.MainnetIds = {}));
|
|
106
107
|
let OptimismIds;
|
|
107
108
|
(function (OptimismIds) {
|
|
@@ -149,6 +150,7 @@ var Strategies;
|
|
|
149
150
|
Identifiers["RepayOnPrice"] = "repay-on-price";
|
|
150
151
|
Identifiers["EoaBoostOnPrice"] = "eoa-boost-on-price";
|
|
151
152
|
Identifiers["EoaRepayOnPrice"] = "eoa-repay-on-price";
|
|
153
|
+
Identifiers["InterestRateAdjustment"] = "interest-rate-adjustment";
|
|
152
154
|
})(Identifiers = Strategies.Identifiers || (Strategies.Identifiers = {}));
|
|
153
155
|
let IdOverrides;
|
|
154
156
|
(function (IdOverrides) {
|
package/cjs/types/index.d.ts
CHANGED
|
@@ -158,6 +158,13 @@ export declare namespace Position {
|
|
|
158
158
|
targetRatio: number;
|
|
159
159
|
triggerRatio: number;
|
|
160
160
|
}
|
|
161
|
+
interface InterestRateAdjustmentLiquityV2 extends Base {
|
|
162
|
+
market: EthereumAddress;
|
|
163
|
+
troveId: string;
|
|
164
|
+
criticalDebtInFrontLimit: string;
|
|
165
|
+
nonCriticalDebtInFrontLimit: string;
|
|
166
|
+
interestRateChange: string;
|
|
167
|
+
}
|
|
161
168
|
interface TrailingStop extends Base {
|
|
162
169
|
roundId: number;
|
|
163
170
|
triggerPercentage: number;
|
|
@@ -188,7 +195,7 @@ export declare namespace Position {
|
|
|
188
195
|
takeProfitType: CloseToAssetType | undefined;
|
|
189
196
|
}
|
|
190
197
|
}
|
|
191
|
-
type SpecificAny = Specific.CloseOnPrice | Specific.TrailingStop | Specific.RatioProtection | Specific.CloseOnPriceAave | Specific.BoostOnPriceAave | Specific.CloseOnPriceWithMaximumGasPriceAave | Specific.DebtInFrontRepay | Specific.LeverageManagementCrvUSD | Specific.CloseOnPriceLiquityV2 | Specific.BoostOnPriceMorpho | Specific.BoostOnPriceLiquityV2 | Specific.PaybackLiquityV2 | Specific.CompoundV3LeverageManagementOnPrice | Specific.CompoundV3CloseOnPrice;
|
|
198
|
+
type SpecificAny = Specific.CloseOnPrice | Specific.TrailingStop | Specific.RatioProtection | Specific.CloseOnPriceAave | Specific.BoostOnPriceAave | Specific.CloseOnPriceWithMaximumGasPriceAave | Specific.DebtInFrontRepay | Specific.LeverageManagementCrvUSD | Specific.CloseOnPriceLiquityV2 | Specific.BoostOnPriceMorpho | Specific.BoostOnPriceLiquityV2 | Specific.PaybackLiquityV2 | Specific.InterestRateAdjustmentLiquityV2 | Specific.CompoundV3LeverageManagementOnPrice | Specific.CompoundV3CloseOnPrice;
|
|
192
199
|
interface Automated {
|
|
193
200
|
chainId: ChainId;
|
|
194
201
|
positionId: string;
|
package/esm/constants/index.js
CHANGED
|
@@ -95,6 +95,11 @@ export const MAINNET_STRATEGIES_INFO = {
|
|
|
95
95
|
strategyId: Strategies.Identifiers.Payback,
|
|
96
96
|
protocol: PROTOCOLS.LiquityV2,
|
|
97
97
|
},
|
|
98
|
+
[Strategies.MainnetIds.LIQUITY_V2_INTEREST_RATE_ADJUSTMENT]: {
|
|
99
|
+
strategyOrBundleId: Strategies.MainnetIds.LIQUITY_V2_INTEREST_RATE_ADJUSTMENT,
|
|
100
|
+
strategyId: Strategies.Identifiers.InterestRateAdjustment,
|
|
101
|
+
protocol: PROTOCOLS.LiquityV2,
|
|
102
|
+
},
|
|
98
103
|
};
|
|
99
104
|
export const OPTIMISM_STRATEGIES_INFO = {
|
|
100
105
|
[Strategies.OptimismIds.EXCHANGE_DCA]: {
|
|
@@ -351,8 +351,6 @@ function parseCompoundV3LeverageManagementOnPrice(position, parseData) {
|
|
|
351
351
|
price: triggerData.price,
|
|
352
352
|
priceState: triggerData.priceState,
|
|
353
353
|
};
|
|
354
|
-
const isEOA = _position.strategy.strategyId.includes('eoa');
|
|
355
|
-
_position.strategy.strategyId = isEOA ? Strategies.IdOverrides.EoaLeverageManagementOnPrice : Strategies.IdOverrides.LeverageManagementOnPrice;
|
|
356
354
|
return _position;
|
|
357
355
|
}
|
|
358
356
|
function parseCompoundV3CloseOnPrice(position, parseData) {
|
|
@@ -785,6 +783,23 @@ function parseFluidT1LeverageManagement(position, parseData) {
|
|
|
785
783
|
_position.strategy.strategyId = Strategies.IdOverrides.LeverageManagement;
|
|
786
784
|
return _position;
|
|
787
785
|
}
|
|
786
|
+
function parseLiquityV2InterestRateAdjustment(position, parseData) {
|
|
787
|
+
const _position = cloneDeep(position);
|
|
788
|
+
const { subStruct } = parseData.subscriptionEventData;
|
|
789
|
+
const triggerData = triggerService.liquityV2InterestRateAdjustmentTrigger.decode(subStruct.triggerData);
|
|
790
|
+
const subData = subDataService.liquityV2InterestRateAdjustmentSubData.decode(subStruct.subData);
|
|
791
|
+
_position.strategyData.decoded.triggerData = triggerData;
|
|
792
|
+
_position.strategyData.decoded.subData = subData;
|
|
793
|
+
_position.positionId = getPositionId(_position.chainId, _position.protocol.id, _position.owner, triggerData.troveId, triggerData.market);
|
|
794
|
+
_position.specific = {
|
|
795
|
+
market: subData.market,
|
|
796
|
+
troveId: subData.troveId,
|
|
797
|
+
criticalDebtInFrontLimit: triggerData.criticalDebtInFrontLimit,
|
|
798
|
+
nonCriticalDebtInFrontLimit: triggerData.nonCriticalDebtInFrontLimit,
|
|
799
|
+
interestRateChange: subData.interestRateChange,
|
|
800
|
+
};
|
|
801
|
+
return _position;
|
|
802
|
+
}
|
|
788
803
|
const parsingMethodsMapping = {
|
|
789
804
|
[ProtocolIdentifiers.StrategiesAutomation.MakerDAO]: {
|
|
790
805
|
[Strategies.Identifiers.SavingsLiqProtection]: parseMakerSavingsLiqProtection,
|
|
@@ -812,6 +827,7 @@ const parsingMethodsMapping = {
|
|
|
812
827
|
[Strategies.Identifiers.BoostOnPrice]: parseLiquityV2LeverageManagementOnPrice,
|
|
813
828
|
[Strategies.Identifiers.RepayOnPrice]: parseLiquityV2LeverageManagementOnPrice,
|
|
814
829
|
[Strategies.Identifiers.Payback]: parseLiquityV2Payback,
|
|
830
|
+
[Strategies.Identifiers.InterestRateAdjustment]: parseLiquityV2InterestRateAdjustment,
|
|
815
831
|
},
|
|
816
832
|
[ProtocolIdentifiers.StrategiesAutomation.AaveV2]: {
|
|
817
833
|
[Strategies.Identifiers.Repay]: parseAaveV2LeverageManagement,
|
|
@@ -107,6 +107,7 @@ export declare const liquityV2Encode: {
|
|
|
107
107
|
closeOnPrice(strategyOrBundleId: number, market: EthereumAddress, troveId: string, collToken: EthereumAddress, boldToken: EthereumAddress, stopLossPrice?: number, stopLossType?: CloseToAssetType, takeProfitPrice?: number, takeProfitType?: CloseToAssetType): (number | boolean | string[])[];
|
|
108
108
|
leverageManagementOnPrice(strategyOrBundleId: number, market: EthereumAddress, price: number, state: RatioState, troveId: string, collToken: EthereumAddress, boldToken: EthereumAddress, targetRatio: number, isRepayOnPrice: boolean): (number | boolean | string[])[];
|
|
109
109
|
payback(market: EthereumAddress, troveId: string, boldToken: EthereumAddress, targetRatio: number, ratioState: RatioState, triggerRatio: number): (boolean | string[] | Strategies.MainnetIds)[];
|
|
110
|
+
interestRateAdjustment(market: EthereumAddress, troveId: string, criticalDebtInFrontLimit: string, nonCriticalDebtInFrontLimit: string, interestRateChange: string): (boolean | string[] | Strategies.MainnetIds)[];
|
|
110
111
|
};
|
|
111
112
|
export declare const fluidEncode: {
|
|
112
113
|
leverageManagement(nftId: string, vault: EthereumAddress, ratioState: RatioState, targetRatio: number, triggerRatio: number, strategyOrBundleId: number): (number | boolean | string[])[];
|
|
@@ -288,6 +288,13 @@ export const liquityV2Encode = {
|
|
|
288
288
|
const triggerData = triggerService.liquityV2RatioTrigger.encode(market, troveId, triggerRatio, ratioState);
|
|
289
289
|
return [strategyId, isBundle, triggerData, subData];
|
|
290
290
|
},
|
|
291
|
+
interestRateAdjustment(market, troveId, criticalDebtInFrontLimit, nonCriticalDebtInFrontLimit, interestRateChange) {
|
|
292
|
+
const strategyId = Strategies.MainnetIds.LIQUITY_V2_INTEREST_RATE_ADJUSTMENT;
|
|
293
|
+
const isBundle = false;
|
|
294
|
+
const subData = subDataService.liquityV2InterestRateAdjustmentSubData.encode(market, troveId, interestRateChange);
|
|
295
|
+
const triggerData = triggerService.liquityV2InterestRateAdjustmentTrigger.encode(market, troveId, criticalDebtInFrontLimit, nonCriticalDebtInFrontLimit);
|
|
296
|
+
return [strategyId, isBundle, triggerData, subData];
|
|
297
|
+
},
|
|
291
298
|
};
|
|
292
299
|
export const fluidEncode = {
|
|
293
300
|
leverageManagement(nftId, vault, ratioState, targetRatio, triggerRatio, strategyOrBundleId) {
|
|
@@ -280,3 +280,11 @@ export declare const compoundV3CloseSubData: {
|
|
|
280
280
|
owner: EthereumAddress;
|
|
281
281
|
};
|
|
282
282
|
};
|
|
283
|
+
export declare const liquityV2InterestRateAdjustmentSubData: {
|
|
284
|
+
encode: (market: EthereumAddress, troveId: string, interestRateChange: string) => string[];
|
|
285
|
+
decode: (subData: string[]) => {
|
|
286
|
+
market: string;
|
|
287
|
+
troveId: string;
|
|
288
|
+
interestRateChange: string;
|
|
289
|
+
};
|
|
290
|
+
};
|
|
@@ -732,3 +732,27 @@ export const compoundV3CloseSubData = {
|
|
|
732
732
|
};
|
|
733
733
|
},
|
|
734
734
|
};
|
|
735
|
+
export const liquityV2InterestRateAdjustmentSubData = {
|
|
736
|
+
encode: (market, troveId, interestRateChange) => {
|
|
737
|
+
const marketEncoded = AbiCoder.encodeParameter('address', market);
|
|
738
|
+
const troveIdEncoded = AbiCoder.encodeParameter('uint256', troveId);
|
|
739
|
+
const interestRateChangeWei = new Dec(interestRateChange).mul(1e16).toString();
|
|
740
|
+
const interestRateChangeEncoded = AbiCoder.encodeParameter('uint256', interestRateChangeWei.toString());
|
|
741
|
+
return [
|
|
742
|
+
marketEncoded,
|
|
743
|
+
troveIdEncoded,
|
|
744
|
+
interestRateChangeEncoded,
|
|
745
|
+
];
|
|
746
|
+
},
|
|
747
|
+
decode: (subData) => {
|
|
748
|
+
const market = AbiCoder.decodeParameter('address', subData[0]);
|
|
749
|
+
const troveId = AbiCoder.decodeParameter('uint256', subData[1]);
|
|
750
|
+
const interestRateChangeWei = AbiCoder.decodeParameter('uint256', subData[2]);
|
|
751
|
+
const interestRateChange = new Dec(interestRateChangeWei).div(Math.pow(10, 16)).toString();
|
|
752
|
+
return {
|
|
753
|
+
market,
|
|
754
|
+
troveId,
|
|
755
|
+
interestRateChange,
|
|
756
|
+
};
|
|
757
|
+
},
|
|
758
|
+
};
|
|
@@ -266,3 +266,12 @@ export declare const compoundV3PriceRangeTrigger: {
|
|
|
266
266
|
upperPrice: string;
|
|
267
267
|
};
|
|
268
268
|
};
|
|
269
|
+
export declare const liquityV2InterestRateAdjustmentTrigger: {
|
|
270
|
+
encode(market: EthereumAddress, troveId: string, criticalDebtInFrontLimit: string, nonCriticalDebtInFrontLimit: string): string[];
|
|
271
|
+
decode(triggerData: string[]): {
|
|
272
|
+
market: EthereumAddress;
|
|
273
|
+
troveId: string;
|
|
274
|
+
criticalDebtInFrontLimit: string;
|
|
275
|
+
nonCriticalDebtInFrontLimit: string;
|
|
276
|
+
};
|
|
277
|
+
};
|
|
@@ -478,3 +478,19 @@ export const compoundV3PriceRangeTrigger = {
|
|
|
478
478
|
};
|
|
479
479
|
},
|
|
480
480
|
};
|
|
481
|
+
export const liquityV2InterestRateAdjustmentTrigger = {
|
|
482
|
+
encode(market, troveId, criticalDebtInFrontLimit, nonCriticalDebtInFrontLimit) {
|
|
483
|
+
const criticalDebtInFrontLimitWei = web3Utils.toWei(new Dec(criticalDebtInFrontLimit).toString(), 'ether');
|
|
484
|
+
const nonCriticalDebtInFrontLimitWei = web3Utils.toWei(new Dec(nonCriticalDebtInFrontLimit).toString(), 'ether');
|
|
485
|
+
return [AbiCoder.encodeParameters(['address', 'uint256', 'uint256', 'uint256'], [market, troveId, criticalDebtInFrontLimitWei, nonCriticalDebtInFrontLimitWei])];
|
|
486
|
+
},
|
|
487
|
+
decode(triggerData) {
|
|
488
|
+
const decodedData = AbiCoder.decodeParameters(['address', 'uint256', 'uint256', 'uint256'], triggerData[0]);
|
|
489
|
+
return {
|
|
490
|
+
market: decodedData[0],
|
|
491
|
+
troveId: decodedData[1],
|
|
492
|
+
criticalDebtInFrontLimit: new Dec(decodedData[2]).div(Math.pow(10, 18)).toString(),
|
|
493
|
+
nonCriticalDebtInFrontLimit: new Dec(decodedData[3]).div(Math.pow(10, 18)).toString(),
|
|
494
|
+
};
|
|
495
|
+
},
|
|
496
|
+
};
|
package/esm/types/enums.d.ts
CHANGED
|
@@ -85,7 +85,8 @@ export declare namespace Strategies {
|
|
|
85
85
|
LIQUITY_DSR_SUPPLY = 70,
|
|
86
86
|
LIQUITY_DEBT_IN_FRONT_REPAY = 75,
|
|
87
87
|
CURVEUSD_PAYBACK = 92,
|
|
88
|
-
LIQUITY_V2_PAYBACK = 113
|
|
88
|
+
LIQUITY_V2_PAYBACK = 113,
|
|
89
|
+
LIQUITY_V2_INTEREST_RATE_ADJUSTMENT = 124
|
|
89
90
|
}
|
|
90
91
|
enum OptimismIds {
|
|
91
92
|
EXCHANGE_DCA = 8,
|
|
@@ -128,7 +129,8 @@ export declare namespace Strategies {
|
|
|
128
129
|
BoostOnPrice = "boost-on-price",
|
|
129
130
|
RepayOnPrice = "repay-on-price",
|
|
130
131
|
EoaBoostOnPrice = "eoa-boost-on-price",
|
|
131
|
-
EoaRepayOnPrice = "eoa-repay-on-price"
|
|
132
|
+
EoaRepayOnPrice = "eoa-repay-on-price",
|
|
133
|
+
InterestRateAdjustment = "interest-rate-adjustment"
|
|
132
134
|
}
|
|
133
135
|
enum IdOverrides {
|
|
134
136
|
TakeProfit = "take-profit",
|
package/esm/types/enums.js
CHANGED
|
@@ -99,6 +99,7 @@ export var Strategies;
|
|
|
99
99
|
MainnetIds[MainnetIds["LIQUITY_DEBT_IN_FRONT_REPAY"] = 75] = "LIQUITY_DEBT_IN_FRONT_REPAY";
|
|
100
100
|
MainnetIds[MainnetIds["CURVEUSD_PAYBACK"] = 92] = "CURVEUSD_PAYBACK";
|
|
101
101
|
MainnetIds[MainnetIds["LIQUITY_V2_PAYBACK"] = 113] = "LIQUITY_V2_PAYBACK";
|
|
102
|
+
MainnetIds[MainnetIds["LIQUITY_V2_INTEREST_RATE_ADJUSTMENT"] = 124] = "LIQUITY_V2_INTEREST_RATE_ADJUSTMENT";
|
|
102
103
|
})(MainnetIds = Strategies.MainnetIds || (Strategies.MainnetIds = {}));
|
|
103
104
|
let OptimismIds;
|
|
104
105
|
(function (OptimismIds) {
|
|
@@ -146,6 +147,7 @@ export var Strategies;
|
|
|
146
147
|
Identifiers["RepayOnPrice"] = "repay-on-price";
|
|
147
148
|
Identifiers["EoaBoostOnPrice"] = "eoa-boost-on-price";
|
|
148
149
|
Identifiers["EoaRepayOnPrice"] = "eoa-repay-on-price";
|
|
150
|
+
Identifiers["InterestRateAdjustment"] = "interest-rate-adjustment";
|
|
149
151
|
})(Identifiers = Strategies.Identifiers || (Strategies.Identifiers = {}));
|
|
150
152
|
let IdOverrides;
|
|
151
153
|
(function (IdOverrides) {
|
package/esm/types/index.d.ts
CHANGED
|
@@ -158,6 +158,13 @@ export declare namespace Position {
|
|
|
158
158
|
targetRatio: number;
|
|
159
159
|
triggerRatio: number;
|
|
160
160
|
}
|
|
161
|
+
interface InterestRateAdjustmentLiquityV2 extends Base {
|
|
162
|
+
market: EthereumAddress;
|
|
163
|
+
troveId: string;
|
|
164
|
+
criticalDebtInFrontLimit: string;
|
|
165
|
+
nonCriticalDebtInFrontLimit: string;
|
|
166
|
+
interestRateChange: string;
|
|
167
|
+
}
|
|
161
168
|
interface TrailingStop extends Base {
|
|
162
169
|
roundId: number;
|
|
163
170
|
triggerPercentage: number;
|
|
@@ -188,7 +195,7 @@ export declare namespace Position {
|
|
|
188
195
|
takeProfitType: CloseToAssetType | undefined;
|
|
189
196
|
}
|
|
190
197
|
}
|
|
191
|
-
type SpecificAny = Specific.CloseOnPrice | Specific.TrailingStop | Specific.RatioProtection | Specific.CloseOnPriceAave | Specific.BoostOnPriceAave | Specific.CloseOnPriceWithMaximumGasPriceAave | Specific.DebtInFrontRepay | Specific.LeverageManagementCrvUSD | Specific.CloseOnPriceLiquityV2 | Specific.BoostOnPriceMorpho | Specific.BoostOnPriceLiquityV2 | Specific.PaybackLiquityV2 | Specific.CompoundV3LeverageManagementOnPrice | Specific.CompoundV3CloseOnPrice;
|
|
198
|
+
type SpecificAny = Specific.CloseOnPrice | Specific.TrailingStop | Specific.RatioProtection | Specific.CloseOnPriceAave | Specific.BoostOnPriceAave | Specific.CloseOnPriceWithMaximumGasPriceAave | Specific.DebtInFrontRepay | Specific.LeverageManagementCrvUSD | Specific.CloseOnPriceLiquityV2 | Specific.BoostOnPriceMorpho | Specific.BoostOnPriceLiquityV2 | Specific.PaybackLiquityV2 | Specific.InterestRateAdjustmentLiquityV2 | Specific.CompoundV3LeverageManagementOnPrice | Specific.CompoundV3CloseOnPrice;
|
|
192
199
|
interface Automated {
|
|
193
200
|
chainId: ChainId;
|
|
194
201
|
positionId: string;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@defisaver/automation-sdk",
|
|
3
|
-
"version": "3.3.
|
|
3
|
+
"version": "3.3.2-dev",
|
|
4
4
|
"description": "",
|
|
5
5
|
"main": "./cjs/index.js",
|
|
6
6
|
"module": "./esm/index.js",
|
|
@@ -23,7 +23,7 @@
|
|
|
23
23
|
"repository": "https://github.com/defisaver/automation-sdk",
|
|
24
24
|
"license": "ISC",
|
|
25
25
|
"dependencies": {
|
|
26
|
-
"@defisaver/sdk": "^1.3.
|
|
26
|
+
"@defisaver/sdk": "^1.3.2",
|
|
27
27
|
"@defisaver/tokens": "^1.6.19",
|
|
28
28
|
"@ethersproject/address": "^5.0.10",
|
|
29
29
|
"@ethersproject/solidity": "^5.0.9",
|
package/src/constants/index.ts
CHANGED
|
@@ -118,6 +118,11 @@ export const MAINNET_STRATEGIES_INFO: MainnetStrategiesInfo = {
|
|
|
118
118
|
strategyId: Strategies.Identifiers.Payback,
|
|
119
119
|
protocol: PROTOCOLS.LiquityV2,
|
|
120
120
|
},
|
|
121
|
+
[Strategies.MainnetIds.LIQUITY_V2_INTEREST_RATE_ADJUSTMENT]: {
|
|
122
|
+
strategyOrBundleId: Strategies.MainnetIds.LIQUITY_V2_INTEREST_RATE_ADJUSTMENT,
|
|
123
|
+
strategyId: Strategies.Identifiers.InterestRateAdjustment,
|
|
124
|
+
protocol: PROTOCOLS.LiquityV2,
|
|
125
|
+
},
|
|
121
126
|
};
|
|
122
127
|
|
|
123
128
|
export const OPTIMISM_STRATEGIES_INFO: OptimismStrategiesInfo = {
|
|
@@ -487,9 +487,6 @@ function parseCompoundV3LeverageManagementOnPrice(position: Position.Automated,
|
|
|
487
487
|
priceState: triggerData.priceState,
|
|
488
488
|
};
|
|
489
489
|
|
|
490
|
-
const isEOA = _position.strategy.strategyId.includes('eoa');
|
|
491
|
-
_position.strategy.strategyId = isEOA ? Strategies.IdOverrides.EoaLeverageManagementOnPrice : Strategies.IdOverrides.LeverageManagementOnPrice;
|
|
492
|
-
|
|
493
490
|
return _position;
|
|
494
491
|
}
|
|
495
492
|
|
|
@@ -1071,6 +1068,32 @@ function parseFluidT1LeverageManagement(position: Position.Automated, parseData:
|
|
|
1071
1068
|
return _position;
|
|
1072
1069
|
}
|
|
1073
1070
|
|
|
1071
|
+
function parseLiquityV2InterestRateAdjustment(position: Position.Automated, parseData: ParseData): Position.Automated {
|
|
1072
|
+
const _position = cloneDeep(position);
|
|
1073
|
+
|
|
1074
|
+
const { subStruct } = parseData.subscriptionEventData;
|
|
1075
|
+
|
|
1076
|
+
const triggerData = triggerService.liquityV2InterestRateAdjustmentTrigger.decode(subStruct.triggerData);
|
|
1077
|
+
const subData = subDataService.liquityV2InterestRateAdjustmentSubData.decode(subStruct.subData);
|
|
1078
|
+
|
|
1079
|
+
_position.strategyData.decoded.triggerData = triggerData;
|
|
1080
|
+
_position.strategyData.decoded.subData = subData;
|
|
1081
|
+
|
|
1082
|
+
_position.positionId = getPositionId(
|
|
1083
|
+
_position.chainId, _position.protocol.id, _position.owner, triggerData.troveId, triggerData.market,
|
|
1084
|
+
);
|
|
1085
|
+
|
|
1086
|
+
_position.specific = {
|
|
1087
|
+
market: subData.market,
|
|
1088
|
+
troveId: subData.troveId,
|
|
1089
|
+
criticalDebtInFrontLimit: triggerData.criticalDebtInFrontLimit,
|
|
1090
|
+
nonCriticalDebtInFrontLimit: triggerData.nonCriticalDebtInFrontLimit,
|
|
1091
|
+
interestRateChange: subData.interestRateChange,
|
|
1092
|
+
};
|
|
1093
|
+
|
|
1094
|
+
return _position;
|
|
1095
|
+
}
|
|
1096
|
+
|
|
1074
1097
|
const parsingMethodsMapping: StrategiesToProtocolVersionMapping = {
|
|
1075
1098
|
[ProtocolIdentifiers.StrategiesAutomation.MakerDAO]: {
|
|
1076
1099
|
[Strategies.Identifiers.SavingsLiqProtection]: parseMakerSavingsLiqProtection,
|
|
@@ -1098,6 +1121,7 @@ const parsingMethodsMapping: StrategiesToProtocolVersionMapping = {
|
|
|
1098
1121
|
[Strategies.Identifiers.BoostOnPrice]: parseLiquityV2LeverageManagementOnPrice,
|
|
1099
1122
|
[Strategies.Identifiers.RepayOnPrice]: parseLiquityV2LeverageManagementOnPrice,
|
|
1100
1123
|
[Strategies.Identifiers.Payback]: parseLiquityV2Payback,
|
|
1124
|
+
[Strategies.Identifiers.InterestRateAdjustment]: parseLiquityV2InterestRateAdjustment,
|
|
1101
1125
|
},
|
|
1102
1126
|
[ProtocolIdentifiers.StrategiesAutomation.AaveV2]: {
|
|
1103
1127
|
[Strategies.Identifiers.Repay]: parseAaveV2LeverageManagement,
|
|
@@ -663,6 +663,25 @@ export const liquityV2Encode = {
|
|
|
663
663
|
const subData = subDataService.liquityV2PaybackSubData.encode(market, troveId, boldToken, targetRatio, ratioState);
|
|
664
664
|
const triggerData = triggerService.liquityV2RatioTrigger.encode(market, troveId, triggerRatio, ratioState);
|
|
665
665
|
|
|
666
|
+
return [strategyId, isBundle, triggerData, subData];
|
|
667
|
+
},
|
|
668
|
+
interestRateAdjustment(
|
|
669
|
+
market: EthereumAddress,
|
|
670
|
+
troveId: string,
|
|
671
|
+
criticalDebtInFrontLimit: string,
|
|
672
|
+
nonCriticalDebtInFrontLimit: string,
|
|
673
|
+
interestRateChange: string,
|
|
674
|
+
) {
|
|
675
|
+
const strategyId = Strategies.MainnetIds.LIQUITY_V2_INTEREST_RATE_ADJUSTMENT;
|
|
676
|
+
const isBundle = false;
|
|
677
|
+
|
|
678
|
+
const subData = subDataService.liquityV2InterestRateAdjustmentSubData.encode(
|
|
679
|
+
market,
|
|
680
|
+
troveId,
|
|
681
|
+
interestRateChange,
|
|
682
|
+
);
|
|
683
|
+
const triggerData = triggerService.liquityV2InterestRateAdjustmentTrigger.encode(market, troveId, criticalDebtInFrontLimit, nonCriticalDebtInFrontLimit);
|
|
684
|
+
|
|
666
685
|
return [strategyId, isBundle, triggerData, subData];
|
|
667
686
|
},
|
|
668
687
|
};
|
|
@@ -1022,3 +1022,34 @@ export const compoundV3CloseSubData = {
|
|
|
1022
1022
|
};
|
|
1023
1023
|
},
|
|
1024
1024
|
};
|
|
1025
|
+
|
|
1026
|
+
export const liquityV2InterestRateAdjustmentSubData = {
|
|
1027
|
+
encode: (
|
|
1028
|
+
market: EthereumAddress,
|
|
1029
|
+
troveId: string,
|
|
1030
|
+
interestRateChange: string,
|
|
1031
|
+
) => {
|
|
1032
|
+
const marketEncoded = AbiCoder.encodeParameter('address', market);
|
|
1033
|
+
const troveIdEncoded = AbiCoder.encodeParameter('uint256', troveId);
|
|
1034
|
+
const interestRateChangeWei = new Dec(interestRateChange).mul(1e16).toString();
|
|
1035
|
+
const interestRateChangeEncoded = AbiCoder.encodeParameter('uint256', interestRateChangeWei.toString());
|
|
1036
|
+
|
|
1037
|
+
return [
|
|
1038
|
+
marketEncoded,
|
|
1039
|
+
troveIdEncoded,
|
|
1040
|
+
interestRateChangeEncoded,
|
|
1041
|
+
];
|
|
1042
|
+
},
|
|
1043
|
+
decode: (subData: SubData) => {
|
|
1044
|
+
const market = AbiCoder.decodeParameter('address', subData[0]) as unknown as EthereumAddress;
|
|
1045
|
+
const troveId = AbiCoder.decodeParameter('uint256', subData[1]) as any as string;
|
|
1046
|
+
const interestRateChangeWei = AbiCoder.decodeParameter('uint256', subData[2]) as any as string;
|
|
1047
|
+
const interestRateChange = new Dec(interestRateChangeWei).div(10 ** 16).toString();
|
|
1048
|
+
|
|
1049
|
+
return {
|
|
1050
|
+
market,
|
|
1051
|
+
troveId,
|
|
1052
|
+
interestRateChange,
|
|
1053
|
+
};
|
|
1054
|
+
},
|
|
1055
|
+
};
|
|
@@ -656,4 +656,26 @@ export const compoundV3PriceRangeTrigger = {
|
|
|
656
656
|
upperPrice: new Dec(decodedData[3] as string).div(1e8).toString(),
|
|
657
657
|
};
|
|
658
658
|
},
|
|
659
|
+
};
|
|
660
|
+
|
|
661
|
+
export const liquityV2InterestRateAdjustmentTrigger = {
|
|
662
|
+
encode(
|
|
663
|
+
market: EthereumAddress,
|
|
664
|
+
troveId: string,
|
|
665
|
+
criticalDebtInFrontLimit: string,
|
|
666
|
+
nonCriticalDebtInFrontLimit: string,
|
|
667
|
+
) {
|
|
668
|
+
const criticalDebtInFrontLimitWei = web3Utils.toWei(new Dec(criticalDebtInFrontLimit).toString(), 'ether');
|
|
669
|
+
const nonCriticalDebtInFrontLimitWei = web3Utils.toWei(new Dec(nonCriticalDebtInFrontLimit).toString(), 'ether');
|
|
670
|
+
return [AbiCoder.encodeParameters(['address', 'uint256', 'uint256', 'uint256'], [market, troveId, criticalDebtInFrontLimitWei, nonCriticalDebtInFrontLimitWei])];
|
|
671
|
+
},
|
|
672
|
+
decode(triggerData: TriggerData): { market: EthereumAddress, troveId: string, criticalDebtInFrontLimit: string, nonCriticalDebtInFrontLimit: string } {
|
|
673
|
+
const decodedData = AbiCoder.decodeParameters(['address', 'uint256', 'uint256', 'uint256'], triggerData[0]);
|
|
674
|
+
return {
|
|
675
|
+
market: decodedData[0] as EthereumAddress,
|
|
676
|
+
troveId: decodedData[1] as string,
|
|
677
|
+
criticalDebtInFrontLimit: new Dec(decodedData[2] as string).div(10 ** 18).toString(),
|
|
678
|
+
nonCriticalDebtInFrontLimit: new Dec(decodedData[3] as string).div(10 ** 18).toString(),
|
|
679
|
+
};
|
|
680
|
+
},
|
|
659
681
|
};
|