@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.
@@ -255,6 +255,40 @@ export const compoundV3LeverageManagementSubData = {
255
255
  },
256
256
  };
257
257
 
258
+ export const compoundV3L2LeverageManagementSubData = {
259
+ encode(
260
+ market: EthereumAddress,
261
+ baseToken: EthereumAddress,
262
+ triggerRepayRatio: number,
263
+ triggerBoostRatio: number,
264
+ targetBoostRatio: number,
265
+ targetRepayRatio: number,
266
+ boostEnabled: boolean,
267
+ ): string {
268
+ let subInput = '0x';
269
+
270
+ subInput = subInput.concat(market.slice(2).padStart(32, '0'));
271
+ subInput = subInput.concat(baseToken.slice(2).padStart(32, '0'));
272
+ subInput = subInput.concat(new Dec(triggerRepayRatio).mul(1e16).toHex().slice(2)
273
+ .padStart(32, '0'));
274
+ subInput = subInput.concat(new Dec(triggerBoostRatio).mul(1e16).toHex().slice(2)
275
+ .padStart(32, '0'));
276
+ subInput = subInput.concat(new Dec(targetBoostRatio).mul(1e16).toHex().slice(2)
277
+ .padStart(32, '0'));
278
+ subInput = subInput.concat(new Dec(targetRepayRatio).mul(1e16).toHex().slice(2)
279
+ .padStart(32, '0'));
280
+ subInput = subInput.concat(boostEnabled ? '01' : '00');
281
+
282
+ return subInput;
283
+ },
284
+ decode(subData: SubData): { targetRatio: number } {
285
+ const ratioWei = AbiCoder.decodeParameter('uint256', subData[3]) as any as string;
286
+ const targetRatio = weiToRatioPercentage(ratioWei);
287
+
288
+ return { targetRatio };
289
+ },
290
+ };
291
+
258
292
  export const morphoAaveV2LeverageManagementSubData = {
259
293
  encode(
260
294
  triggerRepayRatio: number,
@@ -452,3 +486,27 @@ export const liquityDebtInFrontRepaySubData = {
452
486
  return { targetRatioIncrease };
453
487
  },
454
488
  };
489
+
490
+ export const crvUSDLeverageManagementSubData = {
491
+ encode: (
492
+ controllerAddr: EthereumAddress,
493
+ ratioState: RatioState,
494
+ targetRatio: number,
495
+ collTokenAddr: EthereumAddress,
496
+ crvUSDAddr: EthereumAddress,
497
+ ) => {
498
+ const controllerAddrEncoded = AbiCoder.encodeParameter('address', controllerAddr);
499
+ const ratioStateEncoded = AbiCoder.encodeParameter('uint8', ratioState);
500
+ const targetRatioEncoded = AbiCoder.encodeParameter('uint256', ratioPercentageToWei(targetRatio));
501
+ const collTokenAddrEncoded = AbiCoder.encodeParameter('address', collTokenAddr);
502
+ const crvUSDAddrEncoded = AbiCoder.encodeParameter('address', crvUSDAddr);
503
+ return [controllerAddrEncoded, ratioStateEncoded, targetRatioEncoded, collTokenAddrEncoded, crvUSDAddrEncoded];
504
+ },
505
+ decode: (subData: SubData) => {
506
+ const controller = AbiCoder.decodeParameter('address', subData[0]) as unknown as EthereumAddress;
507
+ const weiRatio = AbiCoder.decodeParameter('uint256', subData[2]) as any as string;
508
+ const targetRatio = weiToRatioPercentage(weiRatio);
509
+
510
+ return { controller, targetRatio };
511
+ },
512
+ };
@@ -25,6 +25,7 @@ import {
25
25
  sparkRatioTrigger,
26
26
  trailingStopTrigger,
27
27
  liquityDebtInFrontWithLimitTrigger,
28
+ crvUSDRatioTrigger,
28
29
  } from './triggerService';
29
30
 
30
31
  describe('Feature: triggerService.ts', () => {
@@ -893,5 +894,41 @@ describe('Feature: triggerService.ts', () => {
893
894
  });
894
895
  });
895
896
  });
