@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.
Files changed (42) hide show
  1. package/cjs/constants/index.js +51 -111
  2. package/cjs/index.d.ts +2 -2
  3. package/cjs/index.js +2 -5
  4. package/cjs/services/strategiesService.js +13 -157
  5. package/cjs/services/strategySubService.d.ts +21 -18
  6. package/cjs/services/strategySubService.js +74 -78
  7. package/cjs/services/strategySubService.test.js +216 -3
  8. package/cjs/services/subDataService.d.ts +20 -70
  9. package/cjs/services/subDataService.js +79 -23
  10. package/cjs/services/subDataService.test.js +302 -17
  11. package/cjs/services/triggerService.test.js +60 -0
  12. package/cjs/services/utils.d.ts +1 -2
  13. package/cjs/services/utils.js +1 -14
  14. package/cjs/types/enums.d.ts +17 -33
  15. package/cjs/types/enums.js +14 -30
  16. package/esm/constants/index.js +51 -111
  17. package/esm/index.d.ts +2 -2
  18. package/esm/index.js +2 -5
  19. package/esm/services/strategiesService.js +13 -157
  20. package/esm/services/strategySubService.d.ts +21 -18
  21. package/esm/services/strategySubService.js +73 -78
  22. package/esm/services/strategySubService.test.js +214 -4
  23. package/esm/services/subDataService.d.ts +20 -70
  24. package/esm/services/subDataService.js +77 -21
  25. package/esm/services/subDataService.test.js +300 -18
  26. package/esm/services/triggerService.test.js +61 -1
  27. package/esm/services/utils.d.ts +1 -2
  28. package/esm/services/utils.js +1 -13
  29. package/esm/types/enums.d.ts +17 -33
  30. package/esm/types/enums.js +14 -30
  31. package/package.json +1 -1
  32. package/src/constants/index.ts +52 -113
  33. package/src/index.ts +6 -22
  34. package/src/services/strategiesService.ts +13 -221
  35. package/src/services/strategySubService.test.ts +275 -3
  36. package/src/services/strategySubService.ts +121 -173
  37. package/src/services/subDataService.test.ts +324 -18
  38. package/src/services/subDataService.ts +106 -42
  39. package/src/services/triggerService.test.ts +69 -0
  40. package/src/services/utils.test.ts +1 -1
  41. package/src/services/utils.ts +1 -15
  42. package/src/types/enums.ts +16 -30
@@ -1,4 +1,5 @@
1
1
  import { expect } from 'chai';
2
+ import Dec from 'decimal.js';
2
3
  import { otherAddresses } from '@defisaver/sdk';
3
4
  import { getAssetInfo, MAXUINT } from '@defisaver/tokens';
4
5
  import * as web3Utils from 'web3-utils';
@@ -8,10 +9,12 @@ import type { EthereumAddress, StrategyOrBundleIds, SubData, TriggerData } from
8
9
 
9
10
  import '../configuration';
10
11
  import {
12
+ chickenBondsEncode,
11
13
  liquityEncode,
12
14
  makerEncode,
13
15
  aaveV3Encode,
14
16
  compoundV3Encode,
17
+ morphoAaveV2Encode,
15
18
  exchangeEncode,
16
19
  crvUSDEncode,
17
20
  morphoBlueEncode,
@@ -134,7 +137,7 @@ describe('Feature: strategySubService.ts', () => {
134
137
  });
135
138
  });
136
139
 
