@defisaver/automation-sdk 3.3.9 → 3.3.10-aave-v4-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 +55 -0
  2. package/cjs/services/ethereumService.js +21 -14
  3. package/cjs/services/strategiesService.js +101 -0
  4. package/cjs/services/strategySubService.d.ts +6 -0
  5. package/cjs/services/strategySubService.js +30 -1
  6. package/cjs/services/strategySubService.test.js +96 -0
  7. package/cjs/services/subDataService.d.ts +290 -132
  8. package/cjs/services/subDataService.js +607 -378
  9. package/cjs/services/subDataService.test.js +157 -0
  10. package/cjs/services/triggerService.d.ts +29 -0
  11. package/cjs/services/triggerService.js +55 -1
  12. package/cjs/services/triggerService.test.js +84 -0
  13. package/cjs/types/enums.d.ts +14 -2
  14. package/cjs/types/enums.js +12 -0
  15. package/cjs/types/index.d.ts +22 -1
  16. package/esm/constants/index.js +55 -0
  17. package/esm/services/ethereumService.js +21 -14
  18. package/esm/services/strategiesService.js +102 -1
  19. package/esm/services/strategySubService.d.ts +6 -0
  20. package/esm/services/strategySubService.js +29 -0
  21. package/esm/services/strategySubService.test.js +97 -1
  22. package/esm/services/subDataService.d.ts +290 -132
  23. package/esm/services/subDataService.js +606 -377
  24. package/esm/services/subDataService.test.js +157 -0
  25. package/esm/services/triggerService.d.ts +29 -0
  26. package/esm/services/triggerService.js +54 -0
  27. package/esm/services/triggerService.test.js +85 -1
  28. package/esm/types/enums.d.ts +14 -2
  29. package/esm/types/enums.js +12 -0
  30. package/esm/types/index.d.ts +22 -1
  31. package/package.json +1 -1
  32. package/src/constants/index.ts +55 -0
  33. package/src/services/ethereumService.ts +23 -16
  34. package/src/services/strategiesService.ts +116 -1
  35. package/src/services/strategySubService.test.ts +125 -0
  36. package/src/services/strategySubService.ts +118 -0
  37. package/src/services/subDataService.test.ts +173 -0
  38. package/src/services/subDataService.ts +980 -746
  39. package/src/services/triggerService.test.ts +99 -0
  40. package/src/services/triggerService.ts +76 -1
  41. package/src/types/enums.ts +12 -0
  42. package/src/types/index.ts +27 -1
@@ -6,6 +6,68 @@ import { otherAddresses } from '@defisaver/sdk';
6
6
  import { ChainId, CollActionType, DebtActionType, RatioState, } from '../types/enums';
7
7
  import { ZERO_ADDRESS } from '../constants';
8
8
  import { compareAddresses, ratioPercentageToWei, weiToRatioPercentage } from './utils';
9
+ /**
10
+ _______ _______ .______ .______ _______ ______ ___ .___________. _______ _______
11
+ | \ | ____|| _ \ | _ \ | ____| / | / \ | || ____|| \
12
+ | .--. || |__ | |_) | | |_) | | |__ | ,----' / ^ \ `---| |----`| |__ | .--. |
13
+ | | | || __| | ___/ | / | __| | | / /_\ \ | | | __| | | | |
14
+ | '--' || |____ | | | |\ \----.| |____ | `----./ _____ \ | | | |____ | '--' |
15
+ |_______/ |_______|| _| | _| `._____||_______| \______/__/ \__\ |__| |_______||_______/
16
+ */
17
+ export const morphoAaveV2LeverageManagementSubData = {
18
+ encode(triggerRepayRatio, triggerBoostRatio, targetBoostRatio, targetRepayRatio, boostEnabled) {
19
+ return [
20
+ ratioPercentageToWei(triggerRepayRatio),
21
+ ratioPercentageToWei(triggerBoostRatio),
22
+ ratioPercentageToWei(targetBoostRatio),
23
+ ratioPercentageToWei(targetRepayRatio),
24
+ // @ts-ignore
25
+ boostEnabled,
26
+ ];
27
+ },
28
+ decode(subData) {
29
+ const ratioWei = AbiCoder.decodeParameter('uint128', subData[1]);
30
+ const targetRatio = weiToRatioPercentage(ratioWei);
31
+ return { targetRatio };
32
+ },
33
+ };
34
+ export const cBondsRebondSubData = {
35
+ encode(bondId) {
36
+ const bondIdEncoded = AbiCoder.encodeParameter('uint256', bondId);
37
+ return [bondIdEncoded];
38
+ },
39
+ decode(subData) {
40
+ const bondId = AbiCoder.decodeParameter('uint256', subData[1]).toString();
41
+ return { bondId };
42
+ },
43
+ };
44
+ export const liquityPaybackUsingChickenBondSubData = {
45
+ /**
46
+ * @param sourceId bondId or subId
47
+ * @param sourceType 0 for bond, 1 for subId
48
+ * @param chainId
49
+ */
50
+ encode: (sourceId, sourceType, chainId = ChainId.Ethereum) => {
51
+ const sourceIdEncoded = AbiCoder.encodeParameter('uint256', sourceId);
52
+ const sourceTypeEncoded = AbiCoder.encodeParameter('uint256', sourceType);
53
+ const lusdAddressEncoded = AbiCoder.encodeParameter('address', getAssetInfo('LUSD', chainId).address);
54
+ const bLusdAddressEncoded = AbiCoder.encodeParameter('address', getAssetInfo('bLUSD', chainId).address);
55
+ return [sourceIdEncoded, sourceTypeEncoded, lusdAddressEncoded, bLusdAddressEncoded];
56
+ },
57
+ decode: (subData) => {
58
+ const sourceId = AbiCoder.decodeParameter('uint256', subData[0]).toString();
59
+ const sourceType = AbiCoder.decodeParameter('uint256', subData[1]).toString();
60
+ return { sourceId, sourceType };
61
+ },
62
+ };
63
+ /**
64
+ .___ ___. ___ __ ___ _______ .______
65
+ | \/ | / \ | |/ / | ____|| _ \
66
+ | \ / | / ^ \ | ' / | |__ | |_) |
67
+ | |\/| | / /_\ \ | < | __| | /
68
+ | | | | / _____ \ | . \ | |____ | |\ \----.
69
+ |__| |__| /__/ \__\ |__|\__\ |_______|| _| `._____|
70
+ */
9
71
  export const makerRepayFromSavingsSubData = {
10
72
  encode(vaultId, targetRatioPercentage, chainId, daiAddr, mcdCdpManagerAddr) {
11
73
  const _daiAddr = daiAddr || getAssetInfo('DAI', chainId).address;
@@ -29,13 +91,6 @@ export const makerRepayFromSavingsSubData = {
29
91
  };
30
92
  },
31
93
  };
