@defisaver/positions-sdk 0.0.53 → 0.0.55

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (73) hide show
  1. package/README.md +63 -63
  2. package/cjs/markets/morphoBlue/index.d.ts +4 -0
  3. package/cjs/markets/morphoBlue/index.js +35 -1
  4. package/cjs/morphoBlue/index.js +1 -1
  5. package/cjs/staking/staking.d.ts +1 -0
  6. package/cjs/staking/staking.js +9 -1
  7. package/cjs/types/morphoBlue.d.ts +3 -1
  8. package/cjs/types/morphoBlue.js +2 -0
  9. package/esm/markets/morphoBlue/index.d.ts +4 -0
  10. package/esm/markets/morphoBlue/index.js +32 -0
  11. package/esm/morphoBlue/index.js +1 -1
  12. package/esm/staking/staking.d.ts +1 -0
  13. package/esm/staking/staking.js +7 -0
  14. package/esm/types/morphoBlue.d.ts +3 -1
  15. package/esm/types/morphoBlue.js +2 -0
  16. package/package.json +40 -40
  17. package/src/aaveV2/index.ts +227 -227
  18. package/src/aaveV3/index.ts +561 -561
  19. package/src/assets/index.ts +60 -60
  20. package/src/chickenBonds/index.ts +123 -123
  21. package/src/compoundV2/index.ts +219 -219
  22. package/src/compoundV3/index.ts +273 -273
  23. package/src/config/contracts.js +851 -851
  24. package/src/constants/index.ts +5 -5
  25. package/src/contracts.ts +126 -126
  26. package/src/curveUsd/index.ts +229 -229
  27. package/src/exchange/index.ts +17 -17
  28. package/src/helpers/aaveHelpers/index.ts +134 -134
  29. package/src/helpers/chickenBondsHelpers/index.ts +23 -23
  30. package/src/helpers/compoundHelpers/index.ts +181 -181
  31. package/src/helpers/curveUsdHelpers/index.ts +40 -40
  32. package/src/helpers/index.ts +7 -7
  33. package/src/helpers/llamaLendHelpers/index.ts +45 -45
  34. package/src/helpers/makerHelpers/index.ts +94 -94
  35. package/src/helpers/morphoBlueHelpers/index.ts +56 -56
  36. package/src/helpers/sparkHelpers/index.ts +106 -106
  37. package/src/index.ts +46 -46
  38. package/src/liquity/index.ts +116 -116
  39. package/src/llamaLend/index.ts +279 -279
  40. package/src/maker/index.ts +117 -117
  41. package/src/markets/aave/index.ts +80 -80
  42. package/src/markets/aave/marketAssets.ts +24 -24
  43. package/src/markets/compound/index.ts +141 -141
  44. package/src/markets/compound/marketsAssets.ts +48 -48
  45. package/src/markets/curveUsd/index.ts +69 -69
  46. package/src/markets/index.ts +5 -5
  47. package/src/markets/llamaLend/index.ts +65 -65
  48. package/src/markets/morphoBlue/index.ts +153 -121
  49. package/src/markets/spark/index.ts +29 -29
  50. package/src/markets/spark/marketAssets.ts +10 -10
  51. package/src/moneymarket/moneymarketCommonService.ts +75 -75
  52. package/src/morphoAaveV2/index.ts +256 -256
  53. package/src/morphoAaveV3/index.ts +619 -619
  54. package/src/morphoBlue/index.ts +177 -177
  55. package/src/multicall/index.ts +22 -22
  56. package/src/services/dsrService.ts +15 -15
  57. package/src/services/priceService.ts +21 -21
  58. package/src/services/utils.ts +51 -51
  59. package/src/setup.ts +8 -8
  60. package/src/spark/index.ts +422 -422
  61. package/src/staking/staking.ts +174 -167
  62. package/src/types/aave.ts +256 -256
  63. package/src/types/chickenBonds.ts +45 -45
  64. package/src/types/common.ts +83 -83
  65. package/src/types/compound.ts +128 -128
  66. package/src/types/curveUsd.ts +118 -118
  67. package/src/types/index.ts +8 -8
  68. package/src/types/liquity.ts +30 -30
  69. package/src/types/llamaLend.ts +119 -119
  70. package/src/types/maker.ts +50 -50
  71. package/src/types/morphoBlue.ts +98 -96
  72. package/src/types/spark.ts +106 -106
  73. package/yarn-error.log +0 -64
