@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.
@@ -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
+ };
@@ -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",
@@ -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) {
@@ -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;
@@ -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
+ };
@@ -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",
@@ -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) {
@@ -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.1",
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.0",
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",
@@ -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
  };
@@ -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',