@defisaver/positions-sdk 0.0.33 → 0.0.34-dev

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