897
+ describe('When testing triggerService.crvUSDRatioTrigger', () => {
898
+ describe('encode()', () => {
899
+ const examples: Array<[[string], [owner: EthereumAddress, controller: EthereumAddress, ratioPercentage: number, ratioState: RatioState]]> = [
900
+ [
901
+ ['0x0000000000000000000000001031d218133afab8c2b819b1366c7e434ad91e9c000000000000000000000000a920de414ea4ab66b97da1bfe9e6eca7d421963500000000000000000000000000000000000000000000000010a741a4627800000000000000000000000000000000000000000000000000000000000000000001'],
902
+ [web3Utils.toChecksumAddress('0x1031d218133AFaB8c2B819B1366c7E434Ad91E9c'), web3Utils.toChecksumAddress('0xa920de414ea4ab66b97da1bfe9e6eca7d4219635'), 120, RatioState.UNDER]
903
+ ],
904
+ [
905
+ ['0x0000000000000000000000000043d218133afab8f2b829b106633e434ad94e2c000000000000000000000000a920de414ea4ab66b97da1bfe9e6eca7d42196350000000000000000000000000000000000000000000000001bc16d674ec800000000000000000000000000000000000000000000000000000000000000000000'],
906
+ [web3Utils.toChecksumAddress('0x0043d218133AFaB8F2B829B106633E434Ad94E2c'), web3Utils.toChecksumAddress('0xa920de414ea4ab66b97da1bfe9e6eca7d4219635'), 200, RatioState.OVER]
907
+ ],
908
+ ];
909
+ examples.forEach(([expected, actual]) => {
910
+ it(`Given ${actual} should return expected value: ${JSON.stringify(expected)}`, () => {
911
+ expect(crvUSDRatioTrigger.encode(...actual)).to.eql(expected);
912
+ });
913
+ });
914
+ });
915
+ describe('decode()', () => {
916
+ const examples: Array<[{ owner: EthereumAddress, controller: EthereumAddress, ratio: number, ratioState: RatioState }, TriggerData]> = [
917
+ [
918
+ { owner: web3Utils.toChecksumAddress('0x1031d218133AFaB8c2B819B1366c7E434Ad91E9c'), controller: web3Utils.toChecksumAddress('0xa920de414ea4ab66b97da1bfe9e6eca7d4219635'), ratio: 120, ratioState: RatioState.UNDER },
919
+ ['0x0000000000000000000000001031d218133afab8c2b819b1366c7e434ad91e9c000000000000000000000000a920de414ea4ab66b97da1bfe9e6eca7d421963500000000000000000000000000000000000000000000000010a741a4627800000000000000000000000000000000000000000000000000000000000000000001'],
920
+ ],
921
+ [
922
+ { owner: web3Utils.toChecksumAddress('0x0043d218133AFaB8F2B829B106633E434Ad94E2c'), controller: web3Utils.toChecksumAddress('0xa920de414ea4ab66b97da1bfe9e6eca7d4219635'), ratio: 200, ratioState: RatioState.OVER },
923
+ ['0x0000000000000000000000000043d218133afab8f2b829b106633e434ad94e2c000000000000000000000000a920de414ea4ab66b97da1bfe9e6eca7d42196350000000000000000000000000000000000000000000000001bc16d674ec800000000000000000000000000000000000000000000000000000000000000000000'],
924
+ ],
925
+ ];
896
926
 
927
+ examples.forEach(([expected, actual]) => {
928
+ it(`Given ${actual} should return expected value: ${JSON.stringify(expected)}`, () => {
929
+ expect(crvUSDRatioTrigger.decode(actual)).to.eql(expected);
930
+ });
931
+ });
932
+ });
933
+ });
897
934
  });
@@ -380,3 +380,27 @@ export const curveUsdSoftLiquidationTrigger = {
380
380
  };
381
381
  },
382
382
  };
383
+
384
+
385
+ export const crvUSDRatioTrigger = {
386
+ encode(
387
+ owner: EthereumAddress,
388
+ controller: EthereumAddress,
389
+ ratioPercentage: number,
390
+ ratioState: RatioState,
391
+ ) {
392
+ const ratioWei = ratioPercentageToWei(ratioPercentage);
393
+ return [AbiCoder.encodeParameters(['address', 'address', 'uint256', 'uint8'], [owner, controller, ratioWei, ratioState])];
394
+ },
395
+ decode(
396
+ triggerData: TriggerData,
397
+ ) {
398
+ const decodedData = AbiCoder.decodeParameters(['address', 'address', 'uint256', 'uint8'], triggerData[0]);
399
+ return {
400
+ owner: decodedData[0] as EthereumAddress,
401
+ controller: decodedData[1] as EthereumAddress,
402
+ ratio: weiToRatioPercentage(decodedData[2] as string),
403
+ ratioState: Number(decodedData[3]),
404
+ };
405
+ },
406
+ };
@@ -39,6 +39,7 @@ export namespace ProtocolIdentifiers {
39
39
  MorphoAaveV2 = 'Morpho-Aave__V2',
40
40
  Exchange = 'Exchange',
41
41
  Spark = 'Spark',
42
+ CrvUSD = 'CurveUSD',
42
43
  }
