@defisaver/automation-sdk 3.3.15 → 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 (42) hide show
  1. package/cjs/constants/index.js +145 -0
  2. package/cjs/index.d.ts +2 -2
  3. package/cjs/index.js +5 -2
  4. package/cjs/services/strategiesService.js +158 -9
  5. package/cjs/services/strategySubService.d.ts +17 -16
  6. package/cjs/services/strategySubService.js +69 -28
  7. package/cjs/services/strategySubService.test.js +69 -40
  8. package/cjs/services/subDataService.d.ts +70 -20
  9. package/cjs/services/subDataService.js +23 -79
  10. package/cjs/services/subDataService.test.js +117 -202
  11. package/cjs/services/triggerService.test.js +60 -0
  12. package/cjs/services/utils.d.ts +2 -1
  13. package/cjs/services/utils.js +14 -1
  14. package/cjs/types/enums.d.ts +39 -6
  15. package/cjs/types/enums.js +33 -0
  16. package/esm/constants/index.js +145 -0
  17. package/esm/index.d.ts +2 -2
  18. package/esm/index.js +5 -2
  19. package/esm/services/strategiesService.js +158 -9
  20. package/esm/services/strategySubService.d.ts +17 -16
  21. package/esm/services/strategySubService.js +69 -28
  22. package/esm/services/strategySubService.test.js +70 -38
  23. package/esm/services/subDataService.d.ts +70 -20
  24. package/esm/services/subDataService.js +21 -77
  25. package/esm/services/subDataService.test.js +118 -200
  26. package/esm/services/triggerService.test.js +61 -1
  27. package/esm/services/utils.d.ts +2 -1
  28. package/esm/services/utils.js +13 -1
  29. package/esm/types/enums.d.ts +39 -6
  30. package/esm/types/enums.js +33 -0
  31. package/package.json +1 -1
  32. package/src/constants/index.ts +147 -1
  33. package/src/index.ts +22 -6
  34. package/src/services/strategiesService.ts +222 -9
  35. package/src/services/strategySubService.test.ts +86 -46
  36. package/src/services/strategySubService.ts +166 -39
  37. package/src/services/subDataService.test.ts +128 -214
  38. package/src/services/subDataService.ts +42 -106
  39. package/src/services/triggerService.test.ts +69 -0
  40. package/src/services/utils.test.ts +1 -1
  41. package/src/services/utils.ts +15 -1
  42. package/src/types/enums.ts +33 -2
@@ -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.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
  },
@@ -299,6 +318,16 @@ exports.morphoBlueEncode = {
299
318
  const isBundle = true;
300
319
  return [strategyOrBundleId, isBundle, triggerData, subData];
301
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;
328
+ const isBundle = true;
329
+ return [bundleId, isBundle, triggerData, subData];
330
+ },
302
331
  leverageManagementOnPrice(strategyOrBundleId, isBundle = true, loanToken, collToken, oracle, irm, lltv, user, targetRatio, price, priceState) {
303
332
  const subData = subDataService.morphoBlueLeverageManagementOnPriceSubData.encode(loanToken, collToken, oracle, irm, lltv, targetRatio, user);
304
333
  const triggerData = triggerService.morphoBluePriceTrigger.encode(oracle, collToken, loanToken, price, priceState);
@@ -347,6 +376,12 @@ exports.fluidEncode = {
347
376
  const triggerData = triggerService.fluidRatioTrigger.encode(nftId, triggerRatio, ratioState);
348
377
  return [strategyOrBundleId, isBundle, triggerData, subData];
349
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
+ },
350
385
  };
351
386
  exports.aaveV4Encode = {
352
387
  leverageManagement(strategyOrBundleId, owner, spoke, ratioState, targetRatio, triggerRatio) {
@@ -355,6 +390,12 @@ exports.aaveV4Encode = {
355
390
  const triggerData = triggerService.aaveV4RatioTrigger.encode(owner, spoke, triggerRatio, ratioState);
356
391
  return [strategyOrBundleId, isBundle, triggerData, subData];
357
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
+ },
358
399
  leverageManagementOnPrice(strategyOrBundleId, owner, spoke, collAsset, collAssetId, debtAsset, debtAssetId, targetRatio, price, priceState, ratioState) {
359
400
  const isBundle = true;
360
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 = [
@@ -1225,6 +1187,73 @@ describe('Feature: strategySubService.ts', () => {
1225
1187
  });
1226
1188
  });
1227
1189
  });
