@defisaver/positions-sdk 0.0.74 → 0.0.76

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