43
44
 
44
45
  export enum LegacyAutomation {
@@ -138,6 +139,8 @@ export namespace Bundles {
138
139
  AAVE_V2_BOOST = 23,
139
140
  COMP_V2_REPAY = 20,
140
141
  COMP_V2_BOOST = 21,
142
+ CRVUSD_REPAY = 26,
143
+ CRVUSD_BOOST = 27,
141
144
  }
142
145
 
143
146
  export enum OptimismIds {
@@ -152,6 +155,8 @@ export namespace Bundles {
152
155
  AAVE_V3_BOOST = 1,
153
156
  AAVE_V3_CLOSE_TO_DEBT = 2,
154
157
  AAVE_V3_CLOSE_TO_COLLATERAL = 3,
158
+ COMP_V3_SW_REPAY_BUNDLE = 4,
159
+ COMP_V3_SW_BOOST_BUNDLE = 5,
155
160
  }
156
161
  }
157
162
 
@@ -167,9 +167,14 @@ export declare namespace Position {
167
167
  debtInFrontMin: string,
168
168
  targetRepayRatioIncrease: number,
169
169
  }
170
+
171
+ interface LeverageManagementCrvUSD extends Base {
172
+ subHashBoost?: string,
173
+ subHashRepay?: string,
174
+ }
170
175
  }
171
176
 
172
- type SpecificAny = Specific.CloseOnPrice | Specific.TrailingStop | Specific.RatioProtection | Specific.CloseOnPriceAave | Specific.CloseOnPriceWithMaximumGasPriceAave | Specific.DebtInFrontRepay;
177
+ type SpecificAny = Specific.CloseOnPrice | Specific.TrailingStop | Specific.RatioProtection | Specific.CloseOnPriceAave | Specific.CloseOnPriceWithMaximumGasPriceAave | Specific.DebtInFrontRepay | Specific.LeverageManagementCrvUSD;
173
178
 
174
179
  export interface Automated {
175
180
  chainId: ChainId,
package/umd/index.js CHANGED
@@ -362,6 +362,16 @@ var MAINNET_BUNDLES_INFO = {
362
362
  strategyOrBundleId: _types_enums__WEBPACK_IMPORTED_MODULE_0__.Bundles.MainnetIds.COMP_V2_BOOST,
363
363
  strategyId: _types_enums__WEBPACK_IMPORTED_MODULE_0__.Strategies.Identifiers.Boost,
364
364
  protocol: PROTOCOLS.CompoundV2
365
+ },
366
+ [_types_enums__WEBPACK_IMPORTED_MODULE_0__.Bundles.MainnetIds.CRVUSD_REPAY]: {
367
+ strategyOrBundleId: _types_enums__WEBPACK_IMPORTED_MODULE_0__.Bundles.MainnetIds.CRVUSD_REPAY,
368
+ strategyId: _types_enums__WEBPACK_IMPORTED_MODULE_0__.Strategies.Identifiers.Repay,
369
+ protocol: PROTOCOLS.CrvUSD
370
+ },
371
+ [_types_enums__WEBPACK_IMPORTED_MODULE_0__.Bundles.MainnetIds.CRVUSD_BOOST]: {
372
+ strategyOrBundleId: _types_enums__WEBPACK_IMPORTED_MODULE_0__.Bundles.MainnetIds.CRVUSD_BOOST,
373
+ strategyId: _types_enums__WEBPACK_IMPORTED_MODULE_0__.Strategies.Identifiers.Boost,
374
+ protocol: PROTOCOLS.CrvUSD
365
375
  }
366
376
  };
