@defisaver/positions-sdk 0.0.75 → 0.0.76
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/config/contracts.d.ts +3 -0
- package/cjs/config/contracts.js +3 -0
- package/cjs/markets/morphoBlue/index.d.ts +2 -0
- package/cjs/markets/morphoBlue/index.js +19 -1
- package/cjs/morphoBlue/index.js +11 -24
- package/cjs/types/morphoBlue.d.ts +2 -1
- package/cjs/types/morphoBlue.js +3 -0
- package/esm/config/contracts.d.ts +3 -0
- package/esm/config/contracts.js +3 -0
- package/esm/markets/morphoBlue/index.d.ts +2 -0
- package/esm/markets/morphoBlue/index.js +17 -0
- package/esm/morphoBlue/index.js +13 -26
- package/esm/types/morphoBlue.d.ts +2 -1
- package/esm/types/morphoBlue.js +3 -0
- package/package.json +1 -1
- package/src/config/contracts.js +3 -0
- package/src/markets/morphoBlue/index.ts +20 -0
- package/src/morphoBlue/index.ts +13 -29
- package/src/types/morphoBlue.ts +4 -0
package/cjs/config/contracts.js
CHANGED
|
@@ -26,6 +26,7 @@ export declare const MORPHO_BLUE_USDE_DAI_770: (networkId?: NetworkNumber) => Mo
|
|
|
26
26
|
export declare const MORPHO_BLUE_USDE_DAI_860: (networkId?: NetworkNumber) => MorphoBlueMarketData;
|
|
27
27
|
export declare const MORPHO_BLUE_USDE_DAI_915: (networkId?: NetworkNumber) => MorphoBlueMarketData;
|
|
28
28
|
export declare const MORPHO_BLUE_USDE_DAI_945: (networkId?: NetworkNumber) => MorphoBlueMarketData;
|
|
29
|
+
export declare const MORPHO_BLUE_CBETH_USDC_860: (networkId?: NetworkNumber) => MorphoBlueMarketData;
|
|
29
30
|
export declare const MorphoBlueMarkets: (networkId: NetworkNumber) => {
|
|
30
31
|
readonly morphobluewstethusdc: MorphoBlueMarketData;
|
|
31
32
|
readonly morphobluesdaiusdc: MorphoBlueMarketData;
|
|
@@ -53,5 +54,6 @@ export declare const MorphoBlueMarkets: (networkId: NetworkNumber) => {
|
|
|
53
54
|
readonly morphoblueusdedai_860: MorphoBlueMarketData;
|
|
54
55
|
readonly morphoblueusdedai_915: MorphoBlueMarketData;
|
|
55
56
|
readonly morphoblueusdedai_945: MorphoBlueMarketData;
|
|
57
|
+
readonly morphobluecbethusdc_860: MorphoBlueMarketData;
|
|
56
58
|
};
|
|
57
59
|
export declare const findMorphoBlueMarket: (collateralToken: string, loanToken: string, lltv: number, oracle: string, irm: string, network?: NetworkNumber) => MorphoBlueMarketData | null;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.findMorphoBlueMarket = exports.MorphoBlueMarkets = exports.MORPHO_BLUE_USDE_DAI_945 = exports.MORPHO_BLUE_USDE_DAI_915 = exports.MORPHO_BLUE_USDE_DAI_860 = exports.MORPHO_BLUE_USDE_DAI_770 = exports.MORPHO_BLUE_SUSDE_DAI_945 = exports.MORPHO_BLUE_SUSDE_DAI_915 = exports.MORPHO_BLUE_SUSDE_DAI_860 = exports.MORPHO_BLUE_SUSDE_DAI_770 = exports.MORPHO_BLUE_WSTETH_ETH_965_EXCHANGE_RATE = exports.MORPHO_BLUE_WSTETH_ETH_945_EXCHANGE_RATE = exports.MORPHO_BLUE_WSTETH_ETH_945 = exports.MORPHO_BLUE_EZETH_ETH = exports.MORPHO_BLUE_SDAI_ETH = exports.MORPHO_BLUE_SUSDE_USDT = exports.MORPHO_BLUE_USDE_USDT = exports.MORPHO_BLUE_WEETH_ETH = exports.MORPHO_BLUE_WSTETH_PYUSD = exports.MORPHO_BLUE_WSTETH_USDA_EXCHANGE_RATE = exports.MORPHO_BLUE_WSTETH_USDT = exports.MORPHO_BLUE_WBTC_ETH = exports.MORPHO_BLUE_WBTC_PYUSD = exports.MORPHO_BLUE_WBTC_USDT = exports.MORPHO_BLUE_ETH_USDC = exports.MORPHO_BLUE_WBTC_USDC = exports.MORPHO_BLUE_SDAI_USDC = exports.MORPHO_BLUE_WSTETH_USDC = void 0;
|
|
3
|
+
exports.findMorphoBlueMarket = exports.MorphoBlueMarkets = exports.MORPHO_BLUE_CBETH_USDC_860 = exports.MORPHO_BLUE_USDE_DAI_945 = exports.MORPHO_BLUE_USDE_DAI_915 = exports.MORPHO_BLUE_USDE_DAI_860 = exports.MORPHO_BLUE_USDE_DAI_770 = exports.MORPHO_BLUE_SUSDE_DAI_945 = exports.MORPHO_BLUE_SUSDE_DAI_915 = exports.MORPHO_BLUE_SUSDE_DAI_860 = exports.MORPHO_BLUE_SUSDE_DAI_770 = exports.MORPHO_BLUE_WSTETH_ETH_965_EXCHANGE_RATE = exports.MORPHO_BLUE_WSTETH_ETH_945_EXCHANGE_RATE = exports.MORPHO_BLUE_WSTETH_ETH_945 = exports.MORPHO_BLUE_EZETH_ETH = exports.MORPHO_BLUE_SDAI_ETH = exports.MORPHO_BLUE_SUSDE_USDT = exports.MORPHO_BLUE_USDE_USDT = exports.MORPHO_BLUE_WEETH_ETH = exports.MORPHO_BLUE_WSTETH_PYUSD = exports.MORPHO_BLUE_WSTETH_USDA_EXCHANGE_RATE = exports.MORPHO_BLUE_WSTETH_USDT = exports.MORPHO_BLUE_WBTC_ETH = exports.MORPHO_BLUE_WBTC_PYUSD = exports.MORPHO_BLUE_WBTC_USDT = exports.MORPHO_BLUE_ETH_USDC = exports.MORPHO_BLUE_WBTC_USDC = exports.MORPHO_BLUE_SDAI_USDC = exports.MORPHO_BLUE_WSTETH_USDC = void 0;
|
|
4
4
|
const utils_1 = require("../../services/utils");
|
|
5
5
|
const types_1 = require("../../types");
|
|
6
6
|
const common_1 = require("../../types/common");
|
|
@@ -423,6 +423,23 @@ const MORPHO_BLUE_USDE_DAI_945 = (networkId = common_1.NetworkNumber.Eth) => ({
|
|
|
423
423
|
protocolName: 'morpho-blue',
|
|
424
424
|
});
|
|
425
425
|
exports.MORPHO_BLUE_USDE_DAI_945 = MORPHO_BLUE_USDE_DAI_945;
|
|
426
|
+
// BASE
|
|
427
|
+
const MORPHO_BLUE_CBETH_USDC_860 = (networkId = common_1.NetworkNumber.Eth) => ({
|
|
428
|
+
chainIds: [common_1.NetworkNumber.Base],
|
|
429
|
+
label: 'Morpho Blue',
|
|
430
|
+
shortLabel: 'cbETH/ETH',
|
|
431
|
+
value: types_1.MorphoBlueVersions.MorphoBlueCbEthUSDC_860,
|
|
432
|
+
url: 'usdedai-dba352d9',
|
|
433
|
+
loanToken: '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913',
|
|
434
|
+
collateralToken: '0x2Ae3F1Ec7F1F5012CFEab0185bfc7aa3cf0DEc22',
|
|
435
|
+
oracle: '0x4756c26E01E61c7c2F86b10f4316e179db8F9425',
|
|
436
|
+
oracleType: types_1.MorphoBlueOracleType.MARKET_RATE,
|
|
437
|
+
irm: '0x46415998764C29aB2a25CbeA6254146D50D22687',
|
|
438
|
+
lltv: 0.86,
|
|
439
|
+
marketId: '0xdba352d93a64b17c71104cbddc6aef85cd432322a1446b5b65163cbbc615cd0c',
|
|
440
|
+
protocolName: 'morpho-blue',
|
|
441
|
+
});
|
|
442
|
+
exports.MORPHO_BLUE_CBETH_USDC_860 = MORPHO_BLUE_CBETH_USDC_860;
|
|
426
443
|
const MorphoBlueMarkets = (networkId) => ({
|
|
427
444
|
[types_1.MorphoBlueVersions.MorphoBlueWstEthUSDC]: (0, exports.MORPHO_BLUE_WSTETH_USDC)(networkId),
|
|
428
445
|
[types_1.MorphoBlueVersions.MorphoBlueSDAIUSDC]: (0, exports.MORPHO_BLUE_SDAI_USDC)(networkId),
|
|
@@ -453,6 +470,7 @@ const MorphoBlueMarkets = (networkId) => ({
|
|
|
453
470
|
[types_1.MorphoBlueVersions.MorphoBlueUSDeDAI_860]: (0, exports.MORPHO_BLUE_USDE_DAI_860)(networkId),
|
|
454
471
|
[types_1.MorphoBlueVersions.MorphoBlueUSDeDAI_915]: (0, exports.MORPHO_BLUE_USDE_DAI_915)(networkId),
|
|
455
472
|
[types_1.MorphoBlueVersions.MorphoBlueUSDeDAI_945]: (0, exports.MORPHO_BLUE_USDE_DAI_945)(networkId),
|
|
473
|
+
[types_1.MorphoBlueVersions.MorphoBlueCbEthUSDC_860]: (0, exports.MORPHO_BLUE_CBETH_USDC_860)(networkId),
|
|
456
474
|
});
|
|
457
475
|
exports.MorphoBlueMarkets = MorphoBlueMarkets;
|
|
458
476
|
const findMorphoBlueMarket = (collateralToken, loanToken, lltv, oracle, irm, network = common_1.NetworkNumber.Eth) => {
|
package/cjs/morphoBlue/index.js
CHANGED
|
@@ -15,11 +15,11 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
15
15
|
exports.getMorphoBlueAccountData = exports.getMorphoBlueMarketData = void 0;
|
|
16
16
|
const decimal_js_1 = __importDefault(require("decimal.js"));
|
|
17
17
|
const tokens_1 = require("@defisaver/tokens");
|
|
18
|
+
const common_1 = require("../types/common");
|
|
18
19
|
const contracts_1 = require("../contracts");
|
|
19
20
|
const constants_1 = require("../constants");
|
|
20
21
|
const staking_1 = require("../staking");
|
|
21
22
|
const utils_1 = require("../services/utils");
|
|
22
|
-
const multicall_1 = require("../multicall");
|
|
23
23
|
const morphoBlueHelpers_1 = require("../helpers/morphoBlueHelpers");
|
|
24
24
|
const compound = (ratePerSeconds) => {
|
|
25
25
|
const compounding = new decimal_js_1.default(ratePerSeconds).mul(constants_1.SECONDS_PER_YEAR).toString();
|
|
@@ -48,32 +48,19 @@ function getMorphoBlueMarketData(web3, network, selectedMarket, mainnetWeb3) {
|
|
|
48
48
|
return __awaiter(this, void 0, void 0, function* () {
|
|
49
49
|
const { loanToken, collateralToken, oracle, irm, lltv, oracleType, } = selectedMarket;
|
|
50
50
|
const lltvInWei = new decimal_js_1.default(lltv).mul(constants_1.WAD).toString();
|
|
51
|
-
const loanTokenInfo = (0, tokens_1.getAssetInfoByAddress)(loanToken);
|
|
52
|
-
const collateralTokenInfo = (0, tokens_1.getAssetInfoByAddress)(collateralToken);
|
|
53
|
-
let loanTokenFeedAddress =
|
|
51
|
+
const loanTokenInfo = (0, tokens_1.getAssetInfoByAddress)(loanToken, network);
|
|
52
|
+
const collateralTokenInfo = (0, tokens_1.getAssetInfoByAddress)(collateralToken, network);
|
|
53
|
+
let loanTokenFeedAddress = loanTokenInfo.addresses[common_1.NetworkNumber.Eth];
|
|
54
54
|
if (loanTokenInfo.symbol === 'WETH') {
|
|
55
55
|
const ethAddress = (0, tokens_1.getAssetInfo)('ETH').address;
|
|
56
56
|
loanTokenFeedAddress = ethAddress;
|
|
57
57
|
}
|
|
58
|
-
const
|
|
59
|
-
const
|
|
60
|
-
const
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
target: FeedRegistryAddress,
|
|
65
|
-
abiItem: (0, utils_1.getAbiItem)(FeedRegistryAbi, 'latestAnswer'),
|
|
66
|
-
params: [loanTokenFeedAddress, constants_1.USD_QUOTE],
|
|
67
|
-
},
|
|
68
|
-
{
|
|
69
|
-
target: viewContractAddress,
|
|
70
|
-
abiItem: (0, utils_1.getAbiItem)(viewContractAbi, 'getMarketInfoNotTuple'),
|
|
71
|
-
params: [loanToken, collateralToken, oracle, irm, lltvInWei],
|
|
72
|
-
},
|
|
73
|
-
];
|
|
74
|
-
const multicallData = yield (0, multicall_1.multicall)(multicallCallsObject, web3, network);
|
|
75
|
-
const loanTokenPrice = multicallData[0][0];
|
|
76
|
-
const marketInfo = multicallData[1][0];
|
|
58
|
+
const feedRegistryContract = (0, contracts_1.FeedRegistryContract)(mainnetWeb3, common_1.NetworkNumber.Eth);
|
|
59
|
+
const morphoBlueViewContract = (0, contracts_1.MorphoBlueViewContract)(web3, network);
|
|
60
|
+
const [loanTokenPrice, marketInfo] = yield Promise.all([
|
|
61
|
+
loanTokenInfo.symbol === 'USDA' ? '100000000' : feedRegistryContract.methods.latestAnswer(loanTokenFeedAddress, constants_1.USD_QUOTE).call(),
|
|
62
|
+
morphoBlueViewContract.methods.getMarketInfoNotTuple(loanToken, collateralToken, oracle, irm, lltvInWei).call(),
|
|
63
|
+
]);
|
|
77
64
|
const supplyRate = getSupplyRate(marketInfo.totalSupplyAssets, marketInfo.totalBorrowAssets, marketInfo.borrowRate, marketInfo.fee);
|
|
78
65
|
const compoundedBorrowRate = getBorrowRate(marketInfo.borrowRate, marketInfo.totalBorrowShares);
|
|
79
66
|
const utillization = new decimal_js_1.default(marketInfo.totalBorrowAssets).div(marketInfo.totalSupplyAssets).mul(100).toString();
|
|
@@ -85,7 +72,7 @@ function getMorphoBlueMarketData(web3, network, selectedMarket, mainnetWeb3) {
|
|
|
85
72
|
assetsData[(0, utils_1.wethToEth)(loanTokenInfo.symbol)] = {
|
|
86
73
|
symbol: (0, utils_1.wethToEth)(loanTokenInfo.symbol),
|
|
87
74
|
address: loanToken,
|
|
88
|
-
price:
|
|
75
|
+
price: new decimal_js_1.default(loanTokenPrice).div(1e8).toString(),
|
|
89
76
|
supplyRate: new decimal_js_1.default(supplyRate).div(constants_1.WAD).mul(100).toString(),
|
|
90
77
|
borrowRate: new decimal_js_1.default(compoundedBorrowRate).div(constants_1.WAD).mul(100).toString(),
|
|
91
78
|
totalSupply: new decimal_js_1.default(marketInfo.totalSupplyAssets).div(scale).toString(),
|
|
@@ -25,7 +25,8 @@ export declare enum MorphoBlueVersions {
|
|
|
25
25
|
MorphoBlueUSDeDAI_770 = "morphoblueusdedai_770",
|
|
26
26
|
MorphoBlueUSDeDAI_860 = "morphoblueusdedai_860",
|
|
27
27
|
MorphoBlueUSDeDAI_915 = "morphoblueusdedai_915",
|
|
28
|
-
MorphoBlueUSDeDAI_945 = "morphoblueusdedai_945"
|
|
28
|
+
MorphoBlueUSDeDAI_945 = "morphoblueusdedai_945",
|
|
29
|
+
MorphoBlueCbEthUSDC_860 = "morphobluecbethusdc_860"
|
|
29
30
|
}
|
|
30
31
|
export declare enum MorphoBlueOracleType {
|
|
31
32
|
MARKET_RATE = "Market rate",
|
package/cjs/types/morphoBlue.js
CHANGED
|
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.MorphoBlueOracleType = exports.MorphoBlueVersions = void 0;
|
|
4
4
|
var MorphoBlueVersions;
|
|
5
5
|
(function (MorphoBlueVersions) {
|
|
6
|
+
// MAINNET
|
|
6
7
|
MorphoBlueVersions["MorphoBlueWstEthUSDC"] = "morphobluewstethusdc";
|
|
7
8
|
MorphoBlueVersions["MorphoBlueSDAIUSDC"] = "morphobluesdaiusdc";
|
|
8
9
|
MorphoBlueVersions["MorphoBlueWBTCUSDC"] = "morphobluewbtcusdc";
|
|
@@ -32,6 +33,8 @@ var MorphoBlueVersions;
|
|
|
32
33
|
MorphoBlueVersions["MorphoBlueUSDeDAI_860"] = "morphoblueusdedai_860";
|
|
33
34
|
MorphoBlueVersions["MorphoBlueUSDeDAI_915"] = "morphoblueusdedai_915";
|
|
34
35
|
MorphoBlueVersions["MorphoBlueUSDeDAI_945"] = "morphoblueusdedai_945";
|
|
36
|
+
// BASE
|
|
37
|
+
MorphoBlueVersions["MorphoBlueCbEthUSDC_860"] = "morphobluecbethusdc_860";
|
|
35
38
|
})(MorphoBlueVersions || (exports.MorphoBlueVersions = MorphoBlueVersions = {}));
|
|
36
39
|
var MorphoBlueOracleType;
|
|
37
40
|
(function (MorphoBlueOracleType) {
|
package/esm/config/contracts.js
CHANGED
|
@@ -26,6 +26,7 @@ export declare const MORPHO_BLUE_USDE_DAI_770: (networkId?: NetworkNumber) => Mo
|
|
|
26
26
|
export declare const MORPHO_BLUE_USDE_DAI_860: (networkId?: NetworkNumber) => MorphoBlueMarketData;
|
|
27
27
|
export declare const MORPHO_BLUE_USDE_DAI_915: (networkId?: NetworkNumber) => MorphoBlueMarketData;
|
|
28
28
|
export declare const MORPHO_BLUE_USDE_DAI_945: (networkId?: NetworkNumber) => MorphoBlueMarketData;
|
|
29
|
+
export declare const MORPHO_BLUE_CBETH_USDC_860: (networkId?: NetworkNumber) => MorphoBlueMarketData;
|
|
29
30
|
export declare const MorphoBlueMarkets: (networkId: NetworkNumber) => {
|
|
30
31
|
readonly morphobluewstethusdc: MorphoBlueMarketData;
|
|
31
32
|
readonly morphobluesdaiusdc: MorphoBlueMarketData;
|
|
@@ -53,5 +54,6 @@ export declare const MorphoBlueMarkets: (networkId: NetworkNumber) => {
|
|
|
53
54
|
readonly morphoblueusdedai_860: MorphoBlueMarketData;
|
|
54
55
|
readonly morphoblueusdedai_915: MorphoBlueMarketData;
|
|
55
56
|
readonly morphoblueusdedai_945: MorphoBlueMarketData;
|
|
57
|
+
readonly morphobluecbethusdc_860: MorphoBlueMarketData;
|
|
56
58
|
};
|
|
57
59
|
export declare const findMorphoBlueMarket: (collateralToken: string, loanToken: string, lltv: number, oracle: string, irm: string, network?: NetworkNumber) => MorphoBlueMarketData | null;
|
|
@@ -394,6 +394,22 @@ export const MORPHO_BLUE_USDE_DAI_945 = (networkId = NetworkNumber.Eth) => ({
|
|
|
394
394
|
marketId: '0xdb760246f6859780f6c1b272d47a8f64710777121118e56e0cdb4b8b744a3094',
|
|
395
395
|
protocolName: 'morpho-blue',
|
|
396
396
|
});
|
|
397
|
+
// BASE
|
|
398
|
+
export const MORPHO_BLUE_CBETH_USDC_860 = (networkId = NetworkNumber.Eth) => ({
|
|
399
|
+
chainIds: [NetworkNumber.Base],
|
|
400
|
+
label: 'Morpho Blue',
|
|
401
|
+
shortLabel: 'cbETH/ETH',
|
|
402
|
+
value: MorphoBlueVersions.MorphoBlueCbEthUSDC_860,
|
|
403
|
+
url: 'usdedai-dba352d9',
|
|
404
|
+
loanToken: '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913',
|
|
405
|
+
collateralToken: '0x2Ae3F1Ec7F1F5012CFEab0185bfc7aa3cf0DEc22',
|
|
406
|
+
oracle: '0x4756c26E01E61c7c2F86b10f4316e179db8F9425',
|
|
407
|
+
oracleType: MorphoBlueOracleType.MARKET_RATE,
|
|
408
|
+
irm: '0x46415998764C29aB2a25CbeA6254146D50D22687',
|
|
409
|
+
lltv: 0.86,
|
|
410
|
+
marketId: '0xdba352d93a64b17c71104cbddc6aef85cd432322a1446b5b65163cbbc615cd0c',
|
|
411
|
+
protocolName: 'morpho-blue',
|
|
412
|
+
});
|
|
397
413
|
export const MorphoBlueMarkets = (networkId) => ({
|
|
398
414
|
[MorphoBlueVersions.MorphoBlueWstEthUSDC]: MORPHO_BLUE_WSTETH_USDC(networkId),
|
|
399
415
|
[MorphoBlueVersions.MorphoBlueSDAIUSDC]: MORPHO_BLUE_SDAI_USDC(networkId),
|
|
@@ -424,6 +440,7 @@ export const MorphoBlueMarkets = (networkId) => ({
|
|
|
424
440
|
[MorphoBlueVersions.MorphoBlueUSDeDAI_860]: MORPHO_BLUE_USDE_DAI_860(networkId),
|
|
425
441
|
[MorphoBlueVersions.MorphoBlueUSDeDAI_915]: MORPHO_BLUE_USDE_DAI_915(networkId),
|
|
426
442
|
[MorphoBlueVersions.MorphoBlueUSDeDAI_945]: MORPHO_BLUE_USDE_DAI_945(networkId),
|
|
443
|
+
[MorphoBlueVersions.MorphoBlueCbEthUSDC_860]: MORPHO_BLUE_CBETH_USDC_860(networkId),
|
|
427
444
|
});
|
|
428
445
|
export const findMorphoBlueMarket = (collateralToken, loanToken, lltv, oracle, irm, network = NetworkNumber.Eth) => {
|
|
429
446
|
const markets = MorphoBlueMarkets(network);
|
package/esm/morphoBlue/index.js
CHANGED
|
@@ -9,11 +9,11 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
9
9
|
};
|
|
10
10
|
import Dec from 'decimal.js';
|
|
11
11
|
import { assetAmountInEth, getAssetInfo, getAssetInfoByAddress } from '@defisaver/tokens';
|
|
12
|
-
import {
|
|
12
|
+
import { NetworkNumber } from '../types/common';
|
|
13
|
+
import { FeedRegistryContract, MorphoBlueViewContract, } from '../contracts';
|
|
13
14
|
import { WAD, SECONDS_PER_YEAR, USD_QUOTE } from '../constants';
|
|
14
15
|
import { getStakingApy, STAKING_ASSETS } from '../staking';
|
|
15
|
-
import {
|
|
16
|
-
import { multicall } from '../multicall';
|
|
16
|
+
import { wethToEth } from '../services/utils';
|
|
17
17
|
import { getMorphoBlueAggregatedPositionData } from '../helpers/morphoBlueHelpers';
|
|
18
18
|
const compound = (ratePerSeconds) => {
|
|
19
19
|
const compounding = new Dec(ratePerSeconds).mul(SECONDS_PER_YEAR).toString();
|
|
@@ -42,32 +42,19 @@ export function getMorphoBlueMarketData(web3, network, selectedMarket, mainnetWe
|
|
|
42
42
|
return __awaiter(this, void 0, void 0, function* () {
|
|
43
43
|
const { loanToken, collateralToken, oracle, irm, lltv, oracleType, } = selectedMarket;
|
|
44
44
|
const lltvInWei = new Dec(lltv).mul(WAD).toString();
|
|
45
|
-
const loanTokenInfo = getAssetInfoByAddress(loanToken);
|
|
46
|
-
const collateralTokenInfo = getAssetInfoByAddress(collateralToken);
|
|
47
|
-
let loanTokenFeedAddress =
|
|
45
|
+
const loanTokenInfo = getAssetInfoByAddress(loanToken, network);
|
|
46
|
+
const collateralTokenInfo = getAssetInfoByAddress(collateralToken, network);
|
|
47
|
+
let loanTokenFeedAddress = loanTokenInfo.addresses[NetworkNumber.Eth];
|
|
48
48
|
if (loanTokenInfo.symbol === 'WETH') {
|
|
49
49
|
const ethAddress = getAssetInfo('ETH').address;
|
|
50
50
|
loanTokenFeedAddress = ethAddress;
|
|
51
51
|
}
|
|
52
|
-
const
|
|
53
|
-
const
|
|
54
|
-
const
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
target: FeedRegistryAddress,
|
|
59
|
-
abiItem: getAbiItem(FeedRegistryAbi, 'latestAnswer'),
|
|
60
|
-
params: [loanTokenFeedAddress, USD_QUOTE],
|
|
61
|
-
},
|
|
62
|
-
{
|
|
63
|
-
target: viewContractAddress,
|
|
64
|
-
abiItem: getAbiItem(viewContractAbi, 'getMarketInfoNotTuple'),
|
|
65
|
-
params: [loanToken, collateralToken, oracle, irm, lltvInWei],
|
|
66
|
-
},
|
|
67
|
-
];
|
|
68
|
-
const multicallData = yield multicall(multicallCallsObject, web3, network);
|
|
69
|
-
const loanTokenPrice = multicallData[0][0];
|
|
70
|
-
const marketInfo = multicallData[1][0];
|
|
52
|
+
const feedRegistryContract = FeedRegistryContract(mainnetWeb3, NetworkNumber.Eth);
|
|
53
|
+
const morphoBlueViewContract = MorphoBlueViewContract(web3, network);
|
|
54
|
+
const [loanTokenPrice, marketInfo] = yield Promise.all([
|
|
55
|
+
loanTokenInfo.symbol === 'USDA' ? '100000000' : feedRegistryContract.methods.latestAnswer(loanTokenFeedAddress, USD_QUOTE).call(),
|
|
56
|
+
morphoBlueViewContract.methods.getMarketInfoNotTuple(loanToken, collateralToken, oracle, irm, lltvInWei).call(),
|
|
57
|
+
]);
|
|
71
58
|
const supplyRate = getSupplyRate(marketInfo.totalSupplyAssets, marketInfo.totalBorrowAssets, marketInfo.borrowRate, marketInfo.fee);
|
|
72
59
|
const compoundedBorrowRate = getBorrowRate(marketInfo.borrowRate, marketInfo.totalBorrowShares);
|
|
73
60
|
const utillization = new Dec(marketInfo.totalBorrowAssets).div(marketInfo.totalSupplyAssets).mul(100).toString();
|
|
@@ -79,7 +66,7 @@ export function getMorphoBlueMarketData(web3, network, selectedMarket, mainnetWe
|
|
|
79
66
|
assetsData[wethToEth(loanTokenInfo.symbol)] = {
|
|
80
67
|
symbol: wethToEth(loanTokenInfo.symbol),
|
|
81
68
|
address: loanToken,
|
|
82
|
-
price:
|
|
69
|
+
price: new Dec(loanTokenPrice).div(1e8).toString(),
|
|
83
70
|
supplyRate: new Dec(supplyRate).div(WAD).mul(100).toString(),
|
|
84
71
|
borrowRate: new Dec(compoundedBorrowRate).div(WAD).mul(100).toString(),
|
|
85
72
|
totalSupply: new Dec(marketInfo.totalSupplyAssets).div(scale).toString(),
|
|
@@ -25,7 +25,8 @@ export declare enum MorphoBlueVersions {
|
|
|
25
25
|
MorphoBlueUSDeDAI_770 = "morphoblueusdedai_770",
|
|
26
26
|
MorphoBlueUSDeDAI_860 = "morphoblueusdedai_860",
|
|
27
27
|
MorphoBlueUSDeDAI_915 = "morphoblueusdedai_915",
|
|
28
|
-
MorphoBlueUSDeDAI_945 = "morphoblueusdedai_945"
|
|
28
|
+
MorphoBlueUSDeDAI_945 = "morphoblueusdedai_945",
|
|
29
|
+
MorphoBlueCbEthUSDC_860 = "morphobluecbethusdc_860"
|
|
29
30
|
}
|
|
30
31
|
export declare enum MorphoBlueOracleType {
|
|
31
32
|
MARKET_RATE = "Market rate",
|
package/esm/types/morphoBlue.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
export var MorphoBlueVersions;
|
|
2
2
|
(function (MorphoBlueVersions) {
|
|
3
|
+
// MAINNET
|
|
3
4
|
MorphoBlueVersions["MorphoBlueWstEthUSDC"] = "morphobluewstethusdc";
|
|
4
5
|
MorphoBlueVersions["MorphoBlueSDAIUSDC"] = "morphobluesdaiusdc";
|
|
5
6
|
MorphoBlueVersions["MorphoBlueWBTCUSDC"] = "morphobluewbtcusdc";
|
|
@@ -29,6 +30,8 @@ export var MorphoBlueVersions;
|
|
|
29
30
|
MorphoBlueVersions["MorphoBlueUSDeDAI_860"] = "morphoblueusdedai_860";
|
|
30
31
|
MorphoBlueVersions["MorphoBlueUSDeDAI_915"] = "morphoblueusdedai_915";
|
|
31
32
|
MorphoBlueVersions["MorphoBlueUSDeDAI_945"] = "morphoblueusdedai_945";
|
|
33
|
+
// BASE
|
|
34
|
+
MorphoBlueVersions["MorphoBlueCbEthUSDC_860"] = "morphobluecbethusdc_860";
|
|
32
35
|
})(MorphoBlueVersions || (MorphoBlueVersions = {}));
|
|
33
36
|
export var MorphoBlueOracleType;
|
|
34
37
|
(function (MorphoBlueOracleType) {
|
package/package.json
CHANGED
package/src/config/contracts.js
CHANGED
|
@@ -400,6 +400,24 @@ export const MORPHO_BLUE_USDE_DAI_945 = (networkId: NetworkNumber = NetworkNumbe
|
|
|
400
400
|
protocolName: 'morpho-blue',
|
|
401
401
|
});
|
|
402
402
|
|
|
403
|
+
// BASE
|
|
404
|
+
|
|
405
|
+
export const MORPHO_BLUE_CBETH_USDC_860 = (networkId: NetworkNumber = NetworkNumber.Eth): MorphoBlueMarketData => ({
|
|
406
|
+
chainIds: [NetworkNumber.Base],
|
|
407
|
+
label: 'Morpho Blue',
|
|
408
|
+
shortLabel: 'cbETH/ETH',
|
|
409
|
+
value: MorphoBlueVersions.MorphoBlueCbEthUSDC_860,
|
|
410
|
+
url: 'usdedai-dba352d9',
|
|
411
|
+
loanToken: '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913',
|
|
412
|
+
collateralToken: '0x2Ae3F1Ec7F1F5012CFEab0185bfc7aa3cf0DEc22',
|
|
413
|
+
oracle: '0x4756c26E01E61c7c2F86b10f4316e179db8F9425',
|
|
414
|
+
oracleType: MorphoBlueOracleType.MARKET_RATE,
|
|
415
|
+
irm: '0x46415998764C29aB2a25CbeA6254146D50D22687',
|
|
416
|
+
lltv: 0.86,
|
|
417
|
+
marketId: '0xdba352d93a64b17c71104cbddc6aef85cd432322a1446b5b65163cbbc615cd0c',
|
|
418
|
+
protocolName: 'morpho-blue',
|
|
419
|
+
});
|
|
420
|
+
|
|
403
421
|
export const MorphoBlueMarkets = (networkId: NetworkNumber) => ({
|
|
404
422
|
[MorphoBlueVersions.MorphoBlueWstEthUSDC]: MORPHO_BLUE_WSTETH_USDC(networkId),
|
|
405
423
|
[MorphoBlueVersions.MorphoBlueSDAIUSDC]: MORPHO_BLUE_SDAI_USDC(networkId),
|
|
@@ -430,6 +448,8 @@ export const MorphoBlueMarkets = (networkId: NetworkNumber) => ({
|
|
|
430
448
|
[MorphoBlueVersions.MorphoBlueUSDeDAI_860]: MORPHO_BLUE_USDE_DAI_860(networkId),
|
|
431
449
|
[MorphoBlueVersions.MorphoBlueUSDeDAI_915]: MORPHO_BLUE_USDE_DAI_915(networkId),
|
|
432
450
|
[MorphoBlueVersions.MorphoBlueUSDeDAI_945]: MORPHO_BLUE_USDE_DAI_945(networkId),
|
|
451
|
+
|
|
452
|
+
[MorphoBlueVersions.MorphoBlueCbEthUSDC_860]: MORPHO_BLUE_CBETH_USDC_860(networkId),
|
|
433
453
|
}) as const;
|
|
434
454
|
|
|
435
455
|
export const findMorphoBlueMarket = (collateralToken: string, loanToken: string, lltv: number, oracle: string, irm: string, network = NetworkNumber.Eth) => {
|
package/src/morphoBlue/index.ts
CHANGED
|
@@ -3,16 +3,15 @@ import Dec from 'decimal.js';
|
|
|
3
3
|
import { assetAmountInEth, getAssetInfo, getAssetInfoByAddress } from '@defisaver/tokens';
|
|
4
4
|
import { MMUsedAssets, NetworkNumber } from '../types/common';
|
|
5
5
|
import {
|
|
6
|
+
FeedRegistryContract,
|
|
6
7
|
MorphoBlueViewContract,
|
|
7
|
-
getConfigContractAbi, getConfigContractAddress,
|
|
8
8
|
} from '../contracts';
|
|
9
9
|
import {
|
|
10
10
|
MorphoBlueAssetsData, MorphoBlueMarketData, MorphoBlueMarketInfo, MorphoBluePositionData,
|
|
11
11
|
} from '../types';
|
|
12
12
|
import { WAD, SECONDS_PER_YEAR, USD_QUOTE } from '../constants';
|
|
13
13
|
import { getStakingApy, STAKING_ASSETS } from '../staking';
|
|
14
|
-
import {
|
|
15
|
-
import { multicall } from '../multicall';
|
|
14
|
+
import { wethToEth } from '../services/utils';
|
|
16
15
|
import { getMorphoBlueAggregatedPositionData } from '../helpers/morphoBlueHelpers';
|
|
17
16
|
|
|
18
17
|
|
|
@@ -48,36 +47,21 @@ export async function getMorphoBlueMarketData(web3: Web3, network: NetworkNumber
|
|
|
48
47
|
loanToken, collateralToken, oracle, irm, lltv, oracleType,
|
|
49
48
|
} = selectedMarket;
|
|
50
49
|
const lltvInWei = new Dec(lltv).mul(WAD).toString();
|
|
51
|
-
const loanTokenInfo = getAssetInfoByAddress(loanToken);
|
|
52
|
-
const collateralTokenInfo = getAssetInfoByAddress(collateralToken);
|
|
53
|
-
let loanTokenFeedAddress =
|
|
50
|
+
const loanTokenInfo = getAssetInfoByAddress(loanToken, network);
|
|
51
|
+
const collateralTokenInfo = getAssetInfoByAddress(collateralToken, network);
|
|
52
|
+
let loanTokenFeedAddress = loanTokenInfo.addresses[NetworkNumber.Eth];
|
|
54
53
|
if (loanTokenInfo.symbol === 'WETH') {
|
|
55
54
|
const ethAddress = getAssetInfo('ETH').address;
|
|
56
55
|
loanTokenFeedAddress = ethAddress;
|
|
57
56
|
}
|
|
58
57
|
|
|
59
|
-
const
|
|
60
|
-
const
|
|
61
|
-
|
|
62
|
-
const
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
{
|
|
67
|
-
target: FeedRegistryAddress,
|
|
68
|
-
abiItem: getAbiItem(FeedRegistryAbi, 'latestAnswer'),
|
|
69
|
-
params: [loanTokenFeedAddress, USD_QUOTE],
|
|
70
|
-
},
|
|
71
|
-
{
|
|
72
|
-
target: viewContractAddress,
|
|
73
|
-
abiItem: getAbiItem(viewContractAbi, 'getMarketInfoNotTuple'),
|
|
74
|
-
params: [loanToken, collateralToken, oracle, irm, lltvInWei],
|
|
75
|
-
},
|
|
76
|
-
];
|
|
77
|
-
|
|
78
|
-
const multicallData = await multicall(multicallCallsObject, web3, network);
|
|
79
|
-
const loanTokenPrice = multicallData[0][0];
|
|
80
|
-
const marketInfo = multicallData[1][0];
|
|
58
|
+
const feedRegistryContract = FeedRegistryContract(mainnetWeb3, NetworkNumber.Eth);
|
|
59
|
+
const morphoBlueViewContract = MorphoBlueViewContract(web3, network);
|
|
60
|
+
|
|
61
|
+
const [loanTokenPrice, marketInfo] = await Promise.all([
|
|
62
|
+
loanTokenInfo.symbol === 'USDA' ? '100000000' : feedRegistryContract.methods.latestAnswer(loanTokenFeedAddress, USD_QUOTE).call(),
|
|
63
|
+
morphoBlueViewContract.methods.getMarketInfoNotTuple(loanToken, collateralToken, oracle, irm, lltvInWei).call(),
|
|
64
|
+
]);
|
|
81
65
|
|
|
82
66
|
const supplyRate = getSupplyRate(marketInfo.totalSupplyAssets, marketInfo.totalBorrowAssets, marketInfo.borrowRate, marketInfo.fee);
|
|
83
67
|
const compoundedBorrowRate = getBorrowRate(marketInfo.borrowRate, marketInfo.totalBorrowShares);
|
|
@@ -93,7 +77,7 @@ export async function getMorphoBlueMarketData(web3: Web3, network: NetworkNumber
|
|
|
93
77
|
assetsData[wethToEth(loanTokenInfo.symbol)] = {
|
|
94
78
|
symbol: wethToEth(loanTokenInfo.symbol),
|
|
95
79
|
address: loanToken,
|
|
96
|
-
price:
|
|
80
|
+
price: new Dec(loanTokenPrice).div(1e8).toString(),
|
|
97
81
|
supplyRate: new Dec(supplyRate).div(WAD).mul(100).toString(),
|
|
98
82
|
borrowRate: new Dec(compoundedBorrowRate).div(WAD).mul(100).toString(),
|
|
99
83
|
totalSupply: new Dec(marketInfo.totalSupplyAssets).div(scale).toString(),
|
package/src/types/morphoBlue.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { MMUsedAssets, NetworkNumber } from './common';
|
|
2
2
|
|
|
3
3
|
export enum MorphoBlueVersions {
|
|
4
|
+
// MAINNET
|
|
4
5
|
MorphoBlueWstEthUSDC = 'morphobluewstethusdc', // wstETH/USDC
|
|
5
6
|
MorphoBlueSDAIUSDC = 'morphobluesdaiusdc', // sDAI/USDC
|
|
6
7
|
MorphoBlueWBTCUSDC = 'morphobluewbtcusdc', // WBTC/USDC
|
|
@@ -30,6 +31,9 @@ export enum MorphoBlueVersions {
|
|
|
30
31
|
MorphoBlueUSDeDAI_860 = 'morphoblueusdedai_860',
|
|
31
32
|
MorphoBlueUSDeDAI_915 = 'morphoblueusdedai_915',
|
|
32
33
|
MorphoBlueUSDeDAI_945 = 'morphoblueusdedai_945',
|
|
34
|
+
|
|
35
|
+
// BASE
|
|
36
|
+
MorphoBlueCbEthUSDC_860 = 'morphobluecbethusdc_860',
|
|
33
37
|
}
|
|
34
38
|
|
|
35
39
|
export enum MorphoBlueOracleType {
|