@defisaver/automation-sdk 3.3.16-dev-13082-morpho-eoa-dev → 3.3.16-liq-prot-dev

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (39) hide show
  1. package/cjs/constants/index.js +117 -42
  2. package/cjs/index.d.ts +2 -2
  3. package/cjs/index.js +5 -2
  4. package/cjs/services/strategiesService.js +157 -12
  5. package/cjs/services/strategySubService.d.ts +18 -21
  6. package/cjs/services/strategySubService.js +78 -74
  7. package/cjs/services/strategySubService.test.js +3 -149
  8. package/cjs/services/subDataService.d.ts +70 -20
  9. package/cjs/services/subDataService.js +23 -79
  10. package/cjs/services/subDataService.test.js +17 -202
  11. package/cjs/services/utils.d.ts +2 -1
  12. package/cjs/services/utils.js +14 -1
  13. package/cjs/types/enums.d.ts +36 -17
  14. package/cjs/types/enums.js +30 -11
  15. package/esm/constants/index.js +117 -42
  16. package/esm/index.d.ts +2 -2
  17. package/esm/index.js +5 -2
  18. package/esm/services/strategiesService.js +157 -12
  19. package/esm/services/strategySubService.d.ts +18 -21
  20. package/esm/services/strategySubService.js +78 -73
  21. package/esm/services/strategySubService.test.js +4 -147
  22. package/esm/services/subDataService.d.ts +70 -20
  23. package/esm/services/subDataService.js +21 -77
  24. package/esm/services/subDataService.test.js +18 -200
  25. package/esm/services/utils.d.ts +2 -1
  26. package/esm/services/utils.js +13 -1
  27. package/esm/types/enums.d.ts +36 -17
  28. package/esm/types/enums.js +30 -11
  29. package/package.json +1 -1
  30. package/src/constants/index.ts +119 -43
  31. package/src/index.ts +22 -6
  32. package/src/services/strategiesService.ts +221 -12
  33. package/src/services/strategySubService.test.ts +3 -191
  34. package/src/services/strategySubService.ts +173 -121
  35. package/src/services/subDataService.test.ts +18 -214
  36. package/src/services/subDataService.ts +42 -106
  37. package/src/services/utils.test.ts +1 -1
  38. package/src/services/utils.ts +15 -1
  39. package/src/types/enums.ts +30 -13
@@ -1,26 +1,24 @@
1
- import type { OrderType } from '../types/enums';
2
- import { CloseToAssetType, Bundles, ChainId, RatioState, Strategies } from '../types/enums';
1
+ import { Bundles, ChainId, CloseToAssetType, RatioState, Strategies } from '../types/enums';
3
2
  import type { EthereumAddress, StrategyOrBundleIds } from '../types';
3
+ import type { OrderType } from '../types/enums';
4
4
  export declare const makerEncode: {
5
5
  repayFromSavings(bundleId: StrategyOrBundleIds, vaultId: number, triggerRepayRatio: number, targetRepayRatio: number, isBundle?: boolean, chainId?: ChainId, daiAddr?: EthereumAddress, mcdCdpManagerAddr?: EthereumAddress): (boolean | string[] | Strategies.MainnetIds | Strategies.OptimismIds | Strategies.ArbitrumIds | Strategies.BaseIds | Bundles.MainnetIds | Bundles.OptimismIds | Bundles.ArbitrumIds | Bundles.BaseIds)[];
6
6
  closeOnPrice(vaultId: number, ratioState: RatioState, price: string, closeToAssetAddr: EthereumAddress, chainlinkCollAddress: EthereumAddress, chainId?: ChainId, daiAddr?: EthereumAddress, mcdCdpManagerAddr?: EthereumAddress): (boolean | string[] | Strategies.MainnetIds)[];
7
7
  trailingStop(vaultId: number, triggerPercentage: number, closeToAssetAddr: EthereumAddress, chainlinkCollAddress: EthereumAddress, roundId: number, chainId?: ChainId, daiAddr?: EthereumAddress, mcdCdpManagerAddr?: EthereumAddress): (boolean | string[] | Strategies.MainnetIds)[];
8
- leverageManagementWithoutSubProxy(vaultId: number, triggerRatio: number, targetRatio: number, ratioState: RatioState, isBoost: boolean, daiAddr?: EthereumAddress): (boolean | string[] | Bundles.MainnetIds)[];
8
+ leverageManagement(vaultId: number, triggerRatio: number, targetRatio: number, ratioState: RatioState, isBoost: boolean, daiAddr?: EthereumAddress): (boolean | string[] | Bundles.MainnetIds)[];
9
+ liquidationProtection(vaultId: number, triggerRatio: number, targetRatio: number, ratioState: RatioState, daiAddr?: EthereumAddress): (boolean | string[] | Bundles.MainnetIds)[];
9
10
  };
10
11
  export declare const liquityEncode: {
11
12
  closeOnPrice(priceOverOrUnder: RatioState, price: string, closeToAssetAddr: EthereumAddress, chainlinkCollAddress: EthereumAddress, chainId?: ChainId, collAddr?: EthereumAddress, debtAddr?: EthereumAddress): (boolean | string[] | Strategies.MainnetIds)[];
12
13
  trailingStop(triggerPercentage: number, closeToAssetAddr: EthereumAddress, chainlinkCollAddress: EthereumAddress, roundId: number, chainId?: ChainId, collAddr?: EthereumAddress, debtAddr?: EthereumAddress): (boolean | string[] | Strategies.MainnetIds)[];
13
14
  paybackFromChickenBondStrategySub(proxyAddress: EthereumAddress, ratio: number, sourceId: string, sourceType: number, ratioState?: RatioState): (boolean | string[] | Bundles.MainnetIds)[];
14
- leverageManagementWithoutSubProxy(strategyOrBundleId: number, user: EthereumAddress, ratioState: RatioState, targetRatio: number, triggerRatio: number): (number | boolean | string[])[];
15
+ leverageManagement(strategyOrBundleId: number, user: EthereumAddress, ratioState: RatioState, targetRatio: number, triggerRatio: number): (number | boolean | string[])[];
15
16
  dsrPayback(proxyAddress: EthereumAddress, triggerRatio: number, targetRatio: number): (boolean | string[] | Strategies.MainnetIds)[];
16
17
  dsrSupply(proxyAddress: EthereumAddress, triggerRatio: number, targetRatio: number): (boolean | string[] | Strategies.MainnetIds)[];
17
18
  debtInFrontRepay(proxyAddress: EthereumAddress, debtInFrontMin: string, targetRatioIncrease: number): (boolean | string[] | Strategies.MainnetIds)[];
18
19
  };
19
- export declare const chickenBondsEncode: {
20
- rebond(bondId: number): string[];
21
- };
22
20
  export declare const aaveV2Encode: {
23
- leverageManagementWithoutSubProxy(strategyOrBundleId: number, market: EthereumAddress, user: EthereumAddress, ratioState: RatioState, targetRatio: number, triggerRatio: number): (number | boolean | string[])[];
21
+ leverageManagement(strategyOrBundleId: number, market: EthereumAddress, user: EthereumAddress, ratioState: RatioState, targetRatio: number, triggerRatio: number): (number | boolean | string[])[];
24
22
  };
