@defisaver/positions-sdk 1.0.19 → 1.0.21-dev-1

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 (88) hide show
  1. package/.mocharc.json +4 -4
  2. package/.nvmrc +1 -1
  3. package/README.md +69 -69
  4. package/cjs/fluid/index.d.ts +13 -1
  5. package/cjs/fluid/index.js +23 -5
  6. package/cjs/helpers/morphoBlueHelpers/index.js +66 -66
  7. package/cjs/markets/morphoBlue/index.d.ts +4 -0
  8. package/cjs/markets/morphoBlue/index.js +38 -2
  9. package/cjs/morphoBlue/index.js +9 -7
  10. package/cjs/types/morphoBlue.d.ts +2 -0
  11. package/cjs/types/morphoBlue.js +3 -0
  12. package/esm/fluid/index.d.ts +13 -1
  13. package/esm/fluid/index.js +21 -4
  14. package/esm/helpers/morphoBlueHelpers/index.js +66 -66
  15. package/esm/markets/morphoBlue/index.d.ts +4 -0
  16. package/esm/markets/morphoBlue/index.js +34 -0
  17. package/esm/morphoBlue/index.js +9 -7
  18. package/esm/types/morphoBlue.d.ts +2 -0
  19. package/esm/types/morphoBlue.js +3 -0
  20. package/package.json +54 -54
  21. package/src/aaveV2/index.ts +227 -227
  22. package/src/aaveV3/index.ts +624 -624
  23. package/src/assets/index.ts +60 -60
  24. package/src/chickenBonds/index.ts +123 -123
  25. package/src/compoundV2/index.ts +220 -220
  26. package/src/compoundV3/index.ts +291 -291
  27. package/src/config/contracts.js +1173 -1173
  28. package/src/constants/index.ts +6 -6
  29. package/src/contracts.ts +138 -138
  30. package/src/curveUsd/index.ts +239 -239
  31. package/src/eulerV2/index.ts +303 -303
  32. package/src/exchange/index.ts +17 -17
  33. package/src/fluid/index.ts +1348 -1325
  34. package/src/helpers/aaveHelpers/index.ts +203 -203
  35. package/src/helpers/chickenBondsHelpers/index.ts +23 -23
  36. package/src/helpers/compoundHelpers/index.ts +248 -248
  37. package/src/helpers/curveUsdHelpers/index.ts +40 -40
  38. package/src/helpers/eulerHelpers/index.ts +234 -234
  39. package/src/helpers/fluidHelpers/index.ts +325 -325
  40. package/src/helpers/index.ts +11 -11
  41. package/src/helpers/liquityV2Helpers/index.ts +80 -80
  42. package/src/helpers/llamaLendHelpers/index.ts +53 -53
  43. package/src/helpers/makerHelpers/index.ts +94 -94
  44. package/src/helpers/morphoBlueHelpers/index.ts +367 -367
  45. package/src/helpers/sparkHelpers/index.ts +154 -154
  46. package/src/index.ts +52 -52
  47. package/src/liquity/index.ts +116 -116
  48. package/src/liquityV2/index.ts +317 -317
  49. package/src/llamaLend/index.ts +275 -275
  50. package/src/maker/index.ts +117 -117
  51. package/src/markets/aave/index.ts +152 -152
  52. package/src/markets/aave/marketAssets.ts +47 -47
  53. package/src/markets/compound/index.ts +213 -213
  54. package/src/markets/compound/marketsAssets.ts +82 -82
  55. package/src/markets/curveUsd/index.ts +69 -69
  56. package/src/markets/euler/index.ts +26 -26
  57. package/src/markets/fluid/index.ts +2456 -2456
  58. package/src/markets/index.ts +27 -27
  59. package/src/markets/liquityV2/index.ts +102 -102
  60. package/src/markets/llamaLend/contractAddresses.ts +141 -141
  61. package/src/markets/llamaLend/index.ts +235 -235
  62. package/src/markets/morphoBlue/index.ts +932 -895
  63. package/src/markets/spark/index.ts +29 -29
  64. package/src/markets/spark/marketAssets.ts +10 -10
  65. package/src/moneymarket/moneymarketCommonService.ts +80 -80
  66. package/src/morphoAaveV2/index.ts +256 -256
  67. package/src/morphoAaveV3/index.ts +630 -630
  68. package/src/morphoBlue/index.ts +204 -202
  69. package/src/multicall/index.ts +33 -33
  70. package/src/services/priceService.ts +143 -143
  71. package/src/services/utils.ts +59 -59
  72. package/src/setup.ts +8 -8
  73. package/src/spark/index.ts +460 -460
  74. package/src/staking/staking.ts +221 -221
  75. package/src/types/aave.ts +275 -275
  76. package/src/types/chickenBonds.ts +45 -45
  77. package/src/types/common.ts +84 -84
  78. package/src/types/compound.ts +133 -133
  79. package/src/types/curveUsd.ts +119 -119
  80. package/src/types/euler.ts +173 -173
  81. package/src/types/fluid.ts +330 -330
  82. package/src/types/index.ts +11 -11
  83. package/src/types/liquity.ts +30 -30
  84. package/src/types/liquityV2.ts +126 -126
  85. package/src/types/llamaLend.ts +155 -155
  86. package/src/types/maker.ts +50 -50
  87. package/src/types/morphoBlue.ts +197 -194
  88. package/src/types/spark.ts +135 -135
