@defisaver/positions-sdk 0.0.75 → 0.0.77

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_BASE: (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_base: MorphoBlueMarketData;
56
58
  };
57
59
  export declare const findMorphoBlueMarket: (collateralToken: string, loanToken: string, lltv: number, oracle: string, irm: string, network?: NetworkNumber) => MorphoBlueMarketData | null;
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.findMorphoBlueMarket = exports.MorphoBlueMarkets = exports.MORPHO_BLUE_USDE_DAI_945 = exports.MORPHO_BLUE_USDE_DAI_915 = exports.MORPHO_BLUE_USDE_DAI_860 = exports.MORPHO_BLUE_USDE_DAI_770 = exports.MORPHO_BLUE_SUSDE_DAI_945 = exports.MORPHO_BLUE_SUSDE_DAI_915 = exports.MORPHO_BLUE_SUSDE_DAI_860 = exports.MORPHO_BLUE_SUSDE_DAI_770 = exports.MORPHO_BLUE_WSTETH_ETH_965_EXCHANGE_RATE = exports.MORPHO_BLUE_WSTETH_ETH_945_EXCHANGE_RATE = exports.MORPHO_BLUE_WSTETH_ETH_945 = exports.MORPHO_BLUE_EZETH_ETH = exports.MORPHO_BLUE_SDAI_ETH = exports.MORPHO_BLUE_SUSDE_USDT = exports.MORPHO_BLUE_USDE_USDT = exports.MORPHO_BLUE_WEETH_ETH = exports.MORPHO_BLUE_WSTETH_PYUSD = exports.MORPHO_BLUE_WSTETH_USDA_EXCHANGE_RATE = exports.MORPHO_BLUE_WSTETH_USDT = exports.MORPHO_BLUE_WBTC_ETH = exports.MORPHO_BLUE_WBTC_PYUSD = exports.MORPHO_BLUE_WBTC_USDT = exports.MORPHO_BLUE_ETH_USDC = exports.MORPHO_BLUE_WBTC_USDC = exports.MORPHO_BLUE_SDAI_USDC = exports.MORPHO_BLUE_WSTETH_USDC = void 0;
3
+ exports.findMorphoBlueMarket = exports.MorphoBlueMarkets = exports.MORPHO_BLUE_CBETH_USDC_860_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;
4
4
  const utils_1 = require("../../services/utils");
5
5
  const types_1 = require("../../types");
6
6
  const common_1 = require("../../types/common");
@@ -423,6 +423,23 @@ const MORPHO_BLUE_USDE_DAI_945 = (networkId = common_1.NetworkNumber.Eth) => ({
423
423
  protocolName: 'morpho-blue',
424
424
  });
425
425
  exports.MORPHO_BLUE_USDE_DAI_945 = MORPHO_BLUE_USDE_DAI_945;
