@defisaver/positions-sdk 0.0.84 → 0.0.86

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (36) hide show
  1. package/cjs/aaveV2/index.js +4 -4
  2. package/cjs/aaveV3/index.js +2 -2
  3. package/cjs/markets/morphoBlue/index.d.ts +10 -0
  4. package/cjs/markets/morphoBlue/index.js +95 -9
  5. package/cjs/moneymarket/moneymarketCommonService.d.ts +1 -1
  6. package/cjs/moneymarket/moneymarketCommonService.js +1 -1
  7. package/cjs/morphoAaveV2/index.js +6 -6
  8. package/cjs/morphoAaveV3/index.js +2 -2
  9. package/cjs/spark/index.js +4 -4
  10. package/cjs/staking/staking.d.ts +0 -1
  11. package/cjs/staking/staking.js +9 -19
  12. package/cjs/types/morphoBlue.d.ts +8 -2
  13. package/cjs/types/morphoBlue.js +6 -0
  14. package/esm/aaveV2/index.js +5 -5
  15. package/esm/aaveV3/index.js +3 -3
  16. package/esm/markets/morphoBlue/index.d.ts +10 -0
  17. package/esm/markets/morphoBlue/index.js +89 -8
  18. package/esm/moneymarket/moneymarketCommonService.d.ts +1 -1
  19. package/esm/moneymarket/moneymarketCommonService.js +1 -1
  20. package/esm/morphoAaveV2/index.js +7 -7
  21. package/esm/morphoAaveV3/index.js +3 -3
  22. package/esm/spark/index.js +5 -5
  23. package/esm/staking/staking.d.ts +0 -1
  24. package/esm/staking/staking.js +8 -17
  25. package/esm/types/morphoBlue.d.ts +8 -2
  26. package/esm/types/morphoBlue.js +6 -0
  27. package/package.json +1 -2
  28. package/src/aaveV2/index.ts +5 -5
  29. package/src/aaveV3/index.ts +7 -8
  30. package/src/markets/morphoBlue/index.ts +89 -8
  31. package/src/moneymarket/moneymarketCommonService.ts +1 -1
  32. package/src/morphoAaveV2/index.ts +7 -7
  33. package/src/morphoAaveV3/index.ts +4 -4
  34. package/src/spark/index.ts +6 -6
  35. package/src/staking/staking.ts +8 -20
  36. package/src/types/morphoBlue.ts +6 -0
@@ -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
  });
@@ -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];
@@ -28,6 +28,11 @@ export declare const MORPHO_BLUE_USDE_DAI_860: (networkId?: NetworkNumber) => Mo
28
28
  export declare const MORPHO_BLUE_USDE_DAI_915: (networkId?: NetworkNumber) => MorphoBlueMarketData;
29
29
  export declare const MORPHO_BLUE_USDE_DAI_945: (networkId?: NetworkNumber) => MorphoBlueMarketData;
30
30
  export declare const MORPHO_BLUE_CBETH_USDC_860_BASE: (networkId?: NetworkNumber) => MorphoBlueMarketData;
