@defisaver/positions-sdk 0.0.84 → 0.0.86
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/aaveV2/index.js +4 -4
- package/cjs/aaveV3/index.js +2 -2
- package/cjs/markets/morphoBlue/index.d.ts +10 -0
- package/cjs/markets/morphoBlue/index.js +95 -9
- package/cjs/moneymarket/moneymarketCommonService.d.ts +1 -1
- package/cjs/moneymarket/moneymarketCommonService.js +1 -1
- package/cjs/morphoAaveV2/index.js +6 -6
- package/cjs/morphoAaveV3/index.js +2 -2
- package/cjs/spark/index.js +4 -4
- package/cjs/staking/staking.d.ts +0 -1
- package/cjs/staking/staking.js +9 -19
- package/cjs/types/morphoBlue.d.ts +8 -2
- package/cjs/types/morphoBlue.js +6 -0
- package/esm/aaveV2/index.js +5 -5
- package/esm/aaveV3/index.js +3 -3
- package/esm/markets/morphoBlue/index.d.ts +10 -0
- package/esm/markets/morphoBlue/index.js +89 -8
- package/esm/moneymarket/moneymarketCommonService.d.ts +1 -1
- package/esm/moneymarket/moneymarketCommonService.js +1 -1
- package/esm/morphoAaveV2/index.js +7 -7
- package/esm/morphoAaveV3/index.js +3 -3
- package/esm/spark/index.js +5 -5
- package/esm/staking/staking.d.ts +0 -1
- package/esm/staking/staking.js +8 -17
- package/esm/types/morphoBlue.d.ts +8 -2
- package/esm/types/morphoBlue.js +6 -0
- package/package.json +1 -2
- package/src/aaveV2/index.ts +5 -5
- package/src/aaveV3/index.ts +7 -8
- package/src/markets/morphoBlue/index.ts +89 -8
- package/src/moneymarket/moneymarketCommonService.ts +1 -1
- package/src/morphoAaveV2/index.ts +7 -7
- package/src/morphoAaveV3/index.ts +4 -4
- package/src/spark/index.ts +6 -6
- package/src/staking/staking.ts +8 -20
- package/src/types/morphoBlue.ts +6 -0
|
@@ -297,7 +297,7 @@ export const MORPHO_BLUE_SUSDE_DAI_770 = (networkId = NetworkNumber.Eth) => ({
|
|
|
297
297
|
loanToken: '0x6B175474E89094C44Da98b954EedeAC495271d0F',
|
|
298
298
|
collateralToken: '0x9D39A5DE30e57443BfF2A8307A4256c8797A3497',
|
|
299
299
|
oracle: '0x5D916980D5Ae1737a8330Bf24dF812b2911Aae25',
|
|
300
|
-
oracleType: MorphoBlueOracleType.
|
|
300
|
+
oracleType: MorphoBlueOracleType.ETHENA_RATE,
|
|
301
301
|
irm: '0x870aC11D48B15DB9a138Cf899d20F13F79Ba00BC',
|
|
302
302
|
lltv: 0.77,
|
|
303
303
|
marketId: '0x42dcfb38bb98767afb6e38ccf90d59d0d3f0aa216beb3a234f12850323d17536',
|
|
@@ -312,7 +312,7 @@ export const MORPHO_BLUE_SUSDE_DAI_860 = (networkId = NetworkNumber.Eth) => ({
|
|
|
312
312
|
loanToken: '0x6B175474E89094C44Da98b954EedeAC495271d0F',
|
|
313
313
|
collateralToken: '0x9D39A5DE30e57443BfF2A8307A4256c8797A3497',
|
|
314
314
|
oracle: '0x5D916980D5Ae1737a8330Bf24dF812b2911Aae25',
|
|
315
|
-
oracleType: MorphoBlueOracleType.
|
|
315
|
+
oracleType: MorphoBlueOracleType.ETHENA_RATE,
|
|
316
316
|
irm: '0x870aC11D48B15DB9a138Cf899d20F13F79Ba00BC',
|
|
317
317
|
lltv: 0.86,
|
|
318
318
|
marketId: '0x39d11026eae1c6ec02aa4c0910778664089cdd97c3fd23f68f7cd05e2e95af48',
|
|
@@ -327,7 +327,7 @@ export const MORPHO_BLUE_SUSDE_DAI_915 = (networkId = NetworkNumber.Eth) => ({
|
|
|
327
327
|
loanToken: '0x6B175474E89094C44Da98b954EedeAC495271d0F',
|
|
328
328
|
collateralToken: '0x9D39A5DE30e57443BfF2A8307A4256c8797A3497',
|
|
329
329
|
oracle: '0x5D916980D5Ae1737a8330Bf24dF812b2911Aae25',
|
|
330
|
-
oracleType: MorphoBlueOracleType.
|
|
330
|
+
oracleType: MorphoBlueOracleType.ETHENA_RATE,
|
|
331
331
|
irm: '0x870aC11D48B15DB9a138Cf899d20F13F79Ba00BC',
|
|
332
332
|
lltv: 0.915,
|
|
333
333
|
marketId: '0x1247f1c237eceae0602eab1470a5061a6dd8f734ba88c7cdc5d6109fb0026b28',
|
|
@@ -342,7 +342,7 @@ export const MORPHO_BLUE_SUSDE_DAI_945 = (networkId = NetworkNumber.Eth) => ({
|
|
|
342
342
|
loanToken: '0x6B175474E89094C44Da98b954EedeAC495271d0F',
|
|
343
343
|
collateralToken: '0x9D39A5DE30e57443BfF2A8307A4256c8797A3497',
|
|
344
344
|
oracle: '0x5D916980D5Ae1737a8330Bf24dF812b2911Aae25',
|
|
345
|
-
oracleType: MorphoBlueOracleType.
|
|
345
|
+
oracleType: MorphoBlueOracleType.ETHENA_RATE,
|
|
346
346
|
irm: '0x870aC11D48B15DB9a138Cf899d20F13F79Ba00BC',
|
|
347
347
|
lltv: 0.945,
|
|
348
348
|
marketId: '0xe475337d11be1db07f7c5a156e511f05d1844308e66e17d2ba5da0839d3b34d9',
|
|
@@ -358,7 +358,7 @@ export const MORPHO_BLUE_USDE_DAI_770 = (networkId = NetworkNumber.Eth) => ({
|
|
|
358
358
|
loanToken: '0x6B175474E89094C44Da98b954EedeAC495271d0F',
|
|
359
359
|
collateralToken: '0x4c9EDD5852cd905f086C759E8383e09bff1E68B3',
|
|
360
360
|
oracle: '0xaE4750d0813B5E37A51f7629beedd72AF1f9cA35',
|
|
361
|
-
oracleType: MorphoBlueOracleType.
|
|
361
|
+
oracleType: MorphoBlueOracleType.ETHENA_RATE,
|
|
362
362
|
irm: '0x870aC11D48B15DB9a138Cf899d20F13F79Ba00BC',
|
|
363
363
|
lltv: 0.77,
|
|
364
364
|
marketId: '0xfd8493f09eb6203615221378d89f53fcd92ff4f7d62cca87eece9a2fff59e86f',
|
|
@@ -373,7 +373,7 @@ export const MORPHO_BLUE_USDE_DAI_860 = (networkId = NetworkNumber.Eth) => ({
|
|
|
373
373
|
loanToken: '0x6B175474E89094C44Da98b954EedeAC495271d0F',
|
|
374
374
|
collateralToken: '0x4c9EDD5852cd905f086C759E8383e09bff1E68B3',
|
|
375
375
|
oracle: '0xaE4750d0813B5E37A51f7629beedd72AF1f9cA35',
|
|
376
|
-
oracleType: MorphoBlueOracleType.
|
|
376
|
+
oracleType: MorphoBlueOracleType.ETHENA_RATE,
|
|
377
377
|
irm: '0x870aC11D48B15DB9a138Cf899d20F13F79Ba00BC',
|
|
378
378
|
lltv: 0.86,
|
|
379
379
|
marketId: '0xc581c5f70bd1afa283eed57d1418c6432cbff1d862f94eaf58fdd4e46afbb67f',
|
|
@@ -388,7 +388,7 @@ export const MORPHO_BLUE_USDE_DAI_915 = (networkId = NetworkNumber.Eth) => ({
|
|
|
388
388
|
loanToken: '0x6B175474E89094C44Da98b954EedeAC495271d0F',
|
|
389
389
|
collateralToken: '0x4c9EDD5852cd905f086C759E8383e09bff1E68B3',
|
|
390
390
|
oracle: '0xaE4750d0813B5E37A51f7629beedd72AF1f9cA35',
|
|
391
|
-
oracleType: MorphoBlueOracleType.
|
|
391
|
+
oracleType: MorphoBlueOracleType.ETHENA_RATE,
|
|
392
392
|
irm: '0x870aC11D48B15DB9a138Cf899d20F13F79Ba00BC',
|
|
393
393
|
lltv: 0.915,
|
|
394
394
|
marketId: '0x8e6aeb10c401de3279ac79b4b2ea15fc94b7d9cfc098d6c2a1ff7b2b26d9d02c',
|
|
@@ -403,7 +403,7 @@ export const MORPHO_BLUE_USDE_DAI_945 = (networkId = NetworkNumber.Eth) => ({
|
|
|
403
403
|
loanToken: '0x6B175474E89094C44Da98b954EedeAC495271d0F',
|
|
404
404
|
collateralToken: '0x4c9EDD5852cd905f086C759E8383e09bff1E68B3',
|
|
405
405
|
oracle: '0xaE4750d0813B5E37A51f7629beedd72AF1f9cA35',
|
|
406
|
-
oracleType: MorphoBlueOracleType.
|
|
406
|
+
oracleType: MorphoBlueOracleType.ETHENA_RATE,
|
|
407
407
|
irm: '0x870aC11D48B15DB9a138Cf899d20F13F79Ba00BC',
|
|
408
408
|
lltv: 0.945,
|
|
409
409
|
marketId: '0xdb760246f6859780f6c1b272d47a8f64710777121118e56e0cdb4b8b744a3094',
|
|
@@ -425,6 +425,81 @@ export const MORPHO_BLUE_CBETH_USDC_860_BASE = (networkId = NetworkNumber.Eth) =
|
|
|
425
425
|
marketId: '0xdba352d93a64b17c71104cbddc6aef85cd432322a1446b5b65163cbbc615cd0c',
|
|
426
426
|
protocolName: 'morpho-blue',
|
|
427
427
|
});
|
|
428
|
+
export const MORPHO_BLUE_WSTETH_ETH_945_BASE = (networkId = NetworkNumber.Eth) => ({
|
|
429
|
+
chainIds: [NetworkNumber.Base],
|
|
430
|
+
label: 'Morpho Blue',
|
|
431
|
+
shortLabel: 'wstETH/ETH',
|
|
432
|
+
value: MorphoBlueVersions.MorphoBlueWstEthEth_945_Base,
|
|
433
|
+
url: 'wstetheth-e3c4d4d0',
|
|
434
|
+
loanToken: '0x4200000000000000000000000000000000000006',
|
|
435
|
+
collateralToken: '0xc1CBa3fCea344f92D9239c08C0568f6F2F0ee452',
|
|
436
|
+
oracle: '0xaE10cbdAa587646246c8253E4532A002EE4fa7A4',
|
|
437
|
+
oracleType: MorphoBlueOracleType.MARKET_RATE,
|
|
438
|
+
irm: '0x46415998764C29aB2a25CbeA6254146D50D22687',
|
|
439
|
+
lltv: 0.945,
|
|
440
|
+
marketId: '0xe3c4d4d0e214fdc52635d7f9b2f7b3b0081771ae2efeb3cb5aae26009f34f7a7',
|
|
441
|
+
protocolName: 'morpho-blue',
|
|
442
|
+
});
|
|
443
|
+
export const MORPHO_BLUE_WSTETH_ETH_965_BASE = (networkId = NetworkNumber.Eth) => ({
|
|
444
|
+
chainIds: [NetworkNumber.Base],
|
|
445
|
+
label: 'Morpho Blue',
|
|
446
|
+
shortLabel: 'wstETH/ETH',
|
|
447
|
+
value: MorphoBlueVersions.MorphoBlueWstEthEth_965_Base,
|
|
448
|
+
url: 'wstetheth-6aa81f51',
|
|
449
|
+
loanToken: '0x4200000000000000000000000000000000000006',
|
|
450
|
+
collateralToken: '0xc1CBa3fCea344f92D9239c08C0568f6F2F0ee452',
|
|
451
|
+
oracle: '0xaE10cbdAa587646246c8253E4532A002EE4fa7A4',
|
|
452
|
+
oracleType: MorphoBlueOracleType.MARKET_RATE,
|
|
453
|
+
irm: '0x46415998764C29aB2a25CbeA6254146D50D22687',
|
|
454
|
+
lltv: 0.965,
|
|
455
|
+
marketId: '0x6aa81f51dfc955df598e18006deae56ce907ac02b0b5358705f1a28fcea23cc0',
|
|
456
|
+
protocolName: 'morpho-blue',
|
|
457
|
+
});
|
|
458
|
+
export const MORPHO_BLUE_WSTETH_USDC_860_BASE = (networkId = NetworkNumber.Eth) => ({
|
|
459
|
+
chainIds: [NetworkNumber.Base],
|
|
460
|
+
label: 'Morpho Blue',
|
|
461
|
+
shortLabel: 'wstETH/USDC',
|
|
462
|
+
value: MorphoBlueVersions.MorphoBlueWstEthUSDC_860_Base,
|
|
463
|
+
url: 'wstethusdc-a066f389',
|
|
464
|
+
loanToken: '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913',
|
|
465
|
+
collateralToken: '0xc1CBa3fCea344f92D9239c08C0568f6F2F0ee452',
|
|
466
|
+
oracle: '0x957e76d8f2D3ab0B4f342cd5f4b03A6f6eF2ce5F',
|
|
467
|
+
oracleType: MorphoBlueOracleType.MARKET_RATE,
|
|
468
|
+
irm: '0x46415998764C29aB2a25CbeA6254146D50D22687',
|
|
469
|
+
lltv: 0.86,
|
|
470
|
+
marketId: '0xa066f3893b780833699043f824e5bb88b8df039886f524f62b9a1ac83cb7f1f0',
|
|
471
|
+
protocolName: 'morpho-blue',
|
|
472
|
+
});
|
|
473
|
+
export const MORPHO_BLUE_CBETH_ETH_965_BASE = (networkId = NetworkNumber.Eth) => ({
|
|
474
|
+
chainIds: [NetworkNumber.Base],
|
|
475
|
+
label: 'Morpho Blue',
|
|
476
|
+
shortLabel: 'cbETH/ETH',
|
|
477
|
+
value: MorphoBlueVersions.MorphoBlueCbEthEth_965_Base,
|
|
478
|
+
url: 'cbetheth-6600aae6',
|
|
479
|
+
loanToken: '0x4200000000000000000000000000000000000006',
|
|
480
|
+
collateralToken: '0x2Ae3F1Ec7F1F5012CFEab0185bfc7aa3cf0DEc22',
|
|
481
|
+
oracle: '0xB03855Ad5AFD6B8db8091DD5551CAC4ed621d9E6',
|
|
482
|
+
oracleType: MorphoBlueOracleType.MARKET_RATE,
|
|
483
|
+
irm: '0x46415998764C29aB2a25CbeA6254146D50D22687',
|
|
484
|
+
lltv: 0.965,
|
|
485
|
+
marketId: '0x6600aae6c56d242fa6ba68bd527aff1a146e77813074413186828fd3f1cdca91',
|
|
486
|
+
protocolName: 'morpho-blue',
|
|
487
|
+
});
|
|
488
|
+
export const MORPHO_BLUE_ETH_USDC_860_BASE = (networkId = NetworkNumber.Eth) => ({
|
|
489
|
+
chainIds: [NetworkNumber.Base],
|
|
490
|
+
label: 'Morpho Blue',
|
|
491
|
+
shortLabel: 'ETH/USDC',
|
|
492
|
+
value: MorphoBlueVersions.MorphoBlueEthUSDC_860_Base,
|
|
493
|
+
url: 'ethusdc-8793cf30',
|
|
494
|
+
loanToken: '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913',
|
|
495
|
+
collateralToken: '0x4200000000000000000000000000000000000006',
|
|
496
|
+
oracle: '0xFEa2D58cEfCb9fcb597723c6bAE66fFE4193aFE4',
|
|
497
|
+
oracleType: MorphoBlueOracleType.MARKET_RATE,
|
|
498
|
+
irm: '0x46415998764C29aB2a25CbeA6254146D50D22687',
|
|
499
|
+
lltv: 0.86,
|
|
500
|
+
marketId: '0x8793cf302b8ffd655ab97bd1c695dbd967807e8367a65cb2f4edaf1380ba1bda',
|
|
501
|
+
protocolName: 'morpho-blue',
|
|
502
|
+
});
|
|
428
503
|
export const MorphoBlueMarkets = (networkId) => ({
|
|
429
504
|
[MorphoBlueVersions.MorphoBlueWstEthUSDC]: MORPHO_BLUE_WSTETH_USDC(networkId),
|
|
430
505
|
[MorphoBlueVersions.MorphoBlueSDAIUSDC]: MORPHO_BLUE_SDAI_USDC(networkId),
|
|
@@ -456,7 +531,13 @@ export const MorphoBlueMarkets = (networkId) => ({
|
|
|
456
531
|
[MorphoBlueVersions.MorphoBlueUSDeDAI_860]: MORPHO_BLUE_USDE_DAI_860(networkId),
|
|
457
532
|
[MorphoBlueVersions.MorphoBlueUSDeDAI_915]: MORPHO_BLUE_USDE_DAI_915(networkId),
|
|
458
533
|
[MorphoBlueVersions.MorphoBlueUSDeDAI_945]: MORPHO_BLUE_USDE_DAI_945(networkId),
|
|
534
|
+
// Base
|
|
459
535
|
[MorphoBlueVersions.MorphoBlueCbEthUSDC_860_Base]: MORPHO_BLUE_CBETH_USDC_860_BASE(networkId),
|
|
536
|
+
[MorphoBlueVersions.MorphoBlueWstEthEth_945_Base]: MORPHO_BLUE_WSTETH_ETH_945_BASE(networkId),
|
|
537
|
+
[MorphoBlueVersions.MorphoBlueWstEthEth_965_Base]: MORPHO_BLUE_WSTETH_ETH_965_BASE(networkId),
|
|
538
|
+
[MorphoBlueVersions.MorphoBlueWstEthUSDC_860_Base]: MORPHO_BLUE_WSTETH_USDC_860_BASE(networkId),
|
|
539
|
+
[MorphoBlueVersions.MorphoBlueCbEthEth_965_Base]: MORPHO_BLUE_CBETH_ETH_965_BASE(networkId),
|
|
540
|
+
[MorphoBlueVersions.MorphoBlueEthUSDC_860_Base]: MORPHO_BLUE_ETH_USDC_860_BASE(networkId),
|
|
460
541
|
});
|
|
461
542
|
export const findMorphoBlueMarket = (collateralToken, loanToken, lltv, oracle, irm, network = NetworkNumber.Eth) => {
|
|
462
543
|
const markets = MorphoBlueMarkets(network);
|
|
@@ -9,4 +9,4 @@ export declare const isLeveragedPos: (usedAssets: MMUsedAssets, dustLimit?: numb
|
|
|
9
9
|
leveragedType: string;
|
|
10
10
|
leveragedAsset: string;
|
|
11
11
|
};
|
|
12
|
-
export declare const aprToApy: (interest: string | number, frequency?: number) =>
|
|
12
|
+
export declare const aprToApy: (interest: string | number, frequency?: number) => string;
|
|
@@ -67,4 +67,4 @@ export const isLeveragedPos = (usedAssets, dustLimit = 5) => {
|
|
|
67
67
|
leveragedAsset: '',
|
|
68
68
|
};
|
|
69
69
|
};
|
|
70
|
-
export const aprToApy = (interest, frequency = BLOCKS_IN_A_YEAR) => (
|
|
70
|
+
export const aprToApy = (interest, frequency = BLOCKS_IN_A_YEAR) => new Dec(interest).div(100).div(frequency).plus(1).pow(frequency).minus(1).times(100).toString();
|
|
@@ -13,7 +13,7 @@ import { wethToEthByAddress } from '../services/utils';
|
|
|
13
13
|
import { getStETHApr } from '../staking';
|
|
14
14
|
import { MorphoAaveV2ViewContract } from '../contracts';
|
|
15
15
|
import { AaveVersions, } from '../types';
|
|
16
|
-
import { calculateBorrowingAssetLimit } from '../moneymarket';
|
|
16
|
+
import { aprToApy, calculateBorrowingAssetLimit } from '../moneymarket';
|
|
17
17
|
import { EMPTY_AAVE_DATA } from '../aaveV3';
|
|
18
18
|
import { aaveAnyGetAggregatedPositionData } from '../helpers/aaveHelpers';
|
|
19
19
|
import { getEthPrice } from '../services/priceService';
|
|
@@ -34,8 +34,8 @@ export const getMorphoAaveV2MarketsData = (web3, network, mainnetWeb3) => __awai
|
|
|
34
34
|
const aaveInfo = aaveTokenInfo[index];
|
|
35
35
|
const { symbol, address } = getAssetInfoByAddress(wethToEthByAddress(aaveInfo.underlyingTokenAddress));
|
|
36
36
|
const morphoReward = (_a = morphoRewardsData === null || morphoRewardsData === void 0 ? void 0 : morphoRewardsData.markets) === null || _a === void 0 ? void 0 : _a[aaveInfo.aTokenAddress.toLowerCase()];
|
|
37
|
-
const supplyRateP2P = new Dec(market.p2pSupplyRate).div(1e25).toString();
|
|
38
|
-
const borrowRateP2P = new Dec(market.p2pBorrowRate).div(1e25).toString();
|
|
37
|
+
const supplyRateP2P = aprToApy(new Dec(market.p2pSupplyRate).div(1e25).toString());
|
|
38
|
+
const borrowRateP2P = aprToApy(new Dec(market.p2pBorrowRate).div(1e25).toString());
|
|
39
39
|
const hasDelta = new Dec(borrowRateP2P).minus(supplyRateP2P).gte(0.3);
|
|
40
40
|
return {
|
|
41
41
|
symbol,
|
|
@@ -44,9 +44,9 @@ export const getMorphoAaveV2MarketsData = (web3, network, mainnetWeb3) => __awai
|
|
|
44
44
|
underlyingTokenAddress: address,
|
|
45
45
|
priceInEth: new Dec(aaveInfo.price).div(1e18).toString(),
|
|
46
46
|
price: new Dec(aaveInfo.price).div(1e18).times(ethPrice).toString(),
|
|
47
|
-
supplyRate: new Dec(market.poolSupplyRate).div(1e25).toString(),
|
|
47
|
+
supplyRate: aprToApy(new Dec(market.poolSupplyRate).div(1e25).toString()),
|
|
48
48
|
supplyRateP2P,
|
|
49
|
-
borrowRate: new Dec(market.poolBorrowRate).div(1e25).toString(),
|
|
49
|
+
borrowRate: aprToApy(new Dec(market.poolBorrowRate).div(1e25).toString()),
|
|
50
50
|
borrowRateP2P,
|
|
51
51
|
totalSupply: assetAmountInEth(aaveInfo.totalSupply, symbol),
|
|
52
52
|
totalBorrow: assetAmountInEth(aaveInfo.totalBorrow, symbol),
|
|
@@ -170,8 +170,8 @@ export const getMorphoAaveV2AccountData = (web3, network, address, assetsData) =
|
|
|
170
170
|
borrowedUsdVariable: borrowedUsd,
|
|
171
171
|
isSupplied: new Dec(supplied).gt(0),
|
|
172
172
|
isBorrowed: new Dec(borrowed).gt(0),
|
|
173
|
-
supplyRate: new Dec(market.userSupplyRate).div(1e25).toString(),
|
|
174
|
-
borrowRate: new Dec(market.userBorrowRate).div(1e25).toString(),
|
|
173
|
+
supplyRate: aprToApy(new Dec(market.userSupplyRate).div(1e25).toString()),
|
|
174
|
+
borrowRate: aprToApy(new Dec(market.userBorrowRate).div(1e25).toString()),
|
|
175
175
|
limit: '0',
|
|
176
176
|
collateral: true,
|
|
177
177
|
eModeCategory: 0,
|
|
@@ -18,7 +18,7 @@ import { createContractWrapper, getConfigContractAbi, getConfigContractAddress,
|
|
|
18
18
|
import { multicall } from '../multicall';
|
|
19
19
|
import { getCbETHApr, getREthApr, getStETHApr } from '../staking';
|
|
20
20
|
import { getDsrApy } from '../services/dsrService';
|
|
21
|
-
import { calculateBorrowingAssetLimit } from '../moneymarket';
|
|
21
|
+
import { aprToApy, calculateBorrowingAssetLimit } from '../moneymarket';
|
|
22
22
|
import { EMPTY_AAVE_DATA } from '../aaveV3';
|
|
23
23
|
import { aaveAnyGetAggregatedPositionData } from '../helpers/aaveHelpers';
|
|
24
24
|
import { MORPHO_AAVE_V3_ETH } from '../markets/aave';
|
|
@@ -141,9 +141,9 @@ export const getMorphoAaveV3MarketsData = (web3, network, selectedMarket, mainne
|
|
|
141
141
|
aTokenAddress: marketData.aTokenAddress,
|
|
142
142
|
underlyingTokenAddress: address,
|
|
143
143
|
price: new Dec(marketData.price.toString()).div(1e8).toString(),
|
|
144
|
-
supplyRate: new Dec(marketData.supplyRate.toString()).div(1e25).toString(),
|
|
144
|
+
supplyRate: aprToApy(new Dec(marketData.supplyRate.toString()).div(1e25).toString()),
|
|
145
145
|
supplyRateP2P: marketData.p2pSupplyAPY,
|
|
146
|
-
borrowRate: new Dec(marketData.borrowRateVariable.toString()).div(1e25).toString(),
|
|
146
|
+
borrowRate: aprToApy(new Dec(marketData.borrowRateVariable.toString()).div(1e25).toString()),
|
|
147
147
|
borrowRateP2P: marketData.p2pBorrowAPY,
|
|
148
148
|
totalSupply: assetAmountInEth(marketData.totalSupply.toString(), symbol),
|
|
149
149
|
totalBorrow: assetAmountInEth(marketData.totalBorrow.toString(), symbol),
|
package/esm/spark/index.js
CHANGED
|
@@ -15,7 +15,7 @@ import { getDsrApy } from '../services/dsrService';
|
|
|
15
15
|
import { SparkIncentiveDataProviderContract, SparkViewContract, getConfigContractAbi, createContractWrapper, } from '../contracts';
|
|
16
16
|
import { multicall } from '../multicall';
|
|
17
17
|
import { sparkGetAggregatedPositionData, sparkIsInIsolationMode } from '../helpers/sparkHelpers';
|
|
18
|
-
import { calculateBorrowingAssetLimit } from '../moneymarket';
|
|
18
|
+
import { aprToApy, calculateBorrowingAssetLimit } from '../moneymarket';
|
|
19
19
|
import { SPARK_V1 } from '../markets/spark';
|
|
20
20
|
export const sparkEmodeCategoriesMapping = (extractedState, usedAssets) => {
|
|
21
21
|
const { assetsData } = extractedState;
|
|
@@ -82,9 +82,9 @@ export const getSparkMarketsData = (web3, network, selectedMarket, mainnetWeb3)
|
|
|
82
82
|
isolationModeTotalDebt: new Dec(market.isolationModeTotalDebt).div(100).toString(),
|
|
83
83
|
assetId: Number(market.assetId),
|
|
84
84
|
underlyingTokenAddress: market.underlyingTokenAddress,
|
|
85
|
-
supplyRate: new Dec(market.supplyRate.toString()).div(1e25).toString(),
|
|
86
|
-
borrowRate: new Dec(market.borrowRateVariable.toString()).div(1e25).toString(),
|
|
87
|
-
borrowRateStable: new Dec(market.borrowRateStable.toString()).div(1e25).toString(),
|
|
85
|
+
supplyRate: aprToApy(new Dec(market.supplyRate.toString()).div(1e25).toString()),
|
|
86
|
+
borrowRate: aprToApy(new Dec(market.borrowRateVariable.toString()).div(1e25).toString()),
|
|
87
|
+
borrowRateStable: aprToApy(new Dec(market.borrowRateStable.toString()).div(1e25).toString()),
|
|
88
88
|
collateralFactor: new Dec(market.collateralFactor.toString()).div(10000).toString(),
|
|
89
89
|
liquidationRatio: new Dec(market.liquidationRatio.toString()).div(10000).toString(),
|
|
90
90
|
marketLiquidity,
|
|
@@ -302,7 +302,7 @@ export const getSparkAccountData = (web3, network, address, extractedState) => _
|
|
|
302
302
|
}
|
|
303
303
|
if (!usedAssets[asset])
|
|
304
304
|
usedAssets[asset] = {};
|
|
305
|
-
usedAssets[asset] = Object.assign(Object.assign({}, usedAssets[asset]), { symbol: asset, supplied, suppliedUsd: new Dec(supplied).mul(assetsData[asset].price).toString(), isSupplied, collateral: enabledAsCollateral, stableBorrowRate: new Dec(tokenInfo.stableBorrowRate).div(1e25).toString(), borrowedStable,
|
|
305
|
+
usedAssets[asset] = Object.assign(Object.assign({}, usedAssets[asset]), { symbol: asset, supplied, suppliedUsd: new Dec(supplied).mul(assetsData[asset].price).toString(), isSupplied, collateral: enabledAsCollateral, stableBorrowRate: aprToApy(new Dec(tokenInfo.stableBorrowRate).div(1e25).toString()), borrowedStable,
|
|
306
306
|
borrowedVariable, borrowedUsdStable: new Dec(borrowedStable).mul(assetsData[asset].price).toString(), borrowedUsdVariable: new Dec(borrowedVariable).mul(assetsData[asset].price).toString(), borrowed: new Dec(borrowedStable).add(borrowedVariable).toString(), borrowedUsd: new Dec(new Dec(borrowedVariable).add(borrowedStable)).mul(assetsData[asset].price).toString(), isBorrowed, eModeCategory: assetsData[asset].eModeCategory, interestMode });
|
|
307
307
|
});
|
|
308
308
|
payload.eModeCategory = +multicallRes[0][0];
|
package/esm/staking/staking.d.ts
CHANGED
|
@@ -4,7 +4,6 @@ export declare const getStETHApr: (web3: Web3, fromBlock?: number, blockNumber?:
|
|
|
4
4
|
export declare const getCbETHApr: (web3: Web3, blockNumber?: 'latest' | number) => Promise<string>;
|
|
5
5
|
export declare const getREthApr: (web3: Web3, blockNumber?: 'latest' | number) => Promise<string>;
|
|
6
6
|
export declare const getDsrApy: (web3: Web3, blockNumber?: 'latest' | number) => Promise<string>;
|
|
7
|
-
export declare const getSUSDeApy: () => Promise<any>;
|
|
8
7
|
export declare const STAKING_ASSETS: string[];
|
|
9
8
|
export declare const getStakingApy: (asset: string, web3: Web3, blockNumber?: 'latest' | number, fromBlock?: number | undefined) => Promise<any> | "0" | undefined;
|
|
10
9
|
export declare const calculateInterestEarned: (principal: string, interest: string, type: string, apy?: boolean) => number;
|
package/esm/staking/staking.js
CHANGED
|
@@ -8,7 +8,6 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
8
8
|
});
|
|
9
9
|
};
|
|
10
10
|
import Dec from 'decimal.js';
|
|
11
|
-
import { StakeWiseSDK, Network } from '@stakewise/v3-sdk';
|
|
12
11
|
import { CbEthContract, LidoContract, PotContract, REthContract, wstETHContract, } from '../contracts';
|
|
13
12
|
import { NetworkNumber } from '../types/common';
|
|
14
13
|
import { BLOCKS_IN_A_YEAR, SECONDS_PER_YEAR, AVG_BLOCK_TIME } from '../constants';
|
|
@@ -77,22 +76,12 @@ export const getDsrApy = (web3, blockNumber = 'latest') => __awaiter(void 0, voi
|
|
|
77
76
|
.mul(100)
|
|
78
77
|
.toString();
|
|
79
78
|
});
|
|
80
|
-
|
|
81
|
-
const res = yield fetch(
|
|
79
|
+
const getApyFromDfsApi = (asset) => __awaiter(void 0, void 0, void 0, function* () {
|
|
80
|
+
const res = yield fetch(`https://app.defisaver.com/api/staking/apy?asset=${asset}`);
|
|
82
81
|
const data = yield res.json();
|
|
83
82
|
return data.apy;
|
|
84
83
|
});
|
|
85
|
-
const
|
|
86
|
-
const res = yield fetch('https://app.defisaver.com/api/staking/apy?asset=weETH');
|
|
87
|
-
const data = yield res.json();
|
|
88
|
-
return data.apy;
|
|
89
|
-
});
|
|
90
|
-
const getOsETHApy = () => __awaiter(void 0, void 0, void 0, function* () {
|
|
91
|
-
const sdk = new StakeWiseSDK({ network: Network.Mainnet });
|
|
92
|
-
const apy = yield sdk.osToken.getAPY();
|
|
93
|
-
return apy;
|
|
94
|
-
});
|
|
95
|
-
export const STAKING_ASSETS = ['cbETH', 'wstETH', 'cbETH', 'rETH', 'sDAI', 'weETH', 'sUSDe', 'osETH'];
|
|
84
|
+
export const STAKING_ASSETS = ['cbETH', 'wstETH', 'cbETH', 'rETH', 'sDAI', 'weETH', 'sUSDe', 'osETH', 'ezETH'];
|
|
96
85
|
export const getStakingApy = (asset, web3, blockNumber = 'latest', fromBlock = undefined) => {
|
|
97
86
|
try {
|
|
98
87
|
if (asset === 'stETH' || asset === 'wstETH')
|
|
@@ -104,11 +93,13 @@ export const getStakingApy = (asset, web3, blockNumber = 'latest', fromBlock = u
|
|
|
104
93
|
if (asset === 'sDAI')
|
|
105
94
|
return getDsrApy(web3);
|
|
106
95
|
if (asset === 'sUSDe')
|
|
107
|
-
return
|
|
96
|
+
return getApyFromDfsApi('sUSDe');
|
|
108
97
|
if (asset === 'weETH')
|
|
109
|
-
return
|
|
98
|
+
return getApyFromDfsApi('weETH');
|
|
99
|
+
if (asset === 'ezETH')
|
|
100
|
+
return getApyFromDfsApi('ezETH');
|
|
110
101
|
if (asset === 'osETH')
|
|
111
|
-
return
|
|
102
|
+
return getApyFromDfsApi('osETH');
|
|
112
103
|
}
|
|
113
104
|
catch (e) {
|
|
114
105
|
console.error(`Failed to fetch APY for ${asset}`);
|
|
@@ -27,11 +27,17 @@ export declare enum MorphoBlueVersions {
|
|
|
27
27
|
MorphoBlueUSDeDAI_860 = "morphoblueusdedai_860",
|
|
28
28
|
MorphoBlueUSDeDAI_915 = "morphoblueusdedai_915",
|
|
29
29
|
MorphoBlueUSDeDAI_945 = "morphoblueusdedai_945",
|
|
30
|
-
MorphoBlueCbEthUSDC_860_Base = "morphobluecbethusdc_860_base"
|
|
30
|
+
MorphoBlueCbEthUSDC_860_Base = "morphobluecbethusdc_860_base",
|
|
31
|
+
MorphoBlueWstEthEth_945_Base = "morphobluewstetheth_945_base",
|
|
32
|
+
MorphoBlueWstEthEth_965_Base = "morphobluewstetheth_965_base",
|
|
33
|
+
MorphoBlueWstEthUSDC_860_Base = "morphobluewstethusdc_860_base",
|
|
34
|
+
MorphoBlueCbEthEth_965_Base = "morphobluecbetheth_965_base",
|
|
35
|
+
MorphoBlueEthUSDC_860_Base = "morphoblueethusdc_860_base"
|
|
31
36
|
}
|
|
32
37
|
export declare enum MorphoBlueOracleType {
|
|
33
38
|
MARKET_RATE = "Market rate",
|
|
34
|
-
LIDO_RATE = "Lido rate"
|
|
39
|
+
LIDO_RATE = "Lido rate",
|
|
40
|
+
ETHENA_RATE = "Ethena rate"
|
|
35
41
|
}
|
|
36
42
|
export interface MorphoBlueMarketData {
|
|
37
43
|
chainIds: NetworkNumber[];
|
package/esm/types/morphoBlue.js
CHANGED
|
@@ -33,9 +33,15 @@ export var MorphoBlueVersions;
|
|
|
33
33
|
MorphoBlueVersions["MorphoBlueUSDeDAI_945"] = "morphoblueusdedai_945";
|
|
34
34
|
// BASE
|
|
35
35
|
MorphoBlueVersions["MorphoBlueCbEthUSDC_860_Base"] = "morphobluecbethusdc_860_base";
|
|
36
|
+
MorphoBlueVersions["MorphoBlueWstEthEth_945_Base"] = "morphobluewstetheth_945_base";
|
|
37
|
+
MorphoBlueVersions["MorphoBlueWstEthEth_965_Base"] = "morphobluewstetheth_965_base";
|
|
38
|
+
MorphoBlueVersions["MorphoBlueWstEthUSDC_860_Base"] = "morphobluewstethusdc_860_base";
|
|
39
|
+
MorphoBlueVersions["MorphoBlueCbEthEth_965_Base"] = "morphobluecbetheth_965_base";
|
|
40
|
+
MorphoBlueVersions["MorphoBlueEthUSDC_860_Base"] = "morphoblueethusdc_860_base";
|
|
36
41
|
})(MorphoBlueVersions || (MorphoBlueVersions = {}));
|
|
37
42
|
export var MorphoBlueOracleType;
|
|
38
43
|
(function (MorphoBlueOracleType) {
|
|
39
44
|
MorphoBlueOracleType["MARKET_RATE"] = "Market rate";
|
|
40
45
|
MorphoBlueOracleType["LIDO_RATE"] = "Lido rate";
|
|
46
|
+
MorphoBlueOracleType["ETHENA_RATE"] = "Ethena rate";
|
|
41
47
|
})(MorphoBlueOracleType || (MorphoBlueOracleType = {}));
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@defisaver/positions-sdk",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.86",
|
|
4
4
|
"description": "",
|
|
5
5
|
"main": "./cjs/index.js",
|
|
6
6
|
"module": "./esm/index.js",
|
|
@@ -22,7 +22,6 @@
|
|
|
22
22
|
"@defisaver/tokens": "^1.5.23",
|
|
23
23
|
"@ethersproject/bignumber": "^5.7.0",
|
|
24
24
|
"@morpho-org/morpho-aave-v3-sdk": "^1.5.3",
|
|
25
|
-
"@stakewise/v3-sdk": "^1.3.0",
|
|
26
25
|
"decimal.js": "^10.4.3"
|
|
27
26
|
},
|
|
28
27
|
"devDependencies": {
|
package/src/aaveV2/index.ts
CHANGED
|
@@ -7,7 +7,7 @@ import {
|
|
|
7
7
|
import { calculateNetApy, getStETHApr } from '../staking';
|
|
8
8
|
import { ethToWeth, wethToEth, wethToEthByAddress } from '../services/utils';
|
|
9
9
|
import { AaveLoanInfoV2Contract, createContractWrapper } from '../contracts';
|
|
10
|
-
import { calculateBorrowingAssetLimit } from '../moneymarket';
|
|
10
|
+
import { aprToApy, calculateBorrowingAssetLimit } from '../moneymarket';
|
|
11
11
|
import {
|
|
12
12
|
AaveMarketInfo, AaveV2AssetData, AaveV2AssetsData, AaveV2PositionData, AaveV2UsedAsset, AaveV2UsedAssets,
|
|
13
13
|
} from '../types';
|
|
@@ -26,9 +26,9 @@ export const getAaveV2MarketsData = async (web3: Web3, network: NetworkNumber, s
|
|
|
26
26
|
.map((market, i) => ({
|
|
27
27
|
symbol: selectedMarket.assets[i],
|
|
28
28
|
underlyingTokenAddress: market.underlyingTokenAddress,
|
|
29
|
-
supplyRate: new Dec(market.supplyRate.toString()).div(1e25).toString(),
|
|
30
|
-
borrowRate: new Dec(market.borrowRateVariable.toString()).div(1e25).toString(),
|
|
31
|
-
borrowRateStable: new Dec(market.borrowRateStable.toString()).div(1e25).toString(),
|
|
29
|
+
supplyRate: aprToApy(new Dec(market.supplyRate.toString()).div(1e25).toString()),
|
|
30
|
+
borrowRate: aprToApy(new Dec(market.borrowRateVariable.toString()).div(1e25).toString()),
|
|
31
|
+
borrowRateStable: aprToApy(new Dec(market.borrowRateStable.toString()).div(1e25).toString()),
|
|
32
32
|
collateralFactor: new Dec(market.collateralFactor.toString()).div(10000).toString(),
|
|
33
33
|
liquidationRatio: new Dec(market.liquidationRatio.toString()).div(10000).toString(),
|
|
34
34
|
marketLiquidity: assetAmountInEth(new Dec(market.totalSupply.toString())
|
|
@@ -173,7 +173,7 @@ export const getAaveV2AccountData = async (web3: Web3, network: NetworkNumber, a
|
|
|
173
173
|
suppliedUsd: new Dec(supplied).mul(assetsData[asset].price).toString(),
|
|
174
174
|
isSupplied,
|
|
175
175
|
collateral: enabledAsCollateral,
|
|
176
|
-
stableBorrowRate: new Dec(tokenInfo.stableBorrowRate).div(1e25).toString(),
|
|
176
|
+
stableBorrowRate: aprToApy(new Dec(tokenInfo.stableBorrowRate).div(1e25).toString()),
|
|
177
177
|
borrowedStable,
|
|
178
178
|
borrowedVariable,
|
|
179
179
|
borrowedUsdStable: new Dec(borrowedStable).mul(assetsData[asset].price).toString(),
|
package/src/aaveV3/index.ts
CHANGED
|
@@ -30,7 +30,7 @@ import { calculateNetApy, getStakingApy, STAKING_ASSETS } from '../staking';
|
|
|
30
30
|
import { multicall } from '../multicall';
|
|
31
31
|
import { IUiIncentiveDataProviderV3 } from '../types/contracts/generated/AaveUiIncentiveDataProviderV3';
|
|
32
32
|
import { getAssetsBalances } from '../assets';
|
|
33
|
-
import { calculateBorrowingAssetLimit } from '../moneymarket';
|
|
33
|
+
import { aprToApy, calculateBorrowingAssetLimit } from '../moneymarket';
|
|
34
34
|
import {
|
|
35
35
|
aaveAnyGetAggregatedPositionData,
|
|
36
36
|
aaveV3IsInIsolationMode,
|
|
@@ -206,7 +206,6 @@ export async function getAaveV3MarketData(web3: Web3, network: NetworkNumber, ma
|
|
|
206
206
|
if (new Dec(marketLiquidity).lt(0)) {
|
|
207
207
|
marketLiquidity = '0';
|
|
208
208
|
}
|
|
209
|
-
|
|
210
209
|
return ({
|
|
211
210
|
nativeAsset,
|
|
212
211
|
...addToObjectIf(nativeAsset, {
|
|
@@ -225,10 +224,10 @@ export async function getAaveV3MarketData(web3: Web3, network: NetworkNumber, ma
|
|
|
225
224
|
isolationModeTotalDebt: new Dec(tokenMarket.isolationModeTotalDebt).div(100).toString(),
|
|
226
225
|
assetId: Number(tokenMarket.assetId),
|
|
227
226
|
underlyingTokenAddress: tokenMarket.underlyingTokenAddress,
|
|
228
|
-
supplyRate: new Dec(tokenMarket.supplyRate.toString()).div(1e25).toString(),
|
|
229
|
-
borrowRate: new Dec(tokenMarket.borrowRateVariable.toString()).div(1e25).toString(),
|
|
230
|
-
borrowRateDiscounted: nativeAsset ? new Dec(tokenMarket.borrowRateVariable.toString()).div(1e25).mul(1 - parseFloat(discountRateOnBorrow)).toString() : '0',
|
|
231
|
-
borrowRateStable: new Dec(tokenMarket.borrowRateStable.toString()).div(1e25).toString(),
|
|
227
|
+
supplyRate: aprToApy(new Dec(tokenMarket.supplyRate.toString()).div(1e25).toString()),
|
|
228
|
+
borrowRate: aprToApy(new Dec(tokenMarket.borrowRateVariable.toString()).div(1e25).toString()),
|
|
229
|
+
borrowRateDiscounted: aprToApy(nativeAsset ? new Dec(tokenMarket.borrowRateVariable.toString()).div(1e25).mul(1 - parseFloat(discountRateOnBorrow)).toString() : '0'),
|
|
230
|
+
borrowRateStable: aprToApy(new Dec(tokenMarket.borrowRateStable.toString()).div(1e25).toString()),
|
|
232
231
|
collateralFactor: new Dec(tokenMarket.collateralFactor.toString()).div(10000).toString(),
|
|
233
232
|
liquidationRatio: new Dec(tokenMarket.liquidationRatio.toString()).div(10000).toString(),
|
|
234
233
|
marketLiquidity,
|
|
@@ -500,8 +499,8 @@ export const getAaveV3AccountData = async (web3: Web3, network: NetworkNumber, a
|
|
|
500
499
|
suppliedUsd: new Dec(supplied).mul(assetsData[asset].price).toString(),
|
|
501
500
|
isSupplied,
|
|
502
501
|
collateral: enabledAsCollateral,
|
|
503
|
-
stableBorrowRate: new Dec(tokenInfo.stableBorrowRate).div(1e25).toString(),
|
|
504
|
-
discountedBorrowRate: new Dec(assetsData[asset].borrowRate).mul(1 - parseFloat(discountRateOnBorrow)).toString(),
|
|
502
|
+
stableBorrowRate: aprToApy(new Dec(tokenInfo.stableBorrowRate).div(1e25).toString()),
|
|
503
|
+
discountedBorrowRate: aprToApy(new Dec(assetsData[asset].borrowRate).mul(1 - parseFloat(discountRateOnBorrow)).toString()),
|
|
505
504
|
borrowedStable,
|
|
506
505
|
borrowedVariable,
|
|
507
506
|
borrowedUsdStable: new Dec(borrowedStable).mul(assetsData[asset].price).toString(),
|
|
@@ -301,7 +301,7 @@ export const MORPHO_BLUE_SUSDE_DAI_770 = (networkId: NetworkNumber = NetworkNumb
|
|
|
301
301
|
loanToken: '0x6B175474E89094C44Da98b954EedeAC495271d0F',
|
|
302
302
|
collateralToken: '0x9D39A5DE30e57443BfF2A8307A4256c8797A3497',
|
|
303
303
|
oracle: '0x5D916980D5Ae1737a8330Bf24dF812b2911Aae25',
|
|
304
|
-
oracleType: MorphoBlueOracleType.
|
|
304
|
+
oracleType: MorphoBlueOracleType.ETHENA_RATE,
|
|
305
305
|
irm: '0x870aC11D48B15DB9a138Cf899d20F13F79Ba00BC',
|
|
306
306
|
lltv: 0.77,
|
|
307
307
|
marketId: '0x42dcfb38bb98767afb6e38ccf90d59d0d3f0aa216beb3a234f12850323d17536',
|
|
@@ -316,7 +316,7 @@ export const MORPHO_BLUE_SUSDE_DAI_860 = (networkId: NetworkNumber = NetworkNumb
|
|
|
316
316
|
loanToken: '0x6B175474E89094C44Da98b954EedeAC495271d0F',
|
|
317
317
|
collateralToken: '0x9D39A5DE30e57443BfF2A8307A4256c8797A3497',
|
|
318
318
|
oracle: '0x5D916980D5Ae1737a8330Bf24dF812b2911Aae25',
|
|
319
|
-
oracleType: MorphoBlueOracleType.
|
|
319
|
+
oracleType: MorphoBlueOracleType.ETHENA_RATE,
|
|
320
320
|
irm: '0x870aC11D48B15DB9a138Cf899d20F13F79Ba00BC',
|
|
321
321
|
lltv: 0.86,
|
|
322
322
|
marketId: '0x39d11026eae1c6ec02aa4c0910778664089cdd97c3fd23f68f7cd05e2e95af48',
|
|
@@ -331,7 +331,7 @@ export const MORPHO_BLUE_SUSDE_DAI_915 = (networkId: NetworkNumber = NetworkNumb
|
|
|
331
331
|
loanToken: '0x6B175474E89094C44Da98b954EedeAC495271d0F',
|
|
332
332
|
collateralToken: '0x9D39A5DE30e57443BfF2A8307A4256c8797A3497',
|
|
333
333
|
oracle: '0x5D916980D5Ae1737a8330Bf24dF812b2911Aae25',
|
|
334
|
-
oracleType: MorphoBlueOracleType.
|
|
334
|
+
oracleType: MorphoBlueOracleType.ETHENA_RATE,
|
|
335
335
|
irm: '0x870aC11D48B15DB9a138Cf899d20F13F79Ba00BC',
|
|
336
336
|
lltv: 0.915,
|
|
337
337
|
marketId: '0x1247f1c237eceae0602eab1470a5061a6dd8f734ba88c7cdc5d6109fb0026b28',
|
|
@@ -346,7 +346,7 @@ export const MORPHO_BLUE_SUSDE_DAI_945 = (networkId: NetworkNumber = NetworkNumb
|
|
|
346
346
|
loanToken: '0x6B175474E89094C44Da98b954EedeAC495271d0F',
|
|
347
347
|
collateralToken: '0x9D39A5DE30e57443BfF2A8307A4256c8797A3497',
|
|
348
348
|
oracle: '0x5D916980D5Ae1737a8330Bf24dF812b2911Aae25',
|
|
349
|
-
oracleType: MorphoBlueOracleType.
|
|
349
|
+
oracleType: MorphoBlueOracleType.ETHENA_RATE,
|
|
350
350
|
irm: '0x870aC11D48B15DB9a138Cf899d20F13F79Ba00BC',
|
|
351
351
|
lltv: 0.945,
|
|
352
352
|
marketId: '0xe475337d11be1db07f7c5a156e511f05d1844308e66e17d2ba5da0839d3b34d9',
|
|
@@ -363,7 +363,7 @@ export const MORPHO_BLUE_USDE_DAI_770 = (networkId: NetworkNumber = NetworkNumbe
|
|
|
363
363
|
loanToken: '0x6B175474E89094C44Da98b954EedeAC495271d0F',
|
|
364
364
|
collateralToken: '0x4c9EDD5852cd905f086C759E8383e09bff1E68B3',
|
|
365
365
|
oracle: '0xaE4750d0813B5E37A51f7629beedd72AF1f9cA35',
|
|
366
|
-
oracleType: MorphoBlueOracleType.
|
|
366
|
+
oracleType: MorphoBlueOracleType.ETHENA_RATE,
|
|
367
367
|
irm: '0x870aC11D48B15DB9a138Cf899d20F13F79Ba00BC',
|
|
368
368
|
lltv: 0.77,
|
|
369
369
|
marketId: '0xfd8493f09eb6203615221378d89f53fcd92ff4f7d62cca87eece9a2fff59e86f',
|
|
@@ -378,7 +378,7 @@ export const MORPHO_BLUE_USDE_DAI_860 = (networkId: NetworkNumber = NetworkNumbe
|
|
|
378
378
|
loanToken: '0x6B175474E89094C44Da98b954EedeAC495271d0F',
|
|
379
379
|
collateralToken: '0x4c9EDD5852cd905f086C759E8383e09bff1E68B3',
|
|
380
380
|
oracle: '0xaE4750d0813B5E37A51f7629beedd72AF1f9cA35',
|
|
381
|
-
oracleType: MorphoBlueOracleType.
|
|
381
|
+
oracleType: MorphoBlueOracleType.ETHENA_RATE,
|
|
382
382
|
irm: '0x870aC11D48B15DB9a138Cf899d20F13F79Ba00BC',
|
|
383
383
|
lltv: 0.86,
|
|
384
384
|
marketId: '0xc581c5f70bd1afa283eed57d1418c6432cbff1d862f94eaf58fdd4e46afbb67f',
|
|
@@ -393,7 +393,7 @@ export const MORPHO_BLUE_USDE_DAI_915 = (networkId: NetworkNumber = NetworkNumbe
|
|
|
393
393
|
loanToken: '0x6B175474E89094C44Da98b954EedeAC495271d0F',
|
|
394
394
|
collateralToken: '0x4c9EDD5852cd905f086C759E8383e09bff1E68B3',
|
|
395
395
|
oracle: '0xaE4750d0813B5E37A51f7629beedd72AF1f9cA35',
|
|
396
|
-
oracleType: MorphoBlueOracleType.
|
|
396
|
+
oracleType: MorphoBlueOracleType.ETHENA_RATE,
|
|
397
397
|
irm: '0x870aC11D48B15DB9a138Cf899d20F13F79Ba00BC',
|
|
398
398
|
lltv: 0.915,
|
|
399
399
|
marketId: '0x8e6aeb10c401de3279ac79b4b2ea15fc94b7d9cfc098d6c2a1ff7b2b26d9d02c',
|
|
@@ -408,7 +408,7 @@ export const MORPHO_BLUE_USDE_DAI_945 = (networkId: NetworkNumber = NetworkNumbe
|
|
|
408
408
|
loanToken: '0x6B175474E89094C44Da98b954EedeAC495271d0F',
|
|
409
409
|
collateralToken: '0x4c9EDD5852cd905f086C759E8383e09bff1E68B3',
|
|
410
410
|
oracle: '0xaE4750d0813B5E37A51f7629beedd72AF1f9cA35',
|
|
411
|
-
oracleType: MorphoBlueOracleType.
|
|
411
|
+
oracleType: MorphoBlueOracleType.ETHENA_RATE,
|
|
412
412
|
irm: '0x870aC11D48B15DB9a138Cf899d20F13F79Ba00BC',
|
|
413
413
|
lltv: 0.945,
|
|
414
414
|
marketId: '0xdb760246f6859780f6c1b272d47a8f64710777121118e56e0cdb4b8b744a3094',
|
|
@@ -432,6 +432,81 @@ export const MORPHO_BLUE_CBETH_USDC_860_BASE = (networkId: NetworkNumber = Netwo
|
|
|
432
432
|
marketId: '0xdba352d93a64b17c71104cbddc6aef85cd432322a1446b5b65163cbbc615cd0c',
|
|
433
433
|
protocolName: 'morpho-blue',
|
|
434
434
|
});
|
|
435
|
+
export const MORPHO_BLUE_WSTETH_ETH_945_BASE = (networkId: NetworkNumber = NetworkNumber.Eth): MorphoBlueMarketData => ({
|
|
436
|
+
chainIds: [NetworkNumber.Base],
|
|
437
|
+
label: 'Morpho Blue',
|
|
438
|
+
shortLabel: 'wstETH/ETH',
|
|
439
|
+
value: MorphoBlueVersions.MorphoBlueWstEthEth_945_Base,
|
|
440
|
+
url: 'wstetheth-e3c4d4d0',
|
|
441
|
+
loanToken: '0x4200000000000000000000000000000000000006',
|
|
442
|
+
collateralToken: '0xc1CBa3fCea344f92D9239c08C0568f6F2F0ee452',
|
|
443
|
+
oracle: '0xaE10cbdAa587646246c8253E4532A002EE4fa7A4',
|
|
444
|
+
oracleType: MorphoBlueOracleType.MARKET_RATE,
|
|
445
|
+
irm: '0x46415998764C29aB2a25CbeA6254146D50D22687',
|
|
446
|
+
lltv: 0.945,
|
|
447
|
+
marketId: '0xe3c4d4d0e214fdc52635d7f9b2f7b3b0081771ae2efeb3cb5aae26009f34f7a7',
|
|
448
|
+
protocolName: 'morpho-blue',
|
|
449
|
+
});
|
|
450
|
+
export const MORPHO_BLUE_WSTETH_ETH_965_BASE = (networkId: NetworkNumber = NetworkNumber.Eth): MorphoBlueMarketData => ({
|
|
451
|
+
chainIds: [NetworkNumber.Base],
|
|
452
|
+
label: 'Morpho Blue',
|
|
453
|
+
shortLabel: 'wstETH/ETH',
|
|
454
|
+
value: MorphoBlueVersions.MorphoBlueWstEthEth_965_Base,
|
|
455
|
+
url: 'wstetheth-6aa81f51',
|
|
456
|
+
loanToken: '0x4200000000000000000000000000000000000006',
|
|
457
|
+
collateralToken: '0xc1CBa3fCea344f92D9239c08C0568f6F2F0ee452',
|
|
458
|
+
oracle: '0xaE10cbdAa587646246c8253E4532A002EE4fa7A4',
|
|
459
|
+
oracleType: MorphoBlueOracleType.MARKET_RATE,
|
|
460
|
+
irm: '0x46415998764C29aB2a25CbeA6254146D50D22687',
|
|
461
|
+
lltv: 0.965,
|
|
462
|
+
marketId: '0x6aa81f51dfc955df598e18006deae56ce907ac02b0b5358705f1a28fcea23cc0',
|
|
463
|
+
protocolName: 'morpho-blue',
|
|
464
|
+
});
|
|
465
|
+
export const MORPHO_BLUE_WSTETH_USDC_860_BASE = (networkId: NetworkNumber = NetworkNumber.Eth): MorphoBlueMarketData => ({
|
|
466
|
+
chainIds: [NetworkNumber.Base],
|
|
467
|
+
label: 'Morpho Blue',
|
|
468
|
+
shortLabel: 'wstETH/USDC',
|
|
469
|
+
value: MorphoBlueVersions.MorphoBlueWstEthUSDC_860_Base,
|
|
470
|
+
url: 'wstethusdc-a066f389',
|
|
471
|
+
loanToken: '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913',
|
|
472
|
+
collateralToken: '0xc1CBa3fCea344f92D9239c08C0568f6F2F0ee452',
|
|
473
|
+
oracle: '0x957e76d8f2D3ab0B4f342cd5f4b03A6f6eF2ce5F',
|
|
474
|
+
oracleType: MorphoBlueOracleType.MARKET_RATE,
|
|
475
|
+
irm: '0x46415998764C29aB2a25CbeA6254146D50D22687',
|
|
476
|
+
lltv: 0.86,
|
|
477
|
+
marketId: '0xa066f3893b780833699043f824e5bb88b8df039886f524f62b9a1ac83cb7f1f0',
|
|
478
|
+
protocolName: 'morpho-blue',
|
|
479
|
+
});
|
|
480
|
+
export const MORPHO_BLUE_CBETH_ETH_965_BASE = (networkId: NetworkNumber = NetworkNumber.Eth): MorphoBlueMarketData => ({
|
|
481
|
+
chainIds: [NetworkNumber.Base],
|
|
482
|
+
label: 'Morpho Blue',
|
|
483
|
+
shortLabel: 'cbETH/ETH',
|
|
484
|
+
value: MorphoBlueVersions.MorphoBlueCbEthEth_965_Base,
|
|
485
|
+
url: 'cbetheth-6600aae6',
|
|
486
|
+
loanToken: '0x4200000000000000000000000000000000000006',
|
|
487
|
+
collateralToken: '0x2Ae3F1Ec7F1F5012CFEab0185bfc7aa3cf0DEc22',
|
|
488
|
+
oracle: '0xB03855Ad5AFD6B8db8091DD5551CAC4ed621d9E6',
|
|
489
|
+
oracleType: MorphoBlueOracleType.MARKET_RATE,
|
|
490
|
+
irm: '0x46415998764C29aB2a25CbeA6254146D50D22687',
|
|
491
|
+
lltv: 0.965,
|
|
492
|
+
marketId: '0x6600aae6c56d242fa6ba68bd527aff1a146e77813074413186828fd3f1cdca91',
|
|
493
|
+
protocolName: 'morpho-blue',
|
|
494
|
+
});
|
|
495
|
+
export const MORPHO_BLUE_ETH_USDC_860_BASE = (networkId: NetworkNumber = NetworkNumber.Eth): MorphoBlueMarketData => ({
|
|
496
|
+
chainIds: [NetworkNumber.Base],
|
|
497
|
+
label: 'Morpho Blue',
|
|
498
|
+
shortLabel: 'ETH/USDC',
|
|
499
|
+
value: MorphoBlueVersions.MorphoBlueEthUSDC_860_Base,
|
|
500
|
+
url: 'ethusdc-8793cf30',
|
|
501
|
+
loanToken: '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913',
|
|
502
|
+
collateralToken: '0x4200000000000000000000000000000000000006',
|
|
503
|
+
oracle: '0xFEa2D58cEfCb9fcb597723c6bAE66fFE4193aFE4',
|
|
504
|
+
oracleType: MorphoBlueOracleType.MARKET_RATE,
|
|
505
|
+
irm: '0x46415998764C29aB2a25CbeA6254146D50D22687',
|
|
506
|
+
lltv: 0.86,
|
|
507
|
+
marketId: '0x8793cf302b8ffd655ab97bd1c695dbd967807e8367a65cb2f4edaf1380ba1bda',
|
|
508
|
+
protocolName: 'morpho-blue',
|
|
509
|
+
});
|
|
435
510
|
|
|
436
511
|
export const MorphoBlueMarkets = (networkId: NetworkNumber) => ({
|
|
437
512
|
[MorphoBlueVersions.MorphoBlueWstEthUSDC]: MORPHO_BLUE_WSTETH_USDC(networkId),
|
|
@@ -465,7 +540,13 @@ export const MorphoBlueMarkets = (networkId: NetworkNumber) => ({
|
|
|
465
540
|
[MorphoBlueVersions.MorphoBlueUSDeDAI_915]: MORPHO_BLUE_USDE_DAI_915(networkId),
|
|
466
541
|
[MorphoBlueVersions.MorphoBlueUSDeDAI_945]: MORPHO_BLUE_USDE_DAI_945(networkId),
|
|
467
542
|
|
|
543
|
+
// Base
|
|
468
544
|
[MorphoBlueVersions.MorphoBlueCbEthUSDC_860_Base]: MORPHO_BLUE_CBETH_USDC_860_BASE(networkId),
|
|
545
|
+
[MorphoBlueVersions.MorphoBlueWstEthEth_945_Base]: MORPHO_BLUE_WSTETH_ETH_945_BASE(networkId),
|
|
546
|
+
[MorphoBlueVersions.MorphoBlueWstEthEth_965_Base]: MORPHO_BLUE_WSTETH_ETH_965_BASE(networkId),
|
|
547
|
+
[MorphoBlueVersions.MorphoBlueWstEthUSDC_860_Base]: MORPHO_BLUE_WSTETH_USDC_860_BASE(networkId),
|
|
548
|
+
[MorphoBlueVersions.MorphoBlueCbEthEth_965_Base]: MORPHO_BLUE_CBETH_ETH_965_BASE(networkId),
|
|
549
|
+
[MorphoBlueVersions.MorphoBlueEthUSDC_860_Base]: MORPHO_BLUE_ETH_USDC_860_BASE(networkId),
|
|
469
550
|
}) as const;
|
|
470
551
|
|
|
471
552
|
export const findMorphoBlueMarket = (collateralToken: string, loanToken: string, lltv: number, oracle: string, irm: string, network = NetworkNumber.Eth) => {
|
|
@@ -73,4 +73,4 @@ export const isLeveragedPos = (usedAssets: MMUsedAssets, dustLimit = 5) => {
|
|
|
73
73
|
};
|
|
74
74
|
};
|
|
75
75
|
|
|
76
|
-
export const aprToApy = (interest:
|
|
76
|
+
export const aprToApy = (interest:string | number, frequency = BLOCKS_IN_A_YEAR) => new Dec(interest).div(100).div(frequency).plus(1).pow(frequency).minus(1).times(100).toString();
|