@defisaver/positions-sdk 2.1.11 → 2.1.12

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 (91) hide show
  1. package/.mocharc.json +4 -4
  2. package/.nvmrc +1 -1
  3. package/README.md +64 -64
  4. package/cjs/aaveV3/index.js +1 -1
  5. package/cjs/helpers/morphoBlueHelpers/index.js +66 -66
  6. package/cjs/staking/staking.d.ts +1 -1
  7. package/cjs/staking/staking.js +14 -13
  8. package/esm/aaveV3/index.js +1 -1
  9. package/esm/helpers/morphoBlueHelpers/index.js +66 -66
  10. package/esm/staking/staking.d.ts +1 -1
  11. package/esm/staking/staking.js +14 -13
  12. package/package.json +47 -47
  13. package/src/aaveV2/index.ts +240 -240
  14. package/src/aaveV3/index.ts +614 -614
  15. package/src/aaveV3/merit.ts +97 -97
  16. package/src/aaveV3/merkl.ts +74 -74
  17. package/src/claiming/aaveV3.ts +154 -154
  18. package/src/claiming/compV3.ts +22 -22
  19. package/src/claiming/index.ts +12 -12
  20. package/src/claiming/king.ts +66 -66
  21. package/src/claiming/morphoBlue.ts +118 -118
  22. package/src/claiming/spark.ts +225 -225
  23. package/src/compoundV2/index.ts +244 -244
  24. package/src/compoundV3/index.ts +274 -274
  25. package/src/config/contracts.ts +1251 -1251
  26. package/src/constants/index.ts +10 -10
  27. package/src/contracts.ts +120 -120
  28. package/src/curveUsd/index.ts +254 -254
  29. package/src/eulerV2/index.ts +324 -324
  30. package/src/exchange/index.ts +25 -25
  31. package/src/fluid/index.ts +1668 -1668
  32. package/src/helpers/aaveHelpers/index.ts +187 -187
  33. package/src/helpers/compoundHelpers/index.ts +283 -283
  34. package/src/helpers/curveUsdHelpers/index.ts +40 -40
  35. package/src/helpers/eulerHelpers/index.ts +222 -222
  36. package/src/helpers/fluidHelpers/index.ts +326 -326
  37. package/src/helpers/index.ts +10 -10
  38. package/src/helpers/liquityV2Helpers/index.ts +82 -82
  39. package/src/helpers/llamaLendHelpers/index.ts +53 -53
  40. package/src/helpers/makerHelpers/index.ts +52 -52
  41. package/src/helpers/morphoBlueHelpers/index.ts +396 -396
  42. package/src/helpers/sparkHelpers/index.ts +158 -158
  43. package/src/index.ts +47 -47
  44. package/src/liquity/index.ts +159 -159
  45. package/src/liquityV2/index.ts +657 -657
  46. package/src/llamaLend/index.ts +305 -305
  47. package/src/maker/index.ts +223 -223
  48. package/src/markets/aave/index.ts +116 -116
  49. package/src/markets/aave/marketAssets.ts +54 -54
  50. package/src/markets/compound/index.ts +238 -238
  51. package/src/markets/compound/marketsAssets.ts +97 -97
  52. package/src/markets/curveUsd/index.ts +69 -69
  53. package/src/markets/euler/index.ts +26 -26
  54. package/src/markets/fluid/index.ts +2460 -2460
  55. package/src/markets/index.ts +25 -25
  56. package/src/markets/liquityV2/index.ts +102 -102
  57. package/src/markets/llamaLend/contractAddresses.ts +141 -141
  58. package/src/markets/llamaLend/index.ts +235 -235
  59. package/src/markets/morphoBlue/index.ts +895 -895
  60. package/src/markets/spark/index.ts +29 -29
  61. package/src/markets/spark/marketAssets.ts +12 -12
  62. package/src/moneymarket/moneymarketCommonService.ts +80 -80
  63. package/src/morphoBlue/index.ts +274 -274
  64. package/src/portfolio/index.ts +570 -570
  65. package/src/services/priceService.ts +159 -159
  66. package/src/services/utils.ts +115 -115
  67. package/src/services/viem.ts +34 -34
  68. package/src/setup.ts +8 -8
  69. package/src/spark/index.ts +456 -456
  70. package/src/staking/eligibility.ts +53 -53
  71. package/src/staking/index.ts +1 -1
  72. package/src/staking/staking.ts +176 -172
  73. package/src/types/aave.ts +189 -189
  74. package/src/types/claiming.ts +109 -109
  75. package/src/types/common.ts +107 -107
  76. package/src/types/compound.ts +136 -136
  77. package/src/types/curveUsd.ts +123 -123
  78. package/src/types/euler.ts +175 -175
  79. package/src/types/fluid.ts +452 -452
  80. package/src/types/index.ts +13 -13
  81. package/src/types/liquity.ts +30 -30
  82. package/src/types/liquityV2.ts +126 -126
  83. package/src/types/llamaLend.ts +159 -159
  84. package/src/types/maker.ts +63 -63
  85. package/src/types/merit.ts +1 -1
  86. package/src/types/merkl.ts +70 -70
  87. package/src/types/morphoBlue.ts +194 -194
  88. package/src/types/portfolio.ts +60 -60
  89. package/src/types/spark.ts +133 -133
  90. package/src/umbrella/index.ts +69 -69
  91. package/src/umbrella/umbrellaUtils.ts +29 -29
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,64 +1,64 @@
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
- - [Compound V2](https://github.com/defisaver/defisaver-positions-sdk/tree/main/src/compoundV2)
10
- - [Compound V3](https://github.com/defisaver/defisaver-positions-sdk/tree/main/src/compoundV3)
11
- - [Liquity](https://github.com/defisaver/defisaver-positions-sdk/tree/main/src/liquity)
12
-
13
- ## Setup
14
- Supported Node version is v10.
15
-
16
- - run `npm install` (first time)
17
- - run `npm run build`
18
-
19
- `build` command will generate contracts and build ejs and esm folders
20
-
21
- ## How to use
22
- [All available imports](https://github.com/defisaver/defisaver-positions-sdk/blob/main/src/index.ts)
23
-
24
- This is a Compound V3 example, and every other protocol is similar
25
- ```js
26
- import { compoundV3 } from '@defisaver/positions-sdk';
27
-
28
-
29
- // every protocol has market data and user data getters
30
- const {
31
- getCompoundV3MarketsData,
32
- getCompoundV3AccountData,
33
- } = compoundV3;
34
-
35
- const provider = 'Your RPC provider';
36
-
37
- const user = '0x123...';
38
-
39
- const { assetsData } = await getCompoundV3MarketsData(
40
- provider, // rpc for the network you are using (note: can be tenderly or any other testnet rpc)
41
- 1, // network
42
- selectedMarket, // market object like in /src/markets/compound/index.ts
43
- provider, // this must be mainnet rpc - used for getting prices onchain and calculating apys
44
- );
45
-
46
- const userData = await getCompoundV3AccountData(
47
- provider,
48
- 1, // network
49
- userAddress, // EOA or DSProxy
50
- '', // proxy address of the user, or just empty string if checking for EOA
51
- {
52
- selectedMarket, // market object as in /src/markets/compound/index.ts
53
- assetsData,
54
- }
55
- );
56
- ```
57
-
58
- More examples found [here](https://github.com/defisaver/defisaver-positions-sdk/tree/main/tests)
59
-
60
- ## Testing
61
-
62
- `npm run test` - Run all tests
63
-
64
- `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
+ - [Compound V2](https://github.com/defisaver/defisaver-positions-sdk/tree/main/src/compoundV2)
10
+ - [Compound V3](https://github.com/defisaver/defisaver-positions-sdk/tree/main/src/compoundV3)
11
+ - [Liquity](https://github.com/defisaver/defisaver-positions-sdk/tree/main/src/liquity)
12
+
13
+ ## Setup
14
+ Supported Node version is v10.
15
+
16
+ - run `npm install` (first time)
17
+ - run `npm run build`
18
+
19
+ `build` command will generate contracts and build ejs and esm folders
20
+
21
+ ## How to use
22
+ [All available imports](https://github.com/defisaver/defisaver-positions-sdk/blob/main/src/index.ts)
23
+
24
+ This is a Compound V3 example, and every other protocol is similar
25
+ ```js
26
+ import { compoundV3 } from '@defisaver/positions-sdk';
27
+
28
+
29
+ // every protocol has market data and user data getters
30
+ const {
31
+ getCompoundV3MarketsData,
32
+ getCompoundV3AccountData,
33
+ } = compoundV3;
34
+
35
+ const provider = 'Your RPC provider';
36
+
37
+ const user = '0x123...';
38
+
39
+ const { assetsData } = await getCompoundV3MarketsData(
40
+ provider, // rpc for the network you are using (note: can be tenderly or any other testnet rpc)
41
+ 1, // network
42
+ selectedMarket, // market object like in /src/markets/compound/index.ts
43
+ provider, // this must be mainnet rpc - used for getting prices onchain and calculating apys
44
+ );
45
+
46
+ const userData = await getCompoundV3AccountData(
47
+ provider,
48
+ 1, // network
49
+ userAddress, // EOA or DSProxy
50
+ '', // proxy address of the user, or just empty string if checking for EOA
51
+ {
52
+ selectedMarket, // market object as in /src/markets/compound/index.ts
53
+ assetsData,
54
+ }
55
+ );
56
+ ```
57
+
58
+ More examples found [here](https://github.com/defisaver/defisaver-positions-sdk/tree/main/tests)
59
+
60
+ ## Testing
61
+
62
+ `npm run test` - Run all tests
63
+
64
+ `npm run test-single --name=your_test_name` - Run single test for specified name e.g. for MyTest.js test name is MyTest
@@ -166,7 +166,7 @@ function _getAaveV3MarketData(provider_1, network_1, market_1) {
166
166
  const rewardForMarket = rewardInfo === null || rewardInfo === void 0 ? void 0 : rewardInfo[_market.underlyingTokenAddress];
167
167
  const isStakingAsset = staking_1.STAKING_ASSETS.includes(_market.symbol);
168
168
  if (isStakingAsset) {
169
- const yieldApy = yield (0, staking_1.getStakingApy)(_market.symbol);
169
+ const yieldApy = yield (0, staking_1.getStakingApy)(_market.symbol, network);
170
170
  _market.supplyIncentives.push({
171
171
  apy: yieldApy,
172
172
  token: _market.symbol,
@@ -128,73 +128,73 @@ const getApyAfterValuesEstimation = (selectedMarket, actions, provider, network)
128
128
  });
129
129
  exports.getApyAfterValuesEstimation = getApyAfterValuesEstimation;
130
130
  const API_URL = 'https://blue-api.morpho.org/graphql';
131
- const MARKET_QUERY = `
132
- query MarketByUniqueKey($uniqueKey: String!, $chainId: Int!) {
133
- marketByUniqueKey(uniqueKey: $uniqueKey, chainId: $chainId) {
134
- reallocatableLiquidityAssets
135
- targetBorrowUtilization
136
- loanAsset {
137
- address
138
- decimals
139
- priceUsd
140
- }
141
- state {
142
- liquidityAssets
143
- borrowAssets
144
- supplyAssets
145
- }
146
- publicAllocatorSharedLiquidity {
147
- assets
148
- vault {
149
- address
150
- name
151
- }
152
- allocationMarket {
153
- uniqueKey
154
- loanAsset {
155
- address
156
- }
157
- collateralAsset {
158
- address
159
- }
160
- irmAddress
161
- oracle {
162
- address
163
- }
164
- lltv
165
- }
166
- }
167
- loanAsset {
168
- address
169
- }
170
- collateralAsset {
171
- address
172
- }
173
- oracle {
174
- address
175
- }
176
- irmAddress
177
- lltv
178
- }
179
- }
131
+ const MARKET_QUERY = `
132
+ query MarketByUniqueKey($uniqueKey: String!, $chainId: Int!) {
133
+ marketByUniqueKey(uniqueKey: $uniqueKey, chainId: $chainId) {
134
+ reallocatableLiquidityAssets
135
+ targetBorrowUtilization
136
+ loanAsset {
137
+ address
138
+ decimals
139
+ priceUsd
140
+ }
141
+ state {
142
+ liquidityAssets
143
+ borrowAssets
144
+ supplyAssets
145
+ }
146
+ publicAllocatorSharedLiquidity {
147
+ assets
148
+ vault {
149
+ address
150
+ name
151
+ }
152
+ allocationMarket {
153
+ uniqueKey
154
+ loanAsset {
155
+ address
156
+ }
157
+ collateralAsset {
158
+ address
159
+ }
160
+ irmAddress
161
+ oracle {
162
+ address
163
+ }
164
+ lltv
165
+ }
166
+ }
167
+ loanAsset {
168
+ address
169
+ }
170
+ collateralAsset {
171
+ address
172
+ }
173
+ oracle {
174
+ address
175
+ }
176
+ irmAddress
177
+ lltv
178
+ }
179
+ }
180
180
  `;
181
- const REWARDS_QUERY = `
182
- query MarketByUniqueKey($uniqueKey: String!, $chainId: Int!) {
183
- marketByUniqueKey(uniqueKey: $uniqueKey, chainId: $chainId) {
184
- uniqueKey
185
- state {
186
- rewards {
187
- amountPerSuppliedToken
188
- supplyApr
189
- amountPerBorrowedToken
190
- borrowApr
191
- asset {
192
- address
193
- }
194
- }
195
- }
196
- }
197
- }
181
+ const REWARDS_QUERY = `
182
+ query MarketByUniqueKey($uniqueKey: String!, $chainId: Int!) {
183
+ marketByUniqueKey(uniqueKey: $uniqueKey, chainId: $chainId) {
184
+ uniqueKey
185
+ state {
186
+ rewards {
187
+ amountPerSuppliedToken
188
+ supplyApr
189
+ amountPerBorrowedToken
190
+ borrowApr
191
+ asset {
192
+ address
193
+ }
194
+ }
195
+ }
196
+ }
197
+ }
198
198
  `;
199
199
  /**
200
200
  * Get reallocatable liquidity to a given market and target borrow utilization
@@ -1,7 +1,7 @@
1
1
  import memoize from 'memoizee';
2
2
  import { MMAssetsData, MMUsedAssets } from '../types/common';
3
3
  export declare const STAKING_ASSETS: string[];
4
- export declare const getStakingApy: ((asset: string) => Promise<string>) & memoize.Memoized<(asset: string) => Promise<string>>;
4
+ export declare const getStakingApy: ((asset: string, network?: number) => Promise<string>) & memoize.Memoized<(asset: string, network?: number) => Promise<string>>;
5
5
  export declare const calculateInterestEarned: (principal: string, interest: string, type: string, apy?: boolean) => number;
6
6
  export declare const calculateNetApy: ({ usedAssets, assetsData, optionalData, }: {
7
7
  usedAssets: MMUsedAssets;
@@ -15,6 +15,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
15
15
  exports.calculateNetApy = exports.calculateInterestEarned = exports.getStakingApy = exports.STAKING_ASSETS = void 0;
16
16
  const decimal_js_1 = __importDefault(require("decimal.js"));
17
17
  const memoizee_1 = __importDefault(require("memoizee"));
18
+ const common_1 = require("../types/common");
18
19
  const constants_1 = require("../constants");
19
20
  const utils_1 = require("../services/utils");
20
21
  const eligibility_1 = require("./eligibility");
@@ -53,10 +54,10 @@ const getSuperOETHApy = () => __awaiter(void 0, void 0, void 0, function* () {
53
54
  return '0';
54
55
  }
55
56
  });
56
- const getApyFromDfsApi = (asset) => __awaiter(void 0, void 0, void 0, function* () {
57
+ const getApyFromDfsApi = (asset_1, ...args_1) => __awaiter(void 0, [asset_1, ...args_1], void 0, function* (asset, network = common_1.NetworkNumber.Eth) {
57
58
  var _a;
58
59
  try {
59
- const res = yield fetch(`https://fe.defisaver.com/api/staking/apy?asset=${asset}`, { signal: AbortSignal.timeout(utils_1.DEFAULT_TIMEOUT) });
60
+ const res = yield fetch(`http://localhost:8888/api/staking/apy?asset=${asset}&network=${network}`, { signal: AbortSignal.timeout(utils_1.DEFAULT_TIMEOUT) });
60
61
  if (!res.ok)
61
62
  throw new Error(`Failed to fetch APY for ${asset}`);
62
63
  const data = yield res.json();
@@ -68,7 +69,7 @@ const getApyFromDfsApi = (asset) => __awaiter(void 0, void 0, void 0, function*
68
69
  }
69
70
  });
70
71
  exports.STAKING_ASSETS = ['cbETH', 'wstETH', 'cbETH', 'rETH', 'sDAI', 'weETH', 'sUSDe', 'osETH', 'ezETH', 'ETHx', 'rsETH', 'pufETH', 'wrsETH', 'wsuperOETHb', 'sUSDS', 'tETH', 'PT sUSDe Sep', 'PT USDe Sep', 'PT sUSDe Nov', 'PT USDe Nov', 'PT USDe Jan', 'PT sUSDe Jan', 'wrsETH', 'wstETH'];
71
- exports.getStakingApy = (0, memoizee_1.default)((asset) => __awaiter(void 0, void 0, void 0, function* () {
72
+ exports.getStakingApy = (0, memoizee_1.default)((asset_1, ...args_1) => __awaiter(void 0, [asset_1, ...args_1], void 0, function* (asset, network = common_1.NetworkNumber.Eth) {
72
73
  try {
73
74
  if (asset === 'stETH' || asset === 'wstETH')
74
75
  return yield getApyFromDfsApi('wstETH');
@@ -97,29 +98,29 @@ exports.getStakingApy = (0, memoizee_1.default)((asset) => __awaiter(void 0, voi
97
98
  if (asset === 'sUSDS')
98
99
  return yield getSsrApy();
99
100
  if (asset === 'PT eUSDe May')
100
- return yield getApyFromDfsApi('PT eUSDe May');
101
+ return yield getApyFromDfsApi('PT eUSDe May', network);
101
102
  if (asset === 'PT sUSDe July')
102
- return yield getApyFromDfsApi('PT sUSDe July');
103
+ return yield getApyFromDfsApi('PT sUSDe July', network);
103
104
  if (asset === 'PT USDe July')
104
- return yield getApyFromDfsApi('PT USDe July');
105
+ return yield getApyFromDfsApi('PT USDe July', network);
105
106
  if (asset === 'PT eUSDe Aug')
106
- return yield getApyFromDfsApi('PT eUSDe Aug');
107
+ return yield getApyFromDfsApi('PT eUSDe Aug', network);
107
108
  if (asset === 'PT sUSDe Sep')
108
- return yield getApyFromDfsApi('PT sUSDe Sep');
109
+ return yield getApyFromDfsApi('PT sUSDe Sep', network);
109
110
  if (asset === 'PT USDe Sep')
110
- return yield getApyFromDfsApi('PT USDe Sep');
111
+ return yield getApyFromDfsApi('PT USDe Sep', network);
111
112
  if (asset === 'tETH')
112
113
  return yield getApyFromDfsApi('tETH');
113
114
  if (asset === 'USDe')
114
115
  return yield getApyFromDfsApi('USDe');
115
116
  if (asset === 'PT sUSDe Nov')
116
- return yield getApyFromDfsApi('PT sUSDe Nov');
117
+ return yield getApyFromDfsApi('PT sUSDe Nov', network);
117
118
  if (asset === 'PT USDe Nov')
118
- return yield getApyFromDfsApi('PT USDe Nov');
119
+ return yield getApyFromDfsApi('PT USDe Nov', network);
119
120
  if (asset === 'PT USDe Jan')
120
- return yield getApyFromDfsApi('PT USDe Jan');
121
+ return yield getApyFromDfsApi('PT USDe Jan', network);
121
122
  if (asset === 'PT sUSDe Jan')
122
- return yield getApyFromDfsApi('PT sUSDe Jan');
123
+ return yield getApyFromDfsApi('PT sUSDe Jan', network);
123
124
  }
124
125
  catch (e) {
125
126
  console.error(`Failed to fetch APY for ${asset}`);
@@ -155,7 +155,7 @@ export function _getAaveV3MarketData(provider_1, network_1, market_1) {
155
155
  const rewardForMarket = rewardInfo === null || rewardInfo === void 0 ? void 0 : rewardInfo[_market.underlyingTokenAddress];
156
156
  const isStakingAsset = STAKING_ASSETS.includes(_market.symbol);
157
157
  if (isStakingAsset) {
158
- const yieldApy = yield getStakingApy(_market.symbol);
158
+ const yieldApy = yield getStakingApy(_market.symbol, network);
159
159
  _market.supplyIncentives.push({
160
160
  apy: yieldApy,
161
161
  token: _market.symbol,
@@ -118,73 +118,73 @@ export const getApyAfterValuesEstimation = (selectedMarket, actions, provider, n
118
118
  return { borrowRate, supplyRate };
119
119
  });
120
120
  const API_URL = 'https://blue-api.morpho.org/graphql';
121
- const MARKET_QUERY = `
122
- query MarketByUniqueKey($uniqueKey: String!, $chainId: Int!) {
123
- marketByUniqueKey(uniqueKey: $uniqueKey, chainId: $chainId) {
124
- reallocatableLiquidityAssets
125
- targetBorrowUtilization
126
- loanAsset {
127
- address
128
- decimals
129
- priceUsd
130
- }
131
- state {
132
- liquidityAssets
133
- borrowAssets
134
- supplyAssets
135
- }
136
- publicAllocatorSharedLiquidity {
137
- assets
138
- vault {
139
- address
140
- name
141
- }
142
- allocationMarket {
143
- uniqueKey
144
- loanAsset {
145
- address
146
- }
147
- collateralAsset {
148
- address
149
- }
150
- irmAddress
151
- oracle {
152
- address
153
- }
154
- lltv
155
- }
156
- }
157
- loanAsset {
158
- address
159
- }
160
- collateralAsset {
161
- address
162
- }
163
- oracle {
164
- address
165
- }
166
- irmAddress
167
- lltv
168
- }
169
- }
121
+ const MARKET_QUERY = `
122
+ query MarketByUniqueKey($uniqueKey: String!, $chainId: Int!) {
123
+ marketByUniqueKey(uniqueKey: $uniqueKey, chainId: $chainId) {
124
+ reallocatableLiquidityAssets
125
+ targetBorrowUtilization
126
+ loanAsset {
127
+ address
128
+ decimals
129
+ priceUsd
130
+ }
131
+ state {
132
+ liquidityAssets
133
+ borrowAssets
134
+ supplyAssets
135
+ }
136
+ publicAllocatorSharedLiquidity {
137
+ assets
138
+ vault {
139
+ address
140
+ name
141
+ }
142
+ allocationMarket {
143
+ uniqueKey
144
+ loanAsset {
145
+ address
146
+ }
147
+ collateralAsset {
148
+ address
149
+ }
150
+ irmAddress
151
+ oracle {
152
+ address
153
+ }
154
+ lltv
155
+ }
156
+ }
157
+ loanAsset {
158
+ address
159
+ }
160
+ collateralAsset {
161
+ address
162
+ }
163
+ oracle {
164
+ address
165
+ }
166
+ irmAddress
167
+ lltv
168
+ }
169
+ }
170
170
  `;
171
- const REWARDS_QUERY = `
172
- query MarketByUniqueKey($uniqueKey: String!, $chainId: Int!) {
173
- marketByUniqueKey(uniqueKey: $uniqueKey, chainId: $chainId) {
174
- uniqueKey
175
- state {
176
- rewards {
177
- amountPerSuppliedToken
178
- supplyApr
179
- amountPerBorrowedToken
180
- borrowApr
181
- asset {
182
- address
183
- }
184
- }
185
- }
186
- }
187
- }
171
+ const REWARDS_QUERY = `
172
+ query MarketByUniqueKey($uniqueKey: String!, $chainId: Int!) {
173
+ marketByUniqueKey(uniqueKey: $uniqueKey, chainId: $chainId) {
174
+ uniqueKey
175
+ state {
176
+ rewards {
177
+ amountPerSuppliedToken
178
+ supplyApr
179
+ amountPerBorrowedToken
180
+ borrowApr
181
+ asset {
182
+ address
183
+ }
184
+ }
185
+ }
186
+ }
187
+ }
188
188
  `;
189
189
  /**
190
190
  * Get reallocatable liquidity to a given market and target borrow utilization
@@ -1,7 +1,7 @@
1
1
  import memoize from 'memoizee';
2
2
  import { MMAssetsData, MMUsedAssets } from '../types/common';
3
3
  export declare const STAKING_ASSETS: string[];
4
- export declare const getStakingApy: ((asset: string) => Promise<string>) & memoize.Memoized<(asset: string) => Promise<string>>;
4
+ export declare const getStakingApy: ((asset: string, network?: number) => Promise<string>) & memoize.Memoized<(asset: string, network?: number) => Promise<string>>;
5
5
  export declare const calculateInterestEarned: (principal: string, interest: string, type: string, apy?: boolean) => number;
6
6
  export declare const calculateNetApy: ({ usedAssets, assetsData, optionalData, }: {
7
7
  usedAssets: MMUsedAssets;
@@ -9,6 +9,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
9
9
  };
10
10
  import Dec from 'decimal.js';
11
11
  import memoize from 'memoizee';
12
+ import { NetworkNumber, } from '../types/common';
12
13
  import { BLOCKS_IN_A_YEAR } from '../constants';
13
14
  import { DEFAULT_TIMEOUT } from '../services/utils';
14
15
  import { EligibilityMapping } from './eligibility';
@@ -47,10 +48,10 @@ const getSuperOETHApy = () => __awaiter(void 0, void 0, void 0, function* () {
47
48
  return '0';
48
49
  }
49
50
  });
50
- const getApyFromDfsApi = (asset) => __awaiter(void 0, void 0, void 0, function* () {
51
+ const getApyFromDfsApi = (asset_1, ...args_1) => __awaiter(void 0, [asset_1, ...args_1], void 0, function* (asset, network = NetworkNumber.Eth) {
51
52
  var _a;
52
53
  try {
53
- const res = yield fetch(`https://fe.defisaver.com/api/staking/apy?asset=${asset}`, { signal: AbortSignal.timeout(DEFAULT_TIMEOUT) });
54
+ const res = yield fetch(`http://localhost:8888/api/staking/apy?asset=${asset}&network=${network}`, { signal: AbortSignal.timeout(DEFAULT_TIMEOUT) });
54
55
  if (!res.ok)
55
56
  throw new Error(`Failed to fetch APY for ${asset}`);
56
57
  const data = yield res.json();
@@ -62,7 +63,7 @@ const getApyFromDfsApi = (asset) => __awaiter(void 0, void 0, void 0, function*
62
63
  }
63
64
  });
64
65
  export const STAKING_ASSETS = ['cbETH', 'wstETH', 'cbETH', 'rETH', 'sDAI', 'weETH', 'sUSDe', 'osETH', 'ezETH', 'ETHx', 'rsETH', 'pufETH', 'wrsETH', 'wsuperOETHb', 'sUSDS', 'tETH', 'PT sUSDe Sep', 'PT USDe Sep', 'PT sUSDe Nov', 'PT USDe Nov', 'PT USDe Jan', 'PT sUSDe Jan', 'wrsETH', 'wstETH'];
65
- export const getStakingApy = memoize((asset) => __awaiter(void 0, void 0, void 0, function* () {
66
+ export const getStakingApy = memoize((asset_1, ...args_1) => __awaiter(void 0, [asset_1, ...args_1], void 0, function* (asset, network = NetworkNumber.Eth) {
66
67
  try {
67
68
  if (asset === 'stETH' || asset === 'wstETH')
68
69
  return yield getApyFromDfsApi('wstETH');
@@ -91,29 +92,29 @@ export const getStakingApy = memoize((asset) => __awaiter(void 0, void 0, void 0
91
92
  if (asset === 'sUSDS')
92
93
  return yield getSsrApy();
93
94
  if (asset === 'PT eUSDe May')
94
- return yield getApyFromDfsApi('PT eUSDe May');
95
+ return yield getApyFromDfsApi('PT eUSDe May', network);
95
96
  if (asset === 'PT sUSDe July')
96
- return yield getApyFromDfsApi('PT sUSDe July');
97
+ return yield getApyFromDfsApi('PT sUSDe July', network);
97
98
  if (asset === 'PT USDe July')
98
- return yield getApyFromDfsApi('PT USDe July');
99
+ return yield getApyFromDfsApi('PT USDe July', network);
99
100
  if (asset === 'PT eUSDe Aug')
100
- return yield getApyFromDfsApi('PT eUSDe Aug');
101
+ return yield getApyFromDfsApi('PT eUSDe Aug', network);
101
102
  if (asset === 'PT sUSDe Sep')
102
- return yield getApyFromDfsApi('PT sUSDe Sep');
103
+ return yield getApyFromDfsApi('PT sUSDe Sep', network);
103
104
  if (asset === 'PT USDe Sep')
104
- return yield getApyFromDfsApi('PT USDe Sep');
105
+ return yield getApyFromDfsApi('PT USDe Sep', network);
105
106
  if (asset === 'tETH')
106
107
  return yield getApyFromDfsApi('tETH');
107
108
  if (asset === 'USDe')
108
109
  return yield getApyFromDfsApi('USDe');
109
110
  if (asset === 'PT sUSDe Nov')
110
- return yield getApyFromDfsApi('PT sUSDe Nov');
111
+ return yield getApyFromDfsApi('PT sUSDe Nov', network);
111
112
  if (asset === 'PT USDe Nov')
112
- return yield getApyFromDfsApi('PT USDe Nov');
113
+ return yield getApyFromDfsApi('PT USDe Nov', network);
113
114
  if (asset === 'PT USDe Jan')
114
- return yield getApyFromDfsApi('PT USDe Jan');
115
+ return yield getApyFromDfsApi('PT USDe Jan', network);
115
116
  if (asset === 'PT sUSDe Jan')
116
- return yield getApyFromDfsApi('PT sUSDe Jan');
117
+ return yield getApyFromDfsApi('PT sUSDe Jan', network);
117
118
  }
118
119
  catch (e) {
119
120
  console.error(`Failed to fetch APY for ${asset}`);