@defisaver/automation-sdk 3.1.10 → 3.1.14-spark-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/automation/private/StrategiesAutomation.d.ts +5 -3
- package/cjs/automation/private/StrategiesAutomation.js +27 -10
- package/cjs/automation/private/StrategiesAutomation.test.js +25 -0
- package/cjs/constants/index.d.ts +1 -0
- package/cjs/constants/index.js +352 -11
- package/cjs/index.d.ts +2 -1
- package/cjs/index.js +1 -1
- package/cjs/services/ethereumService.js +21 -14
- package/cjs/services/ethereumService.test.js +3 -0
- package/cjs/services/strategiesService.js +329 -54
- package/cjs/services/strategiesService.test.js +1 -0
- package/cjs/services/strategySubService.d.ts +24 -5
- package/cjs/services/strategySubService.js +116 -10
- package/cjs/services/strategySubService.test.js +1049 -173
- package/cjs/services/subDataService.d.ts +361 -88
- package/cjs/services/subDataService.js +799 -249
- package/cjs/services/subDataService.test.js +1287 -142
- package/cjs/services/triggerService.d.ts +100 -9
- package/cjs/services/triggerService.js +188 -19
- package/cjs/services/triggerService.test.js +437 -46
- package/cjs/services/utils.d.ts +1 -1
- package/cjs/services/utils.js +10 -2
- package/cjs/services/utils.test.js +0 -77
- package/cjs/types/enums.d.ts +88 -12
- package/cjs/types/enums.js +78 -2
- package/cjs/types/index.d.ts +59 -1
- package/esm/automation/private/StrategiesAutomation.d.ts +5 -3
- package/esm/automation/private/StrategiesAutomation.js +27 -10
- package/esm/automation/private/StrategiesAutomation.test.js +25 -0
- package/esm/constants/index.d.ts +1 -0
- package/esm/constants/index.js +351 -10
- package/esm/index.d.ts +2 -1
- package/esm/index.js +2 -2
- package/esm/services/ethereumService.js +21 -14
- package/esm/services/ethereumService.test.js +3 -0
- package/esm/services/strategiesService.js +330 -55
- package/esm/services/strategiesService.test.js +1 -0
- package/esm/services/strategySubService.d.ts +24 -5
- package/esm/services/strategySubService.js +115 -9
- package/esm/services/strategySubService.test.js +1052 -176
- package/esm/services/subDataService.d.ts +361 -88
- package/esm/services/subDataService.js +799 -249
- package/esm/services/subDataService.test.js +1288 -143
- package/esm/services/triggerService.d.ts +100 -9
- package/esm/services/triggerService.js +187 -18
- package/esm/services/triggerService.test.js +438 -47
- package/esm/services/utils.d.ts +1 -1
- package/esm/services/utils.js +10 -2
- package/esm/services/utils.test.js +1 -52
- package/esm/types/enums.d.ts +88 -12
- package/esm/types/enums.js +78 -2
- package/esm/types/index.d.ts +59 -1
- package/package.json +4 -5
- package/src/automation/private/StrategiesAutomation.test.ts +40 -0
- package/src/automation/private/StrategiesAutomation.ts +38 -15
- package/src/constants/index.ts +353 -11
- package/src/index.ts +4 -2
- package/src/services/ethereumService.test.ts +3 -0
- package/src/services/ethereumService.ts +23 -16
- package/src/services/strategiesService.test.ts +1 -0
- package/src/services/strategiesService.ts +387 -72
- package/src/services/strategySubService.test.ts +1330 -316
- package/src/services/strategySubService.ts +365 -12
- package/src/services/subDataService.test.ts +1413 -170
- package/src/services/subDataService.ts +1148 -431
- package/src/services/triggerService.test.ts +482 -52
- package/src/services/triggerService.ts +272 -27
- package/src/services/utils.test.ts +0 -59
- package/src/services/utils.ts +15 -4
- package/src/types/enums.ts +78 -2
- package/src/types/index.ts +74 -1
- package/umd/index.js +0 -34219
|
@@ -2,14 +2,11 @@ import { getAssetInfoByAddress } from '@defisaver/tokens';
|
|
|
2
2
|
import { cloneDeep } from 'lodash';
|
|
3
3
|
import Web3 from 'web3';
|
|
4
4
|
import { BUNDLES_INFO, STRATEGIES_INFO } from '../constants';
|
|
5
|
-
import { ChainId, ProtocolIdentifiers, Strategies } from '../types/enums';
|
|
5
|
+
import { ChainId, ProtocolIdentifiers, Strategies, } from '../types/enums';
|
|
6
6
|
import { getPositionId, getRatioStateInfoForAaveCloseStrategy, getStopLossAndTakeProfitTypeByCloseStrategyType, isRatioStateOver, wethToEthByAddress, } from './utils';
|
|
7
7
|
import * as subDataService from './subDataService';
|
|
8
8
|
import * as triggerService from './triggerService';
|
|
9
9
|
const web3 = new Web3();
|
|
10
|
-
const SPARK_MARKET_ADDRESSES = {
|
|
11
|
-
[ChainId.Ethereum]: '0x02C3eA4e34C0cBd694D2adFa2c690EECbC1793eE',
|
|
12
|
-
};
|
|
13
10
|
const AAVE_V3_MARKET_ADDRESSES = {
|
|
14
11
|
[ChainId.Ethereum]: '0x2f39d218133AFaB8F2B819B1066c7E434Ad94E9e',
|
|
15
12
|
[ChainId.Optimism]: '0xa97684ead0e402dC232d5A977953DF7ECBaB3CDb',
|
|
@@ -160,21 +157,29 @@ function parseAaveV2LeverageManagement(position, parseData) {
|
|
|
160
157
|
}
|
|
161
158
|
function parseAaveV3LeverageManagement(position, parseData) {
|
|
162
159
|
const _position = cloneDeep(position);
|
|
163
|
-
const { subStruct, subId } = parseData.subscriptionEventData;
|
|
160
|
+
const { subStruct, subId, subHash } = parseData.subscriptionEventData;
|
|
164
161
|
const { isEnabled } = parseData.strategiesSubsData;
|
|
165
162
|
const triggerData = triggerService.aaveV3RatioTrigger.decode(subStruct.triggerData);
|
|
166
|
-
const
|
|
163
|
+
const isEOA = _position.strategy.strategyId.includes('eoa');
|
|
164
|
+
let subData;
|
|
165
|
+
if (isEOA) {
|
|
166
|
+
subData = subDataService.aaveV3LeverageManagementSubDataWithoutSubProxy.decode(subStruct.subData);
|
|
167
|
+
}
|
|
168
|
+
else {
|
|
169
|
+
subData = subDataService.aaveV3LeverageManagementSubData.decode(subStruct.subData);
|
|
170
|
+
}
|
|
167
171
|
_position.strategyData.decoded.triggerData = triggerData;
|
|
168
172
|
_position.strategyData.decoded.subData = subData;
|
|
169
173
|
_position.positionId = getPositionId(_position.chainId, _position.protocol.id, _position.owner, triggerData.market);
|
|
170
|
-
const isRepay =
|
|
174
|
+
const isRepay = [Strategies.Identifiers.Repay, Strategies.Identifiers.EoaRepay].includes(_position.strategy.strategyId);
|
|
171
175
|
if (isRepay) {
|
|
172
176
|
_position.specific = {
|
|
173
177
|
triggerRepayRatio: triggerData.ratio,
|
|
174
178
|
targetRepayRatio: subData.targetRatio,
|
|
175
|
-
repayEnabled:
|
|
179
|
+
repayEnabled: isEnabled,
|
|
176
180
|
subId1: Number(subId),
|
|
177
|
-
mergeWithId: Strategies.Identifiers.Boost,
|
|
181
|
+
mergeWithId: isEOA ? Strategies.Identifiers.EoaBoost : Strategies.Identifiers.Boost,
|
|
182
|
+
subHashRepay: subHash,
|
|
178
183
|
};
|
|
179
184
|
}
|
|
180
185
|
else {
|
|
@@ -183,29 +188,133 @@ function parseAaveV3LeverageManagement(position, parseData) {
|
|
|
183
188
|
targetBoostRatio: subData.targetRatio,
|
|
184
189
|
boostEnabled: isEnabled,
|
|
185
190
|
subId2: Number(subId),
|
|
186
|
-
mergeId: Strategies.Identifiers.Boost,
|
|
191
|
+
mergeId: isEOA ? Strategies.Identifiers.EoaBoost : Strategies.Identifiers.Boost,
|
|
192
|
+
subHashBoost: subHash,
|
|
187
193
|
};
|
|
188
194
|
}
|
|
189
|
-
|
|
195
|
+
if (!isEOA) {
|
|
196
|
+
_position.strategy.strategyId = Strategies.IdOverrides.LeverageManagement;
|
|
197
|
+
}
|
|
198
|
+
else {
|
|
199
|
+
_position.strategy.strategyId = Strategies.IdOverrides.EoaLeverageManagement;
|
|
200
|
+
}
|
|
190
201
|
return _position;
|
|
191
202
|
}
|
|
192
|
-
function
|
|
203
|
+
function parseAaveV3LeverageManagementOnPrice(position, parseData) {
|
|
193
204
|
const _position = cloneDeep(position);
|
|
194
|
-
const { subStruct
|
|
205
|
+
const { subStruct } = parseData.subscriptionEventData;
|
|
206
|
+
const triggerData = triggerService.aaveV3QuotePriceTrigger.decode(subStruct.triggerData);
|
|
207
|
+
const isEOA = _position.strategy.strategyId.includes('eoa');
|
|
208
|
+
let subData;
|
|
209
|
+
if (isEOA) {
|
|
210
|
+
subData = subDataService.aaveV3LeverageManagementOnPriceGeneric.decode(subStruct.subData);
|
|
211
|
+
}
|
|
212
|
+
else {
|
|
213
|
+
subData = subDataService.aaveV3LeverageManagementOnPriceSubData.decode(subStruct.subData);
|
|
214
|
+
}
|
|
215
|
+
_position.strategyData.decoded.triggerData = triggerData;
|
|
216
|
+
_position.strategyData.decoded.subData = subData;
|
|
217
|
+
_position.positionId = getPositionId(_position.chainId, _position.protocol.id, _position.owner, Math.random());
|
|
218
|
+
_position.specific = {
|
|
219
|
+
collAsset: subData.collAsset,
|
|
220
|
+
debtAsset: subData.debtAsset,
|
|
221
|
+
baseToken: triggerData.baseTokenAddress,
|
|
222
|
+
quoteToken: triggerData.quoteTokenAddress,
|
|
223
|
+
price: triggerData.price,
|
|
224
|
+
ratioState: triggerData.ratioState,
|
|
225
|
+
debtAssetId: subData.debtAssetId,
|
|
226
|
+
collAssetId: subData.collAssetId,
|
|
227
|
+
ratio: subData.targetRatio,
|
|
228
|
+
};
|
|
229
|
+
return _position;
|
|
230
|
+
}
|
|
231
|
+
function parseAaveV3CloseOnPrice(position, parseData) {
|
|
232
|
+
const _position = cloneDeep(position);
|
|
233
|
+
const { subStruct } = parseData.subscriptionEventData;
|
|
234
|
+
const isEOA = _position.strategy.strategyId.includes('eoa');
|
|
235
|
+
_position.positionId = getPositionId(_position.chainId, _position.protocol.id, _position.owner, AAVE_V3_MARKET_ADDRESSES[_position.chainId]);
|
|
236
|
+
if (isEOA) {
|
|
237
|
+
const triggerData = triggerService.aaveV3QuotePriceRangeTrigger.decode(subStruct.triggerData);
|
|
238
|
+
const subData = subDataService.aaveV3CloseGenericSubData.decode(subStruct.subData);
|
|
239
|
+
const { takeProfitType, stopLossType } = getStopLossAndTakeProfitTypeByCloseStrategyType(+subData.closeType);
|
|
240
|
+
_position.strategyData.decoded.triggerData = triggerData;
|
|
241
|
+
_position.strategyData.decoded.subData = subData;
|
|
242
|
+
_position.specific = {
|
|
243
|
+
collAsset: subData.collAsset,
|
|
244
|
+
collAssetId: subData.collAssetId,
|
|
245
|
+
debtAsset: subData.debtAsset,
|
|
246
|
+
debtAssetId: subData.debtAssetId,
|
|
247
|
+
baseToken: triggerData.collToken,
|
|
248
|
+
quoteToken: triggerData.debtToken,
|
|
249
|
+
stopLossPrice: triggerData.lowerPrice,
|
|
250
|
+
takeProfitPrice: triggerData.upperPrice,
|
|
251
|
+
stopLossType,
|
|
252
|
+
takeProfitType,
|
|
253
|
+
};
|
|
254
|
+
_position.strategy.strategyId = Strategies.Identifiers.EoaCloseOnPrice;
|
|
255
|
+
}
|
|
256
|
+
else {
|
|
257
|
+
const triggerData = triggerService.aaveV3QuotePriceTrigger.decode(subStruct.triggerData);
|
|
258
|
+
const subData = subDataService.aaveV3QuotePriceSubData.decode(subStruct.subData);
|
|
259
|
+
_position.strategyData.decoded.triggerData = triggerData;
|
|
260
|
+
_position.strategyData.decoded.subData = subData;
|
|
261
|
+
_position.specific = {
|
|
262
|
+
collAsset: subData.collAsset,
|
|
263
|
+
collAssetId: subData.collAssetId,
|
|
264
|
+
debtAsset: subData.debtAsset,
|
|
265
|
+
debtAssetId: subData.debtAssetId,
|
|
266
|
+
baseToken: triggerData.baseTokenAddress,
|
|
267
|
+
quoteToken: triggerData.quoteTokenAddress,
|
|
268
|
+
price: triggerData.price,
|
|
269
|
+
ratioState: triggerData.ratioState,
|
|
270
|
+
};
|
|
271
|
+
const { ratioState } = getRatioStateInfoForAaveCloseStrategy(_position.specific.ratioState, wethToEthByAddress(_position.specific.collAsset, parseData.chainId), wethToEthByAddress(_position.specific.debtAsset, parseData.chainId), parseData.chainId);
|
|
272
|
+
_position.strategy.strategyId = isRatioStateOver(ratioState)
|
|
273
|
+
? Strategies.IdOverrides.TakeProfit
|
|
274
|
+
: Strategies.IdOverrides.StopLoss;
|
|
275
|
+
}
|
|
276
|
+
return _position;
|
|
277
|
+
}
|
|
278
|
+
function parseAaveV3CollateralSwitch(position, parseData) {
|
|
279
|
+
const _position = cloneDeep(position);
|
|
280
|
+
const { subStruct } = parseData.subscriptionEventData;
|
|
281
|
+
const triggerData = triggerService.aaveV3QuotePriceTrigger.decode(subStruct.triggerData);
|
|
282
|
+
const subData = subDataService.aaveV3CollateralSwitchSubData.decode(subStruct.subData);
|
|
283
|
+
_position.strategyData.decoded.triggerData = triggerData;
|
|
284
|
+
_position.strategyData.decoded.subData = subData;
|
|
285
|
+
_position.positionId = getPositionId(_position.chainId, _position.protocol.id, _position.owner, subData.marketAddr);
|
|
286
|
+
return _position;
|
|
287
|
+
}
|
|
288
|
+
function parseSparkCollateralSwitch(position, parseData) {
|
|
289
|
+
const _position = cloneDeep(position);
|
|
290
|
+
const { subStruct } = parseData.subscriptionEventData;
|
|
291
|
+
const triggerData = triggerService.sparkQuotePriceTrigger.decode(subStruct.triggerData);
|
|
292
|
+
const subData = subDataService.sparkCollateralSwitchSubData.decode(subStruct.subData);
|
|
293
|
+
_position.strategyData.decoded.triggerData = triggerData;
|
|
294
|
+
_position.strategyData.decoded.subData = subData;
|
|
295
|
+
_position.positionId = getPositionId(_position.chainId, _position.protocol.id, _position.owner, subData.marketAddr);
|
|
296
|
+
return _position;
|
|
297
|
+
}
|
|
298
|
+
function parseAaveV4LeverageManagement(position, parseData) {
|
|
299
|
+
const _position = cloneDeep(position);
|
|
300
|
+
const { subStruct, subId, subHash } = parseData.subscriptionEventData;
|
|
195
301
|
const { isEnabled } = parseData.strategiesSubsData;
|
|
196
|
-
const triggerData = triggerService.
|
|
197
|
-
const subData = subDataService.
|
|
302
|
+
const triggerData = triggerService.aaveV4RatioTrigger.decode(subStruct.triggerData);
|
|
303
|
+
const subData = subDataService.aaveV4LeverageManagementSubData.decode(subStruct.subData);
|
|
304
|
+
const isEOA = _position.strategy.strategyId.includes('eoa');
|
|
305
|
+
const isRepay = [Strategies.Identifiers.Repay, Strategies.Identifiers.EoaRepay].includes(_position.strategy.strategyId);
|
|
198
306
|
_position.strategyData.decoded.triggerData = triggerData;
|
|
199
307
|
_position.strategyData.decoded.subData = subData;
|
|
200
|
-
_position.positionId = getPositionId(_position.chainId, _position.protocol.id, _position.owner);
|
|
201
|
-
|
|
308
|
+
_position.positionId = getPositionId(_position.chainId, _position.protocol.id, _position.owner, triggerData.spoke);
|
|
309
|
+
_position.strategy.strategyId = isEOA ? Strategies.IdOverrides.EoaLeverageManagement : Strategies.IdOverrides.LeverageManagement;
|
|
202
310
|
if (isRepay) {
|
|
203
311
|
_position.specific = {
|
|
204
312
|
triggerRepayRatio: triggerData.ratio,
|
|
205
313
|
targetRepayRatio: subData.targetRatio,
|
|
206
|
-
repayEnabled:
|
|
314
|
+
repayEnabled: isEnabled,
|
|
207
315
|
subId1: Number(subId),
|
|
208
|
-
mergeWithId: Strategies.Identifiers.Boost,
|
|
316
|
+
mergeWithId: isEOA ? Strategies.Identifiers.EoaBoost : Strategies.Identifiers.Boost,
|
|
317
|
+
subHashRepay: subHash,
|
|
209
318
|
};
|
|
210
319
|
}
|
|
211
320
|
else {
|
|
@@ -214,32 +323,97 @@ function parseMorphoAaveV2LeverageManagement(position, parseData) {
|
|
|
214
323
|
targetBoostRatio: subData.targetRatio,
|
|
215
324
|
boostEnabled: isEnabled,
|
|
216
325
|
subId2: Number(subId),
|
|
217
|
-
mergeId: Strategies.Identifiers.Boost,
|
|
326
|
+
mergeId: isEOA ? Strategies.Identifiers.EoaBoost : Strategies.Identifiers.Boost,
|
|
327
|
+
subHashBoost: subHash,
|
|
218
328
|
};
|
|
219
329
|
}
|
|
220
|
-
_position.strategy.strategyId = Strategies.IdOverrides.LeverageManagement;
|
|
221
330
|
return _position;
|
|
222
331
|
}
|
|
223
|
-
function
|
|
332
|
+
function parseAaveV4LeverageManagementOnPrice(position, parseData) {
|
|
224
333
|
const _position = cloneDeep(position);
|
|
225
334
|
const { subStruct } = parseData.subscriptionEventData;
|
|
226
|
-
const triggerData = triggerService.
|
|
227
|
-
const subData = subDataService.
|
|
335
|
+
const triggerData = triggerService.aaveV4QuotePriceTrigger.decode(subStruct.triggerData);
|
|
336
|
+
const subData = subDataService.aaveV4LeverageManagementOnPriceSubData.decode(subStruct.subData);
|
|
337
|
+
const isEOA = _position.strategy.strategyId.includes('eoa');
|
|
228
338
|
_position.strategyData.decoded.triggerData = triggerData;
|
|
229
339
|
_position.strategyData.decoded.subData = subData;
|
|
230
|
-
_position.positionId = getPositionId(_position.chainId, _position.protocol.id, _position.owner,
|
|
340
|
+
_position.positionId = getPositionId(_position.chainId, _position.protocol.id, _position.owner, triggerData.spoke);
|
|
341
|
+
_position.strategy.strategyId = isEOA ? Strategies.IdOverrides.EoaLeverageManagementOnPrice : Strategies.IdOverrides.LeverageManagementOnPrice;
|
|
231
342
|
_position.specific = {
|
|
232
343
|
collAsset: subData.collAsset,
|
|
233
344
|
collAssetId: subData.collAssetId,
|
|
234
345
|
debtAsset: subData.debtAsset,
|
|
235
346
|
debtAssetId: subData.debtAssetId,
|
|
236
|
-
baseToken: triggerData.baseTokenAddress,
|
|
237
|
-
quoteToken: triggerData.quoteTokenAddress,
|
|
238
347
|
price: triggerData.price,
|
|
239
348
|
ratioState: triggerData.ratioState,
|
|
349
|
+
ratio: subData.targetRatio,
|
|
240
350
|
};
|
|
241
|
-
|
|
242
|
-
|
|
351
|
+
return _position;
|
|
352
|
+
}
|
|
353
|
+
function parseAaveV4CloseOnPrice(position, parseData) {
|
|
354
|
+
const _position = cloneDeep(position);
|
|
355
|
+
const { subStruct } = parseData.subscriptionEventData;
|
|
356
|
+
const triggerData = triggerService.aaveV4QuotePriceRangeTrigger.decode(subStruct.triggerData);
|
|
357
|
+
const subData = subDataService.aaveV4CloseSubData.decode(subStruct.subData);
|
|
358
|
+
const { takeProfitType, stopLossType } = getStopLossAndTakeProfitTypeByCloseStrategyType(+subData.closeType);
|
|
359
|
+
const isEOA = _position.strategy.strategyId.includes('eoa');
|
|
360
|
+
_position.strategyData.decoded.triggerData = triggerData;
|
|
361
|
+
_position.strategyData.decoded.subData = subData;
|
|
362
|
+
_position.positionId = getPositionId(_position.chainId, _position.protocol.id, _position.owner, triggerData.spoke);
|
|
363
|
+
_position.strategy.strategyId = isEOA ? Strategies.Identifiers.EoaCloseOnPrice : Strategies.Identifiers.CloseOnPrice;
|
|
364
|
+
_position.specific = {
|
|
365
|
+
collAsset: subData.collAsset,
|
|
366
|
+
collAssetId: subData.collAssetId,
|
|
367
|
+
debtAsset: subData.debtAsset,
|
|
368
|
+
debtAssetId: subData.debtAssetId,
|
|
369
|
+
stopLossPrice: triggerData.lowerPrice,
|
|
370
|
+
takeProfitPrice: triggerData.upperPrice,
|
|
371
|
+
stopLossType,
|
|
372
|
+
takeProfitType,
|
|
373
|
+
};
|
|
374
|
+
return _position;
|
|
375
|
+
}
|
|
376
|
+
function parseAaveV4CollateralSwitch(position, parseData) {
|
|
377
|
+
const _position = cloneDeep(position);
|
|
378
|
+
const { subStruct } = parseData.subscriptionEventData;
|
|
379
|
+
const triggerData = triggerService.aaveV4QuotePriceTrigger.decode(subStruct.triggerData);
|
|
380
|
+
const subData = subDataService.aaveV4CollateralSwitchSubData.decode(subStruct.subData);
|
|
381
|
+
const isEOA = _position.strategy.strategyId.includes('eoa');
|
|
382
|
+
_position.strategyData.decoded.triggerData = triggerData;
|
|
383
|
+
_position.strategyData.decoded.subData = subData;
|
|
384
|
+
_position.positionId = getPositionId(_position.chainId, _position.protocol.id, _position.owner, triggerData.spoke);
|
|
385
|
+
_position.strategy.strategyId = isEOA ? Strategies.Identifiers.EoaCollateralSwitch : Strategies.Identifiers.CollateralSwitch;
|
|
386
|
+
return _position;
|
|
387
|
+
}
|
|
388
|
+
function parseMorphoAaveV2LeverageManagement(position, parseData) {
|
|
389
|
+
const _position = cloneDeep(position);
|
|
390
|
+
const { subStruct, subId } = parseData.subscriptionEventData;
|
|
391
|
+
const { isEnabled } = parseData.strategiesSubsData;
|
|
392
|
+
const triggerData = triggerService.morphoAaveV2RatioTrigger.decode(subStruct.triggerData);
|
|
393
|
+
const subData = subDataService.morphoAaveV2LeverageManagementSubData.decode(subStruct.subData);
|
|
394
|
+
_position.strategyData.decoded.triggerData = triggerData;
|
|
395
|
+
_position.strategyData.decoded.subData = subData;
|
|
396
|
+
_position.positionId = getPositionId(_position.chainId, _position.protocol.id, _position.owner);
|
|
397
|
+
const isRepay = _position.strategy.strategyId === Strategies.Identifiers.Repay;
|
|
398
|
+
if (isRepay) {
|
|
399
|
+
_position.specific = {
|
|
400
|
+
triggerRepayRatio: triggerData.ratio,
|
|
401
|
+
targetRepayRatio: subData.targetRatio,
|
|
402
|
+
repayEnabled: true,
|
|
403
|
+
subId1: Number(subId),
|
|
404
|
+
mergeWithId: Strategies.Identifiers.Boost,
|
|
405
|
+
};
|
|
406
|
+
}
|
|
407
|
+
else {
|
|
408
|
+
_position.specific = {
|
|
409
|
+
triggerBoostRatio: triggerData.ratio,
|
|
410
|
+
targetBoostRatio: subData.targetRatio,
|
|
411
|
+
boostEnabled: isEnabled,
|
|
412
|
+
subId2: Number(subId),
|
|
413
|
+
mergeId: Strategies.Identifiers.Boost,
|
|
414
|
+
};
|
|
415
|
+
}
|
|
416
|
+
_position.strategy.strategyId = Strategies.IdOverrides.LeverageManagement;
|
|
243
417
|
return _position;
|
|
244
418
|
}
|
|
245
419
|
function parseAaveV3CloseOnPriceWithMaximumGasPrice(position, parseData) {
|
|
@@ -296,7 +470,8 @@ function parseCompoundV2LeverageManagement(position, parseData) {
|
|
|
296
470
|
mergeId: Strategies.Identifiers.Boost,
|
|
297
471
|
};
|
|
298
472
|
}
|
|
299
|
-
_position.strategy.strategyId
|
|
473
|
+
const isEOA = _position.strategy.strategyId.includes('eoa');
|
|
474
|
+
_position.strategy.strategyId = isEOA ? Strategies.IdOverrides.EoaLeverageManagement : Strategies.IdOverrides.LeverageManagement;
|
|
300
475
|
return _position;
|
|
301
476
|
}
|
|
302
477
|
function parseCompoundV3LeverageManagement(position, parseData) {
|
|
@@ -312,13 +487,14 @@ function parseCompoundV3LeverageManagement(position, parseData) {
|
|
|
312
487
|
_position.strategyData.decoded.subData = subData;
|
|
313
488
|
_position.positionId = getPositionId(_position.chainId, _position.protocol.id, triggerData.owner.toLowerCase(), triggerData.market);
|
|
314
489
|
const isRepay = [Strategies.Identifiers.Repay, Strategies.Identifiers.EoaRepay].includes(_position.strategy.strategyId);
|
|
490
|
+
const isEOA = _position.strategy.strategyId.includes('eoa');
|
|
315
491
|
if (isRepay) {
|
|
316
492
|
_position.specific = {
|
|
317
493
|
triggerRepayRatio: triggerData.ratio,
|
|
318
494
|
targetRepayRatio: subData.targetRatio,
|
|
319
495
|
repayEnabled: true,
|
|
320
496
|
subId1: Number(subId),
|
|
321
|
-
mergeWithId: Strategies.Identifiers.Boost,
|
|
497
|
+
mergeWithId: isEOA ? Strategies.Identifiers.EoaBoost : Strategies.Identifiers.Boost,
|
|
322
498
|
};
|
|
323
499
|
}
|
|
324
500
|
else {
|
|
@@ -327,13 +503,52 @@ function parseCompoundV3LeverageManagement(position, parseData) {
|
|
|
327
503
|
targetBoostRatio: subData.targetRatio,
|
|
328
504
|
boostEnabled: isEnabled,
|
|
329
505
|
subId2: Number(subId),
|
|
330
|
-
mergeId: Strategies.Identifiers.Boost,
|
|
506
|
+
mergeId: isEOA ? Strategies.Identifiers.EoaBoost : Strategies.Identifiers.Boost,
|
|
331
507
|
};
|
|
332
508
|
}
|
|
333
|
-
const isEOA = _position.strategy.strategyId.includes('eoa');
|
|
334
509
|
_position.strategy.strategyId = isEOA ? Strategies.IdOverrides.EoaLeverageManagement : Strategies.IdOverrides.LeverageManagement;
|
|
335
510
|
return _position;
|
|
336
511
|
}
|
|
512
|
+
function parseCompoundV3LeverageManagementOnPrice(position, parseData) {
|
|
513
|
+
const _position = cloneDeep(position);
|
|
514
|
+
const { subStruct } = parseData.subscriptionEventData;
|
|
515
|
+
const triggerData = triggerService.compoundV3PriceTrigger.decode(subStruct.triggerData);
|
|
516
|
+
const subData = subDataService.compoundV3LeverageManagementOnPriceSubData.decode(subStruct.subData);
|
|
517
|
+
_position.strategyData.decoded.triggerData = triggerData;
|
|
518
|
+
_position.strategyData.decoded.subData = subData;
|
|
519
|
+
_position.positionId = getPositionId(_position.chainId, _position.protocol.id, triggerData.market, triggerData.user, Math.random());
|
|
520
|
+
_position.specific = {
|
|
521
|
+
market: subData.market,
|
|
522
|
+
collToken: subData.collToken,
|
|
523
|
+
baseToken: subData.baseToken,
|
|
524
|
+
ratio: subData.targetRatio,
|
|
525
|
+
price: triggerData.price,
|
|
526
|
+
priceState: triggerData.priceState,
|
|
527
|
+
};
|
|
528
|
+
return _position;
|
|
529
|
+
}
|
|
530
|
+
function parseCompoundV3CloseOnPrice(position, parseData) {
|
|
531
|
+
const _position = cloneDeep(position);
|
|
532
|
+
const { subStruct } = parseData.subscriptionEventData;
|
|
533
|
+
const triggerData = triggerService.compoundV3PriceRangeTrigger.decode(subStruct.triggerData);
|
|
534
|
+
const subData = subDataService.compoundV3CloseSubData.decode(subStruct.subData);
|
|
535
|
+
_position.strategyData.decoded.triggerData = triggerData;
|
|
536
|
+
_position.strategyData.decoded.subData = subData;
|
|
537
|
+
_position.positionId = getPositionId(_position.chainId, _position.protocol.id, triggerData.market, Math.random());
|
|
538
|
+
const { takeProfitType, stopLossType } = getStopLossAndTakeProfitTypeByCloseStrategyType(+subData.closeType);
|
|
539
|
+
const isEOA = _position.strategy.strategyId.includes('eoa');
|
|
540
|
+
_position.strategy.strategyId = isEOA ? Strategies.Identifiers.EoaCloseOnPrice : Strategies.Identifiers.CloseOnPrice;
|
|
541
|
+
_position.specific = {
|
|
542
|
+
market: subData.market,
|
|
543
|
+
collToken: subData.collToken,
|
|
544
|
+
baseToken: subData.baseToken,
|
|
545
|
+
stopLossPrice: triggerData.lowerPrice,
|
|
546
|
+
takeProfitPrice: triggerData.upperPrice,
|
|
547
|
+
takeProfitType,
|
|
548
|
+
stopLossType,
|
|
549
|
+
};
|
|
550
|
+
return _position;
|
|
551
|
+
}
|
|
337
552
|
function parseChickenBondsRebond(position, parseData) {
|
|
338
553
|
const _position = cloneDeep(position);
|
|
339
554
|
const { subStruct } = parseData.subscriptionEventData;
|
|
@@ -469,26 +684,50 @@ function parseSparkLeverageManagement(position, parseData) {
|
|
|
469
684
|
_position.strategy.strategyId = Strategies.IdOverrides.LeverageManagement;
|
|
470
685
|
return _position;
|
|
471
686
|
}
|
|
472
|
-
function
|
|
687
|
+
function parseSparkLeverageManagementOnPrice(position, parseData) {
|
|
473
688
|
const _position = cloneDeep(position);
|
|
474
689
|
const { subStruct } = parseData.subscriptionEventData;
|
|
475
690
|
const triggerData = triggerService.sparkQuotePriceTrigger.decode(subStruct.triggerData);
|
|
476
|
-
const subData = subDataService.
|
|
691
|
+
const subData = subDataService.sparkLeverageManagementOnPriceSubData.decode(subStruct.subData);
|
|
477
692
|
_position.strategyData.decoded.triggerData = triggerData;
|
|
478
693
|
_position.strategyData.decoded.subData = subData;
|
|
479
|
-
_position.positionId = getPositionId(_position.chainId, _position.protocol.id, _position.owner,
|
|
694
|
+
_position.positionId = getPositionId(_position.chainId, _position.protocol.id, _position.owner, subData.marketAddr);
|
|
480
695
|
_position.specific = {
|
|
696
|
+
// subData
|
|
481
697
|
collAsset: subData.collAsset,
|
|
482
698
|
collAssetId: subData.collAssetId,
|
|
483
699
|
debtAsset: subData.debtAsset,
|
|
484
700
|
debtAssetId: subData.debtAssetId,
|
|
485
|
-
|
|
486
|
-
|
|
701
|
+
ratio: subData.targetRatio,
|
|
702
|
+
// triggerData
|
|
703
|
+
baseToken: triggerData.baseTokenAddr,
|
|
704
|
+
quoteToken: triggerData.quoteTokenAddr,
|
|
487
705
|
price: triggerData.price,
|
|
488
706
|
ratioState: triggerData.ratioState,
|
|
489
707
|
};
|
|
490
|
-
|
|
491
|
-
|
|
708
|
+
return _position;
|
|
709
|
+
}
|
|
710
|
+
function parseSparkCloseOnPrice(position, parseData) {
|
|
711
|
+
const _position = cloneDeep(position);
|
|
712
|
+
const { subStruct } = parseData.subscriptionEventData;
|
|
713
|
+
const triggerData = triggerService.sparkQuotePriceRangeTrigger.decode(subStruct.triggerData);
|
|
714
|
+
const subData = subDataService.sparkCloseGenericSubData.decode(subStruct.subData);
|
|
715
|
+
_position.strategyData.decoded.triggerData = triggerData;
|
|
716
|
+
_position.strategyData.decoded.subData = subData;
|
|
717
|
+
_position.positionId = getPositionId(_position.chainId, _position.protocol.id, _position.owner, subData.marketAddr);
|
|
718
|
+
const { takeProfitType, stopLossType } = getStopLossAndTakeProfitTypeByCloseStrategyType(+subData.closeType);
|
|
719
|
+
_position.specific = {
|
|
720
|
+
collAsset: subData.collAsset,
|
|
721
|
+
collAssetId: subData.collAssetId,
|
|
722
|
+
debtAsset: subData.debtAsset,
|
|
723
|
+
debtAssetId: subData.debtAssetId,
|
|
724
|
+
baseToken: triggerData.collToken,
|
|
725
|
+
quoteToken: triggerData.debtToken,
|
|
726
|
+
stopLossPrice: triggerData.lowerPrice,
|
|
727
|
+
takeProfitPrice: triggerData.upperPrice,
|
|
728
|
+
stopLossType,
|
|
729
|
+
takeProfitType,
|
|
730
|
+
};
|
|
492
731
|
return _position;
|
|
493
732
|
}
|
|
494
733
|
function parseLiquitySavingsLiqProtection(position, parseData) {
|
|
@@ -625,24 +864,32 @@ function parseMorphoBlueLeverageManagementOnPrice(position, parseData) {
|
|
|
625
864
|
};
|
|
626
865
|
return _position;
|
|
627
866
|
}
|
|
628
|
-
function
|
|
867
|
+
function parseMorphoBlueCloseOnPrice(position, parseData) {
|
|
629
868
|
const _position = cloneDeep(position);
|
|
630
869
|
const { subStruct } = parseData.subscriptionEventData;
|
|
631
|
-
const triggerData = triggerService.
|
|
632
|
-
const subData = subDataService.
|
|
870
|
+
const triggerData = triggerService.morphoBluePriceRangeTrigger.decode(subStruct.triggerData);
|
|
871
|
+
const subData = subDataService.morphoBlueCloseOnPriceSubData.decode(subStruct.subData);
|
|
633
872
|
_position.strategyData.decoded.triggerData = triggerData;
|
|
634
873
|
_position.strategyData.decoded.subData = subData;
|
|
635
874
|
_position.positionId = getPositionId(_position.chainId, _position.protocol.id, _position.owner, Math.random());
|
|
875
|
+
const marketIdEncodedData = web3.eth.abi.encodeParameters(['address', 'address', 'address', 'address', 'uint256'], [
|
|
876
|
+
subData.loanToken,
|
|
877
|
+
subData.collToken,
|
|
878
|
+
subData.oracle,
|
|
879
|
+
subData.irm,
|
|
880
|
+
subData.lltv,
|
|
881
|
+
]);
|
|
882
|
+
const marketId = web3.utils.keccak256(marketIdEncodedData);
|
|
883
|
+
const { takeProfitType, stopLossType } = getStopLossAndTakeProfitTypeByCloseStrategyType(+subData.closeType);
|
|
636
884
|
_position.specific = {
|
|
637
|
-
|
|
638
|
-
|
|
639
|
-
|
|
640
|
-
|
|
641
|
-
|
|
642
|
-
|
|
643
|
-
|
|
644
|
-
|
|
645
|
-
ratio: subData.targetRatio,
|
|
885
|
+
subHash: _position.subHash,
|
|
886
|
+
marketId,
|
|
887
|
+
collAsset: subData.collToken,
|
|
888
|
+
debtAsset: subData.loanToken,
|
|
889
|
+
stopLossPrice: triggerData.lowerPrice,
|
|
890
|
+
takeProfitPrice: triggerData.upperPrice,
|
|
891
|
+
stopLossType,
|
|
892
|
+
takeProfitType,
|
|
646
893
|
};
|
|
647
894
|
return _position;
|
|
648
895
|
}
|
|
@@ -659,7 +906,6 @@ function parseLiquityV2CloseOnPrice(position, parseData) {
|
|
|
659
906
|
// - Only TakeProfit
|
|
660
907
|
// - Only StopLoss
|
|
661
908
|
// - Both
|
|
662
|
-
// TODO: see on frontend what specific data we need here because stop-loss and take-profit is one bundle now
|
|
663
909
|
_position.strategy.strategyId = Strategies.Identifiers.CloseOnPrice;
|
|
664
910
|
_position.specific = {
|
|
665
911
|
market: subData.market,
|
|
@@ -784,6 +1030,26 @@ const parsingMethodsMapping = {
|
|
|
784
1030
|
[Strategies.Identifiers.CloseToCollateralWithGasPrice]: parseAaveV3CloseOnPriceWithMaximumGasPrice,
|
|
785
1031
|
[Strategies.Identifiers.OpenOrderFromCollateral]: parseAaveV3LeverageManagementOnPrice,
|
|
786
1032
|
[Strategies.Identifiers.RepayOnPrice]: parseAaveV3LeverageManagementOnPrice,
|
|
1033
|
+
[Strategies.Identifiers.EoaRepay]: parseAaveV3LeverageManagement,
|
|
1034
|
+
[Strategies.Identifiers.EoaBoost]: parseAaveV3LeverageManagement,
|
|
1035
|
+
[Strategies.Identifiers.EoaRepayOnPrice]: parseAaveV3LeverageManagementOnPrice,
|
|
1036
|
+
[Strategies.Identifiers.EoaBoostOnPrice]: parseAaveV3LeverageManagementOnPrice,
|
|
1037
|
+
[Strategies.Identifiers.EoaCloseOnPrice]: parseAaveV3CloseOnPrice,
|
|
1038
|
+
[Strategies.Identifiers.CollateralSwitch]: parseAaveV3CollateralSwitch,
|
|
1039
|
+
},
|
|
1040
|
+
[ProtocolIdentifiers.StrategiesAutomation.AaveV4]: {
|
|
1041
|
+
[Strategies.Identifiers.Repay]: parseAaveV4LeverageManagement,
|
|
1042
|
+
[Strategies.Identifiers.Boost]: parseAaveV4LeverageManagement,
|
|
1043
|
+
[Strategies.Identifiers.RepayOnPrice]: parseAaveV4LeverageManagementOnPrice,
|
|
1044
|
+
[Strategies.Identifiers.BoostOnPrice]: parseAaveV4LeverageManagementOnPrice,
|
|
1045
|
+
[Strategies.Identifiers.CloseOnPrice]: parseAaveV4CloseOnPrice,
|
|
1046
|
+
[Strategies.Identifiers.EoaRepay]: parseAaveV4LeverageManagement,
|
|
1047
|
+
[Strategies.Identifiers.EoaBoost]: parseAaveV4LeverageManagement,
|
|
1048
|
+
[Strategies.Identifiers.EoaRepayOnPrice]: parseAaveV4LeverageManagementOnPrice,
|
|
1049
|
+
[Strategies.Identifiers.EoaBoostOnPrice]: parseAaveV4LeverageManagementOnPrice,
|
|
1050
|
+
[Strategies.Identifiers.EoaCloseOnPrice]: parseAaveV4CloseOnPrice,
|
|
1051
|
+
[Strategies.Identifiers.CollateralSwitch]: parseAaveV4CollateralSwitch,
|
|
1052
|
+
[Strategies.Identifiers.EoaCollateralSwitch]: parseAaveV4CollateralSwitch,
|
|
787
1053
|
},
|
|
788
1054
|
[ProtocolIdentifiers.StrategiesAutomation.CompoundV2]: {
|
|
789
1055
|
[Strategies.Identifiers.Repay]: parseCompoundV2LeverageManagement,
|
|
@@ -794,6 +1060,12 @@ const parsingMethodsMapping = {
|
|
|
794
1060
|
[Strategies.Identifiers.Boost]: parseCompoundV3LeverageManagement,
|
|
795
1061
|
[Strategies.Identifiers.EoaRepay]: parseCompoundV3LeverageManagement,
|
|
796
1062
|
[Strategies.Identifiers.EoaBoost]: parseCompoundV3LeverageManagement,
|
|
1063
|
+
[Strategies.Identifiers.RepayOnPrice]: parseCompoundV3LeverageManagementOnPrice,
|
|
1064
|
+
[Strategies.Identifiers.BoostOnPrice]: parseCompoundV3LeverageManagementOnPrice,
|
|
1065
|
+
[Strategies.Identifiers.EoaRepayOnPrice]: parseCompoundV3LeverageManagementOnPrice,
|
|
1066
|
+
[Strategies.Identifiers.EoaBoostOnPrice]: parseCompoundV3LeverageManagementOnPrice,
|
|
1067
|
+
[Strategies.Identifiers.CloseOnPrice]: parseCompoundV3CloseOnPrice,
|
|
1068
|
+
[Strategies.Identifiers.EoaCloseOnPrice]: parseCompoundV3CloseOnPrice,
|
|
797
1069
|
},
|
|
798
1070
|
[ProtocolIdentifiers.StrategiesAutomation.ChickenBonds]: {
|
|
799
1071
|
[Strategies.Identifiers.Rebond]: parseChickenBondsRebond,
|
|
@@ -809,8 +1081,10 @@ const parsingMethodsMapping = {
|
|
|
809
1081
|
[ProtocolIdentifiers.StrategiesAutomation.Spark]: {
|
|
810
1082
|
[Strategies.Identifiers.Repay]: parseSparkLeverageManagement,
|
|
811
1083
|
[Strategies.Identifiers.Boost]: parseSparkLeverageManagement,
|
|
812
|
-
[Strategies.Identifiers.
|
|
813
|
-
[Strategies.Identifiers.
|
|
1084
|
+
[Strategies.Identifiers.RepayOnPrice]: parseSparkLeverageManagementOnPrice,
|
|
1085
|
+
[Strategies.Identifiers.BoostOnPrice]: parseSparkLeverageManagementOnPrice,
|
|
1086
|
+
[Strategies.Identifiers.CloseOnPrice]: parseSparkCloseOnPrice,
|
|
1087
|
+
[Strategies.Identifiers.CollateralSwitch]: parseSparkCollateralSwitch,
|
|
814
1088
|
},
|
|
815
1089
|
[ProtocolIdentifiers.StrategiesAutomation.CrvUSD]: {
|
|
816
1090
|
[Strategies.Identifiers.Repay]: parseCrvUSDLeverageManagement,
|
|
@@ -823,6 +1097,7 @@ const parsingMethodsMapping = {
|
|
|
823
1097
|
[Strategies.Identifiers.EoaRepay]: parseMorphoBlueLeverageManagement,
|
|
824
1098
|
[Strategies.Identifiers.EoaBoost]: parseMorphoBlueLeverageManagement,
|
|
825
1099
|
[Strategies.Identifiers.BoostOnPrice]: parseMorphoBlueLeverageManagementOnPrice,
|
|
1100
|
+
[Strategies.Identifiers.CloseOnPrice]: parseMorphoBlueCloseOnPrice,
|
|
826
1101
|
},
|
|
827
1102
|
[ProtocolIdentifiers.StrategiesAutomation.FluidT1]: {
|
|
828
1103
|
[Strategies.Identifiers.Repay]: parseFluidT1LeverageManagement,
|
|
@@ -6,6 +6,7 @@ export declare const makerEncode: {
|
|
|
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
8
|
leverageManagement(vaultId: number, triggerRepayRatio: string, triggerBoostRatio: string, targetBoostRatio: string, targetRepayRatio: string, boostEnabled: boolean): (string | number | boolean)[];
|
|
9
|
+
leverageManagementWithoutSubProxy(vaultId: number, triggerRatio: number, targetRatio: number, ratioState: RatioState, isBoost: boolean, 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)[];
|
|
@@ -60,15 +61,21 @@ export declare const aaveV3Encode: {
|
|
|
60
61
|
marketAddr: EthereumAddress;
|
|
61
62
|
targetRatio: number;
|
|
62
63
|
}): (number | boolean | string[])[];
|
|
64
|
+
leverageManagementWithoutSubProxy(strategyOrBundleId: number, market: EthereumAddress, user: EthereumAddress, ratioState: RatioState, targetRatio: number, triggerRatio: number, isGeneric?: boolean): (number | boolean | string[])[];
|
|
65
|
+
leverageManagementOnPriceGeneric(strategyOrBundleId: number, price: number, ratioState: RatioState, collAsset: EthereumAddress, collAssetId: number, debtAsset: EthereumAddress, debtAssetId: number, marketAddr: EthereumAddress, targetRatio: number, user: EthereumAddress): (number | boolean | string[])[];
|
|
66
|
+
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[])[];
|
|
67
|
+
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[])[];
|
|
63
68
|
};
|
|
64
69
|
export declare const compoundV2Encode: {
|
|
65
70
|
leverageManagement(triggerRepayRatio: number, triggerBoostRatio: number, targetBoostRatio: number, targetRepayRatio: number, boostEnabled: boolean): string[];
|
|
66
71
|
};
|
|
67
72
|
export declare const compoundV3Encode: {
|
|
68
73
|
leverageManagement(market: EthereumAddress, baseToken: EthereumAddress, triggerRepayRatio: number, triggerBoostRatio: number, targetBoostRatio: number, targetRepayRatio: number, boostEnabled: boolean, isEOA: boolean): string[];
|
|
74
|
+
leverageManagementOnPrice(strategyOrBundleId: number, market: EthereumAddress, collToken: EthereumAddress, baseToken: EthereumAddress, targetRatio: number, price: number, priceState: RatioState, ratioState: RatioState, user: EthereumAddress): (number | boolean | string[])[];
|
|
75
|
+
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[])[];
|
|
69
76
|
};
|
|
70
77
|
export declare const compoundV3L2Encode: {
|
|
71
|
-
leverageManagement(market: EthereumAddress, baseToken: EthereumAddress, triggerRepayRatio: number, triggerBoostRatio: number, targetBoostRatio: number, targetRepayRatio: number, boostEnabled: boolean): string;
|
|
78
|
+
leverageManagement(market: EthereumAddress, baseToken: EthereumAddress, triggerRepayRatio: number, triggerBoostRatio: number, targetBoostRatio: number, targetRepayRatio: number, boostEnabled: boolean, isEOA?: boolean): string;
|
|
72
79
|
};
|
|
73
80
|
export declare const morphoAaveV2Encode: {
|
|
74
81
|
leverageManagement(triggerRepayRatio: number, triggerBoostRatio: number, targetBoostRatio: number, targetRepayRatio: number, boostEnabled: boolean): string[];
|
|
@@ -79,9 +86,9 @@ export declare const exchangeEncode: {
|
|
|
79
86
|
};
|
|
80
87
|
export declare const sparkEncode: {
|
|
81
88
|
leverageManagement(triggerRepayRatio: number, triggerBoostRatio: number, targetBoostRatio: number, targetRepayRatio: number, boostEnabled: boolean): string;
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
89
|
+
leverageManagementOnPrice(strategyOrBundleId: number, isBundle: boolean | undefined, triggerData: {
|
|
90
|
+
baseTokenAddr: EthereumAddress;
|
|
91
|
+
quoteTokenAddr: EthereumAddress;
|
|
85
92
|
price: number;
|
|
86
93
|
ratioState: RatioState;
|
|
87
94
|
}, subData: {
|
|
@@ -89,15 +96,21 @@ export declare const sparkEncode: {
|
|
|
89
96
|
collAssetId: number;
|
|
90
97
|
debtAsset: EthereumAddress;
|
|
91
98
|
debtAssetId: number;
|
|
99
|
+
marketAddr: EthereumAddress;
|
|
100
|
+
targetRatio: number;
|
|
92
101
|
}): (number | boolean | string[])[];
|
|
102
|
+
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[])[];
|
|
103
|
+
leverageManagementWithoutSubProxy(strategyOrBundleId: number, market: EthereumAddress, user: EthereumAddress, ratioState: RatioState, targetRatio: number, triggerRatio: number): (number | boolean | string[])[];
|
|
104
|
+
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[])[];
|
|
93
105
|
};
|
|
94
106
|
export declare const crvUSDEncode: {
|
|
95
107
|
leverageManagement(owner: EthereumAddress, controllerAddr: EthereumAddress, ratioState: RatioState, targetRatio: number, triggerRatio: number, collTokenAddr: EthereumAddress, crvUSDAddr: EthereumAddress): (boolean | string[] | Bundles.MainnetIds)[];
|
|
96
108
|
payback(proxyAddress: EthereumAddress, addressToPullTokensFrom: EthereumAddress, positionOwner: EthereumAddress, paybackAmount: string, crvUSDAddr: EthereumAddress, controllerAddr: EthereumAddress, minHealthRatio: number): (boolean | string[] | Strategies.MainnetIds)[];
|
|
97
109
|
};
|
|
98
110
|
export declare const morphoBlueEncode: {
|
|
99
|
-
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.
|
|
111
|
+
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)[];
|
|
100
112
|
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[])[];
|
|
113
|
+
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[])[];
|
|
101
114
|
};
|
|
102
115
|
export declare const liquityV2Encode: {
|
|
103
116
|
leverageManagement(market: EthereumAddress, troveId: string, collToken: EthereumAddress, boldToken: EthereumAddress, ratioState: RatioState, targetRatio: number, triggerRatio: number, strategyOrBundleId: number): (number | boolean | string[])[];
|
|
@@ -108,3 +121,9 @@ export declare const liquityV2Encode: {
|
|
|
108
121
|
export declare const fluidEncode: {
|
|
109
122
|
leverageManagement(nftId: string, vault: EthereumAddress, ratioState: RatioState, targetRatio: number, triggerRatio: number, strategyOrBundleId: number): (number | boolean | string[])[];
|
|
110
123
|
};
|
|
124
|
+
export declare const aaveV4Encode: {
|
|
125
|
+
leverageManagement(strategyOrBundleId: number, owner: EthereumAddress, spoke: EthereumAddress, ratioState: RatioState, targetRatio: number, triggerRatio: number): (number | boolean | string[])[];
|
|
126
|
+
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[])[];
|
|
127
|
+
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[])[];
|
|
128
|
+
collateralSwitch(strategyOrBundleId: number, owner: EthereumAddress, spoke: EthereumAddress, fromAsset: EthereumAddress, fromAssetId: number, toAsset: EthereumAddress, toAssetId: number, amountToSwitch: string, price: string, ratioState: RatioState): (number | boolean | string[])[];
|
|
129
|
+
};
|