package/.mocharc.json CHANGED
@@ -1,4 +1,4 @@
1
- {
2
- "require": "ts-node/register",
3
- "extension": ["ts"]
4
- }
1
+ {
2
+ "require": "ts-node/register",
3
+ "extension": ["ts"]
4
+ }
package/.nvmrc CHANGED
@@ -1 +1 @@
1
- v20.17.0
1
+ v20.17.0
package/README.md CHANGED
@@ -1,69 +1,69 @@
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)
64
-
65
- ## Testing
66
-
67
- `npm run test` - Run all tests
68
-
69
- `npm run test-single --name=your_test_name` - Run single test for specified name e.g. for MyTest.js test name is MyTest
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)
64
+
65
+ ## Testing
66
+
67
+ `npm run test` - Run all tests
68
+
69
+ `npm run test-single --name=your_test_name` - Run single test for specified name e.g. for MyTest.js test name is MyTest
@@ -48,7 +48,7 @@ export declare const getFluidTokenData: (web3: Web3, network: NetworkNumber, tok
48
48
  withdrawRate: string;
49
49
  }>;
50
50
  export declare const getFluidDepositData: (web3: Web3, network: NetworkNumber, token: string, address: EthAddress) => Promise<{
51
- fTokenAddress: any;
51
+ fTokenAddress: string | undefined;
52
52
  fTokenSymbol: string;
53
53
  decimals: string;
54
54
  totalDeposited: string;
@@ -59,6 +59,18 @@ export declare const getFluidDepositData: (web3: Web3, network: NetworkNumber, t
59
59
  deposited: string;
60
60
  depositedShares: string;
61
61
  }>;
62
+ export declare const getAllUserEarnPositionsWithFTokens: (web3: Web3, network: NetworkNumber, user: EthAddress, mainnetWeb3: Web3) => Promise<{
63
+ fTokenAddress: string | undefined;
64
+ fTokenSymbol: string;
65
+ decimals: string;
66
+ totalDeposited: string;
67
+ withdrawable: string;
68
+ apy: string;
69
+ depositRate: string;
70
+ withdrawRate: string;
71
+ deposited: string;
72
+ depositedShares: string;
73
+ }[]>;
62
74
  export declare const getUserPositions: (web3: Web3, network: NetworkNumber, user: EthAddress, mainnetWeb3: Web3) => Promise<{
63
75
  marketData: FluidMarketData;
64
76
  userData: {
@@ -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.getUserPositions = exports.getFluidDepositData = exports.getFluidTokenData = exports.getAllFluidMarketDataChunked = exports.getFluidPositionWithMarket = exports.getFluidPosition = exports.getFluidVaultIdsForUser = exports.getFluidMarketData = exports.EMPTY_FLUID_DATA = exports.EMPTY_USED_ASSET = void 0;
15
+ exports.getUserPositions = exports.getAllUserEarnPositionsWithFTokens = exports.getFluidDepositData = exports.getFluidTokenData = exports.getAllFluidMarketDataChunked = exports.getFluidPositionWithMarket = exports.getFluidPosition = exports.getFluidVaultIdsForUser = exports.getFluidMarketData = exports.EMPTY_FLUID_DATA = exports.EMPTY_USED_ASSET = void 0;
16
16
  const decimal_js_1 = __importDefault(require("decimal.js"));
17
17
  const tokens_1 = require("@defisaver/tokens");
18
18
  const common_1 = require("../types/common");
@@ -960,10 +960,7 @@ const getFluidTokenData = (web3, network, token) => __awaiter(void 0, void 0, vo
960
960
  };
961
961
  });
962
962
  exports.getFluidTokenData = getFluidTokenData;
963
- const getFluidDepositData = (web3, network, token, address) => __awaiter(void 0, void 0, void 0, function* () {
964
- const view = (0, contracts_1.FluidViewContract)(web3, network);
965
- const fTokenAddress = (0, markets_1.getFTokenAddress)(token, network);
966
- const { fTokenData, userPosition } = yield view.methods.getUserEarnPositionWithFToken(fTokenAddress, address).call();
963
+ const parseFDepositTokenData = (fTokenData, userPosition, fTokenAddress) => {
967
964
  const supplyRate = new decimal_js_1.default(fTokenData.supplyRate).div(100).toString();
968
965
  const rewardsRate = new decimal_js_1.default(fTokenData.rewardsRate).div(1e12).toString();
969
966
  const decimals = fTokenData.decimals;
@@ -981,8 +978,29 @@ const getFluidDepositData = (web3, network, token, address) => __awaiter(void 0,
981
978
  deposited: (0, utils_1.getEthAmountForDecimals)(userPosition.underlyingAssets, decimals),
982
979
  depositedShares: (0, utils_1.getEthAmountForDecimals)(userPosition.fTokenShares, decimals),
983
980
  };
981
+ };
982
+ const getFluidDepositData = (web3, network, token, address) => __awaiter(void 0, void 0, void 0, function* () {
983
+ const view = (0, contracts_1.FluidViewContract)(web3, network);
984
+ const fTokenAddress = (0, markets_1.getFTokenAddress)(token, network);
985
+ const { fTokenData, userPosition } = yield view.methods.getUserEarnPositionWithFToken(fTokenAddress, address).call();
986
+ return parseFDepositTokenData(fTokenData, userPosition, fTokenAddress);
984
987
  });
985
988
  exports.getFluidDepositData = getFluidDepositData;
989
+ const getAllUserEarnPositionsWithFTokens = (web3, network, user, mainnetWeb3) => __awaiter(void 0, void 0, void 0, function* () {
990
+ const view = (0, contracts_1.FluidViewContract)(web3, network);
991
+ const { fTokensData, userPositions } = yield view.methods.getAllUserEarnPositionsWithFTokens(user).call();
992
+ const parsedRes = fTokensData.reduce((acc, fTokenData, i) => {
993
+ const userPosition = userPositions[i];
994
+ const deposited = userPosition === null || userPosition === void 0 ? void 0 : userPosition.underlyingAssets;
995
+ if (Number(deposited) > 0) {
996
+ const fTokenAddress = (0, markets_1.getFTokenAddress)(fTokenData.symbol, network);
997
+ acc.push(parseFDepositTokenData(fTokenData, userPosition, fTokenAddress));
998
+ }
999
+ return acc;
1000
+ }, []);
1001
+ return parsedRes;
1002
+ });
1003
+ exports.getAllUserEarnPositionsWithFTokens = getAllUserEarnPositionsWithFTokens;
986
1004
  const getUserPositions = (web3, network, user, mainnetWeb3) => __awaiter(void 0, void 0, void 0, function* () {
987
1005
  const view = (0, contracts_1.FluidViewContract)(web3, network);
988
1006
  const data = yield view.methods.getUserPositions(user).call();
@@ -117,73 +117,73 @@ const getApyAfterValuesEstimation = (selectedMarket, actions, web3, network) =>
117
117
  });
118
118
  exports.getApyAfterValuesEstimation = getApyAfterValuesEstimation;
119
119
  const API_URL = 'https://blue-api.morpho.org/graphql';
120
- const MARKET_QUERY = `
121
- query MarketByUniqueKey($uniqueKey: String!, $chainId: Int!) {
122
- marketByUniqueKey(uniqueKey: $uniqueKey, chainId: $chainId) {
123
- reallocatableLiquidityAssets
124
- targetBorrowUtilization
125
- loanAsset {
126
- address
127
- decimals
128
- priceUsd
129
- }
130
- state {
131
- liquidityAssets
132
- borrowAssets
133
- supplyAssets
134
- }
135
- publicAllocatorSharedLiquidity {
136
- assets
137
- vault {
138
- address
139
- name
140
- }
141
- allocationMarket {
142
- uniqueKey
143
- loanAsset {
144
- address
145
- }
146
- collateralAsset {
147
- address
148
- }
149
- irmAddress
150
- oracle {
151
- address
152
- }
153
- lltv
154
- }
155
- }
156
- loanAsset {
157
- address
158
- }
159
- collateralAsset {
160
- address
161
- }
162
- oracle {
163
- address
164
- }
165
- irmAddress
166
- lltv
167
- }
168
- }
120
+ const MARKET_QUERY = `
121
+ query MarketByUniqueKey($uniqueKey: String!, $chainId: Int!) {
122
+ marketByUniqueKey(uniqueKey: $uniqueKey, chainId: $chainId) {
123
+ reallocatableLiquidityAssets
124
+ targetBorrowUtilization
125
+ loanAsset {
126
+ address
127
+ decimals
128
+ priceUsd
129
+ }
130
+ state {
131
+ liquidityAssets
132
+ borrowAssets
133
+ supplyAssets
134
+ }
135
+ publicAllocatorSharedLiquidity {
136
+ assets
137
+ vault {
138
+ address
139
+ name
140
+ }
141
+ allocationMarket {
142
+ uniqueKey
143
+ loanAsset {
144
+ address
145
+ }
146
+ collateralAsset {
147
+ address
148
+ }
149
+ irmAddress
150
+ oracle {
151
+ address
152
+ }
153
+ lltv
154
+ }
155
+ }
156
+ loanAsset {
157
+ address
158
+ }
159
+ collateralAsset {
160
+ address
161
+ }
162
+ oracle {
163
+ address
164
+ }
165
+ irmAddress
166
+ lltv
167
+ }
168
+ }
169
169
  `;
170
- const REWARDS_QUERY = `
171
- query MarketByUniqueKey($uniqueKey: String!, $chainId: Int!) {
172
- marketByUniqueKey(uniqueKey: $uniqueKey, chainId: $chainId) {
173
- uniqueKey
174
- state {
175
- rewards {
176
- amountPerSuppliedToken
177
- supplyApr
178
- amountPerBorrowedToken
179
- borrowApr
180
- asset {
181
- address
182
- }
183
- }
184
- }
185
- }
186
- }
170
+ const REWARDS_QUERY = `
171
+ query MarketByUniqueKey($uniqueKey: String!, $chainId: Int!) {
172
+ marketByUniqueKey(uniqueKey: $uniqueKey, chainId: $chainId) {
173
+ uniqueKey
174
+ state {
175
+ rewards {
176
+ amountPerSuppliedToken
177
+ supplyApr
178
+ amountPerBorrowedToken
179
+ borrowApr
180
+ asset {
181
+ address
182
+ }
183
+ }
184
+ }
185
+ }
186
+ }
187
187
  `;
188
188
  /**
189
189
  * Get reallocatable liquidity to a given market and target borrow utilization
@@ -18,6 +18,7 @@ export declare const MORPHO_BLUE_TBTC_USDC: (networkId?: NetworkNumber) => Morph
18
18
  export declare const MORPHO_BLUE_CBBTC_ETH_915: (networkId?: NetworkNumber) => MorphoBlueMarketData;
19
19
  export declare const MORPHO_BLUE_CBBTC_USDC_860: (networkId?: NetworkNumber) => MorphoBlueMarketData;
20
20
  export declare const MORPHO_BLUE_SUSDE_USDC_915: (networkId?: NetworkNumber) => MorphoBlueMarketData;
21
+ export declare const MORPHO_BLUE_SYRUPUSDC_USDC_915: (networkId?: NetworkNumber) => MorphoBlueMarketData;
21
22
  export declare const MORPHO_BLUE_EZETH_ETH_860: (networkId?: NetworkNumber) => MorphoBlueMarketData;
22
23
  export declare const MORPHO_BLUE_EZETH_ETH_945: (networkId?: NetworkNumber) => MorphoBlueMarketData;
23
24
  export declare const MORPHO_BLUE_WEETH_ETH_860: (networkId?: NetworkNumber) => MorphoBlueMarketData;
@@ -35,6 +36,7 @@ export declare const MORPHO_BLUE_USDE_DAI_915: (networkId?: NetworkNumber) => Mo
35
36
  export declare const MORPHO_BLUE_USDE_DAI_945: (networkId?: NetworkNumber) => MorphoBlueMarketData;
36
37
  export declare const MORPHO_BLUE_RETH_ETH_945: (networkId?: NetworkNumber) => MorphoBlueMarketData;
37
38
  export declare const MORPHO_BLUE_USR_USDC_915: (networkId?: NetworkNumber) => MorphoBlueMarketData;
39
+ export declare const MORPHO_BLUE_PTSYRUPUSDCAUG_USDC_860: (networkId?: NetworkNumber) => MorphoBlueMarketData;
38
40
  export declare const MORPHO_BLUE_CBETH_USDC_860_BASE: (networkId?: NetworkNumber) => MorphoBlueMarketData;
39
41
  export declare const MORPHO_BLUE_CBETH_USDC_860_BASE_1c21c59d: (networkId?: NetworkNumber) => MorphoBlueMarketData;
40
42
  export declare const MORPHO_BLUE_WSTETH_ETH_945_BASE: (networkId?: NetworkNumber) => MorphoBlueMarketData;
@@ -79,6 +81,7 @@ export declare const MorphoBlueMarkets: (networkId: NetworkNumber) => {
79
81
  readonly morphobluesusdeusdc_915: MorphoBlueMarketData;
80
82
  readonly morphobluelbtcwbtc_945: MorphoBlueMarketData;
81
83
  readonly morphoblueusrusdc_915: MorphoBlueMarketData;
84
+ readonly morphobluesyrupusdcusdc_915: MorphoBlueMarketData;
82
85
  readonly morphobluewstetheth_945: MorphoBlueMarketData;
83
86
  readonly morphobluewstetheth_945_exchange_rate: MorphoBlueMarketData;
84
87
  readonly morphobluewstetheth_965_exchange_rate: MorphoBlueMarketData;
@@ -90,6 +93,7 @@ export declare const MorphoBlueMarkets: (networkId: NetworkNumber) => {
90
93
  readonly morphoblueusdedai_860: MorphoBlueMarketData;
91
94
  readonly morphoblueusdedai_915: MorphoBlueMarketData;
92
95
  readonly morphoblueusdedai_945: MorphoBlueMarketData;
96
+ readonly morphoblueptsyrupusdcaugusdc_860: MorphoBlueMarketData;
93
97
  readonly morphobluecbethusdc_860_base: MorphoBlueMarketData;
94
98
  readonly morphobluecbethusdc_860_base_1c21c59d: MorphoBlueMarketData;
95
99
  readonly morphobluewstethusdc_860_base: MorphoBlueMarketData;
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.MORPHO_BLUE_LBTC_WBTC_945 = exports.MORPHO_BLUE_WSUPEROETHB_WETH_915_BASE = exports.MORPHO_BLUE_CBBTC_USDC_860_BASE = exports.MORPHO_BLUE_CBBTC_ETH_915_BASE = exports.MORPHO_BLUE_RETH_ETH_945_BASE = exports.MORPHO_BLUE_RETH_USDC_860_BASE = exports.MORPHO_BLUE_ETH_USDC_860_BASE = exports.MORPHO_BLUE_CBETH_ETH_945_BASE = exports.MORPHO_BLUE_CBETH_ETH_965_BASE = exports.MORPHO_BLUE_WSTETH_USDC_860_BASE = exports.MORPHO_BLUE_WSTETH_USDC_860_BASE_13c42741 = exports.MORPHO_BLUE_WSTETH_ETH_965_BASE = exports.MORPHO_BLUE_WSTETH_ETH_945_BASE = exports.MORPHO_BLUE_CBETH_USDC_860_BASE_1c21c59d = exports.MORPHO_BLUE_CBETH_USDC_860_BASE = exports.MORPHO_BLUE_USR_USDC_915 = exports.MORPHO_BLUE_RETH_ETH_945 = exports.MORPHO_BLUE_USDE_DAI_945 = exports.MORPHO_BLUE_USDE_DAI_915 = exports.MORPHO_BLUE_USDE_DAI_860 = exports.MORPHO_BLUE_USDE_DAI_770 = exports.MORPHO_BLUE_SUSDE_DAI_945 = exports.MORPHO_BLUE_SUSDE_DAI_915 = exports.MORPHO_BLUE_SUSDE_DAI_860 = exports.MORPHO_BLUE_SUSDE_DAI_770 = exports.MORPHO_BLUE_WSTETH_ETH_965_EXCHANGE_RATE = exports.MORPHO_BLUE_WSTETH_ETH_945_EXCHANGE_RATE = exports.MORPHO_BLUE_WSTETH_ETH_945 = exports.MORPHO_BLUE_WEETH_ETH_945 = exports.MORPHO_BLUE_WEETH_ETH_860 = exports.MORPHO_BLUE_EZETH_ETH_945 = exports.MORPHO_BLUE_EZETH_ETH_860 = exports.MORPHO_BLUE_SUSDE_USDC_915 = exports.MORPHO_BLUE_CBBTC_USDC_860 = exports.MORPHO_BLUE_CBBTC_ETH_915 = exports.MORPHO_BLUE_TBTC_USDC = exports.MORPHO_BLUE_MKR_USDC = exports.MORPHO_BLUE_SDAI_ETH = exports.MORPHO_BLUE_SUSDE_USDT = exports.MORPHO_BLUE_USDE_USDT = exports.MORPHO_BLUE_WSTETH_PYUSD = exports.MORPHO_BLUE_WSTETH_USDA_EXCHANGE_RATE = exports.MORPHO_BLUE_WSTETH_USDT = exports.MORPHO_BLUE_WBTC_ETH = exports.MORPHO_BLUE_WBTC_PYUSD = exports.MORPHO_BLUE_WBTC_USDT = exports.MORPHO_BLUE_ETH_USDC = exports.MORPHO_BLUE_WBTC_USDC = exports.MORPHO_BLUE_SDAI_USDC = exports.MORPHO_BLUE_WSTETH_USDC = void 0;
4
- exports.findMorphoBlueMarket = exports.MorphoBlueMarkets = exports.MORPHO_BLUE_CBBTC_EURC_860_BASE = exports.MORPHO_BLUE_WSTETH_EURC_860_BASE = exports.MORPHO_BLUE_LBTC_CBBTC_945_BASE = void 0;
3
+ exports.MORPHO_BLUE_CBBTC_USDC_860_BASE = exports.MORPHO_BLUE_CBBTC_ETH_915_BASE = exports.MORPHO_BLUE_RETH_ETH_945_BASE = exports.MORPHO_BLUE_RETH_USDC_860_BASE = exports.MORPHO_BLUE_ETH_USDC_860_BASE = exports.MORPHO_BLUE_CBETH_ETH_945_BASE = exports.MORPHO_BLUE_CBETH_ETH_965_BASE = exports.MORPHO_BLUE_WSTETH_USDC_860_BASE = exports.MORPHO_BLUE_WSTETH_USDC_860_BASE_13c42741 = exports.MORPHO_BLUE_WSTETH_ETH_965_BASE = exports.MORPHO_BLUE_WSTETH_ETH_945_BASE = exports.MORPHO_BLUE_CBETH_USDC_860_BASE_1c21c59d = exports.MORPHO_BLUE_CBETH_USDC_860_BASE = exports.MORPHO_BLUE_PTSYRUPUSDCAUG_USDC_860 = exports.MORPHO_BLUE_USR_USDC_915 = exports.MORPHO_BLUE_RETH_ETH_945 = exports.MORPHO_BLUE_USDE_DAI_945 = exports.MORPHO_BLUE_USDE_DAI_915 = exports.MORPHO_BLUE_USDE_DAI_860 = exports.MORPHO_BLUE_USDE_DAI_770 = exports.MORPHO_BLUE_SUSDE_DAI_945 = exports.MORPHO_BLUE_SUSDE_DAI_915 = exports.MORPHO_BLUE_SUSDE_DAI_860 = exports.MORPHO_BLUE_SUSDE_DAI_770 = exports.MORPHO_BLUE_WSTETH_ETH_965_EXCHANGE_RATE = exports.MORPHO_BLUE_WSTETH_ETH_945_EXCHANGE_RATE = exports.MORPHO_BLUE_WSTETH_ETH_945 = exports.MORPHO_BLUE_WEETH_ETH_945 = exports.MORPHO_BLUE_WEETH_ETH_860 = exports.MORPHO_BLUE_EZETH_ETH_945 = exports.MORPHO_BLUE_EZETH_ETH_860 = exports.MORPHO_BLUE_SYRUPUSDC_USDC_915 = exports.MORPHO_BLUE_SUSDE_USDC_915 = exports.MORPHO_BLUE_CBBTC_USDC_860 = exports.MORPHO_BLUE_CBBTC_ETH_915 = exports.MORPHO_BLUE_TBTC_USDC = exports.MORPHO_BLUE_MKR_USDC = exports.MORPHO_BLUE_SDAI_ETH = exports.MORPHO_BLUE_SUSDE_USDT = exports.MORPHO_BLUE_USDE_USDT = exports.MORPHO_BLUE_WSTETH_PYUSD = exports.MORPHO_BLUE_WSTETH_USDA_EXCHANGE_RATE = exports.MORPHO_BLUE_WSTETH_USDT = exports.MORPHO_BLUE_WBTC_ETH = exports.MORPHO_BLUE_WBTC_PYUSD = exports.MORPHO_BLUE_WBTC_USDT = exports.MORPHO_BLUE_ETH_USDC = exports.MORPHO_BLUE_WBTC_USDC = exports.MORPHO_BLUE_SDAI_USDC = exports.MORPHO_BLUE_WSTETH_USDC = void 0;
4
+ exports.findMorphoBlueMarket = exports.MorphoBlueMarkets = exports.MORPHO_BLUE_CBBTC_EURC_860_BASE = exports.MORPHO_BLUE_WSTETH_EURC_860_BASE = exports.MORPHO_BLUE_LBTC_CBBTC_945_BASE = exports.MORPHO_BLUE_LBTC_WBTC_945 = exports.MORPHO_BLUE_WSUPEROETHB_WETH_915_BASE = void 0;
5
5
  const utils_1 = require("../../services/utils");
6
6
  const types_1 = require("../../types");
7
7
  const common_1 = require("../../types/common");
@@ -293,6 +293,22 @@ const MORPHO_BLUE_SUSDE_USDC_915 = (networkId = common_1.NetworkNumber.Eth) => (
293
293
  protocolName: 'morpho-blue',
294
294
  });
295
295
  exports.MORPHO_BLUE_SUSDE_USDC_915 = MORPHO_BLUE_SUSDE_USDC_915;
296
+ const MORPHO_BLUE_SYRUPUSDC_USDC_915 = (networkId = common_1.NetworkNumber.Eth) => ({
297
+ chainIds: [1],
298
+ label: 'Morpho',
299
+ shortLabel: 'syrupUSDC/USDC',
300
+ value: types_1.MorphoBlueVersions.MorphoBlueSyrupUSDCUSDC_915,
301
+ url: 'syrupusdc-729badf2',
302
+ loanToken: '0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48',
303
+ collateralToken: '0x80ac24aA929eaF5013f6436cdA2a7ba190f5Cc0b',
304
+ oracle: '0x80032f4cb6e3573b9ed61e888af658e48fb790cc',
305
+ oracleType: types_1.MorphoBlueOracleType.MARKET_RATE,
306
+ irm: '0x870ac11d48b15db9a138cf899d20f13f79ba00bc',
307
+ lltv: 0.915,
308
+ marketId: '729badf297ee9f2f6b3f717b96fd355fc6ec00422284ce1968e76647b258cf44',
309
+ protocolName: 'morpho-blue',
310
+ });
311
+ exports.MORPHO_BLUE_SYRUPUSDC_USDC_915 = MORPHO_BLUE_SYRUPUSDC_USDC_915;
296
312
  // ezETH/ETH
297
313
  const MORPHO_BLUE_EZETH_ETH_860 = (networkId = common_1.NetworkNumber.Eth) => ({
298
314
  chainIds: [1],
@@ -570,6 +586,23 @@ const MORPHO_BLUE_USR_USDC_915 = (networkId = common_1.NetworkNumber.Eth) => ({
570
586
  protocolName: 'morpho-blue',
571
587
  });
572
588
  exports.MORPHO_BLUE_USR_USDC_915 = MORPHO_BLUE_USR_USDC_915;
589
+ // Pendle
590
+ const MORPHO_BLUE_PTSYRUPUSDCAUG_USDC_860 = (networkId = common_1.NetworkNumber.Eth) => ({
591
+ chainIds: [1],
592
+ label: 'Morpho',
593
+ shortLabel: 'Pt syrupUSDC Aug/USDC',
594
+ value: types_1.MorphoBlueVersions.MorphoBluePTsyrupUSDCAugUSDC_860,
595
+ url: 'ptsyrupusdcaug-a3819a7d',
596
+ loanToken: '0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48',
597
+ collateralToken: '0xCcE7D12f683c6dAe700154f0BAdf779C0bA1F89A',
598
+ oracle: '0x3b74c5fd1005cd98f349d5d9df78ec8b15131fa5',
599
+ oracleType: types_1.MorphoBlueOracleType.MARKET_RATE,
600
+ irm: '0x870ac11d48b15db9a138cf899d20f13f79ba00bc',
601
+ lltv: 0.860,
602
+ marketId: 'a3819a7d2aee958ca0e7404137d012b51ea47d051db69d94656956eff8c80c23',
603
+ protocolName: 'morpho-blue',
604
+ });
605
+ exports.MORPHO_BLUE_PTSYRUPUSDCAUG_USDC_860 = MORPHO_BLUE_PTSYRUPUSDCAUG_USDC_860;
573
606
  // ###### BASE ########
574
607
  const MORPHO_BLUE_CBETH_USDC_860_BASE = (networkId = common_1.NetworkNumber.Eth) => ({
575
608
  chainIds: [common_1.NetworkNumber.Base],
@@ -885,6 +918,7 @@ const MorphoBlueMarkets = (networkId) => ({
885
918
  [types_1.MorphoBlueVersions.MorphoBlueSUSDeUSDC_915]: (0, exports.MORPHO_BLUE_SUSDE_USDC_915)(networkId),
886
919
  [types_1.MorphoBlueVersions.MorphoBlueLBTCWBTC_945]: (0, exports.MORPHO_BLUE_LBTC_WBTC_945)(networkId),
887
920
  [types_1.MorphoBlueVersions.MorphoBlueUSRUSDC_915]: (0, exports.MORPHO_BLUE_USR_USDC_915)(networkId),
921
+ [types_1.MorphoBlueVersions.MorphoBlueSyrupUSDCUSDC_915]: (0, exports.MORPHO_BLUE_SYRUPUSDC_USDC_915)(networkId),
888
922
  // wstETH/WETH
889
923
  [types_1.MorphoBlueVersions.MorphoBlueWstEthEth_945]: (0, exports.MORPHO_BLUE_WSTETH_ETH_945)(networkId),
890
924
  [types_1.MorphoBlueVersions.MorphoBlueWstEthEth_945_Exchange_Rate]: (0, exports.MORPHO_BLUE_WSTETH_ETH_945_EXCHANGE_RATE)(networkId),
@@ -899,6 +933,8 @@ const MorphoBlueMarkets = (networkId) => ({
899
933
  [types_1.MorphoBlueVersions.MorphoBlueUSDeDAI_860]: (0, exports.MORPHO_BLUE_USDE_DAI_860)(networkId),
900
934
  [types_1.MorphoBlueVersions.MorphoBlueUSDeDAI_915]: (0, exports.MORPHO_BLUE_USDE_DAI_915)(networkId),
901
935
  [types_1.MorphoBlueVersions.MorphoBlueUSDeDAI_945]: (0, exports.MORPHO_BLUE_USDE_DAI_945)(networkId),
936
+ // Pendle
937
+ [types_1.MorphoBlueVersions.MorphoBluePTsyrupUSDCAugUSDC_860]: (0, exports.MORPHO_BLUE_PTSYRUPUSDCAUG_USDC_860)(networkId),
902
938
  // Base
903
939
  [types_1.MorphoBlueVersions.MorphoBlueCbEthUSDC_860_Base]: (0, exports.MORPHO_BLUE_CBETH_USDC_860_BASE)(networkId),
904
940
  [types_1.MorphoBlueVersions.MorphoBlueCbEthUSDC_860_Base_1c21c59d]: (0, exports.MORPHO_BLUE_CBETH_USDC_860_BASE_1c21c59d)(networkId),
@@ -56,13 +56,15 @@ function getMorphoBlueMarketData(web3, network, selectedMarket, mainnetWeb3) {
56
56
  }
57
57
  let morphoSupplyApy = '0';
58
58
  let morphoBorrowApy = '0';
59
- try {
60
- const { supplyApy: _morphoSupplyApy, borrowApy: _morphoBorrowApy } = yield (0, morphoBlueHelpers_1.getRewardsForMarket)(selectedMarket.marketId, network);
61
- morphoSupplyApy = _morphoSupplyApy;
62
- morphoBorrowApy = _morphoBorrowApy;
63
- }
64
- catch (e) {
65
- console.error(e);
59
+ if (!collateralTokenInfo.isPendle) {
60
+ try {
61
+ const { supplyApy: _morphoSupplyApy, borrowApy: _morphoBorrowApy } = yield (0, morphoBlueHelpers_1.getRewardsForMarket)(selectedMarket.marketId, network);
62
+ morphoSupplyApy = _morphoSupplyApy;
63
+ morphoBorrowApy = _morphoBorrowApy;
64
+ }
65
+ catch (e) {
66
+ console.error(e);
67
+ }
66
68
  }
67
69
  const supplyRate = (0, morphoBlueHelpers_1.getSupplyRate)(marketInfo.totalSupplyAssets, marketInfo.totalBorrowAssets, marketInfo.borrowRate, marketInfo.fee);
68
70
  const compoundedBorrowRate = (0, morphoBlueHelpers_1.getBorrowRate)(marketInfo.borrowRate, marketInfo.totalBorrowShares);
@@ -21,6 +21,7 @@ export declare enum MorphoBlueVersions {
21
21
  MorphoBlueSUSDeUSDC_915 = "morphobluesusdeusdc_915",
22
22
  MorphoBlueLBTCWBTC_945 = "morphobluelbtcwbtc_945",
23
23
  MorphoBlueUSRUSDC_915 = "morphoblueusrusdc_915",
24
+ MorphoBlueSyrupUSDCUSDC_915 = "morphobluesyrupusdcusdc_915",
24
25
  MorphoBlueEzEthEth_860 = "morphoblueezetheth_860",
25
26
  MorphoBlueEzEthEth_945 = "morphoblueezetheth_945",
26
27
  MorphoBlueWeEthEth_860 = "morphoblueweetheth_860",
@@ -36,6 +37,7 @@ export declare enum MorphoBlueVersions {
36
37
  MorphoBlueUSDeDAI_860 = "morphoblueusdedai_860",
37
38
  MorphoBlueUSDeDAI_915 = "morphoblueusdedai_915",
38
39
  MorphoBlueUSDeDAI_945 = "morphoblueusdedai_945",
40
+ MorphoBluePTsyrupUSDCAugUSDC_860 = "morphoblueptsyrupusdcaugusdc_860",
39
41
  MorphoBlueCbEthUSDC_860_Base = "morphobluecbethusdc_860_base",
40
42
  MorphoBlueCbEthUSDC_860_Base_1c21c59d = "morphobluecbethusdc_860_base_1c21c59d",
41
43
  MorphoBlueWstEthUSDC_860_Base = "morphobluewstethusdc_860_base",
@@ -25,6 +25,7 @@ var MorphoBlueVersions;
25
25
  MorphoBlueVersions["MorphoBlueSUSDeUSDC_915"] = "morphobluesusdeusdc_915";
26
26
  MorphoBlueVersions["MorphoBlueLBTCWBTC_945"] = "morphobluelbtcwbtc_945";
27
27
  MorphoBlueVersions["MorphoBlueUSRUSDC_915"] = "morphoblueusrusdc_915";
28
+ MorphoBlueVersions["MorphoBlueSyrupUSDCUSDC_915"] = "morphobluesyrupusdcusdc_915";
28
29
  // ezETH/ETH
29
30
  MorphoBlueVersions["MorphoBlueEzEthEth_860"] = "morphoblueezetheth_860";
30
31
  MorphoBlueVersions["MorphoBlueEzEthEth_945"] = "morphoblueezetheth_945";
@@ -45,6 +46,8 @@ var MorphoBlueVersions;
45
46
  MorphoBlueVersions["MorphoBlueUSDeDAI_860"] = "morphoblueusdedai_860";
46
47
  MorphoBlueVersions["MorphoBlueUSDeDAI_915"] = "morphoblueusdedai_915";
47
48
  MorphoBlueVersions["MorphoBlueUSDeDAI_945"] = "morphoblueusdedai_945";
49
+ // Pendle
50
+ MorphoBlueVersions["MorphoBluePTsyrupUSDCAugUSDC_860"] = "morphoblueptsyrupusdcaugusdc_860";
48
51
  // BASE
49
52
  MorphoBlueVersions["MorphoBlueCbEthUSDC_860_Base"] = "morphobluecbethusdc_860_base";
50
53
  MorphoBlueVersions["MorphoBlueCbEthUSDC_860_Base_1c21c59d"] = "morphobluecbethusdc_860_base_1c21c59d";
@@ -48,7 +48,7 @@ export declare const getFluidTokenData: (web3: Web3, network: NetworkNumber, tok
48
48
  withdrawRate: string;
49
49
  }>;
50
50
  export declare const getFluidDepositData: (web3: Web3, network: NetworkNumber, token: string, address: EthAddress) => Promise<{
51
- fTokenAddress: any;
51
+ fTokenAddress: string | undefined;
52
52
  fTokenSymbol: string;
53
53
  decimals: string;
54
54
  totalDeposited: string;
@@ -59,6 +59,18 @@ export declare const getFluidDepositData: (web3: Web3, network: NetworkNumber, t
59
59
  deposited: string;
60
60
  depositedShares: string;
61
61
  }>;
62
+ export declare const getAllUserEarnPositionsWithFTokens: (web3: Web3, network: NetworkNumber, user: EthAddress, mainnetWeb3: Web3) => Promise<{
63
+ fTokenAddress: string | undefined;
64
+ fTokenSymbol: string;
65
+ decimals: string;
66
+ totalDeposited: string;
67
+ withdrawable: string;
68
+ apy: string;
69
+ depositRate: string;
70
+ withdrawRate: string;
71
+ deposited: string;
72
+ depositedShares: string;
73
+ }[]>;
62
74
  export declare const getUserPositions: (web3: Web3, network: NetworkNumber, user: EthAddress, mainnetWeb3: Web3) => Promise<{
63
75
  marketData: FluidMarketData;
64
76
  userData: {
@@ -948,10 +948,7 @@ export const getFluidTokenData = (web3, network, token) => __awaiter(void 0, voi
948
948
  withdrawRate,
949
949
  };
950
950
  });
951
- export const getFluidDepositData = (web3, network, token, address) => __awaiter(void 0, void 0, void 0, function* () {
952
- const view = FluidViewContract(web3, network);
953
- const fTokenAddress = getFTokenAddress(token, network);
954
- const { fTokenData, userPosition } = yield view.methods.getUserEarnPositionWithFToken(fTokenAddress, address).call();
951
+ const parseFDepositTokenData = (fTokenData, userPosition, fTokenAddress) => {
955
952
  const supplyRate = new Dec(fTokenData.supplyRate).div(100).toString();
956
953
  const rewardsRate = new Dec(fTokenData.rewardsRate).div(1e12).toString();
957
954
  const decimals = fTokenData.decimals;
@@ -969,6 +966,26 @@ export const getFluidDepositData = (web3, network, token, address) => __awaiter(
969
966
  deposited: getEthAmountForDecimals(userPosition.underlyingAssets, decimals),
970
967
  depositedShares: getEthAmountForDecimals(userPosition.fTokenShares, decimals),
971
968
  };
969
+ };
970
+ export const getFluidDepositData = (web3, network, token, address) => __awaiter(void 0, void 0, void 0, function* () {
971
+ const view = FluidViewContract(web3, network);
972
+ const fTokenAddress = getFTokenAddress(token, network);
973
+ const { fTokenData, userPosition } = yield view.methods.getUserEarnPositionWithFToken(fTokenAddress, address).call();
974
+ return parseFDepositTokenData(fTokenData, userPosition, fTokenAddress);
975
+ });
976
+ export const getAllUserEarnPositionsWithFTokens = (web3, network, user, mainnetWeb3) => __awaiter(void 0, void 0, void 0, function* () {
977
+ const view = FluidViewContract(web3, network);
978
+ const { fTokensData, userPositions } = yield view.methods.getAllUserEarnPositionsWithFTokens(user).call();
979
+ const parsedRes = fTokensData.reduce((acc, fTokenData, i) => {
980
+ const userPosition = userPositions[i];
981
+ const deposited = userPosition === null || userPosition === void 0 ? void 0 : userPosition.underlyingAssets;
982
+ if (Number(deposited) > 0) {
983
+ const fTokenAddress = getFTokenAddress(fTokenData.symbol, network);
984
+ acc.push(parseFDepositTokenData(fTokenData, userPosition, fTokenAddress));
985
+ }
986
+ return acc;
987
+ }, []);
988
+ return parsedRes;
972
989
  });
973
990
  export const getUserPositions = (web3, network, user, mainnetWeb3) => __awaiter(void 0, void 0, void 0, function* () {
974
991
  const view = FluidViewContract(web3, network);