@defisaver/automation-sdk 3.0.2 → 3.0.3

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.
@@ -90,6 +90,11 @@ exports.MAINNET_STRATEGIES_INFO = {
90
90
  strategyId: enums_1.Strategies.Identifiers.DebtInFrontRepay,
91
91
  protocol: exports.PROTOCOLS.Liquity,
92
92
  },
93
+ [enums_1.Strategies.MainnetIds.CURVEUSD_PAYBACK]: {
94
+ strategyOrBundleId: enums_1.Strategies.MainnetIds.CURVEUSD_PAYBACK,
95
+ strategyId: enums_1.Strategies.Identifiers.Payback,
96
+ protocol: exports.PROTOCOLS.CrvUSD,
97
+ },
93
98
  };
94
99
  exports.OPTIMISM_STRATEGIES_INFO = {
95
100
  [enums_1.Strategies.OptimismIds.EXCHANGE_DCA]: {
@@ -545,6 +545,17 @@ function parseCrvUSDLeverageManagement(position, parseData) {
545
545
  _position.strategy.strategyId = enums_1.Strategies.IdOverrides.LeverageManagement;
546
546
  return _position;
547
547
  }
548
+ function parseCrvUSDPayback(position, parseData) {
549
+ const _position = (0, lodash_1.cloneDeep)(position);
550
+ const { subStruct } = parseData.subscriptionEventData;
551
+ const triggerData = triggerService.crvUsdHealthRatioTrigger.decode(subStruct.triggerData);
552
+ const subData = subDataService.crvUSDPaybackSubData.decode(subStruct.subData);
553
+ _position.strategyData.decoded.triggerData = triggerData;
554
+ _position.strategyData.decoded.subData = subData;
555
+ _position.positionId = (0, utils_1.getPositionId)(_position.chainId, _position.protocol.id, _position.owner, triggerData.controller, Math.random());
556
+ _position.strategy.strategyId = enums_1.Strategies.Identifiers.Payback;
557
+ return _position;
558
+ }
548
559
  function parseMorphoBlueLeverageManagement(position, parseData) {
549
560
  const _position = (0, lodash_1.cloneDeep)(position);
550
561
  const { subStruct, subId, subHash } = parseData.subscriptionEventData;
@@ -640,6 +651,7 @@ const parsingMethodsMapping = {
640
651
  [enums_1.ProtocolIdentifiers.StrategiesAutomation.CrvUSD]: {
641
652
  [enums_1.Strategies.Identifiers.Repay]: parseCrvUSDLeverageManagement,
642
653
  [enums_1.Strategies.Identifiers.Boost]: parseCrvUSDLeverageManagement,
654
+ [enums_1.Strategies.Identifiers.Payback]: parseCrvUSDPayback,
643
655
  },
644
656
  [enums_1.ProtocolIdentifiers.StrategiesAutomation.MorphoBlue]: {
645
657
  [enums_1.Strategies.Identifiers.Repay]: parseMorphoBlueLeverageManagement,
@@ -80,6 +80,7 @@ export declare const sparkEncode: {
80
80
  };
81
81
  export declare const crvUSDEncode: {
82
82
  leverageManagement(owner: EthereumAddress, controllerAddr: EthereumAddress, ratioState: RatioState, targetRatio: number, triggerRatio: number, collTokenAddr: EthereumAddress, crvUSDAddr: EthereumAddress): (boolean | string[] | Bundles.MainnetIds)[];
83
+ payback(proxyAddress: EthereumAddress, addressToPullTokensFrom: EthereumAddress, positionOwner: EthereumAddress, paybackAmount: string, crvUSDAddr: EthereumAddress, controllerAddr: EthereumAddress, minHealthRatio: number): (boolean | string[] | Strategies.MainnetIds)[];
83
84
  };
84
85
  export declare const morphoBlueEncode: {
85
86
  leverageManagement(marketId: string, loanToken: EthereumAddress, collToken: EthereumAddress, oracle: EthereumAddress, irm: EthereumAddress, lltv: string, ratioState: RatioState, targetRatio: number, triggerRatio: number, user: EthereumAddress): (boolean | string[] | Bundles.MainnetIds)[];
@@ -232,6 +232,13 @@ exports.crvUSDEncode = {
232
232
  const isBundle = true;
233
233
  return [strategyOrBundleId, isBundle, triggerData, subData];
234
234
  },
235
+ payback(proxyAddress, addressToPullTokensFrom, positionOwner, paybackAmount, crvUSDAddr, controllerAddr, minHealthRatio) {
236
+ const subData = subDataService.crvUSDPaybackSubData.encode(controllerAddr, addressToPullTokensFrom, positionOwner, paybackAmount, crvUSDAddr);
237
+ const triggerData = triggerService.crvUsdHealthRatioTrigger.encode(proxyAddress, controllerAddr, minHealthRatio);
238
+ const strategyId = enums_1.Strategies.MainnetIds.CURVEUSD_PAYBACK;
239
+ const isBundle = false;
240
+ return [strategyId, isBundle, triggerData, subData];
241
+ },
235
242
  };
236
243
  exports.morphoBlueEncode = {
237
244
  leverageManagement(marketId, loanToken, collToken, oracle, irm, lltv, ratioState, targetRatio, triggerRatio, user) {
@@ -750,6 +750,40 @@ describe('Feature: strategySubService.ts', () => {
750
750
  });
751
751
  });
752
752
  });
753
+ describe('payback()', () => {
754
+ const examples = [
755
+ [
756
+ [
757
+ enums_1.Strategies.MainnetIds.CURVEUSD_PAYBACK,
758
+ false,
759
+ [
760
+ '0x0000000000000000000000007a2af22ba3276108cd331c8985ef9528e10a871a000000000000000000000000a920de414ea4ab66b97da1bfe9e6eca7d421963500000000000000000000000000000000000000000000000002c68af0bb140000',
761
+ ],
762
+ [
763
+ '0x000000000000000000000000a920de414ea4ab66b97da1bfe9e6eca7d4219635',
764
+ '0x000000000000000000000000dc0ad7a48088f1aa55d26f8b36f7c1e827ddd280',
765
+ '0x000000000000000000000000dc0ad7a48088f1aa55d26f8b36f7c1e827ddd280',
766
+ '0x00000000000000000000000000000000000000000000043c33c1937564800000',
767
+ '0x000000000000000000000000f939e0a03fb07f59a73314e73794be0e57ac1b4e'
768
+ ],
769
+ ],
770
+ [
771
+ web3Utils.toChecksumAddress('0x7a2af22ba3276108cd331c8985ef9528e10a871a'),
772
+ web3Utils.toChecksumAddress('0xDc0Ad7a48088f1AA55d26f8b36F7C1E827DdD280'),
773
+ web3Utils.toChecksumAddress('0xDc0Ad7a48088f1AA55d26f8b36F7C1E827DdD280'),
774
+ '20000',
775
+ '0xf939E0A03FB07F59A73314E73794Be0E57ac1b4E',
776
+ web3Utils.toChecksumAddress('0xA920De414eA4Ab66b97dA1bFE9e6EcA7d4219635'),
777
+ 20,
778
+ ]
779
+ ]
780
+ ];
781
+ examples.forEach(([expected, actual]) => {
782
+ it(`Given ${actual} should return expected value: ${JSON.stringify(expected)}`, () => {
783
+ (0, chai_1.expect)(strategySubService_1.crvUSDEncode.payback(...actual)).to.eql(expected);
784
+ });
785
+ });
786
+ });
753
787
  });
754
788
  describe('When testing strategySubService.morphoBlueEncode', () => {
755
789
  describe('leverageManagement()', () => {
@@ -158,6 +158,15 @@ export declare const crvUSDLeverageManagementSubData: {
158
158
  targetRatio: number;
159
159
  };
160
160
  };
161
+ export declare const crvUSDPaybackSubData: {
162
+ encode: (controllerAddr: EthereumAddress, addressToPullTokensFrom: EthereumAddress, positionOwner: EthereumAddress, paybackAmount: string, crvUSDAddr: EthereumAddress) => string[];
163
+ decode: (subData: string[]) => {
164
+ controller: string;
165
+ addressToPullTokensFrom: string;
166
+ positionOwner: string;
167
+ paybackAmount: string;
168
+ };
169
+ };
161
170
  export declare const morphoBlueLeverageManagementSubData: {
162
171
  encode: (loanToken: EthereumAddress, collToken: EthereumAddress, oracle: EthereumAddress, irm: EthereumAddress, lltv: string, ratioState: RatioState, targetRatio: number, user: EthereumAddress) => string[];
163
172
  decode: (subData: string[]) => {
@@ -3,9 +3,10 @@ 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.morphoBlueLeverageManagementSubData = 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;
6
+ 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.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
+ const web3_utils_1 = require("web3-utils");
9
10
  const tokens_1 = require("@defisaver/tokens");
10
11
  const sdk_1 = require("@defisaver/sdk");
11
12
  const enums_1 = require("../types/enums");
@@ -378,6 +379,35 @@ exports.crvUSDLeverageManagementSubData = {
378
379
  return { controller, targetRatio };
379
380
  },
380
381
  };
382
+ exports.crvUSDPaybackSubData = {
383
+ encode: (controllerAddr, addressToPullTokensFrom, positionOwner, paybackAmount, crvUSDAddr) => {
384
+ const controllerAddrEncoded = web3_eth_abi_1.default.encodeParameter('address', controllerAddr);
385
+ const addressToPullTokensFromEncoded = web3_eth_abi_1.default.encodeParameter('address', addressToPullTokensFrom);
386
+ const positionOwnerEncoded = web3_eth_abi_1.default.encodeParameter('address', positionOwner);
387
+ const paybackAmountEncoded = web3_eth_abi_1.default.encodeParameter('uint256', (0, web3_utils_1.toWei)(paybackAmount, 'ether'));
388
+ const crvUSDAddrEncoded = web3_eth_abi_1.default.encodeParameter('address', crvUSDAddr);
389
+ return [
390
+ controllerAddrEncoded,
391
+ addressToPullTokensFromEncoded,
392
+ positionOwnerEncoded,
393
+ paybackAmountEncoded,
394
+ crvUSDAddrEncoded,
395
+ ];
396
+ },
397
+ decode: (subData) => {
398
+ const controller = web3_eth_abi_1.default.decodeParameter('address', subData[0]);
399
+ const addressToPullTokensFrom = web3_eth_abi_1.default.decodeParameter('address', subData[1]);
400
+ const positionOwner = web3_eth_abi_1.default.decodeParameter('address', subData[2]);
401
+ const weiPaybackAmount = web3_eth_abi_1.default.decodeParameter('uint256', subData[3]);
402
+ const paybackAmount = (0, web3_utils_1.fromWei)(weiPaybackAmount, 'ether');
403
+ return {
404
+ controller,
405
+ addressToPullTokensFrom,
406
+ positionOwner,
407
+ paybackAmount,
408
+ };
409
+ },
410
+ };
381
411
  exports.morphoBlueLeverageManagementSubData = {
382
412
  encode: (loanToken, collToken, oracle, irm, lltv, ratioState, targetRatio, user) => {
383
413
  const loanTokenEncoded = web3_eth_abi_1.default.encodeParameter('address', loanToken);
@@ -1045,6 +1045,51 @@ describe('Feature: subDataService.ts', () => {
1045
1045
  });
1046
1046
  });
1047
1047
  });
1048
+ describe('When testing subDataService.crvUSDPaybackSubData', () => {
1049
+ describe('encode()', () => {
1050
+ const examples = [
1051
+ [
1052
+ [
1053
+ '0x000000000000000000000000a920de414ea4ab66b97da1bfe9e6eca7d4219635',
1054
+ '0x000000000000000000000000dc0ad7a48088f1aa55d26f8b36f7c1e827ddd280',
1055
+ '0x000000000000000000000000dc0ad7a48088f1aa55d26f8b36f7c1e827ddd280',
1056
+ '0x00000000000000000000000000000000000000000000043c33c1937564800000',
1057
+ '0x000000000000000000000000f939e0a03fb07f59a73314e73794be0e57ac1b4e',
1058
+ ],
1059
+ ['0xa920de414ea4ab66b97da1bfe9e6eca7d4219635', '0xDc0Ad7a48088f1AA55d26f8b36F7C1E827DdD280', '0xDc0Ad7a48088f1AA55d26f8b36F7C1E827DdD280', '20000', '0xf939E0A03FB07F59A73314E73794Be0E57ac1b4E'],
1060
+ ]
1061
+ ];
1062
+ examples.forEach(([expected, actual]) => {
1063
+ it(`Given ${actual} should return expected value: ${expected}`, () => {
1064
+ (0, chai_1.expect)(subDataService_1.crvUSDPaybackSubData.encode(...actual)).to.eql(expected);
1065
+ });
1066
+ });
1067
+ });
1068
+ describe('decode()', () => {
1069
+ const examples = [
1070
+ [
1071
+ {
1072
+ controller: '0xA920De414eA4Ab66b97dA1bFE9e6EcA7d4219635',
1073
+ addressToPullTokensFrom: '0xDc0Ad7a48088f1AA55d26f8b36F7C1E827DdD280',
1074
+ positionOwner: '0xDc0Ad7a48088f1AA55d26f8b36F7C1E827DdD280',
1075
+ paybackAmount: '20000'
1076
+ },
1077
+ [
1078
+ '0x000000000000000000000000a920de414ea4ab66b97da1bfe9e6eca7d4219635',
1079
+ '0x000000000000000000000000dc0ad7a48088f1aa55d26f8b36f7c1e827ddd280',
1080
+ '0x000000000000000000000000dc0ad7a48088f1aa55d26f8b36f7c1e827ddd280',
1081
+ '0x00000000000000000000000000000000000000000000043c33c1937564800000',
1082
+ '0x000000000000000000000000f939e0a03fb07f59a73314e73794be0e57ac1b4e',
1083
+ ]
1084
+ ]
1085
+ ];
1086
+ examples.forEach(([expected, actual]) => {
1087
+ it(`Given ${actual} should return expected value: ${JSON.stringify(expected)}`, () => {
1088
+ (0, chai_1.expect)(subDataService_1.crvUSDPaybackSubData.decode(actual)).to.eql(expected);
1089
+ });
1090
+ });
1091
+ });
1092
+ });
1048
1093
  describe('When testing subDataService.compoundV3L2LeverageManagementSubData', () => {
1049
1094
  describe('encode()', () => {
1050
1095
  const examples = [
@@ -172,6 +172,14 @@ export declare const crvUSDRatioTrigger: {
172
172
  ratioState: number;
173
173
  };
174
174
  };
175
+ export declare const crvUsdHealthRatioTrigger: {
176
+ encode(owner: EthereumAddress, controller: EthereumAddress, ratioPercentage: number): string[];
177
+ decode(triggerData: string[]): {
178
+ owner: string;
179
+ controller: string;
180
+ ratio: number;
181
+ };
182
+ };
175
183
  export declare const morphoBlueRatioTrigger: {
176
184
  encode(marketId: string, owner: EthereumAddress, ratioPercentage: number, ratioState: RatioState): string[];
177
185
  decode(triggerData: string[]): {
@@ -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.morphoBlueRatioTrigger = exports.crvUSDRatioTrigger = exports.curveUsdSoftLiquidationTrigger = exports.curveUsdBorrowRateTrigger = exports.sparkQuotePriceTrigger = exports.sparkRatioTrigger = exports.exchangeOffchainPriceTrigger = exports.exchangeTimestampTrigger = exports.compoundV3RatioTrigger = exports.cBondsRebondTrigger = exports.aaveV2RatioTrigger = 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.morphoBlueRatioTrigger = exports.crvUsdHealthRatioTrigger = exports.crvUSDRatioTrigger = exports.curveUsdSoftLiquidationTrigger = exports.curveUsdBorrowRateTrigger = exports.sparkQuotePriceTrigger = exports.sparkRatioTrigger = exports.exchangeOffchainPriceTrigger = exports.exchangeTimestampTrigger = exports.compoundV3RatioTrigger = exports.cBondsRebondTrigger = exports.aaveV2RatioTrigger = 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"));
@@ -335,6 +335,20 @@ exports.crvUSDRatioTrigger = {
335
335
  };
336
336
  },
337
337
  };
338
+ exports.crvUsdHealthRatioTrigger = {
339
+ encode(owner, controller, ratioPercentage) {
340
+ const ratioWei = (0, utils_1.ratioPercentageToWei)(ratioPercentage);
341
+ return [web3_eth_abi_1.default.encodeParameters(['address', 'address', 'uint256'], [owner, controller, ratioWei])];
342
+ },
343
+ decode(triggerData) {
344
+ const decodedData = web3_eth_abi_1.default.decodeParameters(['address', 'address', 'uint256'], triggerData[0]);
345
+ return {
346
+ owner: decodedData[0],
347
+ controller: decodedData[1],
348
+ ratio: (0, utils_1.weiToRatioPercentage)(decodedData[2]),
349
+ };
350
+ },
351
+ };
338
352
  exports.morphoBlueRatioTrigger = {
339
353
  encode(marketId, // bytes32
340
354
  owner, ratioPercentage, ratioState) {
@@ -859,6 +859,34 @@ describe('Feature: triggerService.ts', () => {
859
859
  });
860
860
  });
861
861
  });
862
+ describe('When testing triggerService.crvUsdHealthRatioTrigger', () => {
863
+ describe('encode()', () => {
864
+ const examples = [
865
+ [
866
+ ['0x0000000000000000000000007a2af22ba3276108cd331c8985ef9528e10a871a000000000000000000000000a920de414ea4ab66b97da1bfe9e6eca7d421963500000000000000000000000000000000000000000000000002c68af0bb140000'],
867
+ [web3Utils.toChecksumAddress('0x7a2af22ba3276108cd331c8985ef9528e10a871a'), web3Utils.toChecksumAddress('0xa920de414ea4ab66b97da1bfe9e6eca7d4219635'), 20]
868
+ ]
869
+ ];
870
+ examples.forEach(([expected, actual]) => {
871
+ it(`Given ${actual} should return expected value: ${JSON.stringify(expected)}`, () => {
872
+ (0, chai_1.expect)(triggerService_1.crvUsdHealthRatioTrigger.encode(...actual)).to.eql(expected);
873
+ });
874
+ });
875
+ });
876
+ describe('decode()', () => {
877
+ const examples = [
878
+ [
879
+ { owner: web3Utils.toChecksumAddress('0x7a2af22ba3276108cd331c8985ef9528e10a871a'), controller: web3Utils.toChecksumAddress('0xa920de414ea4ab66b97da1bfe9e6eca7d4219635'), ratio: 20 },
880
+ ['0x0000000000000000000000007a2af22ba3276108cd331c8985ef9528e10a871a000000000000000000000000a920de414ea4ab66b97da1bfe9e6eca7d421963500000000000000000000000000000000000000000000000002c68af0bb140000'],
881
+ ],
882
+ ];
883
+ examples.forEach(([expected, actual]) => {
884
+ it(`Given ${actual} should return expected value: ${JSON.stringify(expected)}`, () => {
885
+ (0, chai_1.expect)(triggerService_1.crvUsdHealthRatioTrigger.decode(actual)).to.eql(expected);
886
+ });
887
+ });
888
+ });
889
+ });
862
890
  describe('When testing triggerService.morphoBlueRatioTrigger', () => {
863
891
  describe('encode()', () => {
864
892
  const examples = [
@@ -58,7 +58,8 @@ export declare namespace Strategies {
58
58
  EXCHANGE_LIMIT_ORDER = 51,
59
59
  LIQUITY_DSR_PAYBACK = 69,
60
60
  LIQUITY_DSR_SUPPLY = 70,
61
- LIQUITY_DEBT_IN_FRONT_REPAY = 75
61
+ LIQUITY_DEBT_IN_FRONT_REPAY = 75,
62
+ CURVEUSD_PAYBACK = 92
62
63
  }
63
64
  enum OptimismIds {
64
65
  EXCHANGE_DCA = 8,
@@ -85,6 +86,7 @@ export declare namespace Strategies {
85
86
  TrailingStopToColl = "trailing-stop-to-collateral",
86
87
  TrailingStopToDebt = "trailing-stop-to-debt",
87
88
  Rebond = "rebond",
89
+ Payback = "payback",
88
90
  BondProtection = "bond-protection",
89
91
  Dca = "dca",
90
92
  LimitOrder = "limit-order",
@@ -71,6 +71,7 @@ var Strategies;
71
71
  MainnetIds[MainnetIds["LIQUITY_DSR_PAYBACK"] = 69] = "LIQUITY_DSR_PAYBACK";
72
72
  MainnetIds[MainnetIds["LIQUITY_DSR_SUPPLY"] = 70] = "LIQUITY_DSR_SUPPLY";
73
73
  MainnetIds[MainnetIds["LIQUITY_DEBT_IN_FRONT_REPAY"] = 75] = "LIQUITY_DEBT_IN_FRONT_REPAY";
74
+ MainnetIds[MainnetIds["CURVEUSD_PAYBACK"] = 92] = "CURVEUSD_PAYBACK";
74
75
  })(MainnetIds = Strategies.MainnetIds || (Strategies.MainnetIds = {}));
75
76
  let OptimismIds;
76
77
  (function (OptimismIds) {
@@ -100,6 +101,7 @@ var Strategies;
100
101
  Identifiers["TrailingStopToColl"] = "trailing-stop-to-collateral";
101
102
  Identifiers["TrailingStopToDebt"] = "trailing-stop-to-debt";
102
103
  Identifiers["Rebond"] = "rebond";
104
+ Identifiers["Payback"] = "payback";
103
105
  Identifiers["BondProtection"] = "bond-protection";
104
106
  Identifiers["Dca"] = "dca";
105
107
  Identifiers["LimitOrder"] = "limit-order";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@defisaver/automation-sdk",
3
- "version": "3.0.2",
3
+ "version": "3.0.3",
4
4
  "description": "",
5
5
  "main": "./umd/index.js",
6
6
  "module": "./esm/index.js",
@@ -95,6 +95,11 @@ export const MAINNET_STRATEGIES_INFO: MainnetStrategiesInfo = {
95
95
  strategyId: Strategies.Identifiers.DebtInFrontRepay,
96
96
  protocol: PROTOCOLS.Liquity,
97
97
  },
98
+ [Strategies.MainnetIds.CURVEUSD_PAYBACK]: {
99
+ strategyOrBundleId: Strategies.MainnetIds.CURVEUSD_PAYBACK,
100
+ strategyId: Strategies.Identifiers.Payback,
101
+ protocol: PROTOCOLS.CrvUSD,
102
+ },
98
103
  };
99
104
 
100
105
  export const OPTIMISM_STRATEGIES_INFO = {
@@ -721,6 +721,21 @@ function parseCrvUSDLeverageManagement(position: Position.Automated, parseData:
721
721
  return _position;
722
722
  }
723
723
 
724
+ function parseCrvUSDPayback(position: Position.Automated, parseData: ParseData): Position.Automated {
725
+ const _position = cloneDeep(position);
726
+
727
+ const { subStruct } = parseData.subscriptionEventData;
728
+ const triggerData = triggerService.crvUsdHealthRatioTrigger.decode(subStruct.triggerData);
729
+ const subData = subDataService.crvUSDPaybackSubData.decode(subStruct.subData);
730
+
731
+ _position.strategyData.decoded.triggerData = triggerData;
732
+ _position.strategyData.decoded.subData = subData;
733
+ _position.positionId = getPositionId(_position.chainId, _position.protocol.id, _position.owner, triggerData.controller, Math.random());
734
+ _position.strategy.strategyId = Strategies.Identifiers.Payback;
735
+
736
+ return _position;
737
+ }
738
+
724
739
  function parseMorphoBlueLeverageManagement(position: Position.Automated, parseData: ParseData): Position.Automated {
725
740
  const _position = cloneDeep(position);
726
741
 
@@ -823,6 +838,7 @@ const parsingMethodsMapping: StrategiesToProtocolVersionMapping = {
823
838
  [ProtocolIdentifiers.StrategiesAutomation.CrvUSD]: {
824
839
  [Strategies.Identifiers.Repay]: parseCrvUSDLeverageManagement,
825
840
  [Strategies.Identifiers.Boost]: parseCrvUSDLeverageManagement,
841
+ [Strategies.Identifiers.Payback]: parseCrvUSDPayback,
826
842
  },
827
843
  [ProtocolIdentifiers.StrategiesAutomation.MorphoBlue]: {
828
844
  [Strategies.Identifiers.Repay]: parseMorphoBlueLeverageManagement,
@@ -899,6 +899,44 @@ describe('Feature: strategySubService.ts', () => {
899
899
  });
900
900
  });
901
901
  });
902
+ describe('payback()', () => {
903
+ const examples: Array<[
904
+ [StrategyOrBundleIds, boolean, TriggerData, SubData],
905
+ [owner: EthereumAddress, addressToPullTokensFrom: EthereumAddress, positionOwner: EthereumAddress, paybackAmount: string, crvUSDAddr: EthereumAddress, controllerAddr: EthereumAddress, minHealthRatio: number],
906
+ ]> = [
907
+ [
908
+ [
909
+ Strategies.MainnetIds.CURVEUSD_PAYBACK,
910
+ false,
911
+ [
912
+ '0x0000000000000000000000007a2af22ba3276108cd331c8985ef9528e10a871a000000000000000000000000a920de414ea4ab66b97da1bfe9e6eca7d421963500000000000000000000000000000000000000000000000002c68af0bb140000',
913
+ ],
914
+ [
915
+ '0x000000000000000000000000a920de414ea4ab66b97da1bfe9e6eca7d4219635',
916
+ '0x000000000000000000000000dc0ad7a48088f1aa55d26f8b36f7c1e827ddd280',
917
+ '0x000000000000000000000000dc0ad7a48088f1aa55d26f8b36f7c1e827ddd280',
918
+ '0x00000000000000000000000000000000000000000000043c33c1937564800000',
919
+ '0x000000000000000000000000f939e0a03fb07f59a73314e73794be0e57ac1b4e'
920
+ ],
921
+ ],
922
+ [
923
+ web3Utils.toChecksumAddress('0x7a2af22ba3276108cd331c8985ef9528e10a871a'),
924
+ web3Utils.toChecksumAddress('0xDc0Ad7a48088f1AA55d26f8b36F7C1E827DdD280'),
925
+ web3Utils.toChecksumAddress('0xDc0Ad7a48088f1AA55d26f8b36F7C1E827DdD280'),
926
+ '20000',
927
+ '0xf939E0A03FB07F59A73314E73794Be0E57ac1b4E',
928
+ web3Utils.toChecksumAddress('0xA920De414eA4Ab66b97dA1bFE9e6EcA7d4219635'),
929
+ 20,
930
+ ]
931
+ ]
932
+ ];
933
+
934
+ examples.forEach(([expected, actual]) => {
935
+ it(`Given ${actual} should return expected value: ${JSON.stringify(expected)}`, () => {
936
+ expect(crvUSDEncode.payback(...actual)).to.eql(expected);
937
+ });
938
+ });
939
+ });
902
940
  });
903
941
  describe('When testing strategySubService.morphoBlueEncode', () => {
904
942
  describe('leverageManagement()', () => {
@@ -447,6 +447,23 @@ export const crvUSDEncode = {
447
447
 
448
448
  return [strategyOrBundleId, isBundle, triggerData, subData];
449
449
  },
450
+ payback(
451
+ proxyAddress: EthereumAddress,
452
+ addressToPullTokensFrom: EthereumAddress,
453
+ positionOwner: EthereumAddress,
454
+ paybackAmount: string,
455
+ crvUSDAddr: EthereumAddress,
456
+ controllerAddr: EthereumAddress,
457
+ minHealthRatio: number,
458
+ ) {
459
+ const subData = subDataService.crvUSDPaybackSubData.encode(controllerAddr, addressToPullTokensFrom, positionOwner, paybackAmount, crvUSDAddr);
460
+ const triggerData = triggerService.crvUsdHealthRatioTrigger.encode(proxyAddress, controllerAddr, minHealthRatio);
461
+
462
+ const strategyId = Strategies.MainnetIds.CURVEUSD_PAYBACK;
463
+ const isBundle = false;
464
+
465
+ return [strategyId, isBundle, triggerData, subData];
466
+ },
450
467
  };
451
468
 
452
469
  export const morphoBlueEncode = {
@@ -30,7 +30,7 @@ import {
30
30
  sparkLeverageManagementSubData,
31
31
  sparkQuotePriceSubData,
32
32
  crvUSDLeverageManagementSubData,
33
- compoundV3L2LeverageManagementSubData, morphoBlueLeverageManagementSubData,
33
+ compoundV3L2LeverageManagementSubData, morphoBlueLeverageManagementSubData, crvUSDPaybackSubData,
34
34
  } from './subDataService';
35
35
 
36
36
  describe('Feature: subDataService.ts', () => {
@@ -1125,6 +1125,58 @@ describe('Feature: subDataService.ts', () => {
1125
1125
  });
1126
1126
  });
1127
1127
 
1128
+ describe('When testing subDataService.crvUSDPaybackSubData', () => {
1129
+ describe('encode()', () => {
1130
+ const examples: Array<[SubData, [controller: EthereumAddress, addressToPullTokensFrom: EthereumAddress, positionOwner: EthereumAddress, paybackAmount: string, crvUSDAddr: EthereumAddress]]> = [
1131
+ [
1132
+ [
1133
+ '0x000000000000000000000000a920de414ea4ab66b97da1bfe9e6eca7d4219635',
1134
+ '0x000000000000000000000000dc0ad7a48088f1aa55d26f8b36f7c1e827ddd280',
1135
+ '0x000000000000000000000000dc0ad7a48088f1aa55d26f8b36f7c1e827ddd280',
1136
+ '0x00000000000000000000000000000000000000000000043c33c1937564800000',
1137
+ '0x000000000000000000000000f939e0a03fb07f59a73314e73794be0e57ac1b4e',
1138
+ ],
1139
+ ['0xa920de414ea4ab66b97da1bfe9e6eca7d4219635', '0xDc0Ad7a48088f1AA55d26f8b36F7C1E827DdD280', '0xDc0Ad7a48088f1AA55d26f8b36F7C1E827DdD280', '20000', '0xf939E0A03FB07F59A73314E73794Be0E57ac1b4E'],
1140
+ ]
1141
+ ];
1142
+ examples.forEach(([expected, actual]) => {
1143
+ it(`Given ${actual} should return expected value: ${expected}`, () => {
1144
+ expect(crvUSDPaybackSubData.encode(...actual)).to.eql(expected);
1145
+ });
1146
+ });
1147
+ });
1148
+ describe('decode()', () => {
1149
+ const examples: Array<[{
1150
+ controller: EthereumAddress,
1151
+ addressToPullTokensFrom: EthereumAddress,
1152
+ positionOwner: EthereumAddress,
1153
+ paybackAmount: string,
1154
+ }, SubData]> = [
1155
+ [
1156
+ {
1157
+ controller: '0xA920De414eA4Ab66b97dA1bFE9e6EcA7d4219635',
1158
+ addressToPullTokensFrom: '0xDc0Ad7a48088f1AA55d26f8b36F7C1E827DdD280',
1159
+ positionOwner: '0xDc0Ad7a48088f1AA55d26f8b36F7C1E827DdD280',
1160
+ paybackAmount: '20000'
1161
+ },
1162
+ [
1163
+ '0x000000000000000000000000a920de414ea4ab66b97da1bfe9e6eca7d4219635',
1164
+ '0x000000000000000000000000dc0ad7a48088f1aa55d26f8b36f7c1e827ddd280',
1165
+ '0x000000000000000000000000dc0ad7a48088f1aa55d26f8b36f7c1e827ddd280',
1166
+ '0x00000000000000000000000000000000000000000000043c33c1937564800000',
1167
+ '0x000000000000000000000000f939e0a03fb07f59a73314e73794be0e57ac1b4e',
1168
+ ]
1169
+ ]
1170
+ ];
1171
+
1172
+ examples.forEach(([expected, actual]) => {
1173
+ it(`Given ${actual} should return expected value: ${JSON.stringify(expected)}`, () => {
1174
+ expect(crvUSDPaybackSubData.decode(actual)).to.eql(expected);
1175
+ });
1176
+ });
1177
+ });
1178
+ });
1179
+
1128
1180
  describe('When testing subDataService.compoundV3L2LeverageManagementSubData', () => {
1129
1181
  describe('encode()', () => {
1130
1182
  const examples: Array<[
@@ -1,5 +1,7 @@
1
1
  import Dec from 'decimal.js';
2
2
  import AbiCoder from 'web3-eth-abi';
3
+ import { fromWei, toWei } from 'web3-utils';
4
+
3
5
  import { assetAmountInEth, getAssetInfo, getAssetInfoByAddress } from '@defisaver/tokens';
4
6
  import { otherAddresses } from '@defisaver/sdk';
5
7
 
@@ -511,6 +513,42 @@ export const crvUSDLeverageManagementSubData = {
511
513
  },
512
514
  };
513
515
 
516
+ export const crvUSDPaybackSubData = {
517
+ encode: (
518
+ controllerAddr: EthereumAddress,
519
+ addressToPullTokensFrom: EthereumAddress,
520
+ positionOwner: EthereumAddress,
521
+ paybackAmount: string,
522
+ crvUSDAddr: EthereumAddress,
523
+ ) => {
524
+ const controllerAddrEncoded = AbiCoder.encodeParameter('address', controllerAddr);
525
+ const addressToPullTokensFromEncoded = AbiCoder.encodeParameter('address', addressToPullTokensFrom);
526
+ const positionOwnerEncoded = AbiCoder.encodeParameter('address', positionOwner);
527
+ const paybackAmountEncoded = AbiCoder.encodeParameter('uint256', toWei(paybackAmount, 'ether'));
528
+ const crvUSDAddrEncoded = AbiCoder.encodeParameter('address', crvUSDAddr);
529
+ return [
530
+ controllerAddrEncoded,
531
+ addressToPullTokensFromEncoded,
532
+ positionOwnerEncoded,
533
+ paybackAmountEncoded,
534
+ crvUSDAddrEncoded,
535
+ ];
536
+ },
537
+ decode: (subData: SubData) => {
538
+ const controller = AbiCoder.decodeParameter('address', subData[0]) as unknown as EthereumAddress;
539
+ const addressToPullTokensFrom = AbiCoder.decodeParameter('address', subData[1]) as any as EthereumAddress;
540
+ const positionOwner = AbiCoder.decodeParameter('address', subData[2]) as any as EthereumAddress;
541
+ const weiPaybackAmount = AbiCoder.decodeParameter('uint256', subData[3]) as any as string;
542
+ const paybackAmount = fromWei(weiPaybackAmount, 'ether');
543
+ return {
544
+ controller,
545
+ addressToPullTokensFrom,
546
+ positionOwner,
547
+ paybackAmount,
548
+ };
549
+ },
550
+ };
551
+
514
552
  export const morphoBlueLeverageManagementSubData = {
515
553
  encode: (
516
554
  loanToken: EthereumAddress,
@@ -28,6 +28,7 @@ import {
28
28
  liquityDebtInFrontWithLimitTrigger,
29
29
  crvUSDRatioTrigger,
30
30
  morphoBlueRatioTrigger,
31
+ crvUsdHealthRatioTrigger,
31
32
  } from './triggerService';
32
33
 
33
34
  describe('Feature: triggerService.ts', () => {
@@ -934,6 +935,35 @@ describe('Feature: triggerService.ts', () => {
934
935
  });
935
936
  });
936
937
 
938
+ describe('When testing triggerService.crvUsdHealthRatioTrigger', () => {
939
+ describe('encode()', () => {
940
+ const examples: Array<[[string], [owner: EthereumAddress, controller: EthereumAddress, ratioPercentage: number]]> = [
941
+ [
942
+ ['0x0000000000000000000000007a2af22ba3276108cd331c8985ef9528e10a871a000000000000000000000000a920de414ea4ab66b97da1bfe9e6eca7d421963500000000000000000000000000000000000000000000000002c68af0bb140000'],
943
+ [web3Utils.toChecksumAddress('0x7a2af22ba3276108cd331c8985ef9528e10a871a'), web3Utils.toChecksumAddress('0xa920de414ea4ab66b97da1bfe9e6eca7d4219635'), 20]
944
+ ]
945
+ ];
946
+ examples.forEach(([expected, actual]) => {
947
+ it(`Given ${actual} should return expected value: ${JSON.stringify(expected)}`, () => {
948
+ expect(crvUsdHealthRatioTrigger.encode(...actual)).to.eql(expected);
949
+ });
950
+ });
951
+ });
952
+ describe('decode()', () => {
953
+ const examples: Array<[{ owner: EthereumAddress, controller: EthereumAddress, ratio: number }, TriggerData]> = [
954
+ [
955
+ { owner: web3Utils.toChecksumAddress('0x7a2af22ba3276108cd331c8985ef9528e10a871a'), controller: web3Utils.toChecksumAddress('0xa920de414ea4ab66b97da1bfe9e6eca7d4219635'), ratio: 20 },
956
+ ['0x0000000000000000000000007a2af22ba3276108cd331c8985ef9528e10a871a000000000000000000000000a920de414ea4ab66b97da1bfe9e6eca7d421963500000000000000000000000000000000000000000000000002c68af0bb140000'],
957
+ ],
958
+ ];
959
+ examples.forEach(([expected, actual]) => {
960
+ it(`Given ${actual} should return expected value: ${JSON.stringify(expected)}`, () => {
961
+ expect(crvUsdHealthRatioTrigger.decode(actual)).to.eql(expected);
962
+ });
963
+ });
964
+ });
965
+ });
966
+
937
967
  describe('When testing triggerService.morphoBlueRatioTrigger', () => {
938
968
  describe('encode()', () => {
939
969
  const examples: Array<[[string], [marketId: string, owner: EthereumAddress, ratioPercentage: number, ratioState: RatioState]]> = [
@@ -381,7 +381,6 @@ export const curveUsdSoftLiquidationTrigger = {
381
381
  },
382
382
  };
383
383
 
384
-
385
384
  export const crvUSDRatioTrigger = {
386
385
  encode(
387
386
  owner: EthereumAddress,
@@ -405,6 +404,27 @@ export const crvUSDRatioTrigger = {
405
404
  },
406
405
  };
407
406
 
407
+ export const crvUsdHealthRatioTrigger = {
408
+ encode(
409
+ owner: EthereumAddress,
410
+ controller: EthereumAddress,
411
+ ratioPercentage: number,
412
+ ) {
413
+ const ratioWei = ratioPercentageToWei(ratioPercentage);
414
+ return [AbiCoder.encodeParameters(['address', 'address', 'uint256'], [owner, controller, ratioWei])];
415
+ },
416
+ decode(
417
+ triggerData: TriggerData,
418
+ ) {
419
+ const decodedData = AbiCoder.decodeParameters(['address', 'address', 'uint256'], triggerData[0]);
420
+ return {
421
+ owner: decodedData[0] as EthereumAddress,
422
+ controller: decodedData[1] as EthereumAddress,
423
+ ratio: weiToRatioPercentage(decodedData[2] as string),
424
+ };
425
+ },
426
+ };
427
+
408
428
  export const morphoBlueRatioTrigger = {
409
429
  encode(
410
430
  marketId: string, // bytes32
@@ -65,6 +65,7 @@ export namespace Strategies {
65
65
  LIQUITY_DSR_PAYBACK = 69,
66
66
  LIQUITY_DSR_SUPPLY = 70,
67
67
  LIQUITY_DEBT_IN_FRONT_REPAY = 75,
68
+ CURVEUSD_PAYBACK = 92,
68
69
  }
69
70
 
70
71
  export enum OptimismIds {
@@ -94,6 +95,7 @@ export namespace Strategies {
94
95
  TrailingStopToColl = 'trailing-stop-to-collateral',
95
96
  TrailingStopToDebt = 'trailing-stop-to-debt',
96
97
  Rebond = 'rebond',
98
+ Payback = 'payback',
97
99
  BondProtection = 'bond-protection',
98
100
  Dca = 'dca',
99
101
  LimitOrder = 'limit-order',
package/umd/index.js CHANGED
@@ -178,6 +178,11 @@ var MAINNET_STRATEGIES_INFO = {
178
178
  strategyOrBundleId: _types_enums__WEBPACK_IMPORTED_MODULE_0__.Strategies.MainnetIds.LIQUITY_DEBT_IN_FRONT_REPAY,
179
179
  strategyId: _types_enums__WEBPACK_IMPORTED_MODULE_0__.Strategies.Identifiers.DebtInFrontRepay,
180
180
  protocol: PROTOCOLS.Liquity
181
+ },
182
+ [_types_enums__WEBPACK_IMPORTED_MODULE_0__.Strategies.MainnetIds.CURVEUSD_PAYBACK]: {
183
+ strategyOrBundleId: _types_enums__WEBPACK_IMPORTED_MODULE_0__.Strategies.MainnetIds.CURVEUSD_PAYBACK,
184
+ strategyId: _types_enums__WEBPACK_IMPORTED_MODULE_0__.Strategies.Identifiers.Payback,
185
+ protocol: PROTOCOLS.CrvUSD
181
186
  }
182
187
  };
183
188
  var OPTIMISM_STRATEGIES_INFO = {
@@ -537,6 +542,7 @@ var Strategies;
537
542
  MainnetIds[MainnetIds["LIQUITY_DSR_PAYBACK"] = 69] = "LIQUITY_DSR_PAYBACK";
538
543
  MainnetIds[MainnetIds["LIQUITY_DSR_SUPPLY"] = 70] = "LIQUITY_DSR_SUPPLY";
539
544
  MainnetIds[MainnetIds["LIQUITY_DEBT_IN_FRONT_REPAY"] = 75] = "LIQUITY_DEBT_IN_FRONT_REPAY";
545
+ MainnetIds[MainnetIds["CURVEUSD_PAYBACK"] = 92] = "CURVEUSD_PAYBACK";
540
546
  })(MainnetIds || (MainnetIds = {}));
541
547
  _Strategies.MainnetIds = MainnetIds;
542
548
  var OptimismIds;
@@ -569,6 +575,7 @@ var Strategies;
569
575
  Identifiers["TrailingStopToColl"] = "trailing-stop-to-collateral";
570
576
  Identifiers["TrailingStopToDebt"] = "trailing-stop-to-debt";
571
577
  Identifiers["Rebond"] = "rebond";
578
+ Identifiers["Payback"] = "payback";
572
579
  Identifiers["BondProtection"] = "bond-protection";
573
580
  Identifiers["Dca"] = "dca";
574
581
  Identifiers["LimitOrder"] = "limit-order";
@@ -2253,6 +2260,19 @@ function parseCrvUSDLeverageManagement(position, parseData) {
2253
2260
  _position.strategy.strategyId = _types_enums__WEBPACK_IMPORTED_MODULE_3__.Strategies.IdOverrides.LeverageManagement;
2254
2261
  return _position;
2255
2262
  }
2263
+ function parseCrvUSDPayback(position, parseData) {
2264
+ var _position = (0,lodash__WEBPACK_IMPORTED_MODULE_1__.cloneDeep)(position);
2265
+ var {
2266
+ subStruct
2267
+ } = parseData.subscriptionEventData;
2268
+ var triggerData = _triggerService__WEBPACK_IMPORTED_MODULE_6__.crvUsdHealthRatioTrigger.decode(subStruct.triggerData);
2269
+ var subData = _subDataService__WEBPACK_IMPORTED_MODULE_5__.crvUSDPaybackSubData.decode(subStruct.subData);
2270
+ _position.strategyData.decoded.triggerData = triggerData;
2271
+ _position.strategyData.decoded.subData = subData;
2272
+ _position.positionId = (0,_utils__WEBPACK_IMPORTED_MODULE_4__.getPositionId)(_position.chainId, _position.protocol.id, _position.owner, triggerData.controller, Math.random());
2273
+ _position.strategy.strategyId = _types_enums__WEBPACK_IMPORTED_MODULE_3__.Strategies.Identifiers.Payback;
2274
+ return _position;
2275
+ }
2256
2276
  function parseMorphoBlueLeverageManagement(position, parseData) {
2257
2277
  var _position = (0,lodash__WEBPACK_IMPORTED_MODULE_1__.cloneDeep)(position);
2258
2278
  var {
@@ -2352,7 +2372,8 @@ var parsingMethodsMapping = {
2352
2372
  },
2353
2373
  [_types_enums__WEBPACK_IMPORTED_MODULE_3__.ProtocolIdentifiers.StrategiesAutomation.CrvUSD]: {
2354
2374
  [_types_enums__WEBPACK_IMPORTED_MODULE_3__.Strategies.Identifiers.Repay]: parseCrvUSDLeverageManagement,
2355
- [_types_enums__WEBPACK_IMPORTED_MODULE_3__.Strategies.Identifiers.Boost]: parseCrvUSDLeverageManagement
2375
+ [_types_enums__WEBPACK_IMPORTED_MODULE_3__.Strategies.Identifiers.Boost]: parseCrvUSDLeverageManagement,
2376
+ [_types_enums__WEBPACK_IMPORTED_MODULE_3__.Strategies.Identifiers.Payback]: parseCrvUSDPayback
2356
2377
  },
2357
2378
  [_types_enums__WEBPACK_IMPORTED_MODULE_3__.ProtocolIdentifiers.StrategiesAutomation.MorphoBlue]: {
2358
2379
  [_types_enums__WEBPACK_IMPORTED_MODULE_3__.Strategies.Identifiers.Repay]: parseMorphoBlueLeverageManagement,
@@ -19631,6 +19652,7 @@ __webpack_require__.r(__webpack_exports__);
19631
19652
  /* harmony export */ compoundV3L2LeverageManagementSubData: () => (/* binding */ compoundV3L2LeverageManagementSubData),
19632
19653
  /* harmony export */ compoundV3LeverageManagementSubData: () => (/* binding */ compoundV3LeverageManagementSubData),
19633
19654
  /* harmony export */ crvUSDLeverageManagementSubData: () => (/* binding */ crvUSDLeverageManagementSubData),
19655
+ /* harmony export */ crvUSDPaybackSubData: () => (/* binding */ crvUSDPaybackSubData),
19634
19656
  /* harmony export */ exchangeDcaSubData: () => (/* binding */ exchangeDcaSubData),
19635
19657
  /* harmony export */ exchangeLimitOrderSubData: () => (/* binding */ exchangeLimitOrderSubData),
19636
19658
  /* harmony export */ liquityCloseSubData: () => (/* binding */ liquityCloseSubData),
@@ -19652,12 +19674,15 @@ __webpack_require__.r(__webpack_exports__);
19652
19674
  /* harmony import */ var decimal_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(decimal_js__WEBPACK_IMPORTED_MODULE_0__);
19653
19675
  /* harmony import */ var web3_eth_abi__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(19);
19654
19676
  /* harmony import */ var web3_eth_abi__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(web3_eth_abi__WEBPACK_IMPORTED_MODULE_1__);
19655
- /* harmony import */ var _defisaver_tokens__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(20);
19656
- /* harmony import */ var _defisaver_tokens__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_defisaver_tokens__WEBPACK_IMPORTED_MODULE_2__);
19657
- /* harmony import */ var _defisaver_sdk__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(31);
19658
- /* harmony import */ var _types_enums__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(5);
19659
- /* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(4);
19660
- /* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(17);
19677
+ /* harmony import */ var web3_utils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(18);
19678
+ /* harmony import */ var web3_utils__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(web3_utils__WEBPACK_IMPORTED_MODULE_2__);
19679
+ /* harmony import */ var _defisaver_tokens__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(20);
19680
+ /* harmony import */ var _defisaver_tokens__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_defisaver_tokens__WEBPACK_IMPORTED_MODULE_3__);
19681
+ /* harmony import */ var _defisaver_sdk__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(31);
19682
+ /* harmony import */ var _types_enums__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(5);
19683
+ /* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(4);
19684
+ /* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(17);
19685
+
19661
19686
 
19662
19687
 
19663
19688
 
@@ -19667,11 +19692,11 @@ __webpack_require__.r(__webpack_exports__);
19667
19692
 
19668
19693
  var makerRepayFromSavingsSubData = {
19669
19694
  encode(vaultId, targetRatioPercentage, chainId, daiAddr, mcdCdpManagerAddr) {
19670
- var _daiAddr = daiAddr || (0,_defisaver_tokens__WEBPACK_IMPORTED_MODULE_2__.getAssetInfo)('DAI', chainId).address;
19695
+ var _daiAddr = daiAddr || (0,_defisaver_tokens__WEBPACK_IMPORTED_MODULE_3__.getAssetInfo)('DAI', chainId).address;
19671
19696
  // @ts-ignore // TODO - this requires change in @defisaver/tokens
19672
- var _mcdCdpManagerAddr = mcdCdpManagerAddr || (0,_defisaver_sdk__WEBPACK_IMPORTED_MODULE_3__.otherAddresses)(chainId).McdCdpManager;
19697
+ var _mcdCdpManagerAddr = mcdCdpManagerAddr || (0,_defisaver_sdk__WEBPACK_IMPORTED_MODULE_4__.otherAddresses)(chainId).McdCdpManager;
19673
19698
  var vaultIdEncoded = web3_eth_abi__WEBPACK_IMPORTED_MODULE_1___default().encodeParameter('uint256', vaultId.toString());
19674
- var targetRatioWei = (0,_utils__WEBPACK_IMPORTED_MODULE_6__.ratioPercentageToWei)(targetRatioPercentage);
19699
+ var targetRatioWei = (0,_utils__WEBPACK_IMPORTED_MODULE_7__.ratioPercentageToWei)(targetRatioPercentage);
19675
19700
  var targetRatioEncoded = web3_eth_abi__WEBPACK_IMPORTED_MODULE_1___default().encodeParameter('uint256', targetRatioWei);
19676
19701
  var daiAddrEncoded = web3_eth_abi__WEBPACK_IMPORTED_MODULE_1___default().encodeParameter('address', _daiAddr);
19677
19702
  var mcdManagerAddrEncoded = web3_eth_abi__WEBPACK_IMPORTED_MODULE_1___default().encodeParameter('address', _mcdCdpManagerAddr);
@@ -19680,7 +19705,7 @@ var makerRepayFromSavingsSubData = {
19680
19705
  decode(subData) {
19681
19706
  var vaultId = +web3_eth_abi__WEBPACK_IMPORTED_MODULE_1___default().decodeParameter('uint256', subData[0]).toString();
19682
19707
  var weiRatio = web3_eth_abi__WEBPACK_IMPORTED_MODULE_1___default().decodeParameter('uint256', subData[1]);
19683
- var targetRatio = (0,_utils__WEBPACK_IMPORTED_MODULE_6__.weiToRatioPercentage)(weiRatio);
19708
+ var targetRatio = (0,_utils__WEBPACK_IMPORTED_MODULE_7__.weiToRatioPercentage)(weiRatio);
19684
19709
  var daiAddr = web3_eth_abi__WEBPACK_IMPORTED_MODULE_1___default().decodeParameter('address', subData[2]).toString();
19685
19710
  var mcdManagerAddr = web3_eth_abi__WEBPACK_IMPORTED_MODULE_1___default().decodeParameter('address', subData[3]).toString();
19686
19711
  return {
@@ -19694,7 +19719,7 @@ var makerRepayFromSavingsSubData = {
19694
19719
  var liquityRepayFromSavingsSubData = {
19695
19720
  decode(subData) {
19696
19721
  var weiRatio = web3_eth_abi__WEBPACK_IMPORTED_MODULE_1___default().decodeParameter('uint256', subData[1]);
19697
- var targetRatio = (0,_utils__WEBPACK_IMPORTED_MODULE_6__.weiToRatioPercentage)(weiRatio);
19722
+ var targetRatio = (0,_utils__WEBPACK_IMPORTED_MODULE_7__.weiToRatioPercentage)(weiRatio);
19698
19723
  return {
19699
19724
  targetRatio
19700
19725
  };
@@ -19702,13 +19727,13 @@ var liquityRepayFromSavingsSubData = {
19702
19727
  };
19703
19728
  var makerCloseSubData = {
19704
19729
  encode(vaultId, closeToAssetAddr, chainId, daiAddr, mcdCdpManagerAddr) {
19705
- var _daiAddr = daiAddr || (0,_defisaver_tokens__WEBPACK_IMPORTED_MODULE_2__.getAssetInfo)('DAI', chainId).address;
19730
+ var _daiAddr = daiAddr || (0,_defisaver_tokens__WEBPACK_IMPORTED_MODULE_3__.getAssetInfo)('DAI', chainId).address;
19706
19731
  // @ts-ignore // TODO - this requires change in @defisaver/tokens
19707
- var _mcdCdpManagerAddr = mcdCdpManagerAddr || (0,_defisaver_sdk__WEBPACK_IMPORTED_MODULE_3__.otherAddresses)(chainId).McdCdpManager;
19732
+ var _mcdCdpManagerAddr = mcdCdpManagerAddr || (0,_defisaver_sdk__WEBPACK_IMPORTED_MODULE_4__.otherAddresses)(chainId).McdCdpManager;
19708
19733
  var vaultIdEncoded = web3_eth_abi__WEBPACK_IMPORTED_MODULE_1___default().encodeParameter('uint256', vaultId.toString());
19709
19734
  var daiAddrEncoded = web3_eth_abi__WEBPACK_IMPORTED_MODULE_1___default().encodeParameter('address', _daiAddr);
19710
19735
  var mcdManagerAddrEncoded = web3_eth_abi__WEBPACK_IMPORTED_MODULE_1___default().encodeParameter('address', _mcdCdpManagerAddr);
19711
- if ((0,_utils__WEBPACK_IMPORTED_MODULE_6__.compareAddresses)(closeToAssetAddr, _daiAddr)) {
19736
+ if ((0,_utils__WEBPACK_IMPORTED_MODULE_7__.compareAddresses)(closeToAssetAddr, _daiAddr)) {
19712
19737
  // Close to DAI strategy
19713
19738
  return [vaultIdEncoded, daiAddrEncoded, mcdManagerAddrEncoded];
19714
19739
  }
@@ -19731,7 +19756,7 @@ var makerLeverageManagementSubData = {
19731
19756
  decode: subData => {
19732
19757
  var vaultId = +web3_eth_abi__WEBPACK_IMPORTED_MODULE_1___default().decodeParameter('uint256', subData[0]).toString();
19733
19758
  var weiRatio = web3_eth_abi__WEBPACK_IMPORTED_MODULE_1___default().decodeParameter('uint256', subData[1]);
19734
- var targetRatio = (0,_utils__WEBPACK_IMPORTED_MODULE_6__.weiToRatioPercentage)(weiRatio);
19759
+ var targetRatio = (0,_utils__WEBPACK_IMPORTED_MODULE_7__.weiToRatioPercentage)(weiRatio);
19735
19760
  return {
19736
19761
  vaultId,
19737
19762
  targetRatio
@@ -19741,7 +19766,7 @@ var makerLeverageManagementSubData = {
19741
19766
  var liquityLeverageManagementSubData = {
19742
19767
  decode: subData => {
19743
19768
  var weiRatio = web3_eth_abi__WEBPACK_IMPORTED_MODULE_1___default().decodeParameter('uint256', subData[1]);
19744
- var targetRatio = (0,_utils__WEBPACK_IMPORTED_MODULE_6__.weiToRatioPercentage)(weiRatio);
19769
+ var targetRatio = (0,_utils__WEBPACK_IMPORTED_MODULE_7__.weiToRatioPercentage)(weiRatio);
19745
19770
  return {
19746
19771
  targetRatio
19747
19772
  };
@@ -19749,11 +19774,11 @@ var liquityLeverageManagementSubData = {
19749
19774
  };
19750
19775
  var liquityCloseSubData = {
19751
19776
  encode(closeToAssetAddr) {
19752
- var chainId = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : _types_enums__WEBPACK_IMPORTED_MODULE_4__.ChainId.Ethereum;
19777
+ var chainId = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : _types_enums__WEBPACK_IMPORTED_MODULE_5__.ChainId.Ethereum;
19753
19778
  var collAddr = arguments.length > 2 ? arguments[2] : undefined;
19754
19779
  var debtAddr = arguments.length > 3 ? arguments[3] : undefined;
19755
- var _collAddr = collAddr || (0,_defisaver_tokens__WEBPACK_IMPORTED_MODULE_2__.getAssetInfo)('WETH', chainId).address;
19756
- var _debtAddr = debtAddr || (0,_defisaver_tokens__WEBPACK_IMPORTED_MODULE_2__.getAssetInfo)('LUSD', chainId).address;
19780
+ var _collAddr = collAddr || (0,_defisaver_tokens__WEBPACK_IMPORTED_MODULE_3__.getAssetInfo)('WETH', chainId).address;
19781
+ var _debtAddr = debtAddr || (0,_defisaver_tokens__WEBPACK_IMPORTED_MODULE_3__.getAssetInfo)('LUSD', chainId).address;
19757
19782
  var collAddrEncoded = web3_eth_abi__WEBPACK_IMPORTED_MODULE_1___default().encodeParameter('address', _collAddr);
19758
19783
  var debtAddrEncoded = web3_eth_abi__WEBPACK_IMPORTED_MODULE_1___default().encodeParameter('address', _debtAddr);
19759
19784
  // if (compareAddresses(closeToAssetAddr, _debtAddr)) { // Closing to debt strategy was not implemented, but it should be in the future
@@ -19780,7 +19805,7 @@ var aaveV2LeverageManagementSubData = {
19780
19805
  },
19781
19806
  decode(subData) {
19782
19807
  var ratioWei = web3_eth_abi__WEBPACK_IMPORTED_MODULE_1___default().decodeParameter('uint256', subData[1]);
19783
- var targetRatio = (0,_utils__WEBPACK_IMPORTED_MODULE_6__.weiToRatioPercentage)(ratioWei);
19808
+ var targetRatio = (0,_utils__WEBPACK_IMPORTED_MODULE_7__.weiToRatioPercentage)(ratioWei);
19784
19809
  return {
19785
19810
  targetRatio
19786
19811
  };
@@ -19790,7 +19815,7 @@ var aaveV3LeverageManagementSubData = {
19790
19815
  // TODO encode?
19791
19816
  decode(subData) {
19792
19817
  var ratioWei = web3_eth_abi__WEBPACK_IMPORTED_MODULE_1___default().decodeParameter('uint256', subData[0]);
19793
- var targetRatio = (0,_utils__WEBPACK_IMPORTED_MODULE_6__.weiToRatioPercentage)(ratioWei);
19818
+ var targetRatio = (0,_utils__WEBPACK_IMPORTED_MODULE_7__.weiToRatioPercentage)(ratioWei);
19794
19819
  return {
19795
19820
  targetRatio
19796
19821
  };
@@ -19798,7 +19823,7 @@ var aaveV3LeverageManagementSubData = {
19798
19823
  };
19799
19824
  var aaveV3QuotePriceSubData = {
19800
19825
  encode(collAsset, collAssetId, debtAsset, debtAssetId) {
19801
- var nullAddress = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : _constants__WEBPACK_IMPORTED_MODULE_5__.ZERO_ADDRESS;
19826
+ var nullAddress = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : _constants__WEBPACK_IMPORTED_MODULE_6__.ZERO_ADDRESS;
19802
19827
  var encodedColl = web3_eth_abi__WEBPACK_IMPORTED_MODULE_1___default().encodeParameter('address', collAsset);
19803
19828
  var encodedCollId = web3_eth_abi__WEBPACK_IMPORTED_MODULE_1___default().encodeParameter('uint8', collAssetId);
19804
19829
  var encodedDebt = web3_eth_abi__WEBPACK_IMPORTED_MODULE_1___default().encodeParameter('address', debtAsset);
@@ -19827,7 +19852,7 @@ var compoundV2LeverageManagementSubData = {
19827
19852
  },
19828
19853
  decode(subData) {
19829
19854
  var weiRatio = web3_eth_abi__WEBPACK_IMPORTED_MODULE_1___default().decodeParameter('uint256', subData[0]);
19830
- var targetRatio = (0,_utils__WEBPACK_IMPORTED_MODULE_6__.weiToRatioPercentage)(weiRatio);
19855
+ var targetRatio = (0,_utils__WEBPACK_IMPORTED_MODULE_7__.weiToRatioPercentage)(weiRatio);
19831
19856
  return {
19832
19857
  targetRatio
19833
19858
  };
@@ -19841,7 +19866,7 @@ var compoundV3LeverageManagementSubData = {
19841
19866
  },
19842
19867
  decode(subData) {
19843
19868
  var weiRatio = web3_eth_abi__WEBPACK_IMPORTED_MODULE_1___default().decodeParameter('uint256', subData[3]);
19844
- var targetRatio = (0,_utils__WEBPACK_IMPORTED_MODULE_6__.weiToRatioPercentage)(weiRatio);
19869
+ var targetRatio = (0,_utils__WEBPACK_IMPORTED_MODULE_7__.weiToRatioPercentage)(weiRatio);
19845
19870
  return {
19846
19871
  targetRatio
19847
19872
  };
@@ -19861,7 +19886,7 @@ var compoundV3L2LeverageManagementSubData = {
19861
19886
  },
19862
19887
  decode(subData) {
19863
19888
  var ratioWei = web3_eth_abi__WEBPACK_IMPORTED_MODULE_1___default().decodeParameter('uint256', subData[3]);
19864
- var targetRatio = (0,_utils__WEBPACK_IMPORTED_MODULE_6__.weiToRatioPercentage)(ratioWei);
19889
+ var targetRatio = (0,_utils__WEBPACK_IMPORTED_MODULE_7__.weiToRatioPercentage)(ratioWei);
19865
19890
  return {
19866
19891
  targetRatio
19867
19892
  };
@@ -19869,13 +19894,13 @@ var compoundV3L2LeverageManagementSubData = {
19869
19894
  };
19870
19895
  var morphoAaveV2LeverageManagementSubData = {
19871
19896
  encode(triggerRepayRatio, triggerBoostRatio, targetBoostRatio, targetRepayRatio, boostEnabled) {
19872
- 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),
19897
+ return [(0,_utils__WEBPACK_IMPORTED_MODULE_7__.ratioPercentageToWei)(triggerRepayRatio), (0,_utils__WEBPACK_IMPORTED_MODULE_7__.ratioPercentageToWei)(triggerBoostRatio), (0,_utils__WEBPACK_IMPORTED_MODULE_7__.ratioPercentageToWei)(targetBoostRatio), (0,_utils__WEBPACK_IMPORTED_MODULE_7__.ratioPercentageToWei)(targetRepayRatio),
19873
19898
  // @ts-ignore
19874
19899
  boostEnabled];
19875
19900
  },
19876
19901
  decode(subData) {
19877
19902
  var ratioWei = web3_eth_abi__WEBPACK_IMPORTED_MODULE_1___default().decodeParameter('uint128', subData[1]);
19878
- var targetRatio = (0,_utils__WEBPACK_IMPORTED_MODULE_6__.weiToRatioPercentage)(ratioWei);
19903
+ var targetRatio = (0,_utils__WEBPACK_IMPORTED_MODULE_7__.weiToRatioPercentage)(ratioWei);
19879
19904
  return {
19880
19905
  targetRatio
19881
19906
  };
@@ -19900,11 +19925,11 @@ var liquityPaybackUsingChickenBondSubData = {
19900
19925
  * @param chainId
19901
19926
  */
19902
19927
  encode: function encode(sourceId, sourceType) {
19903
- var chainId = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : _types_enums__WEBPACK_IMPORTED_MODULE_4__.ChainId.Ethereum;
19928
+ var chainId = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : _types_enums__WEBPACK_IMPORTED_MODULE_5__.ChainId.Ethereum;
19904
19929
  var sourceIdEncoded = web3_eth_abi__WEBPACK_IMPORTED_MODULE_1___default().encodeParameter('uint256', sourceId);
19905
19930
  var sourceTypeEncoded = web3_eth_abi__WEBPACK_IMPORTED_MODULE_1___default().encodeParameter('uint256', sourceType);
19906
- var lusdAddressEncoded = web3_eth_abi__WEBPACK_IMPORTED_MODULE_1___default().encodeParameter('address', (0,_defisaver_tokens__WEBPACK_IMPORTED_MODULE_2__.getAssetInfo)('LUSD', chainId).address);
19907
- var bLusdAddressEncoded = web3_eth_abi__WEBPACK_IMPORTED_MODULE_1___default().encodeParameter('address', (0,_defisaver_tokens__WEBPACK_IMPORTED_MODULE_2__.getAssetInfo)('bLUSD', chainId).address);
19931
+ var lusdAddressEncoded = web3_eth_abi__WEBPACK_IMPORTED_MODULE_1___default().encodeParameter('address', (0,_defisaver_tokens__WEBPACK_IMPORTED_MODULE_3__.getAssetInfo)('LUSD', chainId).address);
19932
+ var bLusdAddressEncoded = web3_eth_abi__WEBPACK_IMPORTED_MODULE_1___default().encodeParameter('address', (0,_defisaver_tokens__WEBPACK_IMPORTED_MODULE_3__.getAssetInfo)('bLUSD', chainId).address);
19908
19933
  return [sourceIdEncoded, sourceTypeEncoded, lusdAddressEncoded, bLusdAddressEncoded];
19909
19934
  },
19910
19935
  decode: subData => {
@@ -19927,7 +19952,7 @@ var exchangeDcaSubData = {
19927
19952
  decode: (subData, chainId) => {
19928
19953
  var fromToken = web3_eth_abi__WEBPACK_IMPORTED_MODULE_1___default().decodeParameter('address', subData[0]).toString();
19929
19954
  var toToken = web3_eth_abi__WEBPACK_IMPORTED_MODULE_1___default().decodeParameter('address', subData[1]).toString();
19930
- var amount = (0,_defisaver_tokens__WEBPACK_IMPORTED_MODULE_2__.assetAmountInEth)(web3_eth_abi__WEBPACK_IMPORTED_MODULE_1___default().decodeParameter('uint256', subData[2]).toString(), (0,_defisaver_tokens__WEBPACK_IMPORTED_MODULE_2__.getAssetInfoByAddress)(fromToken, chainId).symbol);
19955
+ var amount = (0,_defisaver_tokens__WEBPACK_IMPORTED_MODULE_3__.assetAmountInEth)(web3_eth_abi__WEBPACK_IMPORTED_MODULE_1___default().decodeParameter('uint256', subData[2]).toString(), (0,_defisaver_tokens__WEBPACK_IMPORTED_MODULE_3__.getAssetInfoByAddress)(fromToken, chainId).symbol);
19931
19956
  var interval = web3_eth_abi__WEBPACK_IMPORTED_MODULE_1___default().decodeParameter('uint256', subData[3]).toString();
19932
19957
  return {
19933
19958
  fromToken,
@@ -19944,7 +19969,7 @@ var exchangeLimitOrderSubData = {
19944
19969
  decode: (subData, chainId) => {
19945
19970
  var fromToken = web3_eth_abi__WEBPACK_IMPORTED_MODULE_1___default().decodeParameter('address', subData[0]).toString();
19946
19971
  var toToken = web3_eth_abi__WEBPACK_IMPORTED_MODULE_1___default().decodeParameter('address', subData[1]).toString();
19947
- var amount = (0,_defisaver_tokens__WEBPACK_IMPORTED_MODULE_2__.assetAmountInEth)(web3_eth_abi__WEBPACK_IMPORTED_MODULE_1___default().decodeParameter('uint256', subData[2]).toString(), (0,_defisaver_tokens__WEBPACK_IMPORTED_MODULE_2__.getAssetInfoByAddress)(fromToken, chainId).symbol);
19972
+ var amount = (0,_defisaver_tokens__WEBPACK_IMPORTED_MODULE_3__.assetAmountInEth)(web3_eth_abi__WEBPACK_IMPORTED_MODULE_1___default().decodeParameter('uint256', subData[2]).toString(), (0,_defisaver_tokens__WEBPACK_IMPORTED_MODULE_3__.getAssetInfoByAddress)(fromToken, chainId).symbol);
19948
19973
  return {
19949
19974
  fromToken,
19950
19975
  toToken,
@@ -19956,7 +19981,7 @@ var sparkLeverageManagementSubData = {
19956
19981
  // TODO encode?
19957
19982
  decode(subData) {
19958
19983
  var ratioWei = web3_eth_abi__WEBPACK_IMPORTED_MODULE_1___default().decodeParameter('uint256', subData[0]);
19959
- var targetRatio = (0,_utils__WEBPACK_IMPORTED_MODULE_6__.weiToRatioPercentage)(ratioWei);
19984
+ var targetRatio = (0,_utils__WEBPACK_IMPORTED_MODULE_7__.weiToRatioPercentage)(ratioWei);
19960
19985
  return {
19961
19986
  targetRatio
19962
19987
  };
@@ -19964,7 +19989,7 @@ var sparkLeverageManagementSubData = {
19964
19989
  };
19965
19990
  var sparkQuotePriceSubData = {
19966
19991
  encode(collAsset, collAssetId, debtAsset, debtAssetId) {
19967
- var nullAddress = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : _constants__WEBPACK_IMPORTED_MODULE_5__.ZERO_ADDRESS;
19992
+ var nullAddress = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : _constants__WEBPACK_IMPORTED_MODULE_6__.ZERO_ADDRESS;
19968
19993
  var encodedColl = web3_eth_abi__WEBPACK_IMPORTED_MODULE_1___default().encodeParameter('address', collAsset);
19969
19994
  var encodedCollId = web3_eth_abi__WEBPACK_IMPORTED_MODULE_1___default().encodeParameter('uint8', collAssetId);
19970
19995
  var encodedDebt = web3_eth_abi__WEBPACK_IMPORTED_MODULE_1___default().encodeParameter('address', debtAsset);
@@ -19987,17 +20012,17 @@ var sparkQuotePriceSubData = {
19987
20012
  };
19988
20013
  var liquityDsrPaybackSubData = {
19989
20014
  encode: targetRatio => {
19990
- var daiAddress = (0,_defisaver_tokens__WEBPACK_IMPORTED_MODULE_2__.getAssetInfo)('DAI').address;
19991
- var lusdAddress = (0,_defisaver_tokens__WEBPACK_IMPORTED_MODULE_2__.getAssetInfo)('LUSD').address;
19992
- var ratioStateEncoded = web3_eth_abi__WEBPACK_IMPORTED_MODULE_1___default().encodeParameter('uint8', _types_enums__WEBPACK_IMPORTED_MODULE_4__.RatioState.UNDER);
19993
- var targetRatioEncoded = web3_eth_abi__WEBPACK_IMPORTED_MODULE_1___default().encodeParameter('uint256', (0,_utils__WEBPACK_IMPORTED_MODULE_6__.ratioPercentageToWei)(targetRatio));
20015
+ var daiAddress = (0,_defisaver_tokens__WEBPACK_IMPORTED_MODULE_3__.getAssetInfo)('DAI').address;
20016
+ var lusdAddress = (0,_defisaver_tokens__WEBPACK_IMPORTED_MODULE_3__.getAssetInfo)('LUSD').address;
20017
+ var ratioStateEncoded = web3_eth_abi__WEBPACK_IMPORTED_MODULE_1___default().encodeParameter('uint8', _types_enums__WEBPACK_IMPORTED_MODULE_5__.RatioState.UNDER);
20018
+ var targetRatioEncoded = web3_eth_abi__WEBPACK_IMPORTED_MODULE_1___default().encodeParameter('uint256', (0,_utils__WEBPACK_IMPORTED_MODULE_7__.ratioPercentageToWei)(targetRatio));
19994
20019
  var daiAddressEncoded = web3_eth_abi__WEBPACK_IMPORTED_MODULE_1___default().encodeParameter('address', daiAddress);
19995
20020
  var lusdAddressEncoded = web3_eth_abi__WEBPACK_IMPORTED_MODULE_1___default().encodeParameter('address', lusdAddress);
19996
20021
  return [ratioStateEncoded, targetRatioEncoded, daiAddressEncoded, lusdAddressEncoded];
19997
20022
  },
19998
20023
  decode: subData => {
19999
20024
  var weiRatio = web3_eth_abi__WEBPACK_IMPORTED_MODULE_1___default().decodeParameter('uint256', subData[1]);
20000
- var targetRatio = (0,_utils__WEBPACK_IMPORTED_MODULE_6__.weiToRatioPercentage)(weiRatio);
20025
+ var targetRatio = (0,_utils__WEBPACK_IMPORTED_MODULE_7__.weiToRatioPercentage)(weiRatio);
20001
20026
  return {
20002
20027
  targetRatio
20003
20028
  };
@@ -20005,17 +20030,17 @@ var liquityDsrPaybackSubData = {
20005
20030
  };
20006
20031
  var liquityDsrSupplySubData = {
20007
20032
  encode: targetRatio => {
20008
- var daiAddress = (0,_defisaver_tokens__WEBPACK_IMPORTED_MODULE_2__.getAssetInfo)('DAI').address;
20009
- var wethAddress = (0,_defisaver_tokens__WEBPACK_IMPORTED_MODULE_2__.getAssetInfo)('WETH').address;
20010
- var ratioStateEncoded = web3_eth_abi__WEBPACK_IMPORTED_MODULE_1___default().encodeParameter('uint8', _types_enums__WEBPACK_IMPORTED_MODULE_4__.RatioState.UNDER);
20011
- var targetRatioEncoded = web3_eth_abi__WEBPACK_IMPORTED_MODULE_1___default().encodeParameter('uint256', (0,_utils__WEBPACK_IMPORTED_MODULE_6__.ratioPercentageToWei)(targetRatio));
20033
+ var daiAddress = (0,_defisaver_tokens__WEBPACK_IMPORTED_MODULE_3__.getAssetInfo)('DAI').address;
20034
+ var wethAddress = (0,_defisaver_tokens__WEBPACK_IMPORTED_MODULE_3__.getAssetInfo)('WETH').address;
20035
+ var ratioStateEncoded = web3_eth_abi__WEBPACK_IMPORTED_MODULE_1___default().encodeParameter('uint8', _types_enums__WEBPACK_IMPORTED_MODULE_5__.RatioState.UNDER);
20036
+ var targetRatioEncoded = web3_eth_abi__WEBPACK_IMPORTED_MODULE_1___default().encodeParameter('uint256', (0,_utils__WEBPACK_IMPORTED_MODULE_7__.ratioPercentageToWei)(targetRatio));
20012
20037
  var daiAddressEncoded = web3_eth_abi__WEBPACK_IMPORTED_MODULE_1___default().encodeParameter('address', daiAddress);
20013
20038
  var wethAddressEncoded = web3_eth_abi__WEBPACK_IMPORTED_MODULE_1___default().encodeParameter('address', wethAddress);
20014
20039
  return [ratioStateEncoded, targetRatioEncoded, daiAddressEncoded, wethAddressEncoded];
20015
20040
  },
20016
20041
  decode: subData => {
20017
20042
  var weiRatio = web3_eth_abi__WEBPACK_IMPORTED_MODULE_1___default().decodeParameter('uint256', subData[1]);
20018
- var targetRatio = (0,_utils__WEBPACK_IMPORTED_MODULE_6__.weiToRatioPercentage)(weiRatio);
20043
+ var targetRatio = (0,_utils__WEBPACK_IMPORTED_MODULE_7__.weiToRatioPercentage)(weiRatio);
20019
20044
  return {
20020
20045
  targetRatio
20021
20046
  };
@@ -20023,11 +20048,11 @@ var liquityDsrSupplySubData = {
20023
20048
  };
20024
20049
  var liquityDebtInFrontRepaySubData = {
20025
20050
  encode: targetRatioIncrease => {
20026
- var wethAddress = (0,_defisaver_tokens__WEBPACK_IMPORTED_MODULE_2__.getAssetInfo)('WETH').address;
20027
- var lusdAddress = (0,_defisaver_tokens__WEBPACK_IMPORTED_MODULE_2__.getAssetInfo)('LUSD').address;
20051
+ var wethAddress = (0,_defisaver_tokens__WEBPACK_IMPORTED_MODULE_3__.getAssetInfo)('WETH').address;
20052
+ var lusdAddress = (0,_defisaver_tokens__WEBPACK_IMPORTED_MODULE_3__.getAssetInfo)('LUSD').address;
20028
20053
  var wethAddressEncoded = web3_eth_abi__WEBPACK_IMPORTED_MODULE_1___default().encodeParameter('address', wethAddress);
20029
20054
  var lusdAddressEncoded = web3_eth_abi__WEBPACK_IMPORTED_MODULE_1___default().encodeParameter('address', lusdAddress);
20030
- var targetRatioIncreaseEncoded = web3_eth_abi__WEBPACK_IMPORTED_MODULE_1___default().encodeParameter('uint256', (0,_utils__WEBPACK_IMPORTED_MODULE_6__.ratioPercentageToWei)(targetRatioIncrease));
20055
+ var targetRatioIncreaseEncoded = web3_eth_abi__WEBPACK_IMPORTED_MODULE_1___default().encodeParameter('uint256', (0,_utils__WEBPACK_IMPORTED_MODULE_7__.ratioPercentageToWei)(targetRatioIncrease));
20031
20056
  var withdrawIdEncoded = web3_eth_abi__WEBPACK_IMPORTED_MODULE_1___default().encodeParameter('uint8', 1); // withdraw - 1
20032
20057
  var paybackIdEncoded = web3_eth_abi__WEBPACK_IMPORTED_MODULE_1___default().encodeParameter('uint8', 0); // payback - 0
20033
20058
 
@@ -20035,7 +20060,7 @@ var liquityDebtInFrontRepaySubData = {
20035
20060
  },
20036
20061
  decode: subData => {
20037
20062
  var weiRatio = web3_eth_abi__WEBPACK_IMPORTED_MODULE_1___default().decodeParameter('uint256', subData[2]);
20038
- var targetRatioIncrease = (0,_utils__WEBPACK_IMPORTED_MODULE_6__.weiToRatioPercentage)(weiRatio);
20063
+ var targetRatioIncrease = (0,_utils__WEBPACK_IMPORTED_MODULE_7__.weiToRatioPercentage)(weiRatio);
20039
20064
  return {
20040
20065
  targetRatioIncrease
20041
20066
  };
@@ -20045,7 +20070,7 @@ var crvUSDLeverageManagementSubData = {
20045
20070
  encode: (controllerAddr, ratioState, targetRatio, collTokenAddr, crvUSDAddr) => {
20046
20071
  var controllerAddrEncoded = web3_eth_abi__WEBPACK_IMPORTED_MODULE_1___default().encodeParameter('address', controllerAddr);
20047
20072
  var ratioStateEncoded = web3_eth_abi__WEBPACK_IMPORTED_MODULE_1___default().encodeParameter('uint8', ratioState);
20048
- var targetRatioEncoded = web3_eth_abi__WEBPACK_IMPORTED_MODULE_1___default().encodeParameter('uint256', (0,_utils__WEBPACK_IMPORTED_MODULE_6__.ratioPercentageToWei)(targetRatio));
20073
+ var targetRatioEncoded = web3_eth_abi__WEBPACK_IMPORTED_MODULE_1___default().encodeParameter('uint256', (0,_utils__WEBPACK_IMPORTED_MODULE_7__.ratioPercentageToWei)(targetRatio));
20049
20074
  var collTokenAddrEncoded = web3_eth_abi__WEBPACK_IMPORTED_MODULE_1___default().encodeParameter('address', collTokenAddr);
20050
20075
  var crvUSDAddrEncoded = web3_eth_abi__WEBPACK_IMPORTED_MODULE_1___default().encodeParameter('address', crvUSDAddr);
20051
20076
  return [controllerAddrEncoded, ratioStateEncoded, targetRatioEncoded, collTokenAddrEncoded, crvUSDAddrEncoded];
@@ -20053,13 +20078,36 @@ var crvUSDLeverageManagementSubData = {
20053
20078
  decode: subData => {
20054
20079
  var controller = web3_eth_abi__WEBPACK_IMPORTED_MODULE_1___default().decodeParameter('address', subData[0]);
20055
20080
  var weiRatio = web3_eth_abi__WEBPACK_IMPORTED_MODULE_1___default().decodeParameter('uint256', subData[2]);
20056
- var targetRatio = (0,_utils__WEBPACK_IMPORTED_MODULE_6__.weiToRatioPercentage)(weiRatio);
20081
+ var targetRatio = (0,_utils__WEBPACK_IMPORTED_MODULE_7__.weiToRatioPercentage)(weiRatio);
20057
20082
  return {
20058
20083
  controller,
20059
20084
  targetRatio
20060
20085
  };
20061
20086
  }
20062
20087
  };
20088
+ var crvUSDPaybackSubData = {
20089
+ encode: (controllerAddr, addressToPullTokensFrom, positionOwner, paybackAmount, crvUSDAddr) => {
20090
+ var controllerAddrEncoded = web3_eth_abi__WEBPACK_IMPORTED_MODULE_1___default().encodeParameter('address', controllerAddr);
20091
+ var addressToPullTokensFromEncoded = web3_eth_abi__WEBPACK_IMPORTED_MODULE_1___default().encodeParameter('address', addressToPullTokensFrom);
20092
+ var positionOwnerEncoded = web3_eth_abi__WEBPACK_IMPORTED_MODULE_1___default().encodeParameter('address', positionOwner);
20093
+ var paybackAmountEncoded = web3_eth_abi__WEBPACK_IMPORTED_MODULE_1___default().encodeParameter('uint256', (0,web3_utils__WEBPACK_IMPORTED_MODULE_2__.toWei)(paybackAmount, 'ether'));
20094
+ var crvUSDAddrEncoded = web3_eth_abi__WEBPACK_IMPORTED_MODULE_1___default().encodeParameter('address', crvUSDAddr);
20095
+ return [controllerAddrEncoded, addressToPullTokensFromEncoded, positionOwnerEncoded, paybackAmountEncoded, crvUSDAddrEncoded];
20096
+ },
20097
+ decode: subData => {
20098
+ var controller = web3_eth_abi__WEBPACK_IMPORTED_MODULE_1___default().decodeParameter('address', subData[0]);
20099
+ var addressToPullTokensFrom = web3_eth_abi__WEBPACK_IMPORTED_MODULE_1___default().decodeParameter('address', subData[1]);
20100
+ var positionOwner = web3_eth_abi__WEBPACK_IMPORTED_MODULE_1___default().decodeParameter('address', subData[2]);
20101
+ var weiPaybackAmount = web3_eth_abi__WEBPACK_IMPORTED_MODULE_1___default().decodeParameter('uint256', subData[3]);
20102
+ var paybackAmount = (0,web3_utils__WEBPACK_IMPORTED_MODULE_2__.fromWei)(weiPaybackAmount, 'ether');
20103
+ return {
20104
+ controller,
20105
+ addressToPullTokensFrom,
20106
+ positionOwner,
20107
+ paybackAmount
20108
+ };
20109
+ }
20110
+ };
20063
20111
  var morphoBlueLeverageManagementSubData = {
20064
20112
  encode: (loanToken, collToken, oracle, irm, lltv, ratioState, targetRatio, user) => {
20065
20113
  var loanTokenEncoded = web3_eth_abi__WEBPACK_IMPORTED_MODULE_1___default().encodeParameter('address', loanToken);
@@ -20068,7 +20116,7 @@ var morphoBlueLeverageManagementSubData = {
20068
20116
  var irmEncoded = web3_eth_abi__WEBPACK_IMPORTED_MODULE_1___default().encodeParameter('address', irm);
20069
20117
  var lltvEncoded = web3_eth_abi__WEBPACK_IMPORTED_MODULE_1___default().encodeParameter('uint256', lltv);
20070
20118
  var ratioStateEncoded = web3_eth_abi__WEBPACK_IMPORTED_MODULE_1___default().encodeParameter('uint8', ratioState);
20071
- var targetRatioEncoded = web3_eth_abi__WEBPACK_IMPORTED_MODULE_1___default().encodeParameter('uint256', (0,_utils__WEBPACK_IMPORTED_MODULE_6__.ratioPercentageToWei)(targetRatio));
20119
+ var targetRatioEncoded = web3_eth_abi__WEBPACK_IMPORTED_MODULE_1___default().encodeParameter('uint256', (0,_utils__WEBPACK_IMPORTED_MODULE_7__.ratioPercentageToWei)(targetRatio));
20072
20120
  var userEncoded = web3_eth_abi__WEBPACK_IMPORTED_MODULE_1___default().encodeParameter('address', user);
20073
20121
  return [loanTokenEncoded, collTokenEncoded, oracleEncoded, irmEncoded, lltvEncoded, ratioStateEncoded, targetRatioEncoded, userEncoded];
20074
20122
  },
@@ -20080,7 +20128,7 @@ var morphoBlueLeverageManagementSubData = {
20080
20128
  var lltv = web3_eth_abi__WEBPACK_IMPORTED_MODULE_1___default().decodeParameter('uint256', subData[4]);
20081
20129
  var weiRatio = web3_eth_abi__WEBPACK_IMPORTED_MODULE_1___default().decodeParameter('uint256', subData[6]);
20082
20130
  var user = web3_eth_abi__WEBPACK_IMPORTED_MODULE_1___default().decodeParameter('address', subData[7]);
20083
- var targetRatio = (0,_utils__WEBPACK_IMPORTED_MODULE_6__.weiToRatioPercentage)(weiRatio);
20131
+ var targetRatio = (0,_utils__WEBPACK_IMPORTED_MODULE_7__.weiToRatioPercentage)(weiRatio);
20084
20132
  return {
20085
20133
  loanToken,
20086
20134
  collToken,
@@ -33151,6 +33199,7 @@ __webpack_require__.r(__webpack_exports__);
33151
33199
  /* harmony export */ compoundV2RatioTrigger: () => (/* binding */ compoundV2RatioTrigger),
33152
33200
  /* harmony export */ compoundV3RatioTrigger: () => (/* binding */ compoundV3RatioTrigger),
33153
33201
  /* harmony export */ crvUSDRatioTrigger: () => (/* binding */ crvUSDRatioTrigger),
33202
+ /* harmony export */ crvUsdHealthRatioTrigger: () => (/* binding */ crvUsdHealthRatioTrigger),
33154
33203
  /* harmony export */ curveUsdBorrowRateTrigger: () => (/* binding */ curveUsdBorrowRateTrigger),
33155
33204
  /* harmony export */ curveUsdSoftLiquidationTrigger: () => (/* binding */ curveUsdSoftLiquidationTrigger),
33156
33205
  /* harmony export */ exchangeOffchainPriceTrigger: () => (/* binding */ exchangeOffchainPriceTrigger),
@@ -33493,6 +33542,20 @@ var crvUSDRatioTrigger = {
33493
33542
  };
33494
33543
  }
33495
33544
  };
33545
+ var crvUsdHealthRatioTrigger = {
33546
+ encode(owner, controller, ratioPercentage) {
33547
+ var ratioWei = (0,_utils__WEBPACK_IMPORTED_MODULE_4__.ratioPercentageToWei)(ratioPercentage);
33548
+ return [web3_eth_abi__WEBPACK_IMPORTED_MODULE_2___default().encodeParameters(['address', 'address', 'uint256'], [owner, controller, ratioWei])];
33549
+ },
33550
+ decode(triggerData) {
33551
+ var decodedData = web3_eth_abi__WEBPACK_IMPORTED_MODULE_2___default().decodeParameters(['address', 'address', 'uint256'], triggerData[0]);
33552
+ return {
33553
+ owner: decodedData[0],
33554
+ controller: decodedData[1],
33555
+ ratio: (0,_utils__WEBPACK_IMPORTED_MODULE_4__.weiToRatioPercentage)(decodedData[2])
33556
+ };
33557
+ }
33558
+ };
33496
33559
  var morphoBlueRatioTrigger = {
33497
33560
  encode(marketId,
33498
33561
  // bytes32
@@ -33830,6 +33893,13 @@ var crvUSDEncode = {
33830
33893
  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;
33831
33894
  var isBundle = true;
33832
33895
  return [strategyOrBundleId, isBundle, triggerData, subData];
33896
+ },
33897
+ payback(proxyAddress, addressToPullTokensFrom, positionOwner, paybackAmount, crvUSDAddr, controllerAddr, minHealthRatio) {
33898
+ var subData = _subDataService__WEBPACK_IMPORTED_MODULE_4__.crvUSDPaybackSubData.encode(controllerAddr, addressToPullTokensFrom, positionOwner, paybackAmount, crvUSDAddr);
33899
+ var triggerData = _triggerService__WEBPACK_IMPORTED_MODULE_5__.crvUsdHealthRatioTrigger.encode(proxyAddress, controllerAddr, minHealthRatio);
33900
+ var strategyId = _types_enums__WEBPACK_IMPORTED_MODULE_2__.Strategies.MainnetIds.CURVEUSD_PAYBACK;
33901
+ var isBundle = false;
33902
+ return [strategyId, isBundle, triggerData, subData];
33833
33903
  }
33834
33904
  };
33835
33905
  var morphoBlueEncode = {