1190
+ describe('leverageManagementOnPrice()', () => {
1191
+ const examples = [
1192
+ [
1193
+ [
1194
+ enums_1.Bundles.MainnetIds.MORPHO_BLUE_REPAY_ON_PRICE,
1195
+ true,
1196
+ ['0x000000000000000000000000870ac11d48b15db9a138cf899d20f13f79ba00bc0000000000000000000000007f39c581f595b53c5cb19bd0b3f8da6c935e2ca0000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc20000000000000000000000000000000000000000000000000000003a352944000000000000000000000000000000000000000000000000000000000000000001'],
1197
+ [
1198
+ '0x000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2',
1199
+ '0x0000000000000000000000007f39c581f595b53c5cb19bd0b3f8da6c935e2ca0',
1200
+ '0x000000000000000000000000870ac11d48b15db9a138cf899d20f13f79ba00bc',
1201
+ '0x0000000000000000000000000000000000000000000000000000000000000000',
1202
+ '0x0000000000000000000000000000000000000000000000000d1d507e40be8000',
1203
+ '0x0000000000000000000000000000000000000000000000001bc16d674ec80000',
1204
+ '0x0000000000000000000000001031d218133afab8c2b819b1366c7e434ad91e9c',
1205
+ ],
1206
+ ],
1207
+ [
1208
+ enums_1.Bundles.MainnetIds.MORPHO_BLUE_REPAY_ON_PRICE,
1209
+ true,
1210
+ web3Utils.toChecksumAddress('0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2'),
1211
+ web3Utils.toChecksumAddress('0x7f39C581F595B53c5cb19bD0b3f8dA6c935E2Ca0'),
1212
+ web3Utils.toChecksumAddress('0x870aC11D48B15DB9a138Cf899d20F13F79Ba00BC'),
1213
+ web3Utils.toChecksumAddress('0x0000000000000000000000000000000000000000'),
1214
+ '945000000000000000',
1215
+ web3Utils.toChecksumAddress('0x1031d218133AFaB8c2B819B1366c7E434Ad91E9c'),
1216
+ 200,
1217
+ 2500,
1218
+ enums_1.RatioState.UNDER,
1219
+ ],
1220
+ ],
1221
+ [
1222
+ [
1223
+ enums_1.Bundles.MainnetIds.MORPHO_BLUE_BOOST_ON_PRICE,
1224
+ true,
1225
+ ['0x000000000000000000000000870ac11d48b15db9a138cf899d20f13f79ba00bc0000000000000000000000007f39c581f595b53c5cb19bd0b3f8da6c935e2ca0000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc20000000000000000000000000000000000000000000000000000005d21dba0000000000000000000000000000000000000000000000000000000000000000000'],
1226
+ [
1227
+ '0x000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2',
1228
+ '0x0000000000000000000000007f39c581f595b53c5cb19bd0b3f8da6c935e2ca0',
1229
+ '0x000000000000000000000000870ac11d48b15db9a138cf899d20f13f79ba00bc',
1230
+ '0x0000000000000000000000000000000000000000000000000000000000000000',
1231
+ '0x0000000000000000000000000000000000000000000000000d1d507e40be8000',
1232
+ '0x00000000000000000000000000000000000000000000000016345785d8a00000',
1233
+ '0x0000000000000000000000001031d218133afab8c2b819b1366c7e434ad91e9c',
1234
+ ],
1235
+ ],
1236
+ [
1237
+ enums_1.Bundles.MainnetIds.MORPHO_BLUE_BOOST_ON_PRICE,
1238
+ true,
1239
+ web3Utils.toChecksumAddress('0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2'),
1240
+ web3Utils.toChecksumAddress('0x7f39C581F595B53c5cb19bD0b3f8dA6c935E2Ca0'),
1241
+ web3Utils.toChecksumAddress('0x870aC11D48B15DB9a138Cf899d20F13F79Ba00BC'),
1242
+ web3Utils.toChecksumAddress('0x0000000000000000000000000000000000000000'),
1243
+ '945000000000000000',
1244
+ web3Utils.toChecksumAddress('0x1031d218133AFaB8c2B819B1366c7E434Ad91E9c'),
1245
+ 160,
1246
+ 4000,
1247
+ enums_1.RatioState.OVER,
1248
+ ],
1249
+ ],
1250
+ ];
1251
+ examples.forEach(([expected, actual]) => {
1252
+ it(`Given ${JSON.stringify(actual)} should return expected value: ${JSON.stringify(expected)}`, () => {
1253
+ (0, chai_1.expect)(strategySubService_1.morphoBlueEncode.leverageManagementOnPrice(...actual)).to.eql(expected);
1254
+ });
1255
+ });
1256
+ });
1228
1257
  describe('closeOnPrice()', () => {
1229
1258
  const examples = [
1230
1259
  [
@@ -1,5 +1,5 @@
1
1
  import type { EthereumAddress } from '../types';
2
- import type { CloseStrategyType, OrderType } from '../types/enums';
2
+ import type { CloseStrategyType } from '../types/enums';
3
3
  import { ChainId, RatioState } from '../types/enums';
4
4
  /**
5
5
  _______ _______ .______ .______ _______ ______ ___ .___________. _______ _______
@@ -10,13 +10,11 @@ import { ChainId, RatioState } from '../types/enums';
10
10
  |_______/ |_______|| _| | _| `._____||_______| \______/__/ \__\ |__| |_______||_______/
11
11
  */
12
12
  export declare const morphoAaveV2LeverageManagementSubData: {
13
- encode(triggerRepayRatio: number, triggerBoostRatio: number, targetBoostRatio: number, targetRepayRatio: number, boostEnabled: boolean): string[];
14
13
  decode(subData: string[]): {
15
14
  targetRatio: number;
16
15
  };
17
16
  };
18
17
  export declare const cBondsRebondSubData: {
19
- encode(bondId: number | string): string[];
20
18
  decode(subData: string[]): {
21
19
  bondId: string;
22
20
  };
@@ -57,13 +55,21 @@ export declare const makerCloseSubData: {
57
55
  closeToAssetAddr: EthereumAddress;
58
56
  };
59
57
  };
60
- export declare const makerLeverageManagementSubData: {
58
+ export declare const legacyMakerLeverageManagementSubData: {
61
59
  decode: (subData: string[]) => {
62
60
  vaultId: number;
63
61
  targetRatio: number;
64
62
  };
65
63
  };
66
- export declare const makerLeverageManagementWithoutSubProxy: {
64
+ export declare const makerLeverageManagementSubData: {
65
+ encode(vaultId: number, targetRatio: number, daiAddr?: EthereumAddress): string[];
66
+ decode(subData: string[]): {
67
+ vaultId: number;
68
+ targetRatio: number;
69
+ daiAddr: string;
70
+ };
71
+ };
72
+ export declare const makerLiquidationProtectionSubData: {
67
73
  encode(vaultId: number, targetRatio: number, daiAddr?: EthereumAddress): string[];
68
74
  decode(subData: string[]): {
69
75
  vaultId: number;
@@ -84,12 +90,12 @@ export declare const liquityRepayFromSavingsSubData: {
84
90
  targetRatio: number;
85
91
  };
86
92
  };
87
- export declare const liquityLeverageManagementSubData: {
93
+ export declare const legacyLiquityLeverageManagementSubData: {
88
94
  decode: (subData: string[]) => {
89
95
  targetRatio: number;
90
96
  };
91
97
  };
92
- export declare const liquityLeverageManagementSubDataWithoutSubProxy: {
98
+ export declare const liquityLeverageManagementSubData: {
93
99
  encode(targetRatio: number, ratioState: RatioState): string[];
94
100
  decode(subData: string[]): {
95
101
  targetRatio: number;
@@ -178,13 +184,12 @@ export declare const liquityV2PaybackSubData: {
178
184
  / _____ \ / _____ \ \ / | |____ \ / / /_
179
185
  /__/ \__\ /__/ \__\ \__/ |_______| \__/ |____|
180
186
  */
181
- export declare const aaveV2LeverageManagementSubData: {
182
- encode(triggerRepayRatio: number, triggerBoostRatio: number, targetBoostRatio: number, targetRepayRatio: number, boostEnabled: boolean): string[];
187
+ export declare const legacyAaveV2LeverageManagementSubData: {
183
188
  decode(subData: string[]): {
184
189
  targetRatio: number;
185
190
  };
186
191
  };
187
- export declare const aaveV2LeverageManagementSubDataWithoutSubProxy: {
192
+ export declare const aaveV2LeverageManagementSubData: {
188
193
  encode(market: EthereumAddress, targetRatio: number, ratioState: RatioState): string[];
189
194
  decode(subData: string[]): {
190
195
  market: EthereumAddress;
@@ -200,12 +205,19 @@ export declare const aaveV2LeverageManagementSubDataWithoutSubProxy: {
200
205
  / _____ \ / _____ \ \ / | |____ \ / ___) |
201
206
  /__/ \__\ /__/ \__\ \__/ |_______| \__/ |____/
202
207
  */
208
+ export declare const legacyAaveV3LeverageManagementSubData: {
209
+ decode(subData: string[]): {
210
+ targetRatio: number;
211
+ };
212
+ };
203
213
  export declare const aaveV3LeverageManagementSubData: {
214
+ encode(targetRatio: number, ratioState: RatioState, market: EthereumAddress, user: EthereumAddress, isGeneric: boolean): string[];
204
215
  decode(subData: string[]): {
205
216
  targetRatio: number;
217
+ ratioState: RatioState;
206
218
  };
207
219
  };
208
- export declare const aaveV3LeverageManagementSubDataWithoutSubProxy: {
220
+ export declare const aaveV3LiquidationProtectionSubData: {
209
221
  encode(targetRatio: number, ratioState: RatioState, market: EthereumAddress, user: EthereumAddress, isGeneric: boolean): string[];
210
222
  decode(subData: string[]): {
211
223
  targetRatio: number;
@@ -284,6 +296,15 @@ export declare const aaveV4LeverageManagementSubData: {
284
296
  targetRatio: number;
285
297
  };
286
298
  };
299
+ export declare const aaveV4LiquidationProtectionSubData: {
300
+ encode: (spoke: EthereumAddress, owner: EthereumAddress, ratioState: RatioState, targetRatio: number) => string[];
301
+ decode: (subData: string[]) => {
302
+ spoke: string;
303
+ owner: string;
304
+ ratioState: RatioState;
305
+ targetRatio: number;
306
+ };
307
+ };
287
308
  export declare const aaveV4LeverageManagementOnPriceSubData: {
288
309
  encode: (spoke: EthereumAddress, owner: EthereumAddress, collAsset: EthereumAddress, collAssetId: number, debtAsset: EthereumAddress, debtAssetId: number, ratioState: RatioState, targetRatio: number) => string[];
289
310
  decode: (subData: string[]) => {
@@ -329,13 +350,12 @@ export declare const aaveV4CollateralSwitchSubData: {
329
350
  | `----.| `--' | | | | | | | \ / / /_
330
351
  \______| \______/ |__| |__| | _| \__/ |____|
331
352
  */
332
- export declare const compoundV2LeverageManagementSubData: {
333
- encode(triggerRepayRatio: number, triggerBoostRatio: number, targetBoostRatio: number, targetRepayRatio: number, boostEnabled: boolean): string[];
353
+ export declare const legacyCompoundV2LeverageManagementSubData: {
334
354
  decode(subData: string[]): {
335
355
  targetRatio: number;
336
356
  };
337
357
  };
338
- export declare const compoundV2LeverageManagementSubDataWithoutSubProxy: {
358
+ export declare const compoundV2LeverageManagementSubData: {
339
359
  encode(targetRatio: number, ratioState: RatioState): string[];
340
360
  decode(subData: string[]): {
341
361
  targetRatio: number;
@@ -351,12 +371,15 @@ export declare const compoundV2LeverageManagementSubDataWithoutSubProxy: {
351
371
  \______| \______/ |__| |__| | _| \__/ |____/
352
372
  */
353
373
  export declare const compoundV3LeverageManagementSubData: {
354
- encode(market: EthereumAddress, baseToken: EthereumAddress, triggerRepayRatio: number, triggerBoostRatio: number, targetBoostRatio: number, targetRepayRatio: number, boostEnabled: boolean, isEOA: boolean): string[];
374
+ encode(market: EthereumAddress, baseToken: EthereumAddress, targetRatio: number, ratioState: RatioState): string[];
355
375
  decode(subData: string[]): {
376
+ market: EthereumAddress;
377
+ baseToken: EthereumAddress;
356
378
  targetRatio: number;
379
+ ratioState: RatioState;
357
380
  };
358
381
  };
359
- export declare const compoundV3LeverageManagementSubDataWithoutSubProxy: {
382
+ export declare const compoundV3LiquidationProtectionSubData: {
360
383
  encode(market: EthereumAddress, baseToken: EthereumAddress, targetRatio: number, ratioState: RatioState): string[];
361
384
  decode(subData: string[]): {
362
385
  market: EthereumAddress;
@@ -403,15 +426,14 @@ export declare const exchangeDcaSubData: {
403
426
  interval: string;
404
427
  };
405
428
  };
406
- export declare const exchangeLimitOrderSubData: {
407
- encode(fromToken: EthereumAddress, toToken: EthereumAddress, amount: string, targetPrice: string, goodUntil: string | number, orderType: OrderType): string[];
429
+ export declare const legacyExchangeLimitOrderSubData: {
408
430
  decode: (subData: string[], chainId: ChainId) => {
409
431
  fromToken: string;
410
432
  toToken: string;
411
433
  amount: string;
412
434
  };
413
435
  };
414
- export declare const exchangeLimitOrderSubDataWithoutSubProxy: {
436
+ export declare const exchangeLimitOrderSubData: {
415
437
  encode(fromToken: EthereumAddress, toToken: EthereumAddress, amount: string): string[];
416
438
  decode: (subData: string[], chainId: ChainId) => {
417
439
  fromToken: string;
@@ -427,12 +449,19 @@ export declare const exchangeLimitOrderSubDataWithoutSubProxy: {
427
449
  .----) | | | / _____ \ | |\ \----.| . \
428
450
  |_______/ | _| /__/ \__\ | _| `._____||__|\__\
429
451
  */
452
+ export declare const legacySparkLeverageManagementSubData: {
453
+ decode(subData: string[]): {
454
+ targetRatio: number;
455
+ };
456
+ };
430
457
  export declare const sparkLeverageManagementSubData: {
458
+ encode(targetRatio: number, ratioState: RatioState): string[];
431
459
  decode(subData: string[]): {
432
460
  targetRatio: number;
461
+ ratioState: RatioState;
433
462
  };
434
463
  };
435
- export declare const sparkLeverageManagementSubDataWithoutSubProxy: {
464
+ export declare const sparkLiquidationProtectionSubData: {
436
465
  encode(targetRatio: number, ratioState: RatioState): string[];
437
466
  decode(subData: string[]): {
438
467
  targetRatio: number;
@@ -517,6 +546,18 @@ export declare const morphoBlueLeverageManagementSubData: {
517
546
  targetRatio: number;
518
547
  };
519
548
  };
549
+ export declare const morphoBlueLiquidationProtectionSubData: {
550
+ encode: (loanToken: EthereumAddress, collToken: EthereumAddress, oracle: EthereumAddress, irm: EthereumAddress, lltv: string, ratioState: RatioState, targetRatio: number, user: EthereumAddress, isEOA: boolean) => string[];
551
+ decode: (subData: string[]) => {
552
+ loanToken: string;
553
+ collToken: string;
554
+ oracle: string;
555
+ irm: string;
556
+ lltv: string;
557
+ user: string;
558
+ targetRatio: number;
559
+ };
560
+ };
520
561
  export declare const morphoBlueLeverageManagementOnPriceSubData: {
521
562
  encode(loanToken: EthereumAddress, collToken: EthereumAddress, oracle: EthereumAddress, irm: EthereumAddress, lltv: string, targetRatio: number, user: EthereumAddress): string[];
522
563
  decode(subData: string[]): {
@@ -558,3 +599,12 @@ export declare const fluidLeverageManagementSubData: {
558
599
  targetRatio: number;
559
600
  };
560
601
  };
602
+ export declare const fluidLiquidationProtectionSubData: {
603
+ encode: (nftId: string, vault: EthereumAddress, ratioState: RatioState, targetRatio: number) => string[];
604
+ decode: (subData: string[]) => {
605
+ nftId: string;
606
+ vault: string;
607
+ ratioState: RatioState;
608
+ targetRatio: number;
609
+ };
610
+ };