@defisaver/positions-sdk 0.0.83 → 0.0.85
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/.yarn/releases/yarn-1.22.1.cjs +147386 -0
- package/.yarn/releases/yarn-1.22.1.js +147386 -0
- package/.yarnrc.yml +1 -0
- package/cjs/aaveV2/index.js +4 -4
- package/cjs/aaveV3/index.js +2 -2
- package/cjs/markets/morphoBlue/index.d.ts +2 -0
- package/cjs/markets/morphoBlue/index.js +18 -1
- 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 +1 -0
- package/cjs/types/morphoBlue.js +1 -0
- package/esm/aaveV2/index.js +5 -5
- package/esm/aaveV3/index.js +3 -3
- package/esm/markets/morphoBlue/index.d.ts +2 -0
- package/esm/markets/morphoBlue/index.js +16 -0
- 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 +1 -0
- package/esm/types/morphoBlue.js +1 -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 +16 -0
- 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 +1 -0
package/.yarnrc.yml
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
yarnPath: .yarn/releases/yarn-1.22.1.cjs
|
package/cjs/aaveV2/index.js
CHANGED
|
@@ -33,9 +33,9 @@ const getAaveV2MarketsData = (web3, network, selectedMarket, mainnetWeb3) => __a
|
|
|
33
33
|
.map((market, i) => ({
|
|
34
34
|
symbol: selectedMarket.assets[i],
|
|
35
35
|
underlyingTokenAddress: market.underlyingTokenAddress,
|
|
36
|
-
supplyRate: new decimal_js_1.default(market.supplyRate.toString()).div(1e25).toString(),
|
|
37
|
-
borrowRate: new decimal_js_1.default(market.borrowRateVariable.toString()).div(1e25).toString(),
|
|
38
|
-
borrowRateStable: new decimal_js_1.default(market.borrowRateStable.toString()).div(1e25).toString(),
|
|
36
|
+
supplyRate: (0, moneymarket_1.aprToApy)(new decimal_js_1.default(market.supplyRate.toString()).div(1e25).toString()),
|
|
37
|
+
borrowRate: (0, moneymarket_1.aprToApy)(new decimal_js_1.default(market.borrowRateVariable.toString()).div(1e25).toString()),
|
|
38
|
+
borrowRateStable: (0, moneymarket_1.aprToApy)(new decimal_js_1.default(market.borrowRateStable.toString()).div(1e25).toString()),
|
|
39
39
|
collateralFactor: new decimal_js_1.default(market.collateralFactor.toString()).div(10000).toString(),
|
|
40
40
|
liquidationRatio: new decimal_js_1.default(market.liquidationRatio.toString()).div(10000).toString(),
|
|
41
41
|
marketLiquidity: (0, tokens_1.assetAmountInEth)(new decimal_js_1.default(market.totalSupply.toString())
|
|
@@ -151,7 +151,7 @@ const getAaveV2AccountData = (web3, network, address, assetsData, market) => __a
|
|
|
151
151
|
}
|
|
152
152
|
if (!usedAssets[asset])
|
|
153
153
|
usedAssets[asset] = {};
|
|
154
|
-
usedAssets[asset] = Object.assign(Object.assign({}, usedAssets[asset]), { symbol: asset, supplied, suppliedUsd: new decimal_js_1.default(supplied).mul(assetsData[asset].price).toString(), isSupplied, collateral: enabledAsCollateral, stableBorrowRate: new decimal_js_1.default(tokenInfo.stableBorrowRate).div(1e25).toString(), borrowedStable,
|
|
154
|
+
usedAssets[asset] = Object.assign(Object.assign({}, usedAssets[asset]), { symbol: asset, supplied, suppliedUsd: new decimal_js_1.default(supplied).mul(assetsData[asset].price).toString(), isSupplied, collateral: enabledAsCollateral, stableBorrowRate: (0, moneymarket_1.aprToApy)(new decimal_js_1.default(tokenInfo.stableBorrowRate).div(1e25).toString()), borrowedStable,
|
|
155
155
|
borrowedVariable, borrowedUsdStable: new decimal_js_1.default(borrowedStable).mul(assetsData[asset].price).toString(), borrowedUsdVariable: new decimal_js_1.default(borrowedVariable).mul(assetsData[asset].price).toString(), borrowed: new decimal_js_1.default(borrowedStable).add(borrowedVariable).toString(), borrowedUsd: new decimal_js_1.default(new decimal_js_1.default(borrowedVariable).add(borrowedStable)).mul(assetsData[asset].price).toString(), isBorrowed,
|
|
156
156
|
interestMode });
|
|
157
157
|
});
|
package/cjs/aaveV3/index.js
CHANGED
|
@@ -161,7 +161,7 @@ function getAaveV3MarketData(web3, network, market, defaultWeb3) {
|
|
|
161
161
|
minDiscountTokenBalance,
|
|
162
162
|
minGhoBalanceForDiscount,
|
|
163
163
|
},
|
|
164
|
-
})), { symbol, isIsolated: new decimal_js_1.default(tokenMarket.debtCeilingForIsolationMode).gt(0), debtCeilingForIsolationMode: new decimal_js_1.default(tokenMarket.debtCeilingForIsolationMode).div(100).toString(), isSiloed: tokenMarket.isSiloedForBorrowing, eModeCategory: +tokenMarket.emodeCategory, isolationModeTotalDebt: new decimal_js_1.default(tokenMarket.isolationModeTotalDebt).div(100).toString(), assetId: Number(tokenMarket.assetId), underlyingTokenAddress: tokenMarket.underlyingTokenAddress, supplyRate: new decimal_js_1.default(tokenMarket.supplyRate.toString()).div(1e25).toString(), borrowRate: new decimal_js_1.default(tokenMarket.borrowRateVariable.toString()).div(1e25).toString(), borrowRateDiscounted: nativeAsset ? new decimal_js_1.default(tokenMarket.borrowRateVariable.toString()).div(1e25).mul(1 - parseFloat(discountRateOnBorrow)).toString() : '0', borrowRateStable: new decimal_js_1.default(tokenMarket.borrowRateStable.toString()).div(1e25).toString(), collateralFactor: new decimal_js_1.default(tokenMarket.collateralFactor.toString()).div(10000).toString(), liquidationRatio: new decimal_js_1.default(tokenMarket.liquidationRatio.toString()).div(10000).toString(), marketLiquidity, utilization: new decimal_js_1.default(tokenMarket.totalBorrow.toString()).times(100).div(new decimal_js_1.default(tokenMarket.totalSupply.toString())).toString(), usageAsCollateralEnabled: tokenMarket.usageAsCollateralEnabled, supplyCap: tokenMarket.supplyCap, borrowCap, totalSupply: (0, tokens_1.assetAmountInEth)(tokenMarket.totalSupply.toString(), symbol), isInactive: !tokenMarket.isActive, isFrozen: tokenMarket.isFrozen, isPaused: tokenMarket.isPaused, canBeBorrowed: tokenMarket.isActive && !tokenMarket.isPaused && !tokenMarket.isFrozen && tokenMarket.borrowingEnabled && isBorrowAllowed, canBeSupplied: !nativeAsset && tokenMarket.isActive && !tokenMarket.isPaused && !tokenMarket.isFrozen, canBeWithdrawn: tokenMarket.isActive && !tokenMarket.isPaused, canBePayBacked: tokenMarket.isActive && !tokenMarket.isPaused, disabledStableBorrowing: !tokenMarket.stableBorrowRateEnabled, totalBorrow: (0, tokens_1.assetAmountInEth)(tokenMarket.totalBorrow.toString(), symbol), totalBorrowVar: (0, tokens_1.assetAmountInEth)(tokenMarket.totalBorrowVar.toString(), symbol), price: new decimal_js_1.default(tokenMarket.price.toString()).div(1e8).toString(), isolationModeBorrowingEnabled: tokenMarket.isolationModeBorrowingEnabled, isFlashLoanEnabled: tokenMarket.isFlashLoanEnabled, eModeCategoryData: {
|
|
164
|
+
})), { symbol, isIsolated: new decimal_js_1.default(tokenMarket.debtCeilingForIsolationMode).gt(0), debtCeilingForIsolationMode: new decimal_js_1.default(tokenMarket.debtCeilingForIsolationMode).div(100).toString(), isSiloed: tokenMarket.isSiloedForBorrowing, eModeCategory: +tokenMarket.emodeCategory, isolationModeTotalDebt: new decimal_js_1.default(tokenMarket.isolationModeTotalDebt).div(100).toString(), assetId: Number(tokenMarket.assetId), underlyingTokenAddress: tokenMarket.underlyingTokenAddress, supplyRate: (0, moneymarket_1.aprToApy)(new decimal_js_1.default(tokenMarket.supplyRate.toString()).div(1e25).toString()), borrowRate: (0, moneymarket_1.aprToApy)(new decimal_js_1.default(tokenMarket.borrowRateVariable.toString()).div(1e25).toString()), borrowRateDiscounted: (0, moneymarket_1.aprToApy)(nativeAsset ? new decimal_js_1.default(tokenMarket.borrowRateVariable.toString()).div(1e25).mul(1 - parseFloat(discountRateOnBorrow)).toString() : '0'), borrowRateStable: (0, moneymarket_1.aprToApy)(new decimal_js_1.default(tokenMarket.borrowRateStable.toString()).div(1e25).toString()), collateralFactor: new decimal_js_1.default(tokenMarket.collateralFactor.toString()).div(10000).toString(), liquidationRatio: new decimal_js_1.default(tokenMarket.liquidationRatio.toString()).div(10000).toString(), marketLiquidity, utilization: new decimal_js_1.default(tokenMarket.totalBorrow.toString()).times(100).div(new decimal_js_1.default(tokenMarket.totalSupply.toString())).toString(), usageAsCollateralEnabled: tokenMarket.usageAsCollateralEnabled, supplyCap: tokenMarket.supplyCap, borrowCap, totalSupply: (0, tokens_1.assetAmountInEth)(tokenMarket.totalSupply.toString(), symbol), isInactive: !tokenMarket.isActive, isFrozen: tokenMarket.isFrozen, isPaused: tokenMarket.isPaused, canBeBorrowed: tokenMarket.isActive && !tokenMarket.isPaused && !tokenMarket.isFrozen && tokenMarket.borrowingEnabled && isBorrowAllowed, canBeSupplied: !nativeAsset && tokenMarket.isActive && !tokenMarket.isPaused && !tokenMarket.isFrozen, canBeWithdrawn: tokenMarket.isActive && !tokenMarket.isPaused, canBePayBacked: tokenMarket.isActive && !tokenMarket.isPaused, disabledStableBorrowing: !tokenMarket.stableBorrowRateEnabled, totalBorrow: (0, tokens_1.assetAmountInEth)(tokenMarket.totalBorrow.toString(), symbol), totalBorrowVar: (0, tokens_1.assetAmountInEth)(tokenMarket.totalBorrowVar.toString(), symbol), price: new decimal_js_1.default(tokenMarket.price.toString()).div(1e8).toString(), isolationModeBorrowingEnabled: tokenMarket.isolationModeBorrowingEnabled, isFlashLoanEnabled: tokenMarket.isFlashLoanEnabled, eModeCategoryData: {
|
|
165
165
|
label: tokenMarket.label,
|
|
166
166
|
liquidationBonus: new decimal_js_1.default(tokenMarket.liquidationBonus).div(10000).toString(),
|
|
167
167
|
liquidationRatio: new decimal_js_1.default(tokenMarket.liquidationThreshold).div(10000).toString(),
|
|
@@ -359,7 +359,7 @@ const getAaveV3AccountData = (web3, network, address, extractedState) => __await
|
|
|
359
359
|
if (nativeAsset && new decimal_js_1.default(borrowed).gt(0) && new decimal_js_1.default(stkAaveBalance).gt(0)) {
|
|
360
360
|
discountRateOnBorrow = (0, exports.aaveV3CalculateDiscountRate)((0, tokens_1.assetAmountInWei)(borrowed, 'GHO'), (0, tokens_1.assetAmountInWei)(stkAaveBalance, 'stkAAVE'), assetsData[asset].discountData.discountRate, assetsData[asset].discountData.minDiscountTokenBalance, assetsData[asset].discountData.minGhoBalanceForDiscount, assetsData[asset].discountData.ghoDiscountedPerDiscountToken);
|
|
361
361
|
}
|
|
362
|
-
usedAssets[asset] = Object.assign(Object.assign({}, usedAssets[asset]), { symbol: asset, supplied, suppliedUsd: new decimal_js_1.default(supplied).mul(assetsData[asset].price).toString(), isSupplied, collateral: enabledAsCollateral, stableBorrowRate: new decimal_js_1.default(tokenInfo.stableBorrowRate).div(1e25).toString(), discountedBorrowRate: new decimal_js_1.default(assetsData[asset].borrowRate).mul(1 - parseFloat(discountRateOnBorrow)).toString(), borrowedStable,
|
|
362
|
+
usedAssets[asset] = Object.assign(Object.assign({}, usedAssets[asset]), { symbol: asset, supplied, suppliedUsd: new decimal_js_1.default(supplied).mul(assetsData[asset].price).toString(), isSupplied, collateral: enabledAsCollateral, stableBorrowRate: (0, moneymarket_1.aprToApy)(new decimal_js_1.default(tokenInfo.stableBorrowRate).div(1e25).toString()), discountedBorrowRate: (0, moneymarket_1.aprToApy)(new decimal_js_1.default(assetsData[asset].borrowRate).mul(1 - parseFloat(discountRateOnBorrow)).toString()), borrowedStable,
|
|
363
363
|
borrowedVariable, borrowedUsdStable: new decimal_js_1.default(borrowedStable).mul(assetsData[asset].price).toString(), borrowedUsdVariable: new decimal_js_1.default(borrowedVariable).mul(assetsData[asset].price).toString(), borrowed, borrowedUsd: new decimal_js_1.default(new decimal_js_1.default(borrowedVariable).add(borrowedStable)).mul(assetsData[asset].price).toString(), isBorrowed, eModeCategory: assetsData[asset].eModeCategory, interestMode });
|
|
364
364
|
}));
|
|
365
365
|
payload.eModeCategory = +multicallRes[0][0];
|
|
@@ -15,6 +15,7 @@ export declare const MORPHO_BLUE_USDE_USDT: (networkId?: NetworkNumber) => Morph
|
|
|
15
15
|
export declare const MORPHO_BLUE_SUSDE_USDT: (networkId?: NetworkNumber) => MorphoBlueMarketData;
|
|
16
16
|
export declare const MORPHO_BLUE_SDAI_ETH: (networkId?: NetworkNumber) => MorphoBlueMarketData;
|
|
17
17
|
export declare const MORPHO_BLUE_EZETH_ETH: (networkId?: NetworkNumber) => MorphoBlueMarketData;
|
|
18
|
+
export declare const MORPHO_BLUE_MKR_USDC: (networkId?: NetworkNumber) => MorphoBlueMarketData;
|
|
18
19
|
export declare const MORPHO_BLUE_WSTETH_ETH_945: (networkId?: NetworkNumber) => MorphoBlueMarketData;
|
|
19
20
|
export declare const MORPHO_BLUE_WSTETH_ETH_945_EXCHANGE_RATE: (networkId?: NetworkNumber) => MorphoBlueMarketData;
|
|
20
21
|
export declare const MORPHO_BLUE_WSTETH_ETH_965_EXCHANGE_RATE: (networkId?: NetworkNumber) => MorphoBlueMarketData;
|
|
@@ -43,6 +44,7 @@ export declare const MorphoBlueMarkets: (networkId: NetworkNumber) => {
|
|
|
43
44
|
readonly morphobluesusdeusdt: MorphoBlueMarketData;
|
|
44
45
|
readonly morphobluesdaieth: MorphoBlueMarketData;
|
|
45
46
|
readonly morphoblueezetheth: MorphoBlueMarketData;
|
|
47
|
+
readonly morphobluemkrusdc: MorphoBlueMarketData;
|
|
46
48
|
readonly morphobluewstetheth_945: MorphoBlueMarketData;
|
|
47
49
|
readonly morphobluewstetheth_945_exchange_rate: MorphoBlueMarketData;
|
|
48
50
|
readonly morphobluewstetheth_965_exchange_rate: MorphoBlueMarketData;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.findMorphoBlueMarket = exports.MorphoBlueMarkets = exports.MORPHO_BLUE_CBETH_USDC_860_BASE = 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_BASE = 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_MKR_USDC = 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");
|
|
@@ -244,6 +244,22 @@ const MORPHO_BLUE_EZETH_ETH = (networkId = common_1.NetworkNumber.Eth) => ({
|
|
|
244
244
|
protocolName: 'morpho-blue',
|
|
245
245
|
});
|
|
246
246
|
exports.MORPHO_BLUE_EZETH_ETH = MORPHO_BLUE_EZETH_ETH;
|
|
247
|
+
const MORPHO_BLUE_MKR_USDC = (networkId = common_1.NetworkNumber.Eth) => ({
|
|
248
|
+
chainIds: [1],
|
|
249
|
+
label: 'Morpho Blue',
|
|
250
|
+
shortLabel: 'MKR/USDC',
|
|
251
|
+
value: types_1.MorphoBlueVersions.MorphoBlueMKRUSDC,
|
|
252
|
+
url: 'mkrusdc',
|
|
253
|
+
loanToken: '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48',
|
|
254
|
+
collateralToken: '0x9f8F72aA9304c8B593d555F12eF6589cC3A579A2',
|
|
255
|
+
oracle: '0x6686788B4315A4F93d822c1Bf73910556FCe2d5a',
|
|
256
|
+
oracleType: types_1.MorphoBlueOracleType.MARKET_RATE,
|
|
257
|
+
irm: '0x870aC11D48B15DB9a138Cf899d20F13F79Ba00BC',
|
|
258
|
+
lltv: 0.77,
|
|
259
|
+
marketId: '0x97bb820669a19ba5fa6de964a466292edd67957849f9631eb8b830c382f58b7f',
|
|
260
|
+
protocolName: 'morpho-blue',
|
|
261
|
+
});
|
|
262
|
+
exports.MORPHO_BLUE_MKR_USDC = MORPHO_BLUE_MKR_USDC;
|
|
247
263
|
// wstETH/WETH
|
|
248
264
|
const MORPHO_BLUE_WSTETH_ETH_945 = (networkId = common_1.NetworkNumber.Eth) => ({
|
|
249
265
|
chainIds: [1],
|
|
@@ -456,6 +472,7 @@ const MorphoBlueMarkets = (networkId) => ({
|
|
|
456
472
|
[types_1.MorphoBlueVersions.MorphoBlueSUSDeUSDT]: (0, exports.MORPHO_BLUE_SUSDE_USDT)(networkId),
|
|
457
473
|
[types_1.MorphoBlueVersions.MorphoBlueSDAIEth]: (0, exports.MORPHO_BLUE_SDAI_ETH)(networkId),
|
|
458
474
|
[types_1.MorphoBlueVersions.MorphoBlueEzEthEth]: (0, exports.MORPHO_BLUE_EZETH_ETH)(networkId),
|
|
475
|
+
[types_1.MorphoBlueVersions.MorphoBlueMKRUSDC]: (0, exports.MORPHO_BLUE_MKR_USDC)(networkId),
|
|
459
476
|
// wstETH/WETH
|
|
460
477
|
[types_1.MorphoBlueVersions.MorphoBlueWstEthEth_945]: (0, exports.MORPHO_BLUE_WSTETH_ETH_945)(networkId),
|
|
461
478
|
[types_1.MorphoBlueVersions.MorphoBlueWstEthEth_945_Exchange_Rate]: (0, exports.MORPHO_BLUE_WSTETH_ETH_945_EXCHANGE_RATE)(networkId),
|
|
@@ -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;
|
|
@@ -79,5 +79,5 @@ const isLeveragedPos = (usedAssets, dustLimit = 5) => {
|
|
|
79
79
|
};
|
|
80
80
|
};
|
|
81
81
|
exports.isLeveragedPos = isLeveragedPos;
|
|
82
|
-
const aprToApy = (interest, frequency = constants_1.BLOCKS_IN_A_YEAR) => (
|
|
82
|
+
const aprToApy = (interest, frequency = constants_1.BLOCKS_IN_A_YEAR) => new decimal_js_1.default(interest).div(100).div(frequency).plus(1).pow(frequency).minus(1).times(100).toString();
|
|
83
83
|
exports.aprToApy = aprToApy;
|
|
@@ -40,8 +40,8 @@ const getMorphoAaveV2MarketsData = (web3, network, mainnetWeb3) => __awaiter(voi
|
|
|
40
40
|
const aaveInfo = aaveTokenInfo[index];
|
|
41
41
|
const { symbol, address } = (0, tokens_1.getAssetInfoByAddress)((0, utils_1.wethToEthByAddress)(aaveInfo.underlyingTokenAddress));
|
|
42
42
|
const morphoReward = (_a = morphoRewardsData === null || morphoRewardsData === void 0 ? void 0 : morphoRewardsData.markets) === null || _a === void 0 ? void 0 : _a[aaveInfo.aTokenAddress.toLowerCase()];
|
|
43
|
-
const supplyRateP2P = new decimal_js_1.default(market.p2pSupplyRate).div(1e25).toString();
|
|
44
|
-
const borrowRateP2P = new decimal_js_1.default(market.p2pBorrowRate).div(1e25).toString();
|
|
43
|
+
const supplyRateP2P = (0, moneymarket_1.aprToApy)(new decimal_js_1.default(market.p2pSupplyRate).div(1e25).toString());
|
|
44
|
+
const borrowRateP2P = (0, moneymarket_1.aprToApy)(new decimal_js_1.default(market.p2pBorrowRate).div(1e25).toString());
|
|
45
45
|
const hasDelta = new decimal_js_1.default(borrowRateP2P).minus(supplyRateP2P).gte(0.3);
|
|
46
46
|
return {
|
|
47
47
|
symbol,
|
|
@@ -50,9 +50,9 @@ const getMorphoAaveV2MarketsData = (web3, network, mainnetWeb3) => __awaiter(voi
|
|
|
50
50
|
underlyingTokenAddress: address,
|
|
51
51
|
priceInEth: new decimal_js_1.default(aaveInfo.price).div(1e18).toString(),
|
|
52
52
|
price: new decimal_js_1.default(aaveInfo.price).div(1e18).times(ethPrice).toString(),
|
|
53
|
-
supplyRate: new decimal_js_1.default(market.poolSupplyRate).div(1e25).toString(),
|
|
53
|
+
supplyRate: (0, moneymarket_1.aprToApy)(new decimal_js_1.default(market.poolSupplyRate).div(1e25).toString()),
|
|
54
54
|
supplyRateP2P,
|
|
55
|
-
borrowRate: new decimal_js_1.default(market.poolBorrowRate).div(1e25).toString(),
|
|
55
|
+
borrowRate: (0, moneymarket_1.aprToApy)(new decimal_js_1.default(market.poolBorrowRate).div(1e25).toString()),
|
|
56
56
|
borrowRateP2P,
|
|
57
57
|
totalSupply: (0, tokens_1.assetAmountInEth)(aaveInfo.totalSupply, symbol),
|
|
58
58
|
totalBorrow: (0, tokens_1.assetAmountInEth)(aaveInfo.totalBorrow, symbol),
|
|
@@ -178,8 +178,8 @@ const getMorphoAaveV2AccountData = (web3, network, address, assetsData) => __awa
|
|
|
178
178
|
borrowedUsdVariable: borrowedUsd,
|
|
179
179
|
isSupplied: new decimal_js_1.default(supplied).gt(0),
|
|
180
180
|
isBorrowed: new decimal_js_1.default(borrowed).gt(0),
|
|
181
|
-
supplyRate: new decimal_js_1.default(market.userSupplyRate).div(1e25).toString(),
|
|
182
|
-
borrowRate: new decimal_js_1.default(market.userBorrowRate).div(1e25).toString(),
|
|
181
|
+
supplyRate: (0, moneymarket_1.aprToApy)(new decimal_js_1.default(market.userSupplyRate).div(1e25).toString()),
|
|
182
|
+
borrowRate: (0, moneymarket_1.aprToApy)(new decimal_js_1.default(market.userBorrowRate).div(1e25).toString()),
|
|
183
183
|
limit: '0',
|
|
184
184
|
collateral: true,
|
|
185
185
|
eModeCategory: 0,
|
|
@@ -147,9 +147,9 @@ const getMorphoAaveV3MarketsData = (web3, network, selectedMarket, mainnetWeb3)
|
|
|
147
147
|
aTokenAddress: marketData.aTokenAddress,
|
|
148
148
|
underlyingTokenAddress: address,
|
|
149
149
|
price: new decimal_js_1.default(marketData.price.toString()).div(1e8).toString(),
|
|
150
|
-
supplyRate: new decimal_js_1.default(marketData.supplyRate.toString()).div(1e25).toString(),
|
|
150
|
+
supplyRate: (0, moneymarket_1.aprToApy)(new decimal_js_1.default(marketData.supplyRate.toString()).div(1e25).toString()),
|
|
151
151
|
supplyRateP2P: marketData.p2pSupplyAPY,
|
|
152
|
-
borrowRate: new decimal_js_1.default(marketData.borrowRateVariable.toString()).div(1e25).toString(),
|
|
152
|
+
borrowRate: (0, moneymarket_1.aprToApy)(new decimal_js_1.default(marketData.borrowRateVariable.toString()).div(1e25).toString()),
|
|
153
153
|
borrowRateP2P: marketData.p2pBorrowAPY,
|
|
154
154
|
totalSupply: (0, tokens_1.assetAmountInEth)(marketData.totalSupply.toString(), symbol),
|
|
155
155
|
totalBorrow: (0, tokens_1.assetAmountInEth)(marketData.totalBorrow.toString(), symbol),
|
package/cjs/spark/index.js
CHANGED
|
@@ -89,9 +89,9 @@ const getSparkMarketsData = (web3, network, selectedMarket, mainnetWeb3) => __aw
|
|
|
89
89
|
isolationModeTotalDebt: new decimal_js_1.default(market.isolationModeTotalDebt).div(100).toString(),
|
|
90
90
|
assetId: Number(market.assetId),
|
|
91
91
|
underlyingTokenAddress: market.underlyingTokenAddress,
|
|
92
|
-
supplyRate: new decimal_js_1.default(market.supplyRate.toString()).div(1e25).toString(),
|
|
93
|
-
borrowRate: new decimal_js_1.default(market.borrowRateVariable.toString()).div(1e25).toString(),
|
|
94
|
-
borrowRateStable: new decimal_js_1.default(market.borrowRateStable.toString()).div(1e25).toString(),
|
|
92
|
+
supplyRate: (0, moneymarket_1.aprToApy)(new decimal_js_1.default(market.supplyRate.toString()).div(1e25).toString()),
|
|
93
|
+
borrowRate: (0, moneymarket_1.aprToApy)(new decimal_js_1.default(market.borrowRateVariable.toString()).div(1e25).toString()),
|
|
94
|
+
borrowRateStable: (0, moneymarket_1.aprToApy)(new decimal_js_1.default(market.borrowRateStable.toString()).div(1e25).toString()),
|
|
95
95
|
collateralFactor: new decimal_js_1.default(market.collateralFactor.toString()).div(10000).toString(),
|
|
96
96
|
liquidationRatio: new decimal_js_1.default(market.liquidationRatio.toString()).div(10000).toString(),
|
|
97
97
|
marketLiquidity,
|
|
@@ -311,7 +311,7 @@ const getSparkAccountData = (web3, network, address, extractedState) => __awaite
|
|
|
311
311
|
}
|
|
312
312
|
if (!usedAssets[asset])
|
|
313
313
|
usedAssets[asset] = {};
|
|
314
|
-
usedAssets[asset] = Object.assign(Object.assign({}, usedAssets[asset]), { symbol: asset, supplied, suppliedUsd: new decimal_js_1.default(supplied).mul(assetsData[asset].price).toString(), isSupplied, collateral: enabledAsCollateral, stableBorrowRate: new decimal_js_1.default(tokenInfo.stableBorrowRate).div(1e25).toString(), borrowedStable,
|
|
314
|
+
usedAssets[asset] = Object.assign(Object.assign({}, usedAssets[asset]), { symbol: asset, supplied, suppliedUsd: new decimal_js_1.default(supplied).mul(assetsData[asset].price).toString(), isSupplied, collateral: enabledAsCollateral, stableBorrowRate: (0, moneymarket_1.aprToApy)(new decimal_js_1.default(tokenInfo.stableBorrowRate).div(1e25).toString()), borrowedStable,
|
|
315
315
|
borrowedVariable, borrowedUsdStable: new decimal_js_1.default(borrowedStable).mul(assetsData[asset].price).toString(), borrowedUsdVariable: new decimal_js_1.default(borrowedVariable).mul(assetsData[asset].price).toString(), borrowed: new decimal_js_1.default(borrowedStable).add(borrowedVariable).toString(), borrowedUsd: new decimal_js_1.default(new decimal_js_1.default(borrowedVariable).add(borrowedStable)).mul(assetsData[asset].price).toString(), isBorrowed, eModeCategory: assetsData[asset].eModeCategory, interestMode });
|
|
316
316
|
});
|
|
317
317
|
payload.eModeCategory = +multicallRes[0][0];
|
package/cjs/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/cjs/staking/staking.js
CHANGED
|
@@ -12,9 +12,8 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
12
12
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
13
13
|
};
|
|
14
14
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
-
exports.getStETHByWstETHMultiple = exports.getStETHByWstETH = exports.getWstETHByStETH = exports.calculateNetApy = exports.calculateInterestEarned = exports.getStakingApy = exports.STAKING_ASSETS = exports.
|
|
15
|
+
exports.getStETHByWstETHMultiple = exports.getStETHByWstETH = exports.getWstETHByStETH = exports.calculateNetApy = exports.calculateInterestEarned = exports.getStakingApy = exports.STAKING_ASSETS = exports.getDsrApy = exports.getREthApr = exports.getCbETHApr = exports.getStETHApr = void 0;
|
|
16
16
|
const decimal_js_1 = __importDefault(require("decimal.js"));
|
|
17
|
-
const v3_sdk_1 = require("@stakewise/v3-sdk");
|
|
18
17
|
const contracts_1 = require("../contracts");
|
|
19
18
|
const common_1 = require("../types/common");
|
|
20
19
|
const constants_1 = require("../constants");
|
|
@@ -87,23 +86,12 @@ const getDsrApy = (web3, blockNumber = 'latest') => __awaiter(void 0, void 0, vo
|
|
|
87
86
|
.toString();
|
|
88
87
|
});
|
|
89
88
|
exports.getDsrApy = getDsrApy;
|
|
90
|
-
const
|
|
91
|
-
const res = yield fetch(
|
|
89
|
+
const getApyFromDfsApi = (asset) => __awaiter(void 0, void 0, void 0, function* () {
|
|
90
|
+
const res = yield fetch(`https://app.defisaver.com/api/staking/apy?asset=${asset}`);
|
|
92
91
|
const data = yield res.json();
|
|
93
92
|
return data.apy;
|
|
94
93
|
});
|
|
95
|
-
exports.
|
|
96
|
-
const getWeEthApr = () => __awaiter(void 0, void 0, void 0, function* () {
|
|
97
|
-
const res = yield fetch('https://app.defisaver.com/api/staking/apy?asset=weETH');
|
|
98
|
-
const data = yield res.json();
|
|
99
|
-
return data.apy;
|
|
100
|
-
});
|
|
101
|
-
const getOsETHApy = () => __awaiter(void 0, void 0, void 0, function* () {
|
|
102
|
-
const sdk = new v3_sdk_1.StakeWiseSDK({ network: v3_sdk_1.Network.Mainnet });
|
|
103
|
-
const apy = yield sdk.osToken.getAPY();
|
|
104
|
-
return apy;
|
|
105
|
-
});
|
|
106
|
-
exports.STAKING_ASSETS = ['cbETH', 'wstETH', 'cbETH', 'rETH', 'sDAI', 'weETH', 'sUSDe', 'osETH'];
|
|
94
|
+
exports.STAKING_ASSETS = ['cbETH', 'wstETH', 'cbETH', 'rETH', 'sDAI', 'weETH', 'sUSDe', 'osETH', 'ezETH'];
|
|
107
95
|
const getStakingApy = (asset, web3, blockNumber = 'latest', fromBlock = undefined) => {
|
|
108
96
|
try {
|
|
109
97
|
if (asset === 'stETH' || asset === 'wstETH')
|
|
@@ -115,11 +103,13 @@ const getStakingApy = (asset, web3, blockNumber = 'latest', fromBlock = undefine
|
|
|
115
103
|
if (asset === 'sDAI')
|
|
116
104
|
return (0, exports.getDsrApy)(web3);
|
|
117
105
|
if (asset === 'sUSDe')
|
|
118
|
-
return (
|
|
106
|
+
return getApyFromDfsApi('sUSDe');
|
|
119
107
|
if (asset === 'weETH')
|
|
120
|
-
return
|
|
108
|
+
return getApyFromDfsApi('weETH');
|
|
109
|
+
if (asset === 'ezETH')
|
|
110
|
+
return getApyFromDfsApi('ezETH');
|
|
121
111
|
if (asset === 'osETH')
|
|
122
|
-
return
|
|
112
|
+
return getApyFromDfsApi('osETH');
|
|
123
113
|
}
|
|
124
114
|
catch (e) {
|
|
125
115
|
console.error(`Failed to fetch APY for ${asset}`);
|
|
@@ -15,6 +15,7 @@ export declare enum MorphoBlueVersions {
|
|
|
15
15
|
MorphoBlueSUSDeUSDT = "morphobluesusdeusdt",
|
|
16
16
|
MorphoBlueSDAIEth = "morphobluesdaieth",
|
|
17
17
|
MorphoBlueEzEthEth = "morphoblueezetheth",
|
|
18
|
+
MorphoBlueMKRUSDC = "morphobluemkrusdc",
|
|
18
19
|
MorphoBlueWstEthEth_945 = "morphobluewstetheth_945",
|
|
19
20
|
MorphoBlueWstEthEth_945_Exchange_Rate = "morphobluewstetheth_945_exchange_rate",
|
|
20
21
|
MorphoBlueWstEthEth_965_Exchange_Rate = "morphobluewstetheth_965_exchange_rate",
|
package/cjs/types/morphoBlue.js
CHANGED
|
@@ -19,6 +19,7 @@ var MorphoBlueVersions;
|
|
|
19
19
|
MorphoBlueVersions["MorphoBlueSUSDeUSDT"] = "morphobluesusdeusdt";
|
|
20
20
|
MorphoBlueVersions["MorphoBlueSDAIEth"] = "morphobluesdaieth";
|
|
21
21
|
MorphoBlueVersions["MorphoBlueEzEthEth"] = "morphoblueezetheth";
|
|
22
|
+
MorphoBlueVersions["MorphoBlueMKRUSDC"] = "morphobluemkrusdc";
|
|
22
23
|
// wstETH/WETH
|
|
23
24
|
MorphoBlueVersions["MorphoBlueWstEthEth_945"] = "morphobluewstetheth_945";
|
|
24
25
|
MorphoBlueVersions["MorphoBlueWstEthEth_945_Exchange_Rate"] = "morphobluewstetheth_945_exchange_rate";
|
package/esm/aaveV2/index.js
CHANGED
|
@@ -12,7 +12,7 @@ import { assetAmountInEth, getAssetInfo } from '@defisaver/tokens';
|
|
|
12
12
|
import { calculateNetApy, getStETHApr } from '../staking';
|
|
13
13
|
import { ethToWeth, wethToEth, wethToEthByAddress } from '../services/utils';
|
|
14
14
|
import { AaveLoanInfoV2Contract, createContractWrapper } from '../contracts';
|
|
15
|
-
import { calculateBorrowingAssetLimit } from '../moneymarket';
|
|
15
|
+
import { aprToApy, calculateBorrowingAssetLimit } from '../moneymarket';
|
|
16
16
|
import { EMPTY_AAVE_DATA } from '../aaveV3';
|
|
17
17
|
import { AAVE_V2 } from '../markets/aave';
|
|
18
18
|
import { aaveAnyGetAggregatedPositionData } from '../helpers/aaveHelpers';
|
|
@@ -27,9 +27,9 @@ export const getAaveV2MarketsData = (web3, network, selectedMarket, mainnetWeb3)
|
|
|
27
27
|
.map((market, i) => ({
|
|
28
28
|
symbol: selectedMarket.assets[i],
|
|
29
29
|
underlyingTokenAddress: market.underlyingTokenAddress,
|
|
30
|
-
supplyRate: new Dec(market.supplyRate.toString()).div(1e25).toString(),
|
|
31
|
-
borrowRate: new Dec(market.borrowRateVariable.toString()).div(1e25).toString(),
|
|
32
|
-
borrowRateStable: new Dec(market.borrowRateStable.toString()).div(1e25).toString(),
|
|
30
|
+
supplyRate: aprToApy(new Dec(market.supplyRate.toString()).div(1e25).toString()),
|
|
31
|
+
borrowRate: aprToApy(new Dec(market.borrowRateVariable.toString()).div(1e25).toString()),
|
|
32
|
+
borrowRateStable: aprToApy(new Dec(market.borrowRateStable.toString()).div(1e25).toString()),
|
|
33
33
|
collateralFactor: new Dec(market.collateralFactor.toString()).div(10000).toString(),
|
|
34
34
|
liquidationRatio: new Dec(market.liquidationRatio.toString()).div(10000).toString(),
|
|
35
35
|
marketLiquidity: assetAmountInEth(new Dec(market.totalSupply.toString())
|
|
@@ -143,7 +143,7 @@ export const getAaveV2AccountData = (web3, network, address, assetsData, market)
|
|
|
143
143
|
}
|
|
144
144
|
if (!usedAssets[asset])
|
|
145
145
|
usedAssets[asset] = {};
|
|
146
|
-
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,
|
|
146
|
+
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,
|
|
147
147
|
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,
|
|
148
148
|
interestMode });
|
|
149
149
|
});
|
package/esm/aaveV3/index.js
CHANGED
|
@@ -15,7 +15,7 @@ import { NetworkNumber, } from '../types/common';
|
|
|
15
15
|
import { getStakingApy, STAKING_ASSETS } from '../staking';
|
|
16
16
|
import { multicall } from '../multicall';
|
|
17
17
|
import { getAssetsBalances } from '../assets';
|
|
18
|
-
import { calculateBorrowingAssetLimit } from '../moneymarket';
|
|
18
|
+
import { aprToApy, calculateBorrowingAssetLimit } from '../moneymarket';
|
|
19
19
|
import { aaveAnyGetAggregatedPositionData, aaveV3IsInIsolationMode, aaveV3IsInSiloedMode, } from '../helpers/aaveHelpers';
|
|
20
20
|
import { AAVE_V3 } from '../markets/aave';
|
|
21
21
|
export const test = (web3, network) => {
|
|
@@ -152,7 +152,7 @@ export function getAaveV3MarketData(web3, network, market, defaultWeb3) {
|
|
|
152
152
|
minDiscountTokenBalance,
|
|
153
153
|
minGhoBalanceForDiscount,
|
|
154
154
|
},
|
|
155
|
-
})), { symbol, isIsolated: new Dec(tokenMarket.debtCeilingForIsolationMode).gt(0), debtCeilingForIsolationMode: new Dec(tokenMarket.debtCeilingForIsolationMode).div(100).toString(), isSiloed: tokenMarket.isSiloedForBorrowing, eModeCategory: +tokenMarket.emodeCategory, isolationModeTotalDebt: new Dec(tokenMarket.isolationModeTotalDebt).div(100).toString(), assetId: Number(tokenMarket.assetId), underlyingTokenAddress: tokenMarket.underlyingTokenAddress, supplyRate: new Dec(tokenMarket.supplyRate.toString()).div(1e25).toString(), borrowRate: new Dec(tokenMarket.borrowRateVariable.toString()).div(1e25).toString(), borrowRateDiscounted: nativeAsset ? new Dec(tokenMarket.borrowRateVariable.toString()).div(1e25).mul(1 - parseFloat(discountRateOnBorrow)).toString() : '0', borrowRateStable: new Dec(tokenMarket.borrowRateStable.toString()).div(1e25).toString(), collateralFactor: new Dec(tokenMarket.collateralFactor.toString()).div(10000).toString(), liquidationRatio: new Dec(tokenMarket.liquidationRatio.toString()).div(10000).toString(), marketLiquidity, utilization: new Dec(tokenMarket.totalBorrow.toString()).times(100).div(new Dec(tokenMarket.totalSupply.toString())).toString(), usageAsCollateralEnabled: tokenMarket.usageAsCollateralEnabled, supplyCap: tokenMarket.supplyCap, borrowCap, totalSupply: assetAmountInEth(tokenMarket.totalSupply.toString(), symbol), isInactive: !tokenMarket.isActive, isFrozen: tokenMarket.isFrozen, isPaused: tokenMarket.isPaused, canBeBorrowed: tokenMarket.isActive && !tokenMarket.isPaused && !tokenMarket.isFrozen && tokenMarket.borrowingEnabled && isBorrowAllowed, canBeSupplied: !nativeAsset && tokenMarket.isActive && !tokenMarket.isPaused && !tokenMarket.isFrozen, canBeWithdrawn: tokenMarket.isActive && !tokenMarket.isPaused, canBePayBacked: tokenMarket.isActive && !tokenMarket.isPaused, disabledStableBorrowing: !tokenMarket.stableBorrowRateEnabled, totalBorrow: assetAmountInEth(tokenMarket.totalBorrow.toString(), symbol), totalBorrowVar: assetAmountInEth(tokenMarket.totalBorrowVar.toString(), symbol), price: new Dec(tokenMarket.price.toString()).div(1e8).toString(), isolationModeBorrowingEnabled: tokenMarket.isolationModeBorrowingEnabled, isFlashLoanEnabled: tokenMarket.isFlashLoanEnabled, eModeCategoryData: {
|
|
155
|
+
})), { symbol, isIsolated: new Dec(tokenMarket.debtCeilingForIsolationMode).gt(0), debtCeilingForIsolationMode: new Dec(tokenMarket.debtCeilingForIsolationMode).div(100).toString(), isSiloed: tokenMarket.isSiloedForBorrowing, eModeCategory: +tokenMarket.emodeCategory, isolationModeTotalDebt: new Dec(tokenMarket.isolationModeTotalDebt).div(100).toString(), assetId: Number(tokenMarket.assetId), underlyingTokenAddress: tokenMarket.underlyingTokenAddress, supplyRate: aprToApy(new Dec(tokenMarket.supplyRate.toString()).div(1e25).toString()), borrowRate: aprToApy(new Dec(tokenMarket.borrowRateVariable.toString()).div(1e25).toString()), borrowRateDiscounted: aprToApy(nativeAsset ? new Dec(tokenMarket.borrowRateVariable.toString()).div(1e25).mul(1 - parseFloat(discountRateOnBorrow)).toString() : '0'), borrowRateStable: aprToApy(new Dec(tokenMarket.borrowRateStable.toString()).div(1e25).toString()), collateralFactor: new Dec(tokenMarket.collateralFactor.toString()).div(10000).toString(), liquidationRatio: new Dec(tokenMarket.liquidationRatio.toString()).div(10000).toString(), marketLiquidity, utilization: new Dec(tokenMarket.totalBorrow.toString()).times(100).div(new Dec(tokenMarket.totalSupply.toString())).toString(), usageAsCollateralEnabled: tokenMarket.usageAsCollateralEnabled, supplyCap: tokenMarket.supplyCap, borrowCap, totalSupply: assetAmountInEth(tokenMarket.totalSupply.toString(), symbol), isInactive: !tokenMarket.isActive, isFrozen: tokenMarket.isFrozen, isPaused: tokenMarket.isPaused, canBeBorrowed: tokenMarket.isActive && !tokenMarket.isPaused && !tokenMarket.isFrozen && tokenMarket.borrowingEnabled && isBorrowAllowed, canBeSupplied: !nativeAsset && tokenMarket.isActive && !tokenMarket.isPaused && !tokenMarket.isFrozen, canBeWithdrawn: tokenMarket.isActive && !tokenMarket.isPaused, canBePayBacked: tokenMarket.isActive && !tokenMarket.isPaused, disabledStableBorrowing: !tokenMarket.stableBorrowRateEnabled, totalBorrow: assetAmountInEth(tokenMarket.totalBorrow.toString(), symbol), totalBorrowVar: assetAmountInEth(tokenMarket.totalBorrowVar.toString(), symbol), price: new Dec(tokenMarket.price.toString()).div(1e8).toString(), isolationModeBorrowingEnabled: tokenMarket.isolationModeBorrowingEnabled, isFlashLoanEnabled: tokenMarket.isFlashLoanEnabled, eModeCategoryData: {
|
|
156
156
|
label: tokenMarket.label,
|
|
157
157
|
liquidationBonus: new Dec(tokenMarket.liquidationBonus).div(10000).toString(),
|
|
158
158
|
liquidationRatio: new Dec(tokenMarket.liquidationThreshold).div(10000).toString(),
|
|
@@ -348,7 +348,7 @@ export const getAaveV3AccountData = (web3, network, address, extractedState) =>
|
|
|
348
348
|
if (nativeAsset && new Dec(borrowed).gt(0) && new Dec(stkAaveBalance).gt(0)) {
|
|
349
349
|
discountRateOnBorrow = aaveV3CalculateDiscountRate(assetAmountInWei(borrowed, 'GHO'), assetAmountInWei(stkAaveBalance, 'stkAAVE'), assetsData[asset].discountData.discountRate, assetsData[asset].discountData.minDiscountTokenBalance, assetsData[asset].discountData.minGhoBalanceForDiscount, assetsData[asset].discountData.ghoDiscountedPerDiscountToken);
|
|
350
350
|
}
|
|
351
|
-
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(), discountedBorrowRate: new Dec(assetsData[asset].borrowRate).mul(1 - parseFloat(discountRateOnBorrow)).toString(), borrowedStable,
|
|
351
|
+
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()), discountedBorrowRate: aprToApy(new Dec(assetsData[asset].borrowRate).mul(1 - parseFloat(discountRateOnBorrow)).toString()), borrowedStable,
|
|
352
352
|
borrowedVariable, borrowedUsdStable: new Dec(borrowedStable).mul(assetsData[asset].price).toString(), borrowedUsdVariable: new Dec(borrowedVariable).mul(assetsData[asset].price).toString(), borrowed, borrowedUsd: new Dec(new Dec(borrowedVariable).add(borrowedStable)).mul(assetsData[asset].price).toString(), isBorrowed, eModeCategory: assetsData[asset].eModeCategory, interestMode });
|
|
353
353
|
}));
|
|
354
354
|
payload.eModeCategory = +multicallRes[0][0];
|
|
@@ -15,6 +15,7 @@ export declare const MORPHO_BLUE_USDE_USDT: (networkId?: NetworkNumber) => Morph
|
|
|
15
15
|
export declare const MORPHO_BLUE_SUSDE_USDT: (networkId?: NetworkNumber) => MorphoBlueMarketData;
|
|
16
16
|
export declare const MORPHO_BLUE_SDAI_ETH: (networkId?: NetworkNumber) => MorphoBlueMarketData;
|
|
17
17
|
export declare const MORPHO_BLUE_EZETH_ETH: (networkId?: NetworkNumber) => MorphoBlueMarketData;
|
|
18
|
+
export declare const MORPHO_BLUE_MKR_USDC: (networkId?: NetworkNumber) => MorphoBlueMarketData;
|
|
18
19
|
export declare const MORPHO_BLUE_WSTETH_ETH_945: (networkId?: NetworkNumber) => MorphoBlueMarketData;
|
|
19
20
|
export declare const MORPHO_BLUE_WSTETH_ETH_945_EXCHANGE_RATE: (networkId?: NetworkNumber) => MorphoBlueMarketData;
|
|
20
21
|
export declare const MORPHO_BLUE_WSTETH_ETH_965_EXCHANGE_RATE: (networkId?: NetworkNumber) => MorphoBlueMarketData;
|
|
@@ -43,6 +44,7 @@ export declare const MorphoBlueMarkets: (networkId: NetworkNumber) => {
|
|
|
43
44
|
readonly morphobluesusdeusdt: MorphoBlueMarketData;
|
|
44
45
|
readonly morphobluesdaieth: MorphoBlueMarketData;
|
|
45
46
|
readonly morphoblueezetheth: MorphoBlueMarketData;
|
|
47
|
+
readonly morphobluemkrusdc: MorphoBlueMarketData;
|
|
46
48
|
readonly morphobluewstetheth_945: MorphoBlueMarketData;
|
|
47
49
|
readonly morphobluewstetheth_945_exchange_rate: MorphoBlueMarketData;
|
|
48
50
|
readonly morphobluewstetheth_965_exchange_rate: MorphoBlueMarketData;
|
|
@@ -226,6 +226,21 @@ export const MORPHO_BLUE_EZETH_ETH = (networkId = NetworkNumber.Eth) => ({
|
|
|
226
226
|
marketId: '0x49bb2d114be9041a787432952927f6f144f05ad3e83196a7d062f374ee11d0ee',
|
|
227
227
|
protocolName: 'morpho-blue',
|
|
228
228
|
});
|
|
229
|
+
export const MORPHO_BLUE_MKR_USDC = (networkId = NetworkNumber.Eth) => ({
|
|
230
|
+
chainIds: [1],
|
|
231
|
+
label: 'Morpho Blue',
|
|
232
|
+
shortLabel: 'MKR/USDC',
|
|
233
|
+
value: MorphoBlueVersions.MorphoBlueMKRUSDC,
|
|
234
|
+
url: 'mkrusdc',
|
|
235
|
+
loanToken: '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48',
|
|
236
|
+
collateralToken: '0x9f8F72aA9304c8B593d555F12eF6589cC3A579A2',
|
|
237
|
+
oracle: '0x6686788B4315A4F93d822c1Bf73910556FCe2d5a',
|
|
238
|
+
oracleType: MorphoBlueOracleType.MARKET_RATE,
|
|
239
|
+
irm: '0x870aC11D48B15DB9a138Cf899d20F13F79Ba00BC',
|
|
240
|
+
lltv: 0.77,
|
|
241
|
+
marketId: '0x97bb820669a19ba5fa6de964a466292edd67957849f9631eb8b830c382f58b7f',
|
|
242
|
+
protocolName: 'morpho-blue',
|
|
243
|
+
});
|
|
229
244
|
// wstETH/WETH
|
|
230
245
|
export const MORPHO_BLUE_WSTETH_ETH_945 = (networkId = NetworkNumber.Eth) => ({
|
|
231
246
|
chainIds: [1],
|
|
@@ -426,6 +441,7 @@ export const MorphoBlueMarkets = (networkId) => ({
|
|
|
426
441
|
[MorphoBlueVersions.MorphoBlueSUSDeUSDT]: MORPHO_BLUE_SUSDE_USDT(networkId),
|
|
427
442
|
[MorphoBlueVersions.MorphoBlueSDAIEth]: MORPHO_BLUE_SDAI_ETH(networkId),
|
|
428
443
|
[MorphoBlueVersions.MorphoBlueEzEthEth]: MORPHO_BLUE_EZETH_ETH(networkId),
|
|
444
|
+
[MorphoBlueVersions.MorphoBlueMKRUSDC]: MORPHO_BLUE_MKR_USDC(networkId),
|
|
429
445
|
// wstETH/WETH
|
|
430
446
|
[MorphoBlueVersions.MorphoBlueWstEthEth_945]: MORPHO_BLUE_WSTETH_ETH_945(networkId),
|
|
431
447
|
[MorphoBlueVersions.MorphoBlueWstEthEth_945_Exchange_Rate]: MORPHO_BLUE_WSTETH_ETH_945_EXCHANGE_RATE(networkId),
|
|
@@ -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}`);
|
|
@@ -15,6 +15,7 @@ export declare enum MorphoBlueVersions {
|
|
|
15
15
|
MorphoBlueSUSDeUSDT = "morphobluesusdeusdt",
|
|
16
16
|
MorphoBlueSDAIEth = "morphobluesdaieth",
|
|
17
17
|
MorphoBlueEzEthEth = "morphoblueezetheth",
|
|
18
|
+
MorphoBlueMKRUSDC = "morphobluemkrusdc",
|
|
18
19
|
MorphoBlueWstEthEth_945 = "morphobluewstetheth_945",
|
|
19
20
|
MorphoBlueWstEthEth_945_Exchange_Rate = "morphobluewstetheth_945_exchange_rate",
|
|
20
21
|
MorphoBlueWstEthEth_965_Exchange_Rate = "morphobluewstetheth_965_exchange_rate",
|
package/esm/types/morphoBlue.js
CHANGED
|
@@ -16,6 +16,7 @@ export var MorphoBlueVersions;
|
|
|
16
16
|
MorphoBlueVersions["MorphoBlueSUSDeUSDT"] = "morphobluesusdeusdt";
|
|
17
17
|
MorphoBlueVersions["MorphoBlueSDAIEth"] = "morphobluesdaieth";
|
|
18
18
|
MorphoBlueVersions["MorphoBlueEzEthEth"] = "morphoblueezetheth";
|
|
19
|
+
MorphoBlueVersions["MorphoBlueMKRUSDC"] = "morphobluemkrusdc";
|
|
19
20
|
// wstETH/WETH
|
|
20
21
|
MorphoBlueVersions["MorphoBlueWstEthEth_945"] = "morphobluewstetheth_945";
|
|
21
22
|
MorphoBlueVersions["MorphoBlueWstEthEth_945_Exchange_Rate"] = "morphobluewstetheth_945_exchange_rate";
|