32
- export const liquityRepayFromSavingsSubData = {
33
- decode(subData) {
34
- const weiRatio = AbiCoder.decodeParameter('uint256', subData[1]);
35
- const targetRatio = weiToRatioPercentage(weiRatio);
36
- return { targetRatio };
37
- },
38
- };
39
94
  export const makerCloseSubData = {
40
95
  encode(vaultId, closeToAssetAddr, chainId, daiAddr, mcdCdpManagerAddr) {
41
96
  const _daiAddr = daiAddr || getAssetInfo('DAI', chainId).address;
@@ -84,6 +139,21 @@ export const makerLeverageManagementWithoutSubProxy = {
84
139
  return { vaultId, targetRatio, daiAddr };
85
140
  },
86
141
  };
142
+ /**
143
+ __ __ ______ __ __ __ .___________.____ ____ ____ ____ __
144
+ | | | | / __ \ | | | | | | | |\ \ / / \ \ / / /_ |
145
+ | | | | | | | | | | | | | | `---| |----` \ \/ / \ \/ / | |
146
+ | | | | | | | | | | | | | | | | \_ _/ \ / | |
147
+ | `----.| | | `--' '--.| `--' | | | | | | | \ / | |
148
+ |_______||__| \_____\_____\\______/ |__| |__| |__| \__/ |_|
149
+ */
150
+ export const liquityRepayFromSavingsSubData = {
151
+ decode(subData) {
152
+ const weiRatio = AbiCoder.decodeParameter('uint256', subData[1]);
153
+ const targetRatio = weiToRatioPercentage(weiRatio);
154
+ return { targetRatio };
155
+ },
156
+ };
87
157
  export const liquityLeverageManagementSubData = {
88
158
  decode: (subData) => {
89
159
  const weiRatio = AbiCoder.decodeParameter('uint256', subData[1]);
@@ -110,6 +180,201 @@ export const liquityCloseSubData = {
110
180
  return { closeToAssetAddr, debtAddr };
111
181
  },
112
182
  };
183
+ export const liquityDsrPaybackSubData = {
184
+ encode: (targetRatio) => {
185
+ const daiAddress = getAssetInfo('DAI').address;
186
+ const lusdAddress = getAssetInfo('LUSD').address;
187
+ const ratioStateEncoded = AbiCoder.encodeParameter('uint8', RatioState.UNDER);
188
+ const targetRatioEncoded = AbiCoder.encodeParameter('uint256', ratioPercentageToWei(targetRatio));
189
+ const daiAddressEncoded = AbiCoder.encodeParameter('address', daiAddress);
190
+ const lusdAddressEncoded = AbiCoder.encodeParameter('address', lusdAddress);
191
+ return [ratioStateEncoded, targetRatioEncoded, daiAddressEncoded, lusdAddressEncoded];
192
+ },
193
+ decode: (subData) => {
194
+ const weiRatio = AbiCoder.decodeParameter('uint256', subData[1]);
195
+ const targetRatio = weiToRatioPercentage(weiRatio);
196
+ return { targetRatio };
197
+ },
198
+ };
199
+ export const liquityDsrSupplySubData = {
200
+ encode: (targetRatio) => {
201
+ const daiAddress = getAssetInfo('DAI').address;
202
+ const wethAddress = getAssetInfo('WETH').address;
203
+ const ratioStateEncoded = AbiCoder.encodeParameter('uint8', RatioState.UNDER);
204
+ const targetRatioEncoded = AbiCoder.encodeParameter('uint256', ratioPercentageToWei(targetRatio));
205
+ const daiAddressEncoded = AbiCoder.encodeParameter('address', daiAddress);
206
+ const wethAddressEncoded = AbiCoder.encodeParameter('address', wethAddress);
207
+ return [ratioStateEncoded, targetRatioEncoded, daiAddressEncoded, wethAddressEncoded];
208
+ },
209
+ decode: (subData) => {
210
+ const weiRatio = AbiCoder.decodeParameter('uint256', subData[1]);
211
+ const targetRatio = weiToRatioPercentage(weiRatio);
212
+ return { targetRatio };
213
+ },
214
+ };
215
+ export const liquityDebtInFrontRepaySubData = {
216
+ encode: (targetRatioIncrease) => {
217
+ const wethAddress = getAssetInfo('WETH').address;
218
+ const lusdAddress = getAssetInfo('LUSD').address;
219
+ const wethAddressEncoded = AbiCoder.encodeParameter('address', wethAddress);
220
+ const lusdAddressEncoded = AbiCoder.encodeParameter('address', lusdAddress);
221
+ const targetRatioIncreaseEncoded = AbiCoder.encodeParameter('uint256', ratioPercentageToWei(targetRatioIncrease));
222
+ const withdrawIdEncoded = AbiCoder.encodeParameter('uint8', 1); // withdraw - 1
223
+ const paybackIdEncoded = AbiCoder.encodeParameter('uint8', 0); // payback - 0
224
+ return [wethAddressEncoded, lusdAddressEncoded, targetRatioIncreaseEncoded, withdrawIdEncoded, paybackIdEncoded];
225
+ },
226
+ decode: (subData) => {
227
+ const weiRatio = AbiCoder.decodeParameter('uint256', subData[2]);
228
+ const targetRatioIncrease = weiToRatioPercentage(weiRatio);
229
+ return { targetRatioIncrease };
230
+ },
231
+ };
232
+ /**
233
+ * __ __ ______ __ __ __ .___________.____ ____ ____ ____ ___
234
+ | | | | / __ \ | | | | | | | |\ \ / / \ \ / / |__ \
235
+ | | | | | | | | | | | | | | `---| |----` \ \/ / \ \/ / ) |
236
+ | | | | | | | | | | | | | | | | \_ _/ \ / / /
237
+ | `----.| | | `--' '--.| `--' | | | | | | | \ / / /_
238
+ |_______||__| \_____\_____\\______/ |__| |__| |__| \__/ |____|
239
+ */
240
+ export const liquityV2LeverageManagementSubData = {
241
+ encode: (market, troveId, collToken, boldToken, ratioState, targetRatio) => {
242
+ const marketEncoded = AbiCoder.encodeParameter('address', market);
243
+ const troveIdEncoded = AbiCoder.encodeParameter('uint256', troveId);
244
+ const collTokenEncoded = AbiCoder.encodeParameter('address', collToken);
245
+ const boldTokenEncoded = AbiCoder.encodeParameter('address', boldToken);
246
+ const ratioStateEncoded = AbiCoder.encodeParameter('uint8', ratioState);
247
+ const targetRatioEncoded = AbiCoder.encodeParameter('uint256', ratioPercentageToWei(targetRatio));
248
+ const isRepay = ratioState === RatioState.UNDER;
249
+ const collActionType = isRepay ? CollActionType.WITHDRAW : CollActionType.SUPPLY;
250
+ const debtActionType = isRepay ? DebtActionType.PAYBACK : DebtActionType.BORROW;
251
+ const collActionTypeEncoded = AbiCoder.encodeParameter('uint8', collActionType);
252
+ const debtActionTypeEncoded = AbiCoder.encodeParameter('uint8', debtActionType);
253
+ return [
254
+ marketEncoded,
255
+ troveIdEncoded,
256
+ collTokenEncoded,
257
+ boldTokenEncoded,
258
+ ratioStateEncoded,
259
+ targetRatioEncoded,
260
+ collActionTypeEncoded,
261
+ debtActionTypeEncoded,
262
+ ];
263
+ },
264
+ decode: (subData) => {
265
+ const market = AbiCoder.decodeParameter('address', subData[0]);
266
+ const troveId = AbiCoder.decodeParameter('uint256', subData[1]);
267
+ const collToken = AbiCoder.decodeParameter('address', subData[2]);
268
+ const boldToken = AbiCoder.decodeParameter('address', subData[3]);
269
+ const ratioState = AbiCoder.decodeParameter('uint8', subData[4]);
270
+ const weiRatio = AbiCoder.decodeParameter('uint256', subData[5]);
271
+ const targetRatio = weiToRatioPercentage(weiRatio);
272
+ return {
273
+ market, troveId, collToken, boldToken, ratioState, targetRatio,
274
+ };
275
+ },
276
+ };
277
+ export const liquityV2CloseSubData = {
278
+ encode(market, troveId, collToken, boldToken, closeType) {
279
+ const marketEncoded = AbiCoder.encodeParameter('address', market);
280
+ const troveIdEncoded = AbiCoder.encodeParameter('uint256', troveId);
281
+ const collAddrEncoded = AbiCoder.encodeParameter('address', collToken);
282
+ const boldTokenEncoded = AbiCoder.encodeParameter('address', boldToken);
283
+ const wethAddress = getAssetInfo('WETH').address;
284
+ const wethAddressEncoded = AbiCoder.encodeParameter('address', wethAddress);
285
+ const gasCompensation = new Dec('0.0375').mul(1e18).toString();
286
+ const gasCompensationEncoded = AbiCoder.encodeParameter('uint256', gasCompensation);
287
+ const closeTypeEncoded = AbiCoder.encodeParameter('uint8', closeType);
288
+ return [
289
+ marketEncoded,
290
+ troveIdEncoded,
291
+ collAddrEncoded,
292
+ boldTokenEncoded,
293
+ wethAddressEncoded,
294
+ gasCompensationEncoded,
295
+ closeTypeEncoded,
296
+ ];
297
+ },
298
+ decode(subData) {
299
+ const market = AbiCoder.decodeParameter('address', subData[0]);
300
+ const troveId = AbiCoder.decodeParameter('uint256', subData[1]);
301
+ const collToken = AbiCoder.decodeParameter('address', subData[2]);
302
+ const boldToken = AbiCoder.decodeParameter('address', subData[3]);
303
+ // skip wethAddress and gasCompensation
304
+ const closeType = AbiCoder.decodeParameter('uint8', subData[6]);
305
+ return {
306
+ market, troveId, collToken, boldToken, closeType,
307
+ };
308
+ },
309
+ };
310
+ export const liquityV2LeverageManagementOnPriceSubData = {
311
+ encode(market, troveId, collToken, boldToken, targetRatio, isRepayOnPrice) {
312
+ const encodedMarket = AbiCoder.encodeParameter('address', market);
313
+ const encodedTroveId = AbiCoder.encodeParameter('uint256', troveId);
314
+ const encodedCollToken = AbiCoder.encodeParameter('address', collToken);
315
+ const encodedBoldToken = AbiCoder.encodeParameter('address', boldToken);
316
+ const encodedTargetRatio = AbiCoder.encodeParameter('uint256', ratioPercentageToWei(targetRatio));
317
+ const collActionType = isRepayOnPrice ? CollActionType.WITHDRAW : CollActionType.SUPPLY;
318
+ const debtActionType = isRepayOnPrice ? DebtActionType.PAYBACK : DebtActionType.BORROW;
319
+ const encodedCollActionType = AbiCoder.encodeParameter('uint8', collActionType);
320
+ const encodedDebtActionType = AbiCoder.encodeParameter('uint8', debtActionType);
321
+ return [
322
+ encodedMarket,
323
+ encodedTroveId,
324
+ encodedCollToken,
325
+ encodedBoldToken,
326
+ encodedTargetRatio,
327
+ encodedCollActionType,
328
+ encodedDebtActionType,
329
+ ];
330
+ },
331
+ decode(subData) {
332
+ const market = AbiCoder.decodeParameter('address', subData[0]);
333
+ const troveId = AbiCoder.decodeParameter('uint256', subData[1]);
334
+ const collToken = AbiCoder.decodeParameter('address', subData[2]);
335
+ const boldToken = AbiCoder.decodeParameter('address', subData[3]);
336
+ const weiRatio = AbiCoder.decodeParameter('uint256', subData[4]);
337
+ const targetRatio = weiToRatioPercentage(weiRatio);
338
+ return {
339
+ market, troveId, collToken, boldToken, targetRatio,
340
+ };
341
+ },
342
+ };
343
+ export const liquityV2PaybackSubData = {
344
+ encode: (market, troveId, boldToken, targetRatio, ratioState) => {
345
+ const marketEncoded = AbiCoder.encodeParameter('address', market);
346
+ const troveIdEncoded = AbiCoder.encodeParameter('uint256', troveId);
347
+ const boldTokenEncoded = AbiCoder.encodeParameter('address', boldToken);
348
+ const targetRatioEncoded = AbiCoder.encodeParameter('uint256', ratioPercentageToWei(targetRatio));
349
+ const ratioStateEncoded = AbiCoder.encodeParameter('uint8', ratioState);
350
+ return [
351
+ marketEncoded,
352
+ troveIdEncoded,
353
+ boldTokenEncoded,
354
+ targetRatioEncoded,
355
+ ratioStateEncoded,
356
+ ];
357
+ },
358
+ decode: (subData) => {
359
+ const market = AbiCoder.decodeParameter('address', subData[0]);
360
+ const troveId = AbiCoder.decodeParameter('uint256', subData[1]);
361
+ const boldToken = AbiCoder.decodeParameter('address', subData[2]);
362
+ const weiRatio = AbiCoder.decodeParameter('uint256', subData[3]);
363
+ const ratioState = AbiCoder.decodeParameter('uint8', subData[4]);
364
+ const targetRatio = weiToRatioPercentage(weiRatio);
365
+ return {
366
+ market, troveId, boldToken, ratioState, targetRatio,
367
+ };
368
+ },
369
+ };
370
+ /**
371
+ ___ ___ ____ ____ _______ ____ ____ ___
372
+ / \ / \ \ \ / / | ____| \ \ / / |__ \
373
+ / ^ \ / ^ \ \ \/ / | |__ \ \/ / ) |
374
+ / /_\ \ / /_\ \ \ / | __| \ / / /
375
+ / _____ \ / _____ \ \ / | |____ \ / / /_
376
+ /__/ \__\ /__/ \__\ \__/ |_______| \__/ |____|
377
+ */
113
378
  export const aaveV2LeverageManagementSubData = {
114
379
  encode(triggerRepayRatio, triggerBoostRatio, targetBoostRatio, targetRepayRatio, boostEnabled) {
115
380
  return [
@@ -127,6 +392,14 @@ export const aaveV2LeverageManagementSubData = {
127
392
  return { targetRatio };
128
393
  },
129
394
  };
395
+ /**
396
+ ___ ___ ____ ____ _______ ____ ____ ____
397
+ / \ / \ \ \ / / | ____| \ \ / / |___ \
398
+ / ^ \ / ^ \ \ \/ / | |__ \ \/ / __) |
399
+ / /_\ \ / /_\ \ \ / | __| \ / |__ <
400
+ / _____ \ / _____ \ \ / | |____ \ / ___) |
401
+ /__/ \__\ /__/ \__\ \__/ |_______| \__/ |____/
402
+ */
130
403
  export const aaveV3LeverageManagementSubData = {
131
404
  decode(subData) {
132
405
  const ratioWei = AbiCoder.decodeParameter('uint256', subData[0]);
@@ -274,15 +547,180 @@ export const aaveV3QuotePriceSubData = {
274
547
  };
275
548
  },
276
549
  };
277
- export const compoundV2LeverageManagementSubData = {
278
- encode(triggerRepayRatio, triggerBoostRatio, targetBoostRatio, targetRepayRatio, boostEnabled) {
550
+ export const aaveV3LeverageManagementOnPriceSubData = {
551
+ encode(collAsset, collAssetId, debtAsset, debtAssetId, marketAddr, targetRatio) {
552
+ const encodedColl = AbiCoder.encodeParameter('address', collAsset);
553
+ const encodedCollId = AbiCoder.encodeParameter('uint8', collAssetId);
554
+ const encodedDebt = AbiCoder.encodeParameter('address', debtAsset);
555
+ const encodedDebtId = AbiCoder.encodeParameter('uint8', debtAssetId);
556
+ const encodedMarket = AbiCoder.encodeParameter('address', marketAddr);
557
+ const encodedTargetRatio = AbiCoder.encodeParameter('uint256', ratioPercentageToWei(targetRatio));
558
+ const useOnBehalfEncoded = AbiCoder.encodeParameter('bool', false);
279
559
  return [
280
- new Dec(triggerRepayRatio).mul(1e16).toString(),
281
- new Dec(triggerBoostRatio).mul(1e16).toString(),
282
- new Dec(targetBoostRatio).mul(1e16).toString(),
283
- new Dec(targetRepayRatio).mul(1e16).toString(),
284
- // @ts-ignore // TODO
285
- boostEnabled,
560
+ encodedColl,
561
+ encodedCollId,
562
+ encodedDebt,
563
+ encodedDebtId,
564
+ encodedMarket,
565
+ encodedTargetRatio,
566
+ useOnBehalfEncoded,
567
+ ];
568
+ },
569
+ decode(subData) {
570
+ const collAsset = AbiCoder.decodeParameter('address', subData[0]);
571
+ const collAssetId = Number(AbiCoder.decodeParameter('uint8', subData[1]));
572
+ const debtAsset = AbiCoder.decodeParameter('address', subData[2]);
573
+ const debtAssetId = Number(AbiCoder.decodeParameter('uint8', subData[3]));
574
+ const marketAddr = AbiCoder.decodeParameter('address', subData[4]);
575
+ const weiRatio = AbiCoder.decodeParameter('uint256', subData[5]);
576
+ const targetRatio = weiToRatioPercentage(weiRatio);
577
+ return {
578
+ collAsset, collAssetId, debtAsset, debtAssetId, marketAddr, targetRatio,
579
+ };
580
+ },
581
+ };
582
+ /**
583
+ * ___ ___ ____ ____ _______ ____ ____ _ _
584
+ / \ / \ \ \ / / | ____| \ \ / / | || |
585
+ / ^ \ / ^ \ \ \/ / | |__ \ \/ / | || |_
586
+ / /_\ \ / /_\ \ \ / | __| \ / |__ _|
587
+ / _____ \ / _____ \ \ / | |____ \ / | |
588
+ /__/ \__\ /__/ \__\ \__/ |_______| \__/ |_|
589
+ */
590
+ export const aaveV4LeverageManagementSubData = {
591
+ encode: (spoke, owner, ratioState, targetRatio) => {
592
+ const spokeEncoded = AbiCoder.encodeParameter('address', spoke);
593
+ const ownerEncoded = AbiCoder.encodeParameter('address', owner);
594
+ const ratioStateEncoded = AbiCoder.encodeParameter('uint8', ratioState);
595
+ const targetRatioEncoded = AbiCoder.encodeParameter('uint256', ratioPercentageToWei(targetRatio));
596
+ return [spokeEncoded, ownerEncoded, ratioStateEncoded, targetRatioEncoded];
597
+ },
598
+ decode: (subData) => {
599
+ const spoke = AbiCoder.decodeParameter('address', subData[0]);
600
+ const owner = AbiCoder.decodeParameter('address', subData[1]);
601
+ const ratioState = Number(AbiCoder.decodeParameter('uint8', subData[2]));
602
+ const targetRatio = weiToRatioPercentage(AbiCoder.decodeParameter('uint256', subData[3]));
603
+ return {
604
+ spoke, owner, ratioState, targetRatio,
605
+ };
606
+ },
607
+ };
608
+ export const aaveV4LeverageManagementOnPriceSubData = {
609
+ encode: (spoke, owner, collAsset, collAssetId, debtAsset, debtAssetId, ratioState, targetRatio) => {
610
+ const spokeEncoded = AbiCoder.encodeParameter('address', spoke);
611
+ const ownerEncoded = AbiCoder.encodeParameter('address', owner);
612
+ const collAssetEncoded = AbiCoder.encodeParameter('address', collAsset);
613
+ const collAssetIdEncoded = AbiCoder.encodeParameter('uint256', collAssetId);
614
+ const debtAssetEncoded = AbiCoder.encodeParameter('address', debtAsset);
615
+ const debtAssetIdEncoded = AbiCoder.encodeParameter('uint256', debtAssetId);
616
+ const ratioStateEncoded = AbiCoder.encodeParameter('uint8', ratioState);
617
+ const targetRatioEncoded = AbiCoder.encodeParameter('uint256', ratioPercentageToWei(targetRatio));
618
+ return [
619
+ spokeEncoded,
620
+ ownerEncoded,
621
+ collAssetEncoded,
622
+ collAssetIdEncoded,
623
+ debtAssetEncoded,
624
+ debtAssetIdEncoded,
625
+ ratioStateEncoded,
626
+ targetRatioEncoded,
627
+ ];
628
+ },
629
+ decode: (subData) => {
630
+ const spoke = AbiCoder.decodeParameter('address', subData[0]);
631
+ const owner = AbiCoder.decodeParameter('address', subData[1]);
632
+ const collAsset = AbiCoder.decodeParameter('address', subData[2]);
633
+ const collAssetId = Number(AbiCoder.decodeParameter('uint256', subData[3]));
634
+ const debtAsset = AbiCoder.decodeParameter('address', subData[4]);
635
+ const debtAssetId = Number(AbiCoder.decodeParameter('uint256', subData[5]));
636
+ const ratioState = Number(AbiCoder.decodeParameter('uint8', subData[6]));
637
+ const targetRatio = weiToRatioPercentage(AbiCoder.decodeParameter('uint256', subData[7]));
638
+ return {
639
+ spoke, owner, collAsset, collAssetId, debtAsset, debtAssetId, ratioState, targetRatio,
640
+ };
641
+ },
642
+ };
643
+ export const aaveV4CloseSubData = {
644
+ encode: (spoke, owner, collAsset, collAssetId, debtAsset, debtAssetId, closeType) => {
645
+ const spokeEncoded = AbiCoder.encodeParameter('address', spoke);
646
+ const ownerEncoded = AbiCoder.encodeParameter('address', owner);
647
+ const collAssetEncoded = AbiCoder.encodeParameter('address', collAsset);
648
+ const collAssetIdEncoded = AbiCoder.encodeParameter('uint256', collAssetId);
649
+ const debtAssetEncoded = AbiCoder.encodeParameter('address', debtAsset);
650
+ const debtAssetIdEncoded = AbiCoder.encodeParameter('uint256', debtAssetId);
651
+ const closeTypeEncoded = AbiCoder.encodeParameter('uint8', closeType);
652
+ return [
653
+ spokeEncoded,
654
+ ownerEncoded,
655
+ collAssetEncoded,
656
+ collAssetIdEncoded,
657
+ debtAssetEncoded,
658
+ debtAssetIdEncoded,
659
+ closeTypeEncoded,
660
+ ];
661
+ },
662
+ decode: (subData) => {
663
+ const spoke = AbiCoder.decodeParameter('address', subData[0]);
664
+ const owner = AbiCoder.decodeParameter('address', subData[1]);
665
+ const collAsset = AbiCoder.decodeParameter('address', subData[2]);
666
+ const collAssetId = Number(AbiCoder.decodeParameter('uint256', subData[3]));
667
+ const debtAsset = AbiCoder.decodeParameter('address', subData[4]);
668
+ const debtAssetId = Number(AbiCoder.decodeParameter('uint256', subData[5]));
669
+ const closeType = Number(AbiCoder.decodeParameter('uint8', subData[6]));
670
+ return {
671
+ spoke, owner, collAsset, collAssetId, debtAsset, debtAssetId, closeType,
672
+ };
673
+ },
674
+ };
675
+ export const aaveV4CollateralSwitchSubData = {
676
+ encode: (spoke, owner, fromAsset, fromAssetId, toAsset, toAssetId, amountToSwitch) => {
677
+ const spokeEncoded = AbiCoder.encodeParameter('address', spoke);
678
+ const ownerEncoded = AbiCoder.encodeParameter('address', owner);
679
+ const fromAssetEncoded = AbiCoder.encodeParameter('address', fromAsset);
680
+ const fromAssetIdEncoded = AbiCoder.encodeParameter('uint256', fromAssetId);
681
+ const toAssetEncoded = AbiCoder.encodeParameter('address', toAsset);
682
+ const toAssetIdEncoded = AbiCoder.encodeParameter('uint256', toAssetId);
683
+ const amountToSwitchEncoded = AbiCoder.encodeParameter('uint256', amountToSwitch);
684
+ return [
685
+ spokeEncoded,
686
+ ownerEncoded,
687
+ fromAssetEncoded,
688
+ fromAssetIdEncoded,
689
+ toAssetEncoded,
690
+ toAssetIdEncoded,
691
+ amountToSwitchEncoded,
692
+ ];
693
+ },
694
+ decode: (subData) => {
695
+ const spoke = AbiCoder.decodeParameter('address', subData[0]);
696
+ const owner = AbiCoder.decodeParameter('address', subData[1]);
697
+ const fromAsset = AbiCoder.decodeParameter('address', subData[2]);
698
+ const fromAssetId = Number(AbiCoder.decodeParameter('uint256', subData[3]));
699
+ const toAsset = AbiCoder.decodeParameter('address', subData[4]);
700
+ const toAssetId = Number(AbiCoder.decodeParameter('uint256', subData[5]));
701
+ const amountToSwitch = AbiCoder.decodeParameter('uint256', subData[6]);
702
+ return {
703
+ spoke, owner, fromAsset, fromAssetId, toAsset, toAssetId, amountToSwitch,
704
+ };
705
+ },
706
+ };
707
+ /**
708
+ ______ ______ .___ ___. .______ ____ ____ ___
709
+ / | / __ \ | \/ | | _ \ \ \ / / |__ \
710
+ | ,----'| | | | | \ / | | |_) | \ \/ / ) |
711
+ | | | | | | | |\/| | | ___/ \ / / /
712
+ | `----.| `--' | | | | | | | \ / / /_
713
+ \______| \______/ |__| |__| | _| \__/ |____|
714
+ */
715
+ export const compoundV2LeverageManagementSubData = {
716
+ encode(triggerRepayRatio, triggerBoostRatio, targetBoostRatio, targetRepayRatio, boostEnabled) {
717
+ return [
718
+ new Dec(triggerRepayRatio).mul(1e16).toString(),
719
+ new Dec(triggerBoostRatio).mul(1e16).toString(),
720
+ new Dec(targetBoostRatio).mul(1e16).toString(),
721
+ new Dec(targetRepayRatio).mul(1e16).toString(),
722
+ // @ts-ignore // TODO
723
+ boostEnabled,
286
724
  ];
287
725
  },
288
726
  decode(subData) {
@@ -291,6 +729,14 @@ export const compoundV2LeverageManagementSubData = {
291
729
  return { targetRatio };
292
730
  },
293
731
  };
732
+ /**
733
+ ______ ______ .___ ___. .______ ____ ____ ____
734
+ / | / __ \ | \/ | | _ \ \ \ / / |___ \
735
+ | ,----'| | | | | \ / | | |_) | \ \/ / __) |
736
+ | | | | | | | |\/| | | ___/ \ / |__ <
737
+ | `----.| `--' | | | | | | | \ / ___) |
738
+ \______| \______/ |__| |__| | _| \__/ |____/
739
+ */
294
740
  export const compoundV3LeverageManagementSubData = {
295
741
  encode(market, baseToken, triggerRepayRatio, triggerBoostRatio, targetBoostRatio, targetRepayRatio, boostEnabled, isEOA) {
296
742
  return [
@@ -333,52 +779,70 @@ export const compoundV3L2LeverageManagementSubData = {
333
779
  return { targetRatio };
334
780
  },
335
781
  };
336
- export const morphoAaveV2LeverageManagementSubData = {
337
- encode(triggerRepayRatio, triggerBoostRatio, targetBoostRatio, targetRepayRatio, boostEnabled) {
782
+ export const compoundV3LeverageManagementOnPriceSubData = {
783
+ encode(market, collToken, baseToken, targetRatio, ratioState, user) {
784
+ const marketEncoded = AbiCoder.encodeParameter('address', market);
785
+ const collTokenEncoded = AbiCoder.encodeParameter('address', collToken);
786
+ const baseTokenEncoded = AbiCoder.encodeParameter('address', baseToken);
787
+ const targetRatioEncoded = AbiCoder.encodeParameter('uint256', ratioPercentageToWei(targetRatio));
788
+ const ratioStateEncoded = AbiCoder.encodeParameter('uint8', ratioState);
789
+ const userEncoded = AbiCoder.encodeParameter('address', user);
338
790
  return [
339
- ratioPercentageToWei(triggerRepayRatio),
340
- ratioPercentageToWei(triggerBoostRatio),
341
- ratioPercentageToWei(targetBoostRatio),
342
- ratioPercentageToWei(targetRepayRatio),
343
- // @ts-ignore
344
- boostEnabled,
791
+ marketEncoded,
792
+ collTokenEncoded,
793
+ baseTokenEncoded,
794
+ targetRatioEncoded,
795
+ ratioStateEncoded,
796
+ userEncoded,
345
797
  ];
346
798
  },
347
799
  decode(subData) {
348
- const ratioWei = AbiCoder.decodeParameter('uint128', subData[1]);
349
- const targetRatio = weiToRatioPercentage(ratioWei);
350
- return { targetRatio };
800
+ const market = AbiCoder.decodeParameter('address', subData[0]);
801
+ const collToken = AbiCoder.decodeParameter('address', subData[1]);
802
+ const baseToken = AbiCoder.decodeParameter('address', subData[2]);
803
+ const weiRatio = AbiCoder.decodeParameter('uint256', subData[3]);
804
+ const targetRatio = weiToRatioPercentage(weiRatio);
805
+ const ratioState = Number(AbiCoder.decodeParameter('uint8', subData[4]));
806
+ const owner = AbiCoder.decodeParameter('address', subData[5]);
807
+ return {
808
+ market, collToken, baseToken, targetRatio, ratioState, owner,
809
+ };
351
810
  },
352
811
  };
353
- export const cBondsRebondSubData = {
354
- encode(bondId) {
355
- const bondIdEncoded = AbiCoder.encodeParameter('uint256', bondId);
356
- return [bondIdEncoded];
812
+ export const compoundV3CloseSubData = {
813
+ encode(market, collToken, baseToken, closeType, user) {
814
+ const marketEncoded = AbiCoder.encodeParameter('address', market);
815
+ const collTokenEncoded = AbiCoder.encodeParameter('address', collToken);
816
+ const baseTokenEncoded = AbiCoder.encodeParameter('address', baseToken);
817
+ const closeTypeEncoded = AbiCoder.encodeParameter('uint8', closeType);
818
+ const userEncoded = AbiCoder.encodeParameter('address', user);
819
+ return [
820
+ marketEncoded,
821
+ collTokenEncoded,
822
+ baseTokenEncoded,
823
+ closeTypeEncoded,
824
+ userEncoded,
825
+ ];
357
826
  },
358
827
  decode(subData) {
359
- const bondId = AbiCoder.decodeParameter('uint256', subData[1]).toString();
360
- return { bondId };
361
- },
362
- };
363
- export const liquityPaybackUsingChickenBondSubData = {
364
- /**
365
- * @param sourceId bondId or subId
366
- * @param sourceType 0 for bond, 1 for subId
367
- * @param chainId
368
- */
369
- encode: (sourceId, sourceType, chainId = ChainId.Ethereum) => {
370
- const sourceIdEncoded = AbiCoder.encodeParameter('uint256', sourceId);
371
- const sourceTypeEncoded = AbiCoder.encodeParameter('uint256', sourceType);
372
- const lusdAddressEncoded = AbiCoder.encodeParameter('address', getAssetInfo('LUSD', chainId).address);
373
- const bLusdAddressEncoded = AbiCoder.encodeParameter('address', getAssetInfo('bLUSD', chainId).address);
374
- return [sourceIdEncoded, sourceTypeEncoded, lusdAddressEncoded, bLusdAddressEncoded];
375
- },
376
- decode: (subData) => {
377
- const sourceId = AbiCoder.decodeParameter('uint256', subData[0]).toString();
378
- const sourceType = AbiCoder.decodeParameter('uint256', subData[1]).toString();
379
- return { sourceId, sourceType };
828
+ const market = AbiCoder.decodeParameter('address', subData[0]);
829
+ const collToken = AbiCoder.decodeParameter('address', subData[1]);
830
+ const baseToken = AbiCoder.decodeParameter('address', subData[2]);
831
+ const closeType = Number(AbiCoder.decodeParameter('uint8', subData[3]));
832
+ const owner = AbiCoder.decodeParameter('address', subData[4]);
833
+ return {
834
+ market, collToken, baseToken, closeType, owner,
835
+ };
380
836
  },
381
837
  };
838
+ /**
839
+ __________ ___ ______ __ __ ___ .__ __. _______ _______
840
+ | ____\ \ / / / || | | | / \ | \ | | / _____|| ____|
841
+ | |__ \ V / | ,----'| |__| | / ^ \ | \| | | | __ | |__
842
+ | __| > < | | | __ | / /_\ \ | . ` | | | |_ | | __|
843
+ | |____ / . \ | `----.| | | | / _____ \ | |\ | | |__| | | |____
844
+ |_______/__/ \__\ \______||__| |__| /__/ \__\ |__| \__| \______| |_______|
845
+ */
382
846
  export const exchangeDcaSubData = {
383
847
  encode: (fromToken, toToken, amount, interval) => {
384
848
  const sellTokenEncoded = AbiCoder.encodeParameter('address', fromToken);
@@ -418,6 +882,14 @@ export const exchangeLimitOrderSubData = {
418
882
  return { fromToken, toToken, amount };
419
883
  },
420
884
  };
885
+ /**
886
+ _______..______ ___ .______ __ ___
887
+ / || _ \ / \ | _ \ | |/ /
888
+ | (----`| |_) | / ^ \ | |_) | | ' /
889
+ \ \ | ___/ / /_\ \ | / | <
890
+ .----) | | | / _____ \ | |\ \----.| . \
891
+ |_______/ | _| /__/ \__\ | _| `._____||__|\__\
892
+ */
421
893
  export const sparkLeverageManagementSubData = {
422
894
  decode(subData) {
423
895
  const ratioWei = AbiCoder.decodeParameter('uint256', subData[0]);
@@ -439,55 +911,46 @@ export const sparkLeverageManagementSubDataWithoutSubProxy = {
439
911
  return { targetRatio, ratioState };
440
912
  },
441
913
  };
442
- export const liquityDsrPaybackSubData = {
443
- encode: (targetRatio) => {
444
- const daiAddress = getAssetInfo('DAI').address;
445
- const lusdAddress = getAssetInfo('LUSD').address;
446
- const ratioStateEncoded = AbiCoder.encodeParameter('uint8', RatioState.UNDER);
447
- const targetRatioEncoded = AbiCoder.encodeParameter('uint256', ratioPercentageToWei(targetRatio));
448
- const daiAddressEncoded = AbiCoder.encodeParameter('address', daiAddress);
449
- const lusdAddressEncoded = AbiCoder.encodeParameter('address', lusdAddress);
450
- return [ratioStateEncoded, targetRatioEncoded, daiAddressEncoded, lusdAddressEncoded];
451
- },
452
- decode: (subData) => {
453
- const weiRatio = AbiCoder.decodeParameter('uint256', subData[1]);
454
- const targetRatio = weiToRatioPercentage(weiRatio);
455
- return { targetRatio };
456
- },
457
- };
458
- export const liquityDsrSupplySubData = {
459
- encode: (targetRatio) => {
460
- const daiAddress = getAssetInfo('DAI').address;
461
- const wethAddress = getAssetInfo('WETH').address;
462
- const ratioStateEncoded = AbiCoder.encodeParameter('uint8', RatioState.UNDER);
463
- const targetRatioEncoded = AbiCoder.encodeParameter('uint256', ratioPercentageToWei(targetRatio));
464
- const daiAddressEncoded = AbiCoder.encodeParameter('address', daiAddress);
465
- const wethAddressEncoded = AbiCoder.encodeParameter('address', wethAddress);
466
- return [ratioStateEncoded, targetRatioEncoded, daiAddressEncoded, wethAddressEncoded];
467
- },
468
- decode: (subData) => {
469
- const weiRatio = AbiCoder.decodeParameter('uint256', subData[1]);
470
- const targetRatio = weiToRatioPercentage(weiRatio);
471
- return { targetRatio };
472
- },
473
- };
474
- export const liquityDebtInFrontRepaySubData = {
475
- encode: (targetRatioIncrease) => {
476
- const wethAddress = getAssetInfo('WETH').address;
477
- const lusdAddress = getAssetInfo('LUSD').address;
478
- const wethAddressEncoded = AbiCoder.encodeParameter('address', wethAddress);
479
- const lusdAddressEncoded = AbiCoder.encodeParameter('address', lusdAddress);
480
- const targetRatioIncreaseEncoded = AbiCoder.encodeParameter('uint256', ratioPercentageToWei(targetRatioIncrease));
481
- const withdrawIdEncoded = AbiCoder.encodeParameter('uint8', 1); // withdraw - 1
482
- const paybackIdEncoded = AbiCoder.encodeParameter('uint8', 0); // payback - 0
483
- return [wethAddressEncoded, lusdAddressEncoded, targetRatioIncreaseEncoded, withdrawIdEncoded, paybackIdEncoded];
914
+ export const sparkCloseGenericSubData = {
915
+ encode(collAsset, collAssetId, debtAsset, debtAssetId, closeType, marketAddr, user) {
916
+ const encodedColl = AbiCoder.encodeParameter('address', collAsset);
917
+ const encodedCollId = AbiCoder.encodeParameter('uint8', collAssetId);
918
+ const encodedDebt = AbiCoder.encodeParameter('address', debtAsset);
919
+ const encodedDebtId = AbiCoder.encodeParameter('uint8', debtAssetId);
920
+ const encodedCloseType = AbiCoder.encodeParameter('uint8', closeType);
921
+ const encodedMarket = AbiCoder.encodeParameter('address', marketAddr);
922
+ const userEncoded = AbiCoder.encodeParameter('address', user);
923
+ return [
924
+ encodedColl,
925
+ encodedCollId,
926
+ encodedDebt,
927
+ encodedDebtId,
928
+ encodedCloseType,
929
+ encodedMarket,
930
+ userEncoded,
931
+ ];
484
932
  },
485
- decode: (subData) => {
486
- const weiRatio = AbiCoder.decodeParameter('uint256', subData[2]);
487
- const targetRatioIncrease = weiToRatioPercentage(weiRatio);
488
- return { targetRatioIncrease };
933
+ decode(subData) {
934
+ const collAsset = AbiCoder.decodeParameter('address', subData[0]);
935
+ const collAssetId = Number(AbiCoder.decodeParameter('uint8', subData[1]));
936
+ const debtAsset = AbiCoder.decodeParameter('address', subData[2]);
937
+ const debtAssetId = Number(AbiCoder.decodeParameter('uint8', subData[3]));
938
+ const closeType = Number(AbiCoder.decodeParameter('uint8', subData[4]));
939
+ const marketAddr = AbiCoder.decodeParameter('address', subData[5]);
940
+ const owner = AbiCoder.decodeParameter('address', subData[6]);
941
+ return {
942
+ collAsset, collAssetId, debtAsset, debtAssetId, closeType, marketAddr, owner,
943
+ };
489
944
  },
490
945
  };
946
+ /**
947
+ ______ .______ ____ ____ __ __ _______. _______
948
+ / || _ \ \ \ / / | | | | / || \
949
+ | ,----'| |_) | \ \/ / | | | | | (----`| .--. |
950
+ | | | / \ / | | | | \ \ | | | |
951
+ | `----.| |\ \----. \ / | `--' | .----) | | '--' |
952
+ \______|| _| `._____| \__/ \______/ |_______/ |_______/
953
+ */
491
954
  export const crvUSDLeverageManagementSubData = {
492
955
  encode: (controllerAddr, ratioState, targetRatio, collTokenAddr, crvUSDAddr) => {
493
956
  const controllerAddrEncoded = AbiCoder.encodeParameter('address', controllerAddr);
@@ -533,6 +996,14 @@ export const crvUSDPaybackSubData = {
533
996
  };
534
997
  },
535
998
  };
999
+ /**
1000
+ .___ ___. ______ .______ .______ __ __ ______
1001
+ | \/ | / __ \ | _ \ | _ \ | | | | / __ \
1002
+ | \ / | | | | | | |_) | | |_) | | |__| | | | | |
1003
+ | |\/| | | | | | | / | ___/ | __ | | | | |
1004
+ | | | | | `--' | | |\ \----.| | | | | | | `--' |
1005
+ |__| |__| \______/ | _| `._____|| _| |__| |__| \______/
1006
+ */
536
1007
  export const morphoBlueLeverageManagementSubData = {
537
1008
  encode: (loanToken, collToken, oracle, irm, lltv, ratioState, targetRatio, user, isEOA) => {
538
1009
  const loanTokenEncoded = AbiCoder.encodeParameter('address', loanToken);
@@ -566,151 +1037,47 @@ export const morphoBlueLeverageManagementSubData = {
566
1037
  };
567
1038
  },
568
1039
  };
569
- export const aaveV3LeverageManagementOnPriceSubData = {
570
- encode(collAsset, collAssetId, debtAsset, debtAssetId, marketAddr, targetRatio) {
571
- const encodedColl = AbiCoder.encodeParameter('address', collAsset);
572
- const encodedCollId = AbiCoder.encodeParameter('uint8', collAssetId);
573
- const encodedDebt = AbiCoder.encodeParameter('address', debtAsset);
574
- const encodedDebtId = AbiCoder.encodeParameter('uint8', debtAssetId);
575
- const encodedMarket = AbiCoder.encodeParameter('address', marketAddr);
576
- const encodedTargetRatio = AbiCoder.encodeParameter('uint256', ratioPercentageToWei(targetRatio));
577
- const useOnBehalfEncoded = AbiCoder.encodeParameter('bool', false);
578
- return [
579
- encodedColl,
580
- encodedCollId,
581
- encodedDebt,
582
- encodedDebtId,
583
- encodedMarket,
584
- encodedTargetRatio,
585
- useOnBehalfEncoded,
586
- ];
1040
+ export const morphoBlueLeverageManagementOnPriceSubData = {
1041
+ encode(loanToken, collToken, oracle, irm, lltv, targetRatio, user) {
1042
+ const loanTokenEncoded = AbiCoder.encodeParameter('address', loanToken);
1043
+ const collTokenEncoded = AbiCoder.encodeParameter('address', collToken);
1044
+ const oracleEncoded = AbiCoder.encodeParameter('address', oracle);
1045
+ const irmEncoded = AbiCoder.encodeParameter('address', irm);
1046
+ const lltvEncoded = AbiCoder.encodeParameter('uint256', lltv);
1047
+ const targetRatioEncoded = AbiCoder.encodeParameter('uint256', ratioPercentageToWei(targetRatio));
1048
+ const userEncoded = AbiCoder.encodeParameter('address', user);
1049
+ return [loanTokenEncoded, collTokenEncoded, oracleEncoded, irmEncoded, lltvEncoded, targetRatioEncoded, userEncoded];
587
1050
  },
588
1051
  decode(subData) {
589
- const collAsset = AbiCoder.decodeParameter('address', subData[0]);
590
- const collAssetId = Number(AbiCoder.decodeParameter('uint8', subData[1]));
591
- const debtAsset = AbiCoder.decodeParameter('address', subData[2]);
592
- const debtAssetId = Number(AbiCoder.decodeParameter('uint8', subData[3]));
593
- const marketAddr = AbiCoder.decodeParameter('address', subData[4]);
594
- const weiRatio = AbiCoder.decodeParameter('uint256', subData[5]);
595
- const targetRatio = weiToRatioPercentage(weiRatio);
596
- return {
597
- collAsset, collAssetId, debtAsset, debtAssetId, marketAddr, targetRatio,
598
- };
599
- },
600
- };
601
- export const liquityV2LeverageManagementSubData = {
602
- encode: (market, troveId, collToken, boldToken, ratioState, targetRatio) => {
603
- const marketEncoded = AbiCoder.encodeParameter('address', market);
604
- const troveIdEncoded = AbiCoder.encodeParameter('uint256', troveId);
605
- const collTokenEncoded = AbiCoder.encodeParameter('address', collToken);
606
- const boldTokenEncoded = AbiCoder.encodeParameter('address', boldToken);
607
- const ratioStateEncoded = AbiCoder.encodeParameter('uint8', ratioState);
608
- const targetRatioEncoded = AbiCoder.encodeParameter('uint256', ratioPercentageToWei(targetRatio));
609
- const isRepay = ratioState === RatioState.UNDER;
610
- const collActionType = isRepay ? CollActionType.WITHDRAW : CollActionType.SUPPLY;
611
- const debtActionType = isRepay ? DebtActionType.PAYBACK : DebtActionType.BORROW;
612
- const collActionTypeEncoded = AbiCoder.encodeParameter('uint8', collActionType);
613
- const debtActionTypeEncoded = AbiCoder.encodeParameter('uint8', debtActionType);
614
- return [
615
- marketEncoded,
616
- troveIdEncoded,
617
- collTokenEncoded,
618
- boldTokenEncoded,
619
- ratioStateEncoded,
620
- targetRatioEncoded,
621
- collActionTypeEncoded,
622
- debtActionTypeEncoded,
623
- ];
624
- },
625
- decode: (subData) => {
626
- const market = AbiCoder.decodeParameter('address', subData[0]);
627
- const troveId = AbiCoder.decodeParameter('uint256', subData[1]);
628
- const collToken = AbiCoder.decodeParameter('address', subData[2]);
629
- const boldToken = AbiCoder.decodeParameter('address', subData[3]);
630
- const ratioState = AbiCoder.decodeParameter('uint8', subData[4]);
1052
+ const loanToken = AbiCoder.decodeParameter('address', subData[0]);
1053
+ const collToken = AbiCoder.decodeParameter('address', subData[1]);
1054
+ const oracle = AbiCoder.decodeParameter('address', subData[2]);
1055
+ const irm = AbiCoder.decodeParameter('address', subData[3]);
1056
+ const lltv = AbiCoder.decodeParameter('uint256', subData[4]);
631
1057
  const weiRatio = AbiCoder.decodeParameter('uint256', subData[5]);
632
1058
  const targetRatio = weiToRatioPercentage(weiRatio);
1059
+ const user = AbiCoder.decodeParameter('address', subData[6]);
633
1060
  return {
634
- market, troveId, collToken, boldToken, ratioState, targetRatio,
635
- };
636
- },
637
- };
638
- export const liquityV2CloseSubData = {
639
- encode(market, troveId, collToken, boldToken, closeType) {
640
- const marketEncoded = AbiCoder.encodeParameter('address', market);
641
- const troveIdEncoded = AbiCoder.encodeParameter('uint256', troveId);
642
- const collAddrEncoded = AbiCoder.encodeParameter('address', collToken);
643
- const boldTokenEncoded = AbiCoder.encodeParameter('address', boldToken);
644
- const wethAddress = getAssetInfo('WETH').address;
645
- const wethAddressEncoded = AbiCoder.encodeParameter('address', wethAddress);
646
- const gasCompensation = new Dec('0.0375').mul(1e18).toString();
647
- const gasCompensationEncoded = AbiCoder.encodeParameter('uint256', gasCompensation);
648
- const closeTypeEncoded = AbiCoder.encodeParameter('uint8', closeType);
649
- return [
650
- marketEncoded,
651
- troveIdEncoded,
652
- collAddrEncoded,
653
- boldTokenEncoded,
654
- wethAddressEncoded,
655
- gasCompensationEncoded,
656
- closeTypeEncoded,
657
- ];
658
- },
659
- decode(subData) {
660
- const market = AbiCoder.decodeParameter('address', subData[0]);
661
- const troveId = AbiCoder.decodeParameter('uint256', subData[1]);
662
- const collToken = AbiCoder.decodeParameter('address', subData[2]);
663
- const boldToken = AbiCoder.decodeParameter('address', subData[3]);
664
- // skip wethAddress and gasCompensation
665
- const closeType = AbiCoder.decodeParameter('uint8', subData[6]);
666
- return {
667
- market, troveId, collToken, boldToken, closeType,
668
- };
669
- },
670
- };
671
- export const liquityV2LeverageManagementOnPriceSubData = {
672
- encode(market, troveId, collToken, boldToken, targetRatio, isRepayOnPrice) {
673
- const encodedMarket = AbiCoder.encodeParameter('address', market);
674
- const encodedTroveId = AbiCoder.encodeParameter('uint256', troveId);
675
- const encodedCollToken = AbiCoder.encodeParameter('address', collToken);
676
- const encodedBoldToken = AbiCoder.encodeParameter('address', boldToken);
677
- const encodedTargetRatio = AbiCoder.encodeParameter('uint256', ratioPercentageToWei(targetRatio));
678
- const collActionType = isRepayOnPrice ? CollActionType.WITHDRAW : CollActionType.SUPPLY;
679
- const debtActionType = isRepayOnPrice ? DebtActionType.PAYBACK : DebtActionType.BORROW;
680
- const encodedCollActionType = AbiCoder.encodeParameter('uint8', collActionType);
681
- const encodedDebtActionType = AbiCoder.encodeParameter('uint8', debtActionType);
682
- return [
683
- encodedMarket,
684
- encodedTroveId,
685
- encodedCollToken,
686
- encodedBoldToken,
687
- encodedTargetRatio,
688
- encodedCollActionType,
689
- encodedDebtActionType,
690
- ];
691
- },
692
- decode(subData) {
693
- const market = AbiCoder.decodeParameter('address', subData[0]);
694
- const troveId = AbiCoder.decodeParameter('uint256', subData[1]);
695
- const collToken = AbiCoder.decodeParameter('address', subData[2]);
696
- const boldToken = AbiCoder.decodeParameter('address', subData[3]);
697
- const weiRatio = AbiCoder.decodeParameter('uint256', subData[4]);
698
- const targetRatio = weiToRatioPercentage(weiRatio);
699
- return {
700
- market, troveId, collToken, boldToken, targetRatio,
1061
+ loanToken,
1062
+ collToken,
1063
+ oracle,
1064
+ irm,
1065
+ lltv,
1066
+ targetRatio,
1067
+ user,
701
1068
  };
702
1069
  },
703
1070
  };
704
- export const morphoBlueLeverageManagementOnPriceSubData = {
705
- encode(loanToken, collToken, oracle, irm, lltv, targetRatio, user) {
1071
+ export const morphoBlueCloseOnPriceSubData = {
1072
+ encode(loanToken, collToken, oracle, irm, lltv, user, closeType) {
706
1073
  const loanTokenEncoded = AbiCoder.encodeParameter('address', loanToken);
707
1074
  const collTokenEncoded = AbiCoder.encodeParameter('address', collToken);
708
1075
  const oracleEncoded = AbiCoder.encodeParameter('address', oracle);
709
1076
  const irmEncoded = AbiCoder.encodeParameter('address', irm);
710
1077
  const lltvEncoded = AbiCoder.encodeParameter('uint256', lltv);
711
- const targetRatioEncoded = AbiCoder.encodeParameter('uint256', ratioPercentageToWei(targetRatio));
712
1078
  const userEncoded = AbiCoder.encodeParameter('address', user);
713
- return [loanTokenEncoded, collTokenEncoded, oracleEncoded, irmEncoded, lltvEncoded, targetRatioEncoded, userEncoded];
1079
+ const closeTypeEncoded = AbiCoder.encodeParameter('uint8', closeType);
1080
+ return [loanTokenEncoded, collTokenEncoded, oracleEncoded, irmEncoded, lltvEncoded, userEncoded, closeTypeEncoded];
714
1081
  },
715
1082
  decode(subData) {
716
1083
  const loanToken = AbiCoder.decodeParameter('address', subData[0]);
@@ -718,47 +1085,27 @@ export const morphoBlueLeverageManagementOnPriceSubData = {
718
1085
  const oracle = AbiCoder.decodeParameter('address', subData[2]);
719
1086
  const irm = AbiCoder.decodeParameter('address', subData[3]);
720
1087
  const lltv = AbiCoder.decodeParameter('uint256', subData[4]);
721
- const weiRatio = AbiCoder.decodeParameter('uint256', subData[5]);
722
- const targetRatio = weiToRatioPercentage(weiRatio);
723
- const user = AbiCoder.decodeParameter('address', subData[6]);
1088
+ const user = AbiCoder.decodeParameter('address', subData[5]);
1089
+ const closeType = Number(AbiCoder.decodeParameter('uint8', subData[6]));
724
1090
  return {
725
1091
  loanToken,
726
1092
  collToken,
727
1093
  oracle,
728
1094
  irm,
729
1095
  lltv,
730
- targetRatio,
731
1096
  user,
1097
+ closeType,
732
1098
  };
733
1099
  },
734
1100
  };
735
- export const liquityV2PaybackSubData = {
736
- encode: (market, troveId, boldToken, targetRatio, ratioState) => {
737
- const marketEncoded = AbiCoder.encodeParameter('address', market);
738
- const troveIdEncoded = AbiCoder.encodeParameter('uint256', troveId);
739
- const boldTokenEncoded = AbiCoder.encodeParameter('address', boldToken);
740
- const targetRatioEncoded = AbiCoder.encodeParameter('uint256', ratioPercentageToWei(targetRatio));
741
- const ratioStateEncoded = AbiCoder.encodeParameter('uint8', ratioState);
742
- return [
743
- marketEncoded,
744
- troveIdEncoded,
745
- boldTokenEncoded,
746
- targetRatioEncoded,
747
- ratioStateEncoded,
748
- ];
749
- },
750
- decode: (subData) => {
751
- const market = AbiCoder.decodeParameter('address', subData[0]);
752
- const troveId = AbiCoder.decodeParameter('uint256', subData[1]);
753
- const boldToken = AbiCoder.decodeParameter('address', subData[2]);
754
- const weiRatio = AbiCoder.decodeParameter('uint256', subData[3]);
755
- const ratioState = AbiCoder.decodeParameter('uint8', subData[4]);
756
- const targetRatio = weiToRatioPercentage(weiRatio);
757
- return {
758
- market, troveId, boldToken, ratioState, targetRatio,
759
- };
760
- },
761
- };
1101
+ /**
1102
+ _______ __ __ __ __ _______
1103
+ | ____|| | | | | | | | | \
1104
+ | |__ | | | | | | | | | .--. |
1105
+ | __| | | | | | | | | | | | |
1106
+ | | | `----.| `--' | | | | '--' |
1107
+ |__| |_______| \______/ |__| |_______/
1108
+ */
762
1109
  export const fluidLeverageManagementSubData = {
763
1110
  encode: (nftId, vault, ratioState, targetRatio) => {
764
1111
  const nftIdEncoded = AbiCoder.encodeParameter('uint256', nftId);
@@ -792,121 +1139,3 @@ export const fluidLeverageManagementSubData = {
792
1139
  };
793
1140
  },
794
1141
  };
795
- export const compoundV3LeverageManagementOnPriceSubData = {
796
- encode(market, collToken, baseToken, targetRatio, ratioState, user) {
797
- const marketEncoded = AbiCoder.encodeParameter('address', market);
798
- const collTokenEncoded = AbiCoder.encodeParameter('address', collToken);
799
- const baseTokenEncoded = AbiCoder.encodeParameter('address', baseToken);
800
- const targetRatioEncoded = AbiCoder.encodeParameter('uint256', ratioPercentageToWei(targetRatio));
801
- const ratioStateEncoded = AbiCoder.encodeParameter('uint8', ratioState);
802
- const userEncoded = AbiCoder.encodeParameter('address', user);
803
- return [
804
- marketEncoded,
805
- collTokenEncoded,
806
- baseTokenEncoded,
807
- targetRatioEncoded,
808
- ratioStateEncoded,
809
- userEncoded,
810
- ];
811
- },
812
- decode(subData) {
813
- const market = AbiCoder.decodeParameter('address', subData[0]);
814
- const collToken = AbiCoder.decodeParameter('address', subData[1]);
815
- const baseToken = AbiCoder.decodeParameter('address', subData[2]);
816
- const weiRatio = AbiCoder.decodeParameter('uint256', subData[3]);
817
- const targetRatio = weiToRatioPercentage(weiRatio);
818
- const ratioState = Number(AbiCoder.decodeParameter('uint8', subData[4]));
819
- const owner = AbiCoder.decodeParameter('address', subData[5]);
820
- return {
821
- market, collToken, baseToken, targetRatio, ratioState, owner,
822
- };
823
- },
824
- };
825
- export const compoundV3CloseSubData = {
826
- encode(market, collToken, baseToken, closeType, user) {
827
- const marketEncoded = AbiCoder.encodeParameter('address', market);
828
- const collTokenEncoded = AbiCoder.encodeParameter('address', collToken);
829
- const baseTokenEncoded = AbiCoder.encodeParameter('address', baseToken);
830
- const closeTypeEncoded = AbiCoder.encodeParameter('uint8', closeType);
831
- const userEncoded = AbiCoder.encodeParameter('address', user);
832
- return [
833
- marketEncoded,
834
- collTokenEncoded,
835
- baseTokenEncoded,
836
- closeTypeEncoded,
837
- userEncoded,
838
- ];
839
- },
840
- decode(subData) {
841
- const market = AbiCoder.decodeParameter('address', subData[0]);
842
- const collToken = AbiCoder.decodeParameter('address', subData[1]);
843
- const baseToken = AbiCoder.decodeParameter('address', subData[2]);
844
- const closeType = Number(AbiCoder.decodeParameter('uint8', subData[3]));
845
- const owner = AbiCoder.decodeParameter('address', subData[4]);
846
- return {
847
- market, collToken, baseToken, closeType, owner,
848
- };
849
- },
850
- };
851
- export const sparkCloseGenericSubData = {
852
- encode(collAsset, collAssetId, debtAsset, debtAssetId, closeType, marketAddr, user) {
853
- const encodedColl = AbiCoder.encodeParameter('address', collAsset);
854
- const encodedCollId = AbiCoder.encodeParameter('uint8', collAssetId);
855
- const encodedDebt = AbiCoder.encodeParameter('address', debtAsset);
856
- const encodedDebtId = AbiCoder.encodeParameter('uint8', debtAssetId);
857
- const encodedCloseType = AbiCoder.encodeParameter('uint8', closeType);
858
- const encodedMarket = AbiCoder.encodeParameter('address', marketAddr);
859
- const userEncoded = AbiCoder.encodeParameter('address', user);
860
- return [
861
- encodedColl,
862
- encodedCollId,
863
- encodedDebt,
864
- encodedDebtId,
865
- encodedCloseType,
866
- encodedMarket,
867
- userEncoded,
868
- ];
869
- },
870
- decode(subData) {
871
- const collAsset = AbiCoder.decodeParameter('address', subData[0]);
872
- const collAssetId = Number(AbiCoder.decodeParameter('uint8', subData[1]));
873
- const debtAsset = AbiCoder.decodeParameter('address', subData[2]);
874
- const debtAssetId = Number(AbiCoder.decodeParameter('uint8', subData[3]));
875
- const closeType = Number(AbiCoder.decodeParameter('uint8', subData[4]));
876
- const marketAddr = AbiCoder.decodeParameter('address', subData[5]);
877
- const owner = AbiCoder.decodeParameter('address', subData[6]);
878
- return {
879
- collAsset, collAssetId, debtAsset, debtAssetId, closeType, marketAddr, owner,
880
- };
881
- },
882
- };
883
- export const morphoBlueCloseOnPriceSubData = {
884
- encode(loanToken, collToken, oracle, irm, lltv, user, closeType) {
885
- const loanTokenEncoded = AbiCoder.encodeParameter('address', loanToken);
886
- const collTokenEncoded = AbiCoder.encodeParameter('address', collToken);
887
- const oracleEncoded = AbiCoder.encodeParameter('address', oracle);
888
- const irmEncoded = AbiCoder.encodeParameter('address', irm);
889
- const lltvEncoded = AbiCoder.encodeParameter('uint256', lltv);
890
- const userEncoded = AbiCoder.encodeParameter('address', user);
891
- const closeTypeEncoded = AbiCoder.encodeParameter('uint8', closeType);
892
- return [loanTokenEncoded, collTokenEncoded, oracleEncoded, irmEncoded, lltvEncoded, userEncoded, closeTypeEncoded];
893
- },
894
- decode(subData) {
895
- const loanToken = AbiCoder.decodeParameter('address', subData[0]);
896
- const collToken = AbiCoder.decodeParameter('address', subData[1]);
897
- const oracle = AbiCoder.decodeParameter('address', subData[2]);
898
- const irm = AbiCoder.decodeParameter('address', subData[3]);
899
- const lltv = AbiCoder.decodeParameter('uint256', subData[4]);
900
- const user = AbiCoder.decodeParameter('address', subData[5]);
901
- const closeType = Number(AbiCoder.decodeParameter('uint8', subData[6]));
902
- return {
903
- loanToken,
904
- collToken,
905
- oracle,
906
- irm,
907
- lltv,
908
- user,
909
- closeType,
910
- };
911
- },
912
- };