367
377
  var OPTIMISM_BUNDLES_INFO = {
@@ -406,6 +416,16 @@ var ARBITRUM_BUNDLES_INFO = {
406
416
  strategyOrBundleId: _types_enums__WEBPACK_IMPORTED_MODULE_0__.Bundles.ArbitrumIds.AAVE_V3_CLOSE_TO_COLLATERAL,
407
417
  strategyId: _types_enums__WEBPACK_IMPORTED_MODULE_0__.Strategies.Identifiers.CloseToCollateral,
408
418
  protocol: PROTOCOLS.AaveV3
419
+ },
420
+ [_types_enums__WEBPACK_IMPORTED_MODULE_0__.Bundles.ArbitrumIds.COMP_V3_SW_BOOST_BUNDLE]: {
421
+ strategyOrBundleId: _types_enums__WEBPACK_IMPORTED_MODULE_0__.Bundles.ArbitrumIds.COMP_V3_SW_BOOST_BUNDLE,
422
+ strategyId: _types_enums__WEBPACK_IMPORTED_MODULE_0__.Strategies.Identifiers.Boost,
423
+ protocol: PROTOCOLS.CompoundV3
424
+ },
425
+ [_types_enums__WEBPACK_IMPORTED_MODULE_0__.Bundles.ArbitrumIds.COMP_V3_SW_REPAY_BUNDLE]: {
426
+ strategyOrBundleId: _types_enums__WEBPACK_IMPORTED_MODULE_0__.Bundles.ArbitrumIds.COMP_V3_SW_REPAY_BUNDLE,
427
+ strategyId: _types_enums__WEBPACK_IMPORTED_MODULE_0__.Strategies.Identifiers.Repay,
428
+ protocol: PROTOCOLS.CompoundV3
409
429
  }
410
430
  };
411
431
  var BUNDLES_INFO = {
@@ -478,6 +498,7 @@ var ProtocolIdentifiers;
478
498
  StrategiesAutomation["MorphoAaveV2"] = "Morpho-Aave__V2";
479
499
  StrategiesAutomation["Exchange"] = "Exchange";
480
500
  StrategiesAutomation["Spark"] = "Spark";
501
+ StrategiesAutomation["CrvUSD"] = "CurveUSD";
481
502
  })(StrategiesAutomation || (StrategiesAutomation = {}));
482
503
  _ProtocolIdentifiers.StrategiesAutomation = StrategiesAutomation;
483
504
  var LegacyAutomation;
@@ -587,6 +608,8 @@ var Bundles;
587
608
  MainnetIds[MainnetIds["AAVE_V2_BOOST"] = 23] = "AAVE_V2_BOOST";
588
609
  MainnetIds[MainnetIds["COMP_V2_REPAY"] = 20] = "COMP_V2_REPAY";
589
610
  MainnetIds[MainnetIds["COMP_V2_BOOST"] = 21] = "COMP_V2_BOOST";
611
+ MainnetIds[MainnetIds["CRVUSD_REPAY"] = 26] = "CRVUSD_REPAY";
612
+ MainnetIds[MainnetIds["CRVUSD_BOOST"] = 27] = "CRVUSD_BOOST";
590
613
  })(MainnetIds || (MainnetIds = {}));
591
614
  _Bundles.MainnetIds = MainnetIds;
592
615
  var OptimismIds;
@@ -603,6 +626,8 @@ var Bundles;
603
626
  ArbitrumIds[ArbitrumIds["AAVE_V3_BOOST"] = 1] = "AAVE_V3_BOOST";
604
627
  ArbitrumIds[ArbitrumIds["AAVE_V3_CLOSE_TO_DEBT"] = 2] = "AAVE_V3_CLOSE_TO_DEBT";
605
628
  ArbitrumIds[ArbitrumIds["AAVE_V3_CLOSE_TO_COLLATERAL"] = 3] = "AAVE_V3_CLOSE_TO_COLLATERAL";
629
+ ArbitrumIds[ArbitrumIds["COMP_V3_SW_REPAY_BUNDLE"] = 4] = "COMP_V3_SW_REPAY_BUNDLE";
630
+ ArbitrumIds[ArbitrumIds["COMP_V3_SW_BOOST_BUNDLE"] = 5] = "COMP_V3_SW_BOOST_BUNDLE";
606
631
  })(ArbitrumIds || (ArbitrumIds = {}));
607
632
  _Bundles.ArbitrumIds = ArbitrumIds;
608
633
  })(Bundles || (Bundles = {}));