package/README.md CHANGED
@@ -1,63 +1,63 @@
1
- # DeFi Saver Positions SDK
2
-
3
- Supported protocols:
4
- - [Maker](https://github.com/defisaver/defisaver-positions-sdk/tree/main/src/maker)
5
- - [Spark](https://github.com/defisaver/defisaver-positions-sdk/tree/main/src/spark)
6
- - [CrvUSD](https://github.com/defisaver/defisaver-positions-sdk/tree/main/src/curveUsd)
7
- - [Aave V2](https://github.com/defisaver/defisaver-positions-sdk/tree/main/src/aaveV2)
8
- - [Aave V3](https://github.com/defisaver/defisaver-positions-sdk/tree/main/src/aaveV3)
9
- - [Morpho Aave V2](https://github.com/defisaver/defisaver-positions-sdk/tree/main/src/morphoAaveV2)
10
- - [Morpho Aave V3](https://github.com/defisaver/defisaver-positions-sdk/tree/main/src/morphoAaveV3)
11
- - [Compound V2](https://github.com/defisaver/defisaver-positions-sdk/tree/main/src/compoundV2)
12
- - [Compound V3](https://github.com/defisaver/defisaver-positions-sdk/tree/main/src/compoundV3)
13
- - [Liquity](https://github.com/defisaver/defisaver-positions-sdk/tree/main/src/liquity)
14
- - [Chicken Bonds](https://github.com/defisaver/defisaver-positions-sdk/tree/main/src/chickenBonds)
15
-
16
- ## Setup
17
- Supported Node version is v10.
18
-
19
- - run `npm install` (first time)
20
- - run `npm run build`
21
-
22
- `build` command will generate contracts and build ejs and esm folders
23
-
24
- ## How to use
25
- [All available imports](https://github.com/defisaver/defisaver-positions-sdk/blob/main/src/index.ts)
26
-
27
- This is a Compound V3 example, and every other protocol is similar
28
- ```js
29
- import Web3 from 'web3';
30
- import { compoundV3 } from '@defisaver/positions-sdk';
31
-
32
-
33
- // every protocol has market data and user data getters
34
- const {
35
- getCompoundV3MarketsData,
36
- getCompoundV3AccountData,
37
- } = compoundV3;
38
-
39
- const provider = 'Your RPC provider';
40
- const web3 = new Web3(provider);
41
-
42
- const user = '0x123...';
43
-
44
- const { assetsData } = await getCompoundV3MarketsData(
45
- web3, // rpc for the network you are using (note: can be tenderly or any other testnet rpc)
46
- 1, // network
47
- selectedMarket, // market object like in /src/markets/compound/index.ts
48
- web3, // this must be mainnet rpc - used for getting prices onchain and calculating apys
49
- );
50
-
51
- const userData = await getCompoundV3AccountData(
52
- web3,
53
- 1, // network
54
- userAddress, // EOA or DSProxy
55
- '', // proxy address of the user, or just empty string if checking for EOA
56
- {
57
- selectedMarket, // market object as in /src/markets/compound/index.ts
58
- assetsData,
59
- }
60
- );
61
- ```
62
-
63
- More examples found [here](https://github.com/defisaver/defisaver-positions-sdk/tree/main/tests)
1
+ # DeFi Saver Positions SDK
2
+
3
+ Supported protocols:
4
+ - [Maker](https://github.com/defisaver/defisaver-positions-sdk/tree/main/src/maker)
5
+ - [Spark](https://github.com/defisaver/defisaver-positions-sdk/tree/main/src/spark)
6
+ - [CrvUSD](https://github.com/defisaver/defisaver-positions-sdk/tree/main/src/curveUsd)
7
+ - [Aave V2](https://github.com/defisaver/defisaver-positions-sdk/tree/main/src/aaveV2)
8
+ - [Aave V3](https://github.com/defisaver/defisaver-positions-sdk/tree/main/src/aaveV3)
9
+ - [Morpho Aave V2](https://github.com/defisaver/defisaver-positions-sdk/tree/main/src/morphoAaveV2)
10
+ - [Morpho Aave V3](https://github.com/defisaver/defisaver-positions-sdk/tree/main/src/morphoAaveV3)
11
+ - [Compound V2](https://github.com/defisaver/defisaver-positions-sdk/tree/main/src/compoundV2)
12
+ - [Compound V3](https://github.com/defisaver/defisaver-positions-sdk/tree/main/src/compoundV3)
13
+ - [Liquity](https://github.com/defisaver/defisaver-positions-sdk/tree/main/src/liquity)
14
+ - [Chicken Bonds](https://github.com/defisaver/defisaver-positions-sdk/tree/main/src/chickenBonds)
15
+
16
+ ## Setup
17
+ Supported Node version is v10.
18
+
19
+ - run `npm install` (first time)
20
+ - run `npm run build`
21
+
22
+ `build` command will generate contracts and build ejs and esm folders
23
+
24
+ ## How to use
25
+ [All available imports](https://github.com/defisaver/defisaver-positions-sdk/blob/main/src/index.ts)
26
+
27
+ This is a Compound V3 example, and every other protocol is similar
28
+ ```js
29
+ import Web3 from 'web3';
30
+ import { compoundV3 } from '@defisaver/positions-sdk';
31
+
32
+
33
+ // every protocol has market data and user data getters
34
+ const {
35
+ getCompoundV3MarketsData,
36
+ getCompoundV3AccountData,
37
+ } = compoundV3;
38
+
39
+ const provider = 'Your RPC provider';
40
+ const web3 = new Web3(provider);
41
+
42
+ const user = '0x123...';
43
+
44
+ const { assetsData } = await getCompoundV3MarketsData(
45
+ web3, // rpc for the network you are using (note: can be tenderly or any other testnet rpc)
46
+ 1, // network
47
+ selectedMarket, // market object like in /src/markets/compound/index.ts
48
+ web3, // this must be mainnet rpc - used for getting prices onchain and calculating apys
49
+ );
50
+
51
+ const userData = await getCompoundV3AccountData(
52
+ web3,
53
+ 1, // network
54
+ userAddress, // EOA or DSProxy
55
+ '', // proxy address of the user, or just empty string if checking for EOA
56
+ {
57
+ selectedMarket, // market object as in /src/markets/compound/index.ts
58
+ assetsData,
59
+ }
60
+ );
61
+ ```
62
+
63
+ More examples found [here](https://github.com/defisaver/defisaver-positions-sdk/tree/main/tests)
@@ -7,6 +7,8 @@ export declare const MORPHO_BLUE_WBTC_USDC: (networkId?: NetworkNumber) => Morph
7
7
  export declare const MORPHO_BLUE_ETH_USDC: (networkId?: NetworkNumber) => MorphoBlueMarketData;
8
8
  export declare const MORPHO_BLUE_WBTC_USDT: (networkId?: NetworkNumber) => MorphoBlueMarketData;
9
9
  export declare const MORPHO_BLUE_WSTETH_USDT: (networkId?: NetworkNumber) => MorphoBlueMarketData;
10
+ export declare const MORPHO_BLUE_SUSDE_DAI: (networkId?: NetworkNumber) => MorphoBlueMarketData;
11
+ export declare const MORPHO_BLUE_USDE_DAI: (networkId?: NetworkNumber) => MorphoBlueMarketData;
10
12
  export declare const MorphoBlueMarkets: (networkId: NetworkNumber) => {
11
13
  readonly morphobluewstetheth: MorphoBlueMarketData;
12
14
  readonly morphobluewstethusdc: MorphoBlueMarketData;
@@ -15,4 +17,6 @@ export declare const MorphoBlueMarkets: (networkId: NetworkNumber) => {
15
17
  readonly morphoblueethusdc: MorphoBlueMarketData;
16
18
  readonly morphobluewbtcusdt: MorphoBlueMarketData;
17
19
  readonly morphobluewstethusdt: MorphoBlueMarketData;
20
+ readonly morphobluesusdedai: MorphoBlueMarketData;
21
+ readonly morphoblueusdedai: MorphoBlueMarketData;
18
22
  };
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.MorphoBlueMarkets = exports.MORPHO_BLUE_WSTETH_USDT = 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 = exports.MORPHO_BLUE_WSTETH_ETH = void 0;
3
+ exports.MorphoBlueMarkets = exports.MORPHO_BLUE_USDE_DAI = exports.MORPHO_BLUE_SUSDE_DAI = exports.MORPHO_BLUE_WSTETH_USDT = 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 = 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) => ({
@@ -115,6 +115,38 @@ const MORPHO_BLUE_WSTETH_USDT = (networkId = common_1.NetworkNumber.Eth) => ({
115
115
  protocolName: 'morpho-blue',
116
116
  });
117
117
  exports.MORPHO_BLUE_WSTETH_USDT = MORPHO_BLUE_WSTETH_USDT;
118
+ const MORPHO_BLUE_SUSDE_DAI = (networkId = common_1.NetworkNumber.Eth) => ({
119
+ chainIds: [1],
120
+ label: 'Morpho Blue',
121
+ shortLabel: 'sUSDe/DAI',
122
+ value: types_1.MorphoBlueVersions.MorphoBlueSUSDeDAI,
123
+ url: 'susdedai',
124
+ loanToken: '0x6B175474E89094C44Da98b954EedeAC495271d0F',
125
+ collateralToken: '0x9D39A5DE30e57443BfF2A8307A4256c8797A3497',
126
+ oracle: '0x5D916980D5Ae1737a8330Bf24dF812b2911Aae25',
127
+ irm: '0x870aC11D48B15DB9a138Cf899d20F13F79Ba00BC',
128
+ lltv: 0.915,
129
+ marketId: '0x1247f1c237eceae0602eab1470a5061a6dd8f734ba88c7cdc5d6109fb0026b28',
130
+ // icon: SvgAdapter(protocolIcons.spark),
131
+ protocolName: 'morpho-blue',
132
+ });
133
+ exports.MORPHO_BLUE_SUSDE_DAI = MORPHO_BLUE_SUSDE_DAI;
134
+ const MORPHO_BLUE_USDE_DAI = (networkId = common_1.NetworkNumber.Eth) => ({
135
+ chainIds: [1],
136
+ label: 'Morpho Blue',
137
+ shortLabel: 'USDe/DAI',
138
+ value: types_1.MorphoBlueVersions.MorphoBlueUSDeDAI,
139
+ url: 'usdedai',
140
+ loanToken: '0x6B175474E89094C44Da98b954EedeAC495271d0F',
141
+ collateralToken: '0x4c9EDD5852cd905f086C759E8383e09bff1E68B3',
142
+ oracle: '0xaE4750d0813B5E37A51f7629beedd72AF1f9cA35',
143
+ irm: '0x870aC11D48B15DB9a138Cf899d20F13F79Ba00BC',
144
+ lltv: 0.915,
145
+ marketId: '0xe7e9694b754c4d4f7e21faf7223f6fa71abaeb10296a4c43a54a7977149687d2',
146
+ // icon: SvgAdapter(protocolIcons.spark),
147
+ protocolName: 'morpho-blue',
148
+ });
149
+ exports.MORPHO_BLUE_USDE_DAI = MORPHO_BLUE_USDE_DAI;
118
150
  const MorphoBlueMarkets = (networkId) => ({
119
151
  [types_1.MorphoBlueVersions.MorphoBlueWstEthEth]: (0, exports.MORPHO_BLUE_WSTETH_ETH)(networkId),
120
152
  [types_1.MorphoBlueVersions.MorphoBlueWstEthUSDC]: (0, exports.MORPHO_BLUE_WSTETH_USDC)(networkId),
@@ -123,5 +155,7 @@ const MorphoBlueMarkets = (networkId) => ({
123
155
  [types_1.MorphoBlueVersions.MorphoBlueEthUSDC]: (0, exports.MORPHO_BLUE_ETH_USDC)(networkId),
124
156
  [types_1.MorphoBlueVersions.MorphoBlueWBTCUSDT]: (0, exports.MORPHO_BLUE_WBTC_USDT)(networkId),
125
157
  [types_1.MorphoBlueVersions.MorphoBlueWstEthUSDT]: (0, exports.MORPHO_BLUE_WSTETH_USDT)(networkId),
158
+ [types_1.MorphoBlueVersions.MorphoBlueSUSDeDAI]: (0, exports.MORPHO_BLUE_SUSDE_DAI)(networkId),
159
+ [types_1.MorphoBlueVersions.MorphoBlueUSDeDAI]: (0, exports.MORPHO_BLUE_USDE_DAI)(networkId),
126
160
  });
127
161
  exports.MorphoBlueMarkets = MorphoBlueMarkets;
@@ -102,7 +102,7 @@ function getMorphoBlueMarketData(web3, network, selectedMarket, mainnetWeb3) {
102
102
  canBeSupplied: true,
103
103
  canBeBorrowed: false,
104
104
  };
105
- if (['wstETH', 'cbETH', 'rETH'].includes(collateralTokenInfo.symbol)) {
105
+ if (['wstETH', 'cbETH', 'rETH', 'sUSDe'].includes(collateralTokenInfo.symbol)) {
106
106
  assetsData[collateralTokenInfo.symbol].incentiveSupplyApy = yield (0, staking_1.getStakingApy)(collateralTokenInfo.symbol, mainnetWeb3);
107
107
  assetsData[collateralTokenInfo.symbol].incentiveSupplyToken = collateralTokenInfo.symbol;
108
108
  }
@@ -4,6 +4,7 @@ export declare const getStETHApr: (web3: Web3, fromBlock?: number, blockNumber?:
4
4
  export declare const getCbETHApr: (web3: Web3, blockNumber?: 'latest' | number) => Promise<string>;
5
5
  export declare const getREthApr: (web3: Web3, blockNumber?: 'latest' | number) => Promise<string>;
6
6
  export declare const getDsrApy: (web3: Web3, blockNumber?: 'latest' | number) => Promise<string>;
7
+ export declare const getSUSDeApy: () => Promise<any>;
7
8
  export declare const getStakingApy: (asset: string, web3: Web3, blockNumber?: 'latest' | number, fromBlock?: number | undefined) => Promise<any> | undefined;
8
9
  export declare const calculateInterestEarned: (principal: string, interest: string, type: string, apy?: boolean) => number;
9
10
  export declare const calculateNetApy: (usedAssets: MMUsedAssets, assetsData: MMAssetsData, isMorpho?: boolean) => {
@@ -12,7 +12,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
12
12
  return (mod && mod.__esModule) ? mod : { "default": mod };
13
13
  };
14
14
  Object.defineProperty(exports, "__esModule", { value: true });
15
- exports.getStETHByWstETHMultiple = exports.getStETHByWstETH = exports.getWstETHByStETH = exports.calculateNetApy = exports.calculateInterestEarned = exports.getStakingApy = exports.getDsrApy = exports.getREthApr = exports.getCbETHApr = exports.getStETHApr = void 0;
15
+ exports.getStETHByWstETHMultiple = exports.getStETHByWstETH = exports.getWstETHByStETH = exports.calculateNetApy = exports.calculateInterestEarned = exports.getStakingApy = exports.getSUSDeApy = exports.getDsrApy = exports.getREthApr = exports.getCbETHApr = exports.getStETHApr = void 0;
16
16
  const decimal_js_1 = __importDefault(require("decimal.js"));
17
17
  const contracts_1 = require("../contracts");
18
18
  const common_1 = require("../types/common");
@@ -86,6 +86,12 @@ const getDsrApy = (web3, blockNumber = 'latest') => __awaiter(void 0, void 0, vo
86
86
  .toString();
87
87
  });
88
88
  exports.getDsrApy = getDsrApy;
89
+ const getSUSDeApy = () => __awaiter(void 0, void 0, void 0, function* () {
90
+ const res = yield fetch('https://www.ethena.fi/api/yields/protocol-and-staking-yield');
91
+ const data = yield res.json();
92
+ return data.stakingYield.value;
93
+ });
94
+ exports.getSUSDeApy = getSUSDeApy;
89
95
  const getStakingApy = (asset, web3, blockNumber = 'latest', fromBlock = undefined) => {
90
96
  if (asset === 'stETH' || asset === 'wstETH')
91
97
  return (0, exports.getStETHApr)(web3, fromBlock, blockNumber);
@@ -95,6 +101,8 @@ const getStakingApy = (asset, web3, blockNumber = 'latest', fromBlock = undefine
95
101
  return (0, exports.getREthApr)(web3, blockNumber);
96
102
  if (asset === 'sDAI')
97
103
  return (0, exports.getDsrApy)(web3);
104
+ if (asset === 'sUSDe')
105
+ return (0, exports.getSUSDeApy)();
98
106
  };
99
107
  exports.getStakingApy = getStakingApy;
100
108
  const calculateInterestEarned = (principal, interest, type, apy = false) => {
@@ -6,7 +6,9 @@ export declare enum MorphoBlueVersions {
6
6
  MorphoBlueWBTCUSDC = "morphobluewbtcusdc",
7
7
  MorphoBlueEthUSDC = "morphoblueethusdc",
8
8
  MorphoBlueWBTCUSDT = "morphobluewbtcusdt",
9
- MorphoBlueWstEthUSDT = "morphobluewstethusdt"
9
+ MorphoBlueWstEthUSDT = "morphobluewstethusdt",
10
+ MorphoBlueSUSDeDAI = "morphobluesusdedai",
11
+ MorphoBlueUSDeDAI = "morphoblueusdedai"
10
12
  }
11
13
  export interface MorphoBlueMarketData {
12
14
  chainIds: NetworkNumber[];
@@ -10,4 +10,6 @@ var MorphoBlueVersions;
10
10
  MorphoBlueVersions["MorphoBlueEthUSDC"] = "morphoblueethusdc";
11
11
  MorphoBlueVersions["MorphoBlueWBTCUSDT"] = "morphobluewbtcusdt";
12
12
  MorphoBlueVersions["MorphoBlueWstEthUSDT"] = "morphobluewstethusdt";
13
+ MorphoBlueVersions["MorphoBlueSUSDeDAI"] = "morphobluesusdedai";
14
+ MorphoBlueVersions["MorphoBlueUSDeDAI"] = "morphoblueusdedai";
13
15
  })(MorphoBlueVersions || (exports.MorphoBlueVersions = MorphoBlueVersions = {}));
@@ -7,6 +7,8 @@ export declare const MORPHO_BLUE_WBTC_USDC: (networkId?: NetworkNumber) => Morph
7
7
  export declare const MORPHO_BLUE_ETH_USDC: (networkId?: NetworkNumber) => MorphoBlueMarketData;
8
8
  export declare const MORPHO_BLUE_WBTC_USDT: (networkId?: NetworkNumber) => MorphoBlueMarketData;
9
9
  export declare const MORPHO_BLUE_WSTETH_USDT: (networkId?: NetworkNumber) => MorphoBlueMarketData;
10
+ export declare const MORPHO_BLUE_SUSDE_DAI: (networkId?: NetworkNumber) => MorphoBlueMarketData;
11
+ export declare const MORPHO_BLUE_USDE_DAI: (networkId?: NetworkNumber) => MorphoBlueMarketData;
10
12
  export declare const MorphoBlueMarkets: (networkId: NetworkNumber) => {
11
13
  readonly morphobluewstetheth: MorphoBlueMarketData;
12
14
  readonly morphobluewstethusdc: MorphoBlueMarketData;
@@ -15,4 +17,6 @@ export declare const MorphoBlueMarkets: (networkId: NetworkNumber) => {
15
17
  readonly morphoblueethusdc: MorphoBlueMarketData;
16
18
  readonly morphobluewbtcusdt: MorphoBlueMarketData;
17
19
  readonly morphobluewstethusdt: MorphoBlueMarketData;
20
+ readonly morphobluesusdedai: MorphoBlueMarketData;
21
+ readonly morphoblueusdedai: MorphoBlueMarketData;
18
22
  };
@@ -105,6 +105,36 @@ export const MORPHO_BLUE_WSTETH_USDT = (networkId = NetworkNumber.Eth) => ({
105
105
  // icon: SvgAdapter(protocolIcons.spark),
106
106
  protocolName: 'morpho-blue',
107
107
  });
108
+ export const MORPHO_BLUE_SUSDE_DAI = (networkId = NetworkNumber.Eth) => ({
109
+ chainIds: [1],
110
+ label: 'Morpho Blue',
111
+ shortLabel: 'sUSDe/DAI',
112
+ value: MorphoBlueVersions.MorphoBlueSUSDeDAI,
113
+ url: 'susdedai',
114
+ loanToken: '0x6B175474E89094C44Da98b954EedeAC495271d0F',
115
+ collateralToken: '0x9D39A5DE30e57443BfF2A8307A4256c8797A3497',
116
+ oracle: '0x5D916980D5Ae1737a8330Bf24dF812b2911Aae25',
117
+ irm: '0x870aC11D48B15DB9a138Cf899d20F13F79Ba00BC',
118
+ lltv: 0.915,
119
+ marketId: '0x1247f1c237eceae0602eab1470a5061a6dd8f734ba88c7cdc5d6109fb0026b28',
120
+ // icon: SvgAdapter(protocolIcons.spark),
121
+ protocolName: 'morpho-blue',
122
+ });
123
+ export const MORPHO_BLUE_USDE_DAI = (networkId = NetworkNumber.Eth) => ({
124
+ chainIds: [1],
125
+ label: 'Morpho Blue',
126
+ shortLabel: 'USDe/DAI',
127
+ value: MorphoBlueVersions.MorphoBlueUSDeDAI,
128
+ url: 'usdedai',
129
+ loanToken: '0x6B175474E89094C44Da98b954EedeAC495271d0F',
130
+ collateralToken: '0x4c9EDD5852cd905f086C759E8383e09bff1E68B3',
131
+ oracle: '0xaE4750d0813B5E37A51f7629beedd72AF1f9cA35',
132
+ irm: '0x870aC11D48B15DB9a138Cf899d20F13F79Ba00BC',
133
+ lltv: 0.915,
134
+ marketId: '0xe7e9694b754c4d4f7e21faf7223f6fa71abaeb10296a4c43a54a7977149687d2',
135
+ // icon: SvgAdapter(protocolIcons.spark),
136
+ protocolName: 'morpho-blue',
137
+ });
108
138
  export const MorphoBlueMarkets = (networkId) => ({
109
139
  [MorphoBlueVersions.MorphoBlueWstEthEth]: MORPHO_BLUE_WSTETH_ETH(networkId),
110
140
  [MorphoBlueVersions.MorphoBlueWstEthUSDC]: MORPHO_BLUE_WSTETH_USDC(networkId),
@@ -113,4 +143,6 @@ export const MorphoBlueMarkets = (networkId) => ({
113
143
  [MorphoBlueVersions.MorphoBlueEthUSDC]: MORPHO_BLUE_ETH_USDC(networkId),
114
144
  [MorphoBlueVersions.MorphoBlueWBTCUSDT]: MORPHO_BLUE_WBTC_USDT(networkId),
115
145
  [MorphoBlueVersions.MorphoBlueWstEthUSDT]: MORPHO_BLUE_WSTETH_USDT(networkId),
146
+ [MorphoBlueVersions.MorphoBlueSUSDeDAI]: MORPHO_BLUE_SUSDE_DAI(networkId),
147
+ [MorphoBlueVersions.MorphoBlueUSDeDAI]: MORPHO_BLUE_USDE_DAI(networkId),
116
148
  });
@@ -96,7 +96,7 @@ export function getMorphoBlueMarketData(web3, network, selectedMarket, mainnetWe
96
96
  canBeSupplied: true,
97
97
  canBeBorrowed: false,
98
98
  };
99
- if (['wstETH', 'cbETH', 'rETH'].includes(collateralTokenInfo.symbol)) {
99
+ if (['wstETH', 'cbETH', 'rETH', 'sUSDe'].includes(collateralTokenInfo.symbol)) {
100
100
  assetsData[collateralTokenInfo.symbol].incentiveSupplyApy = yield getStakingApy(collateralTokenInfo.symbol, mainnetWeb3);
101
101
  assetsData[collateralTokenInfo.symbol].incentiveSupplyToken = collateralTokenInfo.symbol;
102
102
  }
@@ -4,6 +4,7 @@ export declare const getStETHApr: (web3: Web3, fromBlock?: number, blockNumber?:
4
4
  export declare const getCbETHApr: (web3: Web3, blockNumber?: 'latest' | number) => Promise<string>;
5
5
  export declare const getREthApr: (web3: Web3, blockNumber?: 'latest' | number) => Promise<string>;
6
6
  export declare const getDsrApy: (web3: Web3, blockNumber?: 'latest' | number) => Promise<string>;
7
+ export declare const getSUSDeApy: () => Promise<any>;
7
8
  export declare const getStakingApy: (asset: string, web3: Web3, blockNumber?: 'latest' | number, fromBlock?: number | undefined) => Promise<any> | undefined;
8
9
  export declare const calculateInterestEarned: (principal: string, interest: string, type: string, apy?: boolean) => number;
9
10
  export declare const calculateNetApy: (usedAssets: MMUsedAssets, assetsData: MMAssetsData, isMorpho?: boolean) => {
@@ -76,6 +76,11 @@ export const getDsrApy = (web3, blockNumber = 'latest') => __awaiter(void 0, voi
76
76
  .mul(100)
77
77
  .toString();
78
78
  });
79
+ export const getSUSDeApy = () => __awaiter(void 0, void 0, void 0, function* () {
80
+ const res = yield fetch('https://www.ethena.fi/api/yields/protocol-and-staking-yield');
81
+ const data = yield res.json();
82
+ return data.stakingYield.value;
83
+ });
79
84
  export const getStakingApy = (asset, web3, blockNumber = 'latest', fromBlock = undefined) => {
80
85
  if (asset === 'stETH' || asset === 'wstETH')
81
86
  return getStETHApr(web3, fromBlock, blockNumber);
@@ -85,6 +90,8 @@ export const getStakingApy = (asset, web3, blockNumber = 'latest', fromBlock = u
85
90
  return getREthApr(web3, blockNumber);
86
91
  if (asset === 'sDAI')
87
92
  return getDsrApy(web3);
93
+ if (asset === 'sUSDe')
94
+ return getSUSDeApy();
88
95
  };
89
96
  export const calculateInterestEarned = (principal, interest, type, apy = false) => {
90
97
  let interval = 1;
@@ -6,7 +6,9 @@ export declare enum MorphoBlueVersions {
6
6
  MorphoBlueWBTCUSDC = "morphobluewbtcusdc",
7
7
  MorphoBlueEthUSDC = "morphoblueethusdc",
8
8
  MorphoBlueWBTCUSDT = "morphobluewbtcusdt",
9
- MorphoBlueWstEthUSDT = "morphobluewstethusdt"
9
+ MorphoBlueWstEthUSDT = "morphobluewstethusdt",
10
+ MorphoBlueSUSDeDAI = "morphobluesusdedai",
11
+ MorphoBlueUSDeDAI = "morphoblueusdedai"
10
12
  }
11
13
  export interface MorphoBlueMarketData {
12
14
  chainIds: NetworkNumber[];
@@ -7,4 +7,6 @@ export var MorphoBlueVersions;
7
7
  MorphoBlueVersions["MorphoBlueEthUSDC"] = "morphoblueethusdc";
8
8
  MorphoBlueVersions["MorphoBlueWBTCUSDT"] = "morphobluewbtcusdt";
9
9
  MorphoBlueVersions["MorphoBlueWstEthUSDT"] = "morphobluewstethusdt";
10
+ MorphoBlueVersions["MorphoBlueSUSDeDAI"] = "morphobluesusdedai";
11
+ MorphoBlueVersions["MorphoBlueUSDeDAI"] = "morphoblueusdedai";
10
12
  })(MorphoBlueVersions || (MorphoBlueVersions = {}));
package/package.json CHANGED
@@ -1,40 +1,40 @@
1
- {
2
- "name": "@defisaver/positions-sdk",
3
- "version": "0.0.53",
4
- "description": "",
5
- "main": "./cjs/index.js",
6
- "module": "./esm/index.js",
7
- "types": "./esm/index.d.ts",
8
- "scripts": {
9
- "build:esm": "rm -rf esm && tsc -p tsconfig.json",
10
- "build:cjs": "rm -rf cjs && tsc -p tsconfig.cjs.json",
11
- "build": "npm run generate-contracts && npm run build:cjs && npm run build:esm",
12
- "dev": "npm run generate-contracts && tsc -p tsconfig.cjs.json --watch",
13
- "lint": "eslint src/ --fix",
14
- "generate-contracts": "node scripts/generateContracts.js",
15
- "test": "mocha tests/*",
16
- "build-test": "npm run build && mocha tests/*"
17
- },
18
- "keywords": [],
19
- "author": "",
20
- "license": "ISC",
21
- "dependencies": {
22
- "@defisaver/tokens": "^1.5.7",
23
- "@ethersproject/bignumber": "^5.7.0",
24
- "@morpho-org/morpho-aave-v3-sdk": "^1.5.3",
25
- "decimal.js": "^10.4.3"
26
- },
27
- "devDependencies": {
28
- "@defisaver/eslint-config": "^1.0.1",
29
- "chai": "^4.3.8",
30
- "dotenv": "^16.3.1",
31
- "eslint": "^8.49.0",
32
- "mocha": "^10.2.0",
33
- "typechain": "^8.3.1",
34
- "typechain-target-web3-v1-3mihai3": "^6.0.2",
35
- "typescript": "^5.2.2"
36
- },
37
- "peerDependencies": {
38
- "web3": "^1.10.2"
39
- }
40
- }
1
+ {
2
+ "name": "@defisaver/positions-sdk",
3
+ "version": "0.0.55",
4
+ "description": "",
5
+ "main": "./cjs/index.js",
6
+ "module": "./esm/index.js",
7
+ "types": "./esm/index.d.ts",
8
+ "scripts": {
9
+ "build:esm": "rm -rf esm && tsc -p tsconfig.json",
10
+ "build:cjs": "rm -rf cjs && tsc -p tsconfig.cjs.json",
11
+ "build": "npm run generate-contracts && npm run build:cjs && npm run build:esm",
12
+ "dev": "npm run generate-contracts && tsc -p tsconfig.cjs.json --watch",
13
+ "lint": "eslint src/ --fix",
14
+ "generate-contracts": "node scripts/generateContracts.js",
15
+ "test": "mocha tests/*",
16
+ "build-test": "npm run build && mocha tests/*"
17
+ },
18
+ "keywords": [],
19
+ "author": "",
20
+ "license": "ISC",
21
+ "dependencies": {
22
+ "@defisaver/tokens": "^1.5.8",
23
+ "@ethersproject/bignumber": "^5.7.0",
24
+ "@morpho-org/morpho-aave-v3-sdk": "^1.5.3",
25
+ "decimal.js": "^10.4.3"
26
+ },
27
+ "devDependencies": {
28
+ "@defisaver/eslint-config": "^1.0.1",
29
+ "chai": "^4.3.8",
30
+ "dotenv": "^16.3.1",
31
+ "eslint": "^8.49.0",
32
+ "mocha": "^10.2.0",
33
+ "typechain": "^8.3.1",
34
+ "typechain-target-web3-v1-3mihai3": "^6.0.2",
35
+ "typescript": "^5.2.2"
36
+ },
37
+ "peerDependencies": {
38
+ "web3": "^1.10.2"
39
+ }
40
+ }