25
23
  export declare const aaveV3Encode: {
26
24
  closeToAsset(strategyOrBundleId: number, isBundle: boolean | undefined, triggerData: {
@@ -59,25 +57,24 @@ export declare const aaveV3Encode: {
59
57
  marketAddr: EthereumAddress;
60
58
  targetRatio: number;
61
59
  }): (number | boolean | string[])[];
62
- leverageManagementWithoutSubProxy(strategyOrBundleId: number, market: EthereumAddress, user: EthereumAddress, ratioState: RatioState, targetRatio: number, triggerRatio: number, isGeneric?: boolean): (number | boolean | string[])[];
60
+ leverageManagement(strategyOrBundleId: number, market: EthereumAddress, user: EthereumAddress, ratioState: RatioState, targetRatio: number, triggerRatio: number, isGeneric?: boolean): (number | boolean | string[])[];
61
+ liquidationProtection(strategyOrBundleId: number, market: EthereumAddress, user: EthereumAddress, ratioState: RatioState, targetRatio: number, triggerRatio: number): (number | boolean | string[])[];
63
62
  leverageManagementOnPriceGeneric(strategyOrBundleId: number, price: number, ratioState: RatioState, collAsset: EthereumAddress, collAssetId: number, debtAsset: EthereumAddress, debtAssetId: number, marketAddr: EthereumAddress, targetRatio: number, user: EthereumAddress): (number | boolean | string[])[];
64
63
  closeOnPriceGeneric(strategyOrBundleId: number, collAsset: EthereumAddress, collAssetId: number, debtAsset: EthereumAddress, debtAssetId: number, marketAddr: EthereumAddress, user: EthereumAddress, stopLossPrice?: number, stopLossType?: CloseToAssetType, takeProfitPrice?: number, takeProfitType?: CloseToAssetType): (number | boolean | string[])[];
65
64
  collateralSwitch(strategyOrBundleId: number, fromAsset: EthereumAddress, fromAssetId: number, toAsset: EthereumAddress, toAssetId: number, marketAddr: EthereumAddress, amountToSwitch: string, baseTokenAddress: EthereumAddress, quoteTokenAddress: EthereumAddress, price: number, state: RatioState): (number | boolean | string[])[];
66
65
  };
67
66
  export declare const compoundV2Encode: {
68
- leverageManagementWithoutSubProxy(strategyOrBundleId: number, user: EthereumAddress, ratioState: RatioState, targetRatio: number, triggerRatio: number): (number | boolean | string[])[];
67
+ leverageManagement(strategyOrBundleId: number, user: EthereumAddress, ratioState: RatioState, targetRatio: number, triggerRatio: number): (number | boolean | string[])[];
69
68
  };
70
69
  export declare const compoundV3Encode: {
71
- leverageManagementWithoutSubProxy(strategyOrBundleId: number, market: EthereumAddress, baseToken: EthereumAddress, user: EthereumAddress, ratioState: RatioState, targetRatio: number, triggerRatio: number): (number | boolean | string[])[];
70
+ leverageManagement(strategyOrBundleId: number, market: EthereumAddress, baseToken: EthereumAddress, user: EthereumAddress, ratioState: RatioState, targetRatio: number, triggerRatio: number): (number | boolean | string[])[];
71
+ liquidationProtection(strategyOrBundleId: number, market: EthereumAddress, baseToken: EthereumAddress, user: EthereumAddress, ratioState: RatioState, targetRatio: number, triggerRatio: number): (number | boolean | string[])[];
72
72
  leverageManagementOnPrice(strategyOrBundleId: number, market: EthereumAddress, collToken: EthereumAddress, baseToken: EthereumAddress, targetRatio: number, price: number, priceState: RatioState, ratioState: RatioState, user: EthereumAddress): (number | boolean | string[])[];
73
73
  closeOnPrice(strategyOrBundleId: number, market: EthereumAddress, collToken: EthereumAddress, baseToken: EthereumAddress, stopLossPrice: number | undefined, stopLossType: CloseToAssetType | undefined, takeProfitPrice: number | undefined, takeProfitType: CloseToAssetType | undefined, user: EthereumAddress): (number | boolean | string[])[];
74
74
  };
75
- export declare const morphoAaveV2Encode: {
76
- leverageManagement(triggerRepayRatio: number, triggerBoostRatio: number, targetBoostRatio: number, targetRepayRatio: number, boostEnabled: boolean): string[];
77
- };
78
75
  export declare const exchangeEncode: {
79
76
  dca(fromToken: EthereumAddress, toToken: EthereumAddress, amount: string, timestamp: number, interval: number, network: ChainId): (boolean | string[] | Strategies.MainnetIds | Strategies.OptimismIds | Strategies.ArbitrumIds | Strategies.BaseIds)[];
80
- limitOrderWithoutSubProxy(fromToken: EthereumAddress, toToken: EthereumAddress, amount: string, targetPrice: string, goodUntil: string | number, orderType: OrderType, fromTokenDecimals: number, toTokenDecimals: number, network: ChainId): (boolean | string[] | Strategies.MainnetIds | Strategies.OptimismIds | Strategies.ArbitrumIds | Strategies.BaseIds)[];
77
+ limitOrder(fromToken: EthereumAddress, toToken: EthereumAddress, amount: string, targetPrice: string, goodUntil: string | number, orderType: OrderType, fromTokenDecimals: number, toTokenDecimals: number, network: ChainId): (boolean | string[] | Strategies.MainnetIds | Strategies.OptimismIds | Strategies.ArbitrumIds | Strategies.BaseIds)[];
81
78
  };
82
79
  export declare const sparkEncode: {
83
80
  leverageManagementOnPrice(strategyOrBundleId: number, isBundle: boolean | undefined, triggerData: {
@@ -94,21 +91,19 @@ export declare const sparkEncode: {
94
91
  targetRatio: number;
95
92
  }): (number | boolean | string[])[];
96
93
  closeOnPriceGeneric(strategyOrBundleId: number, collAsset: EthereumAddress, collAssetId: number, debtAsset: EthereumAddress, debtAssetId: number, marketAddr: EthereumAddress, user: EthereumAddress, stopLossPrice?: number, stopLossType?: CloseToAssetType, takeProfitPrice?: number, takeProfitType?: CloseToAssetType): (number | boolean | string[])[];
97
- leverageManagementWithoutSubProxy(strategyOrBundleId: number, market: EthereumAddress, user: EthereumAddress, ratioState: RatioState, targetRatio: number, triggerRatio: number): (number | boolean | string[])[];
94
+ leverageManagement(strategyOrBundleId: number, market: EthereumAddress, user: EthereumAddress, ratioState: RatioState, targetRatio: number, triggerRatio: number): (number | boolean | string[])[];
95
+ liquidationProtection(strategyOrBundleId: number, market: EthereumAddress, user: EthereumAddress, ratioState: RatioState, targetRatio: number, triggerRatio: number): (number | boolean | string[])[];
98
96
  collateralSwitch(strategyOrBundleId: number, fromAsset: EthereumAddress, fromAssetId: number, toAsset: EthereumAddress, toAssetId: number, marketAddr: EthereumAddress, amountToSwitch: string, baseTokenAddress: EthereumAddress, quoteTokenAddress: EthereumAddress, price: number, state: RatioState): (number | boolean | string[])[];
99
97
  };
100
98
  export declare const crvUSDEncode: {
101
99
  leverageManagement(owner: EthereumAddress, controllerAddr: EthereumAddress, ratioState: RatioState, targetRatio: number, triggerRatio: number, collTokenAddr: EthereumAddress, crvUSDAddr: EthereumAddress): (boolean | string[] | Bundles.MainnetIds)[];
102
100
  payback(proxyAddress: EthereumAddress, addressToPullTokensFrom: EthereumAddress, positionOwner: EthereumAddress, paybackAmount: string, crvUSDAddr: EthereumAddress, controllerAddr: EthereumAddress, minHealthRatio: number): (boolean | string[] | Strategies.MainnetIds)[];
103
101
  };
104
- export type MorphoBlueBundleStrategy = 'repay' | 'boost' | 'repayOnPrice' | 'boostOnPrice' | 'close';
105
- export declare function getMorphoBlueBundleId(network: ChainId, strategy: MorphoBlueBundleStrategy, isEOA: boolean): number;
106
102
  export declare const morphoBlueEncode: {
107
- leverageManagement(marketId: string, loanToken: EthereumAddress, collToken: EthereumAddress, oracle: EthereumAddress, irm: EthereumAddress, lltv: string, ratioState: RatioState, targetRatio: number, triggerRatio: number, user: EthereumAddress, isEOA: boolean, network: ChainId): (number | boolean | string[])[];
103
+ leverageManagement(marketId: string, loanToken: EthereumAddress, collToken: EthereumAddress, oracle: EthereumAddress, irm: EthereumAddress, lltv: string, ratioState: RatioState, targetRatio: number, triggerRatio: number, user: EthereumAddress, isEOA: boolean, network: ChainId): (boolean | string[] | Bundles.BaseIds)[] | (boolean | string[] | Bundles.MainnetIds | Bundles.ArbitrumIds)[];
104
+ liquidationProtection(marketId: string, loanToken: EthereumAddress, collToken: EthereumAddress, oracle: EthereumAddress, irm: EthereumAddress, lltv: string, ratioState: RatioState, targetRatio: number, triggerRatio: number, user: EthereumAddress, isEOA: boolean, network: ChainId): (boolean | string[] | Bundles.MainnetIds)[];
108
105
  leverageManagementOnPrice(strategyOrBundleId: number, isBundle: boolean | undefined, loanToken: EthereumAddress, collToken: EthereumAddress, oracle: EthereumAddress, irm: EthereumAddress, lltv: string, user: EthereumAddress, targetRatio: number, price: number, priceState: RatioState): (number | boolean | string[])[];
109
- leverageManagementOnPriceGeneric(loanToken: EthereumAddress, collToken: EthereumAddress, oracle: EthereumAddress, irm: EthereumAddress, lltv: string, user: EthereumAddress, targetRatio: number, price: number, priceState: RatioState, isBoost: boolean, isEOA: boolean, network: ChainId): (number | boolean | string[])[];
110
106
  closeOnPrice(strategyOrBundleId: number, loanToken: EthereumAddress, collToken: EthereumAddress, oracle: EthereumAddress, irm: EthereumAddress, lltv: string, user: EthereumAddress, stopLossPrice?: number, stopLossType?: CloseToAssetType, takeProfitPrice?: number, takeProfitType?: CloseToAssetType): (number | boolean | string[])[];
111
- closeOnPriceGeneric(loanToken: EthereumAddress, collToken: EthereumAddress, oracle: EthereumAddress, irm: EthereumAddress, lltv: string, user: EthereumAddress, stopLossPrice: number | undefined, stopLossType: CloseToAssetType | undefined, takeProfitPrice: number | undefined, takeProfitType: CloseToAssetType | undefined, isEOA: boolean, network: ChainId): (number | boolean | string[])[];
112
107
  };
113
108
  export declare const liquityV2Encode: {
114
109
  leverageManagement(market: EthereumAddress, troveId: string, collToken: EthereumAddress, boldToken: EthereumAddress, ratioState: RatioState, targetRatio: number, triggerRatio: number, strategyOrBundleId: number): (number | boolean | string[])[];
@@ -118,9 +113,11 @@ export declare const liquityV2Encode: {
118
113
  };
119
114
  export declare const fluidEncode: {
120
115
  leverageManagement(nftId: string, vault: EthereumAddress, ratioState: RatioState, targetRatio: number, triggerRatio: number, strategyOrBundleId: number): (number | boolean | string[])[];
116
+ liquidationProtection(nftId: string, vault: EthereumAddress, ratioState: RatioState, targetRatio: number, triggerRatio: number, strategyOrBundleId: number): (number | boolean | string[])[];
121
117
  };
122
118
  export declare const aaveV4Encode: {
123
119
  leverageManagement(strategyOrBundleId: number, owner: EthereumAddress, spoke: EthereumAddress, ratioState: RatioState, targetRatio: number, triggerRatio: number): (number | boolean | string[])[];
120
+ liquidationProtection(strategyOrBundleId: number, owner: EthereumAddress, spoke: EthereumAddress, ratioState: RatioState, targetRatio: number, triggerRatio: number): (number | boolean | string[])[];
124
121
  leverageManagementOnPrice(strategyOrBundleId: number, owner: EthereumAddress, spoke: EthereumAddress, collAsset: EthereumAddress, collAssetId: number, debtAsset: EthereumAddress, debtAssetId: number, targetRatio: number, price: string, priceState: RatioState, ratioState: RatioState): (number | boolean | string[])[];
125
122
  closeOnPrice(strategyOrBundleId: number, owner: EthereumAddress, spoke: EthereumAddress, collAsset: EthereumAddress, collAssetId: number, debtAsset: EthereumAddress, debtAssetId: number, stopLossPrice?: string, stopLossType?: CloseToAssetType, takeProfitPrice?: string, takeProfitType?: CloseToAssetType): (number | boolean | string[])[];
126
123
  collateralSwitch(strategyOrBundleId: number, owner: EthereumAddress, spoke: EthereumAddress, fromAsset: EthereumAddress, fromAssetId: number, toAsset: EthereumAddress, toAssetId: number, amountToSwitch: string, price: string, ratioState: RatioState): (number | boolean | string[])[];
@@ -23,10 +23,10 @@ var __importStar = (this && this.__importStar) || function (mod) {
23
23
  return result;
24
24
  };
25
25
  Object.defineProperty(exports, "__esModule", { value: true });
26
- exports.aaveV4Encode = exports.fluidEncode = exports.liquityV2Encode = exports.morphoBlueEncode = exports.getMorphoBlueBundleId = exports.crvUSDEncode = exports.sparkEncode = exports.exchangeEncode = exports.morphoAaveV2Encode = exports.compoundV3Encode = exports.compoundV2Encode = exports.aaveV3Encode = exports.aaveV2Encode = exports.chickenBondsEncode = exports.liquityEncode = exports.makerEncode = void 0;
26
+ exports.aaveV4Encode = exports.fluidEncode = exports.liquityV2Encode = exports.morphoBlueEncode = exports.crvUSDEncode = exports.sparkEncode = exports.exchangeEncode = exports.compoundV3Encode = exports.compoundV2Encode = exports.aaveV3Encode = exports.aaveV2Encode = exports.liquityEncode = exports.makerEncode = void 0;
27
27
  const tokens_1 = require("@defisaver/tokens");
28
- const enums_1 = require("../types/enums");
29
28
  const constants_1 = require("../constants");
29
+ const enums_1 = require("../types/enums");
30
30
  const subDataService = __importStar(require("./subDataService"));
31
31
  const triggerService = __importStar(require("./triggerService"));
32
32
  const utils_1 = require("./utils");
@@ -56,10 +56,21 @@ exports.makerEncode = {
56
56
  const isBundle = false;
57
57
  return [strategyOrBundleId, isBundle, triggerData, subData];
58
58
  },
59
- leverageManagementWithoutSubProxy(vaultId, triggerRatio, targetRatio, ratioState, isBoost, daiAddr) {
59
+ leverageManagement(vaultId, triggerRatio, targetRatio, ratioState, isBoost, daiAddr) {
60
60
  const bundleId = isBoost ? enums_1.Bundles.MainnetIds.MAKER_BOOST : enums_1.Bundles.MainnetIds.MAKER_REPAY;
61
61
  const triggerData = triggerService.makerRatioTrigger.encode(vaultId, triggerRatio, ratioState);
62
- const subData = subDataService.makerLeverageManagementWithoutSubProxy.encode(vaultId, targetRatio, daiAddr);
62
+ const subData = subDataService.makerLeverageManagementSubData.encode(vaultId, targetRatio, daiAddr);
63
+ return [
64
+ bundleId,
65
+ true,
66
+ triggerData,
67
+ subData,
68
+ ];
69
+ },
70
+ liquidationProtection(vaultId, triggerRatio, targetRatio, ratioState, daiAddr) {
71
+ const bundleId = enums_1.Bundles.MainnetIds.MAKER_SW_LIQUIDATION_PROTECTION;
72
+ const triggerData = triggerService.makerRatioTrigger.encode(vaultId, triggerRatio, ratioState);
73
+ const subData = subDataService.makerLiquidationProtectionSubData.encode(vaultId, targetRatio, daiAddr);
63
74
  return [
64
75
  bundleId,
65
76
  true,
@@ -93,9 +104,9 @@ exports.liquityEncode = {
93
104
  const isBundle = true;
94
105
  return [strategyId, isBundle, triggerData, subData];
95
106
  },
96
- leverageManagementWithoutSubProxy(strategyOrBundleId, user, ratioState, targetRatio, triggerRatio) {
107
+ leverageManagement(strategyOrBundleId, user, ratioState, targetRatio, triggerRatio) {
97
108
  const isBundle = true;
98
- const subData = subDataService.liquityLeverageManagementSubDataWithoutSubProxy.encode(targetRatio, ratioState);
109
+ const subData = subDataService.liquityLeverageManagementSubData.encode(targetRatio, ratioState);
99
110
  const triggerData = triggerService.liquityRatioTrigger.encode(user, triggerRatio, ratioState);
100
111
  return [strategyOrBundleId, isBundle, triggerData, subData];
101
112
  },
@@ -124,15 +135,10 @@ exports.liquityEncode = {
124
135
  return [strategyOrBundleId, isBundle, triggerData, subData];
125
136
  },
126
137
  };
127
- exports.chickenBondsEncode = {
128
- rebond(bondId) {
129
- return subDataService.cBondsRebondSubData.encode(bondId);
130
- },
131
- };
132
138
  exports.aaveV2Encode = {
133
- leverageManagementWithoutSubProxy(strategyOrBundleId, market, user, ratioState, targetRatio, triggerRatio) {
139
+ leverageManagement(strategyOrBundleId, market, user, ratioState, targetRatio, triggerRatio) {
134
140
  const isBundle = true;
135
- const subData = subDataService.aaveV2LeverageManagementSubDataWithoutSubProxy.encode(market, targetRatio, ratioState);
141
+ const subData = subDataService.aaveV2LeverageManagementSubData.encode(market, targetRatio, ratioState);
136
142
  const triggerData = triggerService.aaveV2RatioTrigger.encode(user, market, triggerRatio, ratioState);
137
143
  return [strategyOrBundleId, isBundle, triggerData, subData];
138
144
  },
@@ -159,9 +165,15 @@ exports.aaveV3Encode = {
159
165
  const triggerDataEncoded = triggerService.aaveV3QuotePriceTrigger.encode(baseTokenAddress, quoteTokenAddress, price, state);
160
166
  return [strategyOrBundleId, isBundle, triggerDataEncoded, subDataEncoded];
161
167
  },
162
- leverageManagementWithoutSubProxy(strategyOrBundleId, market, user, ratioState, targetRatio, triggerRatio, isGeneric = false) {
168
+ leverageManagement(strategyOrBundleId, market, user, ratioState, targetRatio, triggerRatio, isGeneric = false) {
163
169
  const isBundle = true;
164
- const subData = subDataService.aaveV3LeverageManagementSubDataWithoutSubProxy.encode(targetRatio, ratioState, market, user, isGeneric);
170
+ const subData = subDataService.aaveV3LeverageManagementSubData.encode(targetRatio, ratioState, market, user, isGeneric);
171
+ const triggerData = triggerService.aaveV3RatioTrigger.encode(user, market, triggerRatio, ratioState);
172
+ return [strategyOrBundleId, isBundle, triggerData, subData];
173
+ },
174
+ liquidationProtection(strategyOrBundleId, market, user, ratioState, targetRatio, triggerRatio) {
175
+ const isBundle = true;
176
+ const subData = subDataService.aaveV3LiquidationProtectionSubData.encode(targetRatio, ratioState, market, user, true);
165
177
  const triggerData = triggerService.aaveV3RatioTrigger.encode(user, market, triggerRatio, ratioState);
166
178
  return [strategyOrBundleId, isBundle, triggerData, subData];
167
179
  },
@@ -186,17 +198,23 @@ exports.aaveV3Encode = {
186
198
  },
187
199
  };
188
200
  exports.compoundV2Encode = {
189
- leverageManagementWithoutSubProxy(strategyOrBundleId, user, ratioState, targetRatio, triggerRatio) {
201
+ leverageManagement(strategyOrBundleId, user, ratioState, targetRatio, triggerRatio) {
190
202
  const isBundle = true;
191
- const subData = subDataService.compoundV2LeverageManagementSubDataWithoutSubProxy.encode(targetRatio, ratioState);
203
+ const subData = subDataService.compoundV2LeverageManagementSubData.encode(targetRatio, ratioState);
192
204
  const triggerData = triggerService.compoundV2RatioTrigger.encode(user, triggerRatio, ratioState);
193
205
  return [strategyOrBundleId, isBundle, triggerData, subData];
194
206
  },
195
207
  };
196
208
  exports.compoundV3Encode = {
197
- leverageManagementWithoutSubProxy(strategyOrBundleId, market, baseToken, user, ratioState, targetRatio, triggerRatio) {
209
+ leverageManagement(strategyOrBundleId, market, baseToken, user, ratioState, targetRatio, triggerRatio) {
210
+ const isBundle = true;
211
+ const subData = subDataService.compoundV3LeverageManagementSubData.encode(market, baseToken, targetRatio, ratioState);
212
+ const triggerData = triggerService.compoundV3RatioTrigger.encode(user, market, triggerRatio, ratioState);
213
+ return [strategyOrBundleId, isBundle, triggerData, subData];
214
+ },
215
+ liquidationProtection(strategyOrBundleId, market, baseToken, user, ratioState, targetRatio, triggerRatio) {
198
216
  const isBundle = true;
199
- const subData = subDataService.compoundV3LeverageManagementSubDataWithoutSubProxy.encode(market, baseToken, targetRatio, ratioState);
217
+ const subData = subDataService.compoundV3LiquidationProtectionSubData.encode(market, baseToken, targetRatio, ratioState);
200
218
  const triggerData = triggerService.compoundV3RatioTrigger.encode(user, market, triggerRatio, ratioState);
201
219
  return [strategyOrBundleId, isBundle, triggerData, subData];
202
220
  },
@@ -215,11 +233,6 @@ exports.compoundV3Encode = {
215
233
  return [strategyOrBundleId, isBundle, triggerDataEncoded, subDataEncoded];
216
234
  },
217
235
  };
218
- exports.morphoAaveV2Encode = {
219
- leverageManagement(triggerRepayRatio, triggerBoostRatio, targetBoostRatio, targetRepayRatio, boostEnabled) {
220
- return subDataService.morphoAaveV2LeverageManagementSubData.encode(triggerRepayRatio, triggerBoostRatio, targetBoostRatio, targetRepayRatio, boostEnabled);
221
- },
222
- };
223
236
  exports.exchangeEncode = {
224
237
  dca(fromToken, toToken, amount, timestamp, interval, network) {
225
238
  (0, utils_1.requireAddresses)([fromToken, toToken]);
@@ -228,9 +241,9 @@ exports.exchangeEncode = {
228
241
  const strategyId = constants_1.STRATEGY_IDS[network].EXCHANGE_DCA;
229
242
  return [strategyId, false, triggerData, subData];
230
243
  },
231
- limitOrderWithoutSubProxy(fromToken, toToken, amount, targetPrice, goodUntil, orderType, fromTokenDecimals, toTokenDecimals, network) {
244
+ limitOrder(fromToken, toToken, amount, targetPrice, goodUntil, orderType, fromTokenDecimals, toTokenDecimals, network) {
232
245
  (0, utils_1.requireAddresses)([fromToken, toToken]);
233
- const subData = subDataService.exchangeLimitOrderSubDataWithoutSubProxy.encode(fromToken, toToken, amount);
246
+ const subData = subDataService.exchangeLimitOrderSubData.encode(fromToken, toToken, amount);
234
247
  const triggerData = triggerService.exchangeOffchainPriceTrigger.encode(targetPrice, Number(goodUntil), orderType, fromTokenDecimals, toTokenDecimals);
235
248
  const strategyId = constants_1.STRATEGY_IDS[network].EXCHANGE_LIMIT_ORDER;
236
249
  return [strategyId, false, triggerData, subData];
@@ -251,9 +264,15 @@ exports.sparkEncode = {
251
264
  const triggerDataEncoded = triggerService.sparkQuotePriceRangeTrigger.encode(collAsset, debtAsset, stopLossPrice, takeProfitPrice);
252
265
  return [strategyOrBundleId, isBundle, triggerDataEncoded, subDataEncoded];
253
266
  },
254
- leverageManagementWithoutSubProxy(strategyOrBundleId, market, user, ratioState, targetRatio, triggerRatio) {
267
+ leverageManagement(strategyOrBundleId, market, user, ratioState, targetRatio, triggerRatio) {
268
+ const isBundle = true;
269
+ const subData = subDataService.sparkLeverageManagementSubData.encode(targetRatio, ratioState);
270
+ const triggerData = triggerService.sparkRatioTrigger.encode(user, market, triggerRatio, ratioState);
271
+ return [strategyOrBundleId, isBundle, triggerData, subData];
272
+ },
273
+ liquidationProtection(strategyOrBundleId, market, user, ratioState, targetRatio, triggerRatio) {
255
274
  const isBundle = true;
256
- const subData = subDataService.sparkLeverageManagementSubDataWithoutSubProxy.encode(targetRatio, ratioState);
275
+ const subData = subDataService.sparkLiquidationProtectionSubData.encode(targetRatio, ratioState);
257
276
  const triggerData = triggerService.sparkRatioTrigger.encode(user, market, triggerRatio, ratioState);
258
277
  return [strategyOrBundleId, isBundle, triggerData, subData];
259
278
  },
@@ -281,43 +300,31 @@ exports.crvUSDEncode = {
281
300
  return [strategyId, isBundle, triggerData, subData];
282
301
  },
283
302
  };
284
- function getMorphoBlueBundlesIds(network) {
285
- switch (network) {
286
- case enums_1.ChainId.Ethereum:
287
- return enums_1.Bundles.MainnetIds;
288
- case enums_1.ChainId.Base:
289
- return enums_1.Bundles.BaseIds;
290
- case enums_1.ChainId.Arbitrum:
291
- return enums_1.Bundles.ArbitrumIds;
292
- default:
293
- throw new Error(`Morpho Blue strategies are not supported on chain ${network}`);
294
- }
295
- }
296
- function getMorphoBlueBundleId(network, strategy, isEOA) {
297
- const bundlesIds = getMorphoBlueBundlesIds(network);
298
- switch (strategy) {
299
- case 'repay':
300
- return isEOA ? bundlesIds.MORPHO_BLUE_EOA_REPAY : bundlesIds.MORPHO_BLUE_REPAY;
301
- case 'boost':
302
- return isEOA ? bundlesIds.MORPHO_BLUE_EOA_BOOST : bundlesIds.MORPHO_BLUE_BOOST;
303
- case 'repayOnPrice':
304
- return isEOA ? bundlesIds.MORPHO_BLUE_EOA_REPAY_ON_PRICE : bundlesIds.MORPHO_BLUE_REPAY_ON_PRICE;
305
- case 'boostOnPrice':
306
- return isEOA ? bundlesIds.MORPHO_BLUE_EOA_BOOST_ON_PRICE : bundlesIds.MORPHO_BLUE_BOOST_ON_PRICE;
307
- case 'close':
308
- return isEOA ? bundlesIds.MORPHO_BLUE_EOA_CLOSE : bundlesIds.MORPHO_BLUE_CLOSE;
309
- default:
310
- throw new Error(`Unknown Morpho Blue strategy: ${strategy}`);
311
- }
312
- }
313
- exports.getMorphoBlueBundleId = getMorphoBlueBundleId;
314
303
  exports.morphoBlueEncode = {
315
304
  leverageManagement(marketId, loanToken, collToken, oracle, irm, lltv, ratioState, targetRatio, triggerRatio, user, isEOA, network) {
316
305
  const subData = subDataService.morphoBlueLeverageManagementSubData.encode(loanToken, collToken, oracle, irm, lltv, ratioState, targetRatio, user, isEOA);
317
306
  const triggerData = triggerService.morphoBlueRatioTrigger.encode(marketId, user, triggerRatio, ratioState);
318
307
  // over is boost, under is repay
319
308
  const isBoost = ratioState === enums_1.RatioState.OVER;
320
- const bundleId = getMorphoBlueBundleId(network, isBoost ? 'boost' : 'repay', isEOA);
309
+ let strategyOrBundleId;
310
+ if (network === enums_1.ChainId.Base) {
311
+ return [isBoost ? enums_1.Bundles.BaseIds.MORPHO_BLUE_BOOST : enums_1.Bundles.BaseIds.MORPHO_BLUE_REPAY, true, triggerData, subData];
312
+ }
313
+ const bundlesIds = network === enums_1.ChainId.Arbitrum ? enums_1.Bundles.ArbitrumIds : enums_1.Bundles.MainnetIds;
314
+ if (isBoost)
315
+ strategyOrBundleId = isEOA ? bundlesIds.MORPHO_BLUE_EOA_BOOST : bundlesIds.MORPHO_BLUE_BOOST;
316
+ else
317
+ strategyOrBundleId = isEOA ? bundlesIds.MORPHO_BLUE_EOA_REPAY : bundlesIds.MORPHO_BLUE_REPAY;
318
+ const isBundle = true;
319
+ return [strategyOrBundleId, isBundle, triggerData, subData];
320
+ },
321
+ liquidationProtection(marketId, loanToken, collToken, oracle, irm, lltv, ratioState, targetRatio, triggerRatio, user, isEOA, network) {
322
+ const subData = subDataService.morphoBlueLiquidationProtectionSubData.encode(loanToken, collToken, oracle, irm, lltv, ratioState, targetRatio, user, isEOA);
323
+ const triggerData = triggerService.morphoBlueRatioTrigger.encode(marketId, user, triggerRatio, ratioState);
324
+ // Type casting because there is no MORPHO_BLUE_EOA_LIQUIDATION_PROTECTION for Base chain.
325
+ // That is fine because we will just always send isEOA == false for Base chain.
326
+ const bundleNetwork = (0, utils_1.getBundleIdsByNetwork)(network);
327
+ const bundleId = isEOA ? bundleNetwork.MORPHO_BLUE_EOA_LIQUIDATION_PROTECTION : bundleNetwork.MORPHO_BLUE_SW_LIQUIDATION_PROTECTION;
321
328
  const isBundle = true;
322
329
  return [bundleId, isBundle, triggerData, subData];
323
330
  },
@@ -326,13 +333,6 @@ exports.morphoBlueEncode = {
326
333
  const triggerData = triggerService.morphoBluePriceTrigger.encode(oracle, collToken, loanToken, price, priceState);
327
334
  return [strategyOrBundleId, isBundle, triggerData, subData];
328
335
  },
329
- leverageManagementOnPriceGeneric(loanToken, collToken, oracle, irm, lltv, user, targetRatio, price, priceState, isBoost, isEOA, network) {
330
- const subData = subDataService.morphoBlueLeverageManagementOnPriceSubData.encode(loanToken, collToken, oracle, irm, lltv, targetRatio, user);
331
- const triggerData = triggerService.morphoBluePriceTrigger.encode(oracle, collToken, loanToken, price, priceState);
332
- const bundleId = getMorphoBlueBundleId(network, isBoost ? 'boostOnPrice' : 'repayOnPrice', isEOA);
333
- const isBundle = true;
334
- return [bundleId, isBundle, triggerData, subData];
335
- },
336
336
  closeOnPrice(strategyOrBundleId, loanToken, collToken, oracle, irm, lltv, user, stopLossPrice = 0, stopLossType = enums_1.CloseToAssetType.DEBT, takeProfitPrice = 0, takeProfitType = enums_1.CloseToAssetType.COLLATERAL) {
337
337
  const isBundle = true;
338
338
  const closeType = (0, utils_1.getCloseStrategyType)(stopLossPrice, stopLossType, takeProfitPrice, takeProfitType);
@@ -340,14 +340,6 @@ exports.morphoBlueEncode = {
340
340
  const triggerDataEncoded = triggerService.morphoBluePriceRangeTrigger.encode(oracle, collToken, loanToken, stopLossPrice, takeProfitPrice);
341
341
  return [strategyOrBundleId, isBundle, triggerDataEncoded, subDataEncoded];
342
342
  },
343
- closeOnPriceGeneric(loanToken, collToken, oracle, irm, lltv, user, stopLossPrice = 0, stopLossType = enums_1.CloseToAssetType.DEBT, takeProfitPrice = 0, takeProfitType = enums_1.CloseToAssetType.COLLATERAL, isEOA, network) {
344
- const isBundle = true;
345
- const closeType = (0, utils_1.getCloseStrategyType)(stopLossPrice, stopLossType, takeProfitPrice, takeProfitType);
346
- const subDataEncoded = subDataService.morphoBlueCloseOnPriceSubData.encode(loanToken, collToken, oracle, irm, lltv, user, closeType);
347
- const triggerDataEncoded = triggerService.morphoBluePriceRangeTrigger.encode(oracle, collToken, loanToken, stopLossPrice, takeProfitPrice);
348
- const bundleId = getMorphoBlueBundleId(network, 'close', isEOA);
349
- return [bundleId, isBundle, triggerDataEncoded, subDataEncoded];
350
- },
351
343
  };
352
344
  exports.liquityV2Encode = {
353
345
  leverageManagement(market, troveId, collToken, boldToken, ratioState, targetRatio, triggerRatio, strategyOrBundleId) {
@@ -384,6 +376,12 @@ exports.fluidEncode = {
384
376
  const triggerData = triggerService.fluidRatioTrigger.encode(nftId, triggerRatio, ratioState);
385
377
  return [strategyOrBundleId, isBundle, triggerData, subData];
386
378
  },
379
+ liquidationProtection(nftId, vault, ratioState, targetRatio, triggerRatio, strategyOrBundleId) {
380
+ const isBundle = true;
381
+ const subData = subDataService.fluidLiquidationProtectionSubData.encode(nftId, vault, ratioState, targetRatio);
382
+ const triggerData = triggerService.fluidRatioTrigger.encode(nftId, triggerRatio, ratioState);
383
+ return [strategyOrBundleId, isBundle, triggerData, subData];
384
+ },
387
385
  };
388
386
  exports.aaveV4Encode = {
389
387
  leverageManagement(strategyOrBundleId, owner, spoke, ratioState, targetRatio, triggerRatio) {
@@ -392,6 +390,12 @@ exports.aaveV4Encode = {
392
390
  const triggerData = triggerService.aaveV4RatioTrigger.encode(owner, spoke, triggerRatio, ratioState);
393
391
  return [strategyOrBundleId, isBundle, triggerData, subData];
394
392
  },
393
+ liquidationProtection(strategyOrBundleId, owner, spoke, ratioState, targetRatio, triggerRatio) {
394
+ const isBundle = true;
395
+ const subData = subDataService.aaveV4LiquidationProtectionSubData.encode(spoke, owner, ratioState, targetRatio);
396
+ const triggerData = triggerService.aaveV4RatioTrigger.encode(owner, spoke, triggerRatio, ratioState);
397
+ return [strategyOrBundleId, isBundle, triggerData, subData];
398
+ },
395
399
  leverageManagementOnPrice(strategyOrBundleId, owner, spoke, collAsset, collAssetId, debtAsset, debtAssetId, targetRatio, price, priceState, ratioState) {
396
400
  const isBundle = true;
397
401
  const subData = subDataService.aaveV4LeverageManagementOnPriceSubData.encode(spoke, owner, collAsset, collAssetId, debtAsset, debtAssetId, ratioState, targetRatio);
@@ -22,12 +22,8 @@ var __importStar = (this && this.__importStar) || function (mod) {
22
22
  __setModuleDefault(result, mod);
23
23
  return result;
24
24
  };
25
- var __importDefault = (this && this.__importDefault) || function (mod) {
26
- return (mod && mod.__esModule) ? mod : { "default": mod };
27
- };
28
25
  Object.defineProperty(exports, "__esModule", { value: true });
29
26
  const chai_1 = require("chai");
30
- const decimal_js_1 = __importDefault(require("decimal.js"));
31
27
  const sdk_1 = require("@defisaver/sdk");
32
28
  const tokens_1 = require("@defisaver/tokens");
33
29
  const web3Utils = __importStar(require("web3-utils"));
@@ -124,7 +120,7 @@ describe('Feature: strategySubService.ts', () => {
124
120
  });
125
121
  });
126
122
  });
127
- describe('leverageManagementWithoutSubProxy()', () => {
123
+ describe('leverageManagement()', () => {
128
124
  const examples = [
129
125
  // Repay scenario (isBoost=false, RatioState.UNDER)
130
126
  [
@@ -167,7 +163,7 @@ describe('Feature: strategySubService.ts', () => {
167
163
  ];
168
164
  examples.forEach(([expected, actual]) => {
169
165
  it(`Given ${actual} should return expected value: ${JSON.stringify(expected)}`, () => {
170
- (0, chai_1.expect)(strategySubService_1.makerEncode.leverageManagementWithoutSubProxy(...actual)).to.eql(expected);
166
+ (0, chai_1.expect)(strategySubService_1.makerEncode.leverageManagement(...actual)).to.eql(expected);
171
167
  });
172
168
  });
173
169
  });
@@ -294,21 +290,6 @@ describe('Feature: strategySubService.ts', () => {
294
290
  });
295
291
  });
296
292
  });
297
- describe('When testing strategySubService.chickenBondsEncode', () => {
298
- describe('rebond()', () => {
299
- const examples = [
300
- [
301
- ['0x00000000000000000000000000000000000000000000000000000000000005e3'],
302
- [1507]
303
- ]
304
- ];
305
- examples.forEach(([expected, actual]) => {
306
- it(`Given ${actual} should return expected value: ${JSON.stringify(expected)}`, () => {
307
- (0, chai_1.expect)(strategySubService_1.chickenBondsEncode.rebond(...actual)).to.eql(expected);
308
- });
309
- });
310
- });
311
- });
312
293
  describe('When testing strategySubService.aaveV3Encode', () => {
313
294
  describe('closeToAsset()', () => {
314
295
  const examples = [
@@ -998,25 +979,6 @@ describe('Feature: strategySubService.ts', () => {
998
979
  });
999
980
  });
1000
981
  });
1001
- describe('When testing strategySubService.morphoAaveV2Encode', () => {
1002
- describe('leverageManagement()', () => {
1003
- const examples = [
1004
- [
1005
- [new decimal_js_1.default(160).mul(1e16).toString(), new decimal_js_1.default(220).mul(1e16).toString(), new decimal_js_1.default(180).mul(1e16).toString(), new decimal_js_1.default(190).mul(1e16).toString(), true],
1006
- [160, 220, 180, 190, true]
1007
- ],
1008
- [
1009
- [new decimal_js_1.default(160).mul(1e16).toString(), new decimal_js_1.default(200).mul(1e16).toString(), new decimal_js_1.default(180).mul(1e16).toString(), new decimal_js_1.default(190).mul(1e16).toString(), false],
1010
- [160, 200, 180, 190, false]
1011
- ],
1012
- ];
1013
- examples.forEach(([expected, actual]) => {
1014
- it(`Given ${actual} should return expected value: ${JSON.stringify(expected)}`, () => {
1015
- (0, chai_1.expect)(strategySubService_1.morphoAaveV2Encode.leverageManagement(...actual)).to.eql(expected);
1016
- });
1017
- });
1018
- });
1019
- });
1020
982
  describe('When testing strategySubService.exchangeEncode', () => {
1021
983
  describe('dca()', () => {
1022
984
  const examples = [
@@ -1292,75 +1254,6 @@ describe('Feature: strategySubService.ts', () => {
1292
1254
  });
1293
1255
  });
1294
1256
  });
1295
- describe('leverageManagementOnPriceGeneric()', () => {
1296
- const examples = [
1297
- [
1298
- [
1299
- enums_1.Bundles.MainnetIds.MORPHO_BLUE_REPAY_ON_PRICE,
1300
- true,
1301
- ['0x000000000000000000000000870ac11d48b15db9a138cf899d20f13f79ba00bc0000000000000000000000007f39c581f595b53c5cb19bd0b3f8da6c935e2ca0000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc20000000000000000000000000000000000000000000000000000003a352944000000000000000000000000000000000000000000000000000000000000000001'],
1302
- [
1303
- '0x000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2',
1304
- '0x0000000000000000000000007f39c581f595b53c5cb19bd0b3f8da6c935e2ca0',
1305
- '0x000000000000000000000000870ac11d48b15db9a138cf899d20f13f79ba00bc',
1306
- '0x0000000000000000000000000000000000000000000000000000000000000000',
1307
- '0x0000000000000000000000000000000000000000000000000d1d507e40be8000',
1308
- '0x0000000000000000000000000000000000000000000000001bc16d674ec80000',
1309
- '0x0000000000000000000000001031d218133afab8c2b819b1366c7e434ad91e9c',
1310
- ],
1311
- ],
1312
- [
1313
- web3Utils.toChecksumAddress('0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2'),
1314
- web3Utils.toChecksumAddress('0x7f39C581F595B53c5cb19bD0b3f8dA6c935E2Ca0'),
1315
- web3Utils.toChecksumAddress('0x870aC11D48B15DB9a138Cf899d20F13F79Ba00BC'),
1316
- web3Utils.toChecksumAddress('0x0000000000000000000000000000000000000000'),
1317
- '945000000000000000',
1318
- web3Utils.toChecksumAddress('0x1031d218133AFaB8c2B819B1366c7E434Ad91E9c'),
1319
- 200,
1320
- 2500,
1321
- enums_1.RatioState.UNDER,
1322
- false,
1323
- false,
1324
- enums_1.ChainId.Ethereum,
1325
- ],
1326
- ],
1327
- [
1328
- [
1329
- enums_1.Bundles.MainnetIds.MORPHO_BLUE_BOOST_ON_PRICE,
1330
- true,
1331
- ['0x000000000000000000000000870ac11d48b15db9a138cf899d20f13f79ba00bc0000000000000000000000007f39c581f595b53c5cb19bd0b3f8da6c935e2ca0000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc20000000000000000000000000000000000000000000000000000005d21dba0000000000000000000000000000000000000000000000000000000000000000000'],
1332
- [
1333
- '0x000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2',
1334
- '0x0000000000000000000000007f39c581f595b53c5cb19bd0b3f8da6c935e2ca0',
1335
- '0x000000000000000000000000870ac11d48b15db9a138cf899d20f13f79ba00bc',
1336
- '0x0000000000000000000000000000000000000000000000000000000000000000',
1337
- '0x0000000000000000000000000000000000000000000000000d1d507e40be8000',
1338
- '0x00000000000000000000000000000000000000000000000016345785d8a00000',
1339
- '0x0000000000000000000000001031d218133afab8c2b819b1366c7e434ad91e9c',
1340
- ],
1341
- ],
1342
- [
1343
- web3Utils.toChecksumAddress('0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2'),
1344
- web3Utils.toChecksumAddress('0x7f39C581F595B53c5cb19bD0b3f8dA6c935E2Ca0'),
1345
- web3Utils.toChecksumAddress('0x870aC11D48B15DB9a138Cf899d20F13F79Ba00BC'),
1346
- web3Utils.toChecksumAddress('0x0000000000000000000000000000000000000000'),
1347
- '945000000000000000',
1348
- web3Utils.toChecksumAddress('0x1031d218133AFaB8c2B819B1366c7E434Ad91E9c'),
1349
- 160,
1350
- 4000,
1351
- enums_1.RatioState.OVER,
1352
- true,
1353
- false,
1354
- enums_1.ChainId.Ethereum,
1355
- ],
1356
- ],
1357
- ];
1358
- examples.forEach(([expected, actual]) => {
1359
- it(`Given ${JSON.stringify(actual)} should return expected value: ${JSON.stringify(expected)}`, () => {
1360
- (0, chai_1.expect)(strategySubService_1.morphoBlueEncode.leverageManagementOnPriceGeneric(...actual)).to.eql(expected);
1361
- });
1362
- });
1363
- });
1364
1257
  describe('closeOnPrice()', () => {
1365
1258
  const examples = [
1366
1259
  [
@@ -1389,7 +1282,7 @@ describe('Feature: strategySubService.ts', () => {
1389
1282
  1500,
1390
1283
  enums_1.CloseToAssetType.DEBT,
1391
1284
  4000,
1392
- enums_1.CloseToAssetType.COLLATERAL,
1285
+ enums_1.CloseToAssetType.COLLATERAL
1393
1286
  ]
1394
1287
  ],
1395
1288
  ];
@@ -1399,45 +1292,6 @@ describe('Feature: strategySubService.ts', () => {
1399
1292
  });
1400
1293
  });
1401
1294
  });
1402
- describe('closeOnPriceGeneric()', () => {
1403
- const examples = [
1404
- [
1405
- [
1406
- enums_1.Bundles.MainnetIds.MORPHO_BLUE_CLOSE,
1407
- true,
1408
- ['0x000000000000000000000000870ac11d48b15db9a138cf899d20f13f79ba00bc0000000000000000000000007f39c581f595b53c5cb19bd0b3f8da6c935e2ca0000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc200000000000000000000000000000000000000000000000000000022ecb25c000000000000000000000000000000000000000000000000000000005d21dba000'],
1409
- [
1410
- '0x000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2',
1411
- '0x0000000000000000000000007f39c581f595b53c5cb19bd0b3f8da6c935e2ca0',
1412
- '0x000000000000000000000000870ac11d48b15db9a138cf899d20f13f79ba00bc',
1413
- '0x0000000000000000000000000000000000000000000000000000000000000000',
1414
- '0x0000000000000000000000000000000000000000000000000d1d507e40be8000',
1415
- '0x0000000000000000000000001031d218133afab8c2b819b1366c7e434ad91e9c',
1416
- '0x0000000000000000000000000000000000000000000000000000000000000005',
1417
- ],
1418
- ],
1419
- [
1420
- web3Utils.toChecksumAddress('0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2'),
1421
- web3Utils.toChecksumAddress('0x7f39C581F595B53c5cb19bD0b3f8dA6c935E2Ca0'),
1422
- web3Utils.toChecksumAddress('0x870aC11D48B15DB9a138Cf899d20F13F79Ba00BC'),
1423
- web3Utils.toChecksumAddress('0x0000000000000000000000000000000000000000'),
1424
- '945000000000000000',
1425
- web3Utils.toChecksumAddress('0x1031d218133AFaB8c2B819B1366c7E434Ad91E9c'),
1426
- 1500,
1427
- enums_1.CloseToAssetType.DEBT,
1428
- 4000,
1429
- enums_1.CloseToAssetType.COLLATERAL,
1430
- false,
1431
- enums_1.ChainId.Ethereum,
1432
- ]
1433
- ],
1434
- ];
1435
- examples.forEach(([expected, actual]) => {
1436
- it(`Given ${JSON.stringify(actual)} should return expected value: ${JSON.stringify(expected)}`, () => {
1437
- (0, chai_1.expect)(strategySubService_1.morphoBlueEncode.closeOnPriceGeneric(...actual)).to.eql(expected);
1438
- });
1439
- });
1440
- });
1441
1295
  });
1442
1296
  describe('When testing strategySubService.sparkEncode', () => {
1443
1297
  describe('leverageManagementOnPrice()', () => {