@@ -1542,7 +1567,8 @@ class StrategiesAutomation extends _Automation__WEBPACK_IMPORTED_MODULE_6__["def
1542
1567
  if ((0,_services_utils__WEBPACK_IMPORTED_MODULE_2__.isDefined)(current)) {
1543
1568
  if (current.specific.mergeWithSameId) {
1544
1569
  var mergePairIndex = copyList.findIndex(s => s && s.specific.mergeWithSameId && s.owner === current.owner && s.strategy.strategyId === current.strategy.strategyId && s.protocol.id === current.protocol.id && (s.protocol.id !== _types_enums__WEBPACK_IMPORTED_MODULE_1__.ProtocolIdentifiers.StrategiesAutomation.MakerDAO // reflexer needs to get added if we have it
1545
- || s.strategyData.decoded.subData.vaultId === current.strategyData.decoded.triggerData.vaultId));
1570
+ || s.strategyData.decoded.subData.vaultId === current.strategyData.decoded.triggerData.vaultId) && (s.protocol.id !== _types_enums__WEBPACK_IMPORTED_MODULE_1__.ProtocolIdentifiers.StrategiesAutomation.CrvUSD // merge only crvUSD leverage management for the same market
1571
+ || s.strategyData.decoded.subData.controller.toLowerCase() === current.strategyData.decoded.triggerData.controller.toLowerCase()));
1546
1572
  if (mergePairIndex !== -1) {
1547
1573
  var mergePair = copyList[mergePairIndex];
1548
1574
  if ((0,_services_utils__WEBPACK_IMPORTED_MODULE_2__.isDefined)(mergePair)) {
@@ -1948,8 +1974,9 @@ function parseCompoundV3LeverageManagement(position, parseData) {
1948
1974
  var {
1949
1975
  isEnabled
1950
1976
  } = parseData.strategiesSubsData;
1977
+ var subDataDecoder = position.chainId !== 1 ? _subDataService__WEBPACK_IMPORTED_MODULE_5__.compoundV3L2LeverageManagementSubData : _subDataService__WEBPACK_IMPORTED_MODULE_5__.compoundV3LeverageManagementSubData;
1951
1978
  var triggerData = _triggerService__WEBPACK_IMPORTED_MODULE_6__.compoundV3RatioTrigger.decode(subStruct.triggerData);
1952
- var subData = _subDataService__WEBPACK_IMPORTED_MODULE_5__.compoundV3LeverageManagementSubData.decode(subStruct.subData);
1979
+ var subData = subDataDecoder.decode(subStruct.subData);
1953
1980
  _position.strategyData.decoded.triggerData = triggerData;
1954
1981
  _position.strategyData.decoded.subData = subData;
1955
1982
  _position.owner = triggerData.owner.toLowerCase();
@@ -2152,6 +2179,43 @@ function parseLiquityDebtInFrontRepay(position, parseData) {
2152
2179
  };
2153
2180
  return _position;
2154
2181
  }
2182
+ function parseCrvUSDLeverageManagement(position, parseData) {
2183
+ var _position = (0,lodash__WEBPACK_IMPORTED_MODULE_1__.cloneDeep)(position);
2184
+ var {
2185
+ subStruct,
2186
+ subId,
2187
+ subHash
2188
+ } = parseData.subscriptionEventData;
2189
+ var {
2190
+ isEnabled
2191
+ } = parseData.strategiesSubsData;
2192
+ var triggerData = _triggerService__WEBPACK_IMPORTED_MODULE_6__.crvUSDRatioTrigger.decode(subStruct.triggerData);
2193
+ var subData = _subDataService__WEBPACK_IMPORTED_MODULE_5__.crvUSDLeverageManagementSubData.decode(subStruct.subData);
2194
+ _position.strategyData.decoded.triggerData = triggerData;
2195
+ _position.strategyData.decoded.subData = subData;
2196
+ var isRepay = _position.strategy.strategyId === _types_enums__WEBPACK_IMPORTED_MODULE_3__.Strategies.Identifiers.Repay;
2197
+ if (isRepay) {
2198
+ _position.specific = {
2199
+ triggerRepayRatio: triggerData.ratio,
2200
+ targetRepayRatio: subData.targetRatio,
2201
+ repayEnabled: isEnabled,
2202
+ subId1: Number(subId),
2203
+ subHashRepay: subHash
2204
+ };
2205
+ } else {
2206
+ _position.specific = {
2207
+ triggerBoostRatio: triggerData.ratio,
2208
+ targetBoostRatio: subData.targetRatio,
2209
+ boostEnabled: isEnabled,
2210
+ subId2: Number(subId),
2211
+ subHashBoost: subHash
2212
+ };
2213
+ }
2214
+ _position.positionId = (0,_utils__WEBPACK_IMPORTED_MODULE_4__.getPositionId)(_position.chainId, _position.protocol.id, _position.owner, triggerData.controller);
2215
+ _position.strategy.strategyId = _types_enums__WEBPACK_IMPORTED_MODULE_3__.Strategies.IdOverrides.LeverageManagement;
2216
+ _position.specific.mergeWithSameId = true;
2217
+ return _position;
2218
+ }
2155
2219
  var parsingMethodsMapping = {
2156
2220
  [_types_enums__WEBPACK_IMPORTED_MODULE_3__.ProtocolIdentifiers.StrategiesAutomation.MakerDAO]: {
2157
2221
  [_types_enums__WEBPACK_IMPORTED_MODULE_3__.Strategies.Identifiers.SavingsLiqProtection]: parseMakerSavingsLiqProtection,
@@ -2210,6 +2274,10 @@ var parsingMethodsMapping = {
2210
2274
  [_types_enums__WEBPACK_IMPORTED_MODULE_3__.Strategies.Identifiers.Boost]: parseSparkLeverageManagement,
2211
2275
  [_types_enums__WEBPACK_IMPORTED_MODULE_3__.Strategies.Identifiers.CloseToDebt]: parseSparkCloseOnPrice,
2212
2276
  [_types_enums__WEBPACK_IMPORTED_MODULE_3__.Strategies.Identifiers.CloseToCollateral]: parseSparkCloseOnPrice
2277
+ },
2278
+ [_types_enums__WEBPACK_IMPORTED_MODULE_3__.ProtocolIdentifiers.StrategiesAutomation.CrvUSD]: {
2279
+ [_types_enums__WEBPACK_IMPORTED_MODULE_3__.Strategies.Identifiers.Repay]: parseCrvUSDLeverageManagement,
2280
+ [_types_enums__WEBPACK_IMPORTED_MODULE_3__.Strategies.Identifiers.Boost]: parseCrvUSDLeverageManagement
2213
2281
  }
2214
2282
  };
2215
2283
  function getParsingMethod(id, strategy) {
@@ -19481,7 +19549,9 @@ __webpack_require__.r(__webpack_exports__);
19481
19549
  /* harmony export */ aaveV3QuotePriceSubData: () => (/* binding */ aaveV3QuotePriceSubData),
19482
19550
  /* harmony export */ cBondsRebondSubData: () => (/* binding */ cBondsRebondSubData),
19483
19551
  /* harmony export */ compoundV2LeverageManagementSubData: () => (/* binding */ compoundV2LeverageManagementSubData),
19552
+ /* harmony export */ compoundV3L2LeverageManagementSubData: () => (/* binding */ compoundV3L2LeverageManagementSubData),
19484
19553
  /* harmony export */ compoundV3LeverageManagementSubData: () => (/* binding */ compoundV3LeverageManagementSubData),
19554
+ /* harmony export */ crvUSDLeverageManagementSubData: () => (/* binding */ crvUSDLeverageManagementSubData),
19485
19555
  /* harmony export */ exchangeDcaSubData: () => (/* binding */ exchangeDcaSubData),
19486
19556
  /* harmony export */ exchangeLimitOrderSubData: () => (/* binding */ exchangeLimitOrderSubData),
19487
19557
  /* harmony export */ liquityCloseSubData: () => (/* binding */ liquityCloseSubData),
@@ -19697,6 +19767,26 @@ var compoundV3LeverageManagementSubData = {
19697
19767
  };
19698
19768
  }
19699
19769
  };
19770
+ var compoundV3L2LeverageManagementSubData = {
19771
+ encode(market, baseToken, triggerRepayRatio, triggerBoostRatio, targetBoostRatio, targetRepayRatio, boostEnabled) {
19772
+ var subInput = '0x';
19773
+ subInput = subInput.concat(market.slice(2).padStart(32, '0'));
19774
+ subInput = subInput.concat(baseToken.slice(2).padStart(32, '0'));
19775
+ subInput = subInput.concat(new (decimal_js__WEBPACK_IMPORTED_MODULE_0___default())(triggerRepayRatio).mul(1e16).toHex().slice(2).padStart(32, '0'));
19776
+ subInput = subInput.concat(new (decimal_js__WEBPACK_IMPORTED_MODULE_0___default())(triggerBoostRatio).mul(1e16).toHex().slice(2).padStart(32, '0'));
19777
+ subInput = subInput.concat(new (decimal_js__WEBPACK_IMPORTED_MODULE_0___default())(targetBoostRatio).mul(1e16).toHex().slice(2).padStart(32, '0'));
19778
+ subInput = subInput.concat(new (decimal_js__WEBPACK_IMPORTED_MODULE_0___default())(targetRepayRatio).mul(1e16).toHex().slice(2).padStart(32, '0'));
19779
+ subInput = subInput.concat(boostEnabled ? '01' : '00');
19780
+ return subInput;
19781
+ },
19782
+ decode(subData) {
19783
+ var ratioWei = web3_eth_abi__WEBPACK_IMPORTED_MODULE_1___default().decodeParameter('uint256', subData[3]);
19784
+ var targetRatio = (0,_utils__WEBPACK_IMPORTED_MODULE_6__.weiToRatioPercentage)(ratioWei);
19785
+ return {
19786
+ targetRatio
19787
+ };
19788
+ }
19789
+ };
19700
19790
  var morphoAaveV2LeverageManagementSubData = {
19701
19791
  encode(triggerRepayRatio, triggerBoostRatio, targetBoostRatio, targetRepayRatio, boostEnabled) {
19702
19792
  return [(0,_utils__WEBPACK_IMPORTED_MODULE_6__.ratioPercentageToWei)(triggerRepayRatio), (0,_utils__WEBPACK_IMPORTED_MODULE_6__.ratioPercentageToWei)(triggerBoostRatio), (0,_utils__WEBPACK_IMPORTED_MODULE_6__.ratioPercentageToWei)(targetBoostRatio), (0,_utils__WEBPACK_IMPORTED_MODULE_6__.ratioPercentageToWei)(targetRepayRatio),
@@ -19871,6 +19961,25 @@ var liquityDebtInFrontRepaySubData = {
19871
19961
  };
19872
19962
  }
19873
19963
  };
19964
+ var crvUSDLeverageManagementSubData = {
19965
+ encode: (controllerAddr, ratioState, targetRatio, collTokenAddr, crvUSDAddr) => {
19966
+ var controllerAddrEncoded = web3_eth_abi__WEBPACK_IMPORTED_MODULE_1___default().encodeParameter('address', controllerAddr);
19967
+ var ratioStateEncoded = web3_eth_abi__WEBPACK_IMPORTED_MODULE_1___default().encodeParameter('uint8', ratioState);
19968
+ var targetRatioEncoded = web3_eth_abi__WEBPACK_IMPORTED_MODULE_1___default().encodeParameter('uint256', (0,_utils__WEBPACK_IMPORTED_MODULE_6__.ratioPercentageToWei)(targetRatio));
19969
+ var collTokenAddrEncoded = web3_eth_abi__WEBPACK_IMPORTED_MODULE_1___default().encodeParameter('address', collTokenAddr);
19970
+ var crvUSDAddrEncoded = web3_eth_abi__WEBPACK_IMPORTED_MODULE_1___default().encodeParameter('address', crvUSDAddr);
19971
+ return [controllerAddrEncoded, ratioStateEncoded, targetRatioEncoded, collTokenAddrEncoded, crvUSDAddrEncoded];
19972
+ },
19973
+ decode: subData => {
19974
+ var controller = web3_eth_abi__WEBPACK_IMPORTED_MODULE_1___default().decodeParameter('address', subData[0]);
19975
+ var weiRatio = web3_eth_abi__WEBPACK_IMPORTED_MODULE_1___default().decodeParameter('uint256', subData[2]);
19976
+ var targetRatio = (0,_utils__WEBPACK_IMPORTED_MODULE_6__.weiToRatioPercentage)(weiRatio);
19977
+ return {
19978
+ controller,
19979
+ targetRatio
19980
+ };
19981
+ }
19982
+ };
19874
19983
 
19875
19984
  /***/ }),
19876
19985
  /* 31 */
@@ -32792,6 +32901,7 @@ __webpack_require__.r(__webpack_exports__);
32792
32901
  /* harmony export */ chainlinkPriceTrigger: () => (/* binding */ chainlinkPriceTrigger),
32793
32902
  /* harmony export */ compoundV2RatioTrigger: () => (/* binding */ compoundV2RatioTrigger),
32794
32903
  /* harmony export */ compoundV3RatioTrigger: () => (/* binding */ compoundV3RatioTrigger),
32904
+ /* harmony export */ crvUSDRatioTrigger: () => (/* binding */ crvUSDRatioTrigger),
32795
32905
  /* harmony export */ curveUsdBorrowRateTrigger: () => (/* binding */ curveUsdBorrowRateTrigger),
32796
32906
  /* harmony export */ curveUsdSoftLiquidationTrigger: () => (/* binding */ curveUsdSoftLiquidationTrigger),
32797
32907
  /* harmony export */ exchangeOffchainPriceTrigger: () => (/* binding */ exchangeOffchainPriceTrigger),
@@ -33118,6 +33228,21 @@ var curveUsdSoftLiquidationTrigger = {
33118
33228
  };
33119
33229
  }
33120
33230
  };
