@defisaver/positions-sdk 2.1.42 → 2.1.43-dev-stats-test-dev

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (114) 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 +13 -0
  5. package/cjs/aaveV3/merit.js +1 -0
  6. package/cjs/aaveV3/merkl.js +1 -0
  7. package/cjs/helpers/morphoBlueHelpers/index.js +66 -66
  8. package/cjs/savings/morphoVaults/index.js +17 -17
  9. package/esm/aaveV3/index.js +13 -0
  10. package/esm/aaveV3/merit.js +1 -0
  11. package/esm/aaveV3/merkl.js +1 -0
  12. package/esm/helpers/morphoBlueHelpers/index.js +66 -66
  13. package/esm/savings/morphoVaults/index.js +17 -17
  14. package/package.json +48 -48
  15. package/src/aaveV2/index.ts +240 -240
  16. package/src/aaveV3/index.ts +634 -625
  17. package/src/aaveV3/merit.ts +98 -97
  18. package/src/aaveV3/merkl.ts +75 -74
  19. package/src/claiming/aaveV3.ts +154 -154
  20. package/src/claiming/compV3.ts +22 -22
  21. package/src/claiming/ethena.ts +61 -61
  22. package/src/claiming/index.ts +12 -12
  23. package/src/claiming/king.ts +66 -66
  24. package/src/claiming/morphoBlue.ts +118 -118
  25. package/src/claiming/spark.ts +225 -225
  26. package/src/compoundV2/index.ts +244 -244
  27. package/src/compoundV3/index.ts +274 -274
  28. package/src/config/contracts.ts +1295 -1295
  29. package/src/constants/index.ts +10 -10
  30. package/src/contracts.ts +171 -171
  31. package/src/curveUsd/index.ts +254 -254
  32. package/src/eulerV2/index.ts +324 -324
  33. package/src/exchange/index.ts +25 -25
  34. package/src/fluid/index.ts +1800 -1800
  35. package/src/helpers/aaveHelpers/index.ts +187 -187
  36. package/src/helpers/compoundHelpers/index.ts +283 -283
  37. package/src/helpers/curveUsdHelpers/index.ts +40 -40
  38. package/src/helpers/eulerHelpers/index.ts +222 -222
  39. package/src/helpers/fluidHelpers/index.ts +326 -326
  40. package/src/helpers/index.ts +10 -10
  41. package/src/helpers/liquityV2Helpers/index.ts +82 -82
  42. package/src/helpers/llamaLendHelpers/index.ts +53 -53
  43. package/src/helpers/makerHelpers/index.ts +52 -52
  44. package/src/helpers/morphoBlueHelpers/index.ts +396 -396
  45. package/src/helpers/sparkHelpers/index.ts +158 -158
  46. package/src/index.ts +49 -49
  47. package/src/liquity/index.ts +159 -159
  48. package/src/liquityV2/index.ts +703 -703
  49. package/src/llamaLend/index.ts +305 -305
  50. package/src/maker/index.ts +223 -223
  51. package/src/markets/aave/index.ts +118 -118
  52. package/src/markets/aave/marketAssets.ts +54 -54
  53. package/src/markets/compound/index.ts +243 -243
  54. package/src/markets/compound/marketsAssets.ts +97 -97
  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 +2900 -2900
  58. package/src/markets/index.ts +25 -25
  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 +971 -971
  63. package/src/markets/spark/index.ts +29 -29
  64. package/src/markets/spark/marketAssets.ts +12 -12
  65. package/src/moneymarket/moneymarketCommonService.ts +85 -85
  66. package/src/morphoBlue/index.ts +274 -274
  67. package/src/portfolio/index.ts +598 -598
  68. package/src/savings/index.ts +95 -95
  69. package/src/savings/makerDsr/index.ts +53 -53
  70. package/src/savings/makerDsr/options.ts +9 -9
  71. package/src/savings/morphoVaults/index.ts +80 -80
  72. package/src/savings/morphoVaults/options.ts +193 -193
  73. package/src/savings/skyOptions/index.ts +95 -95
  74. package/src/savings/skyOptions/options.ts +10 -10
  75. package/src/savings/sparkSavingsVaults/index.ts +60 -60
  76. package/src/savings/sparkSavingsVaults/options.ts +35 -35
  77. package/src/savings/yearnV3Vaults/index.ts +61 -61
  78. package/src/savings/yearnV3Vaults/options.ts +55 -55
  79. package/src/savings/yearnVaults/index.ts +73 -73
  80. package/src/savings/yearnVaults/options.ts +32 -32
  81. package/src/services/priceService.ts +278 -278
  82. package/src/services/utils.ts +115 -115
  83. package/src/services/viem.ts +34 -34
  84. package/src/setup.ts +8 -8
  85. package/src/spark/index.ts +458 -458
  86. package/src/staking/eligibility.ts +53 -53
  87. package/src/staking/index.ts +1 -1
  88. package/src/staking/staking.ts +186 -186
  89. package/src/types/aave.ts +196 -196
  90. package/src/types/claiming.ts +114 -114
  91. package/src/types/common.ts +107 -107
  92. package/src/types/compound.ts +144 -144
  93. package/src/types/curveUsd.ts +123 -123
  94. package/src/types/euler.ts +175 -175
  95. package/src/types/fluid.ts +483 -483
  96. package/src/types/index.ts +14 -14
  97. package/src/types/liquity.ts +30 -30
  98. package/src/types/liquityV2.ts +126 -126
  99. package/src/types/llamaLend.ts +159 -159
  100. package/src/types/maker.ts +63 -63
  101. package/src/types/merit.ts +1 -1
  102. package/src/types/merkl.ts +70 -70
  103. package/src/types/morphoBlue.ts +200 -200
  104. package/src/types/portfolio.ts +60 -60
  105. package/src/types/savings/index.ts +23 -23
  106. package/src/types/savings/makerDsr.ts +13 -13
  107. package/src/types/savings/morphoVaults.ts +32 -32
  108. package/src/types/savings/sky.ts +14 -14
  109. package/src/types/savings/sparkSavingsVaults.ts +15 -15
  110. package/src/types/savings/yearnV3Vaults.ts +17 -17
  111. package/src/types/savings/yearnVaults.ts +14 -14
  112. package/src/types/spark.ts +134 -134
  113. package/src/umbrella/index.ts +69 -69
  114. 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
