@defisaver/automation-sdk 2.1.2 → 2.1.4

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/.env ADDED
@@ -0,0 +1,4 @@
1
+ RPC_1=https://mainnet.infura.io/v3/a3503e4501d040cd9ea2c913c68983a1
2
+ RPC_10=https://opt-mainnet.g.alchemy.com/v2/Pwh-hdbsP7Bf0CP_UMw4_Pw-NfHhSpIA
3
+ RPC_8453=https://base-mainnet.g.alchemy.com/v2/TERsAaPNcA7sgCVHHAMBvd95UtT4wCEf
4
+ RPC_42161=https://arb-mainnet.g.alchemy.com/v2/Pwh-hdbsP7Bf0CP_UMw4_Pw-NfHhSpIA
@@ -127,7 +127,9 @@ class StrategiesAutomation extends Automation_1.default {
127
127
  && s.strategy.strategyId === current.strategy.strategyId
128
128
  && s.protocol.id === current.protocol.id
129
129
  && (s.protocol.id !== enums_1.ProtocolIdentifiers.StrategiesAutomation.MakerDAO // reflexer needs to get added if we have it
130
- || s.strategyData.decoded.subData.vaultId === current.strategyData.decoded.triggerData.vaultId)));
130
+ || s.strategyData.decoded.subData.vaultId === current.strategyData.decoded.triggerData.vaultId)
131
+ && (s.protocol.id !== enums_1.ProtocolIdentifiers.StrategiesAutomation.CrvUSD // merge only crvUSD leverage management for the same market
132
+ || s.strategyData.decoded.subData.controller.toLowerCase() === current.strategyData.decoded.triggerData.controller.toLowerCase())));
131
133
  if (mergePairIndex !== -1) {
132
134
  const mergePair = copyList[mergePairIndex];
133
135
  if ((0, utils_1.isDefined)(mergePair)) {
@@ -273,6 +273,16 @@ exports.MAINNET_BUNDLES_INFO = {
273
273
  strategyId: enums_1.Strategies.Identifiers.Boost,
274
274
  protocol: exports.PROTOCOLS.CompoundV2,
275
275
  },
276
+ [enums_1.Bundles.MainnetIds.CRVUSD_REPAY]: {
277
+ strategyOrBundleId: enums_1.Bundles.MainnetIds.CRVUSD_REPAY,
278
+ strategyId: enums_1.Strategies.Identifiers.Repay,
279
+ protocol: exports.PROTOCOLS.CrvUSD,
280
+ },
281
+ [enums_1.Bundles.MainnetIds.CRVUSD_BOOST]: {
282
+ strategyOrBundleId: enums_1.Bundles.MainnetIds.CRVUSD_BOOST,
283
+ strategyId: enums_1.Strategies.Identifiers.Boost,
284
+ protocol: exports.PROTOCOLS.CrvUSD,
285
+ },
276
286
  };
277
287
  exports.OPTIMISM_BUNDLES_INFO = {
278
288
  [enums_1.Bundles.OptimismIds.AAVE_V3_REPAY]: {
@@ -317,6 +327,16 @@ exports.ARBITRUM_BUNDLES_INFO = {
317
327
  strategyId: enums_1.Strategies.Identifiers.CloseToCollateral,
318
328
  protocol: exports.PROTOCOLS.AaveV3,
319
329
  },
330
+ [enums_1.Bundles.ArbitrumIds.COMP_V3_SW_BOOST_BUNDLE]: {
331
+ strategyOrBundleId: enums_1.Bundles.ArbitrumIds.COMP_V3_SW_BOOST_BUNDLE,
332
+ strategyId: enums_1.Strategies.Identifiers.Boost,
333
+ protocol: exports.PROTOCOLS.CompoundV3,
334
+ },
335
+ [enums_1.Bundles.ArbitrumIds.COMP_V3_SW_REPAY_BUNDLE]: {
336
+ strategyOrBundleId: enums_1.Bundles.ArbitrumIds.COMP_V3_SW_REPAY_BUNDLE,
337
+ strategyId: enums_1.Strategies.Identifiers.Repay,
338
+ protocol: exports.PROTOCOLS.CompoundV3,
339
+ },
320
340
  };
321
341
  exports.BUNDLES_INFO = {
322
342
  [enums_1.ChainId.Ethereum]: exports.MAINNET_BUNDLES_INFO,
@@ -321,8 +321,11 @@ function parseCompoundV3LeverageManagement(position, parseData) {
321
321
  const _position = (0, lodash_1.cloneDeep)(position);
322
322
  const { subStruct, subId } = parseData.subscriptionEventData;
323
323
  const { isEnabled } = parseData.strategiesSubsData;
324
+ const subDataDecoder = position.chainId !== 1
325
+ ? subDataService.compoundV3L2LeverageManagementSubData
326
+ : subDataService.compoundV3LeverageManagementSubData;
324
327
  const triggerData = triggerService.compoundV3RatioTrigger.decode(subStruct.triggerData);
325
- const subData = subDataService.compoundV3LeverageManagementSubData.decode(subStruct.subData);
328
+ const subData = subDataDecoder.decode(subStruct.subData);
326
329
  _position.strategyData.decoded.triggerData = triggerData;
327
330
  _position.strategyData.decoded.subData = subData;
328
331
  _position.owner = triggerData.owner.toLowerCase();
@@ -501,6 +504,38 @@ function parseLiquityDebtInFrontRepay(position, parseData) {
501
504
  };
502
505
  return _position;
503
506
  }
507
+ function parseCrvUSDLeverageManagement(position, parseData) {
508
+ const _position = (0, lodash_1.cloneDeep)(position);
509
+ const { subStruct, subId, subHash } = parseData.subscriptionEventData;
510
+ const { isEnabled } = parseData.strategiesSubsData;
511
+ const triggerData = triggerService.crvUSDRatioTrigger.decode(subStruct.triggerData);
512
+ const subData = subDataService.crvUSDLeverageManagementSubData.decode(subStruct.subData);
513
+ _position.strategyData.decoded.triggerData = triggerData;
514
+ _position.strategyData.decoded.subData = subData;
515
+ const isRepay = _position.strategy.strategyId === enums_1.Strategies.Identifiers.Repay;
516
+ if (isRepay) {
517
+ _position.specific = {
518
+ triggerRepayRatio: triggerData.ratio,
519
+ targetRepayRatio: subData.targetRatio,
520
+ repayEnabled: isEnabled,
521
+ subId1: Number(subId),
522
+ subHashRepay: subHash,
523
+ };
524
+ }
525
+ else {
526
+ _position.specific = {
527
+ triggerBoostRatio: triggerData.ratio,
528
+ targetBoostRatio: subData.targetRatio,
529
+ boostEnabled: isEnabled,
530
+ subId2: Number(subId),
531
+ subHashBoost: subHash,
532
+ };
533
+ }
534
+ _position.positionId = (0, utils_1.getPositionId)(_position.chainId, _position.protocol.id, _position.owner, triggerData.controller);
535
+ _position.strategy.strategyId = enums_1.Strategies.IdOverrides.LeverageManagement;
536
+ _position.specific.mergeWithSameId = true;
537
+ return _position;
538
+ }
504
539
  const parsingMethodsMapping = {
505
540
  [enums_1.ProtocolIdentifiers.StrategiesAutomation.MakerDAO]: {
506
541
  [enums_1.Strategies.Identifiers.SavingsLiqProtection]: parseMakerSavingsLiqProtection,
@@ -560,6 +595,10 @@ const parsingMethodsMapping = {
560
595
  [enums_1.Strategies.Identifiers.CloseToDebt]: parseSparkCloseOnPrice,
561
596
  [enums_1.Strategies.Identifiers.CloseToCollateral]: parseSparkCloseOnPrice,
562
597
  },
598
+ [enums_1.ProtocolIdentifiers.StrategiesAutomation.CrvUSD]: {
599
+ [enums_1.Strategies.Identifiers.Repay]: parseCrvUSDLeverageManagement,
600
+ [enums_1.Strategies.Identifiers.Boost]: parseCrvUSDLeverageManagement,
601
+ },
563
602
  };
564
603
  function getParsingMethod(id, strategy) {
565
604
  return parsingMethodsMapping[id][strategy.strategyId];
@@ -54,6 +54,9 @@ export declare const compoundV2Encode: {
54
54
  export declare const compoundV3Encode: {
55
55
  leverageManagement(market: EthereumAddress, baseToken: EthereumAddress, triggerRepayRatio: number, triggerBoostRatio: number, targetBoostRatio: number, targetRepayRatio: number, boostEnabled: boolean, isEOA: boolean): string[];
56
56
  };
57
+ export declare const compoundV3L2Encode: {
58
+ leverageManagement(market: EthereumAddress, baseToken: EthereumAddress, triggerRepayRatio: number, triggerBoostRatio: number, targetBoostRatio: number, targetRepayRatio: number, boostEnabled: boolean): string;
59
+ };
57
60
  export declare const morphoAaveV2Encode: {
58
61
  leverageManagement(triggerRepayRatio: number, triggerBoostRatio: number, targetBoostRatio: number, targetRepayRatio: number, boostEnabled: boolean): string[];
59
62
  };
@@ -75,3 +78,6 @@ export declare const sparkEncode: {
75
78
  debtAssetId: number;
76
79
  }): (number | boolean | string[])[];
77
80
  };
81
+ export declare const crvUSDEncode: {
82
+ leverageManagement(owner: EthereumAddress, controllerAddr: EthereumAddress, ratioState: RatioState, targetRatio: number, triggerRatio: number, collTokenAddr: EthereumAddress, crvUSDAddr: EthereumAddress): (boolean | string[] | Bundles.MainnetIds)[];
83
+ };
@@ -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.sparkEncode = exports.exchangeEncode = exports.morphoAaveV2Encode = exports.compoundV3Encode = exports.compoundV2Encode = exports.aaveV3Encode = exports.aaveV2Encode = exports.chickenBondsEncode = exports.liquityEncode = exports.makerEncode = void 0;
29
+ exports.crvUSDEncode = exports.sparkEncode = exports.exchangeEncode = exports.morphoAaveV2Encode = exports.compoundV3L2Encode = exports.compoundV3Encode = exports.compoundV2Encode = exports.aaveV3Encode = exports.aaveV2Encode = exports.chickenBondsEncode = exports.liquityEncode = exports.makerEncode = void 0;
30
30
  const decimal_js_1 = __importDefault(require("decimal.js"));
31
31
  const tokens_1 = require("@defisaver/tokens");
32
32
  const enums_1 = require("../types/enums");
@@ -179,6 +179,11 @@ exports.compoundV3Encode = {
179
179
  return subDataService.compoundV3LeverageManagementSubData.encode(market, baseToken, triggerRepayRatio, triggerBoostRatio, targetBoostRatio, targetRepayRatio, boostEnabled, isEOA);
180
180
  },
181
181
  };
182
+ exports.compoundV3L2Encode = {
183
+ leverageManagement(market, baseToken, triggerRepayRatio, triggerBoostRatio, targetBoostRatio, targetRepayRatio, boostEnabled) {
184
+ return subDataService.compoundV3L2LeverageManagementSubData.encode(market, baseToken, triggerRepayRatio, triggerBoostRatio, targetBoostRatio, targetRepayRatio, boostEnabled);
185
+ },
186
+ };
182
187
  exports.morphoAaveV2Encode = {
183
188
  leverageManagement(triggerRepayRatio, triggerBoostRatio, targetBoostRatio, targetRepayRatio, boostEnabled) {
184
189
  return subDataService.morphoAaveV2LeverageManagementSubData.encode(triggerRepayRatio, triggerBoostRatio, targetBoostRatio, targetRepayRatio, boostEnabled);
@@ -218,3 +223,13 @@ exports.sparkEncode = {
218
223
  return [strategyOrBundleId, isBundle, triggerDataEncoded, subDataEncoded];
219
224
  },
220
225
  };
226
+ exports.crvUSDEncode = {
227
+ leverageManagement(owner, controllerAddr, ratioState, targetRatio, triggerRatio, collTokenAddr, crvUSDAddr) {
228
+ const subData = subDataService.crvUSDLeverageManagementSubData.encode(controllerAddr, ratioState, targetRatio, collTokenAddr, crvUSDAddr);
229
+ const triggerData = triggerService.crvUSDRatioTrigger.encode(owner, controllerAddr, triggerRatio, ratioState);
230
+ // over is boost, under is repay
231
+ const strategyOrBundleId = ratioState === enums_1.RatioState.OVER ? enums_1.Bundles.MainnetIds.CRVUSD_BOOST : enums_1.Bundles.MainnetIds.CRVUSD_REPAY;
232
+ const isBundle = true;
233
+ return [strategyOrBundleId, isBundle, triggerData, subData];
234
+ },
235
+ };
@@ -293,7 +293,7 @@ describe('Feature: strategySubService.ts', () => {
293
293
  describe('rebond()', () => {
294
294
  const examples = [
295
295
  [
296
- ["0x00000000000000000000000000000000000000000000000000000000000005e3"],
296
+ ['0x00000000000000000000000000000000000000000000000000000000000005e3'],
297
297
  [1507]
298
298
  ]
299
299
  ];
@@ -689,4 +689,94 @@ describe('Feature: strategySubService.ts', () => {
689
689
  });
690
690
  });
691
691
  });
692
+ describe('When testing strategySubService.crvUSDEncode', () => {
693
+ describe('leverageManagement()', () => {
694
+ const examples = [
695
+ [
696
+ [
697
+ enums_1.Bundles.MainnetIds.CRVUSD_REPAY,
698
+ true,
699
+ [
700
+ '0x0000000000000000000000001031d218133afab8c2b819b1366c7e434ad91e9c000000000000000000000000a920de414ea4ab66b97da1bfe9e6eca7d4219635000000000000000000000000000000000000000000000000136dcc951d8c00000000000000000000000000000000000000000000000000000000000000000001',
701
+ ],
702
+ [
703
+ '0x000000000000000000000000a920de414ea4ab66b97da1bfe9e6eca7d4219635',
704
+ '0x0000000000000000000000000000000000000000000000000000000000000001',
705
+ '0x0000000000000000000000000000000000000000000000001a5e27eef13e0000',
706
+ '0x000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2',
707
+ '0x000000000000000000000000f939e0a03fb07f59a73314e73794be0e57ac1b4e',
708
+ ],
709
+ ],
710
+ [
711
+ web3Utils.toChecksumAddress('0x1031d218133AFaB8c2B819B1366c7E434Ad91E9c'),
712
+ web3Utils.toChecksumAddress('0xa920de414ea4ab66b97da1bfe9e6eca7d4219635'),
713
+ enums_1.RatioState.UNDER,
714
+ 190,
715
+ 140,
716
+ '0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2',
717
+ '0xf939E0A03FB07F59A73314E73794Be0E57ac1b4E',
718
+ ]
719
+ ],
720
+ [
721
+ [
722
+ enums_1.Bundles.MainnetIds.CRVUSD_BOOST,
723
+ true,
724
+ [
725
+ '0x0000000000000000000000000043d218133afab8f2b829b106633e434ad94e2c000000000000000000000000a920de414ea4ab66b97da1bfe9e6eca7d42196350000000000000000000000000000000000000000000000001bc16d674ec800000000000000000000000000000000000000000000000000000000000000000000'
726
+ ],
727
+ [
728
+ '0x000000000000000000000000a920de414ea4ab66b97da1bfe9e6eca7d4219635',
729
+ '0x0000000000000000000000000000000000000000000000000000000000000000',
730
+ '0x00000000000000000000000000000000000000000000000016345785d8a00000',
731
+ '0x000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2',
732
+ '0x000000000000000000000000f939e0a03fb07f59a73314e73794be0e57ac1b4e',
733
+ ],
734
+ ],
735
+ [
736
+ web3Utils.toChecksumAddress('0x0043d218133AFaB8F2B829B106633E434Ad94E2c'),
737
+ web3Utils.toChecksumAddress('0xa920de414ea4ab66b97da1bfe9e6eca7d4219635'),
738
+ enums_1.RatioState.OVER,
739
+ 160,
740
+ 200,
741
+ '0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2',
742
+ '0xf939E0A03FB07F59A73314E73794Be0E57ac1b4E',
743
+ ]
744
+ ],
745
+ ];
746
+ examples.forEach(([expected, actual]) => {
747
+ it(`Given ${actual} should return expected value: ${JSON.stringify(expected)}`, () => {
748
+ (0, chai_1.expect)(strategySubService_1.crvUSDEncode.leverageManagement(...actual)).to.eql(expected);
749
+ });
750
+ });
751
+ });
752
+ });
753
+ describe('When testing strategySubService.compoundV3L2Encode', () => {
754
+ describe('leverageManagement()', () => {
755
+ const examples = [
756
+ [
757
+ '0x0313D212133AFab8F2b829B1066c7e43caD94e2c0213D212133AfaB8F2b829B1066C7E43cAD94E2c000000000000000016345785d8a0000000000000000000001e87f85809dc0000000000000000000018fae27693b4000000000000000000001a5e27eef13e000001',
758
+ [
759
+ web3Utils.toChecksumAddress('0x0313d212133AFaB8F2B829B1066c7E43cAd94E2c'),
760
+ web3Utils.toChecksumAddress('0x0213d212133AFaB8F2B829B1066c7E43cAd94E2c'),
761
+ 160, 220, 180, 190,
762
+ true
763
+ ],
764
+ ],
765
+ [
766
+ '0x0313D212133AFab8F2b829B1066c7e43caD94e2c0413d212133afAb8F2B829b1066C7e43cAd94e2c000000000000000016345785d8a0000000000000000000001e87f85809dc0000000000000000000018fae27693b4000000000000000000000f43fc2c04ee000000',
767
+ [
768
+ web3Utils.toChecksumAddress('0x0313d212133AFaB8F2B829B1066c7E43cAd94E2c'),
769
+ web3Utils.toChecksumAddress('0x0413d212133AFaB8F2B829B1066c7E43cAd94E2c'),
770
+ 160, 220, 180, 110,
771
+ false
772
+ ],
773
+ ],
774
+ ];
775
+ examples.forEach(([expected, actual]) => {
776
+ it(`Given ${actual} should return expected value: ${JSON.stringify(expected)}`, () => {
777
+ (0, chai_1.expect)(strategySubService_1.compoundV3L2Encode.leverageManagement(...actual)).to.eql(expected);
778
+ });
779
+ });
780
+ });
781
+ });
692
782
  });
@@ -1,6 +1,6 @@
1
1
  import type { EthereumAddress } from '../types';
2
2
  import type { OrderType } from '../types/enums';
3
- import { ChainId } from '../types/enums';
3
+ import { ChainId, RatioState } from '../types/enums';
4
4
  export declare const makerRepayFromSavingsSubData: {
5
5
  encode(vaultId: number, targetRatioPercentage: number, chainId: ChainId, daiAddr?: EthereumAddress, mcdCdpManagerAddr?: EthereumAddress): string[];
6
6
  decode(subData: string[]): {
@@ -72,6 +72,12 @@ export declare const compoundV3LeverageManagementSubData: {
72
72
  targetRatio: number;
73
73
  };
74
74
  };
75
+ export declare const compoundV3L2LeverageManagementSubData: {
76
+ encode(market: EthereumAddress, baseToken: EthereumAddress, triggerRepayRatio: number, triggerBoostRatio: number, targetBoostRatio: number, targetRepayRatio: number, boostEnabled: boolean): string;
77
+ decode(subData: string[]): {
78
+ targetRatio: number;
79
+ };
80
+ };
75
81
  export declare const morphoAaveV2LeverageManagementSubData: {
76
82
  encode(triggerRepayRatio: number, triggerBoostRatio: number, targetBoostRatio: number, targetRepayRatio: number, boostEnabled: boolean): string[];
77
83
  decode(subData: string[]): {
@@ -145,3 +151,10 @@ export declare const liquityDebtInFrontRepaySubData: {
145
151
  targetRatioIncrease: number;
146
152
  };
147
153
  };
154
+ export declare const crvUSDLeverageManagementSubData: {
155
+ encode: (controllerAddr: EthereumAddress, ratioState: RatioState, targetRatio: number, collTokenAddr: EthereumAddress, crvUSDAddr: EthereumAddress) => string[];
156
+ decode: (subData: string[]) => {
157
+ controller: string;
158
+ targetRatio: number;
159
+ };
160
+ };
@@ -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.liquityDebtInFrontRepaySubData = exports.liquityDsrSupplySubData = exports.liquityDsrPaybackSubData = exports.sparkQuotePriceSubData = exports.sparkLeverageManagementSubData = exports.exchangeLimitOrderSubData = exports.exchangeDcaSubData = exports.liquityPaybackUsingChickenBondSubData = exports.cBondsRebondSubData = exports.morphoAaveV2LeverageManagementSubData = exports.compoundV3LeverageManagementSubData = exports.compoundV2LeverageManagementSubData = exports.aaveV3QuotePriceSubData = exports.aaveV3LeverageManagementSubData = exports.aaveV2LeverageManagementSubData = exports.liquityCloseSubData = exports.liquityLeverageManagementSubData = exports.makerLeverageManagementSubData = exports.makerCloseSubData = exports.liquityRepayFromSavingsSubData = exports.makerRepayFromSavingsSubData = void 0;
6
+ 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.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 tokens_1 = require("@defisaver/tokens");
@@ -180,6 +180,28 @@ exports.compoundV3LeverageManagementSubData = {
180
180
  return { targetRatio };
181
181
  },
182
182
  };
183
+ exports.compoundV3L2LeverageManagementSubData = {
184
+ encode(market, baseToken, triggerRepayRatio, triggerBoostRatio, targetBoostRatio, targetRepayRatio, boostEnabled) {
185
+ let subInput = '0x';
186
+ subInput = subInput.concat(market.slice(2).padStart(32, '0'));
187
+ subInput = subInput.concat(baseToken.slice(2).padStart(32, '0'));
188
+ subInput = subInput.concat(new decimal_js_1.default(triggerRepayRatio).mul(1e16).toHex().slice(2)
189
+ .padStart(32, '0'));
190
+ subInput = subInput.concat(new decimal_js_1.default(triggerBoostRatio).mul(1e16).toHex().slice(2)
191
+ .padStart(32, '0'));
192
+ subInput = subInput.concat(new decimal_js_1.default(targetBoostRatio).mul(1e16).toHex().slice(2)
193
+ .padStart(32, '0'));
194
+ subInput = subInput.concat(new decimal_js_1.default(targetRepayRatio).mul(1e16).toHex().slice(2)
195
+ .padStart(32, '0'));
196
+ subInput = subInput.concat(boostEnabled ? '01' : '00');
197
+ return subInput;
198
+ },
199
+ decode(subData) {
200
+ const ratioWei = web3_eth_abi_1.default.decodeParameter('uint256', subData[3]);
201
+ const targetRatio = (0, utils_1.weiToRatioPercentage)(ratioWei);
202
+ return { targetRatio };
203
+ },
204
+ };
183
205
  exports.morphoAaveV2LeverageManagementSubData = {
184
206
  encode(triggerRepayRatio, triggerBoostRatio, targetBoostRatio, targetRepayRatio, boostEnabled) {
185
207
  return [
@@ -340,3 +362,19 @@ exports.liquityDebtInFrontRepaySubData = {
340
362
  return { targetRatioIncrease };
341
363
  },
342
364
  };
365
+ exports.crvUSDLeverageManagementSubData = {
366
+ encode: (controllerAddr, ratioState, targetRatio, collTokenAddr, crvUSDAddr) => {
367
+ const controllerAddrEncoded = web3_eth_abi_1.default.encodeParameter('address', controllerAddr);
368
+ const ratioStateEncoded = web3_eth_abi_1.default.encodeParameter('uint8', ratioState);
369
+ const targetRatioEncoded = web3_eth_abi_1.default.encodeParameter('uint256', (0, utils_1.ratioPercentageToWei)(targetRatio));
370
+ const collTokenAddrEncoded = web3_eth_abi_1.default.encodeParameter('address', collTokenAddr);
371
+ const crvUSDAddrEncoded = web3_eth_abi_1.default.encodeParameter('address', crvUSDAddr);
372
+ return [controllerAddrEncoded, ratioStateEncoded, targetRatioEncoded, collTokenAddrEncoded, crvUSDAddrEncoded];
373
+ },
374
+ decode: (subData) => {
375
+ const controller = web3_eth_abi_1.default.decodeParameter('address', subData[0]);
376
+ const weiRatio = web3_eth_abi_1.default.decodeParameter('uint256', subData[2]);
377
+ const targetRatio = (0, utils_1.weiToRatioPercentage)(weiRatio);
378
+ return { controller, targetRatio };
379
+ },
380
+ };