@defisaver/automation-sdk 3.3.15-liq-prot-3-dev → 3.3.16-dev-13082-morpho-eoa-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 +51 -111
- package/cjs/index.d.ts +2 -2
- package/cjs/index.js +2 -5
- package/cjs/services/strategiesService.js +13 -157
- package/cjs/services/strategySubService.d.ts +21 -18
- package/cjs/services/strategySubService.js +74 -78
- package/cjs/services/strategySubService.test.js +216 -3
- package/cjs/services/subDataService.d.ts +20 -70
- package/cjs/services/subDataService.js +79 -23
- package/cjs/services/subDataService.test.js +302 -17
- package/cjs/services/triggerService.test.js +60 -0
- package/cjs/services/utils.d.ts +1 -2
- package/cjs/services/utils.js +1 -14
- package/cjs/types/enums.d.ts +17 -33
- package/cjs/types/enums.js +14 -30
- package/esm/constants/index.js +51 -111
- package/esm/index.d.ts +2 -2
- package/esm/index.js +2 -5
- package/esm/services/strategiesService.js +13 -157
- package/esm/services/strategySubService.d.ts +21 -18
- package/esm/services/strategySubService.js +73 -78
- package/esm/services/strategySubService.test.js +214 -4
- package/esm/services/subDataService.d.ts +20 -70
- package/esm/services/subDataService.js +77 -21
- package/esm/services/subDataService.test.js +300 -18
- package/esm/services/triggerService.test.js +61 -1
- package/esm/services/utils.d.ts +1 -2
- package/esm/services/utils.js +1 -13
- package/esm/types/enums.d.ts +17 -33
- package/esm/types/enums.js +14 -30
- package/package.json +1 -1
- package/src/constants/index.ts +52 -113
- package/src/index.ts +6 -22
- package/src/services/strategiesService.ts +13 -221
- package/src/services/strategySubService.test.ts +275 -3
- package/src/services/strategySubService.ts +121 -173
- package/src/services/subDataService.test.ts +324 -18
- package/src/services/subDataService.ts +106 -42
- package/src/services/triggerService.test.ts +69 -0
- package/src/services/utils.test.ts +1 -1
- package/src/services/utils.ts +1 -15
- package/src/types/enums.ts +16 -30
|
@@ -6,7 +6,7 @@ import { assetAmountInEth, getAssetInfo, getAssetInfoByAddress } from '@defisave
|
|
|
6
6
|
import { otherAddresses } from '@defisaver/sdk';
|
|
7
7
|
|
|
8
8
|
import type { SubData, EthereumAddress } from '../types';
|
|
9
|
-
import type { CloseStrategyType } from '../types/enums';
|
|
9
|
+
import type { CloseStrategyType, OrderType } from '../types/enums';
|
|
10
10
|
import {
|
|
11
11
|
ChainId, CollActionType, DebtActionType, RatioState,
|
|
12
12
|
} from '../types/enums';
|
|
@@ -24,6 +24,22 @@ import { compareAddresses, ratioPercentageToWei, weiToRatioPercentage } from './
|
|
|
24
24
|
|_______/ |_______|| _| | _| `._____||_______| \______/__/ \__\ |__| |_______||_______/
|
|
25
25
|
*/
|
|
26
26
|
export const morphoAaveV2LeverageManagementSubData = {
|
|
27
|
+
encode(
|
|
28
|
+
triggerRepayRatio: number,
|
|
29
|
+
triggerBoostRatio: number,
|
|
30
|
+
targetBoostRatio: number,
|
|
31
|
+
targetRepayRatio: number,
|
|
32
|
+
boostEnabled: boolean,
|
|
33
|
+
): SubData {
|
|
34
|
+
return [
|
|
35
|
+
ratioPercentageToWei(triggerRepayRatio),
|
|
36
|
+
ratioPercentageToWei(triggerBoostRatio),
|
|
37
|
+
ratioPercentageToWei(targetBoostRatio),
|
|
38
|
+
ratioPercentageToWei(targetRepayRatio),
|
|
39
|
+
// @ts-ignore
|
|
40
|
+
boostEnabled,
|
|
41
|
+
];
|
|
42
|
+
},
|
|
27
43
|
decode(subData: SubData): { targetRatio: number } {
|
|
28
44
|
const ratioWei = AbiCoder.decodeParameter('uint128', subData[1]) as any as string;
|
|
29
45
|
const targetRatio = weiToRatioPercentage(ratioWei);
|
|
@@ -32,6 +48,10 @@ export const morphoAaveV2LeverageManagementSubData = {
|
|
|
32
48
|
},
|
|
33
49
|
};
|
|
34
50
|
export const cBondsRebondSubData = {
|
|
51
|
+
encode(bondId: number | string): SubData {
|
|
52
|
+
const bondIdEncoded = AbiCoder.encodeParameter('uint256', bondId);
|
|
53
|
+
return [bondIdEncoded];
|
|
54
|
+
},
|
|
35
55
|
decode(subData: SubData): { bondId: string } {
|
|
36
56
|
const bondId = AbiCoder.decodeParameter('uint256', subData[1])!.toString();
|
|
37
57
|
return { bondId };
|
|
@@ -136,7 +156,7 @@ export const makerCloseSubData = {
|
|
|
136
156
|
};
|
|
137
157
|
},
|
|
138
158
|
};
|
|
139
|
-
export const
|
|
159
|
+
export const makerLeverageManagementSubData = {
|
|
140
160
|
decode: (subData:SubData) => {
|
|
141
161
|
const vaultId = +AbiCoder.decodeParameter('uint256', subData[0])!.toString();
|
|
142
162
|
const weiRatio = AbiCoder.decodeParameter('uint256', subData[1]) as any as string;
|
|
@@ -144,8 +164,7 @@ export const legacyMakerLeverageManagementSubData = {
|
|
|
144
164
|
return { vaultId, targetRatio };
|
|
145
165
|
},
|
|
146
166
|
};
|
|
147
|
-
|
|
148
|
-
export const makerLeverageManagementSubData = {
|
|
167
|
+
export const makerLeverageManagementWithoutSubProxy = {
|
|
149
168
|
encode(
|
|
150
169
|
vaultId: number,
|
|
151
170
|
targetRatio: number,
|
|
@@ -165,9 +184,6 @@ export const makerLeverageManagementSubData = {
|
|
|
165
184
|
},
|
|
166
185
|
};
|
|
167
186
|
|
|
168
|
-
export const makerLiquidationProtectionSubData = makerLeverageManagementSubData;
|
|
169
|
-
|
|
170
|
-
|
|
171
187
|
/**
|
|
172
188
|
__ __ ______ __ __ __ .___________.____ ____ ____ ____ __
|
|
173
189
|
| | | | / __ \ | | | | | | | |\ \ / / \ \ / / /_ |
|
|
@@ -184,14 +200,14 @@ export const liquityRepayFromSavingsSubData = {
|
|
|
184
200
|
return { targetRatio };
|
|
185
201
|
},
|
|
186
202
|
};
|
|
187
|
-
export const
|
|
203
|
+
export const liquityLeverageManagementSubData = {
|
|
188
204
|
decode: (subData:SubData) => {
|
|
189
205
|
const weiRatio = AbiCoder.decodeParameter('uint256', subData[1]) as any as string;
|
|
190
206
|
const targetRatio = weiToRatioPercentage(weiRatio);
|
|
191
207
|
return { targetRatio };
|
|
192
208
|
},
|
|
193
209
|
};
|
|
194
|
-
export const
|
|
210
|
+
export const liquityLeverageManagementSubDataWithoutSubProxy = {
|
|
195
211
|
encode(
|
|
196
212
|
targetRatio: number,
|
|
197
213
|
ratioState: RatioState,
|
|
@@ -494,7 +510,23 @@ export const liquityV2PaybackSubData = {
|
|
|
494
510
|
/ _____ \ / _____ \ \ / | |____ \ / / /_
|
|
495
511
|
/__/ \__\ /__/ \__\ \__/ |_______| \__/ |____|
|
|
496
512
|
*/
|
|
497
|
-
export const
|
|
513
|
+
export const aaveV2LeverageManagementSubData = {
|
|
514
|
+
encode(
|
|
515
|
+
triggerRepayRatio: number,
|
|
516
|
+
triggerBoostRatio: number,
|
|
517
|
+
targetBoostRatio: number,
|
|
518
|
+
targetRepayRatio: number,
|
|
519
|
+
boostEnabled: boolean,
|
|
520
|
+
): SubData {
|
|
521
|
+
return [
|
|
522
|
+
new Dec(triggerRepayRatio).mul(1e16).toString(),
|
|
523
|
+
new Dec(triggerBoostRatio).mul(1e16).toString(),
|
|
524
|
+
new Dec(targetBoostRatio).mul(1e16).toString(),
|
|
525
|
+
new Dec(targetRepayRatio).mul(1e16).toString(),
|
|
526
|
+
// @ts-ignore // TODO
|
|
527
|
+
boostEnabled,
|
|
528
|
+
];
|
|
529
|
+
},
|
|
498
530
|
decode(subData: SubData): { targetRatio: number } {
|
|
499
531
|
const ratioWei = AbiCoder.decodeParameter('uint256', subData[1]) as any as string;
|
|
500
532
|
const targetRatio = weiToRatioPercentage(ratioWei);
|
|
@@ -502,7 +534,7 @@ export const legacyAaveV2LeverageManagementSubData = {
|
|
|
502
534
|
return { targetRatio };
|
|
503
535
|
},
|
|
504
536
|
};
|
|
505
|
-
export const
|
|
537
|
+
export const aaveV2LeverageManagementSubDataWithoutSubProxy = {
|
|
506
538
|
encode(
|
|
507
539
|
market: EthereumAddress,
|
|
508
540
|
targetRatio: number,
|
|
@@ -538,7 +570,7 @@ export const aaveV2LeverageManagementSubData = {
|
|
|
538
570
|
/ _____ \ / _____ \ \ / | |____ \ / ___) |
|
|
539
571
|
/__/ \__\ /__/ \__\ \__/ |_______| \__/ |____/
|
|
540
572
|
*/
|
|
541
|
-
export const
|
|
573
|
+
export const aaveV3LeverageManagementSubData = {
|
|
542
574
|
decode(subData: SubData): { targetRatio: number } {
|
|
543
575
|
const ratioWei = AbiCoder.decodeParameter('uint256', subData[0]) as any as string;
|
|
544
576
|
const targetRatio = weiToRatioPercentage(ratioWei);
|
|
@@ -546,8 +578,7 @@ export const legacyAaveV3LeverageManagementSubData = {
|
|
|
546
578
|
return { targetRatio };
|
|
547
579
|
},
|
|
548
580
|
};
|
|
549
|
-
|
|
550
|
-
export const aaveV3LeverageManagementSubData = {
|
|
581
|
+
export const aaveV3LeverageManagementSubDataWithoutSubProxy = {
|
|
551
582
|
encode(
|
|
552
583
|
targetRatio: number,
|
|
553
584
|
ratioState: RatioState,
|
|
@@ -574,9 +605,6 @@ export const aaveV3LeverageManagementSubData = {
|
|
|
574
605
|
return { targetRatio, ratioState };
|
|
575
606
|
},
|
|
576
607
|
};
|
|
577
|
-
|
|
578
|
-
export const aaveV3LiquidationProtectionSubData = aaveV3LeverageManagementSubData;
|
|
579
|
-
|
|
580
608
|
export const aaveV3LeverageManagementOnPriceGeneric = {
|
|
581
609
|
encode(
|
|
582
610
|
collAsset: EthereumAddress,
|
|
@@ -823,7 +851,6 @@ export const aaveV3LeverageManagementOnPriceSubData = {
|
|
|
823
851
|
/ _____ \ / _____ \ \ / | |____ \ / | |
|
|
824
852
|
/__/ \__\ /__/ \__\ \__/ |_______| \__/ |_|
|
|
825
853
|
*/
|
|
826
|
-
|
|
827
854
|
export const aaveV4LeverageManagementSubData = {
|
|
828
855
|
encode: (
|
|
829
856
|
spoke: EthereumAddress,
|
|
@@ -855,9 +882,6 @@ export const aaveV4LeverageManagementSubData = {
|
|
|
855
882
|
};
|
|
856
883
|
},
|
|
857
884
|
};
|
|
858
|
-
|
|
859
|
-
export const aaveV4LiquidationProtectionSubData = aaveV4LeverageManagementSubData;
|
|
860
|
-
|
|
861
885
|
export const aaveV4LeverageManagementOnPriceSubData = {
|
|
862
886
|
encode: (
|
|
863
887
|
spoke: EthereumAddress,
|
|
@@ -1000,7 +1024,23 @@ export const aaveV4CollateralSwitchSubData = {
|
|
|
1000
1024
|
| `----.| `--' | | | | | | | \ / / /_
|
|
1001
1025
|
\______| \______/ |__| |__| | _| \__/ |____|
|
|
1002
1026
|
*/
|
|
1003
|
-
export const
|
|
1027
|
+
export const compoundV2LeverageManagementSubData = {
|
|
1028
|
+
encode(
|
|
1029
|
+
triggerRepayRatio: number,
|
|
1030
|
+
triggerBoostRatio: number,
|
|
1031
|
+
targetBoostRatio: number,
|
|
1032
|
+
targetRepayRatio: number,
|
|
1033
|
+
boostEnabled: boolean,
|
|
1034
|
+
): SubData {
|
|
1035
|
+
return [
|
|
1036
|
+
new Dec(triggerRepayRatio).mul(1e16).toString(),
|
|
1037
|
+
new Dec(triggerBoostRatio).mul(1e16).toString(),
|
|
1038
|
+
new Dec(targetBoostRatio).mul(1e16).toString(),
|
|
1039
|
+
new Dec(targetRepayRatio).mul(1e16).toString(),
|
|
1040
|
+
// @ts-ignore // TODO
|
|
1041
|
+
boostEnabled,
|
|
1042
|
+
];
|
|
1043
|
+
},
|
|
1004
1044
|
decode(subData: SubData): { targetRatio: number } {
|
|
1005
1045
|
const weiRatio = AbiCoder.decodeParameter('uint256', subData[0]) as any as string;
|
|
1006
1046
|
const targetRatio = weiToRatioPercentage(weiRatio);
|
|
@@ -1008,7 +1048,7 @@ export const legacyCompoundV2LeverageManagementSubData = {
|
|
|
1008
1048
|
return { targetRatio };
|
|
1009
1049
|
},
|
|
1010
1050
|
};
|
|
1011
|
-
export const
|
|
1051
|
+
export const compoundV2LeverageManagementSubDataWithoutSubProxy = {
|
|
1012
1052
|
encode(
|
|
1013
1053
|
targetRatio: number,
|
|
1014
1054
|
ratioState: RatioState,
|
|
@@ -1041,8 +1081,36 @@ export const compoundV2LeverageManagementSubData = {
|
|
|
1041
1081
|
| `----.| `--' | | | | | | | \ / ___) |
|
|
1042
1082
|
\______| \______/ |__| |__| | _| \__/ |____/
|
|
1043
1083
|
*/
|
|
1044
|
-
|
|
1045
1084
|
export const compoundV3LeverageManagementSubData = {
|
|
1085
|
+
encode(
|
|
1086
|
+
market: EthereumAddress,
|
|
1087
|
+
baseToken: EthereumAddress,
|
|
1088
|
+
triggerRepayRatio: number,
|
|
1089
|
+
triggerBoostRatio: number,
|
|
1090
|
+
targetBoostRatio: number,
|
|
1091
|
+
targetRepayRatio: number,
|
|
1092
|
+
boostEnabled: boolean,
|
|
1093
|
+
isEOA: boolean,
|
|
1094
|
+
): SubData {
|
|
1095
|
+
return [
|
|
1096
|
+
market,
|
|
1097
|
+
baseToken,
|
|
1098
|
+
new Dec(triggerRepayRatio).mul(1e16).toString(),
|
|
1099
|
+
new Dec(triggerBoostRatio).mul(1e16).toString(),
|
|
1100
|
+
new Dec(targetBoostRatio).mul(1e16).toString(),
|
|
1101
|
+
new Dec(targetRepayRatio).mul(1e16).toString(),
|
|
1102
|
+
// @ts-ignore // TODO
|
|
1103
|
+
boostEnabled, isEOA,
|
|
1104
|
+
];
|
|
1105
|
+
},
|
|
1106
|
+
decode(subData: SubData): { targetRatio: number } {
|
|
1107
|
+
const weiRatio = AbiCoder.decodeParameter('uint256', subData[3]) as any as string;
|
|
1108
|
+
const targetRatio = weiToRatioPercentage(weiRatio);
|
|
1109
|
+
|
|
1110
|
+
return { targetRatio };
|
|
1111
|
+
},
|
|
1112
|
+
};
|
|
1113
|
+
export const compoundV3LeverageManagementSubDataWithoutSubProxy = {
|
|
1046
1114
|
encode(
|
|
1047
1115
|
market: EthereumAddress,
|
|
1048
1116
|
baseToken: EthereumAddress,
|
|
@@ -1066,9 +1134,6 @@ export const compoundV3LeverageManagementSubData = {
|
|
|
1066
1134
|
};
|
|
1067
1135
|
},
|
|
1068
1136
|
};
|
|
1069
|
-
|
|
1070
|
-
export const compoundV3LiquidationProtectionSubData = compoundV3LeverageManagementSubData;
|
|
1071
|
-
|
|
1072
1137
|
export const compoundV3LeverageManagementOnPriceSubData = {
|
|
1073
1138
|
encode(
|
|
1074
1139
|
market: EthereumAddress,
|
|
@@ -1186,7 +1251,17 @@ export const exchangeDcaSubData = {
|
|
|
1186
1251
|
};
|
|
1187
1252
|
},
|
|
1188
1253
|
};
|
|
1189
|
-
export const
|
|
1254
|
+
export const exchangeLimitOrderSubData = {
|
|
1255
|
+
encode(fromToken: EthereumAddress, toToken: EthereumAddress, amount: string, targetPrice: string, goodUntil: string | number, orderType: OrderType) : SubData {
|
|
1256
|
+
return [
|
|
1257
|
+
fromToken,
|
|
1258
|
+
toToken,
|
|
1259
|
+
amount,
|
|
1260
|
+
targetPrice,
|
|
1261
|
+
new Dec(goodUntil).toString(),
|
|
1262
|
+
new Dec(orderType).toString(),
|
|
1263
|
+
];
|
|
1264
|
+
},
|
|
1190
1265
|
decode: (subData: SubData, chainId: ChainId) => {
|
|
1191
1266
|
const fromToken = AbiCoder.decodeParameter('address', subData[0])!.toString();
|
|
1192
1267
|
const toToken = AbiCoder.decodeParameter('address', subData[1])!.toString();
|
|
@@ -1194,7 +1269,7 @@ export const legacyExchangeLimitOrderSubData = {
|
|
|
1194
1269
|
return { fromToken, toToken, amount };
|
|
1195
1270
|
},
|
|
1196
1271
|
};
|
|
1197
|
-
export const
|
|
1272
|
+
export const exchangeLimitOrderSubDataWithoutSubProxy = {
|
|
1198
1273
|
encode(fromToken: EthereumAddress, toToken: EthereumAddress, amount: string): SubData {
|
|
1199
1274
|
return [
|
|
1200
1275
|
AbiCoder.encodeParameter('address', fromToken),
|
|
@@ -1218,7 +1293,7 @@ export const exchangeLimitOrderSubData = {
|
|
|
1218
1293
|
.----) | | | / _____ \ | |\ \----.| . \
|
|
1219
1294
|
|_______/ | _| /__/ \__\ | _| `._____||__|\__\
|
|
1220
1295
|
*/
|
|
1221
|
-
export const
|
|
1296
|
+
export const sparkLeverageManagementSubData = {
|
|
1222
1297
|
decode(subData: SubData): { targetRatio: number } {
|
|
1223
1298
|
const ratioWei = AbiCoder.decodeParameter('uint256', subData[0]) as any as string;
|
|
1224
1299
|
const targetRatio = weiToRatioPercentage(ratioWei);
|
|
@@ -1226,8 +1301,7 @@ export const legacySparkLeverageManagementSubData = {
|
|
|
1226
1301
|
return { targetRatio };
|
|
1227
1302
|
},
|
|
1228
1303
|
};
|
|
1229
|
-
|
|
1230
|
-
export const sparkLeverageManagementSubData = {
|
|
1304
|
+
export const sparkLeverageManagementSubDataWithoutSubProxy = {
|
|
1231
1305
|
encode(
|
|
1232
1306
|
targetRatio: number,
|
|
1233
1307
|
ratioState: RatioState,
|
|
@@ -1246,10 +1320,6 @@ export const sparkLeverageManagementSubData = {
|
|
|
1246
1320
|
return { targetRatio, ratioState };
|
|
1247
1321
|
},
|
|
1248
1322
|
};
|
|
1249
|
-
|
|
1250
|
-
export const sparkLiquidationProtectionSubData = sparkLeverageManagementSubData;
|
|
1251
|
-
|
|
1252
|
-
|
|
1253
1323
|
export const sparkCloseGenericSubData = {
|
|
1254
1324
|
encode(
|
|
1255
1325
|
collAsset: EthereumAddress,
|
|
@@ -1464,7 +1534,6 @@ export const crvUSDPaybackSubData = {
|
|
|
1464
1534
|
| | | | | `--' | | |\ \----.| | | | | | | `--' |
|
|
1465
1535
|
|__| |__| \______/ | _| `._____|| _| |__| |__| \______/
|
|
1466
1536
|
*/
|
|
1467
|
-
|
|
1468
1537
|
export const morphoBlueLeverageManagementSubData = {
|
|
1469
1538
|
encode: (
|
|
1470
1539
|
loanToken: EthereumAddress,
|
|
@@ -1509,9 +1578,6 @@ export const morphoBlueLeverageManagementSubData = {
|
|
|
1509
1578
|
};
|
|
1510
1579
|
},
|
|
1511
1580
|
};
|
|
1512
|
-
|
|
1513
|
-
export const morphoBlueLiquidationProtectionSubData = morphoBlueLeverageManagementSubData;
|
|
1514
|
-
|
|
1515
1581
|
export const morphoBlueLeverageManagementOnPriceSubData = {
|
|
1516
1582
|
encode(
|
|
1517
1583
|
loanToken: EthereumAddress,
|
|
@@ -1642,5 +1708,3 @@ export const fluidLeverageManagementSubData = {
|
|
|
1642
1708
|
};
|
|
1643
1709
|
},
|
|
1644
1710
|
};
|
|
1645
|
-
|
|
1646
|
-
export const fluidLiquidationProtectionSubData = fluidLeverageManagementSubData;
|
|
@@ -32,6 +32,7 @@ import {
|
|
|
32
32
|
compoundV3PriceRangeTrigger,
|
|
33
33
|
aaveV3QuotePriceRangeTrigger,
|
|
34
34
|
morphoBluePriceRangeTrigger,
|
|
35
|
+
morphoBluePriceTrigger,
|
|
35
36
|
sparkQuotePriceTrigger,
|
|
36
37
|
aaveV4RatioTrigger,
|
|
37
38
|
aaveV4QuotePriceTrigger,
|
|
@@ -1287,6 +1288,74 @@ describe('Feature: triggerService.ts', () => {
|
|
|
1287
1288
|
});
|
|
1288
1289
|
});
|
|
1289
1290
|
});
|
|
1291
|
+
|
|
1292
|
+
describe('When testing triggerService.morphoBluePriceTrigger', () => {
|
|
1293
|
+
describe('encode()', () => {
|
|
1294
|
+
const examples: Array<[[string], [oracle: EthereumAddress, collateralToken: EthereumAddress, loanToken: EthereumAddress, price: number, priceState: RatioState]]> = [
|
|
1295
|
+
[
|
|
1296
|
+
['0x000000000000000000000000870ac11d48b15db9a138cf899d20f13f79ba00bc0000000000000000000000007f39c581f595b53c5cb19bd0b3f8da6c935e2ca0000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc20000000000000000000000000000000000000000000000000000003a352944000000000000000000000000000000000000000000000000000000000000000001'],
|
|
1297
|
+
[
|
|
1298
|
+
web3Utils.toChecksumAddress('0x870aC11D48B15DB9a138Cf899d20F13F79Ba00BC'),
|
|
1299
|
+
web3Utils.toChecksumAddress('0x7f39C581F595B53c5cb19bD0b3f8dA6c935E2Ca0'),
|
|
1300
|
+
web3Utils.toChecksumAddress('0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2'),
|
|
1301
|
+
2500,
|
|
1302
|
+
RatioState.UNDER,
|
|
1303
|
+
],
|
|
1304
|
+
],
|
|
1305
|
+
[
|
|
1306
|
+
['0x000000000000000000000000870ac11d48b15db9a138cf899d20f13f79ba00bc0000000000000000000000007f39c581f595b53c5cb19bd0b3f8da6c935e2ca0000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc20000000000000000000000000000000000000000000000000000005d21dba0000000000000000000000000000000000000000000000000000000000000000000'],
|
|
1307
|
+
[
|
|
1308
|
+
web3Utils.toChecksumAddress('0x870aC11D48B15DB9a138Cf899d20F13F79Ba00BC'),
|
|
1309
|
+
web3Utils.toChecksumAddress('0x7f39C581F595B53c5cb19bD0b3f8dA6c935E2Ca0'),
|
|
1310
|
+
web3Utils.toChecksumAddress('0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2'),
|
|
1311
|
+
4000,
|
|
1312
|
+
RatioState.OVER,
|
|
1313
|
+
],
|
|
1314
|
+
],
|
|
1315
|
+
];
|
|
1316
|
+
|
|
1317
|
+
examples.forEach(([expected, actual]) => {
|
|
1318
|
+
it(`Given ${actual} should return expected value: ${expected}`, () => {
|
|
1319
|
+
expect(morphoBluePriceTrigger.encode(...actual)).to.eql(expected);
|
|
1320
|
+
});
|
|
1321
|
+
});
|
|
1322
|
+
});
|
|
1323
|
+
|
|
1324
|
+
describe('decode()', () => {
|
|
1325
|
+
const examples: Array<[
|
|
1326
|
+
{ oracle: EthereumAddress, collateralToken: EthereumAddress, loanToken: EthereumAddress, price: string, priceState: RatioState },
|
|
1327
|
+
TriggerData,
|
|
1328
|
+
]> = [
|
|
1329
|
+
[
|
|
1330
|
+
{
|
|
1331
|
+
oracle: web3Utils.toChecksumAddress('0x870aC11D48B15DB9a138Cf899d20F13F79Ba00BC'),
|
|
1332
|
+
collateralToken: web3Utils.toChecksumAddress('0x7f39C581F595B53c5cb19bD0b3f8dA6c935E2Ca0'),
|
|
1333
|
+
loanToken: web3Utils.toChecksumAddress('0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2'),
|
|
1334
|
+
price: '2500',
|
|
1335
|
+
priceState: RatioState.UNDER,
|
|
1336
|
+
},
|
|
1337
|
+
['0x000000000000000000000000870ac11d48b15db9a138cf899d20f13f79ba00bc0000000000000000000000007f39c581f595b53c5cb19bd0b3f8da6c935e2ca0000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc20000000000000000000000000000000000000000000000000000003a352944000000000000000000000000000000000000000000000000000000000000000001'],
|
|
1338
|
+
],
|
|
1339
|
+
[
|
|
1340
|
+
{
|
|
1341
|
+
oracle: web3Utils.toChecksumAddress('0x870aC11D48B15DB9a138Cf899d20F13F79Ba00BC'),
|
|
1342
|
+
collateralToken: web3Utils.toChecksumAddress('0x7f39C581F595B53c5cb19bD0b3f8dA6c935E2Ca0'),
|
|
1343
|
+
loanToken: web3Utils.toChecksumAddress('0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2'),
|
|
1344
|
+
price: '4000',
|
|
1345
|
+
priceState: RatioState.OVER,
|
|
1346
|
+
},
|
|
1347
|
+
['0x000000000000000000000000870ac11d48b15db9a138cf899d20f13f79ba00bc0000000000000000000000007f39c581f595b53c5cb19bd0b3f8da6c935e2ca0000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc20000000000000000000000000000000000000000000000000000005d21dba0000000000000000000000000000000000000000000000000000000000000000000'],
|
|
1348
|
+
],
|
|
1349
|
+
];
|
|
1350
|
+
|
|
1351
|
+
examples.forEach(([expected, actual]) => {
|
|
1352
|
+
it(`Given ${actual} should return expected value: ${JSON.stringify(expected)}`, () => {
|
|
1353
|
+
expect(morphoBluePriceTrigger.decode(actual)).to.eql(expected);
|
|
1354
|
+
});
|
|
1355
|
+
});
|
|
1356
|
+
});
|
|
1357
|
+
});
|
|
1358
|
+
|
|
1290
1359
|
describe('When testing triggerService.aaveV4RatioTrigger', () => {
|
|
1291
1360
|
describe('encode()', () => {
|
|
1292
1361
|
const examples: Array<[[string], [owner: EthereumAddress, spoke: EthereumAddress, ratioPercentage: number, ratioState: RatioState]]> = [
|
|
@@ -2,7 +2,7 @@ import { expect } from 'chai';
|
|
|
2
2
|
import { getAssetInfo } from '@defisaver/tokens';
|
|
3
3
|
|
|
4
4
|
import type { EthereumAddress } from '../types';
|
|
5
|
-
import {
|
|
5
|
+
import { ChainId, ProtocolIdentifiers, RatioState } from '../types/enums';
|
|
6
6
|
|
|
7
7
|
import '../configuration';
|
|
8
8
|
import {
|
package/src/services/utils.ts
CHANGED
|
@@ -5,7 +5,6 @@ import { getAssetInfo, getAssetInfoByAddress } from '@defisaver/tokens';
|
|
|
5
5
|
|
|
6
6
|
import type { EthereumAddress } from '../types';
|
|
7
7
|
import {
|
|
8
|
-
Bundles,
|
|
9
8
|
ChainId, CloseStrategyType, CloseToAssetType, RatioState,
|
|
10
9
|
} from '../types/enums';
|
|
11
10
|
|
|
@@ -172,17 +171,4 @@ export function getStopLossAndTakeProfitTypeByCloseStrategyType(
|
|
|
172
171
|
default:
|
|
173
172
|
throw new Error('CloseStrategyType not supported');
|
|
174
173
|
}
|
|
175
|
-
}
|
|
176
|
-
|
|
177
|
-
export function getBundleIdsByNetwork(network: ChainId) {
|
|
178
|
-
switch (Number(network)) {
|
|
179
|
-
case ChainId.Ethereum:
|
|
180
|
-
return Bundles.MainnetIds;
|
|
181
|
-
case ChainId.Arbitrum:
|
|
182
|
-
return Bundles.ArbitrumIds;
|
|
183
|
-
case ChainId.Base:
|
|
184
|
-
return Bundles.BaseIds;
|
|
185
|
-
default:
|
|
186
|
-
throw new Error(`Unsupported network ${network}`);
|
|
187
|
-
}
|
|
188
|
-
}
|
|
174
|
+
}
|
package/src/types/enums.ts
CHANGED
|
@@ -153,8 +153,6 @@ export namespace Strategies {
|
|
|
153
153
|
EoaRepayOnPrice = 'eoa-repay-on-price',
|
|
154
154
|
CollateralSwitch = 'collateral-switch',
|
|
155
155
|
EoaCollateralSwitch = 'eoa-collateral-switch',
|
|
156
|
-
LiquidationProtection = 'liquidation-protection',
|
|
157
|
-
EoaLiquidationProtection = 'liquidation-protection-eoa',
|
|
158
156
|
}
|
|
159
157
|
export enum IdOverrides {
|
|
160
158
|
TakeProfit = 'take-profit',
|
|
@@ -166,8 +164,6 @@ export namespace Strategies {
|
|
|
166
164
|
EoaLeverageManagement = 'leverage-management-eoa',
|
|
167
165
|
LeverageManagementOnPrice = 'leverage-management-on-price',
|
|
168
166
|
EoaLeverageManagementOnPrice = 'leverage-management-on-price-eoa',
|
|
169
|
-
LiquidationProtection = 'liquidation-protection',
|
|
170
|
-
EoaLiquidationProtection = 'liquidation-protection-eoa',
|
|
171
167
|
}
|
|
172
168
|
}
|
|
173
169
|
|
|
@@ -244,17 +240,10 @@ export namespace Bundles {
|
|
|
244
240
|
AAVE_V4_EOA_REPAY_ON_PRICE = 68,
|
|
245
241
|
AAVE_V4_EOA_BOOST_ON_PRICE = 69,
|
|
246
242
|
AAVE_V4_EOA_CLOSE = 70,
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
AAVE_V4_SW_LIQUIDATION_PROTECTION = 77,
|
|
252
|
-
MORPHO_BLUE_SW_LIQUIDATION_PROTECTION = 78,
|
|
253
|
-
AAVE_V3_EOA_LIQUIDATION_PROTECTION = 79,
|
|
254
|
-
AAVE_V4_EOA_LIQUIDATION_PROTECTION = 80,
|
|
255
|
-
MORPHO_BLUE_EOA_LIQUIDATION_PROTECTION = 81,
|
|
256
|
-
COMP_V3_SW_LIQUIDATION_PROTECTION = 82,
|
|
257
|
-
COMP_V3_EOA_LIQUIDATION_PROTECTION = 83,
|
|
243
|
+
MORPHO_BLUE_REPAY_ON_PRICE = 84,
|
|
244
|
+
MORPHO_BLUE_EOA_BOOST_ON_PRICE = 85,
|
|
245
|
+
MORPHO_BLUE_EOA_REPAY_ON_PRICE = 86,
|
|
246
|
+
MORPHO_BLUE_EOA_CLOSE = 87,
|
|
258
247
|
}
|
|
259
248
|
|
|
260
249
|
export enum OptimismIds {
|
|
@@ -269,8 +258,6 @@ export namespace Bundles {
|
|
|
269
258
|
AAVE_V3_EOA_REPAY_ON_PRICE = 8,
|
|
270
259
|
AAVE_V3_EOA_BOOST_ON_PRICE = 9,
|
|
271
260
|
AAVE_V3_EOA_CLOSE = 10,
|
|
272
|
-
AAVE_V3_SW_LIQUIDATION_PROTECTION = 11,
|
|
273
|
-
AAVE_V3_EOA_LIQUIDATION_PROTECTION = 12,
|
|
274
261
|
}
|
|
275
262
|
|
|
276
263
|
export enum BaseIds {
|
|
@@ -301,12 +288,12 @@ export namespace Bundles {
|
|
|
301
288
|
AAVE_V3_EOA_BOOST_ON_PRICE = 26,
|
|
302
289
|
AAVE_V3_EOA_CLOSE = 27,
|
|
303
290
|
MORPHO_BLUE_CLOSE = 28,
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
291
|
+
MORPHO_BLUE_REPAY_ON_PRICE = 36,
|
|
292
|
+
MORPHO_BLUE_EOA_REPAY = 37,
|
|
293
|
+
MORPHO_BLUE_EOA_BOOST = 38,
|
|
294
|
+
MORPHO_BLUE_EOA_BOOST_ON_PRICE = 39,
|
|
295
|
+
MORPHO_BLUE_EOA_REPAY_ON_PRICE = 40,
|
|
296
|
+
MORPHO_BLUE_EOA_CLOSE = 41,
|
|
310
297
|
}
|
|
311
298
|
|
|
312
299
|
export enum ArbitrumIds {
|
|
@@ -339,12 +326,11 @@ export namespace Bundles {
|
|
|
339
326
|
MORPHO_BLUE_EOA_REPAY = 26,
|
|
340
327
|
MORPHO_BLUE_EOA_BOOST = 27,
|
|
341
328
|
MORPHO_BLUE_CLOSE = 28,
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
COMP_V3_EOA_LIQUIDATION_PROTECTION = 33,
|
|
347
|
-
AAVE_V3_EOA_LIQUIDATION_PROTECTION = 34,
|
|
348
|
-
MORPHO_BLUE_EOA_LIQUIDATION_PROTECTION = 35,
|
|
329
|
+
MORPHO_BLUE_REPAY_ON_PRICE = 36,
|
|
330
|
+
MORPHO_BLUE_EOA_BOOST_ON_PRICE = 37,
|
|
331
|
+
MORPHO_BLUE_EOA_REPAY_ON_PRICE = 38,
|
|
332
|
+
MORPHO_BLUE_EOA_CLOSE = 39,
|
|
349
333
|
}
|
|
350
334
|
}
|
|
335
|
+
|
|
336
|
+
|