@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.
- package/README.md +63 -63
- package/cjs/markets/morphoBlue/index.d.ts +4 -0
- package/cjs/markets/morphoBlue/index.js +35 -1
- package/cjs/morphoBlue/index.js +1 -1
- package/cjs/staking/staking.d.ts +1 -0
- package/cjs/staking/staking.js +9 -1
- package/cjs/types/morphoBlue.d.ts +3 -1
- package/cjs/types/morphoBlue.js +2 -0
- package/esm/markets/morphoBlue/index.d.ts +4 -0
- package/esm/markets/morphoBlue/index.js +32 -0
- package/esm/morphoBlue/index.js +1 -1
- package/esm/staking/staking.d.ts +1 -0
- package/esm/staking/staking.js +7 -0
- package/esm/types/morphoBlue.d.ts +3 -1
- package/esm/types/morphoBlue.js +2 -0
- package/package.json +40 -40
- package/src/aaveV2/index.ts +227 -227
- package/src/aaveV3/index.ts +561 -561
- package/src/assets/index.ts +60 -60
- package/src/chickenBonds/index.ts +123 -123
- package/src/compoundV2/index.ts +219 -219
- package/src/compoundV3/index.ts +273 -273
- package/src/config/contracts.js +851 -851
- package/src/constants/index.ts +5 -5
- package/src/contracts.ts +126 -126
- package/src/curveUsd/index.ts +229 -229
- package/src/exchange/index.ts +17 -17
- package/src/helpers/aaveHelpers/index.ts +134 -134
- package/src/helpers/chickenBondsHelpers/index.ts +23 -23
- package/src/helpers/compoundHelpers/index.ts +181 -181
- package/src/helpers/curveUsdHelpers/index.ts +40 -40
- package/src/helpers/index.ts +7 -7
- package/src/helpers/llamaLendHelpers/index.ts +45 -45
- package/src/helpers/makerHelpers/index.ts +94 -94
- package/src/helpers/morphoBlueHelpers/index.ts +56 -56
- package/src/helpers/sparkHelpers/index.ts +106 -106
- package/src/index.ts +46 -46
- package/src/liquity/index.ts +116 -116
- package/src/llamaLend/index.ts +279 -279
- package/src/maker/index.ts +117 -117
- package/src/markets/aave/index.ts +80 -80
- package/src/markets/aave/marketAssets.ts +24 -24
- package/src/markets/compound/index.ts +141 -141
- package/src/markets/compound/marketsAssets.ts +48 -48
- package/src/markets/curveUsd/index.ts +69 -69
- package/src/markets/index.ts +5 -5
- package/src/markets/llamaLend/index.ts +65 -65
- package/src/markets/morphoBlue/index.ts +153 -121
- package/src/markets/spark/index.ts +29 -29
- package/src/markets/spark/marketAssets.ts +10 -10
- package/src/moneymarket/moneymarketCommonService.ts +75 -75
- package/src/morphoAaveV2/index.ts +256 -256
- package/src/morphoAaveV3/index.ts +619 -619
- package/src/morphoBlue/index.ts +177 -177
- package/src/multicall/index.ts +22 -22
- package/src/services/dsrService.ts +15 -15
- package/src/services/priceService.ts +21 -21
- package/src/services/utils.ts +51 -51
- package/src/setup.ts +8 -8
- package/src/spark/index.ts +422 -422
- package/src/staking/staking.ts +174 -167
- package/src/types/aave.ts +256 -256
- package/src/types/chickenBonds.ts +45 -45
- package/src/types/common.ts +83 -83
- package/src/types/compound.ts +128 -128
- package/src/types/curveUsd.ts +118 -118
- package/src/types/index.ts +8 -8
- package/src/types/liquity.ts +30 -30
- package/src/types/llamaLend.ts +119 -119
- package/src/types/maker.ts +50 -50
- package/src/types/morphoBlue.ts +98 -96
- package/src/types/spark.ts +106 -106
- 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;
|
package/cjs/morphoBlue/index.js
CHANGED
|
@@ -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
|
}
|
package/cjs/staking/staking.d.ts
CHANGED
|
@@ -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) => {
|
package/cjs/staking/staking.js
CHANGED
|
@@ -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[];
|
package/cjs/types/morphoBlue.js
CHANGED
|
@@ -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
|
});
|
package/esm/morphoBlue/index.js
CHANGED
|
@@ -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
|
}
|
package/esm/staking/staking.d.ts
CHANGED
|
@@ -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) => {
|
package/esm/staking/staking.js
CHANGED
|
@@ -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[];
|
package/esm/types/morphoBlue.js
CHANGED
|
@@ -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.
|
|
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.
|
|
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
|
+
}
|