@defisaver/automation-sdk 3.3.11 → 3.3.12-strategies-refactor-dev
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/cjs/automation/private/StrategiesAutomation.d.ts +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 +11 -0
- package/cjs/services/strategySubService.js +61 -1
- package/cjs/services/strategySubService.test.js +96 -0
- package/cjs/services/subDataService.d.ts +333 -137
- package/cjs/services/subDataService.js +853 -537
- 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 +11 -0
- package/esm/services/strategySubService.js +60 -0
- package/esm/services/strategySubService.test.js +97 -1
- package/esm/services/subDataService.d.ts +333 -137
- package/esm/services/subDataService.js +852 -537
- 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 +196 -0
- package/src/services/subDataService.test.ts +172 -0
- package/src/services/subDataService.ts +1100 -764
- 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]);
|
|
@@ -91,6 +161,18 @@ export const liquityLeverageManagementSubData = {
|
|
|
91
161
|
return { targetRatio };
|
|
92
162
|
},
|
|
93
163
|
};
|
|
164
|
+
export const liquityLeverageManagementSubDataWithoutSubProxy = {
|
|
165
|
+
encode(targetRatio, ratioState) {
|
|
166
|
+
const encodedTargetRatio = AbiCoder.encodeParameter('uint256', ratioPercentageToWei(targetRatio));
|
|
167
|
+
const encodedRatioState = AbiCoder.encodeParameter('uint8', ratioState);
|
|
168
|
+
return [encodedTargetRatio, encodedRatioState];
|
|
169
|
+
},
|
|
170
|
+
decode(subData) {
|
|
171
|
+
const targetRatio = weiToRatioPercentage(AbiCoder.decodeParameter('uint256', subData[0]));
|
|
172
|
+
const ratioState = AbiCoder.decodeParameter('uint8', subData[1]);
|
|
173
|
+
return { targetRatio, ratioState };
|
|
174
|
+
},
|
|
175
|
+
};
|
|
94
176
|
export const liquityCloseSubData = {
|
|
95
177
|
encode(closeToAssetAddr, chainId = ChainId.Ethereum, collAddr, debtAddr) {
|
|
96
178
|
const _collAddr = collAddr || getAssetInfo('WETH', chainId).address;
|
|
@@ -110,171 +192,202 @@ export const liquityCloseSubData = {
|
|
|
110
192
|
return { closeToAssetAddr, debtAddr };
|
|
111
193
|
},
|
|
112
194
|
};
|
|
113
|
-
export const
|
|
114
|
-
encode(
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
];
|
|
195
|
+
export const liquityDsrPaybackSubData = {
|
|
196
|
+
encode: (targetRatio) => {
|
|
197
|
+
const daiAddress = getAssetInfo('DAI').address;
|
|
198
|
+
const lusdAddress = getAssetInfo('LUSD').address;
|
|
199
|
+
const ratioStateEncoded = AbiCoder.encodeParameter('uint8', RatioState.UNDER);
|
|
200
|
+
const targetRatioEncoded = AbiCoder.encodeParameter('uint256', ratioPercentageToWei(targetRatio));
|
|
201
|
+
const daiAddressEncoded = AbiCoder.encodeParameter('address', daiAddress);
|
|
202
|
+
const lusdAddressEncoded = AbiCoder.encodeParameter('address', lusdAddress);
|
|
203
|
+
return [ratioStateEncoded, targetRatioEncoded, daiAddressEncoded, lusdAddressEncoded];
|
|
123
204
|
},
|
|
124
|
-
decode(subData) {
|
|
125
|
-
const
|
|
126
|
-
const targetRatio = weiToRatioPercentage(
|
|
205
|
+
decode: (subData) => {
|
|
206
|
+
const weiRatio = AbiCoder.decodeParameter('uint256', subData[1]);
|
|
207
|
+
const targetRatio = weiToRatioPercentage(weiRatio);
|
|
127
208
|
return { targetRatio };
|
|
128
209
|
},
|
|
129
210
|
};
|
|
130
|
-
export const
|
|
131
|
-
|
|
132
|
-
const
|
|
133
|
-
const
|
|
211
|
+
export const liquityDsrSupplySubData = {
|
|
212
|
+
encode: (targetRatio) => {
|
|
213
|
+
const daiAddress = getAssetInfo('DAI').address;
|
|
214
|
+
const wethAddress = getAssetInfo('WETH').address;
|
|
215
|
+
const ratioStateEncoded = AbiCoder.encodeParameter('uint8', RatioState.UNDER);
|
|
216
|
+
const targetRatioEncoded = AbiCoder.encodeParameter('uint256', ratioPercentageToWei(targetRatio));
|
|
217
|
+
const daiAddressEncoded = AbiCoder.encodeParameter('address', daiAddress);
|
|
218
|
+
const wethAddressEncoded = AbiCoder.encodeParameter('address', wethAddress);
|
|
219
|
+
return [ratioStateEncoded, targetRatioEncoded, daiAddressEncoded, wethAddressEncoded];
|
|
220
|
+
},
|
|
221
|
+
decode: (subData) => {
|
|
222
|
+
const weiRatio = AbiCoder.decodeParameter('uint256', subData[1]);
|
|
223
|
+
const targetRatio = weiToRatioPercentage(weiRatio);
|
|
134
224
|
return { targetRatio };
|
|
135
225
|
},
|
|
136
226
|
};
|
|
137
|
-
export const
|
|
138
|
-
encode(
|
|
139
|
-
const
|
|
140
|
-
const
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
const encodedUseOnBehalf = AbiCoder.encodeParameter('bool', false);
|
|
148
|
-
return [encodedTargetRatio, encodedRatioState, encodedUseDefaultMarket, encodedUseOnBehalf];
|
|
227
|
+
export const liquityDebtInFrontRepaySubData = {
|
|
228
|
+
encode: (targetRatioIncrease) => {
|
|
229
|
+
const wethAddress = getAssetInfo('WETH').address;
|
|
230
|
+
const lusdAddress = getAssetInfo('LUSD').address;
|
|
231
|
+
const wethAddressEncoded = AbiCoder.encodeParameter('address', wethAddress);
|
|
232
|
+
const lusdAddressEncoded = AbiCoder.encodeParameter('address', lusdAddress);
|
|
233
|
+
const targetRatioIncreaseEncoded = AbiCoder.encodeParameter('uint256', ratioPercentageToWei(targetRatioIncrease));
|
|
234
|
+
const withdrawIdEncoded = AbiCoder.encodeParameter('uint8', 1); // withdraw - 1
|
|
235
|
+
const paybackIdEncoded = AbiCoder.encodeParameter('uint8', 0); // payback - 0
|
|
236
|
+
return [wethAddressEncoded, lusdAddressEncoded, targetRatioIncreaseEncoded, withdrawIdEncoded, paybackIdEncoded];
|
|
149
237
|
},
|
|
150
|
-
decode(subData) {
|
|
151
|
-
const
|
|
152
|
-
const
|
|
153
|
-
return {
|
|
238
|
+
decode: (subData) => {
|
|
239
|
+
const weiRatio = AbiCoder.decodeParameter('uint256', subData[2]);
|
|
240
|
+
const targetRatioIncrease = weiToRatioPercentage(weiRatio);
|
|
241
|
+
return { targetRatioIncrease };
|
|
154
242
|
},
|
|
155
243
|
};
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
244
|
+
/**
|
|
245
|
+
* __ __ ______ __ __ __ .___________.____ ____ ____ ____ ___
|
|
246
|
+
| | | | / __ \ | | | | | | | |\ \ / / \ \ / / |__ \
|
|
247
|
+
| | | | | | | | | | | | | | `---| |----` \ \/ / \ \/ / ) |
|
|
248
|
+
| | | | | | | | | | | | | | | | \_ _/ \ / / /
|
|
249
|
+
| `----.| | | `--' '--.| `--' | | | | | | | \ / / /_
|
|
250
|
+
|_______||__| \_____\_____\\______/ |__| |__| |__| \__/ |____|
|
|
251
|
+
*/
|
|
252
|
+
export const liquityV2LeverageManagementSubData = {
|
|
253
|
+
encode: (market, troveId, collToken, boldToken, ratioState, targetRatio) => {
|
|
254
|
+
const marketEncoded = AbiCoder.encodeParameter('address', market);
|
|
255
|
+
const troveIdEncoded = AbiCoder.encodeParameter('uint256', troveId);
|
|
256
|
+
const collTokenEncoded = AbiCoder.encodeParameter('address', collToken);
|
|
257
|
+
const boldTokenEncoded = AbiCoder.encodeParameter('address', boldToken);
|
|
258
|
+
const ratioStateEncoded = AbiCoder.encodeParameter('uint8', ratioState);
|
|
259
|
+
const targetRatioEncoded = AbiCoder.encodeParameter('uint256', ratioPercentageToWei(targetRatio));
|
|
260
|
+
const isRepay = ratioState === RatioState.UNDER;
|
|
261
|
+
const collActionType = isRepay ? CollActionType.WITHDRAW : CollActionType.SUPPLY;
|
|
262
|
+
const debtActionType = isRepay ? DebtActionType.PAYBACK : DebtActionType.BORROW;
|
|
263
|
+
const collActionTypeEncoded = AbiCoder.encodeParameter('uint8', collActionType);
|
|
264
|
+
const debtActionTypeEncoded = AbiCoder.encodeParameter('uint8', debtActionType);
|
|
165
265
|
return [
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
266
|
+
marketEncoded,
|
|
267
|
+
troveIdEncoded,
|
|
268
|
+
collTokenEncoded,
|
|
269
|
+
boldTokenEncoded,
|
|
270
|
+
ratioStateEncoded,
|
|
271
|
+
targetRatioEncoded,
|
|
272
|
+
collActionTypeEncoded,
|
|
273
|
+
debtActionTypeEncoded,
|
|
173
274
|
];
|
|
174
275
|
},
|
|
175
|
-
decode(subData) {
|
|
176
|
-
const
|
|
177
|
-
const
|
|
178
|
-
const
|
|
179
|
-
const
|
|
180
|
-
const
|
|
276
|
+
decode: (subData) => {
|
|
277
|
+
const market = AbiCoder.decodeParameter('address', subData[0]);
|
|
278
|
+
const troveId = AbiCoder.decodeParameter('uint256', subData[1]);
|
|
279
|
+
const collToken = AbiCoder.decodeParameter('address', subData[2]);
|
|
280
|
+
const boldToken = AbiCoder.decodeParameter('address', subData[3]);
|
|
281
|
+
const ratioState = AbiCoder.decodeParameter('uint8', subData[4]);
|
|
181
282
|
const weiRatio = AbiCoder.decodeParameter('uint256', subData[5]);
|
|
182
283
|
const targetRatio = weiToRatioPercentage(weiRatio);
|
|
183
|
-
const owner = AbiCoder.decodeParameter('address', subData[6]);
|
|
184
284
|
return {
|
|
185
|
-
|
|
186
|
-
collAssetId,
|
|
187
|
-
debtAsset,
|
|
188
|
-
debtAssetId,
|
|
189
|
-
marketAddr,
|
|
190
|
-
targetRatio,
|
|
191
|
-
owner,
|
|
285
|
+
market, troveId, collToken, boldToken, ratioState, targetRatio,
|
|
192
286
|
};
|
|
193
287
|
},
|
|
194
288
|
};
|
|
195
|
-
export const
|
|
196
|
-
encode(
|
|
197
|
-
const
|
|
198
|
-
const
|
|
199
|
-
const
|
|
200
|
-
const
|
|
201
|
-
const
|
|
202
|
-
const
|
|
203
|
-
const
|
|
289
|
+
export const liquityV2CloseSubData = {
|
|
290
|
+
encode(market, troveId, collToken, boldToken, closeType) {
|
|
291
|
+
const marketEncoded = AbiCoder.encodeParameter('address', market);
|
|
292
|
+
const troveIdEncoded = AbiCoder.encodeParameter('uint256', troveId);
|
|
293
|
+
const collAddrEncoded = AbiCoder.encodeParameter('address', collToken);
|
|
294
|
+
const boldTokenEncoded = AbiCoder.encodeParameter('address', boldToken);
|
|
295
|
+
const wethAddress = getAssetInfo('WETH').address;
|
|
296
|
+
const wethAddressEncoded = AbiCoder.encodeParameter('address', wethAddress);
|
|
297
|
+
const gasCompensation = new Dec('0.0375').mul(1e18).toString();
|
|
298
|
+
const gasCompensationEncoded = AbiCoder.encodeParameter('uint256', gasCompensation);
|
|
299
|
+
const closeTypeEncoded = AbiCoder.encodeParameter('uint8', closeType);
|
|
204
300
|
return [
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
301
|
+
marketEncoded,
|
|
302
|
+
troveIdEncoded,
|
|
303
|
+
collAddrEncoded,
|
|
304
|
+
boldTokenEncoded,
|
|
305
|
+
wethAddressEncoded,
|
|
306
|
+
gasCompensationEncoded,
|
|
307
|
+
closeTypeEncoded,
|
|
212
308
|
];
|
|
213
309
|
},
|
|
214
310
|
decode(subData) {
|
|
215
|
-
const
|
|
216
|
-
const
|
|
217
|
-
const
|
|
218
|
-
const
|
|
219
|
-
|
|
220
|
-
const
|
|
221
|
-
const owner = AbiCoder.decodeParameter('address', subData[6]);
|
|
311
|
+
const market = AbiCoder.decodeParameter('address', subData[0]);
|
|
312
|
+
const troveId = AbiCoder.decodeParameter('uint256', subData[1]);
|
|
313
|
+
const collToken = AbiCoder.decodeParameter('address', subData[2]);
|
|
314
|
+
const boldToken = AbiCoder.decodeParameter('address', subData[3]);
|
|
315
|
+
// skip wethAddress and gasCompensation
|
|
316
|
+
const closeType = AbiCoder.decodeParameter('uint8', subData[6]);
|
|
222
317
|
return {
|
|
223
|
-
|
|
318
|
+
market, troveId, collToken, boldToken, closeType,
|
|
224
319
|
};
|
|
225
320
|
},
|
|
226
321
|
};
|
|
227
|
-
export const
|
|
228
|
-
encode(
|
|
229
|
-
const
|
|
230
|
-
const
|
|
231
|
-
const
|
|
232
|
-
const
|
|
233
|
-
const
|
|
234
|
-
const
|
|
235
|
-
const
|
|
322
|
+
export const liquityV2LeverageManagementOnPriceSubData = {
|
|
323
|
+
encode(market, troveId, collToken, boldToken, targetRatio, isRepayOnPrice) {
|
|
324
|
+
const encodedMarket = AbiCoder.encodeParameter('address', market);
|
|
325
|
+
const encodedTroveId = AbiCoder.encodeParameter('uint256', troveId);
|
|
326
|
+
const encodedCollToken = AbiCoder.encodeParameter('address', collToken);
|
|
327
|
+
const encodedBoldToken = AbiCoder.encodeParameter('address', boldToken);
|
|
328
|
+
const encodedTargetRatio = AbiCoder.encodeParameter('uint256', ratioPercentageToWei(targetRatio));
|
|
329
|
+
const collActionType = isRepayOnPrice ? CollActionType.WITHDRAW : CollActionType.SUPPLY;
|
|
330
|
+
const debtActionType = isRepayOnPrice ? DebtActionType.PAYBACK : DebtActionType.BORROW;
|
|
331
|
+
const encodedCollActionType = AbiCoder.encodeParameter('uint8', collActionType);
|
|
332
|
+
const encodedDebtActionType = AbiCoder.encodeParameter('uint8', debtActionType);
|
|
236
333
|
return [
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
334
|
+
encodedMarket,
|
|
335
|
+
encodedTroveId,
|
|
336
|
+
encodedCollToken,
|
|
337
|
+
encodedBoldToken,
|
|
338
|
+
encodedTargetRatio,
|
|
339
|
+
encodedCollActionType,
|
|
340
|
+
encodedDebtActionType,
|
|
244
341
|
];
|
|
245
342
|
},
|
|
246
343
|
decode(subData) {
|
|
247
|
-
const
|
|
248
|
-
const
|
|
249
|
-
const
|
|
250
|
-
const
|
|
251
|
-
const
|
|
252
|
-
const
|
|
344
|
+
const market = AbiCoder.decodeParameter('address', subData[0]);
|
|
345
|
+
const troveId = AbiCoder.decodeParameter('uint256', subData[1]);
|
|
346
|
+
const collToken = AbiCoder.decodeParameter('address', subData[2]);
|
|
347
|
+
const boldToken = AbiCoder.decodeParameter('address', subData[3]);
|
|
348
|
+
const weiRatio = AbiCoder.decodeParameter('uint256', subData[4]);
|
|
349
|
+
const targetRatio = weiToRatioPercentage(weiRatio);
|
|
253
350
|
return {
|
|
254
|
-
|
|
351
|
+
market, troveId, collToken, boldToken, targetRatio,
|
|
255
352
|
};
|
|
256
353
|
},
|
|
257
354
|
};
|
|
258
|
-
export const
|
|
259
|
-
encode(
|
|
260
|
-
const
|
|
261
|
-
const
|
|
262
|
-
const
|
|
263
|
-
const
|
|
264
|
-
const
|
|
265
|
-
return [
|
|
355
|
+
export const liquityV2PaybackSubData = {
|
|
356
|
+
encode: (market, troveId, boldToken, targetRatio, ratioState) => {
|
|
357
|
+
const marketEncoded = AbiCoder.encodeParameter('address', market);
|
|
358
|
+
const troveIdEncoded = AbiCoder.encodeParameter('uint256', troveId);
|
|
359
|
+
const boldTokenEncoded = AbiCoder.encodeParameter('address', boldToken);
|
|
360
|
+
const targetRatioEncoded = AbiCoder.encodeParameter('uint256', ratioPercentageToWei(targetRatio));
|
|
361
|
+
const ratioStateEncoded = AbiCoder.encodeParameter('uint8', ratioState);
|
|
362
|
+
return [
|
|
363
|
+
marketEncoded,
|
|
364
|
+
troveIdEncoded,
|
|
365
|
+
boldTokenEncoded,
|
|
366
|
+
targetRatioEncoded,
|
|
367
|
+
ratioStateEncoded,
|
|
368
|
+
];
|
|
266
369
|
},
|
|
267
|
-
decode(subData) {
|
|
268
|
-
const
|
|
269
|
-
const
|
|
270
|
-
const
|
|
271
|
-
const
|
|
370
|
+
decode: (subData) => {
|
|
371
|
+
const market = AbiCoder.decodeParameter('address', subData[0]);
|
|
372
|
+
const troveId = AbiCoder.decodeParameter('uint256', subData[1]);
|
|
373
|
+
const boldToken = AbiCoder.decodeParameter('address', subData[2]);
|
|
374
|
+
const weiRatio = AbiCoder.decodeParameter('uint256', subData[3]);
|
|
375
|
+
const ratioState = AbiCoder.decodeParameter('uint8', subData[4]);
|
|
376
|
+
const targetRatio = weiToRatioPercentage(weiRatio);
|
|
272
377
|
return {
|
|
273
|
-
|
|
378
|
+
market, troveId, boldToken, ratioState, targetRatio,
|
|
274
379
|
};
|
|
275
380
|
},
|
|
276
381
|
};
|
|
277
|
-
|
|
382
|
+
/**
|
|
383
|
+
___ ___ ____ ____ _______ ____ ____ ___
|
|
384
|
+
/ \ / \ \ \ / / | ____| \ \ / / |__ \
|
|
385
|
+
/ ^ \ / ^ \ \ \/ / | |__ \ \/ / ) |
|
|
386
|
+
/ /_\ \ / /_\ \ \ / | __| \ / / /
|
|
387
|
+
/ _____ \ / _____ \ \ / | |____ \ / / /_
|
|
388
|
+
/__/ \__\ /__/ \__\ \__/ |_______| \__/ |____|
|
|
389
|
+
*/
|
|
390
|
+
export const aaveV2LeverageManagementSubData = {
|
|
278
391
|
encode(triggerRepayRatio, triggerBoostRatio, targetBoostRatio, targetRepayRatio, boostEnabled) {
|
|
279
392
|
return [
|
|
280
393
|
new Dec(triggerRepayRatio).mul(1e16).toString(),
|
|
@@ -286,149 +399,47 @@ export const compoundV2LeverageManagementSubData = {
|
|
|
286
399
|
];
|
|
287
400
|
},
|
|
288
401
|
decode(subData) {
|
|
289
|
-
const
|
|
290
|
-
const targetRatio = weiToRatioPercentage(weiRatio);
|
|
291
|
-
return { targetRatio };
|
|
292
|
-
},
|
|
293
|
-
};
|
|
294
|
-
export const compoundV3LeverageManagementSubData = {
|
|
295
|
-
encode(market, baseToken, triggerRepayRatio, triggerBoostRatio, targetBoostRatio, targetRepayRatio, boostEnabled, isEOA) {
|
|
296
|
-
return [
|
|
297
|
-
market,
|
|
298
|
-
baseToken,
|
|
299
|
-
new Dec(triggerRepayRatio).mul(1e16).toString(),
|
|
300
|
-
new Dec(triggerBoostRatio).mul(1e16).toString(),
|
|
301
|
-
new Dec(targetBoostRatio).mul(1e16).toString(),
|
|
302
|
-
new Dec(targetRepayRatio).mul(1e16).toString(),
|
|
303
|
-
// @ts-ignore // TODO
|
|
304
|
-
boostEnabled, isEOA,
|
|
305
|
-
];
|
|
306
|
-
},
|
|
307
|
-
decode(subData) {
|
|
308
|
-
const weiRatio = AbiCoder.decodeParameter('uint256', subData[3]);
|
|
309
|
-
const targetRatio = weiToRatioPercentage(weiRatio);
|
|
310
|
-
return { targetRatio };
|
|
311
|
-
},
|
|
312
|
-
};
|
|
313
|
-
export const compoundV3L2LeverageManagementSubData = {
|
|
314
|
-
encode(market, baseToken, triggerRepayRatio, triggerBoostRatio, targetBoostRatio, targetRepayRatio, boostEnabled, isEOA) {
|
|
315
|
-
let subInput = '0x';
|
|
316
|
-
subInput = subInput.concat(market.slice(2));
|
|
317
|
-
subInput = subInput.concat(baseToken.slice(2));
|
|
318
|
-
subInput = subInput.concat(new Dec(triggerRepayRatio).mul(1e16).toHex().slice(2)
|
|
319
|
-
.padStart(32, '0'));
|
|
320
|
-
subInput = subInput.concat(new Dec(triggerBoostRatio).mul(1e16).toHex().slice(2)
|
|
321
|
-
.padStart(32, '0'));
|
|
322
|
-
subInput = subInput.concat(new Dec(targetBoostRatio).mul(1e16).toHex().slice(2)
|
|
323
|
-
.padStart(32, '0'));
|
|
324
|
-
subInput = subInput.concat(new Dec(targetRepayRatio).mul(1e16).toHex().slice(2)
|
|
325
|
-
.padStart(32, '0'));
|
|
326
|
-
subInput = subInput.concat(boostEnabled ? '01' : '00');
|
|
327
|
-
subInput = subInput.concat(isEOA ? '01' : '00');
|
|
328
|
-
return subInput;
|
|
329
|
-
},
|
|
330
|
-
decode(subData) {
|
|
331
|
-
const ratioWei = AbiCoder.decodeParameter('uint256', subData[3]);
|
|
332
|
-
const targetRatio = weiToRatioPercentage(ratioWei);
|
|
333
|
-
return { targetRatio };
|
|
334
|
-
},
|
|
335
|
-
};
|
|
336
|
-
export const morphoAaveV2LeverageManagementSubData = {
|
|
337
|
-
encode(triggerRepayRatio, triggerBoostRatio, targetBoostRatio, targetRepayRatio, boostEnabled) {
|
|
338
|
-
return [
|
|
339
|
-
ratioPercentageToWei(triggerRepayRatio),
|
|
340
|
-
ratioPercentageToWei(triggerBoostRatio),
|
|
341
|
-
ratioPercentageToWei(targetBoostRatio),
|
|
342
|
-
ratioPercentageToWei(targetRepayRatio),
|
|
343
|
-
// @ts-ignore
|
|
344
|
-
boostEnabled,
|
|
345
|
-
];
|
|
346
|
-
},
|
|
347
|
-
decode(subData) {
|
|
348
|
-
const ratioWei = AbiCoder.decodeParameter('uint128', subData[1]);
|
|
402
|
+
const ratioWei = AbiCoder.decodeParameter('uint256', subData[1]);
|
|
349
403
|
const targetRatio = weiToRatioPercentage(ratioWei);
|
|
350
404
|
return { targetRatio };
|
|
351
405
|
},
|
|
352
406
|
};
|
|
353
|
-
export const
|
|
354
|
-
encode(
|
|
355
|
-
const
|
|
356
|
-
|
|
407
|
+
export const aaveV2LeverageManagementSubDataWithoutSubProxy = {
|
|
408
|
+
encode(targetRatio, ratioState) {
|
|
409
|
+
const encodedTargetRatio = AbiCoder.encodeParameter('uint256', ratioPercentageToWei(targetRatio));
|
|
410
|
+
const encodedRatioState = AbiCoder.encodeParameter('uint8', ratioState);
|
|
411
|
+
return [encodedTargetRatio, encodedRatioState];
|
|
357
412
|
},
|
|
358
413
|
decode(subData) {
|
|
359
|
-
const
|
|
360
|
-
|
|
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 };
|
|
380
|
-
},
|
|
381
|
-
};
|
|
382
|
-
export const exchangeDcaSubData = {
|
|
383
|
-
encode: (fromToken, toToken, amount, interval) => {
|
|
384
|
-
const sellTokenEncoded = AbiCoder.encodeParameter('address', fromToken);
|
|
385
|
-
const buyTokenEncoded = AbiCoder.encodeParameter('address', toToken);
|
|
386
|
-
const amountEncoded = AbiCoder.encodeParameter('uint256', amount);
|
|
387
|
-
const intervalEncoded = AbiCoder.encodeParameter('uint256', interval);
|
|
388
|
-
return [sellTokenEncoded, buyTokenEncoded, amountEncoded, intervalEncoded];
|
|
389
|
-
},
|
|
390
|
-
decode: (subData, chainId) => {
|
|
391
|
-
const fromToken = AbiCoder.decodeParameter('address', subData[0]).toString();
|
|
392
|
-
const toToken = AbiCoder.decodeParameter('address', subData[1]).toString();
|
|
393
|
-
const amount = assetAmountInEth(AbiCoder.decodeParameter('uint256', subData[2]).toString(), getAssetInfoByAddress(fromToken, chainId).symbol);
|
|
394
|
-
const interval = AbiCoder.decodeParameter('uint256', subData[3]).toString();
|
|
395
|
-
return {
|
|
396
|
-
fromToken,
|
|
397
|
-
toToken,
|
|
398
|
-
amount,
|
|
399
|
-
interval,
|
|
400
|
-
};
|
|
401
|
-
},
|
|
402
|
-
};
|
|
403
|
-
export const exchangeLimitOrderSubData = {
|
|
404
|
-
encode(fromToken, toToken, amount, targetPrice, goodUntil, orderType) {
|
|
405
|
-
return [
|
|
406
|
-
fromToken,
|
|
407
|
-
toToken,
|
|
408
|
-
amount,
|
|
409
|
-
targetPrice,
|
|
410
|
-
new Dec(goodUntil).toString(),
|
|
411
|
-
new Dec(orderType).toString(),
|
|
412
|
-
];
|
|
413
|
-
},
|
|
414
|
-
decode: (subData, chainId) => {
|
|
415
|
-
const fromToken = AbiCoder.decodeParameter('address', subData[0]).toString();
|
|
416
|
-
const toToken = AbiCoder.decodeParameter('address', subData[1]).toString();
|
|
417
|
-
const amount = assetAmountInEth(AbiCoder.decodeParameter('uint256', subData[2]).toString(), getAssetInfoByAddress(fromToken, chainId).symbol);
|
|
418
|
-
return { fromToken, toToken, amount };
|
|
414
|
+
const targetRatio = weiToRatioPercentage(AbiCoder.decodeParameter('uint256', subData[0]));
|
|
415
|
+
const ratioState = AbiCoder.decodeParameter('uint8', subData[1]);
|
|
416
|
+
return { targetRatio, ratioState };
|
|
419
417
|
},
|
|
420
418
|
};
|
|
421
|
-
|
|
419
|
+
/**
|
|
420
|
+
___ ___ ____ ____ _______ ____ ____ ____
|
|
421
|
+
/ \ / \ \ \ / / | ____| \ \ / / |___ \
|
|
422
|
+
/ ^ \ / ^ \ \ \/ / | |__ \ \/ / __) |
|
|
423
|
+
/ /_\ \ / /_\ \ \ / | __| \ / |__ <
|
|
424
|
+
/ _____ \ / _____ \ \ / | |____ \ / ___) |
|
|
425
|
+
/__/ \__\ /__/ \__\ \__/ |_______| \__/ |____/
|
|
426
|
+
*/
|
|
427
|
+
export const aaveV3LeverageManagementSubData = {
|
|
422
428
|
decode(subData) {
|
|
423
429
|
const ratioWei = AbiCoder.decodeParameter('uint256', subData[0]);
|
|
424
430
|
const targetRatio = weiToRatioPercentage(ratioWei);
|
|
425
431
|
return { targetRatio };
|
|
426
432
|
},
|
|
427
433
|
};
|
|
428
|
-
export const
|
|
429
|
-
encode(targetRatio, ratioState) {
|
|
434
|
+
export const aaveV3LeverageManagementSubDataWithoutSubProxy = {
|
|
435
|
+
encode(targetRatio, ratioState, market, user, isGeneric) {
|
|
430
436
|
const encodedTargetRatio = AbiCoder.encodeParameter('uint256', ratioPercentageToWei(targetRatio));
|
|
431
437
|
const encodedRatioState = AbiCoder.encodeParameter('uint8', ratioState);
|
|
438
|
+
if (isGeneric) {
|
|
439
|
+
const encodedMarket = AbiCoder.encodeParameter('address', market);
|
|
440
|
+
const encodedUser = AbiCoder.encodeParameter('address', user);
|
|
441
|
+
return [encodedTargetRatio, encodedRatioState, encodedMarket, encodedUser];
|
|
442
|
+
}
|
|
432
443
|
const encodedUseDefaultMarket = AbiCoder.encodeParameter('bool', true);
|
|
433
444
|
const encodedUseOnBehalf = AbiCoder.encodeParameter('bool', false);
|
|
434
445
|
return [encodedTargetRatio, encodedRatioState, encodedUseDefaultMarket, encodedUseOnBehalf];
|
|
@@ -439,130 +450,124 @@ export const sparkLeverageManagementSubDataWithoutSubProxy = {
|
|
|
439
450
|
return { targetRatio, ratioState };
|
|
440
451
|
},
|
|
441
452
|
};
|
|
442
|
-
export const
|
|
443
|
-
encode
|
|
444
|
-
const
|
|
445
|
-
const
|
|
446
|
-
const
|
|
447
|
-
const
|
|
448
|
-
const
|
|
449
|
-
const
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
|
|
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];
|
|
484
|
-
},
|
|
485
|
-
decode: (subData) => {
|
|
486
|
-
const weiRatio = AbiCoder.decodeParameter('uint256', subData[2]);
|
|
487
|
-
const targetRatioIncrease = weiToRatioPercentage(weiRatio);
|
|
488
|
-
return { targetRatioIncrease };
|
|
489
|
-
},
|
|
490
|
-
};
|
|
491
|
-
export const crvUSDLeverageManagementSubData = {
|
|
492
|
-
encode: (controllerAddr, ratioState, targetRatio, collTokenAddr, crvUSDAddr) => {
|
|
493
|
-
const controllerAddrEncoded = AbiCoder.encodeParameter('address', controllerAddr);
|
|
494
|
-
const ratioStateEncoded = AbiCoder.encodeParameter('uint8', ratioState);
|
|
495
|
-
const targetRatioEncoded = AbiCoder.encodeParameter('uint256', ratioPercentageToWei(targetRatio));
|
|
496
|
-
const collTokenAddrEncoded = AbiCoder.encodeParameter('address', collTokenAddr);
|
|
497
|
-
const crvUSDAddrEncoded = AbiCoder.encodeParameter('address', crvUSDAddr);
|
|
498
|
-
return [controllerAddrEncoded, ratioStateEncoded, targetRatioEncoded, collTokenAddrEncoded, crvUSDAddrEncoded];
|
|
453
|
+
export const aaveV3LeverageManagementOnPriceGeneric = {
|
|
454
|
+
encode(collAsset, collAssetId, debtAsset, debtAssetId, marketAddr, targetRatio, user) {
|
|
455
|
+
const encodedColl = AbiCoder.encodeParameter('address', collAsset);
|
|
456
|
+
const encodedCollId = AbiCoder.encodeParameter('uint8', collAssetId);
|
|
457
|
+
const encodedDebt = AbiCoder.encodeParameter('address', debtAsset);
|
|
458
|
+
const encodedDebtId = AbiCoder.encodeParameter('uint8', debtAssetId);
|
|
459
|
+
const encodedMarket = AbiCoder.encodeParameter('address', marketAddr);
|
|
460
|
+
const encodedTargetRatio = AbiCoder.encodeParameter('uint256', ratioPercentageToWei(targetRatio));
|
|
461
|
+
const userEncoded = AbiCoder.encodeParameter('address', user);
|
|
462
|
+
return [
|
|
463
|
+
encodedColl,
|
|
464
|
+
encodedCollId,
|
|
465
|
+
encodedDebt,
|
|
466
|
+
encodedDebtId,
|
|
467
|
+
encodedMarket,
|
|
468
|
+
encodedTargetRatio,
|
|
469
|
+
userEncoded,
|
|
470
|
+
];
|
|
499
471
|
},
|
|
500
|
-
decode
|
|
501
|
-
const
|
|
502
|
-
const
|
|
472
|
+
decode(subData) {
|
|
473
|
+
const collAsset = AbiCoder.decodeParameter('address', subData[0]);
|
|
474
|
+
const collAssetId = Number(AbiCoder.decodeParameter('uint8', subData[1]));
|
|
475
|
+
const debtAsset = AbiCoder.decodeParameter('address', subData[2]);
|
|
476
|
+
const debtAssetId = Number(AbiCoder.decodeParameter('uint8', subData[3]));
|
|
477
|
+
const marketAddr = AbiCoder.decodeParameter('address', subData[4]);
|
|
478
|
+
const weiRatio = AbiCoder.decodeParameter('uint256', subData[5]);
|
|
503
479
|
const targetRatio = weiToRatioPercentage(weiRatio);
|
|
504
|
-
|
|
480
|
+
const owner = AbiCoder.decodeParameter('address', subData[6]);
|
|
481
|
+
return {
|
|
482
|
+
collAsset,
|
|
483
|
+
collAssetId,
|
|
484
|
+
debtAsset,
|
|
485
|
+
debtAssetId,
|
|
486
|
+
marketAddr,
|
|
487
|
+
targetRatio,
|
|
488
|
+
owner,
|
|
489
|
+
};
|
|
505
490
|
},
|
|
506
491
|
};
|
|
507
|
-
export const
|
|
508
|
-
encode
|
|
509
|
-
const
|
|
510
|
-
const
|
|
511
|
-
const
|
|
512
|
-
const
|
|
513
|
-
const
|
|
492
|
+
export const aaveV3CloseGenericSubData = {
|
|
493
|
+
encode(collAsset, collAssetId, debtAsset, debtAssetId, closeType, marketAddr, user) {
|
|
494
|
+
const encodedColl = AbiCoder.encodeParameter('address', collAsset);
|
|
495
|
+
const encodedCollId = AbiCoder.encodeParameter('uint8', collAssetId);
|
|
496
|
+
const encodedDebt = AbiCoder.encodeParameter('address', debtAsset);
|
|
497
|
+
const encodedDebtId = AbiCoder.encodeParameter('uint8', debtAssetId);
|
|
498
|
+
const encodedCloseType = AbiCoder.encodeParameter('uint8', closeType);
|
|
499
|
+
const encodedMarket = AbiCoder.encodeParameter('address', marketAddr);
|
|
500
|
+
const userEncoded = AbiCoder.encodeParameter('address', user);
|
|
514
501
|
return [
|
|
515
|
-
|
|
516
|
-
|
|
517
|
-
|
|
518
|
-
|
|
519
|
-
|
|
502
|
+
encodedColl,
|
|
503
|
+
encodedCollId,
|
|
504
|
+
encodedDebt,
|
|
505
|
+
encodedDebtId,
|
|
506
|
+
encodedCloseType,
|
|
507
|
+
encodedMarket,
|
|
508
|
+
userEncoded,
|
|
520
509
|
];
|
|
521
510
|
},
|
|
522
|
-
decode
|
|
523
|
-
const
|
|
524
|
-
const
|
|
525
|
-
const
|
|
526
|
-
const
|
|
527
|
-
const
|
|
511
|
+
decode(subData) {
|
|
512
|
+
const collAsset = AbiCoder.decodeParameter('address', subData[0]);
|
|
513
|
+
const collAssetId = Number(AbiCoder.decodeParameter('uint8', subData[1]));
|
|
514
|
+
const debtAsset = AbiCoder.decodeParameter('address', subData[2]);
|
|
515
|
+
const debtAssetId = Number(AbiCoder.decodeParameter('uint8', subData[3]));
|
|
516
|
+
const closeType = Number(AbiCoder.decodeParameter('uint8', subData[4]));
|
|
517
|
+
const marketAddr = AbiCoder.decodeParameter('address', subData[5]);
|
|
518
|
+
const owner = AbiCoder.decodeParameter('address', subData[6]);
|
|
528
519
|
return {
|
|
529
|
-
|
|
530
|
-
addressToPullTokensFrom,
|
|
531
|
-
positionOwner,
|
|
532
|
-
paybackAmount,
|
|
520
|
+
collAsset, collAssetId, debtAsset, debtAssetId, closeType, marketAddr, owner,
|
|
533
521
|
};
|
|
534
522
|
},
|
|
535
523
|
};
|
|
536
|
-
export const
|
|
537
|
-
encode
|
|
538
|
-
const
|
|
539
|
-
const
|
|
540
|
-
const
|
|
541
|
-
const
|
|
542
|
-
const
|
|
543
|
-
const
|
|
544
|
-
const
|
|
545
|
-
|
|
546
|
-
|
|
547
|
-
|
|
524
|
+
export const aaveV3CollateralSwitchSubData = {
|
|
525
|
+
encode(fromAsset, fromAssetId, toAsset, toAssetId, marketAddr, amountToSwitch, useOnBehalf = false) {
|
|
526
|
+
const encodedFromAsset = AbiCoder.encodeParameter('address', fromAsset);
|
|
527
|
+
const encodedFromAssetId = AbiCoder.encodeParameter('uint8', fromAssetId);
|
|
528
|
+
const encodedToAsset = AbiCoder.encodeParameter('address', toAsset);
|
|
529
|
+
const encodedToAssetId = AbiCoder.encodeParameter('uint8', toAssetId);
|
|
530
|
+
const encodedMarketAddr = AbiCoder.encodeParameter('address', marketAddr);
|
|
531
|
+
const encodedAmountToSwitch = AbiCoder.encodeParameter('uint256', amountToSwitch);
|
|
532
|
+
const encodedUseOnBehalf = AbiCoder.encodeParameter('bool', useOnBehalf);
|
|
533
|
+
return [
|
|
534
|
+
encodedFromAsset,
|
|
535
|
+
encodedFromAssetId,
|
|
536
|
+
encodedToAsset,
|
|
537
|
+
encodedToAssetId,
|
|
538
|
+
encodedMarketAddr,
|
|
539
|
+
encodedAmountToSwitch,
|
|
540
|
+
encodedUseOnBehalf,
|
|
541
|
+
];
|
|
542
|
+
},
|
|
543
|
+
decode(subData) {
|
|
544
|
+
const fromAsset = AbiCoder.decodeParameter('address', subData[0]);
|
|
545
|
+
const fromAssetId = Number(AbiCoder.decodeParameter('uint8', subData[1]));
|
|
546
|
+
const toAsset = AbiCoder.decodeParameter('address', subData[2]);
|
|
547
|
+
const toAssetId = Number(AbiCoder.decodeParameter('uint8', subData[3]));
|
|
548
|
+
const marketAddr = AbiCoder.decodeParameter('address', subData[4]);
|
|
549
|
+
const amountToSwitch = AbiCoder.decodeParameter('uint256', subData[5]);
|
|
550
|
+
return {
|
|
551
|
+
fromAsset, fromAssetId, toAsset, toAssetId, marketAddr, amountToSwitch,
|
|
552
|
+
};
|
|
548
553
|
},
|
|
549
|
-
|
|
550
|
-
|
|
551
|
-
|
|
552
|
-
const
|
|
553
|
-
const
|
|
554
|
-
const
|
|
555
|
-
const
|
|
556
|
-
const
|
|
557
|
-
|
|
554
|
+
};
|
|
555
|
+
export const aaveV3QuotePriceSubData = {
|
|
556
|
+
encode(collAsset, collAssetId, debtAsset, debtAssetId, nullAddress = ZERO_ADDRESS) {
|
|
557
|
+
const encodedColl = AbiCoder.encodeParameter('address', collAsset);
|
|
558
|
+
const encodedCollId = AbiCoder.encodeParameter('uint8', collAssetId);
|
|
559
|
+
const encodedDebt = AbiCoder.encodeParameter('address', debtAsset);
|
|
560
|
+
const encodedDebtId = AbiCoder.encodeParameter('uint8', debtAssetId);
|
|
561
|
+
const encodedNullAddress = AbiCoder.encodeParameter('address', nullAddress);
|
|
562
|
+
return [encodedColl, encodedCollId, encodedDebt, encodedDebtId, encodedNullAddress];
|
|
563
|
+
},
|
|
564
|
+
decode(subData) {
|
|
565
|
+
const collAsset = AbiCoder.decodeParameter('address', subData[0]);
|
|
566
|
+
const collAssetId = Number(AbiCoder.decodeParameter('uint8', subData[1]));
|
|
567
|
+
const debtAsset = AbiCoder.decodeParameter('address', subData[2]);
|
|
568
|
+
const debtAssetId = Number(AbiCoder.decodeParameter('uint8', subData[3]));
|
|
558
569
|
return {
|
|
559
|
-
|
|
560
|
-
collToken,
|
|
561
|
-
oracle,
|
|
562
|
-
irm,
|
|
563
|
-
lltv,
|
|
564
|
-
user,
|
|
565
|
-
targetRatio,
|
|
570
|
+
collAsset, collAssetId, debtAsset, debtAssetId,
|
|
566
571
|
};
|
|
567
572
|
},
|
|
568
573
|
};
|
|
@@ -598,200 +603,253 @@ export const aaveV3LeverageManagementOnPriceSubData = {
|
|
|
598
603
|
};
|
|
599
604
|
},
|
|
600
605
|
};
|
|
601
|
-
|
|
602
|
-
|
|
603
|
-
|
|
604
|
-
|
|
605
|
-
|
|
606
|
-
|
|
606
|
+
/**
|
|
607
|
+
* ___ ___ ____ ____ _______ ____ ____ _ _
|
|
608
|
+
/ \ / \ \ \ / / | ____| \ \ / / | || |
|
|
609
|
+
/ ^ \ / ^ \ \ \/ / | |__ \ \/ / | || |_
|
|
610
|
+
/ /_\ \ / /_\ \ \ / | __| \ / |__ _|
|
|
611
|
+
/ _____ \ / _____ \ \ / | |____ \ / | |
|
|
612
|
+
/__/ \__\ /__/ \__\ \__/ |_______| \__/ |_|
|
|
613
|
+
*/
|
|
614
|
+
export const aaveV4LeverageManagementSubData = {
|
|
615
|
+
encode: (spoke, owner, ratioState, targetRatio) => {
|
|
616
|
+
const spokeEncoded = AbiCoder.encodeParameter('address', spoke);
|
|
617
|
+
const ownerEncoded = AbiCoder.encodeParameter('address', owner);
|
|
607
618
|
const ratioStateEncoded = AbiCoder.encodeParameter('uint8', ratioState);
|
|
608
619
|
const targetRatioEncoded = AbiCoder.encodeParameter('uint256', ratioPercentageToWei(targetRatio));
|
|
609
|
-
|
|
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);
|
|
620
|
+
// Add two empty slots for future addons (e.g tsi or slippage settings)
|
|
614
621
|
return [
|
|
615
|
-
|
|
616
|
-
|
|
617
|
-
collTokenEncoded,
|
|
618
|
-
boldTokenEncoded,
|
|
622
|
+
spokeEncoded,
|
|
623
|
+
ownerEncoded,
|
|
619
624
|
ratioStateEncoded,
|
|
620
625
|
targetRatioEncoded,
|
|
621
|
-
|
|
622
|
-
|
|
626
|
+
EMPTY_SLOT,
|
|
627
|
+
EMPTY_SLOT,
|
|
623
628
|
];
|
|
624
629
|
},
|
|
625
630
|
decode: (subData) => {
|
|
626
|
-
const
|
|
627
|
-
const
|
|
628
|
-
const
|
|
629
|
-
const
|
|
630
|
-
const ratioState = AbiCoder.decodeParameter('uint8', subData[4]);
|
|
631
|
-
const weiRatio = AbiCoder.decodeParameter('uint256', subData[5]);
|
|
632
|
-
const targetRatio = weiToRatioPercentage(weiRatio);
|
|
631
|
+
const spoke = AbiCoder.decodeParameter('address', subData[0]);
|
|
632
|
+
const owner = AbiCoder.decodeParameter('address', subData[1]);
|
|
633
|
+
const ratioState = Number(AbiCoder.decodeParameter('uint8', subData[2]));
|
|
634
|
+
const targetRatio = weiToRatioPercentage(AbiCoder.decodeParameter('uint256', subData[3]));
|
|
633
635
|
return {
|
|
634
|
-
|
|
636
|
+
spoke, owner, ratioState, targetRatio,
|
|
635
637
|
};
|
|
636
638
|
},
|
|
637
639
|
};
|
|
638
|
-
export const
|
|
639
|
-
encode(
|
|
640
|
-
const
|
|
641
|
-
const
|
|
642
|
-
const
|
|
643
|
-
const
|
|
644
|
-
const
|
|
645
|
-
const
|
|
646
|
-
const
|
|
647
|
-
const
|
|
648
|
-
|
|
640
|
+
export const aaveV4LeverageManagementOnPriceSubData = {
|
|
641
|
+
encode: (spoke, owner, collAsset, collAssetId, debtAsset, debtAssetId, ratioState, targetRatio) => {
|
|
642
|
+
const spokeEncoded = AbiCoder.encodeParameter('address', spoke);
|
|
643
|
+
const ownerEncoded = AbiCoder.encodeParameter('address', owner);
|
|
644
|
+
const collAssetEncoded = AbiCoder.encodeParameter('address', collAsset);
|
|
645
|
+
const collAssetIdEncoded = AbiCoder.encodeParameter('uint256', collAssetId);
|
|
646
|
+
const debtAssetEncoded = AbiCoder.encodeParameter('address', debtAsset);
|
|
647
|
+
const debtAssetIdEncoded = AbiCoder.encodeParameter('uint256', debtAssetId);
|
|
648
|
+
const ratioStateEncoded = AbiCoder.encodeParameter('uint8', ratioState);
|
|
649
|
+
const targetRatioEncoded = AbiCoder.encodeParameter('uint256', ratioPercentageToWei(targetRatio));
|
|
650
|
+
// Add two empty slots for future addons (e.g tsi or slippage settings)
|
|
649
651
|
return [
|
|
650
|
-
|
|
651
|
-
|
|
652
|
-
|
|
653
|
-
|
|
654
|
-
|
|
655
|
-
|
|
656
|
-
|
|
652
|
+
spokeEncoded,
|
|
653
|
+
ownerEncoded,
|
|
654
|
+
collAssetEncoded,
|
|
655
|
+
collAssetIdEncoded,
|
|
656
|
+
debtAssetEncoded,
|
|
657
|
+
debtAssetIdEncoded,
|
|
658
|
+
ratioStateEncoded,
|
|
659
|
+
targetRatioEncoded,
|
|
660
|
+
EMPTY_SLOT,
|
|
661
|
+
EMPTY_SLOT,
|
|
657
662
|
];
|
|
658
663
|
},
|
|
659
|
-
decode(subData) {
|
|
660
|
-
const
|
|
661
|
-
const
|
|
662
|
-
const
|
|
663
|
-
const
|
|
664
|
-
|
|
665
|
-
const
|
|
664
|
+
decode: (subData) => {
|
|
665
|
+
const spoke = AbiCoder.decodeParameter('address', subData[0]);
|
|
666
|
+
const owner = AbiCoder.decodeParameter('address', subData[1]);
|
|
667
|
+
const collAsset = AbiCoder.decodeParameter('address', subData[2]);
|
|
668
|
+
const collAssetId = Number(AbiCoder.decodeParameter('uint256', subData[3]));
|
|
669
|
+
const debtAsset = AbiCoder.decodeParameter('address', subData[4]);
|
|
670
|
+
const debtAssetId = Number(AbiCoder.decodeParameter('uint256', subData[5]));
|
|
671
|
+
const ratioState = Number(AbiCoder.decodeParameter('uint8', subData[6]));
|
|
672
|
+
const targetRatio = weiToRatioPercentage(AbiCoder.decodeParameter('uint256', subData[7]));
|
|
666
673
|
return {
|
|
667
|
-
|
|
674
|
+
spoke, owner, collAsset, collAssetId, debtAsset, debtAssetId, ratioState, targetRatio,
|
|
668
675
|
};
|
|
669
676
|
},
|
|
670
677
|
};
|
|
671
|
-
export const
|
|
672
|
-
encode(
|
|
673
|
-
const
|
|
674
|
-
const
|
|
675
|
-
const
|
|
676
|
-
const
|
|
677
|
-
const
|
|
678
|
-
const
|
|
679
|
-
const
|
|
680
|
-
|
|
681
|
-
const encodedDebtActionType = AbiCoder.encodeParameter('uint8', debtActionType);
|
|
678
|
+
export const aaveV4CloseSubData = {
|
|
679
|
+
encode: (spoke, owner, collAsset, collAssetId, debtAsset, debtAssetId, closeType) => {
|
|
680
|
+
const spokeEncoded = AbiCoder.encodeParameter('address', spoke);
|
|
681
|
+
const ownerEncoded = AbiCoder.encodeParameter('address', owner);
|
|
682
|
+
const collAssetEncoded = AbiCoder.encodeParameter('address', collAsset);
|
|
683
|
+
const collAssetIdEncoded = AbiCoder.encodeParameter('uint256', collAssetId);
|
|
684
|
+
const debtAssetEncoded = AbiCoder.encodeParameter('address', debtAsset);
|
|
685
|
+
const debtAssetIdEncoded = AbiCoder.encodeParameter('uint256', debtAssetId);
|
|
686
|
+
const closeTypeEncoded = AbiCoder.encodeParameter('uint8', closeType);
|
|
687
|
+
// Add two empty slots for future addons (e.g tsi or slippage settings)
|
|
682
688
|
return [
|
|
683
|
-
|
|
684
|
-
|
|
685
|
-
|
|
686
|
-
|
|
687
|
-
|
|
688
|
-
|
|
689
|
-
|
|
689
|
+
spokeEncoded,
|
|
690
|
+
ownerEncoded,
|
|
691
|
+
collAssetEncoded,
|
|
692
|
+
collAssetIdEncoded,
|
|
693
|
+
debtAssetEncoded,
|
|
694
|
+
debtAssetIdEncoded,
|
|
695
|
+
closeTypeEncoded,
|
|
696
|
+
EMPTY_SLOT,
|
|
697
|
+
EMPTY_SLOT,
|
|
690
698
|
];
|
|
691
699
|
},
|
|
692
|
-
decode(subData) {
|
|
693
|
-
const
|
|
694
|
-
const
|
|
695
|
-
const
|
|
696
|
-
const
|
|
697
|
-
const
|
|
698
|
-
const
|
|
700
|
+
decode: (subData) => {
|
|
701
|
+
const spoke = AbiCoder.decodeParameter('address', subData[0]);
|
|
702
|
+
const owner = AbiCoder.decodeParameter('address', subData[1]);
|
|
703
|
+
const collAsset = AbiCoder.decodeParameter('address', subData[2]);
|
|
704
|
+
const collAssetId = Number(AbiCoder.decodeParameter('uint256', subData[3]));
|
|
705
|
+
const debtAsset = AbiCoder.decodeParameter('address', subData[4]);
|
|
706
|
+
const debtAssetId = Number(AbiCoder.decodeParameter('uint256', subData[5]));
|
|
707
|
+
const closeType = Number(AbiCoder.decodeParameter('uint8', subData[6]));
|
|
699
708
|
return {
|
|
700
|
-
|
|
709
|
+
spoke, owner, collAsset, collAssetId, debtAsset, debtAssetId, closeType,
|
|
701
710
|
};
|
|
702
711
|
},
|
|
703
712
|
};
|
|
704
|
-
export const
|
|
705
|
-
encode(
|
|
706
|
-
const
|
|
707
|
-
const
|
|
708
|
-
const
|
|
709
|
-
const
|
|
710
|
-
const
|
|
711
|
-
const
|
|
712
|
-
const
|
|
713
|
-
|
|
713
|
+
export const aaveV4CollateralSwitchSubData = {
|
|
714
|
+
encode: (spoke, owner, fromAsset, fromAssetId, toAsset, toAssetId, amountToSwitch) => {
|
|
715
|
+
const spokeEncoded = AbiCoder.encodeParameter('address', spoke);
|
|
716
|
+
const ownerEncoded = AbiCoder.encodeParameter('address', owner);
|
|
717
|
+
const fromAssetEncoded = AbiCoder.encodeParameter('address', fromAsset);
|
|
718
|
+
const fromAssetIdEncoded = AbiCoder.encodeParameter('uint256', fromAssetId);
|
|
719
|
+
const toAssetEncoded = AbiCoder.encodeParameter('address', toAsset);
|
|
720
|
+
const toAssetIdEncoded = AbiCoder.encodeParameter('uint256', toAssetId);
|
|
721
|
+
const amountToSwitchEncoded = AbiCoder.encodeParameter('uint256', amountToSwitch);
|
|
722
|
+
// Add two empty slots for future addons (e.g tsi or slippage settings)
|
|
723
|
+
return [
|
|
724
|
+
spokeEncoded,
|
|
725
|
+
ownerEncoded,
|
|
726
|
+
fromAssetEncoded,
|
|
727
|
+
fromAssetIdEncoded,
|
|
728
|
+
toAssetEncoded,
|
|
729
|
+
toAssetIdEncoded,
|
|
730
|
+
amountToSwitchEncoded,
|
|
731
|
+
EMPTY_SLOT,
|
|
732
|
+
EMPTY_SLOT,
|
|
733
|
+
];
|
|
714
734
|
},
|
|
715
|
-
decode(subData) {
|
|
716
|
-
const
|
|
717
|
-
const
|
|
718
|
-
const
|
|
719
|
-
const
|
|
720
|
-
const
|
|
721
|
-
const
|
|
722
|
-
const
|
|
723
|
-
const user = AbiCoder.decodeParameter('address', subData[6]);
|
|
735
|
+
decode: (subData) => {
|
|
736
|
+
const spoke = AbiCoder.decodeParameter('address', subData[0]);
|
|
737
|
+
const owner = AbiCoder.decodeParameter('address', subData[1]);
|
|
738
|
+
const fromAsset = AbiCoder.decodeParameter('address', subData[2]);
|
|
739
|
+
const fromAssetId = Number(AbiCoder.decodeParameter('uint256', subData[3]));
|
|
740
|
+
const toAsset = AbiCoder.decodeParameter('address', subData[4]);
|
|
741
|
+
const toAssetId = Number(AbiCoder.decodeParameter('uint256', subData[5]));
|
|
742
|
+
const amountToSwitch = AbiCoder.decodeParameter('uint256', subData[6]);
|
|
724
743
|
return {
|
|
725
|
-
|
|
726
|
-
collToken,
|
|
727
|
-
oracle,
|
|
728
|
-
irm,
|
|
729
|
-
lltv,
|
|
730
|
-
targetRatio,
|
|
731
|
-
user,
|
|
744
|
+
spoke, owner, fromAsset, fromAssetId, toAsset, toAssetId, amountToSwitch,
|
|
732
745
|
};
|
|
733
746
|
},
|
|
734
747
|
};
|
|
735
|
-
|
|
736
|
-
|
|
737
|
-
|
|
738
|
-
|
|
739
|
-
|
|
740
|
-
|
|
741
|
-
|
|
748
|
+
/**
|
|
749
|
+
______ ______ .___ ___. .______ ____ ____ ___
|
|
750
|
+
/ | / __ \ | \/ | | _ \ \ \ / / |__ \
|
|
751
|
+
| ,----'| | | | | \ / | | |_) | \ \/ / ) |
|
|
752
|
+
| | | | | | | |\/| | | ___/ \ / / /
|
|
753
|
+
| `----.| `--' | | | | | | | \ / / /_
|
|
754
|
+
\______| \______/ |__| |__| | _| \__/ |____|
|
|
755
|
+
*/
|
|
756
|
+
export const compoundV2LeverageManagementSubData = {
|
|
757
|
+
encode(triggerRepayRatio, triggerBoostRatio, targetBoostRatio, targetRepayRatio, boostEnabled) {
|
|
742
758
|
return [
|
|
743
|
-
|
|
744
|
-
|
|
745
|
-
|
|
746
|
-
|
|
747
|
-
|
|
759
|
+
new Dec(triggerRepayRatio).mul(1e16).toString(),
|
|
760
|
+
new Dec(triggerBoostRatio).mul(1e16).toString(),
|
|
761
|
+
new Dec(targetBoostRatio).mul(1e16).toString(),
|
|
762
|
+
new Dec(targetRepayRatio).mul(1e16).toString(),
|
|
763
|
+
// @ts-ignore // TODO
|
|
764
|
+
boostEnabled,
|
|
748
765
|
];
|
|
749
766
|
},
|
|
750
|
-
decode
|
|
751
|
-
const
|
|
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]);
|
|
767
|
+
decode(subData) {
|
|
768
|
+
const weiRatio = AbiCoder.decodeParameter('uint256', subData[0]);
|
|
756
769
|
const targetRatio = weiToRatioPercentage(weiRatio);
|
|
757
|
-
return {
|
|
758
|
-
market, troveId, boldToken, ratioState, targetRatio,
|
|
759
|
-
};
|
|
770
|
+
return { targetRatio };
|
|
760
771
|
},
|
|
761
772
|
};
|
|
762
|
-
export const
|
|
763
|
-
encode
|
|
764
|
-
const
|
|
765
|
-
const
|
|
766
|
-
|
|
767
|
-
|
|
768
|
-
|
|
769
|
-
const
|
|
770
|
-
const
|
|
771
|
-
|
|
772
|
-
|
|
773
|
-
|
|
773
|
+
export const compoundV2LeverageManagementSubDataWithoutSubProxy = {
|
|
774
|
+
encode(targetRatio, ratioState) {
|
|
775
|
+
const encodedTargetRatio = AbiCoder.encodeParameter('uint256', ratioPercentageToWei(targetRatio));
|
|
776
|
+
const encodedRatioState = AbiCoder.encodeParameter('uint8', ratioState);
|
|
777
|
+
return [encodedTargetRatio, encodedRatioState];
|
|
778
|
+
},
|
|
779
|
+
decode(subData) {
|
|
780
|
+
const targetRatio = weiToRatioPercentage(AbiCoder.decodeParameter('uint256', subData[0]));
|
|
781
|
+
const ratioState = AbiCoder.decodeParameter('uint8', subData[1]);
|
|
782
|
+
return { targetRatio, ratioState };
|
|
783
|
+
},
|
|
784
|
+
};
|
|
785
|
+
/**
|
|
786
|
+
______ ______ .___ ___. .______ ____ ____ ____
|
|
787
|
+
/ | / __ \ | \/ | | _ \ \ \ / / |___ \
|
|
788
|
+
| ,----'| | | | | \ / | | |_) | \ \/ / __) |
|
|
789
|
+
| | | | | | | |\/| | | ___/ \ / |__ <
|
|
790
|
+
| `----.| `--' | | | | | | | \ / ___) |
|
|
791
|
+
\______| \______/ |__| |__| | _| \__/ |____/
|
|
792
|
+
*/
|
|
793
|
+
export const compoundV3LeverageManagementSubData = {
|
|
794
|
+
encode(market, baseToken, triggerRepayRatio, triggerBoostRatio, targetBoostRatio, targetRepayRatio, boostEnabled, isEOA) {
|
|
774
795
|
return [
|
|
775
|
-
|
|
776
|
-
|
|
777
|
-
|
|
778
|
-
|
|
779
|
-
|
|
780
|
-
|
|
781
|
-
|
|
796
|
+
market,
|
|
797
|
+
baseToken,
|
|
798
|
+
new Dec(triggerRepayRatio).mul(1e16).toString(),
|
|
799
|
+
new Dec(triggerBoostRatio).mul(1e16).toString(),
|
|
800
|
+
new Dec(targetBoostRatio).mul(1e16).toString(),
|
|
801
|
+
new Dec(targetRepayRatio).mul(1e16).toString(),
|
|
802
|
+
// @ts-ignore // TODO
|
|
803
|
+
boostEnabled, isEOA,
|
|
782
804
|
];
|
|
783
805
|
},
|
|
784
|
-
decode
|
|
785
|
-
const nftId = AbiCoder.decodeParameter('uint256', subData[0]);
|
|
786
|
-
const vault = AbiCoder.decodeParameter('address', subData[1]);
|
|
787
|
-
const ratioState = AbiCoder.decodeParameter('uint8', subData[2]);
|
|
806
|
+
decode(subData) {
|
|
788
807
|
const weiRatio = AbiCoder.decodeParameter('uint256', subData[3]);
|
|
789
808
|
const targetRatio = weiToRatioPercentage(weiRatio);
|
|
809
|
+
return { targetRatio };
|
|
810
|
+
},
|
|
811
|
+
};
|
|
812
|
+
export const compoundV3LeverageManagementSubDataWithoutSubProxy = {
|
|
813
|
+
encode(market, baseToken, targetRatio, ratioState) {
|
|
814
|
+
const encodedMarket = AbiCoder.encodeParameter('address', market);
|
|
815
|
+
const encodedBaseToken = AbiCoder.encodeParameter('address', baseToken);
|
|
816
|
+
const encodedTargetRatio = AbiCoder.encodeParameter('uint256', ratioPercentageToWei(targetRatio));
|
|
817
|
+
const encodedRatioState = AbiCoder.encodeParameter('uint8', ratioState);
|
|
818
|
+
return [encodedMarket, encodedBaseToken, encodedTargetRatio, encodedRatioState];
|
|
819
|
+
},
|
|
820
|
+
decode(subData) {
|
|
821
|
+
const market = AbiCoder.decodeParameter('address', subData[0]);
|
|
822
|
+
const baseToken = AbiCoder.decodeParameter('address', subData[1]);
|
|
823
|
+
const targetRatio = weiToRatioPercentage(AbiCoder.decodeParameter('uint256', subData[2]));
|
|
824
|
+
const ratioState = AbiCoder.decodeParameter('uint8', subData[3]);
|
|
790
825
|
return {
|
|
791
|
-
|
|
826
|
+
market, baseToken, targetRatio, ratioState,
|
|
792
827
|
};
|
|
793
828
|
},
|
|
794
829
|
};
|
|
830
|
+
export const compoundV3L2LeverageManagementSubData = {
|
|
831
|
+
encode(market, baseToken, triggerRepayRatio, triggerBoostRatio, targetBoostRatio, targetRepayRatio, boostEnabled, isEOA) {
|
|
832
|
+
let subInput = '0x';
|
|
833
|
+
subInput = subInput.concat(market.slice(2));
|
|
834
|
+
subInput = subInput.concat(baseToken.slice(2));
|
|
835
|
+
subInput = subInput.concat(new Dec(triggerRepayRatio).mul(1e16).toHex().slice(2)
|
|
836
|
+
.padStart(32, '0'));
|
|
837
|
+
subInput = subInput.concat(new Dec(triggerBoostRatio).mul(1e16).toHex().slice(2)
|
|
838
|
+
.padStart(32, '0'));
|
|
839
|
+
subInput = subInput.concat(new Dec(targetBoostRatio).mul(1e16).toHex().slice(2)
|
|
840
|
+
.padStart(32, '0'));
|
|
841
|
+
subInput = subInput.concat(new Dec(targetRepayRatio).mul(1e16).toHex().slice(2)
|
|
842
|
+
.padStart(32, '0'));
|
|
843
|
+
subInput = subInput.concat(boostEnabled ? '01' : '00');
|
|
844
|
+
subInput = subInput.concat(isEOA ? '01' : '00');
|
|
845
|
+
return subInput;
|
|
846
|
+
},
|
|
847
|
+
decode(subData) {
|
|
848
|
+
const ratioWei = AbiCoder.decodeParameter('uint256', subData[3]);
|
|
849
|
+
const targetRatio = weiToRatioPercentage(ratioWei);
|
|
850
|
+
return { targetRatio };
|
|
851
|
+
},
|
|
852
|
+
};
|
|
795
853
|
export const compoundV3LeverageManagementOnPriceSubData = {
|
|
796
854
|
encode(market, collToken, baseToken, targetRatio, ratioState, user) {
|
|
797
855
|
const marketEncoded = AbiCoder.encodeParameter('address', market);
|
|
@@ -848,6 +906,97 @@ export const compoundV3CloseSubData = {
|
|
|
848
906
|
};
|
|
849
907
|
},
|
|
850
908
|
};
|
|
909
|
+
/**
|
|
910
|
+
__________ ___ ______ __ __ ___ .__ __. _______ _______
|
|
911
|
+
| ____\ \ / / / || | | | / \ | \ | | / _____|| ____|
|
|
912
|
+
| |__ \ V / | ,----'| |__| | / ^ \ | \| | | | __ | |__
|
|
913
|
+
| __| > < | | | __ | / /_\ \ | . ` | | | |_ | | __|
|
|
914
|
+
| |____ / . \ | `----.| | | | / _____ \ | |\ | | |__| | | |____
|
|
915
|
+
|_______/__/ \__\ \______||__| |__| /__/ \__\ |__| \__| \______| |_______|
|
|
916
|
+
*/
|
|
917
|
+
export const exchangeDcaSubData = {
|
|
918
|
+
encode: (fromToken, toToken, amount, interval) => {
|
|
919
|
+
const sellTokenEncoded = AbiCoder.encodeParameter('address', fromToken);
|
|
920
|
+
const buyTokenEncoded = AbiCoder.encodeParameter('address', toToken);
|
|
921
|
+
const amountEncoded = AbiCoder.encodeParameter('uint256', amount);
|
|
922
|
+
const intervalEncoded = AbiCoder.encodeParameter('uint256', interval);
|
|
923
|
+
return [sellTokenEncoded, buyTokenEncoded, amountEncoded, intervalEncoded];
|
|
924
|
+
},
|
|
925
|
+
decode: (subData, chainId) => {
|
|
926
|
+
const fromToken = AbiCoder.decodeParameter('address', subData[0]).toString();
|
|
927
|
+
const toToken = AbiCoder.decodeParameter('address', subData[1]).toString();
|
|
928
|
+
const amount = assetAmountInEth(AbiCoder.decodeParameter('uint256', subData[2]).toString(), getAssetInfoByAddress(fromToken, chainId).symbol);
|
|
929
|
+
const interval = AbiCoder.decodeParameter('uint256', subData[3]).toString();
|
|
930
|
+
return {
|
|
931
|
+
fromToken,
|
|
932
|
+
toToken,
|
|
933
|
+
amount,
|
|
934
|
+
interval,
|
|
935
|
+
};
|
|
936
|
+
},
|
|
937
|
+
};
|
|
938
|
+
export const exchangeLimitOrderSubData = {
|
|
939
|
+
encode(fromToken, toToken, amount, targetPrice, goodUntil, orderType) {
|
|
940
|
+
return [
|
|
941
|
+
fromToken,
|
|
942
|
+
toToken,
|
|
943
|
+
amount,
|
|
944
|
+
targetPrice,
|
|
945
|
+
new Dec(goodUntil).toString(),
|
|
946
|
+
new Dec(orderType).toString(),
|
|
947
|
+
];
|
|
948
|
+
},
|
|
949
|
+
decode: (subData, chainId) => {
|
|
950
|
+
const fromToken = AbiCoder.decodeParameter('address', subData[0]).toString();
|
|
951
|
+
const toToken = AbiCoder.decodeParameter('address', subData[1]).toString();
|
|
952
|
+
const amount = assetAmountInEth(AbiCoder.decodeParameter('uint256', subData[2]).toString(), getAssetInfoByAddress(fromToken, chainId).symbol);
|
|
953
|
+
return { fromToken, toToken, amount };
|
|
954
|
+
},
|
|
955
|
+
};
|
|
956
|
+
export const exchangeLimitOrderSubDataWithoutSubProxy = {
|
|
957
|
+
encode(fromToken, toToken, amount) {
|
|
958
|
+
return [
|
|
959
|
+
AbiCoder.encodeParameter('address', fromToken),
|
|
960
|
+
AbiCoder.encodeParameter('address', toToken),
|
|
961
|
+
AbiCoder.encodeParameter('uint256', amount),
|
|
962
|
+
];
|
|
963
|
+
},
|
|
964
|
+
decode: (subData, chainId) => {
|
|
965
|
+
const fromToken = AbiCoder.decodeParameter('address', subData[0]).toString();
|
|
966
|
+
const toToken = AbiCoder.decodeParameter('address', subData[1]).toString();
|
|
967
|
+
const amount = assetAmountInEth(AbiCoder.decodeParameter('uint256', subData[2]).toString(), getAssetInfoByAddress(fromToken, chainId).symbol);
|
|
968
|
+
return { fromToken, toToken, amount };
|
|
969
|
+
},
|
|
970
|
+
};
|
|
971
|
+
/**
|
|
972
|
+
_______..______ ___ .______ __ ___
|
|
973
|
+
/ || _ \ / \ | _ \ | |/ /
|
|
974
|
+
| (----`| |_) | / ^ \ | |_) | | ' /
|
|
975
|
+
\ \ | ___/ / /_\ \ | / | <
|
|
976
|
+
.----) | | | / _____ \ | |\ \----.| . \
|
|
977
|
+
|_______/ | _| /__/ \__\ | _| `._____||__|\__\
|
|
978
|
+
*/
|
|
979
|
+
export const sparkLeverageManagementSubData = {
|
|
980
|
+
decode(subData) {
|
|
981
|
+
const ratioWei = AbiCoder.decodeParameter('uint256', subData[0]);
|
|
982
|
+
const targetRatio = weiToRatioPercentage(ratioWei);
|
|
983
|
+
return { targetRatio };
|
|
984
|
+
},
|
|
985
|
+
};
|
|
986
|
+
export const sparkLeverageManagementSubDataWithoutSubProxy = {
|
|
987
|
+
encode(targetRatio, ratioState) {
|
|
988
|
+
const encodedTargetRatio = AbiCoder.encodeParameter('uint256', ratioPercentageToWei(targetRatio));
|
|
989
|
+
const encodedRatioState = AbiCoder.encodeParameter('uint8', ratioState);
|
|
990
|
+
const encodedUseDefaultMarket = AbiCoder.encodeParameter('bool', true);
|
|
991
|
+
const encodedUseOnBehalf = AbiCoder.encodeParameter('bool', false);
|
|
992
|
+
return [encodedTargetRatio, encodedRatioState, encodedUseDefaultMarket, encodedUseOnBehalf];
|
|
993
|
+
},
|
|
994
|
+
decode(subData) {
|
|
995
|
+
const targetRatio = weiToRatioPercentage(AbiCoder.decodeParameter('uint256', subData[0]));
|
|
996
|
+
const ratioState = AbiCoder.decodeParameter('uint8', subData[1]);
|
|
997
|
+
return { targetRatio, ratioState };
|
|
998
|
+
},
|
|
999
|
+
};
|
|
851
1000
|
export const sparkCloseGenericSubData = {
|
|
852
1001
|
encode(collAsset, collAssetId, debtAsset, debtAssetId, closeType, marketAddr, user) {
|
|
853
1002
|
const encodedColl = AbiCoder.encodeParameter('address', collAsset);
|
|
@@ -880,6 +1029,155 @@ export const sparkCloseGenericSubData = {
|
|
|
880
1029
|
};
|
|
881
1030
|
},
|
|
882
1031
|
};
|
|
1032
|
+
export const sparkLeverageManagementOnPriceSubData = {
|
|
1033
|
+
encode(collAsset, collAssetId, debtAsset, debtAssetId, marketAddr, targetRatio) {
|
|
1034
|
+
const encodedColl = AbiCoder.encodeParameter('address', collAsset);
|
|
1035
|
+
const encodedCollId = AbiCoder.encodeParameter('uint16', collAssetId);
|
|
1036
|
+
const encodedDebt = AbiCoder.encodeParameter('address', debtAsset);
|
|
1037
|
+
const encodedDebtId = AbiCoder.encodeParameter('uint16', debtAssetId);
|
|
1038
|
+
const encodedMarket = AbiCoder.encodeParameter('address', marketAddr);
|
|
1039
|
+
const encodedTargetRatio = AbiCoder.encodeParameter('uint256', ratioPercentageToWei(targetRatio));
|
|
1040
|
+
const useOnBehalfEncoded = AbiCoder.encodeParameter('bool', false);
|
|
1041
|
+
return [encodedColl, encodedCollId, encodedDebt, encodedDebtId, encodedMarket, encodedTargetRatio, useOnBehalfEncoded];
|
|
1042
|
+
},
|
|
1043
|
+
decode(subData) {
|
|
1044
|
+
const collAsset = AbiCoder.decodeParameter('address', subData[0]);
|
|
1045
|
+
const collAssetId = Number(AbiCoder.decodeParameter('uint16', subData[1]));
|
|
1046
|
+
const debtAsset = AbiCoder.decodeParameter('address', subData[2]);
|
|
1047
|
+
const debtAssetId = Number(AbiCoder.decodeParameter('uint16', subData[3]));
|
|
1048
|
+
const marketAddr = AbiCoder.decodeParameter('address', subData[4]);
|
|
1049
|
+
const weiRatio = AbiCoder.decodeParameter('uint256', subData[5]);
|
|
1050
|
+
const targetRatio = weiToRatioPercentage(weiRatio);
|
|
1051
|
+
return {
|
|
1052
|
+
collAsset, collAssetId, debtAsset, debtAssetId, marketAddr, targetRatio,
|
|
1053
|
+
};
|
|
1054
|
+
},
|
|
1055
|
+
};
|
|
1056
|
+
/**
|
|
1057
|
+
______ .______ ____ ____ __ __ _______. _______
|
|
1058
|
+
/ || _ \ \ \ / / | | | | / || \
|
|
1059
|
+
| ,----'| |_) | \ \/ / | | | | | (----`| .--. |
|
|
1060
|
+
| | | / \ / | | | | \ \ | | | |
|
|
1061
|
+
| `----.| |\ \----. \ / | `--' | .----) | | '--' |
|
|
1062
|
+
\______|| _| `._____| \__/ \______/ |_______/ |_______/
|
|
1063
|
+
*/
|
|
1064
|
+
export const crvUSDLeverageManagementSubData = {
|
|
1065
|
+
encode: (controllerAddr, ratioState, targetRatio, collTokenAddr, crvUSDAddr) => {
|
|
1066
|
+
const controllerAddrEncoded = AbiCoder.encodeParameter('address', controllerAddr);
|
|
1067
|
+
const ratioStateEncoded = AbiCoder.encodeParameter('uint8', ratioState);
|
|
1068
|
+
const targetRatioEncoded = AbiCoder.encodeParameter('uint256', ratioPercentageToWei(targetRatio));
|
|
1069
|
+
const collTokenAddrEncoded = AbiCoder.encodeParameter('address', collTokenAddr);
|
|
1070
|
+
const crvUSDAddrEncoded = AbiCoder.encodeParameter('address', crvUSDAddr);
|
|
1071
|
+
return [controllerAddrEncoded, ratioStateEncoded, targetRatioEncoded, collTokenAddrEncoded, crvUSDAddrEncoded];
|
|
1072
|
+
},
|
|
1073
|
+
decode: (subData) => {
|
|
1074
|
+
const controller = AbiCoder.decodeParameter('address', subData[0]);
|
|
1075
|
+
const weiRatio = AbiCoder.decodeParameter('uint256', subData[2]);
|
|
1076
|
+
const targetRatio = weiToRatioPercentage(weiRatio);
|
|
1077
|
+
return { controller, targetRatio };
|
|
1078
|
+
},
|
|
1079
|
+
};
|
|
1080
|
+
export const crvUSDPaybackSubData = {
|
|
1081
|
+
encode: (controllerAddr, addressToPullTokensFrom, positionOwner, paybackAmount, crvUSDAddr) => {
|
|
1082
|
+
const controllerAddrEncoded = AbiCoder.encodeParameter('address', controllerAddr);
|
|
1083
|
+
const addressToPullTokensFromEncoded = AbiCoder.encodeParameter('address', addressToPullTokensFrom);
|
|
1084
|
+
const positionOwnerEncoded = AbiCoder.encodeParameter('address', positionOwner);
|
|
1085
|
+
const paybackAmountEncoded = AbiCoder.encodeParameter('uint256', toWei(paybackAmount, 'ether'));
|
|
1086
|
+
const crvUSDAddrEncoded = AbiCoder.encodeParameter('address', crvUSDAddr);
|
|
1087
|
+
return [
|
|
1088
|
+
controllerAddrEncoded,
|
|
1089
|
+
addressToPullTokensFromEncoded,
|
|
1090
|
+
positionOwnerEncoded,
|
|
1091
|
+
paybackAmountEncoded,
|
|
1092
|
+
crvUSDAddrEncoded,
|
|
1093
|
+
];
|
|
1094
|
+
},
|
|
1095
|
+
decode: (subData) => {
|
|
1096
|
+
const controller = AbiCoder.decodeParameter('address', subData[0]);
|
|
1097
|
+
const addressToPullTokensFrom = AbiCoder.decodeParameter('address', subData[1]);
|
|
1098
|
+
const positionOwner = AbiCoder.decodeParameter('address', subData[2]);
|
|
1099
|
+
const weiPaybackAmount = AbiCoder.decodeParameter('uint256', subData[3]);
|
|
1100
|
+
const paybackAmount = fromWei(weiPaybackAmount, 'ether');
|
|
1101
|
+
return {
|
|
1102
|
+
controller,
|
|
1103
|
+
addressToPullTokensFrom,
|
|
1104
|
+
positionOwner,
|
|
1105
|
+
paybackAmount,
|
|
1106
|
+
};
|
|
1107
|
+
},
|
|
1108
|
+
};
|
|
1109
|
+
/**
|
|
1110
|
+
.___ ___. ______ .______ .______ __ __ ______
|
|
1111
|
+
| \/ | / __ \ | _ \ | _ \ | | | | / __ \
|
|
1112
|
+
| \ / | | | | | | |_) | | |_) | | |__| | | | | |
|
|
1113
|
+
| |\/| | | | | | | / | ___/ | __ | | | | |
|
|
1114
|
+
| | | | | `--' | | |\ \----.| | | | | | | `--' |
|
|
1115
|
+
|__| |__| \______/ | _| `._____|| _| |__| |__| \______/
|
|
1116
|
+
*/
|
|
1117
|
+
export const morphoBlueLeverageManagementSubData = {
|
|
1118
|
+
encode: (loanToken, collToken, oracle, irm, lltv, ratioState, targetRatio, user, isEOA) => {
|
|
1119
|
+
const loanTokenEncoded = AbiCoder.encodeParameter('address', loanToken);
|
|
1120
|
+
const collTokenEncoded = AbiCoder.encodeParameter('address', collToken);
|
|
1121
|
+
const oracleEncoded = AbiCoder.encodeParameter('address', oracle);
|
|
1122
|
+
const irmEncoded = AbiCoder.encodeParameter('address', irm);
|
|
1123
|
+
const lltvEncoded = AbiCoder.encodeParameter('uint256', lltv);
|
|
1124
|
+
const ratioStateEncoded = AbiCoder.encodeParameter('uint8', ratioState);
|
|
1125
|
+
const targetRatioEncoded = AbiCoder.encodeParameter('uint256', ratioPercentageToWei(targetRatio));
|
|
1126
|
+
const userEncoded = AbiCoder.encodeParameter('address', user);
|
|
1127
|
+
const isEOAEncoded = AbiCoder.encodeParameter('bool', isEOA);
|
|
1128
|
+
return [loanTokenEncoded, collTokenEncoded, oracleEncoded, irmEncoded, lltvEncoded, ratioStateEncoded, targetRatioEncoded, userEncoded, isEOAEncoded];
|
|
1129
|
+
},
|
|
1130
|
+
decode: (subData) => {
|
|
1131
|
+
const loanToken = AbiCoder.decodeParameter('address', subData[0]);
|
|
1132
|
+
const collToken = AbiCoder.decodeParameter('address', subData[1]);
|
|
1133
|
+
const oracle = AbiCoder.decodeParameter('address', subData[2]);
|
|
1134
|
+
const irm = AbiCoder.decodeParameter('address', subData[3]);
|
|
1135
|
+
const lltv = AbiCoder.decodeParameter('uint256', subData[4]);
|
|
1136
|
+
const weiRatio = AbiCoder.decodeParameter('uint256', subData[6]);
|
|
1137
|
+
const user = AbiCoder.decodeParameter('address', subData[7]);
|
|
1138
|
+
const targetRatio = weiToRatioPercentage(weiRatio);
|
|
1139
|
+
return {
|
|
1140
|
+
loanToken,
|
|
1141
|
+
collToken,
|
|
1142
|
+
oracle,
|
|
1143
|
+
irm,
|
|
1144
|
+
lltv,
|
|
1145
|
+
user,
|
|
1146
|
+
targetRatio,
|
|
1147
|
+
};
|
|
1148
|
+
},
|
|
1149
|
+
};
|
|
1150
|
+
export const morphoBlueLeverageManagementOnPriceSubData = {
|
|
1151
|
+
encode(loanToken, collToken, oracle, irm, lltv, targetRatio, user) {
|
|
1152
|
+
const loanTokenEncoded = AbiCoder.encodeParameter('address', loanToken);
|
|
1153
|
+
const collTokenEncoded = AbiCoder.encodeParameter('address', collToken);
|
|
1154
|
+
const oracleEncoded = AbiCoder.encodeParameter('address', oracle);
|
|
1155
|
+
const irmEncoded = AbiCoder.encodeParameter('address', irm);
|
|
1156
|
+
const lltvEncoded = AbiCoder.encodeParameter('uint256', lltv);
|
|
1157
|
+
const targetRatioEncoded = AbiCoder.encodeParameter('uint256', ratioPercentageToWei(targetRatio));
|
|
1158
|
+
const userEncoded = AbiCoder.encodeParameter('address', user);
|
|
1159
|
+
return [loanTokenEncoded, collTokenEncoded, oracleEncoded, irmEncoded, lltvEncoded, targetRatioEncoded, userEncoded];
|
|
1160
|
+
},
|
|
1161
|
+
decode(subData) {
|
|
1162
|
+
const loanToken = AbiCoder.decodeParameter('address', subData[0]);
|
|
1163
|
+
const collToken = AbiCoder.decodeParameter('address', subData[1]);
|
|
1164
|
+
const oracle = AbiCoder.decodeParameter('address', subData[2]);
|
|
1165
|
+
const irm = AbiCoder.decodeParameter('address', subData[3]);
|
|
1166
|
+
const lltv = AbiCoder.decodeParameter('uint256', subData[4]);
|
|
1167
|
+
const weiRatio = AbiCoder.decodeParameter('uint256', subData[5]);
|
|
1168
|
+
const targetRatio = weiToRatioPercentage(weiRatio);
|
|
1169
|
+
const user = AbiCoder.decodeParameter('address', subData[6]);
|
|
1170
|
+
return {
|
|
1171
|
+
loanToken,
|
|
1172
|
+
collToken,
|
|
1173
|
+
oracle,
|
|
1174
|
+
irm,
|
|
1175
|
+
lltv,
|
|
1176
|
+
targetRatio,
|
|
1177
|
+
user,
|
|
1178
|
+
};
|
|
1179
|
+
},
|
|
1180
|
+
};
|
|
883
1181
|
export const morphoBlueCloseOnPriceSubData = {
|
|
884
1182
|
encode(loanToken, collToken, oracle, irm, lltv, user, closeType) {
|
|
885
1183
|
const loanTokenEncoded = AbiCoder.encodeParameter('address', loanToken);
|
|
@@ -910,27 +1208,44 @@ export const morphoBlueCloseOnPriceSubData = {
|
|
|
910
1208
|
};
|
|
911
1209
|
},
|
|
912
1210
|
};
|
|
913
|
-
|
|
914
|
-
|
|
915
|
-
|
|
916
|
-
|
|
917
|
-
|
|
918
|
-
|
|
919
|
-
|
|
920
|
-
|
|
921
|
-
|
|
922
|
-
|
|
1211
|
+
/**
|
|
1212
|
+
_______ __ __ __ __ _______
|
|
1213
|
+
| ____|| | | | | | | | | \
|
|
1214
|
+
| |__ | | | | | | | | | .--. |
|
|
1215
|
+
| __| | | | | | | | | | | | |
|
|
1216
|
+
| | | `----.| `--' | | | | '--' |
|
|
1217
|
+
|__| |_______| \______/ |__| |_______/
|
|
1218
|
+
*/
|
|
1219
|
+
export const fluidLeverageManagementSubData = {
|
|
1220
|
+
encode: (nftId, vault, ratioState, targetRatio) => {
|
|
1221
|
+
const nftIdEncoded = AbiCoder.encodeParameter('uint256', nftId);
|
|
1222
|
+
const vaultEncoded = AbiCoder.encodeParameter('address', vault);
|
|
1223
|
+
const ratioStateEncoded = AbiCoder.encodeParameter('uint8', ratioState);
|
|
1224
|
+
const targetRatioEncoded = AbiCoder.encodeParameter('uint256', ratioPercentageToWei(targetRatio));
|
|
1225
|
+
const wrapEthEncoded = AbiCoder.encodeParameter('bool', true);
|
|
1226
|
+
const isRepay = ratioState === RatioState.UNDER;
|
|
1227
|
+
const collActionType = isRepay ? CollActionType.WITHDRAW : CollActionType.SUPPLY;
|
|
1228
|
+
const debtActionType = isRepay ? DebtActionType.PAYBACK : DebtActionType.BORROW;
|
|
1229
|
+
const collActionTypeEncoded = AbiCoder.encodeParameter('uint8', collActionType);
|
|
1230
|
+
const debtActionTypeEncoded = AbiCoder.encodeParameter('uint8', debtActionType);
|
|
1231
|
+
return [
|
|
1232
|
+
nftIdEncoded,
|
|
1233
|
+
vaultEncoded,
|
|
1234
|
+
ratioStateEncoded,
|
|
1235
|
+
targetRatioEncoded,
|
|
1236
|
+
wrapEthEncoded,
|
|
1237
|
+
collActionTypeEncoded,
|
|
1238
|
+
debtActionTypeEncoded,
|
|
1239
|
+
];
|
|
923
1240
|
},
|
|
924
|
-
decode(subData) {
|
|
925
|
-
const
|
|
926
|
-
const
|
|
927
|
-
const
|
|
928
|
-
const
|
|
929
|
-
const marketAddr = AbiCoder.decodeParameter('address', subData[4]);
|
|
930
|
-
const weiRatio = AbiCoder.decodeParameter('uint256', subData[5]);
|
|
1241
|
+
decode: (subData) => {
|
|
1242
|
+
const nftId = AbiCoder.decodeParameter('uint256', subData[0]);
|
|
1243
|
+
const vault = AbiCoder.decodeParameter('address', subData[1]);
|
|
1244
|
+
const ratioState = AbiCoder.decodeParameter('uint8', subData[2]);
|
|
1245
|
+
const weiRatio = AbiCoder.decodeParameter('uint256', subData[3]);
|
|
931
1246
|
const targetRatio = weiToRatioPercentage(weiRatio);
|
|
932
1247
|
return {
|
|
933
|
-
|
|
1248
|
+
nftId, vault, ratioState, targetRatio,
|
|
934
1249
|
};
|
|
935
1250
|
},
|
|
936
1251
|
};
|