@defisaver/automation-sdk 3.3.11 → 3.3.12
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 +2 -0
- package/cjs/automation/private/StrategiesAutomation.js +10 -1
- package/cjs/automation/private/StrategiesAutomation.test.js +25 -0
- package/cjs/constants/index.d.ts +1 -0
- package/cjs/constants/index.js +62 -1
- package/cjs/services/strategiesService.js +104 -0
- package/cjs/services/strategySubService.d.ts +6 -0
- package/cjs/services/strategySubService.js +30 -1
- package/cjs/services/strategySubService.test.js +96 -0
- package/cjs/services/subDataService.d.ts +295 -137
- package/cjs/services/subDataService.js +639 -393
- package/cjs/services/subDataService.test.js +157 -0
- package/cjs/services/triggerService.d.ts +29 -0
- package/cjs/services/triggerService.js +53 -1
- package/cjs/services/triggerService.test.js +84 -0
- package/cjs/services/utils.d.ts +1 -1
- package/cjs/services/utils.js +10 -2
- package/cjs/types/enums.d.ts +17 -3
- package/cjs/types/enums.js +14 -0
- package/cjs/types/index.d.ts +22 -1
- package/esm/automation/private/StrategiesAutomation.d.ts +2 -0
- package/esm/automation/private/StrategiesAutomation.js +10 -1
- package/esm/automation/private/StrategiesAutomation.test.js +25 -0
- package/esm/constants/index.d.ts +1 -0
- package/esm/constants/index.js +61 -0
- package/esm/services/strategiesService.js +105 -1
- package/esm/services/strategySubService.d.ts +6 -0
- package/esm/services/strategySubService.js +29 -0
- package/esm/services/strategySubService.test.js +97 -1
- package/esm/services/subDataService.d.ts +295 -137
- package/esm/services/subDataService.js +639 -393
- package/esm/services/subDataService.test.js +157 -0
- package/esm/services/triggerService.d.ts +29 -0
- package/esm/services/triggerService.js +52 -0
- package/esm/services/triggerService.test.js +85 -1
- package/esm/services/utils.d.ts +1 -1
- package/esm/services/utils.js +10 -2
- package/esm/types/enums.d.ts +17 -3
- package/esm/types/enums.js +14 -0
- package/esm/types/index.d.ts +22 -1
- package/package.json +2 -2
- package/src/automation/private/StrategiesAutomation.test.ts +40 -0
- package/src/automation/private/StrategiesAutomation.ts +11 -0
- package/src/constants/index.ts +62 -0
- package/src/services/strategiesService.ts +119 -1
- package/src/services/strategySubService.test.ts +124 -0
- package/src/services/strategySubService.ts +118 -0
- package/src/services/subDataService.test.ts +172 -0
- package/src/services/subDataService.ts +1031 -782
- package/src/services/triggerService.test.ts +97 -0
- package/src/services/triggerService.ts +74 -1
- package/src/services/utils.ts +15 -4
- package/src/types/enums.ts +14 -0
- package/src/types/index.ts +26 -0
|
@@ -4,8 +4,70 @@ import { fromWei, toWei } from 'web3-utils';
|
|
|
4
4
|
import { assetAmountInEth, getAssetInfo, getAssetInfoByAddress } from '@defisaver/tokens';
|
|
5
5
|
import { otherAddresses } from '@defisaver/sdk';
|
|
6
6
|
import { ChainId, CollActionType, DebtActionType, RatioState, } from '../types/enums';
|
|
7
|
-
import { ZERO_ADDRESS } from '../constants';
|
|
7
|
+
import { EMPTY_SLOT, 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,197 @@ export const aaveV3QuotePriceSubData = {
|
|
|
274
547
|
};
|
|
275
548
|
},
|
|
276
549
|
};
|
|
277
|
-
export const
|
|
278
|
-
encode(
|
|
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
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
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
|
+
// Add two empty slots for future addons (e.g tsi or slippage settings)
|
|
597
|
+
return [
|
|
598
|
+
spokeEncoded,
|
|
599
|
+
ownerEncoded,
|
|
600
|
+
ratioStateEncoded,
|
|
601
|
+
targetRatioEncoded,
|
|
602
|
+
EMPTY_SLOT,
|
|
603
|
+
EMPTY_SLOT,
|
|
604
|
+
];
|
|
605
|
+
},
|
|
606
|
+
decode: (subData) => {
|
|
607
|
+
const spoke = AbiCoder.decodeParameter('address', subData[0]);
|
|
608
|
+
const owner = AbiCoder.decodeParameter('address', subData[1]);
|
|
609
|
+
const ratioState = Number(AbiCoder.decodeParameter('uint8', subData[2]));
|
|
610
|
+
const targetRatio = weiToRatioPercentage(AbiCoder.decodeParameter('uint256', subData[3]));
|
|
611
|
+
return {
|
|
612
|
+
spoke, owner, ratioState, targetRatio,
|
|
613
|
+
};
|
|
614
|
+
},
|
|
615
|
+
};
|
|
616
|
+
export const aaveV4LeverageManagementOnPriceSubData = {
|
|
617
|
+
encode: (spoke, owner, collAsset, collAssetId, debtAsset, debtAssetId, ratioState, targetRatio) => {
|
|
618
|
+
const spokeEncoded = AbiCoder.encodeParameter('address', spoke);
|
|
619
|
+
const ownerEncoded = AbiCoder.encodeParameter('address', owner);
|
|
620
|
+
const collAssetEncoded = AbiCoder.encodeParameter('address', collAsset);
|
|
621
|
+
const collAssetIdEncoded = AbiCoder.encodeParameter('uint256', collAssetId);
|
|
622
|
+
const debtAssetEncoded = AbiCoder.encodeParameter('address', debtAsset);
|
|
623
|
+
const debtAssetIdEncoded = AbiCoder.encodeParameter('uint256', debtAssetId);
|
|
624
|
+
const ratioStateEncoded = AbiCoder.encodeParameter('uint8', ratioState);
|
|
625
|
+
const targetRatioEncoded = AbiCoder.encodeParameter('uint256', ratioPercentageToWei(targetRatio));
|
|
626
|
+
// Add two empty slots for future addons (e.g tsi or slippage settings)
|
|
627
|
+
return [
|
|
628
|
+
spokeEncoded,
|
|
629
|
+
ownerEncoded,
|
|
630
|
+
collAssetEncoded,
|
|
631
|
+
collAssetIdEncoded,
|
|
632
|
+
debtAssetEncoded,
|
|
633
|
+
debtAssetIdEncoded,
|
|
634
|
+
ratioStateEncoded,
|
|
635
|
+
targetRatioEncoded,
|
|
636
|
+
EMPTY_SLOT,
|
|
637
|
+
EMPTY_SLOT,
|
|
638
|
+
];
|
|
639
|
+
},
|
|
640
|
+
decode: (subData) => {
|
|
641
|
+
const spoke = AbiCoder.decodeParameter('address', subData[0]);
|
|
642
|
+
const owner = AbiCoder.decodeParameter('address', subData[1]);
|
|
643
|
+
const collAsset = AbiCoder.decodeParameter('address', subData[2]);
|
|
644
|
+
const collAssetId = Number(AbiCoder.decodeParameter('uint256', subData[3]));
|
|
645
|
+
const debtAsset = AbiCoder.decodeParameter('address', subData[4]);
|
|
646
|
+
const debtAssetId = Number(AbiCoder.decodeParameter('uint256', subData[5]));
|
|
647
|
+
const ratioState = Number(AbiCoder.decodeParameter('uint8', subData[6]));
|
|
648
|
+
const targetRatio = weiToRatioPercentage(AbiCoder.decodeParameter('uint256', subData[7]));
|
|
649
|
+
return {
|
|
650
|
+
spoke, owner, collAsset, collAssetId, debtAsset, debtAssetId, ratioState, targetRatio,
|
|
651
|
+
};
|
|
652
|
+
},
|
|
653
|
+
};
|
|
654
|
+
export const aaveV4CloseSubData = {
|
|
655
|
+
encode: (spoke, owner, collAsset, collAssetId, debtAsset, debtAssetId, closeType) => {
|
|
656
|
+
const spokeEncoded = AbiCoder.encodeParameter('address', spoke);
|
|
657
|
+
const ownerEncoded = AbiCoder.encodeParameter('address', owner);
|
|
658
|
+
const collAssetEncoded = AbiCoder.encodeParameter('address', collAsset);
|
|
659
|
+
const collAssetIdEncoded = AbiCoder.encodeParameter('uint256', collAssetId);
|
|
660
|
+
const debtAssetEncoded = AbiCoder.encodeParameter('address', debtAsset);
|
|
661
|
+
const debtAssetIdEncoded = AbiCoder.encodeParameter('uint256', debtAssetId);
|
|
662
|
+
const closeTypeEncoded = AbiCoder.encodeParameter('uint8', closeType);
|
|
663
|
+
// Add two empty slots for future addons (e.g tsi or slippage settings)
|
|
664
|
+
return [
|
|
665
|
+
spokeEncoded,
|
|
666
|
+
ownerEncoded,
|
|
667
|
+
collAssetEncoded,
|
|
668
|
+
collAssetIdEncoded,
|
|
669
|
+
debtAssetEncoded,
|
|
670
|
+
debtAssetIdEncoded,
|
|
671
|
+
closeTypeEncoded,
|
|
672
|
+
EMPTY_SLOT,
|
|
673
|
+
EMPTY_SLOT,
|
|
674
|
+
];
|
|
675
|
+
},
|
|
676
|
+
decode: (subData) => {
|
|
677
|
+
const spoke = AbiCoder.decodeParameter('address', subData[0]);
|
|
678
|
+
const owner = AbiCoder.decodeParameter('address', subData[1]);
|
|
679
|
+
const collAsset = AbiCoder.decodeParameter('address', subData[2]);
|
|
680
|
+
const collAssetId = Number(AbiCoder.decodeParameter('uint256', subData[3]));
|
|
681
|
+
const debtAsset = AbiCoder.decodeParameter('address', subData[4]);
|
|
682
|
+
const debtAssetId = Number(AbiCoder.decodeParameter('uint256', subData[5]));
|
|
683
|
+
const closeType = Number(AbiCoder.decodeParameter('uint8', subData[6]));
|
|
684
|
+
return {
|
|
685
|
+
spoke, owner, collAsset, collAssetId, debtAsset, debtAssetId, closeType,
|
|
686
|
+
};
|
|
687
|
+
},
|
|
688
|
+
};
|
|
689
|
+
export const aaveV4CollateralSwitchSubData = {
|
|
690
|
+
encode: (spoke, owner, fromAsset, fromAssetId, toAsset, toAssetId, amountToSwitch) => {
|
|
691
|
+
const spokeEncoded = AbiCoder.encodeParameter('address', spoke);
|
|
692
|
+
const ownerEncoded = AbiCoder.encodeParameter('address', owner);
|
|
693
|
+
const fromAssetEncoded = AbiCoder.encodeParameter('address', fromAsset);
|
|
694
|
+
const fromAssetIdEncoded = AbiCoder.encodeParameter('uint256', fromAssetId);
|
|
695
|
+
const toAssetEncoded = AbiCoder.encodeParameter('address', toAsset);
|
|
696
|
+
const toAssetIdEncoded = AbiCoder.encodeParameter('uint256', toAssetId);
|
|
697
|
+
const amountToSwitchEncoded = AbiCoder.encodeParameter('uint256', amountToSwitch);
|
|
698
|
+
// Add two empty slots for future addons (e.g tsi or slippage settings)
|
|
699
|
+
return [
|
|
700
|
+
spokeEncoded,
|
|
701
|
+
ownerEncoded,
|
|
702
|
+
fromAssetEncoded,
|
|
703
|
+
fromAssetIdEncoded,
|
|
704
|
+
toAssetEncoded,
|
|
705
|
+
toAssetIdEncoded,
|
|
706
|
+
amountToSwitchEncoded,
|
|
707
|
+
EMPTY_SLOT,
|
|
708
|
+
EMPTY_SLOT,
|
|
709
|
+
];
|
|
710
|
+
},
|
|
711
|
+
decode: (subData) => {
|
|
712
|
+
const spoke = AbiCoder.decodeParameter('address', subData[0]);
|
|
713
|
+
const owner = AbiCoder.decodeParameter('address', subData[1]);
|
|
714
|
+
const fromAsset = AbiCoder.decodeParameter('address', subData[2]);
|
|
715
|
+
const fromAssetId = Number(AbiCoder.decodeParameter('uint256', subData[3]));
|
|
716
|
+
const toAsset = AbiCoder.decodeParameter('address', subData[4]);
|
|
717
|
+
const toAssetId = Number(AbiCoder.decodeParameter('uint256', subData[5]));
|
|
718
|
+
const amountToSwitch = AbiCoder.decodeParameter('uint256', subData[6]);
|
|
719
|
+
return {
|
|
720
|
+
spoke, owner, fromAsset, fromAssetId, toAsset, toAssetId, amountToSwitch,
|
|
721
|
+
};
|
|
722
|
+
},
|
|
723
|
+
};
|
|
724
|
+
/**
|
|
725
|
+
______ ______ .___ ___. .______ ____ ____ ___
|
|
726
|
+
/ | / __ \ | \/ | | _ \ \ \ / / |__ \
|
|
727
|
+
| ,----'| | | | | \ / | | |_) | \ \/ / ) |
|
|
728
|
+
| | | | | | | |\/| | | ___/ \ / / /
|
|
729
|
+
| `----.| `--' | | | | | | | \ / / /_
|
|
730
|
+
\______| \______/ |__| |__| | _| \__/ |____|
|
|
731
|
+
*/
|
|
732
|
+
export const compoundV2LeverageManagementSubData = {
|
|
733
|
+
encode(triggerRepayRatio, triggerBoostRatio, targetBoostRatio, targetRepayRatio, boostEnabled) {
|
|
734
|
+
return [
|
|
735
|
+
new Dec(triggerRepayRatio).mul(1e16).toString(),
|
|
736
|
+
new Dec(triggerBoostRatio).mul(1e16).toString(),
|
|
737
|
+
new Dec(targetBoostRatio).mul(1e16).toString(),
|
|
738
|
+
new Dec(targetRepayRatio).mul(1e16).toString(),
|
|
739
|
+
// @ts-ignore // TODO
|
|
740
|
+
boostEnabled,
|
|
286
741
|
];
|
|
287
742
|
},
|
|
288
743
|
decode(subData) {
|
|
@@ -291,6 +746,14 @@ export const compoundV2LeverageManagementSubData = {
|
|
|
291
746
|
return { targetRatio };
|
|
292
747
|
},
|
|
293
748
|
};
|
|
749
|
+
/**
|
|
750
|
+
______ ______ .___ ___. .______ ____ ____ ____
|
|
751
|
+
/ | / __ \ | \/ | | _ \ \ \ / / |___ \
|
|
752
|
+
| ,----'| | | | | \ / | | |_) | \ \/ / __) |
|
|
753
|
+
| | | | | | | |\/| | | ___/ \ / |__ <
|
|
754
|
+
| `----.| `--' | | | | | | | \ / ___) |
|
|
755
|
+
\______| \______/ |__| |__| | _| \__/ |____/
|
|
756
|
+
*/
|
|
294
757
|
export const compoundV3LeverageManagementSubData = {
|
|
295
758
|
encode(market, baseToken, triggerRepayRatio, triggerBoostRatio, targetBoostRatio, targetRepayRatio, boostEnabled, isEOA) {
|
|
296
759
|
return [
|
|
@@ -333,52 +796,70 @@ export const compoundV3L2LeverageManagementSubData = {
|
|
|
333
796
|
return { targetRatio };
|
|
334
797
|
},
|
|
335
798
|
};
|
|
336
|
-
export const
|
|
337
|
-
encode(
|
|
799
|
+
export const compoundV3LeverageManagementOnPriceSubData = {
|
|
800
|
+
encode(market, collToken, baseToken, targetRatio, ratioState, user) {
|
|
801
|
+
const marketEncoded = AbiCoder.encodeParameter('address', market);
|
|
802
|
+
const collTokenEncoded = AbiCoder.encodeParameter('address', collToken);
|
|
803
|
+
const baseTokenEncoded = AbiCoder.encodeParameter('address', baseToken);
|
|
804
|
+
const targetRatioEncoded = AbiCoder.encodeParameter('uint256', ratioPercentageToWei(targetRatio));
|
|
805
|
+
const ratioStateEncoded = AbiCoder.encodeParameter('uint8', ratioState);
|
|
806
|
+
const userEncoded = AbiCoder.encodeParameter('address', user);
|
|
338
807
|
return [
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
808
|
+
marketEncoded,
|
|
809
|
+
collTokenEncoded,
|
|
810
|
+
baseTokenEncoded,
|
|
811
|
+
targetRatioEncoded,
|
|
812
|
+
ratioStateEncoded,
|
|
813
|
+
userEncoded,
|
|
345
814
|
];
|
|
346
815
|
},
|
|
347
816
|
decode(subData) {
|
|
348
|
-
const
|
|
349
|
-
const
|
|
350
|
-
|
|
817
|
+
const market = AbiCoder.decodeParameter('address', subData[0]);
|
|
818
|
+
const collToken = AbiCoder.decodeParameter('address', subData[1]);
|
|
819
|
+
const baseToken = AbiCoder.decodeParameter('address', subData[2]);
|
|
820
|
+
const weiRatio = AbiCoder.decodeParameter('uint256', subData[3]);
|
|
821
|
+
const targetRatio = weiToRatioPercentage(weiRatio);
|
|
822
|
+
const ratioState = Number(AbiCoder.decodeParameter('uint8', subData[4]));
|
|
823
|
+
const owner = AbiCoder.decodeParameter('address', subData[5]);
|
|
824
|
+
return {
|
|
825
|
+
market, collToken, baseToken, targetRatio, ratioState, owner,
|
|
826
|
+
};
|
|
351
827
|
},
|
|
352
828
|
};
|
|
353
|
-
export const
|
|
354
|
-
encode(
|
|
355
|
-
const
|
|
356
|
-
|
|
829
|
+
export const compoundV3CloseSubData = {
|
|
830
|
+
encode(market, collToken, baseToken, closeType, user) {
|
|
831
|
+
const marketEncoded = AbiCoder.encodeParameter('address', market);
|
|
832
|
+
const collTokenEncoded = AbiCoder.encodeParameter('address', collToken);
|
|
833
|
+
const baseTokenEncoded = AbiCoder.encodeParameter('address', baseToken);
|
|
834
|
+
const closeTypeEncoded = AbiCoder.encodeParameter('uint8', closeType);
|
|
835
|
+
const userEncoded = AbiCoder.encodeParameter('address', user);
|
|
836
|
+
return [
|
|
837
|
+
marketEncoded,
|
|
838
|
+
collTokenEncoded,
|
|
839
|
+
baseTokenEncoded,
|
|
840
|
+
closeTypeEncoded,
|
|
841
|
+
userEncoded,
|
|
842
|
+
];
|
|
357
843
|
},
|
|
358
844
|
decode(subData) {
|
|
359
|
-
const
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
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 };
|
|
845
|
+
const market = AbiCoder.decodeParameter('address', subData[0]);
|
|
846
|
+
const collToken = AbiCoder.decodeParameter('address', subData[1]);
|
|
847
|
+
const baseToken = AbiCoder.decodeParameter('address', subData[2]);
|
|
848
|
+
const closeType = Number(AbiCoder.decodeParameter('uint8', subData[3]));
|
|
849
|
+
const owner = AbiCoder.decodeParameter('address', subData[4]);
|
|
850
|
+
return {
|
|
851
|
+
market, collToken, baseToken, closeType, owner,
|
|
852
|
+
};
|
|
380
853
|
},
|
|
381
854
|
};
|
|
855
|
+
/**
|
|
856
|
+
__________ ___ ______ __ __ ___ .__ __. _______ _______
|
|
857
|
+
| ____\ \ / / / || | | | / \ | \ | | / _____|| ____|
|
|
858
|
+
| |__ \ V / | ,----'| |__| | / ^ \ | \| | | | __ | |__
|
|
859
|
+
| __| > < | | | __ | / /_\ \ | . ` | | | |_ | | __|
|
|
860
|
+
| |____ / . \ | `----.| | | | / _____ \ | |\ | | |__| | | |____
|
|
861
|
+
|_______/__/ \__\ \______||__| |__| /__/ \__\ |__| \__| \______| |_______|
|
|
862
|
+
*/
|
|
382
863
|
export const exchangeDcaSubData = {
|
|
383
864
|
encode: (fromToken, toToken, amount, interval) => {
|
|
384
865
|
const sellTokenEncoded = AbiCoder.encodeParameter('address', fromToken);
|
|
@@ -418,6 +899,14 @@ export const exchangeLimitOrderSubData = {
|
|
|
418
899
|
return { fromToken, toToken, amount };
|
|
419
900
|
},
|
|
420
901
|
};
|
|
902
|
+
/**
|
|
903
|
+
_______..______ ___ .______ __ ___
|
|
904
|
+
/ || _ \ / \ | _ \ | |/ /
|
|
905
|
+
| (----`| |_) | / ^ \ | |_) | | ' /
|
|
906
|
+
\ \ | ___/ / /_\ \ | / | <
|
|
907
|
+
.----) | | | / _____ \ | |\ \----.| . \
|
|
908
|
+
|_______/ | _| /__/ \__\ | _| `._____||__|\__\
|
|
909
|
+
*/
|
|
421
910
|
export const sparkLeverageManagementSubData = {
|
|
422
911
|
decode(subData) {
|
|
423
912
|
const ratioWei = AbiCoder.decodeParameter('uint256', subData[0]);
|
|
@@ -439,55 +928,70 @@ export const sparkLeverageManagementSubDataWithoutSubProxy = {
|
|
|
439
928
|
return { targetRatio, ratioState };
|
|
440
929
|
},
|
|
441
930
|
};
|
|
442
|
-
export const
|
|
443
|
-
encode
|
|
444
|
-
const
|
|
445
|
-
const
|
|
446
|
-
const
|
|
447
|
-
const
|
|
448
|
-
const
|
|
449
|
-
const
|
|
450
|
-
|
|
931
|
+
export const sparkCloseGenericSubData = {
|
|
932
|
+
encode(collAsset, collAssetId, debtAsset, debtAssetId, closeType, marketAddr, user) {
|
|
933
|
+
const encodedColl = AbiCoder.encodeParameter('address', collAsset);
|
|
934
|
+
const encodedCollId = AbiCoder.encodeParameter('uint8', collAssetId);
|
|
935
|
+
const encodedDebt = AbiCoder.encodeParameter('address', debtAsset);
|
|
936
|
+
const encodedDebtId = AbiCoder.encodeParameter('uint8', debtAssetId);
|
|
937
|
+
const encodedCloseType = AbiCoder.encodeParameter('uint8', closeType);
|
|
938
|
+
const encodedMarket = AbiCoder.encodeParameter('address', marketAddr);
|
|
939
|
+
const userEncoded = AbiCoder.encodeParameter('address', user);
|
|
940
|
+
return [
|
|
941
|
+
encodedColl,
|
|
942
|
+
encodedCollId,
|
|
943
|
+
encodedDebt,
|
|
944
|
+
encodedDebtId,
|
|
945
|
+
encodedCloseType,
|
|
946
|
+
encodedMarket,
|
|
947
|
+
userEncoded,
|
|
948
|
+
];
|
|
451
949
|
},
|
|
452
|
-
decode
|
|
453
|
-
const
|
|
454
|
-
const
|
|
455
|
-
|
|
950
|
+
decode(subData) {
|
|
951
|
+
const collAsset = AbiCoder.decodeParameter('address', subData[0]);
|
|
952
|
+
const collAssetId = Number(AbiCoder.decodeParameter('uint8', subData[1]));
|
|
953
|
+
const debtAsset = AbiCoder.decodeParameter('address', subData[2]);
|
|
954
|
+
const debtAssetId = Number(AbiCoder.decodeParameter('uint8', subData[3]));
|
|
955
|
+
const closeType = Number(AbiCoder.decodeParameter('uint8', subData[4]));
|
|
956
|
+
const marketAddr = AbiCoder.decodeParameter('address', subData[5]);
|
|
957
|
+
const owner = AbiCoder.decodeParameter('address', subData[6]);
|
|
958
|
+
return {
|
|
959
|
+
collAsset, collAssetId, debtAsset, debtAssetId, closeType, marketAddr, owner,
|
|
960
|
+
};
|
|
456
961
|
},
|
|
457
962
|
};
|
|
458
|
-
export const
|
|
459
|
-
encode
|
|
460
|
-
const
|
|
461
|
-
const
|
|
462
|
-
const
|
|
463
|
-
const
|
|
464
|
-
const
|
|
465
|
-
const
|
|
466
|
-
|
|
963
|
+
export const sparkLeverageManagementOnPriceSubData = {
|
|
964
|
+
encode(collAsset, collAssetId, debtAsset, debtAssetId, marketAddr, targetRatio) {
|
|
965
|
+
const encodedColl = AbiCoder.encodeParameter('address', collAsset);
|
|
966
|
+
const encodedCollId = AbiCoder.encodeParameter('uint16', collAssetId);
|
|
967
|
+
const encodedDebt = AbiCoder.encodeParameter('address', debtAsset);
|
|
968
|
+
const encodedDebtId = AbiCoder.encodeParameter('uint16', debtAssetId);
|
|
969
|
+
const encodedMarket = AbiCoder.encodeParameter('address', marketAddr);
|
|
970
|
+
const encodedTargetRatio = AbiCoder.encodeParameter('uint256', ratioPercentageToWei(targetRatio));
|
|
971
|
+
const useOnBehalfEncoded = AbiCoder.encodeParameter('bool', false);
|
|
972
|
+
return [encodedColl, encodedCollId, encodedDebt, encodedDebtId, encodedMarket, encodedTargetRatio, useOnBehalfEncoded];
|
|
467
973
|
},
|
|
468
|
-
decode
|
|
469
|
-
const
|
|
974
|
+
decode(subData) {
|
|
975
|
+
const collAsset = AbiCoder.decodeParameter('address', subData[0]);
|
|
976
|
+
const collAssetId = Number(AbiCoder.decodeParameter('uint16', subData[1]));
|
|
977
|
+
const debtAsset = AbiCoder.decodeParameter('address', subData[2]);
|
|
978
|
+
const debtAssetId = Number(AbiCoder.decodeParameter('uint16', subData[3]));
|
|
979
|
+
const marketAddr = AbiCoder.decodeParameter('address', subData[4]);
|
|
980
|
+
const weiRatio = AbiCoder.decodeParameter('uint256', subData[5]);
|
|
470
981
|
const targetRatio = weiToRatioPercentage(weiRatio);
|
|
471
|
-
return {
|
|
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];
|
|
484
|
-
},
|
|
485
|
-
decode: (subData) => {
|
|
486
|
-
const weiRatio = AbiCoder.decodeParameter('uint256', subData[2]);
|
|
487
|
-
const targetRatioIncrease = weiToRatioPercentage(weiRatio);
|
|
488
|
-
return { targetRatioIncrease };
|
|
982
|
+
return {
|
|
983
|
+
collAsset, collAssetId, debtAsset, debtAssetId, marketAddr, targetRatio,
|
|
984
|
+
};
|
|
489
985
|
},
|
|
490
986
|
};
|
|
987
|
+
/**
|
|
988
|
+
______ .______ ____ ____ __ __ _______. _______
|
|
989
|
+
/ || _ \ \ \ / / | | | | / || \
|
|
990
|
+
| ,----'| |_) | \ \/ / | | | | | (----`| .--. |
|
|
991
|
+
| | | / \ / | | | | \ \ | | | |
|
|
992
|
+
| `----.| |\ \----. \ / | `--' | .----) | | '--' |
|
|
993
|
+
\______|| _| `._____| \__/ \______/ |_______/ |_______/
|
|
994
|
+
*/
|
|
491
995
|
export const crvUSDLeverageManagementSubData = {
|
|
492
996
|
encode: (controllerAddr, ratioState, targetRatio, collTokenAddr, crvUSDAddr) => {
|
|
493
997
|
const controllerAddrEncoded = AbiCoder.encodeParameter('address', controllerAddr);
|
|
@@ -533,6 +1037,14 @@ export const crvUSDPaybackSubData = {
|
|
|
533
1037
|
};
|
|
534
1038
|
},
|
|
535
1039
|
};
|
|
1040
|
+
/**
|
|
1041
|
+
.___ ___. ______ .______ .______ __ __ ______
|
|
1042
|
+
| \/ | / __ \ | _ \ | _ \ | | | | / __ \
|
|
1043
|
+
| \ / | | | | | | |_) | | |_) | | |__| | | | | |
|
|
1044
|
+
| |\/| | | | | | | / | ___/ | __ | | | | |
|
|
1045
|
+
| | | | | `--' | | |\ \----.| | | | | | | `--' |
|
|
1046
|
+
|__| |__| \______/ | _| `._____|| _| |__| |__| \______/
|
|
1047
|
+
*/
|
|
536
1048
|
export const morphoBlueLeverageManagementSubData = {
|
|
537
1049
|
encode: (loanToken, collToken, oracle, irm, lltv, ratioState, targetRatio, user, isEOA) => {
|
|
538
1050
|
const loanTokenEncoded = AbiCoder.encodeParameter('address', loanToken);
|
|
@@ -566,141 +1078,6 @@ export const morphoBlueLeverageManagementSubData = {
|
|
|
566
1078
|
};
|
|
567
1079
|
},
|
|
568
1080
|
};
|
|
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
|
-
];
|
|
587
|
-
},
|
|
588
|
-
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]);
|
|
631
|
-
const weiRatio = AbiCoder.decodeParameter('uint256', subData[5]);
|
|
632
|
-
const targetRatio = weiToRatioPercentage(weiRatio);
|
|
633
|
-
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,
|
|
701
|
-
};
|
|
702
|
-
},
|
|
703
|
-
};
|
|
704
1081
|
export const morphoBlueLeverageManagementOnPriceSubData = {
|
|
705
1082
|
encode(loanToken, collToken, oracle, irm, lltv, targetRatio, user) {
|
|
706
1083
|
const loanTokenEncoded = AbiCoder.encodeParameter('address', loanToken);
|
|
@@ -732,33 +1109,44 @@ export const morphoBlueLeverageManagementOnPriceSubData = {
|
|
|
732
1109
|
};
|
|
733
1110
|
},
|
|
734
1111
|
};
|
|
735
|
-
export const
|
|
736
|
-
encode
|
|
737
|
-
const
|
|
738
|
-
const
|
|
739
|
-
const
|
|
740
|
-
const
|
|
741
|
-
const
|
|
742
|
-
|
|
743
|
-
|
|
744
|
-
|
|
745
|
-
boldTokenEncoded,
|
|
746
|
-
targetRatioEncoded,
|
|
747
|
-
ratioStateEncoded,
|
|
748
|
-
];
|
|
1112
|
+
export const morphoBlueCloseOnPriceSubData = {
|
|
1113
|
+
encode(loanToken, collToken, oracle, irm, lltv, user, closeType) {
|
|
1114
|
+
const loanTokenEncoded = AbiCoder.encodeParameter('address', loanToken);
|
|
1115
|
+
const collTokenEncoded = AbiCoder.encodeParameter('address', collToken);
|
|
1116
|
+
const oracleEncoded = AbiCoder.encodeParameter('address', oracle);
|
|
1117
|
+
const irmEncoded = AbiCoder.encodeParameter('address', irm);
|
|
1118
|
+
const lltvEncoded = AbiCoder.encodeParameter('uint256', lltv);
|
|
1119
|
+
const userEncoded = AbiCoder.encodeParameter('address', user);
|
|
1120
|
+
const closeTypeEncoded = AbiCoder.encodeParameter('uint8', closeType);
|
|
1121
|
+
return [loanTokenEncoded, collTokenEncoded, oracleEncoded, irmEncoded, lltvEncoded, userEncoded, closeTypeEncoded];
|
|
749
1122
|
},
|
|
750
|
-
decode
|
|
751
|
-
const
|
|
752
|
-
const
|
|
753
|
-
const
|
|
754
|
-
const
|
|
755
|
-
const
|
|
756
|
-
const
|
|
1123
|
+
decode(subData) {
|
|
1124
|
+
const loanToken = AbiCoder.decodeParameter('address', subData[0]);
|
|
1125
|
+
const collToken = AbiCoder.decodeParameter('address', subData[1]);
|
|
1126
|
+
const oracle = AbiCoder.decodeParameter('address', subData[2]);
|
|
1127
|
+
const irm = AbiCoder.decodeParameter('address', subData[3]);
|
|
1128
|
+
const lltv = AbiCoder.decodeParameter('uint256', subData[4]);
|
|
1129
|
+
const user = AbiCoder.decodeParameter('address', subData[5]);
|
|
1130
|
+
const closeType = Number(AbiCoder.decodeParameter('uint8', subData[6]));
|
|
757
1131
|
return {
|
|
758
|
-
|
|
1132
|
+
loanToken,
|
|
1133
|
+
collToken,
|
|
1134
|
+
oracle,
|
|
1135
|
+
irm,
|
|
1136
|
+
lltv,
|
|
1137
|
+
user,
|
|
1138
|
+
closeType,
|
|
759
1139
|
};
|
|
760
1140
|
},
|
|
761
1141
|
};
|
|
1142
|
+
/**
|
|
1143
|
+
_______ __ __ __ __ _______
|
|
1144
|
+
| ____|| | | | | | | | | \
|
|
1145
|
+
| |__ | | | | | | | | | .--. |
|
|
1146
|
+
| __| | | | | | | | | | | | |
|
|
1147
|
+
| | | `----.| `--' | | | | '--' |
|
|
1148
|
+
|__| |_______| \______/ |__| |_______/
|
|
1149
|
+
*/
|
|
762
1150
|
export const fluidLeverageManagementSubData = {
|
|
763
1151
|
encode: (nftId, vault, ratioState, targetRatio) => {
|
|
764
1152
|
const nftIdEncoded = AbiCoder.encodeParameter('uint256', nftId);
|
|
@@ -792,145 +1180,3 @@ export const fluidLeverageManagementSubData = {
|
|
|
792
1180
|
};
|
|
793
1181
|
},
|
|
794
1182
|
};
|
|
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
|
-
};
|
|
913
|
-
export const sparkLeverageManagementOnPriceSubData = {
|
|
914
|
-
encode(collAsset, collAssetId, debtAsset, debtAssetId, marketAddr, targetRatio) {
|
|
915
|
-
const encodedColl = AbiCoder.encodeParameter('address', collAsset);
|
|
916
|
-
const encodedCollId = AbiCoder.encodeParameter('uint16', collAssetId);
|
|
917
|
-
const encodedDebt = AbiCoder.encodeParameter('address', debtAsset);
|
|
918
|
-
const encodedDebtId = AbiCoder.encodeParameter('uint16', debtAssetId);
|
|
919
|
-
const encodedMarket = AbiCoder.encodeParameter('address', marketAddr);
|
|
920
|
-
const encodedTargetRatio = AbiCoder.encodeParameter('uint256', ratioPercentageToWei(targetRatio));
|
|
921
|
-
const useOnBehalfEncoded = AbiCoder.encodeParameter('bool', false);
|
|
922
|
-
return [encodedColl, encodedCollId, encodedDebt, encodedDebtId, encodedMarket, encodedTargetRatio, useOnBehalfEncoded];
|
|
923
|
-
},
|
|
924
|
-
decode(subData) {
|
|
925
|
-
const collAsset = AbiCoder.decodeParameter('address', subData[0]);
|
|
926
|
-
const collAssetId = Number(AbiCoder.decodeParameter('uint16', subData[1]));
|
|
927
|
-
const debtAsset = AbiCoder.decodeParameter('address', subData[2]);
|
|
928
|
-
const debtAssetId = Number(AbiCoder.decodeParameter('uint16', subData[3]));
|
|
929
|
-
const marketAddr = AbiCoder.decodeParameter('address', subData[4]);
|
|
930
|
-
const weiRatio = AbiCoder.decodeParameter('uint256', subData[5]);
|
|
931
|
-
const targetRatio = weiToRatioPercentage(weiRatio);
|
|
932
|
-
return {
|
|
933
|
-
collAsset, collAssetId, debtAsset, debtAssetId, marketAddr, targetRatio,
|
|
934
|
-
};
|
|
935
|
-
},
|
|
936
|
-
};
|