33231
+ var crvUSDRatioTrigger = {
33232
+ encode(owner, controller, ratioPercentage, ratioState) {
33233
+ var ratioWei = (0,_utils__WEBPACK_IMPORTED_MODULE_4__.ratioPercentageToWei)(ratioPercentage);
33234
+ return [web3_eth_abi__WEBPACK_IMPORTED_MODULE_2___default().encodeParameters(['address', 'address', 'uint256', 'uint8'], [owner, controller, ratioWei, ratioState])];
33235
+ },
33236
+ decode(triggerData) {
33237
+ var decodedData = web3_eth_abi__WEBPACK_IMPORTED_MODULE_2___default().decodeParameters(['address', 'address', 'uint256', 'uint8'], triggerData[0]);
33238
+ return {
33239
+ owner: decodedData[0],
33240
+ controller: decodedData[1],
33241
+ ratio: (0,_utils__WEBPACK_IMPORTED_MODULE_4__.weiToRatioPercentage)(decodedData[2]),
33242
+ ratioState: Number(decodedData[3])
33243
+ };
33244
+ }
33245
+ };
33121
33246
 
33122
33247
  /***/ }),
33123
33248
  /* 318 */
@@ -33183,6 +33308,8 @@ __webpack_require__.r(__webpack_exports__);
33183
33308
  /* harmony export */ chickenBondsEncode: () => (/* binding */ chickenBondsEncode),
