@defisaver/automation-sdk 3.3.14 → 3.3.15-liq-prot-1-dev
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/cjs/constants/index.js +130 -0
- package/cjs/index.d.ts +4 -3
- package/cjs/index.js +6 -2
- package/cjs/services/strategiesService.js +178 -17
- package/cjs/services/strategySubService.d.ts +14 -13
- package/cjs/services/strategySubService.js +79 -63
- package/cjs/services/strategySubService.test.js +0 -234
- package/cjs/services/subDataService.d.ts +92 -4
- package/cjs/services/subDataService.js +245 -35
- package/cjs/services/subDataService.test.js +0 -110
- package/cjs/services/utils.d.ts +3 -1
- package/cjs/services/utils.js +34 -1
- package/cjs/services/utils.test.js +25 -0
- package/cjs/types/enums.d.ts +36 -6
- package/cjs/types/enums.js +30 -0
- package/esm/constants/index.js +130 -0
- package/esm/index.d.ts +4 -3
- package/esm/index.js +7 -3
- package/esm/services/strategiesService.js +178 -17
- package/esm/services/strategySubService.d.ts +14 -13
- package/esm/services/strategySubService.js +79 -60
- package/esm/services/strategySubService.test.js +2 -236
- package/esm/services/subDataService.d.ts +92 -4
- package/esm/services/subDataService.js +243 -34
- package/esm/services/subDataService.test.js +0 -110
- package/esm/services/utils.d.ts +3 -1
- package/esm/services/utils.js +32 -1
- package/esm/services/utils.test.js +27 -2
- package/esm/types/enums.d.ts +36 -6
- package/esm/types/enums.js +30 -0
- package/package.json +1 -1
- package/src/constants/index.ts +132 -1
- package/src/index.ts +24 -6
- package/src/services/strategiesService.ts +242 -17
- package/src/services/strategySubService.test.ts +0 -279
- package/src/services/strategySubService.ts +209 -116
- package/src/services/subDataService.test.ts +0 -120
- package/src/services/subDataService.ts +335 -49
- package/src/services/utils.test.ts +32 -1
- package/src/services/utils.ts +32 -1
- package/src/types/enums.ts +30 -2
|
@@ -71,6 +71,14 @@ export declare const makerLeverageManagementWithoutSubProxy: {
|
|
|
71
71
|
daiAddr: string;
|
|
72
72
|
};
|
|
73
73
|
};
|
|
74
|
+
export declare const makerLiquidationProtectionSubData: {
|
|
75
|
+
encode(vaultId: number, targetRatio: number, daiAddr?: EthereumAddress): string[];
|
|
76
|
+
decode(subData: string[]): {
|
|
77
|
+
vaultId: number;
|
|
78
|
+
targetRatio: number;
|
|
79
|
+
daiAddr: string;
|
|
80
|
+
};
|
|
81
|
+
};
|
|
74
82
|
/**
|
|
75
83
|
__ __ ______ __ __ __ .___________.____ ____ ____ ____ __
|
|
76
84
|
| | | | / __ \ | | | | | | | |\ \ / / \ \ / / /_ |
|
|
@@ -89,6 +97,13 @@ export declare const liquityLeverageManagementSubData: {
|
|
|
89
97
|
targetRatio: number;
|
|
90
98
|
};
|
|
91
99
|
};
|
|
100
|
+
export declare const liquityLeverageManagementSubDataWithoutSubProxy: {
|
|
101
|
+
encode(targetRatio: number, ratioState: RatioState): string[];
|
|
102
|
+
decode(subData: string[]): {
|
|
103
|
+
targetRatio: number;
|
|
104
|
+
ratioState: RatioState;
|
|
105
|
+
};
|
|
106
|
+
};
|
|
92
107
|
export declare const liquityCloseSubData: {
|
|
93
108
|
encode(closeToAssetAddr: EthereumAddress, chainId?: ChainId, collAddr?: EthereumAddress, debtAddr?: EthereumAddress): string[];
|
|
94
109
|
decode(subData: string[]): {
|
|
@@ -177,6 +192,14 @@ export declare const aaveV2LeverageManagementSubData: {
|
|
|
177
192
|
targetRatio: number;
|
|
178
193
|
};
|
|
179
194
|
};
|
|
195
|
+
export declare const aaveV2LeverageManagementSubDataWithoutSubProxy: {
|
|
196
|
+
encode(market: EthereumAddress, targetRatio: number, ratioState: RatioState): string[];
|
|
197
|
+
decode(subData: string[]): {
|
|
198
|
+
market: EthereumAddress;
|
|
199
|
+
targetRatio: number;
|
|
200
|
+
ratioState: RatioState;
|
|
201
|
+
};
|
|
202
|
+
};
|
|
180
203
|
/**
|
|
181
204
|
___ ___ ____ ____ _______ ____ ____ ____
|
|
182
205
|
/ \ / \ \ \ / / | ____| \ \ / / |___ \
|
|
@@ -197,6 +220,13 @@ export declare const aaveV3LeverageManagementSubDataWithoutSubProxy: {
|
|
|
197
220
|
ratioState: RatioState;
|
|
198
221
|
};
|
|
199
222
|
};
|
|
223
|
+
export declare const aaveV3LiquidationProtectionSubData: {
|
|
224
|
+
encode(targetRatio: number, ratioState: RatioState, market: EthereumAddress, user: EthereumAddress): string[];
|
|
225
|
+
decode(subData: string[]): {
|
|
226
|
+
targetRatio: number;
|
|
227
|
+
ratioState: RatioState;
|
|
228
|
+
};
|
|
229
|
+
};
|
|
200
230
|
export declare const aaveV3LeverageManagementOnPriceGeneric: {
|
|
201
231
|
encode(collAsset: EthereumAddress, collAssetId: number, debtAsset: EthereumAddress, debtAssetId: number, marketAddr: EthereumAddress, targetRatio: number, user: EthereumAddress): string[];
|
|
202
232
|
decode(subData: string[]): {
|
|
@@ -269,6 +299,15 @@ export declare const aaveV4LeverageManagementSubData: {
|
|
|
269
299
|
targetRatio: number;
|
|
270
300
|
};
|
|
271
301
|
};
|
|
302
|
+
export declare const aaveV4LiquidationProtectionSubData: {
|
|
303
|
+
encode: (spoke: EthereumAddress, owner: EthereumAddress, ratioState: RatioState, targetRatio: number) => string[];
|
|
304
|
+
decode: (subData: string[]) => {
|
|
305
|
+
spoke: string;
|
|
306
|
+
owner: string;
|
|
307
|
+
ratioState: RatioState;
|
|
308
|
+
targetRatio: number;
|
|
309
|
+
};
|
|
310
|
+
};
|
|
272
311
|
export declare const aaveV4LeverageManagementOnPriceSubData: {
|
|
273
312
|
encode: (spoke: EthereumAddress, owner: EthereumAddress, collAsset: EthereumAddress, collAssetId: number, debtAsset: EthereumAddress, debtAssetId: number, ratioState: RatioState, targetRatio: number) => string[];
|
|
274
313
|
decode: (subData: string[]) => {
|
|
@@ -320,6 +359,13 @@ export declare const compoundV2LeverageManagementSubData: {
|
|
|
320
359
|
targetRatio: number;
|
|
321
360
|
};
|
|
322
361
|
};
|
|
362
|
+
export declare const compoundV2LeverageManagementSubDataWithoutSubProxy: {
|
|
363
|
+
encode(targetRatio: number, ratioState: RatioState): string[];
|
|
364
|
+
decode(subData: string[]): {
|
|
365
|
+
targetRatio: number;
|
|
366
|
+
ratioState: RatioState;
|
|
367
|
+
};
|
|
368
|
+
};
|
|
323
369
|
/**
|
|
324
370
|
______ ______ .___ ___. .______ ____ ____ ____
|
|
325
371
|
/ | / __ \ | \/ | | _ \ \ \ / / |___ \
|
|
@@ -328,16 +374,22 @@ export declare const compoundV2LeverageManagementSubData: {
|
|
|
328
374
|
| `----.| `--' | | | | | | | \ / ___) |
|
|
329
375
|
\______| \______/ |__| |__| | _| \__/ |____/
|
|
330
376
|
*/
|
|
331
|
-
export declare const
|
|
332
|
-
encode(market: EthereumAddress, baseToken: EthereumAddress,
|
|
377
|
+
export declare const compoundV3LeverageManagementSubDataWithoutSubProxy: {
|
|
378
|
+
encode(market: EthereumAddress, baseToken: EthereumAddress, targetRatio: number, ratioState: RatioState): string[];
|
|
333
379
|
decode(subData: string[]): {
|
|
380
|
+
market: EthereumAddress;
|
|
381
|
+
baseToken: EthereumAddress;
|
|
334
382
|
targetRatio: number;
|
|
383
|
+
ratioState: RatioState;
|
|
335
384
|
};
|
|
336
385
|
};
|
|
337
|
-
export declare const
|
|
338
|
-
encode(market: EthereumAddress, baseToken: EthereumAddress,
|
|
386
|
+
export declare const compoundV3LiquidationProtectionSubDataWithoutSubProxy: {
|
|
387
|
+
encode(market: EthereumAddress, baseToken: EthereumAddress, targetRatio: number, ratioState: RatioState): string[];
|
|
339
388
|
decode(subData: string[]): {
|
|
389
|
+
market: EthereumAddress;
|
|
390
|
+
baseToken: EthereumAddress;
|
|
340
391
|
targetRatio: number;
|
|
392
|
+
ratioState: RatioState;
|
|
341
393
|
};
|
|
342
394
|
};
|
|
343
395
|
export declare const compoundV3LeverageManagementOnPriceSubData: {
|
|
@@ -386,6 +438,14 @@ export declare const exchangeLimitOrderSubData: {
|
|
|
386
438
|
amount: string;
|
|
387
439
|
};
|
|
388
440
|
};
|
|
441
|
+
export declare const exchangeLimitOrderSubDataWithoutSubProxy: {
|
|
442
|
+
encode(fromToken: EthereumAddress, toToken: EthereumAddress, amount: string): string[];
|
|
443
|
+
decode: (subData: string[], chainId: ChainId) => {
|
|
444
|
+
fromToken: string;
|
|
445
|
+
toToken: string;
|
|
446
|
+
amount: string;
|
|
447
|
+
};
|
|
448
|
+
};
|
|
389
449
|
/**
|
|
390
450
|
_______..______ ___ .______ __ ___
|
|
391
451
|
/ || _ \ / \ | _ \ | |/ /
|
|
@@ -406,6 +466,13 @@ export declare const sparkLeverageManagementSubDataWithoutSubProxy: {
|
|
|
406
466
|
ratioState: RatioState;
|
|
407
467
|
};
|
|
408
468
|
};
|
|
469
|
+
export declare const sparkLiquidationProtectionSubData: {
|
|
470
|
+
encode(targetRatio: number, ratioState: RatioState): string[];
|
|
471
|
+
decode(subData: string[]): {
|
|
472
|
+
targetRatio: number;
|
|
473
|
+
ratioState: RatioState;
|
|
474
|
+
};
|
|
475
|
+
};
|
|
409
476
|
export declare const sparkCloseGenericSubData: {
|
|
410
477
|
encode(collAsset: EthereumAddress, collAssetId: number, debtAsset: EthereumAddress, debtAssetId: number, closeType: CloseStrategyType, marketAddr: EthereumAddress, user: EthereumAddress): string[];
|
|
411
478
|
decode(subData: string[]): {
|
|
@@ -484,6 +551,18 @@ export declare const morphoBlueLeverageManagementSubData: {
|
|
|
484
551
|
targetRatio: number;
|
|
485
552
|
};
|
|
486
553
|
};
|
|
554
|
+
export declare const morphoBlueLiquidationProtectionSubData: {
|
|
555
|
+
encode: (loanToken: EthereumAddress, collToken: EthereumAddress, oracle: EthereumAddress, irm: EthereumAddress, lltv: string, ratioState: RatioState, targetRatio: number, user: EthereumAddress, isEOA: boolean) => string[];
|
|
556
|
+
decode: (subData: string[]) => {
|
|
557
|
+
loanToken: string;
|
|
558
|
+
collToken: string;
|
|
559
|
+
oracle: string;
|
|
560
|
+
irm: string;
|
|
561
|
+
lltv: string;
|
|
562
|
+
user: string;
|
|
563
|
+
targetRatio: number;
|
|
564
|
+
};
|
|
565
|
+
};
|
|
487
566
|
export declare const morphoBlueLeverageManagementOnPriceSubData: {
|
|
488
567
|
encode(loanToken: EthereumAddress, collToken: EthereumAddress, oracle: EthereumAddress, irm: EthereumAddress, lltv: string, targetRatio: number, user: EthereumAddress): string[];
|
|
489
568
|
decode(subData: string[]): {
|
|
@@ -525,3 +604,12 @@ export declare const fluidLeverageManagementSubData: {
|
|
|
525
604
|
targetRatio: number;
|
|
526
605
|
};
|
|
527
606
|
};
|
|
607
|
+
export declare const fluidLiquidationProtectionSubData: {
|
|
608
|
+
encode: (nftId: string, vault: EthereumAddress, ratioState: RatioState, targetRatio: number) => string[];
|
|
609
|
+
decode: (subData: string[]) => {
|
|
610
|
+
nftId: string;
|
|
611
|
+
vault: string;
|
|
612
|
+
ratioState: RatioState;
|
|
613
|
+
targetRatio: number;
|
|
614
|
+
};
|
|
615
|
+
};
|
|
@@ -125,6 +125,8 @@ export const makerLeverageManagementSubData = {
|
|
|
125
125
|
return { vaultId, targetRatio };
|
|
126
126
|
},
|
|
127
127
|
};
|
|
128
|
+
// ! Any change here will PROBABLY require a change in makerLiquidationProtectionSubData as well, since it is copy paste
|
|
129
|
+
// ! Double check before changing
|
|
128
130
|
export const makerLeverageManagementWithoutSubProxy = {
|
|
129
131
|
encode(vaultId, targetRatio, daiAddr) {
|
|
130
132
|
const encodedVaultId = AbiCoder.encodeParameter('uint256', vaultId);
|
|
@@ -139,6 +141,20 @@ export const makerLeverageManagementWithoutSubProxy = {
|
|
|
139
141
|
return { vaultId, targetRatio, daiAddr };
|
|
140
142
|
},
|
|
141
143
|
};
|
|
144
|
+
export const makerLiquidationProtectionSubData = {
|
|
145
|
+
encode(vaultId, targetRatio, daiAddr) {
|
|
146
|
+
const encodedVaultId = AbiCoder.encodeParameter('uint256', vaultId);
|
|
147
|
+
const encodedTargetRatio = AbiCoder.encodeParameter('uint256', ratioPercentageToWei(targetRatio));
|
|
148
|
+
const encodedDaiAddr = AbiCoder.encodeParameter('address', daiAddr || getAssetInfo('DAI', 1).address);
|
|
149
|
+
return [encodedVaultId, encodedTargetRatio, encodedDaiAddr];
|
|
150
|
+
},
|
|
151
|
+
decode(subData) {
|
|
152
|
+
const vaultId = +AbiCoder.decodeParameter('uint256', subData[0]).toString();
|
|
153
|
+
const targetRatio = weiToRatioPercentage(AbiCoder.decodeParameter('uint256', subData[1]));
|
|
154
|
+
const daiAddr = AbiCoder.decodeParameter('address', subData[2]).toString();
|
|
155
|
+
return { vaultId, targetRatio, daiAddr };
|
|
156
|
+
},
|
|
157
|
+
};
|
|
142
158
|
/**
|
|
143
159
|
__ __ ______ __ __ __ .___________.____ ____ ____ ____ __
|
|
144
160
|
| | | | / __ \ | | | | | | | |\ \ / / \ \ / / /_ |
|
|
@@ -161,6 +177,23 @@ export const liquityLeverageManagementSubData = {
|
|
|
161
177
|
return { targetRatio };
|
|
162
178
|
},
|
|
163
179
|
};
|
|
180
|
+
export const liquityLeverageManagementSubDataWithoutSubProxy = {
|
|
181
|
+
encode(targetRatio, ratioState) {
|
|
182
|
+
const encodedRatioState = AbiCoder.encodeParameter('uint8', ratioState);
|
|
183
|
+
const encodedTargetRatio = AbiCoder.encodeParameter('uint256', ratioPercentageToWei(targetRatio));
|
|
184
|
+
const isRepay = ratioState === RatioState.UNDER;
|
|
185
|
+
const collActionType = isRepay ? CollActionType.WITHDRAW : CollActionType.SUPPLY;
|
|
186
|
+
const debtActionType = isRepay ? DebtActionType.PAYBACK : DebtActionType.BORROW;
|
|
187
|
+
const collActionTypeEncoded = AbiCoder.encodeParameter('uint8', collActionType);
|
|
188
|
+
const debtActionTypeEncoded = AbiCoder.encodeParameter('uint8', debtActionType);
|
|
189
|
+
return [encodedRatioState, encodedTargetRatio, collActionTypeEncoded, debtActionTypeEncoded];
|
|
190
|
+
},
|
|
191
|
+
decode(subData) {
|
|
192
|
+
const ratioState = AbiCoder.decodeParameter('uint8', subData[0]);
|
|
193
|
+
const targetRatio = weiToRatioPercentage(AbiCoder.decodeParameter('uint256', subData[1]));
|
|
194
|
+
return { targetRatio, ratioState };
|
|
195
|
+
},
|
|
196
|
+
};
|
|
164
197
|
export const liquityCloseSubData = {
|
|
165
198
|
encode(closeToAssetAddr, chainId = ChainId.Ethereum, collAddr, debtAddr) {
|
|
166
199
|
const _collAddr = collAddr || getAssetInfo('WETH', chainId).address;
|
|
@@ -392,6 +425,25 @@ export const aaveV2LeverageManagementSubData = {
|
|
|
392
425
|
return { targetRatio };
|
|
393
426
|
},
|
|
394
427
|
};
|
|
428
|
+
export const aaveV2LeverageManagementSubDataWithoutSubProxy = {
|
|
429
|
+
encode(market, targetRatio, ratioState) {
|
|
430
|
+
const encodedMarket = AbiCoder.encodeParameter('address', market);
|
|
431
|
+
const encodedTargetRatio = AbiCoder.encodeParameter('uint256', ratioPercentageToWei(targetRatio));
|
|
432
|
+
const encodedRatioState = AbiCoder.encodeParameter('uint8', ratioState);
|
|
433
|
+
const isBoost = ratioState === RatioState.OVER;
|
|
434
|
+
if (isBoost) {
|
|
435
|
+
const enableAsCollEncoded = AbiCoder.encodeParameter('uint256', 1);
|
|
436
|
+
return [encodedMarket, encodedTargetRatio, encodedRatioState, enableAsCollEncoded];
|
|
437
|
+
}
|
|
438
|
+
return [encodedMarket, encodedTargetRatio, encodedRatioState];
|
|
439
|
+
},
|
|
440
|
+
decode(subData) {
|
|
441
|
+
const market = AbiCoder.decodeParameter('address', subData[0]);
|
|
442
|
+
const targetRatio = weiToRatioPercentage(AbiCoder.decodeParameter('uint256', subData[1]));
|
|
443
|
+
const ratioState = AbiCoder.decodeParameter('uint8', subData[2]);
|
|
444
|
+
return { market, targetRatio, ratioState };
|
|
445
|
+
},
|
|
446
|
+
};
|
|
395
447
|
/**
|
|
396
448
|
___ ___ ____ ____ _______ ____ ____ ____
|
|
397
449
|
/ \ / \ \ \ / / | ____| \ \ / / |___ \
|
|
@@ -407,6 +459,8 @@ export const aaveV3LeverageManagementSubData = {
|
|
|
407
459
|
return { targetRatio };
|
|
408
460
|
},
|
|
409
461
|
};
|
|
462
|
+
// ! Any change here will PROBABLY require a change in aaveV3LiquidationProtectionSubData as well
|
|
463
|
+
// ! Double check before changing. Liquidation protection is using Generic encoding for both - EOA and SW
|
|
410
464
|
export const aaveV3LeverageManagementSubDataWithoutSubProxy = {
|
|
411
465
|
encode(targetRatio, ratioState, market, user, isGeneric) {
|
|
412
466
|
const encodedTargetRatio = AbiCoder.encodeParameter('uint256', ratioPercentageToWei(targetRatio));
|
|
@@ -426,6 +480,20 @@ export const aaveV3LeverageManagementSubDataWithoutSubProxy = {
|
|
|
426
480
|
return { targetRatio, ratioState };
|
|
427
481
|
},
|
|
428
482
|
};
|
|
483
|
+
export const aaveV3LiquidationProtectionSubData = {
|
|
484
|
+
encode(targetRatio, ratioState, market, user) {
|
|
485
|
+
const encodedTargetRatio = AbiCoder.encodeParameter('uint256', ratioPercentageToWei(targetRatio));
|
|
486
|
+
const encodedRatioState = AbiCoder.encodeParameter('uint8', ratioState);
|
|
487
|
+
const encodedMarket = AbiCoder.encodeParameter('address', market);
|
|
488
|
+
const encodedUser = AbiCoder.encodeParameter('address', user);
|
|
489
|
+
return [encodedTargetRatio, encodedRatioState, encodedMarket, encodedUser];
|
|
490
|
+
},
|
|
491
|
+
decode(subData) {
|
|
492
|
+
const targetRatio = weiToRatioPercentage(AbiCoder.decodeParameter('uint256', subData[0]));
|
|
493
|
+
const ratioState = AbiCoder.decodeParameter('uint8', subData[1]);
|
|
494
|
+
return { targetRatio, ratioState };
|
|
495
|
+
},
|
|
496
|
+
};
|
|
429
497
|
export const aaveV3LeverageManagementOnPriceGeneric = {
|
|
430
498
|
encode(collAsset, collAssetId, debtAsset, debtAssetId, marketAddr, targetRatio, user) {
|
|
431
499
|
const encodedColl = AbiCoder.encodeParameter('address', collAsset);
|
|
@@ -587,6 +655,8 @@ export const aaveV3LeverageManagementOnPriceSubData = {
|
|
|
587
655
|
/ _____ \ / _____ \ \ / | |____ \ / | |
|
|
588
656
|
/__/ \__\ /__/ \__\ \__/ |_______| \__/ |_|
|
|
589
657
|
*/
|
|
658
|
+
// ! Any change here will PROBABLY require a change in aaveV4LiquidationProtectionSubData as well, since it is copy paste
|
|
659
|
+
// ! Double check before changing
|
|
590
660
|
export const aaveV4LeverageManagementSubData = {
|
|
591
661
|
encode: (spoke, owner, ratioState, targetRatio) => {
|
|
592
662
|
const spokeEncoded = AbiCoder.encodeParameter('address', spoke);
|
|
@@ -613,6 +683,32 @@ export const aaveV4LeverageManagementSubData = {
|
|
|
613
683
|
};
|
|
614
684
|
},
|
|
615
685
|
};
|
|
686
|
+
export const aaveV4LiquidationProtectionSubData = {
|
|
687
|
+
encode: (spoke, owner, ratioState, targetRatio) => {
|
|
688
|
+
const spokeEncoded = AbiCoder.encodeParameter('address', spoke);
|
|
689
|
+
const ownerEncoded = AbiCoder.encodeParameter('address', owner);
|
|
690
|
+
const ratioStateEncoded = AbiCoder.encodeParameter('uint8', ratioState);
|
|
691
|
+
const targetRatioEncoded = AbiCoder.encodeParameter('uint256', ratioPercentageToWei(targetRatio));
|
|
692
|
+
// Add two empty slots for future addons (e.g tsi or slippage settings)
|
|
693
|
+
return [
|
|
694
|
+
spokeEncoded,
|
|
695
|
+
ownerEncoded,
|
|
696
|
+
ratioStateEncoded,
|
|
697
|
+
targetRatioEncoded,
|
|
698
|
+
EMPTY_SLOT,
|
|
699
|
+
EMPTY_SLOT,
|
|
700
|
+
];
|
|
701
|
+
},
|
|
702
|
+
decode: (subData) => {
|
|
703
|
+
const spoke = AbiCoder.decodeParameter('address', subData[0]);
|
|
704
|
+
const owner = AbiCoder.decodeParameter('address', subData[1]);
|
|
705
|
+
const ratioState = Number(AbiCoder.decodeParameter('uint8', subData[2]));
|
|
706
|
+
const targetRatio = weiToRatioPercentage(AbiCoder.decodeParameter('uint256', subData[3]));
|
|
707
|
+
return {
|
|
708
|
+
spoke, owner, ratioState, targetRatio,
|
|
709
|
+
};
|
|
710
|
+
},
|
|
711
|
+
};
|
|
616
712
|
export const aaveV4LeverageManagementOnPriceSubData = {
|
|
617
713
|
encode: (spoke, owner, collAsset, collAssetId, debtAsset, debtAssetId, ratioState, targetRatio) => {
|
|
618
714
|
const spokeEncoded = AbiCoder.encodeParameter('address', spoke);
|
|
@@ -746,6 +842,23 @@ export const compoundV2LeverageManagementSubData = {
|
|
|
746
842
|
return { targetRatio };
|
|
747
843
|
},
|
|
748
844
|
};
|
|
845
|
+
export const compoundV2LeverageManagementSubDataWithoutSubProxy = {
|
|
846
|
+
encode(targetRatio, ratioState) {
|
|
847
|
+
const encodedTargetRatio = AbiCoder.encodeParameter('uint256', ratioPercentageToWei(targetRatio));
|
|
848
|
+
const encodedRatioState = AbiCoder.encodeParameter('uint8', ratioState);
|
|
849
|
+
const isBoost = ratioState === RatioState.OVER;
|
|
850
|
+
if (isBoost) {
|
|
851
|
+
const enableAsCollEncoded = AbiCoder.encodeParameter('uint256', 1);
|
|
852
|
+
return [encodedTargetRatio, encodedRatioState, enableAsCollEncoded];
|
|
853
|
+
}
|
|
854
|
+
return [encodedTargetRatio, encodedRatioState];
|
|
855
|
+
},
|
|
856
|
+
decode(subData) {
|
|
857
|
+
const targetRatio = weiToRatioPercentage(AbiCoder.decodeParameter('uint256', subData[0]));
|
|
858
|
+
const ratioState = AbiCoder.decodeParameter('uint8', subData[1]);
|
|
859
|
+
return { targetRatio, ratioState };
|
|
860
|
+
},
|
|
861
|
+
};
|
|
749
862
|
/**
|
|
750
863
|
______ ______ .___ ___. .______ ____ ____ ____
|
|
751
864
|
/ | / __ \ | \/ | | _ \ \ \ / / |___ \
|
|
@@ -754,46 +867,42 @@ export const compoundV2LeverageManagementSubData = {
|
|
|
754
867
|
| `----.| `--' | | | | | | | \ / ___) |
|
|
755
868
|
\______| \______/ |__| |__| | _| \__/ |____/
|
|
756
869
|
*/
|
|
757
|
-
|
|
758
|
-
|
|
759
|
-
|
|
760
|
-
|
|
761
|
-
|
|
762
|
-
|
|
763
|
-
|
|
764
|
-
|
|
765
|
-
|
|
766
|
-
// @ts-ignore // TODO
|
|
767
|
-
boostEnabled, isEOA,
|
|
768
|
-
];
|
|
870
|
+
// ! Any change here will PROBABLY require a change in compoundV3LiquidationProtectionSubDataWithoutSubProxy as well, since it is copy paste
|
|
871
|
+
// ! Double check before changing
|
|
872
|
+
export const compoundV3LeverageManagementSubDataWithoutSubProxy = {
|
|
873
|
+
encode(market, baseToken, targetRatio, ratioState) {
|
|
874
|
+
const encodedMarket = AbiCoder.encodeParameter('address', market);
|
|
875
|
+
const encodedBaseToken = AbiCoder.encodeParameter('address', baseToken);
|
|
876
|
+
const encodedRatioState = AbiCoder.encodeParameter('uint8', ratioState);
|
|
877
|
+
const encodedTargetRatio = AbiCoder.encodeParameter('uint256', ratioPercentageToWei(targetRatio));
|
|
878
|
+
return [encodedMarket, encodedBaseToken, encodedRatioState, encodedTargetRatio];
|
|
769
879
|
},
|
|
770
880
|
decode(subData) {
|
|
771
|
-
const
|
|
772
|
-
const
|
|
773
|
-
|
|
881
|
+
const market = AbiCoder.decodeParameter('address', subData[0]);
|
|
882
|
+
const baseToken = AbiCoder.decodeParameter('address', subData[1]);
|
|
883
|
+
const ratioState = AbiCoder.decodeParameter('uint8', subData[2]);
|
|
884
|
+
const targetRatio = weiToRatioPercentage(AbiCoder.decodeParameter('uint256', subData[3]));
|
|
885
|
+
return {
|
|
886
|
+
market, baseToken, targetRatio, ratioState,
|
|
887
|
+
};
|
|
774
888
|
},
|
|
775
889
|
};
|
|
776
|
-
export const
|
|
777
|
-
encode(market, baseToken,
|
|
778
|
-
|
|
779
|
-
|
|
780
|
-
|
|
781
|
-
|
|
782
|
-
|
|
783
|
-
subInput = subInput.concat(new Dec(triggerBoostRatio).mul(1e16).toHex().slice(2)
|
|
784
|
-
.padStart(32, '0'));
|
|
785
|
-
subInput = subInput.concat(new Dec(targetBoostRatio).mul(1e16).toHex().slice(2)
|
|
786
|
-
.padStart(32, '0'));
|
|
787
|
-
subInput = subInput.concat(new Dec(targetRepayRatio).mul(1e16).toHex().slice(2)
|
|
788
|
-
.padStart(32, '0'));
|
|
789
|
-
subInput = subInput.concat(boostEnabled ? '01' : '00');
|
|
790
|
-
subInput = subInput.concat(isEOA ? '01' : '00');
|
|
791
|
-
return subInput;
|
|
890
|
+
export const compoundV3LiquidationProtectionSubDataWithoutSubProxy = {
|
|
891
|
+
encode(market, baseToken, targetRatio, ratioState) {
|
|
892
|
+
const encodedMarket = AbiCoder.encodeParameter('address', market);
|
|
893
|
+
const encodedBaseToken = AbiCoder.encodeParameter('address', baseToken);
|
|
894
|
+
const encodedRatioState = AbiCoder.encodeParameter('uint8', ratioState);
|
|
895
|
+
const encodedTargetRatio = AbiCoder.encodeParameter('uint256', ratioPercentageToWei(targetRatio));
|
|
896
|
+
return [encodedMarket, encodedBaseToken, encodedRatioState, encodedTargetRatio];
|
|
792
897
|
},
|
|
793
898
|
decode(subData) {
|
|
794
|
-
const
|
|
795
|
-
const
|
|
796
|
-
|
|
899
|
+
const market = AbiCoder.decodeParameter('address', subData[0]);
|
|
900
|
+
const baseToken = AbiCoder.decodeParameter('address', subData[1]);
|
|
901
|
+
const ratioState = AbiCoder.decodeParameter('uint8', subData[2]);
|
|
902
|
+
const targetRatio = weiToRatioPercentage(AbiCoder.decodeParameter('uint256', subData[3]));
|
|
903
|
+
return {
|
|
904
|
+
market, baseToken, targetRatio, ratioState,
|
|
905
|
+
};
|
|
797
906
|
},
|
|
798
907
|
};
|
|
799
908
|
export const compoundV3LeverageManagementOnPriceSubData = {
|
|
@@ -899,6 +1008,21 @@ export const exchangeLimitOrderSubData = {
|
|
|
899
1008
|
return { fromToken, toToken, amount };
|
|
900
1009
|
},
|
|
901
1010
|
};
|
|
1011
|
+
export const exchangeLimitOrderSubDataWithoutSubProxy = {
|
|
1012
|
+
encode(fromToken, toToken, amount) {
|
|
1013
|
+
return [
|
|
1014
|
+
AbiCoder.encodeParameter('address', fromToken),
|
|
1015
|
+
AbiCoder.encodeParameter('address', toToken),
|
|
1016
|
+
AbiCoder.encodeParameter('uint256', amount),
|
|
1017
|
+
];
|
|
1018
|
+
},
|
|
1019
|
+
decode: (subData, chainId) => {
|
|
1020
|
+
const fromToken = AbiCoder.decodeParameter('address', subData[0]).toString();
|
|
1021
|
+
const toToken = AbiCoder.decodeParameter('address', subData[1]).toString();
|
|
1022
|
+
const amount = assetAmountInEth(AbiCoder.decodeParameter('uint256', subData[2]).toString(), getAssetInfoByAddress(fromToken, chainId).symbol);
|
|
1023
|
+
return { fromToken, toToken, amount };
|
|
1024
|
+
},
|
|
1025
|
+
};
|
|
902
1026
|
/**
|
|
903
1027
|
_______..______ ___ .______ __ ___
|
|
904
1028
|
/ || _ \ / \ | _ \ | |/ /
|
|
@@ -914,6 +1038,8 @@ export const sparkLeverageManagementSubData = {
|
|
|
914
1038
|
return { targetRatio };
|
|
915
1039
|
},
|
|
916
1040
|
};
|
|
1041
|
+
// ! Any change here will PROBABLY require a change in sparkLiquidationProtectionSubData as well, since it is copy paste
|
|
1042
|
+
// ! Double check before changing
|
|
917
1043
|
export const sparkLeverageManagementSubDataWithoutSubProxy = {
|
|
918
1044
|
encode(targetRatio, ratioState) {
|
|
919
1045
|
const encodedTargetRatio = AbiCoder.encodeParameter('uint256', ratioPercentageToWei(targetRatio));
|
|
@@ -928,6 +1054,20 @@ export const sparkLeverageManagementSubDataWithoutSubProxy = {
|
|
|
928
1054
|
return { targetRatio, ratioState };
|
|
929
1055
|
},
|
|
930
1056
|
};
|
|
1057
|
+
export const sparkLiquidationProtectionSubData = {
|
|
1058
|
+
encode(targetRatio, ratioState) {
|
|
1059
|
+
const encodedTargetRatio = AbiCoder.encodeParameter('uint256', ratioPercentageToWei(targetRatio));
|
|
1060
|
+
const encodedRatioState = AbiCoder.encodeParameter('uint8', ratioState);
|
|
1061
|
+
const encodedUseDefaultMarket = AbiCoder.encodeParameter('bool', true);
|
|
1062
|
+
const encodedUseOnBehalf = AbiCoder.encodeParameter('bool', false);
|
|
1063
|
+
return [encodedTargetRatio, encodedRatioState, encodedUseDefaultMarket, encodedUseOnBehalf];
|
|
1064
|
+
},
|
|
1065
|
+
decode(subData) {
|
|
1066
|
+
const targetRatio = weiToRatioPercentage(AbiCoder.decodeParameter('uint256', subData[0]));
|
|
1067
|
+
const ratioState = AbiCoder.decodeParameter('uint8', subData[1]);
|
|
1068
|
+
return { targetRatio, ratioState };
|
|
1069
|
+
},
|
|
1070
|
+
};
|
|
931
1071
|
export const sparkCloseGenericSubData = {
|
|
932
1072
|
encode(collAsset, collAssetId, debtAsset, debtAssetId, closeType, marketAddr, user) {
|
|
933
1073
|
const encodedColl = AbiCoder.encodeParameter('address', collAsset);
|
|
@@ -1076,6 +1216,8 @@ export const crvUSDPaybackSubData = {
|
|
|
1076
1216
|
| | | | | `--' | | |\ \----.| | | | | | | `--' |
|
|
1077
1217
|
|__| |__| \______/ | _| `._____|| _| |__| |__| \______/
|
|
1078
1218
|
*/
|
|
1219
|
+
// ! Any change here will PROBABLY require a change in morphoBlueLiquidationProtectionSubData as well, since it is copy paste
|
|
1220
|
+
// ! Double check before changing
|
|
1079
1221
|
export const morphoBlueLeverageManagementSubData = {
|
|
1080
1222
|
encode: (loanToken, collToken, oracle, irm, lltv, ratioState, targetRatio, user, isEOA) => {
|
|
1081
1223
|
const loanTokenEncoded = AbiCoder.encodeParameter('address', loanToken);
|
|
@@ -1109,6 +1251,39 @@ export const morphoBlueLeverageManagementSubData = {
|
|
|
1109
1251
|
};
|
|
1110
1252
|
},
|
|
1111
1253
|
};
|
|
1254
|
+
export const morphoBlueLiquidationProtectionSubData = {
|
|
1255
|
+
encode: (loanToken, collToken, oracle, irm, lltv, ratioState, targetRatio, user, isEOA) => {
|
|
1256
|
+
const loanTokenEncoded = AbiCoder.encodeParameter('address', loanToken);
|
|
1257
|
+
const collTokenEncoded = AbiCoder.encodeParameter('address', collToken);
|
|
1258
|
+
const oracleEncoded = AbiCoder.encodeParameter('address', oracle);
|
|
1259
|
+
const irmEncoded = AbiCoder.encodeParameter('address', irm);
|
|
1260
|
+
const lltvEncoded = AbiCoder.encodeParameter('uint256', lltv);
|
|
1261
|
+
const ratioStateEncoded = AbiCoder.encodeParameter('uint8', ratioState);
|
|
1262
|
+
const targetRatioEncoded = AbiCoder.encodeParameter('uint256', ratioPercentageToWei(targetRatio));
|
|
1263
|
+
const userEncoded = AbiCoder.encodeParameter('address', user);
|
|
1264
|
+
const isEOAEncoded = AbiCoder.encodeParameter('bool', isEOA);
|
|
1265
|
+
return [loanTokenEncoded, collTokenEncoded, oracleEncoded, irmEncoded, lltvEncoded, ratioStateEncoded, targetRatioEncoded, userEncoded, isEOAEncoded];
|
|
1266
|
+
},
|
|
1267
|
+
decode: (subData) => {
|
|
1268
|
+
const loanToken = AbiCoder.decodeParameter('address', subData[0]);
|
|
1269
|
+
const collToken = AbiCoder.decodeParameter('address', subData[1]);
|
|
1270
|
+
const oracle = AbiCoder.decodeParameter('address', subData[2]);
|
|
1271
|
+
const irm = AbiCoder.decodeParameter('address', subData[3]);
|
|
1272
|
+
const lltv = AbiCoder.decodeParameter('uint256', subData[4]);
|
|
1273
|
+
const weiRatio = AbiCoder.decodeParameter('uint256', subData[6]);
|
|
1274
|
+
const user = AbiCoder.decodeParameter('address', subData[7]);
|
|
1275
|
+
const targetRatio = weiToRatioPercentage(weiRatio);
|
|
1276
|
+
return {
|
|
1277
|
+
loanToken,
|
|
1278
|
+
collToken,
|
|
1279
|
+
oracle,
|
|
1280
|
+
irm,
|
|
1281
|
+
lltv,
|
|
1282
|
+
user,
|
|
1283
|
+
targetRatio,
|
|
1284
|
+
};
|
|
1285
|
+
},
|
|
1286
|
+
};
|
|
1112
1287
|
export const morphoBlueLeverageManagementOnPriceSubData = {
|
|
1113
1288
|
encode(loanToken, collToken, oracle, irm, lltv, targetRatio, user) {
|
|
1114
1289
|
const loanTokenEncoded = AbiCoder.encodeParameter('address', loanToken);
|
|
@@ -1178,6 +1353,8 @@ _______ __ __ __ __ _______
|
|
|
1178
1353
|
| | | `----.| `--' | | | | '--' |
|
|
1179
1354
|
|__| |_______| \______/ |__| |_______/
|
|
1180
1355
|
*/
|
|
1356
|
+
// ! Any change here will PROBABLY require a change in fluidLeverageManagementSubData as well, since it is copy paste
|
|
1357
|
+
// ! Double check before changing
|
|
1181
1358
|
export const fluidLeverageManagementSubData = {
|
|
1182
1359
|
encode: (nftId, vault, ratioState, targetRatio) => {
|
|
1183
1360
|
const nftIdEncoded = AbiCoder.encodeParameter('uint256', nftId);
|
|
@@ -1211,3 +1388,35 @@ export const fluidLeverageManagementSubData = {
|
|
|
1211
1388
|
};
|
|
1212
1389
|
},
|
|
1213
1390
|
};
|
|
1391
|
+
export const fluidLiquidationProtectionSubData = {
|
|
1392
|
+
encode: (nftId, vault, ratioState, targetRatio) => {
|
|
1393
|
+
const nftIdEncoded = AbiCoder.encodeParameter('uint256', nftId);
|
|
1394
|
+
const vaultEncoded = AbiCoder.encodeParameter('address', vault);
|
|
1395
|
+
const ratioStateEncoded = AbiCoder.encodeParameter('uint8', ratioState);
|
|
1396
|
+
const targetRatioEncoded = AbiCoder.encodeParameter('uint256', ratioPercentageToWei(targetRatio));
|
|
1397
|
+
const wrapEthEncoded = AbiCoder.encodeParameter('bool', true);
|
|
1398
|
+
const collActionType = CollActionType.WITHDRAW;
|
|
1399
|
+
const debtActionType = DebtActionType.PAYBACK;
|
|
1400
|
+
const collActionTypeEncoded = AbiCoder.encodeParameter('uint8', collActionType);
|
|
1401
|
+
const debtActionTypeEncoded = AbiCoder.encodeParameter('uint8', debtActionType);
|
|
1402
|
+
return [
|
|
1403
|
+
nftIdEncoded,
|
|
1404
|
+
vaultEncoded,
|
|
1405
|
+
ratioStateEncoded,
|
|
1406
|
+
targetRatioEncoded,
|
|
1407
|
+
wrapEthEncoded,
|
|
1408
|
+
collActionTypeEncoded,
|
|
1409
|
+
debtActionTypeEncoded,
|
|
1410
|
+
];
|
|
1411
|
+
},
|
|
1412
|
+
decode: (subData) => {
|
|
1413
|
+
const nftId = AbiCoder.decodeParameter('uint256', subData[0]);
|
|
1414
|
+
const vault = AbiCoder.decodeParameter('address', subData[1]);
|
|
1415
|
+
const ratioState = AbiCoder.decodeParameter('uint8', subData[2]);
|
|
1416
|
+
const weiRatio = AbiCoder.decodeParameter('uint256', subData[3]);
|
|
1417
|
+
const targetRatio = weiToRatioPercentage(weiRatio);
|
|
1418
|
+
return {
|
|
1419
|
+
nftId, vault, ratioState, targetRatio,
|
|
1420
|
+
};
|
|
1421
|
+
},
|
|
1422
|
+
};
|