@defisaver/positions-sdk 0.0.33 → 0.0.34-dev
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/cjs/compoundV3/index.js +32 -35
- package/cjs/markets/curveUsd/index.js +15 -15
- package/cjs/markets/morphoBlue/index.d.ts +2 -0
- package/cjs/markets/morphoBlue/index.js +17 -1
- package/cjs/morphoBlue/index.js +6 -3
- package/cjs/types/curveUsd.d.ts +5 -5
- package/cjs/types/curveUsd.js +5 -5
- package/cjs/types/morphoBlue.d.ts +2 -1
- package/cjs/types/morphoBlue.js +1 -0
- package/esm/compoundV3/index.js +27 -30
- package/esm/markets/curveUsd/index.js +15 -15
- package/esm/markets/morphoBlue/index.d.ts +2 -0
- package/esm/markets/morphoBlue/index.js +15 -0
- package/esm/morphoBlue/index.js +6 -3
- package/esm/types/curveUsd.d.ts +5 -5
- package/esm/types/curveUsd.js +5 -5
- package/esm/types/morphoBlue.d.ts +2 -1
- package/esm/types/morphoBlue.js +1 -0
- package/package.json +1 -1
- package/src/compoundV3/index.ts +27 -29
- package/src/markets/curveUsd/index.ts +15 -15
- package/src/markets/morphoBlue/index.ts +16 -0
- package/src/morphoBlue/index.ts +8 -3
- package/src/types/curveUsd.ts +5 -5
- package/src/types/morphoBlue.ts +1 -0
package/cjs/compoundV3/index.js
CHANGED
|
@@ -17,13 +17,12 @@ const decimal_js_1 = __importDefault(require("decimal.js"));
|
|
|
17
17
|
const tokens_1 = require("@defisaver/tokens");
|
|
18
18
|
const contracts_1 = require("../contracts");
|
|
19
19
|
const multicall_1 = require("../multicall");
|
|
20
|
-
const compound_1 = require("../types/compound");
|
|
21
20
|
const staking_1 = require("../staking");
|
|
22
21
|
const utils_1 = require("../services/utils");
|
|
23
22
|
const constants_1 = require("../constants");
|
|
24
23
|
const moneymarket_1 = require("../moneymarket");
|
|
25
24
|
const compoundHelpers_1 = require("../helpers/compoundHelpers");
|
|
26
|
-
const
|
|
25
|
+
const compound_1 = require("../markets/compound");
|
|
27
26
|
const priceService_1 = require("../services/priceService");
|
|
28
27
|
const getCompoundV3MarketsData = (web3, network, selectedMarket, defaultWeb3) => __awaiter(void 0, void 0, void 0, function* () {
|
|
29
28
|
const baseAssetPrice = selectedMarket.baseAsset === 'ETH' ? yield (0, priceService_1.getEthPrice)(defaultWeb3) : yield (0, priceService_1.getUSDCPrice)(defaultWeb3);
|
|
@@ -44,35 +43,33 @@ const getCompoundV3MarketsData = (web3, network, selectedMarket, defaultWeb3) =>
|
|
|
44
43
|
];
|
|
45
44
|
const data = yield (0, multicall_1.multicall)(calls, web3, network);
|
|
46
45
|
const colls = data[1].colls.map((coll) => (0, compoundHelpers_1.formatMarketData)(coll, network, baseAssetPrice));
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
(0,
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
coll.incentiveSupplyToken = 'rETH';
|
|
75
|
-
}
|
|
46
|
+
for (const coll of colls) {
|
|
47
|
+
if (coll.symbol === 'wstETH') {
|
|
48
|
+
// eslint-disable-next-line no-await-in-loop
|
|
49
|
+
const [[totalSupplyAlternative, supplyCapAlternative], priceAlternative] = yield Promise.all([
|
|
50
|
+
(0, staking_1.getStETHByWstETHMultiple)([
|
|
51
|
+
(0, tokens_1.assetAmountInWei)(coll.totalSupply, 'wstETH'),
|
|
52
|
+
(0, tokens_1.assetAmountInWei)(coll.supplyCap, 'wstETH'),
|
|
53
|
+
], defaultWeb3),
|
|
54
|
+
(0, staking_1.getWstETHByStETH)((0, tokens_1.assetAmountInWei)(1, 'stETH'), defaultWeb3),
|
|
55
|
+
]);
|
|
56
|
+
coll.totalSupplyAlternative = (0, tokens_1.assetAmountInEth)(totalSupplyAlternative, 'stETH');
|
|
57
|
+
coll.supplyCapAlternative = (0, tokens_1.assetAmountInEth)(supplyCapAlternative, 'stETH');
|
|
58
|
+
coll.priceAlternative = (0, tokens_1.assetAmountInEth)(priceAlternative, 'wstETH');
|
|
59
|
+
// const stEthMarket = markets.find(({ symbol }) => symbol === 'stETH');
|
|
60
|
+
// eslint-disable-next-line no-await-in-loop
|
|
61
|
+
coll.incentiveSupplyApy = yield (0, staking_1.getStETHApr)(defaultWeb3);
|
|
62
|
+
coll.incentiveSupplyToken = 'wstETH';
|
|
63
|
+
}
|
|
64
|
+
if (coll.symbol === 'cbETH') {
|
|
65
|
+
// eslint-disable-next-line no-await-in-loop
|
|
66
|
+
coll.incentiveSupplyApy = yield (0, staking_1.getCbETHApr)(defaultWeb3);
|
|
67
|
+
coll.incentiveSupplyToken = 'cbETH';
|
|
68
|
+
}
|
|
69
|
+
if (coll.symbol === 'rETH') {
|
|
70
|
+
// eslint-disable-next-line no-await-in-loop
|
|
71
|
+
coll.incentiveSupplyApy = yield (0, staking_1.getREthApr)(defaultWeb3);
|
|
72
|
+
coll.incentiveSupplyToken = 'rETH';
|
|
76
73
|
}
|
|
77
74
|
}
|
|
78
75
|
const base = (0, compoundHelpers_1.formatBaseData)(data[0].baseToken, network, baseAssetPrice);
|
|
@@ -127,9 +124,9 @@ const getCompoundV3AccountBalances = (web3, network, block, addressMapping, addr
|
|
|
127
124
|
return balances;
|
|
128
125
|
}
|
|
129
126
|
const market = ({
|
|
130
|
-
[(0,
|
|
131
|
-
[(0,
|
|
132
|
-
[(0,
|
|
127
|
+
[(0, compound_1.COMPOUND_V3_ETH)(network).baseMarketAddress.toLowerCase()]: (0, compound_1.COMPOUND_V3_ETH)(network),
|
|
128
|
+
[(0, compound_1.COMPOUND_V3_USDC)(network).baseMarketAddress.toLowerCase()]: (0, compound_1.COMPOUND_V3_USDC)(network),
|
|
129
|
+
[(0, compound_1.COMPOUND_V3_USDBC)(network).baseMarketAddress.toLowerCase()]: (0, compound_1.COMPOUND_V3_USDBC)(network),
|
|
133
130
|
})[marketAddress.toLowerCase()];
|
|
134
131
|
const loanInfoContract = (0, contracts_1.CompV3ViewContract)(web3, network, block);
|
|
135
132
|
const loanInfo = yield loanInfoContract.methods.getLoanData(market.baseMarketAddress, address).call({}, block);
|
|
@@ -182,7 +179,7 @@ const getCompoundV3AccountData = (web3, network, address, proxyAddress, extracte
|
|
|
182
179
|
if (loanData.borrowAmount.toString() !== '0') {
|
|
183
180
|
usedAssets[baseAssetSymbol].isBorrowed = true;
|
|
184
181
|
usedAssets[baseAssetSymbol].borrowed = (0, tokens_1.assetAmountInEth)(loanData.borrowAmount, baseAssetInfo.symbol);
|
|
185
|
-
if (selectedMarket.value === (0,
|
|
182
|
+
if (selectedMarket.value === (0, compound_1.COMPOUND_V3_ETH)(network).value) {
|
|
186
183
|
usedAssets[baseAssetSymbol].borrowedUsd = new decimal_js_1.default((0, tokens_1.assetAmountInEth)(loanData.borrowValue, baseAssetInfo.symbol))
|
|
187
184
|
.mul(assetsData[baseAssetSymbol].price)
|
|
188
185
|
.toString();
|
|
@@ -5,9 +5,9 @@ const contracts_1 = require("../../contracts");
|
|
|
5
5
|
const types_1 = require("../../types");
|
|
6
6
|
const CRVUSD_WSTETH_MARKET = (networkId) => ({
|
|
7
7
|
chainIds: [1],
|
|
8
|
-
label: 'wstETH',
|
|
8
|
+
label: 'CurveUSD - wstETH',
|
|
9
9
|
shortLabel: 'wstETH',
|
|
10
|
-
value: types_1.CrvUSDVersions.
|
|
10
|
+
value: types_1.CrvUSDVersions.crvUSDwstETH,
|
|
11
11
|
collAsset: 'wstETH',
|
|
12
12
|
baseAsset: 'crvUSD',
|
|
13
13
|
controllerAddress: (0, contracts_1.getConfigContractAddress)('crvUSDwstETHController', networkId),
|
|
@@ -17,9 +17,9 @@ const CRVUSD_WSTETH_MARKET = (networkId) => ({
|
|
|
17
17
|
exports.CRVUSD_WSTETH_MARKET = CRVUSD_WSTETH_MARKET;
|
|
18
18
|
const CRVUSD_ETH_MARKET = (networkId) => ({
|
|
19
19
|
chainIds: [1],
|
|
20
|
-
label: 'ETH',
|
|
20
|
+
label: 'CurveUSD - ETH',
|
|
21
21
|
shortLabel: 'ETH',
|
|
22
|
-
value: types_1.CrvUSDVersions.
|
|
22
|
+
value: types_1.CrvUSDVersions.crvUSDETH,
|
|
23
23
|
collAsset: 'ETH',
|
|
24
24
|
baseAsset: 'crvUSD',
|
|
25
25
|
controllerAddress: (0, contracts_1.getConfigContractAddress)('crvUSDETHController', networkId),
|
|
@@ -29,9 +29,9 @@ const CRVUSD_ETH_MARKET = (networkId) => ({
|
|
|
29
29
|
exports.CRVUSD_ETH_MARKET = CRVUSD_ETH_MARKET;
|
|
30
30
|
const CRVUSD_WBTC_MARKET = (networkId) => ({
|
|
31
31
|
chainIds: [1],
|
|
32
|
-
label: 'WBTC',
|
|
32
|
+
label: 'CurveUSD - WBTC',
|
|
33
33
|
shortLabel: 'WBTC',
|
|
34
|
-
value: types_1.CrvUSDVersions.
|
|
34
|
+
value: types_1.CrvUSDVersions.crvUSDWBTC,
|
|
35
35
|
collAsset: 'WBTC',
|
|
36
36
|
baseAsset: 'crvUSD',
|
|
37
37
|
controllerAddress: (0, contracts_1.getConfigContractAddress)('crvUSDWBTCController', networkId),
|
|
@@ -41,9 +41,9 @@ const CRVUSD_WBTC_MARKET = (networkId) => ({
|
|
|
41
41
|
exports.CRVUSD_WBTC_MARKET = CRVUSD_WBTC_MARKET;
|
|
42
42
|
const CRVUSD_TBTC_MARKET = (networkId) => ({
|
|
43
43
|
chainIds: [1],
|
|
44
|
-
label: 'tBTC',
|
|
44
|
+
label: 'CurveUSD - tBTC',
|
|
45
45
|
shortLabel: 'tBTC',
|
|
46
|
-
value: types_1.CrvUSDVersions.
|
|
46
|
+
value: types_1.CrvUSDVersions.crvUSDtBTC,
|
|
47
47
|
collAsset: 'tBTC',
|
|
48
48
|
baseAsset: 'crvUSD',
|
|
49
49
|
controllerAddress: (0, contracts_1.getConfigContractAddress)('crvUSDtBTCController', networkId),
|
|
@@ -53,9 +53,9 @@ const CRVUSD_TBTC_MARKET = (networkId) => ({
|
|
|
53
53
|
exports.CRVUSD_TBTC_MARKET = CRVUSD_TBTC_MARKET;
|
|
54
54
|
const CRVUSD_SFRXETH_MARKET = (networkId) => ({
|
|
55
55
|
chainIds: [1],
|
|
56
|
-
label: 'sfrxETH',
|
|
56
|
+
label: 'CurveUSD - sfrxETH',
|
|
57
57
|
shortLabel: 'sfrxETH',
|
|
58
|
-
value: types_1.CrvUSDVersions.
|
|
58
|
+
value: types_1.CrvUSDVersions.crvUSDsfrxETH,
|
|
59
59
|
collAsset: 'sfrxETH',
|
|
60
60
|
baseAsset: 'crvUSD',
|
|
61
61
|
controllerAddress: (0, contracts_1.getConfigContractAddress)('crvUSDsfrxETHController', networkId),
|
|
@@ -64,10 +64,10 @@ const CRVUSD_SFRXETH_MARKET = (networkId) => ({
|
|
|
64
64
|
});
|
|
65
65
|
exports.CRVUSD_SFRXETH_MARKET = CRVUSD_SFRXETH_MARKET;
|
|
66
66
|
const CrvUsdMarkets = (networkId) => ({
|
|
67
|
-
[types_1.CrvUSDVersions.
|
|
68
|
-
[types_1.CrvUSDVersions.
|
|
69
|
-
[types_1.CrvUSDVersions.
|
|
70
|
-
[types_1.CrvUSDVersions.
|
|
71
|
-
[types_1.CrvUSDVersions.
|
|
67
|
+
[types_1.CrvUSDVersions.crvUSDwstETH]: (0, exports.CRVUSD_WSTETH_MARKET)(networkId),
|
|
68
|
+
[types_1.CrvUSDVersions.crvUSDETH]: (0, exports.CRVUSD_ETH_MARKET)(networkId),
|
|
69
|
+
[types_1.CrvUSDVersions.crvUSDWBTC]: (0, exports.CRVUSD_WBTC_MARKET)(networkId),
|
|
70
|
+
[types_1.CrvUSDVersions.crvUSDtBTC]: (0, exports.CRVUSD_TBTC_MARKET)(networkId),
|
|
71
|
+
[types_1.CrvUSDVersions.crvUSDsfrxETH]: (0, exports.CRVUSD_SFRXETH_MARKET)(networkId),
|
|
72
72
|
});
|
|
73
73
|
exports.CrvUsdMarkets = CrvUsdMarkets;
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import { MorphoBlueMarketData } from '../../types';
|
|
2
2
|
import { NetworkNumber } from '../../types/common';
|
|
3
3
|
export declare const MORPHO_BLUE_WSTETH_ETH: (networkId?: NetworkNumber) => MorphoBlueMarketData;
|
|
4
|
+
export declare const MORPHO_BLUE_WSTETH_USDC: (networkId?: NetworkNumber) => MorphoBlueMarketData;
|
|
4
5
|
export declare const MorphoBlueMarkets: (networkId: NetworkNumber) => {
|
|
5
6
|
readonly morphobluewstetheth: MorphoBlueMarketData;
|
|
7
|
+
readonly morphobluewstethusdc: MorphoBlueMarketData;
|
|
6
8
|
};
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.MorphoBlueMarkets = exports.MORPHO_BLUE_WSTETH_ETH = void 0;
|
|
3
|
+
exports.MorphoBlueMarkets = exports.MORPHO_BLUE_WSTETH_USDC = exports.MORPHO_BLUE_WSTETH_ETH = void 0;
|
|
4
4
|
const types_1 = require("../../types");
|
|
5
5
|
const common_1 = require("../../types/common");
|
|
6
6
|
const MORPHO_BLUE_WSTETH_ETH = (networkId = common_1.NetworkNumber.Eth) => ({
|
|
@@ -18,7 +18,23 @@ const MORPHO_BLUE_WSTETH_ETH = (networkId = common_1.NetworkNumber.Eth) => ({
|
|
|
18
18
|
protocolName: 'morpho-blue',
|
|
19
19
|
});
|
|
20
20
|
exports.MORPHO_BLUE_WSTETH_ETH = MORPHO_BLUE_WSTETH_ETH;
|
|
21
|
+
const MORPHO_BLUE_WSTETH_USDC = (networkId = common_1.NetworkNumber.Eth) => ({
|
|
22
|
+
chainIds: [1],
|
|
23
|
+
label: 'Morpho Blue',
|
|
24
|
+
shortLabel: 'wstETH/USDC',
|
|
25
|
+
value: types_1.MorphoBlueVersions.MorphoBlueWstEthUSDC,
|
|
26
|
+
url: 'default',
|
|
27
|
+
loanToken: '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48',
|
|
28
|
+
collateralToken: '0x7f39C581F595B53c5cb19bD0b3f8dA6c935E2Ca0',
|
|
29
|
+
oracle: '0x48F7E36EB6B826B2dF4B2E630B62Cd25e89E40e2',
|
|
30
|
+
irm: '0x870aC11D48B15DB9a138Cf899d20F13F79Ba00BC',
|
|
31
|
+
lltv: 0.86,
|
|
32
|
+
// icon: SvgAdapter(protocolIcons.spark),
|
|
33
|
+
protocolName: 'morpho-blue',
|
|
34
|
+
});
|
|
35
|
+
exports.MORPHO_BLUE_WSTETH_USDC = MORPHO_BLUE_WSTETH_USDC;
|
|
21
36
|
const MorphoBlueMarkets = (networkId) => ({
|
|
22
37
|
[types_1.MorphoBlueVersions.MorphoBlueWstEthEth]: (0, exports.MORPHO_BLUE_WSTETH_ETH)(networkId),
|
|
38
|
+
[types_1.MorphoBlueVersions.MorphoBlueWstEthUSDC]: (0, exports.MORPHO_BLUE_WSTETH_USDC)(networkId),
|
|
23
39
|
});
|
|
24
40
|
exports.MorphoBlueMarkets = MorphoBlueMarkets;
|
package/cjs/morphoBlue/index.js
CHANGED
|
@@ -77,7 +77,10 @@ function getMorphoBlueMarketData(web3, network, selectedMarket, mainnetWeb3) {
|
|
|
77
77
|
const supplyRate = getSupplyRate(marketInfo.totalSupplyAssets, marketInfo.totalBorrowAssets, marketInfo.borrowRate, marketInfo.fee);
|
|
78
78
|
const compoundedBorrowRate = getBorrowRate(marketInfo.borrowRate, marketInfo.totalBorrowShares);
|
|
79
79
|
const utillization = new decimal_js_1.default(marketInfo.totalBorrowAssets).div(marketInfo.totalSupplyAssets).mul(100).toString();
|
|
80
|
-
const
|
|
80
|
+
const oracleScaleFactor = new decimal_js_1.default(36).add(loanTokenInfo.decimals).sub(collateralTokenInfo.decimals).toString();
|
|
81
|
+
const oracleScale = new decimal_js_1.default(10).pow(oracleScaleFactor).toString();
|
|
82
|
+
const scale = new decimal_js_1.default(10).pow(loanTokenInfo.decimals).toString();
|
|
83
|
+
const oracleRate = new decimal_js_1.default(marketInfo.oracle).div(oracleScale).toString();
|
|
81
84
|
const assetsData = {};
|
|
82
85
|
assetsData[(0, utils_1.wethToEth)(loanTokenInfo.symbol)] = {
|
|
83
86
|
symbol: (0, utils_1.wethToEth)(loanTokenInfo.symbol),
|
|
@@ -85,8 +88,8 @@ function getMorphoBlueMarketData(web3, network, selectedMarket, mainnetWeb3) {
|
|
|
85
88
|
price: new decimal_js_1.default(loanTokenPrice).div(1e8).toString(),
|
|
86
89
|
supplyRate: new decimal_js_1.default(supplyRate).div(constants_1.WAD).mul(100).toString(),
|
|
87
90
|
borrowRate: new decimal_js_1.default(compoundedBorrowRate).div(constants_1.WAD).mul(100).toString(),
|
|
88
|
-
totalSupply: new decimal_js_1.default(marketInfo.totalSupplyAssets).div(
|
|
89
|
-
totalBorrow: new decimal_js_1.default(marketInfo.totalBorrowAssets).div(
|
|
91
|
+
totalSupply: new decimal_js_1.default(marketInfo.totalSupplyAssets).div(scale).toString(),
|
|
92
|
+
totalBorrow: new decimal_js_1.default(marketInfo.totalBorrowAssets).div(scale).toString(),
|
|
90
93
|
};
|
|
91
94
|
assetsData[(0, utils_1.wethToEth)(collateralTokenInfo.symbol)] = {
|
|
92
95
|
symbol: (0, utils_1.wethToEth)(collateralTokenInfo.symbol),
|
package/cjs/types/curveUsd.d.ts
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { NetworkNumber } from './common';
|
|
2
2
|
export declare enum CrvUSDVersions {
|
|
3
|
-
'
|
|
4
|
-
'
|
|
5
|
-
'
|
|
6
|
-
'
|
|
7
|
-
'
|
|
3
|
+
'crvUSDwstETH' = "wstETH",
|
|
4
|
+
'crvUSDWBTC' = "WBTC",
|
|
5
|
+
'crvUSDETH' = "ETH",
|
|
6
|
+
'crvUSDtBTC' = "tBTC",
|
|
7
|
+
'crvUSDsfrxETH' = "sfrxETH"
|
|
8
8
|
}
|
|
9
9
|
export declare enum CrvUSDStatus {
|
|
10
10
|
Nonexistant = "Nonexistant",
|
package/cjs/types/curveUsd.js
CHANGED
|
@@ -3,11 +3,11 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.CrvUSDStatus = exports.CrvUSDVersions = void 0;
|
|
4
4
|
var CrvUSDVersions;
|
|
5
5
|
(function (CrvUSDVersions) {
|
|
6
|
-
CrvUSDVersions["
|
|
7
|
-
CrvUSDVersions["
|
|
8
|
-
CrvUSDVersions["
|
|
9
|
-
CrvUSDVersions["
|
|
10
|
-
CrvUSDVersions["
|
|
6
|
+
CrvUSDVersions["crvUSDwstETH"] = "wstETH";
|
|
7
|
+
CrvUSDVersions["crvUSDWBTC"] = "WBTC";
|
|
8
|
+
CrvUSDVersions["crvUSDETH"] = "ETH";
|
|
9
|
+
CrvUSDVersions["crvUSDtBTC"] = "tBTC";
|
|
10
|
+
CrvUSDVersions["crvUSDsfrxETH"] = "sfrxETH";
|
|
11
11
|
})(CrvUSDVersions || (exports.CrvUSDVersions = CrvUSDVersions = {}));
|
|
12
12
|
var CrvUSDStatus;
|
|
13
13
|
(function (CrvUSDStatus) {
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { MMUsedAssets, NetworkNumber } from './common';
|
|
2
2
|
export declare enum MorphoBlueVersions {
|
|
3
|
-
MorphoBlueWstEthEth = "morphobluewstetheth"
|
|
3
|
+
MorphoBlueWstEthEth = "morphobluewstetheth",
|
|
4
|
+
MorphoBlueWstEthUSDC = "morphobluewstethusdc"
|
|
4
5
|
}
|
|
5
6
|
export interface MorphoBlueMarketData {
|
|
6
7
|
chainIds: NetworkNumber[];
|
package/cjs/types/morphoBlue.js
CHANGED
|
@@ -4,4 +4,5 @@ exports.MorphoBlueVersions = void 0;
|
|
|
4
4
|
var MorphoBlueVersions;
|
|
5
5
|
(function (MorphoBlueVersions) {
|
|
6
6
|
MorphoBlueVersions["MorphoBlueWstEthEth"] = "morphobluewstetheth";
|
|
7
|
+
MorphoBlueVersions["MorphoBlueWstEthUSDC"] = "morphobluewstethusdc";
|
|
7
8
|
})(MorphoBlueVersions || (exports.MorphoBlueVersions = MorphoBlueVersions = {}));
|
package/esm/compoundV3/index.js
CHANGED
|
@@ -11,7 +11,6 @@ import Dec from 'decimal.js';
|
|
|
11
11
|
import { assetAmountInEth, assetAmountInWei, getAssetInfo, getAssetInfoByAddress, } from '@defisaver/tokens';
|
|
12
12
|
import { CompV3ViewContract } from '../contracts';
|
|
13
13
|
import { multicall } from '../multicall';
|
|
14
|
-
import { CompoundVersions, } from '../types/compound';
|
|
15
14
|
import { getCbETHApr, getREthApr, getStETHApr, getStETHByWstETHMultiple, getWstETHByStETH, } from '../staking';
|
|
16
15
|
import { wethToEth } from '../services/utils';
|
|
17
16
|
import { ZERO_ADDRESS } from '../constants';
|
|
@@ -38,35 +37,33 @@ export const getCompoundV3MarketsData = (web3, network, selectedMarket, defaultW
|
|
|
38
37
|
];
|
|
39
38
|
const data = yield multicall(calls, web3, network);
|
|
40
39
|
const colls = data[1].colls.map((coll) => formatMarketData(coll, network, baseAssetPrice));
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
coll.incentiveSupplyToken = 'rETH';
|
|
69
|
-
}
|
|
40
|
+
for (const coll of colls) {
|
|
41
|
+
if (coll.symbol === 'wstETH') {
|
|
42
|
+
// eslint-disable-next-line no-await-in-loop
|
|
43
|
+
const [[totalSupplyAlternative, supplyCapAlternative], priceAlternative] = yield Promise.all([
|
|
44
|
+
getStETHByWstETHMultiple([
|
|
45
|
+
assetAmountInWei(coll.totalSupply, 'wstETH'),
|
|
46
|
+
assetAmountInWei(coll.supplyCap, 'wstETH'),
|
|
47
|
+
], defaultWeb3),
|
|
48
|
+
getWstETHByStETH(assetAmountInWei(1, 'stETH'), defaultWeb3),
|
|
49
|
+
]);
|
|
50
|
+
coll.totalSupplyAlternative = assetAmountInEth(totalSupplyAlternative, 'stETH');
|
|
51
|
+
coll.supplyCapAlternative = assetAmountInEth(supplyCapAlternative, 'stETH');
|
|
52
|
+
coll.priceAlternative = assetAmountInEth(priceAlternative, 'wstETH');
|
|
53
|
+
// const stEthMarket = markets.find(({ symbol }) => symbol === 'stETH');
|
|
54
|
+
// eslint-disable-next-line no-await-in-loop
|
|
55
|
+
coll.incentiveSupplyApy = yield getStETHApr(defaultWeb3);
|
|
56
|
+
coll.incentiveSupplyToken = 'wstETH';
|
|
57
|
+
}
|
|
58
|
+
if (coll.symbol === 'cbETH') {
|
|
59
|
+
// eslint-disable-next-line no-await-in-loop
|
|
60
|
+
coll.incentiveSupplyApy = yield getCbETHApr(defaultWeb3);
|
|
61
|
+
coll.incentiveSupplyToken = 'cbETH';
|
|
62
|
+
}
|
|
63
|
+
if (coll.symbol === 'rETH') {
|
|
64
|
+
// eslint-disable-next-line no-await-in-loop
|
|
65
|
+
coll.incentiveSupplyApy = yield getREthApr(defaultWeb3);
|
|
66
|
+
coll.incentiveSupplyToken = 'rETH';
|
|
70
67
|
}
|
|
71
68
|
}
|
|
72
69
|
const base = formatBaseData(data[0].baseToken, network, baseAssetPrice);
|
|
@@ -2,9 +2,9 @@ import { getConfigContractAddress } from '../../contracts';
|
|
|
2
2
|
import { CrvUSDVersions } from '../../types';
|
|
3
3
|
export const CRVUSD_WSTETH_MARKET = (networkId) => ({
|
|
4
4
|
chainIds: [1],
|
|
5
|
-
label: 'wstETH',
|
|
5
|
+
label: 'CurveUSD - wstETH',
|
|
6
6
|
shortLabel: 'wstETH',
|
|
7
|
-
value: CrvUSDVersions.
|
|
7
|
+
value: CrvUSDVersions.crvUSDwstETH,
|
|
8
8
|
collAsset: 'wstETH',
|
|
9
9
|
baseAsset: 'crvUSD',
|
|
10
10
|
controllerAddress: getConfigContractAddress('crvUSDwstETHController', networkId),
|
|
@@ -13,9 +13,9 @@ export const CRVUSD_WSTETH_MARKET = (networkId) => ({
|
|
|
13
13
|
});
|
|
14
14
|
export const CRVUSD_ETH_MARKET = (networkId) => ({
|
|
15
15
|
chainIds: [1],
|
|
16
|
-
label: 'ETH',
|
|
16
|
+
label: 'CurveUSD - ETH',
|
|
17
17
|
shortLabel: 'ETH',
|
|
18
|
-
value: CrvUSDVersions.
|
|
18
|
+
value: CrvUSDVersions.crvUSDETH,
|
|
19
19
|
collAsset: 'ETH',
|
|
20
20
|
baseAsset: 'crvUSD',
|
|
21
21
|
controllerAddress: getConfigContractAddress('crvUSDETHController', networkId),
|
|
@@ -24,9 +24,9 @@ export const CRVUSD_ETH_MARKET = (networkId) => ({
|
|
|
24
24
|
});
|
|
25
25
|
export const CRVUSD_WBTC_MARKET = (networkId) => ({
|
|
26
26
|
chainIds: [1],
|
|
27
|
-
label: 'WBTC',
|
|
27
|
+
label: 'CurveUSD - WBTC',
|
|
28
28
|
shortLabel: 'WBTC',
|
|
29
|
-
value: CrvUSDVersions.
|
|
29
|
+
value: CrvUSDVersions.crvUSDWBTC,
|
|
30
30
|
collAsset: 'WBTC',
|
|
31
31
|
baseAsset: 'crvUSD',
|
|
32
32
|
controllerAddress: getConfigContractAddress('crvUSDWBTCController', networkId),
|
|
@@ -35,9 +35,9 @@ export const CRVUSD_WBTC_MARKET = (networkId) => ({
|
|
|
35
35
|
});
|
|
36
36
|
export const CRVUSD_TBTC_MARKET = (networkId) => ({
|
|
37
37
|
chainIds: [1],
|
|
38
|
-
label: 'tBTC',
|
|
38
|
+
label: 'CurveUSD - tBTC',
|
|
39
39
|
shortLabel: 'tBTC',
|
|
40
|
-
value: CrvUSDVersions.
|
|
40
|
+
value: CrvUSDVersions.crvUSDtBTC,
|
|
41
41
|
collAsset: 'tBTC',
|
|
42
42
|
baseAsset: 'crvUSD',
|
|
43
43
|
controllerAddress: getConfigContractAddress('crvUSDtBTCController', networkId),
|
|
@@ -46,9 +46,9 @@ export const CRVUSD_TBTC_MARKET = (networkId) => ({
|
|
|
46
46
|
});
|
|
47
47
|
export const CRVUSD_SFRXETH_MARKET = (networkId) => ({
|
|
48
48
|
chainIds: [1],
|
|
49
|
-
label: 'sfrxETH',
|
|
49
|
+
label: 'CurveUSD - sfrxETH',
|
|
50
50
|
shortLabel: 'sfrxETH',
|
|
51
|
-
value: CrvUSDVersions.
|
|
51
|
+
value: CrvUSDVersions.crvUSDsfrxETH,
|
|
52
52
|
collAsset: 'sfrxETH',
|
|
53
53
|
baseAsset: 'crvUSD',
|
|
54
54
|
controllerAddress: getConfigContractAddress('crvUSDsfrxETHController', networkId),
|
|
@@ -56,9 +56,9 @@ export const CRVUSD_SFRXETH_MARKET = (networkId) => ({
|
|
|
56
56
|
createCollAssets: ['sfrxETH'],
|
|
57
57
|
});
|
|
58
58
|
export const CrvUsdMarkets = (networkId) => ({
|
|
59
|
-
[CrvUSDVersions.
|
|
60
|
-
[CrvUSDVersions.
|
|
61
|
-
[CrvUSDVersions.
|
|
62
|
-
[CrvUSDVersions.
|
|
63
|
-
[CrvUSDVersions.
|
|
59
|
+
[CrvUSDVersions.crvUSDwstETH]: CRVUSD_WSTETH_MARKET(networkId),
|
|
60
|
+
[CrvUSDVersions.crvUSDETH]: CRVUSD_ETH_MARKET(networkId),
|
|
61
|
+
[CrvUSDVersions.crvUSDWBTC]: CRVUSD_WBTC_MARKET(networkId),
|
|
62
|
+
[CrvUSDVersions.crvUSDtBTC]: CRVUSD_TBTC_MARKET(networkId),
|
|
63
|
+
[CrvUSDVersions.crvUSDsfrxETH]: CRVUSD_SFRXETH_MARKET(networkId),
|
|
64
64
|
});
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import { MorphoBlueMarketData } from '../../types';
|
|
2
2
|
import { NetworkNumber } from '../../types/common';
|
|
3
3
|
export declare const MORPHO_BLUE_WSTETH_ETH: (networkId?: NetworkNumber) => MorphoBlueMarketData;
|
|
4
|
+
export declare const MORPHO_BLUE_WSTETH_USDC: (networkId?: NetworkNumber) => MorphoBlueMarketData;
|
|
4
5
|
export declare const MorphoBlueMarkets: (networkId: NetworkNumber) => {
|
|
5
6
|
readonly morphobluewstetheth: MorphoBlueMarketData;
|
|
7
|
+
readonly morphobluewstethusdc: MorphoBlueMarketData;
|
|
6
8
|
};
|
|
@@ -14,6 +14,21 @@ export const MORPHO_BLUE_WSTETH_ETH = (networkId = NetworkNumber.Eth) => ({
|
|
|
14
14
|
// icon: SvgAdapter(protocolIcons.spark),
|
|
15
15
|
protocolName: 'morpho-blue',
|
|
16
16
|
});
|
|
17
|
+
export const MORPHO_BLUE_WSTETH_USDC = (networkId = NetworkNumber.Eth) => ({
|
|
18
|
+
chainIds: [1],
|
|
19
|
+
label: 'Morpho Blue',
|
|
20
|
+
shortLabel: 'wstETH/USDC',
|
|
21
|
+
value: MorphoBlueVersions.MorphoBlueWstEthUSDC,
|
|
22
|
+
url: 'default',
|
|
23
|
+
loanToken: '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48',
|
|
24
|
+
collateralToken: '0x7f39C581F595B53c5cb19bD0b3f8dA6c935E2Ca0',
|
|
25
|
+
oracle: '0x48F7E36EB6B826B2dF4B2E630B62Cd25e89E40e2',
|
|
26
|
+
irm: '0x870aC11D48B15DB9a138Cf899d20F13F79Ba00BC',
|
|
27
|
+
lltv: 0.86,
|
|
28
|
+
// icon: SvgAdapter(protocolIcons.spark),
|
|
29
|
+
protocolName: 'morpho-blue',
|
|
30
|
+
});
|
|
17
31
|
export const MorphoBlueMarkets = (networkId) => ({
|
|
18
32
|
[MorphoBlueVersions.MorphoBlueWstEthEth]: MORPHO_BLUE_WSTETH_ETH(networkId),
|
|
33
|
+
[MorphoBlueVersions.MorphoBlueWstEthUSDC]: MORPHO_BLUE_WSTETH_USDC(networkId),
|
|
19
34
|
});
|
package/esm/morphoBlue/index.js
CHANGED
|
@@ -71,7 +71,10 @@ export function getMorphoBlueMarketData(web3, network, selectedMarket, mainnetWe
|
|
|
71
71
|
const supplyRate = getSupplyRate(marketInfo.totalSupplyAssets, marketInfo.totalBorrowAssets, marketInfo.borrowRate, marketInfo.fee);
|
|
72
72
|
const compoundedBorrowRate = getBorrowRate(marketInfo.borrowRate, marketInfo.totalBorrowShares);
|
|
73
73
|
const utillization = new Dec(marketInfo.totalBorrowAssets).div(marketInfo.totalSupplyAssets).mul(100).toString();
|
|
74
|
-
const
|
|
74
|
+
const oracleScaleFactor = new Dec(36).add(loanTokenInfo.decimals).sub(collateralTokenInfo.decimals).toString();
|
|
75
|
+
const oracleScale = new Dec(10).pow(oracleScaleFactor).toString();
|
|
76
|
+
const scale = new Dec(10).pow(loanTokenInfo.decimals).toString();
|
|
77
|
+
const oracleRate = new Dec(marketInfo.oracle).div(oracleScale).toString();
|
|
75
78
|
const assetsData = {};
|
|
76
79
|
assetsData[wethToEth(loanTokenInfo.symbol)] = {
|
|
77
80
|
symbol: wethToEth(loanTokenInfo.symbol),
|
|
@@ -79,8 +82,8 @@ export function getMorphoBlueMarketData(web3, network, selectedMarket, mainnetWe
|
|
|
79
82
|
price: new Dec(loanTokenPrice).div(1e8).toString(),
|
|
80
83
|
supplyRate: new Dec(supplyRate).div(WAD).mul(100).toString(),
|
|
81
84
|
borrowRate: new Dec(compoundedBorrowRate).div(WAD).mul(100).toString(),
|
|
82
|
-
totalSupply: new Dec(marketInfo.totalSupplyAssets).div(
|
|
83
|
-
totalBorrow: new Dec(marketInfo.totalBorrowAssets).div(
|
|
85
|
+
totalSupply: new Dec(marketInfo.totalSupplyAssets).div(scale).toString(),
|
|
86
|
+
totalBorrow: new Dec(marketInfo.totalBorrowAssets).div(scale).toString(),
|
|
84
87
|
};
|
|
85
88
|
assetsData[wethToEth(collateralTokenInfo.symbol)] = {
|
|
86
89
|
symbol: wethToEth(collateralTokenInfo.symbol),
|
package/esm/types/curveUsd.d.ts
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { NetworkNumber } from './common';
|
|
2
2
|
export declare enum CrvUSDVersions {
|
|
3
|
-
'
|
|
4
|
-
'
|
|
5
|
-
'
|
|
6
|
-
'
|
|
7
|
-
'
|
|
3
|
+
'crvUSDwstETH' = "wstETH",
|
|
4
|
+
'crvUSDWBTC' = "WBTC",
|
|
5
|
+
'crvUSDETH' = "ETH",
|
|
6
|
+
'crvUSDtBTC' = "tBTC",
|
|
7
|
+
'crvUSDsfrxETH' = "sfrxETH"
|
|
8
8
|
}
|
|
9
9
|
export declare enum CrvUSDStatus {
|
|
10
10
|
Nonexistant = "Nonexistant",
|
package/esm/types/curveUsd.js
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
export var CrvUSDVersions;
|
|
2
2
|
(function (CrvUSDVersions) {
|
|
3
|
-
CrvUSDVersions["
|
|
4
|
-
CrvUSDVersions["
|
|
5
|
-
CrvUSDVersions["
|
|
6
|
-
CrvUSDVersions["
|
|
7
|
-
CrvUSDVersions["
|
|
3
|
+
CrvUSDVersions["crvUSDwstETH"] = "wstETH";
|
|
4
|
+
CrvUSDVersions["crvUSDWBTC"] = "WBTC";
|
|
5
|
+
CrvUSDVersions["crvUSDETH"] = "ETH";
|
|
6
|
+
CrvUSDVersions["crvUSDtBTC"] = "tBTC";
|
|
7
|
+
CrvUSDVersions["crvUSDsfrxETH"] = "sfrxETH";
|
|
8
8
|
})(CrvUSDVersions || (CrvUSDVersions = {}));
|
|
9
9
|
export var CrvUSDStatus;
|
|
10
10
|
(function (CrvUSDStatus) {
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { MMUsedAssets, NetworkNumber } from './common';
|
|
2
2
|
export declare enum MorphoBlueVersions {
|
|
3
|
-
MorphoBlueWstEthEth = "morphobluewstetheth"
|
|
3
|
+
MorphoBlueWstEthEth = "morphobluewstetheth",
|
|
4
|
+
MorphoBlueWstEthUSDC = "morphobluewstethusdc"
|
|
4
5
|
}
|
|
5
6
|
export interface MorphoBlueMarketData {
|
|
6
7
|
chainIds: NetworkNumber[];
|
package/esm/types/morphoBlue.js
CHANGED
package/package.json
CHANGED
package/src/compoundV3/index.ts
CHANGED
|
@@ -42,35 +42,33 @@ export const getCompoundV3MarketsData = async (web3: Web3, network: NetworkNumbe
|
|
|
42
42
|
];
|
|
43
43
|
const data = await multicall(calls, web3, network);
|
|
44
44
|
const colls = data[1].colls.map((coll: any) => formatMarketData(coll, network, baseAssetPrice)) as CompoundV3AssetData[];
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
coll.incentiveSupplyToken = 'rETH';
|
|
73
|
-
}
|
|
45
|
+
for (const coll of colls) {
|
|
46
|
+
if (coll.symbol === 'wstETH') {
|
|
47
|
+
// eslint-disable-next-line no-await-in-loop
|
|
48
|
+
const [[totalSupplyAlternative, supplyCapAlternative], priceAlternative] = await Promise.all([
|
|
49
|
+
getStETHByWstETHMultiple([
|
|
50
|
+
assetAmountInWei(coll.totalSupply, 'wstETH'),
|
|
51
|
+
assetAmountInWei(coll.supplyCap, 'wstETH'),
|
|
52
|
+
], defaultWeb3),
|
|
53
|
+
getWstETHByStETH(assetAmountInWei(1, 'stETH'), defaultWeb3),
|
|
54
|
+
]);
|
|
55
|
+
coll.totalSupplyAlternative = assetAmountInEth(totalSupplyAlternative, 'stETH');
|
|
56
|
+
coll.supplyCapAlternative = assetAmountInEth(supplyCapAlternative, 'stETH');
|
|
57
|
+
coll.priceAlternative = assetAmountInEth(priceAlternative, 'wstETH');
|
|
58
|
+
// const stEthMarket = markets.find(({ symbol }) => symbol === 'stETH');
|
|
59
|
+
// eslint-disable-next-line no-await-in-loop
|
|
60
|
+
coll.incentiveSupplyApy = await getStETHApr(defaultWeb3);
|
|
61
|
+
coll.incentiveSupplyToken = 'wstETH';
|
|
62
|
+
}
|
|
63
|
+
if (coll.symbol === 'cbETH') {
|
|
64
|
+
// eslint-disable-next-line no-await-in-loop
|
|
65
|
+
coll.incentiveSupplyApy = await getCbETHApr(defaultWeb3);
|
|
66
|
+
coll.incentiveSupplyToken = 'cbETH';
|
|
67
|
+
}
|
|
68
|
+
if (coll.symbol === 'rETH') {
|
|
69
|
+
// eslint-disable-next-line no-await-in-loop
|
|
70
|
+
coll.incentiveSupplyApy = await getREthApr(defaultWeb3);
|
|
71
|
+
coll.incentiveSupplyToken = 'rETH';
|
|
74
72
|
}
|
|
75
73
|
}
|
|
76
74
|
const base = formatBaseData(data[0].baseToken, network, baseAssetPrice);
|
|
@@ -4,9 +4,9 @@ import { NetworkNumber } from '../../types/common';
|
|
|
4
4
|
|
|
5
5
|
export const CRVUSD_WSTETH_MARKET = (networkId: NetworkNumber): CrvUSDMarketData => ({
|
|
6
6
|
chainIds: [1],
|
|
7
|
-
label: 'wstETH',
|
|
7
|
+
label: 'CurveUSD - wstETH',
|
|
8
8
|
shortLabel: 'wstETH',
|
|
9
|
-
value: CrvUSDVersions.
|
|
9
|
+
value: CrvUSDVersions.crvUSDwstETH,
|
|
10
10
|
collAsset: 'wstETH',
|
|
11
11
|
baseAsset: 'crvUSD',
|
|
12
12
|
controllerAddress: getConfigContractAddress('crvUSDwstETHController', networkId),
|
|
@@ -15,9 +15,9 @@ export const CRVUSD_WSTETH_MARKET = (networkId: NetworkNumber): CrvUSDMarketData
|
|
|
15
15
|
});
|
|
16
16
|
export const CRVUSD_ETH_MARKET = (networkId: NetworkNumber): CrvUSDMarketData => ({
|
|
17
17
|
chainIds: [1],
|
|
18
|
-
label: 'ETH',
|
|
18
|
+
label: 'CurveUSD - ETH',
|
|
19
19
|
shortLabel: 'ETH',
|
|
20
|
-
value: CrvUSDVersions.
|
|
20
|
+
value: CrvUSDVersions.crvUSDETH,
|
|
21
21
|
collAsset: 'ETH',
|
|
22
22
|
baseAsset: 'crvUSD',
|
|
23
23
|
controllerAddress: getConfigContractAddress('crvUSDETHController', networkId),
|
|
@@ -26,9 +26,9 @@ export const CRVUSD_ETH_MARKET = (networkId: NetworkNumber): CrvUSDMarketData =>
|
|
|
26
26
|
});
|
|
27
27
|
export const CRVUSD_WBTC_MARKET = (networkId: NetworkNumber): CrvUSDMarketData => ({
|
|
28
28
|
chainIds: [1],
|
|
29
|
-
label: 'WBTC',
|
|
29
|
+
label: 'CurveUSD - WBTC',
|
|
30
30
|
shortLabel: 'WBTC',
|
|
31
|
-
value: CrvUSDVersions.
|
|
31
|
+
value: CrvUSDVersions.crvUSDWBTC,
|
|
32
32
|
collAsset: 'WBTC',
|
|
33
33
|
baseAsset: 'crvUSD',
|
|
34
34
|
controllerAddress: getConfigContractAddress('crvUSDWBTCController', networkId),
|
|
@@ -38,9 +38,9 @@ export const CRVUSD_WBTC_MARKET = (networkId: NetworkNumber): CrvUSDMarketData =
|
|
|
38
38
|
|
|
39
39
|
export const CRVUSD_TBTC_MARKET = (networkId: NetworkNumber): CrvUSDMarketData => ({
|
|
40
40
|
chainIds: [1],
|
|
41
|
-
label: 'tBTC',
|
|
41
|
+
label: 'CurveUSD - tBTC',
|
|
42
42
|
shortLabel: 'tBTC',
|
|
43
|
-
value: CrvUSDVersions.
|
|
43
|
+
value: CrvUSDVersions.crvUSDtBTC,
|
|
44
44
|
collAsset: 'tBTC',
|
|
45
45
|
baseAsset: 'crvUSD',
|
|
46
46
|
controllerAddress: getConfigContractAddress('crvUSDtBTCController', networkId),
|
|
@@ -50,9 +50,9 @@ export const CRVUSD_TBTC_MARKET = (networkId: NetworkNumber): CrvUSDMarketData =
|
|
|
50
50
|
|
|
51
51
|
export const CRVUSD_SFRXETH_MARKET = (networkId: NetworkNumber): CrvUSDMarketData => ({
|
|
52
52
|
chainIds: [1],
|
|
53
|
-
label: 'sfrxETH',
|
|
53
|
+
label: 'CurveUSD - sfrxETH',
|
|
54
54
|
shortLabel: 'sfrxETH',
|
|
55
|
-
value: CrvUSDVersions.
|
|
55
|
+
value: CrvUSDVersions.crvUSDsfrxETH,
|
|
56
56
|
collAsset: 'sfrxETH',
|
|
57
57
|
baseAsset: 'crvUSD',
|
|
58
58
|
controllerAddress: getConfigContractAddress('crvUSDsfrxETHController', networkId),
|
|
@@ -62,9 +62,9 @@ export const CRVUSD_SFRXETH_MARKET = (networkId: NetworkNumber): CrvUSDMarketDat
|
|
|
62
62
|
|
|
63
63
|
|
|
64
64
|
export const CrvUsdMarkets = (networkId: NetworkNumber) => ({
|
|
65
|
-
[CrvUSDVersions.
|
|
66
|
-
[CrvUSDVersions.
|
|
67
|
-
[CrvUSDVersions.
|
|
68
|
-
[CrvUSDVersions.
|
|
69
|
-
[CrvUSDVersions.
|
|
65
|
+
[CrvUSDVersions.crvUSDwstETH]: CRVUSD_WSTETH_MARKET(networkId),
|
|
66
|
+
[CrvUSDVersions.crvUSDETH]: CRVUSD_ETH_MARKET(networkId),
|
|
67
|
+
[CrvUSDVersions.crvUSDWBTC]: CRVUSD_WBTC_MARKET(networkId),
|
|
68
|
+
[CrvUSDVersions.crvUSDtBTC]: CRVUSD_TBTC_MARKET(networkId),
|
|
69
|
+
[CrvUSDVersions.crvUSDsfrxETH]: CRVUSD_SFRXETH_MARKET(networkId),
|
|
70
70
|
}) as const;
|
|
@@ -16,6 +16,22 @@ export const MORPHO_BLUE_WSTETH_ETH = (networkId: NetworkNumber = NetworkNumber.
|
|
|
16
16
|
protocolName: 'morpho-blue',
|
|
17
17
|
});
|
|
18
18
|
|
|
19
|
+
export const MORPHO_BLUE_WSTETH_USDC = (networkId: NetworkNumber = NetworkNumber.Eth): MorphoBlueMarketData => ({
|
|
20
|
+
chainIds: [1],
|
|
21
|
+
label: 'Morpho Blue',
|
|
22
|
+
shortLabel: 'wstETH/USDC',
|
|
23
|
+
value: MorphoBlueVersions.MorphoBlueWstEthUSDC,
|
|
24
|
+
url: 'default',
|
|
25
|
+
loanToken: '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48',
|
|
26
|
+
collateralToken: '0x7f39C581F595B53c5cb19bD0b3f8dA6c935E2Ca0',
|
|
27
|
+
oracle: '0x48F7E36EB6B826B2dF4B2E630B62Cd25e89E40e2',
|
|
28
|
+
irm: '0x870aC11D48B15DB9a138Cf899d20F13F79Ba00BC',
|
|
29
|
+
lltv: 0.86,
|
|
30
|
+
// icon: SvgAdapter(protocolIcons.spark),
|
|
31
|
+
protocolName: 'morpho-blue',
|
|
32
|
+
});
|
|
33
|
+
|
|
19
34
|
export const MorphoBlueMarkets = (networkId: NetworkNumber) => ({
|
|
20
35
|
[MorphoBlueVersions.MorphoBlueWstEthEth]: MORPHO_BLUE_WSTETH_ETH(networkId),
|
|
36
|
+
[MorphoBlueVersions.MorphoBlueWstEthUSDC]: MORPHO_BLUE_WSTETH_USDC(networkId),
|
|
21
37
|
}) as const;
|
package/src/morphoBlue/index.ts
CHANGED
|
@@ -83,7 +83,12 @@ export async function getMorphoBlueMarketData(web3: Web3, network: NetworkNumber
|
|
|
83
83
|
const compoundedBorrowRate = getBorrowRate(marketInfo.borrowRate, marketInfo.totalBorrowShares);
|
|
84
84
|
const utillization = new Dec(marketInfo.totalBorrowAssets).div(marketInfo.totalSupplyAssets).mul(100).toString();
|
|
85
85
|
|
|
86
|
-
const
|
|
86
|
+
const oracleScaleFactor = new Dec(36).add(loanTokenInfo.decimals).sub(collateralTokenInfo.decimals).toString();
|
|
87
|
+
const oracleScale = new Dec(10).pow(oracleScaleFactor).toString();
|
|
88
|
+
|
|
89
|
+
const scale = new Dec(10).pow(loanTokenInfo.decimals).toString();
|
|
90
|
+
|
|
91
|
+
const oracleRate = new Dec(marketInfo.oracle).div(oracleScale).toString();
|
|
87
92
|
const assetsData: MorphoBlueAssetsData = {};
|
|
88
93
|
assetsData[wethToEth(loanTokenInfo.symbol)] = {
|
|
89
94
|
symbol: wethToEth(loanTokenInfo.symbol),
|
|
@@ -91,8 +96,8 @@ export async function getMorphoBlueMarketData(web3: Web3, network: NetworkNumber
|
|
|
91
96
|
price: new Dec(loanTokenPrice).div(1e8).toString(),
|
|
92
97
|
supplyRate: new Dec(supplyRate).div(WAD).mul(100).toString(),
|
|
93
98
|
borrowRate: new Dec(compoundedBorrowRate).div(WAD).mul(100).toString(),
|
|
94
|
-
totalSupply: new Dec(marketInfo.totalSupplyAssets).div(
|
|
95
|
-
totalBorrow: new Dec(marketInfo.totalBorrowAssets).div(
|
|
99
|
+
totalSupply: new Dec(marketInfo.totalSupplyAssets).div(scale).toString(),
|
|
100
|
+
totalBorrow: new Dec(marketInfo.totalBorrowAssets).div(scale).toString(),
|
|
96
101
|
};
|
|
97
102
|
|
|
98
103
|
assetsData[wethToEth(collateralTokenInfo.symbol)] = {
|
package/src/types/curveUsd.ts
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { NetworkNumber } from './common';
|
|
2
2
|
|
|
3
3
|
export enum CrvUSDVersions {
|
|
4
|
-
'
|
|
5
|
-
'
|
|
6
|
-
'
|
|
7
|
-
'
|
|
8
|
-
'
|
|
4
|
+
'crvUSDwstETH' = 'wstETH',
|
|
5
|
+
'crvUSDWBTC' = 'WBTC',
|
|
6
|
+
'crvUSDETH' = 'ETH',
|
|
7
|
+
'crvUSDtBTC' = 'tBTC',
|
|
8
|
+
'crvUSDsfrxETH' = 'sfrxETH',
|
|
9
9
|
}
|
|
10
10
|
|
|
11
11
|
export enum CrvUSDStatus {
|
package/src/types/morphoBlue.ts
CHANGED