@@ -59,6 +59,7 @@ exports.aaveV3EmodeCategoriesMapping = aaveV3EmodeCategoriesMapping;
59
59
  function _getAaveV3MarketData(provider_1, network_1, market_1) {
60
60
  return __awaiter(this, arguments, void 0, function* (provider, network, market, blockNumber = 'latest') {
61
61
  const _addresses = market.assets.map(a => (0, tokens_1.getAssetInfo)((0, utils_1.getWrappedNativeAssetFromUnwrapped)(a), network).address);
62
+ console.log('Fetched addresses');
62
63
  const isL2 = (0, utils_1.isLayer2Network)(network);
63
64
  const loanInfoContract = (0, contracts_1.AaveV3ViewContractViem)(provider, network);
64
65
  const aaveIncentivesContract = (0, contracts_1.AaveIncentiveDataProviderV3ContractViem)(provider, network);
@@ -73,6 +74,7 @@ function _getAaveV3MarketData(provider_1, network_1, market_1) {
73
74
  (0, merkl_1.getMerkleCampaigns)(network),
74
75
  (0, merit_1.getMeritCampaigns)(network, market.value),
75
76
  ]);
77
+ console.log('Fetched tokens, emodes, campaigns, incentives');
76
78
  isBorrowAllowed = (0, utils_1.isLayer2Network)(network) ? isBorrowAllowed : true;
77
79
  const eModeCategoriesData = {};
78
80
  for (let i = 0; i < eModesInfo.length; i++) {
@@ -90,6 +92,7 @@ function _getAaveV3MarketData(provider_1, network_1, market_1) {
90
92
  collateralAssets: [],
91
93
  };
92
94
  }
95
+ console.log('Parsed e modes info');
93
96
  if (networksWithIncentives.includes(network) && rewardInfo) {
94
97
  rewardInfo = rewardInfo.reduce((all, _market) => {
95
98
  // eslint-disable-next-line no-param-reassign
@@ -97,6 +100,7 @@ function _getAaveV3MarketData(provider_1, network_1, market_1) {
97
100
  return all;
98
101
  }, {});
99
102
  }
103
+ console.log('Parsed reward info');
100
104
  const assetsData = yield Promise.all(loanInfo
101
105
  .map((tokenMarket, i) => __awaiter(this, void 0, void 0, function* () {
102
106
  const symbol = market.assets[i];
@@ -158,6 +162,7 @@ function _getAaveV3MarketData(provider_1, network_1, market_1) {
158
162
  borrowIncentives: [],
159
163
  });
160
164
  })));
165
+ console.log('Parsed assets data');
161
166
  // Get incentives data
162
167
  yield Promise.all(assetsData.map((_market, index) => __awaiter(this, void 0, void 0, function* () {
163
168
  var _a, _b;
@@ -165,8 +170,10 @@ function _getAaveV3MarketData(provider_1, network_1, market_1) {
165
170
  // @ts-ignore
166
171
  const rewardForMarket = rewardInfo === null || rewardInfo === void 0 ? void 0 : rewardInfo[_market.underlyingTokenAddress];
167
172
  const isStakingAsset = staking_1.STAKING_ASSETS.includes(_market.symbol);
173
+ console.log('Processing market', _market.symbol);
168
174
  if (isStakingAsset) {
169
175
  const yieldApy = yield (0, staking_1.getStakingApy)(_market.symbol, network);
176
+ console.log('Got yield apy', yieldApy);
170
177
  _market.supplyIncentives.push({
171
178
  apy: yieldApy,
172
179
  token: _market.symbol,
@@ -194,6 +201,7 @@ function _getAaveV3MarketData(provider_1, network_1, market_1) {
194
201
  eligibilityId: identifier,
195
202
  });
196
203
  }
204
+ console.log('Processed merkle a incentives');
197
205
  const vTokenAddress = _market.vTokenAddress.toLowerCase(); // DEV: Should vTokenAddress be in AaveV3AssetData type?
198
206
  if ((_b = merkleRewardsMap[vTokenAddress]) === null || _b === void 0 ? void 0 : _b.borrow) {
199
207
  const { apy, rewardTokenSymbol, description, identifier, } = merkleRewardsMap[vTokenAddress].borrow;
@@ -205,6 +213,7 @@ function _getAaveV3MarketData(provider_1, network_1, market_1) {
205
213
  eligibilityId: identifier,
206
214
  });
207
215
  }
216
+ console.log('Processed merkle v incentives');
208
217
  if (meritRewardsMap.supply[_market.symbol]) {
209
218
  const { apy, rewardTokenSymbol, description } = meritRewardsMap.supply[_market.symbol];
210
219
  _market.supplyIncentives.push({
@@ -214,6 +223,7 @@ function _getAaveV3MarketData(provider_1, network_1, market_1) {
214
223
  description,
215
224
  });
216
225
  }
226
+ console.log('Processed merit supply incentives');
217
227
  if (meritRewardsMap.borrow[_market.symbol]) {
218
228
  const { apy, rewardTokenSymbol, description } = meritRewardsMap.borrow[_market.symbol];
219
229
  _market.borrowIncentives.push({
@@ -223,8 +233,10 @@ function _getAaveV3MarketData(provider_1, network_1, market_1) {
223
233
  description,
224
234
  });
225
235
  }
236
+ console.log('Processed merit borrow incentives');
226
237
  if (!rewardForMarket)
227
238
  return;
239
+ console.log('Reward for market', rewardForMarket);
228
240
  // @ts-ignore
229
241
  rewardForMarket.aIncentiveData.rewardsTokenInformation.forEach(supplyRewardData => {
230
242
  if (supplyRewardData) {
@@ -291,6 +303,7 @@ function _getAaveV3MarketData(provider_1, network_1, market_1) {
291
303
  collateralAssets: assetsData.map((a) => a.symbol),
292
304
  borrowAssets: assetsData.map((a) => a.symbol),
293
305
  };
306
+ console.log('Parsed payload');
294
307
  return { assetsData: payload, eModeCategoriesData };
295
308
  });
296
309
  }
@@ -68,6 +68,7 @@ const fetchMeritRewardsData = () => __awaiter(void 0, void 0, void 0, function*
68
68
  exports.fetchMeritRewardsData = fetchMeritRewardsData;
69
69
  const getMeritCampaigns = (chainId, market) => __awaiter(void 0, void 0, void 0, function* () {
70
70
  var _a;
71
+ console.log('Fetching Merit campaigns');
71
72
  const meritData = yield (0, exports.fetchMeritRewardsData)();
72
73
  const relevantCampaigns = {
73
74
  supply: {},
@@ -39,6 +39,7 @@ const formatAaveAsset = (_symbol) => {
39
39
  };
40
40
  exports.formatAaveAsset = formatAaveAsset;
41
41
  const getMerkleCampaigns = (chainId) => __awaiter(void 0, void 0, void 0, function* () {
42
+ console.log('Fetching Merkle campaigns');
42
43
  try {
43
44
  const res = yield fetch('https://api.merkl.xyz/v4/opportunities?mainProtocolId=aave', {
44
45
  signal: AbortSignal.timeout(utils_1.DEFAULT_TIMEOUT),
@@ -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
@@ -54,23 +54,23 @@ const morphoVaultsOptions = __importStar(require("./options"));
54
54
  exports.morphoVaultsOptions = morphoVaultsOptions;
55
55
  const viem_1 = require("../../services/viem");
56
56
  const contracts_1 = require("../../contracts");
57
- const vaultDataQuery = (vaultAddress) => `query vaultByAddress {
58
- vaultByAddress(chainId: 1, address: "${vaultAddress}") {
59
- id,
60
- dailyApy,
61
- dailyApys {
62
- apy, netApy
63
- },
64
- monthlyApys {
65
- apy, netApy
66
- },
67
- liquidity {
68
- underlying, usd,
69
- },
70
- asset {
71
- priceUsd
72
- }
73
- }
57
+ const vaultDataQuery = (vaultAddress) => `query vaultByAddress {
58
+ vaultByAddress(chainId: 1, address: "${vaultAddress}") {
59
+ id,
60
+ dailyApy,
61
+ dailyApys {
62
+ apy, netApy
63
+ },
64
+ monthlyApys {
65
+ apy, netApy
66
+ },
67
+ liquidity {
68
+ underlying, usd,
69
+ },
70
+ asset {
71
+ priceUsd
72
+ }
73
+ }
74
74
  }`;
75
75
  const MORPHO_BLUE_API = 'https://blue-api.morpho.org/graphql';
76
76
  const _getMorphoVaultData = (provider, network, morphoVault, accounts) => __awaiter(void 0, void 0, void 0, function* () {
@@ -48,6 +48,7 @@ export const aaveV3EmodeCategoriesMapping = (extractedState, usedAssets) => {
48
48
  export function _getAaveV3MarketData(provider_1, network_1, market_1) {
49
49
  return __awaiter(this, arguments, void 0, function* (provider, network, market, blockNumber = 'latest') {
50
50
  const _addresses = market.assets.map(a => getAssetInfo(getWrappedNativeAssetFromUnwrapped(a), network).address);
51
+ console.log('Fetched addresses');
51
52
  const isL2 = isLayer2Network(network);
52
53
  const loanInfoContract = AaveV3ViewContractViem(provider, network);
53
54
  const aaveIncentivesContract = AaveIncentiveDataProviderV3ContractViem(provider, network);
@@ -62,6 +63,7 @@ export function _getAaveV3MarketData(provider_1, network_1, market_1) {
62
63
  getMerkleCampaigns(network),
63
64
  getMeritCampaigns(network, market.value),
64
65
  ]);
66
+ console.log('Fetched tokens, emodes, campaigns, incentives');
65
67
  isBorrowAllowed = isLayer2Network(network) ? isBorrowAllowed : true;
66
68
  const eModeCategoriesData = {};
67
69
  for (let i = 0; i < eModesInfo.length; i++) {
@@ -79,6 +81,7 @@ export function _getAaveV3MarketData(provider_1, network_1, market_1) {
79
81
  collateralAssets: [],
80
82
  };
81
83
  }
84
+ console.log('Parsed e modes info');
82
85
  if (networksWithIncentives.includes(network) && rewardInfo) {
83
86
  rewardInfo = rewardInfo.reduce((all, _market) => {
84
87
  // eslint-disable-next-line no-param-reassign
@@ -86,6 +89,7 @@ export function _getAaveV3MarketData(provider_1, network_1, market_1) {
86
89
  return all;
87
90
  }, {});
88
91
  }
92
+ console.log('Parsed reward info');
89
93
  const assetsData = yield Promise.all(loanInfo
90
94
  .map((tokenMarket, i) => __awaiter(this, void 0, void 0, function* () {
91
95
  const symbol = market.assets[i];
@@ -147,6 +151,7 @@ export function _getAaveV3MarketData(provider_1, network_1, market_1) {
147
151
  borrowIncentives: [],
148
152
  });
149
153
  })));
154
+ console.log('Parsed assets data');
150
155
  // Get incentives data
151
156
  yield Promise.all(assetsData.map((_market, index) => __awaiter(this, void 0, void 0, function* () {
152
157
  var _a, _b;
@@ -154,8 +159,10 @@ export function _getAaveV3MarketData(provider_1, network_1, market_1) {
154
159
  // @ts-ignore
155
160
  const rewardForMarket = rewardInfo === null || rewardInfo === void 0 ? void 0 : rewardInfo[_market.underlyingTokenAddress];
156
161
  const isStakingAsset = STAKING_ASSETS.includes(_market.symbol);
162
+ console.log('Processing market', _market.symbol);
157
163
  if (isStakingAsset) {
158
164
  const yieldApy = yield getStakingApy(_market.symbol, network);
165
+ console.log('Got yield apy', yieldApy);
159
166
  _market.supplyIncentives.push({
160
167
  apy: yieldApy,
161
168
  token: _market.symbol,
@@ -183,6 +190,7 @@ export function _getAaveV3MarketData(provider_1, network_1, market_1) {
183
190
  eligibilityId: identifier,
184
191
  });
185
192
  }
193
+ console.log('Processed merkle a incentives');
186
194
  const vTokenAddress = _market.vTokenAddress.toLowerCase(); // DEV: Should vTokenAddress be in AaveV3AssetData type?
187
195
  if ((_b = merkleRewardsMap[vTokenAddress]) === null || _b === void 0 ? void 0 : _b.borrow) {
188
196
  const { apy, rewardTokenSymbol, description, identifier, } = merkleRewardsMap[vTokenAddress].borrow;
@@ -194,6 +202,7 @@ export function _getAaveV3MarketData(provider_1, network_1, market_1) {
194
202
  eligibilityId: identifier,
195
203
  });
196
204
  }
205
+ console.log('Processed merkle v incentives');
197
206
  if (meritRewardsMap.supply[_market.symbol]) {
198
207
  const { apy, rewardTokenSymbol, description } = meritRewardsMap.supply[_market.symbol];
199
208
  _market.supplyIncentives.push({
@@ -203,6 +212,7 @@ export function _getAaveV3MarketData(provider_1, network_1, market_1) {
203
212
  description,
204
213
  });
205
214
  }
215
+ console.log('Processed merit supply incentives');
206
216
  if (meritRewardsMap.borrow[_market.symbol]) {
207
217
  const { apy, rewardTokenSymbol, description } = meritRewardsMap.borrow[_market.symbol];
208
218
  _market.borrowIncentives.push({
@@ -212,8 +222,10 @@ export function _getAaveV3MarketData(provider_1, network_1, market_1) {
212
222
  description,
213
223
  });
214
224
  }
225
+ console.log('Processed merit borrow incentives');
215
226
  if (!rewardForMarket)
216
227
  return;
228
+ console.log('Reward for market', rewardForMarket);
217
229
  // @ts-ignore
218
230
  rewardForMarket.aIncentiveData.rewardsTokenInformation.forEach(supplyRewardData => {
219
231
  if (supplyRewardData) {
@@ -280,6 +292,7 @@ export function _getAaveV3MarketData(provider_1, network_1, market_1) {
280
292
  collateralAssets: assetsData.map((a) => a.symbol),
281
293
  borrowAssets: assetsData.map((a) => a.symbol),
282
294
  };
295
+ console.log('Parsed payload');
283
296
  return { assetsData: payload, eModeCategoriesData };
284
297
  });
285
298
  }
@@ -64,6 +64,7 @@ export const fetchMeritRewardsData = () => __awaiter(void 0, void 0, void 0, fun
64
64
  });
65
65
  export const getMeritCampaigns = (chainId, market) => __awaiter(void 0, void 0, void 0, function* () {
66
66
  var _a;
67
+ console.log('Fetching Merit campaigns');
67
68
  const meritData = yield fetchMeritRewardsData();
68
69
  const relevantCampaigns = {
69
70
  supply: {},
@@ -34,6 +34,7 @@ export const formatAaveAsset = (_symbol) => {
34
34
  return _symbol;
35
35
  };
36
36
  export const getMerkleCampaigns = (chainId) => __awaiter(void 0, void 0, void 0, function* () {
37
+ console.log('Fetching Merkle campaigns');
37
38
  try {
38
39
  const res = yield fetch('https://api.merkl.xyz/v4/opportunities?mainProtocolId=aave', {
39
40
  signal: AbortSignal.timeout(DEFAULT_TIMEOUT),