@defisaver/automation-sdk 3.3.14 → 3.3.15
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/services/strategiesService.js +30 -17
- package/cjs/services/strategySubService.d.ts +5 -11
- package/cjs/services/strategySubService.js +27 -62
- package/cjs/services/strategySubService.test.js +0 -234
- package/cjs/services/subDataService.d.ts +35 -2
- package/cjs/services/subDataService.js +84 -20
- package/cjs/services/subDataService.test.js +0 -42
- package/esm/services/strategiesService.js +30 -17
- package/esm/services/strategySubService.d.ts +5 -11
- package/esm/services/strategySubService.js +26 -58
- package/esm/services/strategySubService.test.js +2 -236
- package/esm/services/subDataService.d.ts +35 -2
- package/esm/services/subDataService.js +82 -19
- package/esm/services/subDataService.test.js +0 -42
- package/package.json +1 -1
- package/src/services/strategiesService.ts +30 -17
- package/src/services/strategySubService.test.ts +0 -279
- package/src/services/strategySubService.ts +60 -111
- package/src/services/subDataService.test.ts +0 -48
- package/src/services/subDataService.ts +107 -28
|
@@ -3,9 +3,9 @@ import Dec from 'decimal.js';
|
|
|
3
3
|
import { otherAddresses } from '@defisaver/sdk';
|
|
4
4
|
import { getAssetInfo, MAXUINT } from '@defisaver/tokens';
|
|
5
5
|
import * as web3Utils from 'web3-utils';
|
|
6
|
-
import { Bundles, ChainId, CloseToAssetType,
|
|
6
|
+
import { Bundles, ChainId, CloseToAssetType, RatioState, Strategies } from '../types/enums';
|
|
7
7
|
import '../configuration';
|
|
8
|
-
import {
|
|
8
|
+
import { chickenBondsEncode, liquityEncode, makerEncode, aaveV3Encode, compoundV3Encode, morphoAaveV2Encode, exchangeEncode, crvUSDEncode, morphoBlueEncode, sparkEncode, aaveV4Encode, } from './strategySubService';
|
|
9
9
|
describe('Feature: strategySubService.ts', () => {
|
|
10
10
|
describe('When testing strategySubService.makerEncode', () => {
|
|
11
11
|
// @ts-ignore // TODO - this requires change in @defisaver/tokens
|
|
@@ -96,28 +96,6 @@ describe('Feature: strategySubService.ts', () => {
|
|
|
96
96
|
});
|
|
97
97
|
});
|
|
98
98
|
});
|
|
99
|
-
describe('leverageManagement()', () => {
|
|
100
|
-
const examples = [
|
|
101
|
-
[
|
|
102
|
-
[
|
|
103
|
-
5791,
|
|
104
|
-
new Dec('210').mul(1e16).toString(),
|
|
105
|
-
new Dec('290').mul(1e16).toString(),
|
|
106
|
-
new Dec('240').mul(1e16).toString(),
|
|
107
|
-
new Dec('240').mul(1e16).toString(),
|
|
108
|
-
true,
|
|
109
|
-
],
|
|
110
|
-
[
|
|
111
|
-
5791, '210', '290', '240', '240', true,
|
|
112
|
-
]
|
|
113
|
-
]
|
|
114
|
-
];
|
|
115
|
-
examples.forEach(([expected, actual]) => {
|
|
116
|
-
it(`Given ${actual} should return expected value: ${JSON.stringify(expected)}`, () => {
|
|
117
|
-
expect(makerEncode.leverageManagement(...actual)).to.eql(expected);
|
|
118
|
-
});
|
|
119
|
-
});
|
|
120
|
-
});
|
|
121
99
|
describe('leverageManagementWithoutSubProxy()', () => {
|
|
122
100
|
const examples = [
|
|
123
101
|
// Repay scenario (isBoost=false, RatioState.UNDER)
|
|
@@ -217,27 +195,6 @@ describe('Feature: strategySubService.ts', () => {
|
|
|
217
195
|
});
|
|
218
196
|
});
|
|
219
197
|
});
|
|
220
|
-
describe('leverageManagement()', () => {
|
|
221
|
-
const examples = [
|
|
222
|
-
[
|
|
223
|
-
[
|
|
224
|
-
new Dec('210').mul(1e16).toString(),
|
|
225
|
-
new Dec('290').mul(1e16).toString(),
|
|
226
|
-
new Dec('240').mul(1e16).toString(),
|
|
227
|
-
new Dec('240').mul(1e16).toString(),
|
|
228
|
-
false,
|
|
229
|
-
],
|
|
230
|
-
[
|
|
231
|
-
'210', '290', '240', '240', false,
|
|
232
|
-
]
|
|
233
|
-
]
|
|
234
|
-
];
|
|
235
|
-
examples.forEach(([expected, actual]) => {
|
|
236
|
-
it(`Given ${actual} should return expected value: ${JSON.stringify(expected)}`, () => {
|
|
237
|
-
expect(liquityEncode.leverageManagement(...actual)).to.eql(expected);
|
|
238
|
-
});
|
|
239
|
-
});
|
|
240
|
-
});
|
|
241
198
|
describe('paybackFromChickenBondStrategySub()', () => {
|
|
242
199
|
const examples = [
|
|
243
200
|
[
|
|
@@ -324,43 +281,7 @@ describe('Feature: strategySubService.ts', () => {
|
|
|
324
281
|
});
|
|
325
282
|
});
|
|
326
283
|
});
|
|
327
|
-
describe('When testing strategySubService.aaveV2Encode', () => {
|
|
328
|
-
describe('leverageManagement()', () => {
|
|
329
|
-
const examples = [
|
|
330
|
-
[
|
|
331
|
-
[new Dec(160).mul(1e16).toString(), new Dec(220).mul(1e16).toString(), new Dec(180).mul(1e16).toString(), new Dec(190).mul(1e16).toString(), true],
|
|
332
|
-
[160, 220, 180, 190, true]
|
|
333
|
-
],
|
|
334
|
-
[
|
|
335
|
-
[new Dec(160).mul(1e16).toString(), new Dec(200).mul(1e16).toString(), new Dec(180).mul(1e16).toString(), new Dec(190).mul(1e16).toString(), false],
|
|
336
|
-
[160, 200, 180, 190, false]
|
|
337
|
-
],
|
|
338
|
-
];
|
|
339
|
-
examples.forEach(([expected, actual]) => {
|
|
340
|
-
it(`Given ${actual} should return expected value: ${JSON.stringify(expected)}`, () => {
|
|
341
|
-
expect(aaveV2Encode.leverageManagement(...actual)).to.eql(expected);
|
|
342
|
-
});
|
|
343
|
-
});
|
|
344
|
-
});
|
|
345
|
-
});
|
|
346
284
|
describe('When testing strategySubService.aaveV3Encode', () => {
|
|
347
|
-
describe('leverageManagement()', () => {
|
|
348
|
-
const examples = [
|
|
349
|
-
[
|
|
350
|
-
'0x000000000000000016345785d8a0000000000000000000001e87f85809dc0000000000000000000018fae27693b4000000000000000000001a5e27eef13e000001',
|
|
351
|
-
[160, 220, 180, 190, true]
|
|
352
|
-
],
|
|
353
|
-
[
|
|
354
|
-
'0x000000000000000016345785d8a0000000000000000000001bc16d674ec80000000000000000000018fae27693b4000000000000000000001a5e27eef13e000000',
|
|
355
|
-
[160, 200, 180, 190, false]
|
|
356
|
-
],
|
|
357
|
-
];
|
|
358
|
-
examples.forEach(([expected, actual]) => {
|
|
359
|
-
it(`Given ${actual} should return expected value: ${JSON.stringify(expected)}`, () => {
|
|
360
|
-
expect(aaveV3Encode.leverageManagement(...actual)).to.eql(expected);
|
|
361
|
-
});
|
|
362
|
-
});
|
|
363
|
-
});
|
|
364
285
|
describe('closeToAsset()', () => {
|
|
365
286
|
const examples = [
|
|
366
287
|
[
|
|
@@ -927,69 +848,7 @@ describe('Feature: strategySubService.ts', () => {
|
|
|
927
848
|
});
|
|
928
849
|
});
|
|
929
850
|
});
|
|
930
|
-
describe('When testing strategySubService.compoundV2Encode', () => {
|
|
931
|
-
describe('leverageManagement()', () => {
|
|
932
|
-
const examples = [
|
|
933
|
-
[
|
|
934
|
-
[new Dec(160).mul(1e16).toString(), new Dec(220).mul(1e16).toString(), new Dec(180).mul(1e16).toString(), new Dec(190).mul(1e16).toString(), true],
|
|
935
|
-
[160, 220, 180, 190, true]
|
|
936
|
-
],
|
|
937
|
-
[
|
|
938
|
-
[new Dec(160).mul(1e16).toString(), new Dec(200).mul(1e16).toString(), new Dec(180).mul(1e16).toString(), new Dec(190).mul(1e16).toString(), false],
|
|
939
|
-
[160, 200, 180, 190, false]
|
|
940
|
-
],
|
|
941
|
-
];
|
|
942
|
-
examples.forEach(([expected, actual]) => {
|
|
943
|
-
it(`Given ${actual} should return expected value: ${JSON.stringify(expected)}`, () => {
|
|
944
|
-
expect(compoundV2Encode.leverageManagement(...actual)).to.eql(expected);
|
|
945
|
-
});
|
|
946
|
-
});
|
|
947
|
-
});
|
|
948
|
-
});
|
|
949
851
|
describe('When testing strategySubService.compoundV3Encode', () => {
|
|
950
|
-
describe('leverageManagement()', () => {
|
|
951
|
-
const examples = [
|
|
952
|
-
[
|
|
953
|
-
[
|
|
954
|
-
web3Utils.toChecksumAddress('0x1C0F620155e85491f8D35440eb17538Ca5c55212'),
|
|
955
|
-
web3Utils.toChecksumAddress(getAssetInfo('USDC', ChainId.Ethereum).address),
|
|
956
|
-
new Dec(160).mul(1e16).toString(),
|
|
957
|
-
new Dec(220).mul(1e16).toString(),
|
|
958
|
-
new Dec(180).mul(1e16).toString(),
|
|
959
|
-
new Dec(190).mul(1e16).toString(),
|
|
960
|
-
true, false,
|
|
961
|
-
],
|
|
962
|
-
[
|
|
963
|
-
web3Utils.toChecksumAddress('0x1C0F620155e85491f8D35440eb17538Ca5c55212'),
|
|
964
|
-
web3Utils.toChecksumAddress(getAssetInfo('USDC', ChainId.Ethereum).address),
|
|
965
|
-
160, 220, 180, 190,
|
|
966
|
-
true, false,
|
|
967
|
-
]
|
|
968
|
-
],
|
|
969
|
-
[
|
|
970
|
-
[
|
|
971
|
-
web3Utils.toChecksumAddress('0xaC0F620155e85491f8D35440eb17538Ca5c55212'),
|
|
972
|
-
web3Utils.toChecksumAddress(getAssetInfo('WETH', ChainId.Ethereum).address),
|
|
973
|
-
new Dec(160).mul(1e16).toString(),
|
|
974
|
-
new Dec(210).mul(1e16).toString(),
|
|
975
|
-
new Dec(180).mul(1e16).toString(),
|
|
976
|
-
new Dec(190).mul(1e16).toString(),
|
|
977
|
-
false, true,
|
|
978
|
-
],
|
|
979
|
-
[
|
|
980
|
-
web3Utils.toChecksumAddress('0xaC0F620155e85491f8D35440eb17538Ca5c55212'),
|
|
981
|
-
web3Utils.toChecksumAddress(getAssetInfo('WETH', ChainId.Ethereum).address),
|
|
982
|
-
160, 210, 180, 190,
|
|
983
|
-
false, true,
|
|
984
|
-
]
|
|
985
|
-
],
|
|
986
|
-
];
|
|
987
|
-
examples.forEach(([expected, actual]) => {
|
|
988
|
-
it(`Given ${actual} should return expected value: ${JSON.stringify(expected)}`, () => {
|
|
989
|
-
expect(compoundV3Encode.leverageManagement(...actual)).to.eql(expected);
|
|
990
|
-
});
|
|
991
|
-
});
|
|
992
|
-
});
|
|
993
852
|
describe('leverageManagementOnPrice()', () => {
|
|
994
853
|
const examples = [
|
|
995
854
|
[
|
|
@@ -1164,51 +1023,6 @@ describe('Feature: strategySubService.ts', () => {
|
|
|
1164
1023
|
});
|
|
1165
1024
|
});
|
|
1166
1025
|
});
|
|
1167
|
-
describe('limitOrder()', () => {
|
|
1168
|
-
const examples = [
|
|
1169
|
-
[
|
|
1170
|
-
[
|
|
1171
|
-
web3Utils.toChecksumAddress(getAssetInfo('WETH', ChainId.Ethereum).address),
|
|
1172
|
-
web3Utils.toChecksumAddress(getAssetInfo('DAI', ChainId.Ethereum).address),
|
|
1173
|
-
'2131',
|
|
1174
|
-
'0.53123',
|
|
1175
|
-
'1696590921159',
|
|
1176
|
-
`${OrderType.STOP_LOSS}`
|
|
1177
|
-
],
|
|
1178
|
-
[
|
|
1179
|
-
web3Utils.toChecksumAddress(getAssetInfo('WETH', ChainId.Ethereum).address),
|
|
1180
|
-
web3Utils.toChecksumAddress(getAssetInfo('DAI', ChainId.Ethereum).address),
|
|
1181
|
-
'2131',
|
|
1182
|
-
'0.53123',
|
|
1183
|
-
1696590921159,
|
|
1184
|
-
OrderType.STOP_LOSS
|
|
1185
|
-
]
|
|
1186
|
-
],
|
|
1187
|
-
[
|
|
1188
|
-
[
|
|
1189
|
-
web3Utils.toChecksumAddress(getAssetInfo('LINK', ChainId.Arbitrum).address),
|
|
1190
|
-
web3Utils.toChecksumAddress(getAssetInfo('USDC', ChainId.Arbitrum).address),
|
|
1191
|
-
'2131',
|
|
1192
|
-
'0.43123',
|
|
1193
|
-
'1646590921159',
|
|
1194
|
-
`${OrderType.TAKE_PROFIT}`
|
|
1195
|
-
],
|
|
1196
|
-
[
|
|
1197
|
-
web3Utils.toChecksumAddress(getAssetInfo('LINK', ChainId.Arbitrum).address),
|
|
1198
|
-
web3Utils.toChecksumAddress(getAssetInfo('USDC', ChainId.Arbitrum).address),
|
|
1199
|
-
'2131',
|
|
1200
|
-
'0.43123',
|
|
1201
|
-
1646590921159,
|
|
1202
|
-
OrderType.TAKE_PROFIT
|
|
1203
|
-
]
|
|
1204
|
-
],
|
|
1205
|
-
];
|
|
1206
|
-
examples.forEach(([expected, actual]) => {
|
|
1207
|
-
it(`Given ${actual} should return expected value: ${JSON.stringify(expected)}`, () => {
|
|
1208
|
-
expect(exchangeEncode.limitOrder(...actual)).to.eql(expected);
|
|
1209
|
-
});
|
|
1210
|
-
});
|
|
1211
|
-
});
|
|
1212
1026
|
});
|
|
1213
1027
|
describe('When testing strategySubService.crvUSDEncode', () => {
|
|
1214
1028
|
describe('leverageManagement()', () => {
|
|
@@ -1422,55 +1236,7 @@ describe('Feature: strategySubService.ts', () => {
|
|
|
1422
1236
|
});
|
|
1423
1237
|
});
|
|
1424
1238
|
});
|
|
1425
|
-
describe('When testing strategySubService.compoundV3L2Encode', () => {
|
|
1426
|
-
describe('leverageManagement()', () => {
|
|
1427
|
-
const examples = [
|
|
1428
|
-
[
|
|
1429
|
-
'0x0313D212133AFab8F2b829B1066c7e43caD94e2c0213D212133AfaB8F2b829B1066C7E43cAD94E2c000000000000000016345785d8a0000000000000000000001e87f85809dc0000000000000000000018fae27693b4000000000000000000001a5e27eef13e00000100',
|
|
1430
|
-
[
|
|
1431
|
-
web3Utils.toChecksumAddress('0x0313d212133AFaB8F2B829B1066c7E43cAd94E2c'),
|
|
1432
|
-
web3Utils.toChecksumAddress('0x0213d212133AFaB8F2B829B1066c7E43cAd94E2c'),
|
|
1433
|
-
160, 220, 180, 190,
|
|
1434
|
-
true,
|
|
1435
|
-
false,
|
|
1436
|
-
],
|
|
1437
|
-
],
|
|
1438
|
-
[
|
|
1439
|
-
'0x0313D212133AFab8F2b829B1066c7e43caD94e2c0413d212133afAb8F2B829b1066C7e43cAd94e2c000000000000000016345785d8a0000000000000000000001e87f85809dc0000000000000000000018fae27693b4000000000000000000000f43fc2c04ee00000000',
|
|
1440
|
-
[
|
|
1441
|
-
web3Utils.toChecksumAddress('0x0313d212133AFaB8F2B829B1066c7E43cAd94E2c'),
|
|
1442
|
-
web3Utils.toChecksumAddress('0x0413d212133AFaB8F2B829B1066c7E43cAd94E2c'),
|
|
1443
|
-
160, 220, 180, 110,
|
|
1444
|
-
false,
|
|
1445
|
-
false,
|
|
1446
|
-
],
|
|
1447
|
-
],
|
|
1448
|
-
];
|
|
1449
|
-
examples.forEach(([expected, actual]) => {
|
|
1450
|
-
it(`Given ${actual} should return expected value: ${JSON.stringify(expected)}`, () => {
|
|
1451
|
-
expect(compoundV3L2Encode.leverageManagement(...actual)).to.eql(expected);
|
|
1452
|
-
});
|
|
1453
|
-
});
|
|
1454
|
-
});
|
|
1455
|
-
});
|
|
1456
1239
|
describe('When testing strategySubService.sparkEncode', () => {
|
|
1457
|
-
describe('leverageManagement()', () => {
|
|
1458
|
-
const examples = [
|
|
1459
|
-
[
|
|
1460
|
-
'0x0000000000000000136dcc951d8c00000000000000000000214e8348c4f0000000000000000000001d24b2dfac52000000000000000000001a5e27eef13e000001',
|
|
1461
|
-
[140, 240, 210, 190, true]
|
|
1462
|
-
],
|
|
1463
|
-
[
|
|
1464
|
-
'0x0000000000000000130337bdce49000000000000000000001988fe4052b800000000000000000000281b57b028e1000000000000000000002223acf76376000000',
|
|
1465
|
-
[137, 184, 289, 246, false]
|
|
1466
|
-
]
|
|
1467
|
-
];
|
|
1468
|
-
examples.forEach(([expected, actual]) => {
|
|
1469
|
-
it(`Given ${actual} should return expected value: ${JSON.stringify(expected)}`, () => {
|
|
1470
|
-
expect(sparkEncode.leverageManagement(...actual)).to.eql(expected);
|
|
1471
|
-
});
|
|
1472
|
-
});
|
|
1473
|
-
});
|
|
1474
1240
|
describe('leverageManagementOnPrice()', () => {
|
|
1475
1241
|
const examples = [
|
|
1476
1242
|
[
|
|
@@ -89,6 +89,13 @@ export declare const liquityLeverageManagementSubData: {
|
|
|
89
89
|
targetRatio: number;
|
|
90
90
|
};
|
|
91
91
|
};
|
|
92
|
+
export declare const liquityLeverageManagementSubDataWithoutSubProxy: {
|
|
93
|
+
encode(targetRatio: number, ratioState: RatioState): string[];
|
|
94
|
+
decode(subData: string[]): {
|
|
95
|
+
targetRatio: number;
|
|
96
|
+
ratioState: RatioState;
|
|
97
|
+
};
|
|
98
|
+
};
|
|
92
99
|
export declare const liquityCloseSubData: {
|
|
93
100
|
encode(closeToAssetAddr: EthereumAddress, chainId?: ChainId, collAddr?: EthereumAddress, debtAddr?: EthereumAddress): string[];
|
|
94
101
|
decode(subData: string[]): {
|
|
@@ -177,6 +184,14 @@ export declare const aaveV2LeverageManagementSubData: {
|
|
|
177
184
|
targetRatio: number;
|
|
178
185
|
};
|
|
179
186
|
};
|
|
187
|
+
export declare const aaveV2LeverageManagementSubDataWithoutSubProxy: {
|
|
188
|
+
encode(market: EthereumAddress, targetRatio: number, ratioState: RatioState): string[];
|
|
189
|
+
decode(subData: string[]): {
|
|
190
|
+
market: EthereumAddress;
|
|
191
|
+
targetRatio: number;
|
|
192
|
+
ratioState: RatioState;
|
|
193
|
+
};
|
|
194
|
+
};
|
|
180
195
|
/**
|
|
181
196
|
___ ___ ____ ____ _______ ____ ____ ____
|
|
182
197
|
/ \ / \ \ \ / / | ____| \ \ / / |___ \
|
|
@@ -320,6 +335,13 @@ export declare const compoundV2LeverageManagementSubData: {
|
|
|
320
335
|
targetRatio: number;
|
|
321
336
|
};
|
|
322
337
|
};
|
|
338
|
+
export declare const compoundV2LeverageManagementSubDataWithoutSubProxy: {
|
|
339
|
+
encode(targetRatio: number, ratioState: RatioState): string[];
|
|
340
|
+
decode(subData: string[]): {
|
|
341
|
+
targetRatio: number;
|
|
342
|
+
ratioState: RatioState;
|
|
343
|
+
};
|
|
344
|
+
};
|
|
323
345
|
/**
|
|
324
346
|
______ ______ .___ ___. .______ ____ ____ ____
|
|
325
347
|
/ | / __ \ | \/ | | _ \ \ \ / / |___ \
|
|
@@ -334,10 +356,13 @@ export declare const compoundV3LeverageManagementSubData: {
|
|
|
334
356
|
targetRatio: number;
|
|
335
357
|
};
|
|
336
358
|
};
|
|
337
|
-
export declare const
|
|
338
|
-
encode(market: EthereumAddress, baseToken: EthereumAddress,
|
|
359
|
+
export declare const compoundV3LeverageManagementSubDataWithoutSubProxy: {
|
|
360
|
+
encode(market: EthereumAddress, baseToken: EthereumAddress, targetRatio: number, ratioState: RatioState): string[];
|
|
339
361
|
decode(subData: string[]): {
|
|
362
|
+
market: EthereumAddress;
|
|
363
|
+
baseToken: EthereumAddress;
|
|
340
364
|
targetRatio: number;
|
|
365
|
+
ratioState: RatioState;
|
|
341
366
|
};
|
|
342
367
|
};
|
|
343
368
|
export declare const compoundV3LeverageManagementOnPriceSubData: {
|
|
@@ -386,6 +411,14 @@ export declare const exchangeLimitOrderSubData: {
|
|
|
386
411
|
amount: string;
|
|
387
412
|
};
|
|
388
413
|
};
|
|
414
|
+
export declare const exchangeLimitOrderSubDataWithoutSubProxy: {
|
|
415
|
+
encode(fromToken: EthereumAddress, toToken: EthereumAddress, amount: string): string[];
|
|
416
|
+
decode: (subData: string[], chainId: ChainId) => {
|
|
417
|
+
fromToken: string;
|
|
418
|
+
toToken: string;
|
|
419
|
+
amount: string;
|
|
420
|
+
};
|
|
421
|
+
};
|
|
389
422
|
/**
|
|
390
423
|
_______..______ ___ .______ __ ___
|
|
391
424
|
/ || _ \ / \ | _ \ | |/ /
|
|
@@ -161,6 +161,23 @@ export const liquityLeverageManagementSubData = {
|
|
|
161
161
|
return { targetRatio };
|
|
162
162
|
},
|
|
163
163
|
};
|
|
164
|
+
export const liquityLeverageManagementSubDataWithoutSubProxy = {
|
|
165
|
+
encode(targetRatio, ratioState) {
|
|
166
|
+
const encodedRatioState = AbiCoder.encodeParameter('uint8', ratioState);
|
|
167
|
+
const encodedTargetRatio = AbiCoder.encodeParameter('uint256', ratioPercentageToWei(targetRatio));
|
|
168
|
+
const isRepay = ratioState === RatioState.UNDER;
|
|
169
|
+
const collActionType = isRepay ? CollActionType.WITHDRAW : CollActionType.SUPPLY;
|
|
170
|
+
const debtActionType = isRepay ? DebtActionType.PAYBACK : DebtActionType.BORROW;
|
|
171
|
+
const collActionTypeEncoded = AbiCoder.encodeParameter('uint8', collActionType);
|
|
172
|
+
const debtActionTypeEncoded = AbiCoder.encodeParameter('uint8', debtActionType);
|
|
173
|
+
return [encodedRatioState, encodedTargetRatio, collActionTypeEncoded, debtActionTypeEncoded];
|
|
174
|
+
},
|
|
175
|
+
decode(subData) {
|
|
176
|
+
const ratioState = AbiCoder.decodeParameter('uint8', subData[0]);
|
|
177
|
+
const targetRatio = weiToRatioPercentage(AbiCoder.decodeParameter('uint256', subData[1]));
|
|
178
|
+
return { targetRatio, ratioState };
|
|
179
|
+
},
|
|
180
|
+
};
|
|
164
181
|
export const liquityCloseSubData = {
|
|
165
182
|
encode(closeToAssetAddr, chainId = ChainId.Ethereum, collAddr, debtAddr) {
|
|
166
183
|
const _collAddr = collAddr || getAssetInfo('WETH', chainId).address;
|
|
@@ -392,6 +409,25 @@ export const aaveV2LeverageManagementSubData = {
|
|
|
392
409
|
return { targetRatio };
|
|
393
410
|
},
|
|
394
411
|
};
|
|
412
|
+
export const aaveV2LeverageManagementSubDataWithoutSubProxy = {
|
|
413
|
+
encode(market, targetRatio, ratioState) {
|
|
414
|
+
const encodedMarket = AbiCoder.encodeParameter('address', market);
|
|
415
|
+
const encodedTargetRatio = AbiCoder.encodeParameter('uint256', ratioPercentageToWei(targetRatio));
|
|
416
|
+
const encodedRatioState = AbiCoder.encodeParameter('uint8', ratioState);
|
|
417
|
+
const isBoost = ratioState === RatioState.OVER;
|
|
418
|
+
if (isBoost) {
|
|
419
|
+
const enableAsCollEncoded = AbiCoder.encodeParameter('uint256', 1);
|
|
420
|
+
return [encodedMarket, encodedTargetRatio, encodedRatioState, enableAsCollEncoded];
|
|
421
|
+
}
|
|
422
|
+
return [encodedMarket, encodedTargetRatio, encodedRatioState];
|
|
423
|
+
},
|
|
424
|
+
decode(subData) {
|
|
425
|
+
const market = AbiCoder.decodeParameter('address', subData[0]);
|
|
426
|
+
const targetRatio = weiToRatioPercentage(AbiCoder.decodeParameter('uint256', subData[1]));
|
|
427
|
+
const ratioState = AbiCoder.decodeParameter('uint8', subData[2]);
|
|
428
|
+
return { market, targetRatio, ratioState };
|
|
429
|
+
},
|
|
430
|
+
};
|
|
395
431
|
/**
|
|
396
432
|
___ ___ ____ ____ _______ ____ ____ ____
|
|
397
433
|
/ \ / \ \ \ / / | ____| \ \ / / |___ \
|
|
@@ -746,6 +782,23 @@ export const compoundV2LeverageManagementSubData = {
|
|
|
746
782
|
return { targetRatio };
|
|
747
783
|
},
|
|
748
784
|
};
|
|
785
|
+
export const compoundV2LeverageManagementSubDataWithoutSubProxy = {
|
|
786
|
+
encode(targetRatio, ratioState) {
|
|
787
|
+
const encodedTargetRatio = AbiCoder.encodeParameter('uint256', ratioPercentageToWei(targetRatio));
|
|
788
|
+
const encodedRatioState = AbiCoder.encodeParameter('uint8', ratioState);
|
|
789
|
+
const isBoost = ratioState === RatioState.OVER;
|
|
790
|
+
if (isBoost) {
|
|
791
|
+
const enableAsCollEncoded = AbiCoder.encodeParameter('uint256', 1);
|
|
792
|
+
return [encodedTargetRatio, encodedRatioState, enableAsCollEncoded];
|
|
793
|
+
}
|
|
794
|
+
return [encodedTargetRatio, encodedRatioState];
|
|
795
|
+
},
|
|
796
|
+
decode(subData) {
|
|
797
|
+
const targetRatio = weiToRatioPercentage(AbiCoder.decodeParameter('uint256', subData[0]));
|
|
798
|
+
const ratioState = AbiCoder.decodeParameter('uint8', subData[1]);
|
|
799
|
+
return { targetRatio, ratioState };
|
|
800
|
+
},
|
|
801
|
+
};
|
|
749
802
|
/**
|
|
750
803
|
______ ______ .___ ___. .______ ____ ____ ____
|
|
751
804
|
/ | / __ \ | \/ | | _ \ \ \ / / |___ \
|
|
@@ -773,27 +826,22 @@ export const compoundV3LeverageManagementSubData = {
|
|
|
773
826
|
return { targetRatio };
|
|
774
827
|
},
|
|
775
828
|
};
|
|
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;
|
|
829
|
+
export const compoundV3LeverageManagementSubDataWithoutSubProxy = {
|
|
830
|
+
encode(market, baseToken, targetRatio, ratioState) {
|
|
831
|
+
const encodedMarket = AbiCoder.encodeParameter('address', market);
|
|
832
|
+
const encodedBaseToken = AbiCoder.encodeParameter('address', baseToken);
|
|
833
|
+
const encodedRatioState = AbiCoder.encodeParameter('uint8', ratioState);
|
|
834
|
+
const encodedTargetRatio = AbiCoder.encodeParameter('uint256', ratioPercentageToWei(targetRatio));
|
|
835
|
+
return [encodedMarket, encodedBaseToken, encodedRatioState, encodedTargetRatio];
|
|
792
836
|
},
|
|
793
837
|
decode(subData) {
|
|
794
|
-
const
|
|
795
|
-
const
|
|
796
|
-
|
|
838
|
+
const market = AbiCoder.decodeParameter('address', subData[0]);
|
|
839
|
+
const baseToken = AbiCoder.decodeParameter('address', subData[1]);
|
|
840
|
+
const ratioState = AbiCoder.decodeParameter('uint8', subData[2]);
|
|
841
|
+
const targetRatio = weiToRatioPercentage(AbiCoder.decodeParameter('uint256', subData[3]));
|
|
842
|
+
return {
|
|
843
|
+
market, baseToken, targetRatio, ratioState,
|
|
844
|
+
};
|
|
797
845
|
},
|
|
798
846
|
};
|
|
799
847
|
export const compoundV3LeverageManagementOnPriceSubData = {
|
|
@@ -899,6 +947,21 @@ export const exchangeLimitOrderSubData = {
|
|
|
899
947
|
return { fromToken, toToken, amount };
|
|
900
948
|
},
|
|
901
949
|
};
|
|
950
|
+
export const exchangeLimitOrderSubDataWithoutSubProxy = {
|
|
951
|
+
encode(fromToken, toToken, amount) {
|
|
952
|
+
return [
|
|
953
|
+
AbiCoder.encodeParameter('address', fromToken),
|
|
954
|
+
AbiCoder.encodeParameter('address', toToken),
|
|
955
|
+
AbiCoder.encodeParameter('uint256', amount),
|
|
956
|
+
];
|
|
957
|
+
},
|
|
958
|
+
decode: (subData, chainId) => {
|
|
959
|
+
const fromToken = AbiCoder.decodeParameter('address', subData[0]).toString();
|
|
960
|
+
const toToken = AbiCoder.decodeParameter('address', subData[1]).toString();
|
|
961
|
+
const amount = assetAmountInEth(AbiCoder.decodeParameter('uint256', subData[2]).toString(), getAssetInfoByAddress(fromToken, chainId).symbol);
|
|
962
|
+
return { fromToken, toToken, amount };
|
|
963
|
+
},
|
|
964
|
+
};
|
|
902
965
|
/**
|
|
903
966
|
_______..______ ___ .______ __ ___
|
|
904
967
|
/ || _ \ / \ | _ \ | |/ /
|
|
@@ -1309,48 +1309,6 @@ describe('Feature: subDataService.ts', () => {
|
|
|
1309
1309
|
});
|
|
1310
1310
|
});
|
|
1311
1311
|
});
|
|
1312
|
-
describe('When testing subDataService.compoundV3L2LeverageManagementSubData', () => {
|
|
1313
|
-
describe('encode()', () => {
|
|
1314
|
-
const examples = [
|
|
1315
|
-
[
|
|
1316
|
-
'0x0313D212133AFab8F2b829B1066c7e43caD94e2c0213D212133AfaB8F2b829B1066C7E43cAD94E2c000000000000000016345785d8a0000000000000000000001e87f85809dc0000000000000000000018fae27693b4000000000000000000001a5e27eef13e00000100',
|
|
1317
|
-
[web3Utils.toChecksumAddress('0x0313d212133AFaB8F2B829B1066c7E43cAd94E2c'), web3Utils.toChecksumAddress('0x0213d212133AFaB8F2B829B1066c7E43cAd94E2c'), 160, 220, 180, 190, true, false]
|
|
1318
|
-
],
|
|
1319
|
-
[
|
|
1320
|
-
'0x0313D212133AFab8F2b829B1066c7e43caD94e2c0413d212133afAb8F2B829b1066C7e43cAd94e2c000000000000000016345785d8a0000000000000000000001e87f85809dc0000000000000000000018fae27693b4000000000000000000000f43fc2c04ee00000000',
|
|
1321
|
-
[web3Utils.toChecksumAddress('0x0313d212133AFaB8F2B829B1066c7E43cAd94E2c'), web3Utils.toChecksumAddress('0x0413d212133AFaB8F2B829B1066c7E43cAd94E2c'), 160, 220, 180, 110, false, false]
|
|
1322
|
-
],
|
|
1323
|
-
];
|
|
1324
|
-
examples.forEach(([expected, actual]) => {
|
|
1325
|
-
it(`Given ${actual} should return expected value: ${expected}`, () => {
|
|
1326
|
-
expect(subDataService.compoundV3L2LeverageManagementSubData.encode(...actual)).to.eql(expected);
|
|
1327
|
-
});
|
|
1328
|
-
});
|
|
1329
|
-
});
|
|
1330
|
-
describe('decode()', () => {
|
|
1331
|
-
const examples = [
|
|
1332
|
-
[
|
|
1333
|
-
{ targetRatio: 200 },
|
|
1334
|
-
[
|
|
1335
|
-
'0x0000000000000000000000000313d212133AFaB8F2B829B1066c7E43cAd94E2c', '0x0000000000000000000000000213d212133AFaB8F2B829B1066c7E43cAd94E2c',
|
|
1336
|
-
'0x0000000000000000000000000000000000000000000000000000000000000001', '0x0000000000000000000000000000000000000000000000001bc16d674ec80000',
|
|
1337
|
-
],
|
|
1338
|
-
],
|
|
1339
|
-
[
|
|
1340
|
-
{ targetRatio: 123 },
|
|
1341
|
-
[
|
|
1342
|
-
'0x0000000000000000000000000313d212133AFaB8F2B829B1066c7E43cAd94E2c', '0x0000000000000000000000000413d212133AFaB8F2B829B1066c7E43cAd94E2c',
|
|
1343
|
-
'0x0000000000000000000000000000000000000000000000000000000000000000', '0x0000000000000000000000000000000000000000000000001111d67bb1bb0000',
|
|
1344
|
-
],
|
|
1345
|
-
],
|
|
1346
|
-
];
|
|
1347
|
-
examples.forEach(([expected, actual]) => {
|
|
1348
|
-
it(`Given ${actual} should return expected value: ${JSON.stringify(expected)}`, () => {
|
|
1349
|
-
expect(subDataService.compoundV3L2LeverageManagementSubData.decode(actual)).to.eql(expected);
|
|
1350
|
-
});
|
|
1351
|
-
});
|
|
1352
|
-
});
|
|
1353
|
-
});
|
|
1354
1312
|
describe('When testing subDataService.morphoBlueLeverageManagementSubData', () => {
|
|
1355
1313
|
describe('encode()', () => {
|
|
1356
1314
|
const examples = [
|