@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.
- package/cjs/constants/index.js +145 -0
- package/cjs/index.d.ts +2 -2
- package/cjs/index.js +5 -2
- package/cjs/services/strategiesService.js +158 -9
- package/cjs/services/strategySubService.d.ts +17 -16
- package/cjs/services/strategySubService.js +69 -28
- package/cjs/services/strategySubService.test.js +69 -40
- package/cjs/services/subDataService.d.ts +70 -20
- package/cjs/services/subDataService.js +23 -79
- package/cjs/services/subDataService.test.js +117 -202
- package/cjs/services/triggerService.test.js +60 -0
- package/cjs/services/utils.d.ts +2 -1
- package/cjs/services/utils.js +14 -1
- package/cjs/types/enums.d.ts +39 -6
- package/cjs/types/enums.js +33 -0
- package/esm/constants/index.js +145 -0
- package/esm/index.d.ts +2 -2
- package/esm/index.js +5 -2
- package/esm/services/strategiesService.js +158 -9
- package/esm/services/strategySubService.d.ts +17 -16
- package/esm/services/strategySubService.js +69 -28
- package/esm/services/strategySubService.test.js +70 -38
- package/esm/services/subDataService.d.ts +70 -20
- package/esm/services/subDataService.js +21 -77
- package/esm/services/subDataService.test.js +118 -200
- package/esm/services/triggerService.test.js +61 -1
- package/esm/services/utils.d.ts +2 -1
- package/esm/services/utils.js +13 -1
- package/esm/types/enums.d.ts +39 -6
- package/esm/types/enums.js +33 -0
- package/package.json +1 -1
- package/src/constants/index.ts +147 -1
- package/src/index.ts +22 -6
- package/src/services/strategiesService.ts +222 -9
- package/src/services/strategySubService.test.ts +86 -46
- package/src/services/strategySubService.ts +166 -39
- package/src/services/subDataService.test.ts +128 -214
- package/src/services/subDataService.ts +42 -106
- package/src/services/triggerService.test.ts +69 -0
- package/src/services/utils.test.ts +1 -1
- package/src/services/utils.ts +15 -1
- 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.
|
|
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
|
-
|
|
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.
|
|
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
|
-
|
|
107
|
+
leverageManagement(strategyOrBundleId, user, ratioState, targetRatio, triggerRatio) {
|
|
97
108
|
const isBundle = true;
|
|
98
|
-
const subData = subDataService.
|
|
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
|
-
|
|
139
|
+
leverageManagement(strategyOrBundleId, market, user, ratioState, targetRatio, triggerRatio) {
|
|
134
140
|
const isBundle = true;
|
|
135
|
-
const subData = subDataService.
|
|
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
|
-
|
|
168
|
+
leverageManagement(strategyOrBundleId, market, user, ratioState, targetRatio, triggerRatio, isGeneric = false) {
|
|
163
169
|
const isBundle = true;
|
|
164
|
-
const subData = subDataService.
|
|
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
|
-
|
|
201
|
+
leverageManagement(strategyOrBundleId, user, ratioState, targetRatio, triggerRatio) {
|
|
190
202
|
const isBundle = true;
|
|
191
|
-
const subData = subDataService.
|
|
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
|
-
|
|
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.
|
|
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
|
-
|
|
244
|
+
limitOrder(fromToken, toToken, amount, targetPrice, goodUntil, orderType, fromTokenDecimals, toTokenDecimals, network) {
|
|
232
245
|
(0, utils_1.requireAddresses)([fromToken, toToken]);
|
|
233
|
-
const subData = subDataService.
|
|
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
|
-
|
|
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.
|
|
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('
|
|
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.
|
|
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
|
|
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
|
|
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
|
|
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
|
|
93
|
+
export declare const legacyLiquityLeverageManagementSubData: {
|
|
88
94
|
decode: (subData: string[]) => {
|
|
89
95
|
targetRatio: number;
|
|
90
96
|
};
|
|
91
97
|
};
|
|
92
|
-
export declare const
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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,
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
+
};
|