426
+ // BASE
427
+ const MORPHO_BLUE_CBETH_USDC_860_BASE = (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_Base,
432
+ url: 'cbethusdc-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_BASE = MORPHO_BLUE_CBETH_USDC_860_BASE;
426
443
  const MorphoBlueMarkets = (networkId) => ({
427
444
  [types_1.MorphoBlueVersions.MorphoBlueWstEthUSDC]: (0, exports.MORPHO_BLUE_WSTETH_USDC)(networkId),
428
445
  [types_1.MorphoBlueVersions.MorphoBlueSDAIUSDC]: (0, exports.MORPHO_BLUE_SDAI_USDC)(networkId),
@@ -453,6 +470,7 @@ const MorphoBlueMarkets = (networkId) => ({
453
470
  [types_1.MorphoBlueVersions.MorphoBlueUSDeDAI_860]: (0, exports.MORPHO_BLUE_USDE_DAI_860)(networkId),
454
471
  [types_1.MorphoBlueVersions.MorphoBlueUSDeDAI_915]: (0, exports.MORPHO_BLUE_USDE_DAI_915)(networkId),
455
472
  [types_1.MorphoBlueVersions.MorphoBlueUSDeDAI_945]: (0, exports.MORPHO_BLUE_USDE_DAI_945)(networkId),
473
+ [types_1.MorphoBlueVersions.MorphoBlueCbEthUSDC_860_Base]: (0, exports.MORPHO_BLUE_CBETH_USDC_860_BASE)(networkId),
456
474
  });
457
475
  exports.MorphoBlueMarkets = MorphoBlueMarkets;
458
476
  const findMorphoBlueMarket = (collateralToken, loanToken, lltv, oracle, irm, network = common_1.NetworkNumber.Eth) => {
@@ -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_Base = "morphobluecbethusdc_860_base"
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_Base"] = "morphobluecbethusdc_860_base";
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_BASE: (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_base: MorphoBlueMarketData;
56
58
  };
57
59
  export declare const findMorphoBlueMarket: (collateralToken: string, loanToken: string, lltv: number, oracle: string, irm: string, network?: NetworkNumber) => MorphoBlueMarketData | null;
@@ -394,6 +394,22 @@ export const MORPHO_BLUE_USDE_DAI_945 = (networkId = NetworkNumber.Eth) => ({
394
394
  marketId: '0xdb760246f6859780f6c1b272d47a8f64710777121118e56e0cdb4b8b744a3094',
395
395
  protocolName: 'morpho-blue',
396
396
  });
397
+ // BASE
398
+ export const MORPHO_BLUE_CBETH_USDC_860_BASE = (networkId = NetworkNumber.Eth) => ({
399
+ chainIds: [NetworkNumber.Base],
400
+ label: 'Morpho Blue',
401
+ shortLabel: 'cbETH/ETH',
402
+ value: MorphoBlueVersions.MorphoBlueCbEthUSDC_860_Base,
403
+ url: 'cbethusdc-dba352d9',
404
+ loanToken: '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913',
405
+ collateralToken: '0x2Ae3F1Ec7F1F5012CFEab0185bfc7aa3cf0DEc22',
406
+ oracle: '0x4756c26E01E61c7c2F86b10f4316e179db8F9425',
407
+ oracleType: MorphoBlueOracleType.MARKET_RATE,
408
+ irm: '0x46415998764C29aB2a25CbeA6254146D50D22687',
409
+ lltv: 0.86,
410
+ marketId: '0xdba352d93a64b17c71104cbddc6aef85cd432322a1446b5b65163cbbc615cd0c',
411
+ protocolName: 'morpho-blue',
412
+ });
397
413
  export const MorphoBlueMarkets = (networkId) => ({
398
414
  [MorphoBlueVersions.MorphoBlueWstEthUSDC]: MORPHO_BLUE_WSTETH_USDC(networkId),
399
415
  [MorphoBlueVersions.MorphoBlueSDAIUSDC]: MORPHO_BLUE_SDAI_USDC(networkId),
@@ -424,6 +440,7 @@ export const MorphoBlueMarkets = (networkId) => ({
424
440
  [MorphoBlueVersions.MorphoBlueUSDeDAI_860]: MORPHO_BLUE_USDE_DAI_860(networkId),
425
441
  [MorphoBlueVersions.MorphoBlueUSDeDAI_915]: MORPHO_BLUE_USDE_DAI_915(networkId),
426
442
  [MorphoBlueVersions.MorphoBlueUSDeDAI_945]: MORPHO_BLUE_USDE_DAI_945(networkId),
443
+ [MorphoBlueVersions.MorphoBlueCbEthUSDC_860_Base]: MORPHO_BLUE_CBETH_USDC_860_BASE(networkId),
427
444
  });
428
445
  export const findMorphoBlueMarket = (collateralToken, loanToken, lltv, oracle, irm, network = NetworkNumber.Eth) => {
429
446
  const markets = MorphoBlueMarkets(network);
@@ -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_Base = "morphobluecbethusdc_860_base"
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_Base"] = "morphobluecbethusdc_860_base";
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.75",
3
+ "version": "0.0.77",
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
  },
@@ -400,6 +400,24 @@ export const MORPHO_BLUE_USDE_DAI_945 = (networkId: NetworkNumber = NetworkNumbe
400
400
  protocolName: 'morpho-blue',
401
401
  });
402
402
 
403
+ // BASE
404
+
405
+ export const MORPHO_BLUE_CBETH_USDC_860_BASE = (networkId: NetworkNumber = NetworkNumber.Eth): MorphoBlueMarketData => ({
406
+ chainIds: [NetworkNumber.Base],
407
+ label: 'Morpho Blue',
408
+ shortLabel: 'cbETH/ETH',
409
+ value: MorphoBlueVersions.MorphoBlueCbEthUSDC_860_Base,
410
+ url: 'cbethusdc-dba352d9',
411
+ loanToken: '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913',
412
+ collateralToken: '0x2Ae3F1Ec7F1F5012CFEab0185bfc7aa3cf0DEc22',
413
+ oracle: '0x4756c26E01E61c7c2F86b10f4316e179db8F9425',
414
+ oracleType: MorphoBlueOracleType.MARKET_RATE,
415
+ irm: '0x46415998764C29aB2a25CbeA6254146D50D22687',
416
+ lltv: 0.86,
417
+ marketId: '0xdba352d93a64b17c71104cbddc6aef85cd432322a1446b5b65163cbbc615cd0c',
418
+ protocolName: 'morpho-blue',
419
+ });
420
+
403
421
  export const MorphoBlueMarkets = (networkId: NetworkNumber) => ({
404
422
  [MorphoBlueVersions.MorphoBlueWstEthUSDC]: MORPHO_BLUE_WSTETH_USDC(networkId),
405
423
  [MorphoBlueVersions.MorphoBlueSDAIUSDC]: MORPHO_BLUE_SDAI_USDC(networkId),
@@ -430,6 +448,8 @@ export const MorphoBlueMarkets = (networkId: NetworkNumber) => ({
430
448
  [MorphoBlueVersions.MorphoBlueUSDeDAI_860]: MORPHO_BLUE_USDE_DAI_860(networkId),
431
449
  [MorphoBlueVersions.MorphoBlueUSDeDAI_915]: MORPHO_BLUE_USDE_DAI_915(networkId),
432
450
  [MorphoBlueVersions.MorphoBlueUSDeDAI_945]: MORPHO_BLUE_USDE_DAI_945(networkId),
451
+
452
+ [MorphoBlueVersions.MorphoBlueCbEthUSDC_860_Base]: MORPHO_BLUE_CBETH_USDC_860_BASE(networkId),
433
453
  }) as const;
434
454
 
435
455
  export const findMorphoBlueMarket = (collateralToken: string, loanToken: string, lltv: number, oracle: string, irm: string, network = NetworkNumber.Eth) => {
@@ -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_Base = 'morphobluecbethusdc_860_base',
33
37
  }
34
38
 
35
39
  export enum MorphoBlueOracleType {