@defisaver/automation-sdk 3.3.1 → 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 -0
- 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 -0
- 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 -0
- 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]: {
|
|
@@ -812,6 +812,23 @@ function parseFluidT1LeverageManagement(position, parseData) {
|
|
|
812
812
|
_position.strategy.strategyId = enums_1.Strategies.IdOverrides.LeverageManagement;
|
|
813
813
|
return _position;
|
|
814
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
|
+
}
|
|
815
832
|
const parsingMethodsMapping = {
|
|
816
833
|
[enums_1.ProtocolIdentifiers.StrategiesAutomation.MakerDAO]: {
|
|
817
834
|
[enums_1.Strategies.Identifiers.SavingsLiqProtection]: parseMakerSavingsLiqProtection,
|
|
@@ -839,6 +856,7 @@ const parsingMethodsMapping = {
|
|
|
839
856
|
[enums_1.Strategies.Identifiers.BoostOnPrice]: parseLiquityV2LeverageManagementOnPrice,
|
|
840
857
|
[enums_1.Strategies.Identifiers.RepayOnPrice]: parseLiquityV2LeverageManagementOnPrice,
|
|
841
858
|
[enums_1.Strategies.Identifiers.Payback]: parseLiquityV2Payback,
|
|
859
|
+
[enums_1.Strategies.Identifiers.InterestRateAdjustment]: parseLiquityV2InterestRateAdjustment,
|
|
842
860
|
},
|
|
843
861
|
[enums_1.ProtocolIdentifiers.StrategiesAutomation.AaveV2]: {
|
|
844
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]: {
|
|
@@ -783,6 +783,23 @@ function parseFluidT1LeverageManagement(position, parseData) {
|
|
|
783
783
|
_position.strategy.strategyId = Strategies.IdOverrides.LeverageManagement;
|
|
784
784
|
return _position;
|
|
785
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
|
+
}
|
|
786
803
|
const parsingMethodsMapping = {
|
|
787
804
|
[ProtocolIdentifiers.StrategiesAutomation.MakerDAO]: {
|
|
788
805
|
[Strategies.Identifiers.SavingsLiqProtection]: parseMakerSavingsLiqProtection,
|
|
@@ -810,6 +827,7 @@ const parsingMethodsMapping = {
|
|
|
810
827
|
[Strategies.Identifiers.BoostOnPrice]: parseLiquityV2LeverageManagementOnPrice,
|
|
811
828
|
[Strategies.Identifiers.RepayOnPrice]: parseLiquityV2LeverageManagementOnPrice,
|
|
812
829
|
[Strategies.Identifiers.Payback]: parseLiquityV2Payback,
|
|
830
|
+
[Strategies.Identifiers.InterestRateAdjustment]: parseLiquityV2InterestRateAdjustment,
|
|
813
831
|
},
|
|
814
832
|
[ProtocolIdentifiers.StrategiesAutomation.AaveV2]: {
|
|
815
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 = {
|
|
@@ -1068,6 +1068,32 @@ function parseFluidT1LeverageManagement(position: Position.Automated, parseData:
|
|
|
1068
1068
|
return _position;
|
|
1069
1069
|
}
|
|
1070
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
|
+
|
|
1071
1097
|
const parsingMethodsMapping: StrategiesToProtocolVersionMapping = {
|
|
1072
1098
|
[ProtocolIdentifiers.StrategiesAutomation.MakerDAO]: {
|
|
1073
1099
|
[Strategies.Identifiers.SavingsLiqProtection]: parseMakerSavingsLiqProtection,
|
|
@@ -1095,6 +1121,7 @@ const parsingMethodsMapping: StrategiesToProtocolVersionMapping = {
|
|
|
1095
1121
|
[Strategies.Identifiers.BoostOnPrice]: parseLiquityV2LeverageManagementOnPrice,
|
|
1096
1122
|
[Strategies.Identifiers.RepayOnPrice]: parseLiquityV2LeverageManagementOnPrice,
|
|
1097
1123
|
[Strategies.Identifiers.Payback]: parseLiquityV2Payback,
|
|
1124
|
+
[Strategies.Identifiers.InterestRateAdjustment]: parseLiquityV2InterestRateAdjustment,
|
|
1098
1125
|
},
|
|
1099
1126
|
[ProtocolIdentifiers.StrategiesAutomation.AaveV2]: {
|
|
1100
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
|
};
|
package/src/types/enums.ts
CHANGED
|
@@ -96,6 +96,7 @@ export namespace Strategies {
|
|
|
96
96
|
LIQUITY_DEBT_IN_FRONT_REPAY = 75,
|
|
97
97
|
CURVEUSD_PAYBACK = 92,
|
|
98
98
|
LIQUITY_V2_PAYBACK = 113,
|
|
99
|
+
LIQUITY_V2_INTEREST_RATE_ADJUSTMENT = 124,
|
|
99
100
|
}
|
|
100
101
|
|
|
101
102
|
export enum OptimismIds {
|
|
@@ -143,6 +144,7 @@ export namespace Strategies {
|
|
|
143
144
|
RepayOnPrice = 'repay-on-price',
|
|
144
145
|
EoaBoostOnPrice = 'eoa-boost-on-price',
|
|
145
146
|
EoaRepayOnPrice = 'eoa-repay-on-price',
|
|
147
|
+
InterestRateAdjustment = 'interest-rate-adjustment',
|
|
146
148
|
}
|
|
147
149
|
export enum IdOverrides {
|
|
148
150
|
TakeProfit = 'take-profit',
|