31
+ export declare const MORPHO_BLUE_WSTETH_ETH_945_BASE: (networkId?: NetworkNumber) => MorphoBlueMarketData;
32
+ export declare const MORPHO_BLUE_WSTETH_ETH_965_BASE: (networkId?: NetworkNumber) => MorphoBlueMarketData;
33
+ export declare const MORPHO_BLUE_WSTETH_USDC_860_BASE: (networkId?: NetworkNumber) => MorphoBlueMarketData;
34
+ export declare const MORPHO_BLUE_CBETH_ETH_965_BASE: (networkId?: NetworkNumber) => MorphoBlueMarketData;
35
+ export declare const MORPHO_BLUE_ETH_USDC_860_BASE: (networkId?: NetworkNumber) => MorphoBlueMarketData;
31
36
  export declare const MorphoBlueMarkets: (networkId: NetworkNumber) => {
32
37
  readonly morphobluewstethusdc: MorphoBlueMarketData;
33
38
  readonly morphobluesdaiusdc: MorphoBlueMarketData;
@@ -57,5 +62,10 @@ export declare const MorphoBlueMarkets: (networkId: NetworkNumber) => {
57
62
  readonly morphoblueusdedai_915: MorphoBlueMarketData;
58
63
  readonly morphoblueusdedai_945: MorphoBlueMarketData;
59
64
  readonly morphobluecbethusdc_860_base: MorphoBlueMarketData;
65
+ readonly morphobluewstetheth_945_base: MorphoBlueMarketData;
66
+ readonly morphobluewstetheth_965_base: MorphoBlueMarketData;
67
+ readonly morphobluewstethusdc_860_base: MorphoBlueMarketData;
68
+ readonly morphobluecbetheth_965_base: MorphoBlueMarketData;
69
+ readonly morphoblueethusdc_860_base: MorphoBlueMarketData;
60
70
  };
61
71
  export declare const findMorphoBlueMarket: (collateralToken: string, loanToken: string, lltv: number, oracle: string, irm: string, network?: NetworkNumber) => MorphoBlueMarketData | null;
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.findMorphoBlueMarket = exports.MorphoBlueMarkets = exports.MORPHO_BLUE_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;
3
+ exports.findMorphoBlueMarket = exports.MorphoBlueMarkets = exports.MORPHO_BLUE_ETH_USDC_860_BASE = exports.MORPHO_BLUE_CBETH_ETH_965_BASE = exports.MORPHO_BLUE_WSTETH_USDC_860_BASE = exports.MORPHO_BLUE_WSTETH_ETH_965_BASE = exports.MORPHO_BLUE_WSTETH_ETH_945_BASE = 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");
@@ -319,7 +319,7 @@ const MORPHO_BLUE_SUSDE_DAI_770 = (networkId = common_1.NetworkNumber.Eth) => ({
319
319
  loanToken: '0x6B175474E89094C44Da98b954EedeAC495271d0F',
320
320
  collateralToken: '0x9D39A5DE30e57443BfF2A8307A4256c8797A3497',
321
321
  oracle: '0x5D916980D5Ae1737a8330Bf24dF812b2911Aae25',
322
- oracleType: types_1.MorphoBlueOracleType.MARKET_RATE,
322
+ oracleType: types_1.MorphoBlueOracleType.ETHENA_RATE,
323
323
  irm: '0x870aC11D48B15DB9a138Cf899d20F13F79Ba00BC',
324
324
  lltv: 0.77,
325
325
  marketId: '0x42dcfb38bb98767afb6e38ccf90d59d0d3f0aa216beb3a234f12850323d17536',
@@ -335,7 +335,7 @@ const MORPHO_BLUE_SUSDE_DAI_860 = (networkId = common_1.NetworkNumber.Eth) => ({
335
335
  loanToken: '0x6B175474E89094C44Da98b954EedeAC495271d0F',
336
336
  collateralToken: '0x9D39A5DE30e57443BfF2A8307A4256c8797A3497',
337
337
  oracle: '0x5D916980D5Ae1737a8330Bf24dF812b2911Aae25',
338
- oracleType: types_1.MorphoBlueOracleType.MARKET_RATE,
338
+ oracleType: types_1.MorphoBlueOracleType.ETHENA_RATE,
339
339
  irm: '0x870aC11D48B15DB9a138Cf899d20F13F79Ba00BC',
340
340
  lltv: 0.86,
341
341
  marketId: '0x39d11026eae1c6ec02aa4c0910778664089cdd97c3fd23f68f7cd05e2e95af48',
@@ -351,7 +351,7 @@ const MORPHO_BLUE_SUSDE_DAI_915 = (networkId = common_1.NetworkNumber.Eth) => ({
351
351
  loanToken: '0x6B175474E89094C44Da98b954EedeAC495271d0F',
352
352
  collateralToken: '0x9D39A5DE30e57443BfF2A8307A4256c8797A3497',
353
353
  oracle: '0x5D916980D5Ae1737a8330Bf24dF812b2911Aae25',
354
- oracleType: types_1.MorphoBlueOracleType.MARKET_RATE,
354
+ oracleType: types_1.MorphoBlueOracleType.ETHENA_RATE,
355
355
  irm: '0x870aC11D48B15DB9a138Cf899d20F13F79Ba00BC',
356
356
  lltv: 0.915,
357
357
  marketId: '0x1247f1c237eceae0602eab1470a5061a6dd8f734ba88c7cdc5d6109fb0026b28',
@@ -367,7 +367,7 @@ const MORPHO_BLUE_SUSDE_DAI_945 = (networkId = common_1.NetworkNumber.Eth) => ({
367
367
  loanToken: '0x6B175474E89094C44Da98b954EedeAC495271d0F',
368
368
  collateralToken: '0x9D39A5DE30e57443BfF2A8307A4256c8797A3497',
369
369
  oracle: '0x5D916980D5Ae1737a8330Bf24dF812b2911Aae25',
370
- oracleType: types_1.MorphoBlueOracleType.MARKET_RATE,
370
+ oracleType: types_1.MorphoBlueOracleType.ETHENA_RATE,
371
371
  irm: '0x870aC11D48B15DB9a138Cf899d20F13F79Ba00BC',
372
372
  lltv: 0.945,
373
373
  marketId: '0xe475337d11be1db07f7c5a156e511f05d1844308e66e17d2ba5da0839d3b34d9',
@@ -384,7 +384,7 @@ const MORPHO_BLUE_USDE_DAI_770 = (networkId = common_1.NetworkNumber.Eth) => ({
384
384
  loanToken: '0x6B175474E89094C44Da98b954EedeAC495271d0F',
385
385
  collateralToken: '0x4c9EDD5852cd905f086C759E8383e09bff1E68B3',
386
386
  oracle: '0xaE4750d0813B5E37A51f7629beedd72AF1f9cA35',
387
- oracleType: types_1.MorphoBlueOracleType.MARKET_RATE,
387
+ oracleType: types_1.MorphoBlueOracleType.ETHENA_RATE,
388
388
  irm: '0x870aC11D48B15DB9a138Cf899d20F13F79Ba00BC',
389
389
  lltv: 0.77,
390
390
  marketId: '0xfd8493f09eb6203615221378d89f53fcd92ff4f7d62cca87eece9a2fff59e86f',
@@ -400,7 +400,7 @@ const MORPHO_BLUE_USDE_DAI_860 = (networkId = common_1.NetworkNumber.Eth) => ({
400
400
  loanToken: '0x6B175474E89094C44Da98b954EedeAC495271d0F',
401
401
  collateralToken: '0x4c9EDD5852cd905f086C759E8383e09bff1E68B3',
402
402
  oracle: '0xaE4750d0813B5E37A51f7629beedd72AF1f9cA35',
403
- oracleType: types_1.MorphoBlueOracleType.MARKET_RATE,
403
+ oracleType: types_1.MorphoBlueOracleType.ETHENA_RATE,
404
404
  irm: '0x870aC11D48B15DB9a138Cf899d20F13F79Ba00BC',
405
405
  lltv: 0.86,
406
406
  marketId: '0xc581c5f70bd1afa283eed57d1418c6432cbff1d862f94eaf58fdd4e46afbb67f',
@@ -416,7 +416,7 @@ const MORPHO_BLUE_USDE_DAI_915 = (networkId = common_1.NetworkNumber.Eth) => ({
416
416
  loanToken: '0x6B175474E89094C44Da98b954EedeAC495271d0F',
417
417
  collateralToken: '0x4c9EDD5852cd905f086C759E8383e09bff1E68B3',
418
418
  oracle: '0xaE4750d0813B5E37A51f7629beedd72AF1f9cA35',
419
- oracleType: types_1.MorphoBlueOracleType.MARKET_RATE,
419
+ oracleType: types_1.MorphoBlueOracleType.ETHENA_RATE,
420
420
  irm: '0x870aC11D48B15DB9a138Cf899d20F13F79Ba00BC',
421
421
  lltv: 0.915,
422
422
  marketId: '0x8e6aeb10c401de3279ac79b4b2ea15fc94b7d9cfc098d6c2a1ff7b2b26d9d02c',
@@ -432,7 +432,7 @@ const MORPHO_BLUE_USDE_DAI_945 = (networkId = common_1.NetworkNumber.Eth) => ({
432
432
  loanToken: '0x6B175474E89094C44Da98b954EedeAC495271d0F',
433
433
  collateralToken: '0x4c9EDD5852cd905f086C759E8383e09bff1E68B3',
434
434
  oracle: '0xaE4750d0813B5E37A51f7629beedd72AF1f9cA35',
435
- oracleType: types_1.MorphoBlueOracleType.MARKET_RATE,
435
+ oracleType: types_1.MorphoBlueOracleType.ETHENA_RATE,
436
436
  irm: '0x870aC11D48B15DB9a138Cf899d20F13F79Ba00BC',
437
437
  lltv: 0.945,
438
438
  marketId: '0xdb760246f6859780f6c1b272d47a8f64710777121118e56e0cdb4b8b744a3094',
@@ -456,6 +456,86 @@ const MORPHO_BLUE_CBETH_USDC_860_BASE = (networkId = common_1.NetworkNumber.Eth)
456
456
  protocolName: 'morpho-blue',
457
457
  });
458
458
  exports.MORPHO_BLUE_CBETH_USDC_860_BASE = MORPHO_BLUE_CBETH_USDC_860_BASE;
459
+ const MORPHO_BLUE_WSTETH_ETH_945_BASE = (networkId = common_1.NetworkNumber.Eth) => ({
460
+ chainIds: [common_1.NetworkNumber.Base],
461
+ label: 'Morpho Blue',
462
+ shortLabel: 'wstETH/ETH',
463
+ value: types_1.MorphoBlueVersions.MorphoBlueWstEthEth_945_Base,
464
+ url: 'wstetheth-e3c4d4d0',
465
+ loanToken: '0x4200000000000000000000000000000000000006',
466
+ collateralToken: '0xc1CBa3fCea344f92D9239c08C0568f6F2F0ee452',
467
+ oracle: '0xaE10cbdAa587646246c8253E4532A002EE4fa7A4',
468
+ oracleType: types_1.MorphoBlueOracleType.MARKET_RATE,
469
+ irm: '0x46415998764C29aB2a25CbeA6254146D50D22687',
470
+ lltv: 0.945,
471
+ marketId: '0xe3c4d4d0e214fdc52635d7f9b2f7b3b0081771ae2efeb3cb5aae26009f34f7a7',
472
+ protocolName: 'morpho-blue',
473
+ });
474
+ exports.MORPHO_BLUE_WSTETH_ETH_945_BASE = MORPHO_BLUE_WSTETH_ETH_945_BASE;
475
+ const MORPHO_BLUE_WSTETH_ETH_965_BASE = (networkId = common_1.NetworkNumber.Eth) => ({
476
+ chainIds: [common_1.NetworkNumber.Base],
477
+ label: 'Morpho Blue',
478
+ shortLabel: 'wstETH/ETH',
479
+ value: types_1.MorphoBlueVersions.MorphoBlueWstEthEth_965_Base,
480
+ url: 'wstetheth-6aa81f51',
481
+ loanToken: '0x4200000000000000000000000000000000000006',
482
+ collateralToken: '0xc1CBa3fCea344f92D9239c08C0568f6F2F0ee452',
483
+ oracle: '0xaE10cbdAa587646246c8253E4532A002EE4fa7A4',
484
+ oracleType: types_1.MorphoBlueOracleType.MARKET_RATE,
485
+ irm: '0x46415998764C29aB2a25CbeA6254146D50D22687',
486
+ lltv: 0.965,
487
+ marketId: '0x6aa81f51dfc955df598e18006deae56ce907ac02b0b5358705f1a28fcea23cc0',
488
+ protocolName: 'morpho-blue',
489
+ });
490
+ exports.MORPHO_BLUE_WSTETH_ETH_965_BASE = MORPHO_BLUE_WSTETH_ETH_965_BASE;
491
+ const MORPHO_BLUE_WSTETH_USDC_860_BASE = (networkId = common_1.NetworkNumber.Eth) => ({
492
+ chainIds: [common_1.NetworkNumber.Base],
493
+ label: 'Morpho Blue',
494
+ shortLabel: 'wstETH/USDC',
495
+ value: types_1.MorphoBlueVersions.MorphoBlueWstEthUSDC_860_Base,
496
+ url: 'wstethusdc-a066f389',
497
+ loanToken: '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913',
498
+ collateralToken: '0xc1CBa3fCea344f92D9239c08C0568f6F2F0ee452',
499
+ oracle: '0x957e76d8f2D3ab0B4f342cd5f4b03A6f6eF2ce5F',
500
+ oracleType: types_1.MorphoBlueOracleType.MARKET_RATE,
501
+ irm: '0x46415998764C29aB2a25CbeA6254146D50D22687',
502
+ lltv: 0.86,
503
+ marketId: '0xa066f3893b780833699043f824e5bb88b8df039886f524f62b9a1ac83cb7f1f0',
504
+ protocolName: 'morpho-blue',
505
+ });
506
+ exports.MORPHO_BLUE_WSTETH_USDC_860_BASE = MORPHO_BLUE_WSTETH_USDC_860_BASE;
507
+ const MORPHO_BLUE_CBETH_ETH_965_BASE = (networkId = common_1.NetworkNumber.Eth) => ({
508
+ chainIds: [common_1.NetworkNumber.Base],
509
+ label: 'Morpho Blue',
510
+ shortLabel: 'cbETH/ETH',
511
+ value: types_1.MorphoBlueVersions.MorphoBlueCbEthEth_965_Base,
512
+ url: 'cbetheth-6600aae6',
513
+ loanToken: '0x4200000000000000000000000000000000000006',
514
+ collateralToken: '0x2Ae3F1Ec7F1F5012CFEab0185bfc7aa3cf0DEc22',
515
+ oracle: '0xB03855Ad5AFD6B8db8091DD5551CAC4ed621d9E6',
516
+ oracleType: types_1.MorphoBlueOracleType.MARKET_RATE,
517
+ irm: '0x46415998764C29aB2a25CbeA6254146D50D22687',
518
+ lltv: 0.965,
519
+ marketId: '0x6600aae6c56d242fa6ba68bd527aff1a146e77813074413186828fd3f1cdca91',
520
+ protocolName: 'morpho-blue',
521
+ });
522
+ exports.MORPHO_BLUE_CBETH_ETH_965_BASE = MORPHO_BLUE_CBETH_ETH_965_BASE;
523
+ const MORPHO_BLUE_ETH_USDC_860_BASE = (networkId = common_1.NetworkNumber.Eth) => ({
524
+ chainIds: [common_1.NetworkNumber.Base],
525
+ label: 'Morpho Blue',
526
+ shortLabel: 'ETH/USDC',
527
+ value: types_1.MorphoBlueVersions.MorphoBlueEthUSDC_860_Base,
528
+ url: 'ethusdc-8793cf30',
529
+ loanToken: '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913',
530
+ collateralToken: '0x4200000000000000000000000000000000000006',
531
+ oracle: '0xFEa2D58cEfCb9fcb597723c6bAE66fFE4193aFE4',
532
+ oracleType: types_1.MorphoBlueOracleType.MARKET_RATE,
533
+ irm: '0x46415998764C29aB2a25CbeA6254146D50D22687',
534
+ lltv: 0.86,
535
+ marketId: '0x8793cf302b8ffd655ab97bd1c695dbd967807e8367a65cb2f4edaf1380ba1bda',
536
+ protocolName: 'morpho-blue',
537
+ });
538
+ exports.MORPHO_BLUE_ETH_USDC_860_BASE = MORPHO_BLUE_ETH_USDC_860_BASE;
459
539
  const MorphoBlueMarkets = (networkId) => ({
460
540
  [types_1.MorphoBlueVersions.MorphoBlueWstEthUSDC]: (0, exports.MORPHO_BLUE_WSTETH_USDC)(networkId),
461
541
  [types_1.MorphoBlueVersions.MorphoBlueSDAIUSDC]: (0, exports.MORPHO_BLUE_SDAI_USDC)(networkId),
@@ -487,7 +567,13 @@ const MorphoBlueMarkets = (networkId) => ({
487
567
  [types_1.MorphoBlueVersions.MorphoBlueUSDeDAI_860]: (0, exports.MORPHO_BLUE_USDE_DAI_860)(networkId),
488
568
  [types_1.MorphoBlueVersions.MorphoBlueUSDeDAI_915]: (0, exports.MORPHO_BLUE_USDE_DAI_915)(networkId),
489
569
  [types_1.MorphoBlueVersions.MorphoBlueUSDeDAI_945]: (0, exports.MORPHO_BLUE_USDE_DAI_945)(networkId),
570
+ // Base
490
571
  [types_1.MorphoBlueVersions.MorphoBlueCbEthUSDC_860_Base]: (0, exports.MORPHO_BLUE_CBETH_USDC_860_BASE)(networkId),
572
+ [types_1.MorphoBlueVersions.MorphoBlueWstEthEth_945_Base]: (0, exports.MORPHO_BLUE_WSTETH_ETH_945_BASE)(networkId),
573
+ [types_1.MorphoBlueVersions.MorphoBlueWstEthEth_965_Base]: (0, exports.MORPHO_BLUE_WSTETH_ETH_965_BASE)(networkId),
574
+ [types_1.MorphoBlueVersions.MorphoBlueWstEthUSDC_860_Base]: (0, exports.MORPHO_BLUE_WSTETH_USDC_860_BASE)(networkId),
575
+ [types_1.MorphoBlueVersions.MorphoBlueCbEthEth_965_Base]: (0, exports.MORPHO_BLUE_CBETH_ETH_965_BASE)(networkId),
576
+ [types_1.MorphoBlueVersions.MorphoBlueEthUSDC_860_Base]: (0, exports.MORPHO_BLUE_ETH_USDC_860_BASE)(networkId),
491
577
  });
492
578
  exports.MorphoBlueMarkets = MorphoBlueMarkets;
493
579
  const findMorphoBlueMarket = (collateralToken, loanToken, lltv, oracle, irm, network = common_1.NetworkNumber.Eth) => {
@@ -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) => 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) => (Math.pow((1 + (+interest / 100) / frequency), frequency) - 1) * 100; // eslint-disable-line
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),
@@ -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];
@@ -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;
@@ -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.getSUSDeApy = exports.getDsrApy = exports.getREthApr = exports.getCbETHApr = exports.getStETHApr = void 0;
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 getSUSDeApy = () => __awaiter(void 0, void 0, void 0, function* () {
91
- const res = yield fetch('https://app.defisaver.com/api/staking/apy?asset=sUSDe');
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.getSUSDeApy = getSUSDeApy;
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 (0, exports.getSUSDeApy)();
106
+ return getApyFromDfsApi('sUSDe');
119
107
  if (asset === 'weETH')
120
- return getWeEthApr();
108
+ return getApyFromDfsApi('weETH');
109
+ if (asset === 'ezETH')
110
+ return getApyFromDfsApi('ezETH');
121
111
  if (asset === 'osETH')
122
- return getOsETHApy();
112
+ return getApyFromDfsApi('osETH');
123
113
  }
124
114
  catch (e) {
125
115
  console.error(`Failed to fetch APY for ${asset}`);
@@ -27,11 +27,17 @@ export declare enum MorphoBlueVersions {
27
27
  MorphoBlueUSDeDAI_860 = "morphoblueusdedai_860",
28
28
  MorphoBlueUSDeDAI_915 = "morphoblueusdedai_915",
29
29
  MorphoBlueUSDeDAI_945 = "morphoblueusdedai_945",
30
- MorphoBlueCbEthUSDC_860_Base = "morphobluecbethusdc_860_base"
30
+ MorphoBlueCbEthUSDC_860_Base = "morphobluecbethusdc_860_base",
31
+ MorphoBlueWstEthEth_945_Base = "morphobluewstetheth_945_base",
32
+ MorphoBlueWstEthEth_965_Base = "morphobluewstetheth_965_base",
33
+ MorphoBlueWstEthUSDC_860_Base = "morphobluewstethusdc_860_base",
34
+ MorphoBlueCbEthEth_965_Base = "morphobluecbetheth_965_base",
35
+ MorphoBlueEthUSDC_860_Base = "morphoblueethusdc_860_base"
31
36
  }
32
37
  export declare enum MorphoBlueOracleType {
33
38
  MARKET_RATE = "Market rate",
34
- LIDO_RATE = "Lido rate"
39
+ LIDO_RATE = "Lido rate",
40
+ ETHENA_RATE = "Ethena rate"
35
41
  }
36
42
  export interface MorphoBlueMarketData {
37
43
  chainIds: NetworkNumber[];
@@ -36,9 +36,15 @@ var MorphoBlueVersions;
36
36
  MorphoBlueVersions["MorphoBlueUSDeDAI_945"] = "morphoblueusdedai_945";
37
37
  // BASE
38
38
  MorphoBlueVersions["MorphoBlueCbEthUSDC_860_Base"] = "morphobluecbethusdc_860_base";
39
+ MorphoBlueVersions["MorphoBlueWstEthEth_945_Base"] = "morphobluewstetheth_945_base";
40
+ MorphoBlueVersions["MorphoBlueWstEthEth_965_Base"] = "morphobluewstetheth_965_base";
41
+ MorphoBlueVersions["MorphoBlueWstEthUSDC_860_Base"] = "morphobluewstethusdc_860_base";
42
+ MorphoBlueVersions["MorphoBlueCbEthEth_965_Base"] = "morphobluecbetheth_965_base";
43
+ MorphoBlueVersions["MorphoBlueEthUSDC_860_Base"] = "morphoblueethusdc_860_base";
39
44
  })(MorphoBlueVersions || (exports.MorphoBlueVersions = MorphoBlueVersions = {}));
40
45
  var MorphoBlueOracleType;
41
46
  (function (MorphoBlueOracleType) {
42
47
  MorphoBlueOracleType["MARKET_RATE"] = "Market rate";
43
48
  MorphoBlueOracleType["LIDO_RATE"] = "Lido rate";
49
+ MorphoBlueOracleType["ETHENA_RATE"] = "Ethena rate";
44
50
  })(MorphoBlueOracleType || (exports.MorphoBlueOracleType = MorphoBlueOracleType = {}));
@@ -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
  });
@@ -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];
@@ -28,6 +28,11 @@ export declare const MORPHO_BLUE_USDE_DAI_860: (networkId?: NetworkNumber) => Mo
28
28
  export declare const MORPHO_BLUE_USDE_DAI_915: (networkId?: NetworkNumber) => MorphoBlueMarketData;
29
29
  export declare const MORPHO_BLUE_USDE_DAI_945: (networkId?: NetworkNumber) => MorphoBlueMarketData;
30
30
  export declare const MORPHO_BLUE_CBETH_USDC_860_BASE: (networkId?: NetworkNumber) => MorphoBlueMarketData;
31
+ export declare const MORPHO_BLUE_WSTETH_ETH_945_BASE: (networkId?: NetworkNumber) => MorphoBlueMarketData;
32
+ export declare const MORPHO_BLUE_WSTETH_ETH_965_BASE: (networkId?: NetworkNumber) => MorphoBlueMarketData;
33
+ export declare const MORPHO_BLUE_WSTETH_USDC_860_BASE: (networkId?: NetworkNumber) => MorphoBlueMarketData;
34
+ export declare const MORPHO_BLUE_CBETH_ETH_965_BASE: (networkId?: NetworkNumber) => MorphoBlueMarketData;
35
+ export declare const MORPHO_BLUE_ETH_USDC_860_BASE: (networkId?: NetworkNumber) => MorphoBlueMarketData;
31
36
  export declare const MorphoBlueMarkets: (networkId: NetworkNumber) => {
32
37
  readonly morphobluewstethusdc: MorphoBlueMarketData;
33
38
  readonly morphobluesdaiusdc: MorphoBlueMarketData;
@@ -57,5 +62,10 @@ export declare const MorphoBlueMarkets: (networkId: NetworkNumber) => {
57
62
  readonly morphoblueusdedai_915: MorphoBlueMarketData;
58
63
  readonly morphoblueusdedai_945: MorphoBlueMarketData;
59
64
  readonly morphobluecbethusdc_860_base: MorphoBlueMarketData;
65
+ readonly morphobluewstetheth_945_base: MorphoBlueMarketData;
66
+ readonly morphobluewstetheth_965_base: MorphoBlueMarketData;
67
+ readonly morphobluewstethusdc_860_base: MorphoBlueMarketData;
68
+ readonly morphobluecbetheth_965_base: MorphoBlueMarketData;
69
+ readonly morphoblueethusdc_860_base: MorphoBlueMarketData;
60
70
  };
61
71
  export declare const findMorphoBlueMarket: (collateralToken: string, loanToken: string, lltv: number, oracle: string, irm: string, network?: NetworkNumber) => MorphoBlueMarketData | null;