33184
33309
  /* harmony export */ compoundV2Encode: () => (/* binding */ compoundV2Encode),
33185
33310
  /* harmony export */ compoundV3Encode: () => (/* binding */ compoundV3Encode),
33311
+ /* harmony export */ compoundV3L2Encode: () => (/* binding */ compoundV3L2Encode),
33312
+ /* harmony export */ crvUSDEncode: () => (/* binding */ crvUSDEncode),
33186
33313
  /* harmony export */ exchangeEncode: () => (/* binding */ exchangeEncode),
33187
33314
  /* harmony export */ liquityEncode: () => (/* binding */ liquityEncode),
33188
33315
  /* harmony export */ makerEncode: () => (/* binding */ makerEncode),
@@ -33373,6 +33500,11 @@ var compoundV3Encode = {
33373
33500
  return _subDataService__WEBPACK_IMPORTED_MODULE_4__.compoundV3LeverageManagementSubData.encode(market, baseToken, triggerRepayRatio, triggerBoostRatio, targetBoostRatio, targetRepayRatio, boostEnabled, isEOA);
33374
33501
  }
33375
33502
  };
33503
+ var compoundV3L2Encode = {
33504
+ leverageManagement(market, baseToken, triggerRepayRatio, triggerBoostRatio, targetBoostRatio, targetRepayRatio, boostEnabled) {
33505
+ return _subDataService__WEBPACK_IMPORTED_MODULE_4__.compoundV3L2LeverageManagementSubData.encode(market, baseToken, triggerRepayRatio, triggerBoostRatio, targetBoostRatio, targetRepayRatio, boostEnabled);
33506
+ }
33507
+ };
33376
33508
  var morphoAaveV2Encode = {
33377
33509
  leverageManagement(triggerRepayRatio, triggerBoostRatio, targetBoostRatio, targetRepayRatio, boostEnabled) {
33378
33510
  return _subDataService__WEBPACK_IMPORTED_MODULE_4__.morphoAaveV2LeverageManagementSubData.encode(triggerRepayRatio, triggerBoostRatio, targetBoostRatio, targetRepayRatio, boostEnabled);
@@ -33421,6 +33553,17 @@ var sparkEncode = {
33421
33553
  return [strategyOrBundleId, isBundle, triggerDataEncoded, subDataEncoded];
33422
33554
  }
33423
33555
  };
33556
+ var crvUSDEncode = {
33557
+ leverageManagement(owner, controllerAddr, ratioState, targetRatio, triggerRatio, collTokenAddr, crvUSDAddr) {
33558
+ var subData = _subDataService__WEBPACK_IMPORTED_MODULE_4__.crvUSDLeverageManagementSubData.encode(controllerAddr, ratioState, targetRatio, collTokenAddr, crvUSDAddr);
33559
+ var triggerData = _triggerService__WEBPACK_IMPORTED_MODULE_5__.crvUSDRatioTrigger.encode(owner, controllerAddr, triggerRatio, ratioState);
33560
+
33561
+ // over is boost, under is repay
33562
+ var strategyOrBundleId = ratioState === _types_enums__WEBPACK_IMPORTED_MODULE_2__.RatioState.OVER ? _types_enums__WEBPACK_IMPORTED_MODULE_2__.Bundles.MainnetIds.CRVUSD_BOOST : _types_enums__WEBPACK_IMPORTED_MODULE_2__.Bundles.MainnetIds.CRVUSD_REPAY;
33563
+ var isBundle = true;
33564
+ return [strategyOrBundleId, isBundle, triggerData, subData];
33565
+ }
33566
+ };
33424
33567
 
33425
33568
  /***/ })
33426
33569
  /******/ ]);