137
- describe('leverageManagement()', () => {
140
+ describe('leverageManagementWithoutSubProxy()', () => {
138
141
  const examples: Array<[
139
142
  [StrategyOrBundleIds, boolean, TriggerData, SubData],
140
143
  [
@@ -184,7 +187,7 @@ describe('Feature: strategySubService.ts', () => {
184
187
 
185
188
  examples.forEach(([expected, actual]) => {
186
189
  it(`Given ${actual} should return expected value: ${JSON.stringify(expected)}`, () => {
187
- expect(makerEncode.leverageManagement(...actual)).to.eql(expected);
190
+ expect(makerEncode.leverageManagementWithoutSubProxy(...actual)).to.eql(expected);
188
191
  });
189
192
  });
190
193
  });
@@ -345,6 +348,26 @@ describe('Feature: strategySubService.ts', () => {
345
348
  });
346
349
  });
347
350
 
351
+ describe('When testing strategySubService.chickenBondsEncode', () => {
352
+ describe('rebond()', () => {
353
+ const examples: Array<[
354
+ SubData,
355
+ [bondId: number],
356
+ ]> = [
357
+ [
358
+ ['0x00000000000000000000000000000000000000000000000000000000000005e3'],
359
+ [1507]
360
+ ]
361
+ ];
362
+
363
+ examples.forEach(([expected, actual]) => {
364
+ it(`Given ${actual} should return expected value: ${JSON.stringify(expected)}`, () => {
365
+ expect(chickenBondsEncode.rebond(...actual)).to.eql(expected);
366
+ });
367
+ });
368
+ });
369
+ });
370
+
348
371
  describe('When testing strategySubService.aaveV3Encode', () => {
349
372
  describe('closeToAsset()', () => {
350
373
  const examples: Array<[
@@ -1133,6 +1156,27 @@ describe('Feature: strategySubService.ts', () => {
1133
1156
  });
1134
1157
  });
1135
1158
 
1159
+ describe('When testing strategySubService.morphoAaveV2Encode', () => {
1160
+ describe('leverageManagement()', () => {
1161
+ const examples: Array<[[string, string, string, string, boolean], [triggerRepayRatio: number, triggerBoostRatio: number, targetBoostRatio: number, targetRepayRatio: number, boostEnabled: boolean]]> = [
1162
+ [
1163
+ [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],
1164
+ [160, 220, 180, 190, true]
1165
+ ],
1166
+ [
1167
+ [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],
1168
+ [160, 200, 180, 190, false]
1169
+ ],
1170
+ ];
1171
+
1172
+ examples.forEach(([expected, actual]) => {
1173
+ it(`Given ${actual} should return expected value: ${JSON.stringify(expected)}`, () => {
1174
+ expect(morphoAaveV2Encode.leverageManagement(...actual)).to.eql(expected);
1175
+ });
1176
+ });
1177
+ });
1178
+ });
1179
+
1136
1180
  describe('When testing strategySubService.exchangeEncode', () => {
1137
1181
  describe('dca()', () => {
1138
1182
  const examples: Array<[
@@ -1373,6 +1417,177 @@ describe('Feature: strategySubService.ts', () => {
1373
1417
  });
1374
1418
  });
1375
1419
 
1420
+ describe('leverageManagementOnPrice()', () => {
1421
+ const examples: Array<[
1422
+ [StrategyOrBundleIds, boolean, TriggerData, SubData],
1423
+ [
1424
+ strategyOrBundleId: number,
1425
+ isBundle: boolean,
1426
+ loanToken: EthereumAddress,
1427
+ collToken: EthereumAddress,
1428
+ oracle: EthereumAddress,
1429
+ irm: EthereumAddress,
1430
+ lltv: string,
1431
+ user: EthereumAddress,
1432
+ targetRatio: number,
1433
+ price: number,
1434
+ priceState: RatioState,
1435
+ ]
1436
+ ]> = [
1437
+ [
1438
+ [
1439
+ Bundles.MainnetIds.MORPHO_BLUE_REPAY_ON_PRICE,
1440
+ true,
1441
+ ['0x000000000000000000000000870ac11d48b15db9a138cf899d20f13f79ba00bc0000000000000000000000007f39c581f595b53c5cb19bd0b3f8da6c935e2ca0000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc20000000000000000000000000000000000000000000000000000003a352944000000000000000000000000000000000000000000000000000000000000000001'],
1442
+ [
1443
+ '0x000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2',
1444
+ '0x0000000000000000000000007f39c581f595b53c5cb19bd0b3f8da6c935e2ca0',
1445
+ '0x000000000000000000000000870ac11d48b15db9a138cf899d20f13f79ba00bc',
1446
+ '0x0000000000000000000000000000000000000000000000000000000000000000',
1447
+ '0x0000000000000000000000000000000000000000000000000d1d507e40be8000',
1448
+ '0x0000000000000000000000000000000000000000000000001bc16d674ec80000',
1449
+ '0x0000000000000000000000001031d218133afab8c2b819b1366c7e434ad91e9c',
1450
+ ],
1451
+ ],
1452
+ [
1453
+ Bundles.MainnetIds.MORPHO_BLUE_REPAY_ON_PRICE,
1454
+ true,
1455
+ web3Utils.toChecksumAddress('0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2'),
1456
+ web3Utils.toChecksumAddress('0x7f39C581F595B53c5cb19bD0b3f8dA6c935E2Ca0'),
1457
+ web3Utils.toChecksumAddress('0x870aC11D48B15DB9a138Cf899d20F13F79Ba00BC'),
1458
+ web3Utils.toChecksumAddress('0x0000000000000000000000000000000000000000'),
1459
+ '945000000000000000',
1460
+ web3Utils.toChecksumAddress('0x1031d218133AFaB8c2B819B1366c7E434Ad91E9c'),
1461
+ 200,
1462
+ 2500,
1463
+ RatioState.UNDER,
1464
+ ],
1465
+ ],
1466
+ [
1467
+ [
1468
+ Bundles.MainnetIds.MORPHO_BLUE_BOOST_ON_PRICE,
1469
+ true,
1470
+ ['0x000000000000000000000000870ac11d48b15db9a138cf899d20f13f79ba00bc0000000000000000000000007f39c581f595b53c5cb19bd0b3f8da6c935e2ca0000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc20000000000000000000000000000000000000000000000000000005d21dba0000000000000000000000000000000000000000000000000000000000000000000'],
1471
+ [
1472
+ '0x000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2',
1473
+ '0x0000000000000000000000007f39c581f595b53c5cb19bd0b3f8da6c935e2ca0',
1474
+ '0x000000000000000000000000870ac11d48b15db9a138cf899d20f13f79ba00bc',
1475
+ '0x0000000000000000000000000000000000000000000000000000000000000000',
1476
+ '0x0000000000000000000000000000000000000000000000000d1d507e40be8000',
1477
+ '0x00000000000000000000000000000000000000000000000016345785d8a00000',
1478
+ '0x0000000000000000000000001031d218133afab8c2b819b1366c7e434ad91e9c',
1479
+ ],
1480
+ ],
1481
+ [
1482
+ Bundles.MainnetIds.MORPHO_BLUE_BOOST_ON_PRICE,
1483
+ true,
1484
+ web3Utils.toChecksumAddress('0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2'),
1485
+ web3Utils.toChecksumAddress('0x7f39C581F595B53c5cb19bD0b3f8dA6c935E2Ca0'),
1486
+ web3Utils.toChecksumAddress('0x870aC11D48B15DB9a138Cf899d20F13F79Ba00BC'),
1487
+ web3Utils.toChecksumAddress('0x0000000000000000000000000000000000000000'),
1488
+ '945000000000000000',
1489
+ web3Utils.toChecksumAddress('0x1031d218133AFaB8c2B819B1366c7E434Ad91E9c'),
1490
+ 160,
1491
+ 4000,
1492
+ RatioState.OVER,
1493
+ ],
1494
+ ],
1495
+ ];
1496
+
1497
+ examples.forEach(([expected, actual]) => {
1498
+ it(`Given ${JSON.stringify(actual)} should return expected value: ${JSON.stringify(expected)}`, () => {
1499
+ expect(morphoBlueEncode.leverageManagementOnPrice(...actual)).to.eql(expected);
1500
+ });
1501
+ });
1502
+ });
1503
+
1504
+ describe('leverageManagementOnPriceGeneric()', () => {
1505
+ const examples: Array<[
1506
+ [StrategyOrBundleIds, boolean, TriggerData, SubData],
1507
+ [
1508
+ loanToken: EthereumAddress,
1509
+ collToken: EthereumAddress,
1510
+ oracle: EthereumAddress,
1511
+ irm: EthereumAddress,
1512
+ lltv: string,
1513
+ user: EthereumAddress,
1514
+ targetRatio: number,
1515
+ price: number,
1516
+ priceState: RatioState,
1517
+ isBoost: boolean,
1518
+ isEOA: boolean,
1519
+ network: ChainId,
1520
+ ]
1521
+ ]> = [
1522
+ [
1523
+ [
1524
+ Bundles.MainnetIds.MORPHO_BLUE_REPAY_ON_PRICE,
1525
+ true,
1526
+ ['0x000000000000000000000000870ac11d48b15db9a138cf899d20f13f79ba00bc0000000000000000000000007f39c581f595b53c5cb19bd0b3f8da6c935e2ca0000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc20000000000000000000000000000000000000000000000000000003a352944000000000000000000000000000000000000000000000000000000000000000001'],
1527
+ [
1528
+ '0x000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2',
1529
+ '0x0000000000000000000000007f39c581f595b53c5cb19bd0b3f8da6c935e2ca0',
1530
+ '0x000000000000000000000000870ac11d48b15db9a138cf899d20f13f79ba00bc',
1531
+ '0x0000000000000000000000000000000000000000000000000000000000000000',
1532
+ '0x0000000000000000000000000000000000000000000000000d1d507e40be8000',
1533
+ '0x0000000000000000000000000000000000000000000000001bc16d674ec80000',
1534
+ '0x0000000000000000000000001031d218133afab8c2b819b1366c7e434ad91e9c',
1535
+ ],
1536
+ ],
1537
+ [
1538
+ web3Utils.toChecksumAddress('0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2'),
1539
+ web3Utils.toChecksumAddress('0x7f39C581F595B53c5cb19bD0b3f8dA6c935E2Ca0'),
1540
+ web3Utils.toChecksumAddress('0x870aC11D48B15DB9a138Cf899d20F13F79Ba00BC'),
1541
+ web3Utils.toChecksumAddress('0x0000000000000000000000000000000000000000'),
1542
+ '945000000000000000',
1543
+ web3Utils.toChecksumAddress('0x1031d218133AFaB8c2B819B1366c7E434Ad91E9c'),
1544
+ 200,
1545
+ 2500,
1546
+ RatioState.UNDER,
1547
+ false,
1548
+ false,
1549
+ ChainId.Ethereum,
1550
+ ],
1551
+ ],
1552
+ [
1553
+ [
1554
+ Bundles.MainnetIds.MORPHO_BLUE_BOOST_ON_PRICE,
1555
+ true,
1556
+ ['0x000000000000000000000000870ac11d48b15db9a138cf899d20f13f79ba00bc0000000000000000000000007f39c581f595b53c5cb19bd0b3f8da6c935e2ca0000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc20000000000000000000000000000000000000000000000000000005d21dba0000000000000000000000000000000000000000000000000000000000000000000'],
1557
+ [
1558
+ '0x000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2',
1559
+ '0x0000000000000000000000007f39c581f595b53c5cb19bd0b3f8da6c935e2ca0',
1560
+ '0x000000000000000000000000870ac11d48b15db9a138cf899d20f13f79ba00bc',
1561
+ '0x0000000000000000000000000000000000000000000000000000000000000000',
1562
+ '0x0000000000000000000000000000000000000000000000000d1d507e40be8000',
1563
+ '0x00000000000000000000000000000000000000000000000016345785d8a00000',
1564
+ '0x0000000000000000000000001031d218133afab8c2b819b1366c7e434ad91e9c',
1565
+ ],
1566
+ ],
1567
+ [
1568
+ web3Utils.toChecksumAddress('0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2'),
1569
+ web3Utils.toChecksumAddress('0x7f39C581F595B53c5cb19bD0b3f8dA6c935E2Ca0'),
1570
+ web3Utils.toChecksumAddress('0x870aC11D48B15DB9a138Cf899d20F13F79Ba00BC'),
1571
+ web3Utils.toChecksumAddress('0x0000000000000000000000000000000000000000'),
1572
+ '945000000000000000',
1573
+ web3Utils.toChecksumAddress('0x1031d218133AFaB8c2B819B1366c7E434Ad91E9c'),
1574
+ 160,
1575
+ 4000,
1576
+ RatioState.OVER,
1577
+ true,
1578
+ false,
1579
+ ChainId.Ethereum,
1580
+ ],
1581
+ ],
1582
+ ];
1583
+
1584
+ examples.forEach(([expected, actual]) => {
1585
+ it(`Given ${JSON.stringify(actual)} should return expected value: ${JSON.stringify(expected)}`, () => {
1586
+ expect(morphoBlueEncode.leverageManagementOnPriceGeneric(...actual)).to.eql(expected);
1587
+ });
1588
+ });
1589
+ });
1590
+
1376
1591
  describe('closeOnPrice()', () => {
1377
1592
  const examples: Array<[
1378
1593
  [StrategyOrBundleIds, boolean, TriggerData, SubData],
@@ -1416,7 +1631,7 @@ describe('Feature: strategySubService.ts', () => {
1416
1631
  1500,
1417
1632
  CloseToAssetType.DEBT,
1418
1633
  4000,
1419
- CloseToAssetType.COLLATERAL
1634
+ CloseToAssetType.COLLATERAL,
1420
1635
  ]
1421
1636
  ],
1422
1637
  ];
@@ -1427,6 +1642,63 @@ describe('Feature: strategySubService.ts', () => {
1427
1642
  });
1428
1643
  });
1429
1644
  });
1645
+
1646
+ describe('closeOnPriceGeneric()', () => {
1647
+ const examples: Array<[
1648
+ [StrategyOrBundleIds, boolean, TriggerData, SubData],
1649
+ [
1650
+ loanToken: EthereumAddress,
1651
+ collToken: EthereumAddress,
1652
+ oracle: EthereumAddress,
1653
+ irm: EthereumAddress,
1654
+ lltv: string,
1655
+ user: EthereumAddress,
1656
+ stopLossPrice: number,
1657
+ stopLossType: CloseToAssetType,
1658
+ takeProfitPrice: number,
1659
+ takeProfitType: CloseToAssetType,
1660
+ isEOA: boolean,
1661
+ network: ChainId,
1662
+ ]
1663
+ ]> = [
1664
+ [
1665
+ [
1666
+ Bundles.MainnetIds.MORPHO_BLUE_CLOSE,
1667
+ true,
1668
+ ['0x000000000000000000000000870ac11d48b15db9a138cf899d20f13f79ba00bc0000000000000000000000007f39c581f595b53c5cb19bd0b3f8da6c935e2ca0000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc200000000000000000000000000000000000000000000000000000022ecb25c000000000000000000000000000000000000000000000000000000005d21dba000'],
1669
+ [
1670
+ '0x000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2',
1671
+ '0x0000000000000000000000007f39c581f595b53c5cb19bd0b3f8da6c935e2ca0',
1672
+ '0x000000000000000000000000870ac11d48b15db9a138cf899d20f13f79ba00bc',
1673
+ '0x0000000000000000000000000000000000000000000000000000000000000000',
1674
+ '0x0000000000000000000000000000000000000000000000000d1d507e40be8000',
1675
+ '0x0000000000000000000000001031d218133afab8c2b819b1366c7e434ad91e9c',
1676
+ '0x0000000000000000000000000000000000000000000000000000000000000005',
1677
+ ],
1678
+ ],
1679
+ [
1680
+ web3Utils.toChecksumAddress('0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2'),
1681
+ web3Utils.toChecksumAddress('0x7f39C581F595B53c5cb19bD0b3f8dA6c935E2Ca0'),
1682
+ web3Utils.toChecksumAddress('0x870aC11D48B15DB9a138Cf899d20F13F79Ba00BC'),
1683
+ web3Utils.toChecksumAddress('0x0000000000000000000000000000000000000000'),
1684
+ '945000000000000000',
1685
+ web3Utils.toChecksumAddress('0x1031d218133AFaB8c2B819B1366c7E434Ad91E9c'),
1686
+ 1500,
1687
+ CloseToAssetType.DEBT,
1688
+ 4000,
1689
+ CloseToAssetType.COLLATERAL,
1690
+ false,
1691
+ ChainId.Ethereum,
1692
+ ]
1693
+ ],
1694
+ ];
1695
+
1696
+ examples.forEach(([expected, actual]) => {
1697
+ it(`Given ${JSON.stringify(actual)} should return expected value: ${JSON.stringify(expected)}`, () => {
1698
+ expect(morphoBlueEncode.closeOnPriceGeneric(...actual)).to.eql(expected);
1699
+ });
1700
+ });
1701
+ });
1430
1702
  });
1431
1703
 
1432
1704
  describe('When testing strategySubService.sparkEncode', () => {