@defisaver/positions-sdk 2.1.161-portfolio-api-2-dev → 2.1.162-npm-token-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 (101) hide show
  1. package/cjs/aaveV3/index.d.ts +12 -2
  2. package/cjs/aaveV3/index.js +7 -1
  3. package/cjs/aaveV3/sgho.d.ts +16 -2
  4. package/cjs/claiming/aaveV3.d.ts +2 -2
  5. package/cjs/claiming/ethena.d.ts +1 -2
  6. package/cjs/claiming/king.d.ts +1 -2
  7. package/cjs/claiming/spark.d.ts +2 -2
  8. package/cjs/fluid/index.d.ts +49 -5
  9. package/cjs/helpers/aaveHelpers/index.d.ts +9 -1
  10. package/cjs/helpers/aaveHelpers/index.js +23 -6
  11. package/cjs/liquity/index.d.ts +12 -2
  12. package/cjs/liquityV2/index.d.ts +23 -3
  13. package/cjs/portfolio/index.d.ts +5 -5
  14. package/cjs/portfolio/index.js +36 -51
  15. package/cjs/savings/index.js +5 -2
  16. package/cjs/savings/morphoVaults/index.d.ts +1 -1
  17. package/cjs/savings/morphoVaults/index.js +56 -18
  18. package/cjs/savings/morphoVaults/options.d.ts +2 -0
  19. package/cjs/savings/morphoVaults/options.js +61 -1
  20. package/cjs/spark/index.js +1 -0
  21. package/cjs/types/aave.d.ts +3 -98
  22. package/cjs/types/compound.d.ts +2 -26
  23. package/cjs/types/curveUsd.d.ts +1 -9
  24. package/cjs/types/fluid.d.ts +0 -13
  25. package/cjs/types/index.d.ts +0 -1
  26. package/cjs/types/index.js +0 -1
  27. package/cjs/types/liquity.d.ts +0 -12
  28. package/cjs/types/liquityV2.d.ts +0 -24
  29. package/cjs/types/llamaLend.d.ts +1 -12
  30. package/cjs/types/morphoBlue.d.ts +0 -2
  31. package/cjs/types/portfolio.d.ts +10 -88
  32. package/cjs/types/savings/morphoVaults.d.ts +10 -2
  33. package/cjs/types/savings/morphoVaults.js +9 -1
  34. package/cjs/types/spark.d.ts +1 -21
  35. package/cjs/umbrella/index.d.ts +3 -2
  36. package/esm/aaveV3/index.d.ts +12 -2
  37. package/esm/aaveV3/index.js +7 -1
  38. package/esm/aaveV3/sgho.d.ts +16 -2
  39. package/esm/claiming/aaveV3.d.ts +2 -2
  40. package/esm/claiming/aaveV3.js +1 -1
  41. package/esm/claiming/ethena.d.ts +1 -2
  42. package/esm/claiming/king.d.ts +1 -2
  43. package/esm/claiming/spark.d.ts +2 -2
  44. package/esm/claiming/spark.js +1 -1
  45. package/esm/fluid/index.d.ts +49 -5
  46. package/esm/helpers/aaveHelpers/index.d.ts +9 -1
  47. package/esm/helpers/aaveHelpers/index.js +20 -5
  48. package/esm/liquity/index.d.ts +12 -2
  49. package/esm/liquityV2/index.d.ts +23 -3
  50. package/esm/portfolio/index.d.ts +5 -5
  51. package/esm/portfolio/index.js +36 -51
  52. package/esm/savings/index.js +5 -2
  53. package/esm/savings/morphoVaults/index.d.ts +1 -1
  54. package/esm/savings/morphoVaults/index.js +57 -19
  55. package/esm/savings/morphoVaults/options.d.ts +2 -0
  56. package/esm/savings/morphoVaults/options.js +61 -1
  57. package/esm/spark/index.js +1 -0
  58. package/esm/types/aave.d.ts +3 -98
  59. package/esm/types/compound.d.ts +2 -26
  60. package/esm/types/curveUsd.d.ts +1 -9
  61. package/esm/types/fluid.d.ts +0 -13
  62. package/esm/types/index.d.ts +0 -1
  63. package/esm/types/index.js +0 -1
  64. package/esm/types/liquity.d.ts +0 -12
  65. package/esm/types/liquityV2.d.ts +0 -24
  66. package/esm/types/llamaLend.d.ts +1 -12
  67. package/esm/types/morphoBlue.d.ts +0 -2
  68. package/esm/types/portfolio.d.ts +10 -88
  69. package/esm/types/savings/morphoVaults.d.ts +10 -2
  70. package/esm/types/savings/morphoVaults.js +8 -0
  71. package/esm/types/spark.d.ts +1 -21
  72. package/esm/umbrella/index.d.ts +3 -2
  73. package/package.json +3 -2
  74. package/src/aaveV3/index.ts +7 -3
  75. package/src/aaveV3/sgho.ts +17 -2
  76. package/src/claiming/aaveV3.ts +2 -4
  77. package/src/claiming/ethena.ts +5 -5
  78. package/src/claiming/king.ts +3 -3
  79. package/src/claiming/spark.ts +4 -6
  80. package/src/fluid/index.ts +3 -4
  81. package/src/helpers/aaveHelpers/index.ts +24 -7
  82. package/src/liquity/index.ts +2 -2
  83. package/src/liquityV2/index.ts +3 -3
  84. package/src/portfolio/index.ts +57 -76
  85. package/src/savings/index.ts +5 -2
  86. package/src/savings/morphoVaults/index.ts +73 -21
  87. package/src/savings/morphoVaults/options.ts +67 -1
  88. package/src/spark/index.ts +1 -0
  89. package/src/types/aave.ts +2 -104
  90. package/src/types/compound.ts +2 -38
  91. package/src/types/curveUsd.ts +1 -17
  92. package/src/types/fluid.ts +0 -14
  93. package/src/types/index.ts +1 -2
  94. package/src/types/liquity.ts +1 -13
  95. package/src/types/liquityV2.ts +1 -26
  96. package/src/types/llamaLend.ts +1 -19
  97. package/src/types/morphoBlue.ts +0 -3
  98. package/src/types/portfolio.ts +11 -111
  99. package/src/types/savings/morphoVaults.ts +11 -1
  100. package/src/types/spark.ts +1 -25
  101. package/src/umbrella/index.ts +1 -2
@@ -54,13 +54,8 @@ const ethena_1 = require("../claiming/ethena");
54
54
  const aaveV4_1 = require("../aaveV4");
55
55
  const uniswap_1 = require("../claiming/uniswap");
56
56
  function getPortfolioData(provider_1, network_1, defaultProvider_1, addresses_1) {
57
- return __awaiter(this, arguments, void 0, function* (provider, network, defaultProvider, addresses, isSim = false, options = {}) {
57
+ return __awaiter(this, arguments, void 0, function* (provider, network, defaultProvider, addresses, isSim = false) {
58
58
  const isMainnet = network === common_1.NetworkNumber.Eth;
59
- const includeStaking = options.staking !== false;
60
- const includeRewards = options.rewards !== false;
61
- // The addresses staking and rewards are read for: none when left out, so their fetches below make no calls.
62
- const stakingAddresses = includeStaking ? addresses : [];
63
- const rewardsAddresses = includeRewards ? addresses : [];
64
59
  const isFluidSupported = [common_1.NetworkNumber.Eth, common_1.NetworkNumber.Arb, common_1.NetworkNumber.Base, common_1.NetworkNumber.Plasma].includes(network);
65
60
  const morphoMarkets = Object.values((0, markets_1.MorphoBlueMarkets)(network)).filter((market) => market.chainIds.includes(network));
66
61
  const morphoMidnightMarkets = Object.values((0, markets_1.MorphoMidnightMarkets)(network)).filter((market) => market.chainIds.includes(network));
@@ -132,7 +127,7 @@ function getPortfolioData(provider_1, network_1, defaultProvider_1, addresses_1)
132
127
  };
133
128
  }
134
129
  // TODO: check default values, probably needed when fetching portfolio on unsupported networks
135
- for (const address of stakingAddresses) {
130
+ for (const address of addresses) {
136
131
  stakingPositions[address.toLowerCase()] = {
137
132
  aaveV3: {},
138
133
  morphoBlue: {},
@@ -146,20 +141,14 @@ function getPortfolioData(provider_1, network_1, defaultProvider_1, addresses_1)
146
141
  error: '',
147
142
  data: {},
148
143
  },
149
- // Set by the sBOLD/yBOLD fetch below, whether it succeeds or fails.
150
- liquityV2SBoldYBold: { error: '', data: null },
151
144
  };
152
- }
153
- for (const address of rewardsAddresses) {
154
- // merkl, spk, king and uniswap are set by their fetches below, whether they succeed or fail.
155
145
  rewardsData[address.toLowerCase()] = {
156
- merkl: { error: '', data: null },
146
+ merkl: {},
157
147
  aaveV3: {},
158
148
  spark: {},
159
- spk: { error: '', data: null },
160
- king: { error: '', data: null },
149
+ spk: {},
150
+ king: {},
161
151
  ethena: {},
162
- uniswap: { error: '', data: null },
163
152
  };
164
153
  }
165
154
  yield Promise.allSettled([
@@ -235,7 +224,7 @@ function getPortfolioData(provider_1, network_1, defaultProvider_1, addresses_1)
235
224
  }
236
225
  })),
237
226
  // === STAKING DATA (independent of market data) ===
238
- ...stakingAddresses.map((address) => __awaiter(this, void 0, void 0, function* () {
227
+ ...addresses.map((address) => __awaiter(this, void 0, void 0, function* () {
239
228
  try {
240
229
  if (!isFluidSupported)
241
230
  return;
@@ -246,7 +235,7 @@ function getPortfolioData(provider_1, network_1, defaultProvider_1, addresses_1)
246
235
  stakingPositions[address.toLowerCase()].fluid = { error: `Error fetching Fluid lend data for address ${address}`, data: null };
247
236
  }
248
237
  })),
249
- ...stakingAddresses.map((address) => __awaiter(this, void 0, void 0, function* () {
238
+ ...addresses.map((address) => __awaiter(this, void 0, void 0, function* () {
250
239
  try {
251
240
  if (!isMainnet)
252
241
  return;
@@ -257,7 +246,7 @@ function getPortfolioData(provider_1, network_1, defaultProvider_1, addresses_1)
257
246
  stakingPositions[address.toLowerCase()].liquity = { error: `Error fetching Liquity staking data for address ${address}`, data: null };
258
247
  }
259
248
  })),
260
- ...stakingAddresses.map((address) => __awaiter(this, void 0, void 0, function* () {
249
+ ...addresses.map((address) => __awaiter(this, void 0, void 0, function* () {
261
250
  try {
262
251
  if (!isMainnet)
263
252
  return;
@@ -268,7 +257,7 @@ function getPortfolioData(provider_1, network_1, defaultProvider_1, addresses_1)
268
257
  stakingPositions[address.toLowerCase()].aaveV3 = { error: `Error fetching Aave V3 staking data for address ${address}`, data: null };
269
258
  }
270
259
  })),
271
- ...stakingAddresses.map((address) => __awaiter(this, void 0, void 0, function* () {
260
+ ...addresses.map((address) => __awaiter(this, void 0, void 0, function* () {
272
261
  try {
273
262
  if (!isMainnet)
274
263
  return;
@@ -280,7 +269,7 @@ function getPortfolioData(provider_1, network_1, defaultProvider_1, addresses_1)
280
269
  }
281
270
  })),
282
271
  // Liquity V2 staking
283
- ...liquityV2MarketsStaking.map(market => stakingAddresses.map((address) => __awaiter(this, void 0, void 0, function* () {
272
+ ...liquityV2MarketsStaking.map(market => addresses.map((address) => __awaiter(this, void 0, void 0, function* () {
284
273
  try {
285
274
  if (!isMainnet) {
286
275
  stakingPositions[address.toLowerCase()].liquityV2[market.value] = { error: '', data: null };
@@ -299,13 +288,13 @@ function getPortfolioData(provider_1, network_1, defaultProvider_1, addresses_1)
299
288
  (() => __awaiter(this, void 0, void 0, function* () {
300
289
  try {
301
290
  if (!isMainnet) {
302
- for (const address of rewardsAddresses) {
291
+ for (const address of addresses) {
303
292
  rewardsData[address.toLowerCase()].king = { error: '', data: [] };
304
293
  }
305
294
  return;
306
295
  }
307
- const kingRewards = yield (0, king_1.getKingRewards)(client, network, rewardsAddresses);
308
- for (const address of rewardsAddresses) {
296
+ const kingRewards = yield (0, king_1.getKingRewards)(client, network, addresses);
297
+ for (const address of addresses) {
309
298
  const lowerAddress = address.toLowerCase();
310
299
  rewardsData[lowerAddress].king = {
311
300
  error: '',
@@ -315,7 +304,7 @@ function getPortfolioData(provider_1, network_1, defaultProvider_1, addresses_1)
315
304
  }
316
305
  catch (error) {
317
306
  console.error('Error fetching King rewards data in batch:', error);
318
- for (const address of rewardsAddresses) {
307
+ for (const address of addresses) {
319
308
  rewardsData[address.toLowerCase()].king = {
320
309
  error: 'Error fetching King rewards data in batch',
321
310
  data: null,
@@ -327,13 +316,13 @@ function getPortfolioData(provider_1, network_1, defaultProvider_1, addresses_1)
327
316
  (() => __awaiter(this, void 0, void 0, function* () {
328
317
  try {
329
318
  if (!isMainnet) {
330
- for (const address of rewardsAddresses) {
319
+ for (const address of addresses) {
331
320
  rewardsData[address.toLowerCase()].uniswap = { error: '', data: [] };
332
321
  }
333
322
  return;
334
323
  }
335
- const uniswapRewards = yield (0, uniswap_1.getUniswapRewards)(client, network, rewardsAddresses);
336
- for (const address of rewardsAddresses) {
324
+ const uniswapRewards = yield (0, uniswap_1.getUniswapRewards)(client, network, addresses);
325
+ for (const address of addresses) {
337
326
  const lowerAddress = address.toLowerCase();
338
327
  rewardsData[lowerAddress].uniswap = {
339
328
  error: '',
@@ -343,7 +332,7 @@ function getPortfolioData(provider_1, network_1, defaultProvider_1, addresses_1)
343
332
  }
344
333
  catch (error) {
345
334
  console.error('Error fetching Uniswap rewards data in batch:', error);
346
- for (const address of rewardsAddresses) {
335
+ for (const address of addresses) {
347
336
  rewardsData[address.toLowerCase()].uniswap = {
348
337
  error: 'Error fetching Uniswap rewards data in batch',
349
338
  data: null,
@@ -351,7 +340,7 @@ function getPortfolioData(provider_1, network_1, defaultProvider_1, addresses_1)
351
340
  }
352
341
  }
353
342
  }))(),
354
- ...sparkMarkets.map((market) => rewardsAddresses.map((address) => __awaiter(this, void 0, void 0, function* () {
343
+ ...sparkMarkets.map((market) => addresses.map((address) => __awaiter(this, void 0, void 0, function* () {
355
344
  try {
356
345
  if (!isMainnet) {
357
346
  rewardsData[address.toLowerCase()].spark[market.value] = { error: '', data: [] };
@@ -365,7 +354,7 @@ function getPortfolioData(provider_1, network_1, defaultProvider_1, addresses_1)
365
354
  rewardsData[address.toLowerCase()].spark[market.value] = { error: `Error fetching Spark rewards data for address ${address}`, data: null };
366
355
  }
367
356
  }))).flat(),
368
- ...rewardsAddresses.map((address) => __awaiter(this, void 0, void 0, function* () {
357
+ ...addresses.map((address) => __awaiter(this, void 0, void 0, function* () {
369
358
  try {
370
359
  const merklData = yield (0, aaveV3_2.getMerklUnclaimedRewards)(address, network);
371
360
  rewardsData[address.toLowerCase()].merkl = { error: '', data: merklData };
@@ -375,28 +364,27 @@ function getPortfolioData(provider_1, network_1, defaultProvider_1, addresses_1)
375
364
  rewardsData[address.toLowerCase()].merkl = { error: `Error fetching Merkl rewards data for address ${address}`, data: null };
376
365
  }
377
366
  })),
378
- ...aaveV3Markets.map(market => rewardsAddresses.map((address) => __awaiter(this, void 0, void 0, function* () {
367
+ ...aaveV3Markets.map(market => addresses.map((address) => __awaiter(this, void 0, void 0, function* () {
379
368
  try {
380
369
  const aaveData = yield (0, aaveV3_2.getUnclaimedRewardsForAllMarkets)(client, network, address, market.providerAddress);
381
370
  rewardsData[address.toLowerCase()].aaveV3[market.value] = { error: '', data: aaveData };
382
371
  }
383
372
  catch (error) {
384
373
  console.error(`Error fetching Aave V3 Merit rewards data for address ${address}:`, error);
385
- // This market only: the other markets keep their rewards.
386
- rewardsData[address.toLowerCase()].aaveV3[market.value] = { error: `Error fetching Aave V3 rewards data for address ${address} on market ${market.value}`, data: null };
374
+ rewardsData[address.toLowerCase()].aaveV3 = { error: `Error fetching Aave V3 rewards data for address ${address}`, data: null };
387
375
  }
388
376
  }))).flat(),
389
377
  // Batch Spark Airdrop rewards
390
378
  (() => __awaiter(this, void 0, void 0, function* () {
391
379
  try {
392
380
  if (!isMainnet) {
393
- for (const address of rewardsAddresses) {
381
+ for (const address of addresses) {
394
382
  rewardsData[address.toLowerCase()].spk = { error: '', data: [] };
395
383
  }
396
384
  return;
397
385
  }
398
- const sparkAirdropRewards = yield (0, spark_2.fetchSparkAirdropRewards)(client, network, rewardsAddresses);
399
- for (const address of rewardsAddresses) {
386
+ const sparkAirdropRewards = yield (0, spark_2.fetchSparkAirdropRewards)(client, network, addresses);
387
+ for (const address of addresses) {
400
388
  const lowerAddress = address.toLowerCase();
401
389
  rewardsData[lowerAddress].spk = {
402
390
  error: '',
@@ -406,7 +394,7 @@ function getPortfolioData(provider_1, network_1, defaultProvider_1, addresses_1)
406
394
  }
407
395
  catch (error) {
408
396
  console.error('Error fetching Spark Airdrop rewards data in batch:', error);
409
- for (const address of rewardsAddresses) {
397
+ for (const address of addresses) {
410
398
  rewardsData[address.toLowerCase()].spk = {
411
399
  error: 'Error fetching Spark Airdrop rewards data in batch',
412
400
  data: null,
@@ -419,8 +407,8 @@ function getPortfolioData(provider_1, network_1, defaultProvider_1, addresses_1)
419
407
  if (!isMainnet) {
420
408
  return;
421
409
  }
422
- const ethenaAirdropRewards = yield (0, ethena_1.fetchEthenaAirdropRewards)(rewardsAddresses);
423
- for (const address of rewardsAddresses) {
410
+ const ethenaAirdropRewards = yield (0, ethena_1.fetchEthenaAirdropRewards)(addresses);
411
+ for (const address of addresses) {
424
412
  const lowerAddress = address.toLowerCase();
425
413
  rewardsData[lowerAddress].ethena = {
426
414
  error: '',
@@ -430,7 +418,7 @@ function getPortfolioData(provider_1, network_1, defaultProvider_1, addresses_1)
430
418
  }
431
419
  catch (error) {
432
420
  console.error('Error fetching Ethena Airdrop rewards data:', error);
433
- for (const address of rewardsAddresses) {
421
+ for (const address of addresses) {
434
422
  rewardsData[address.toLowerCase()].ethena = {
435
423
  error: 'Error fetching Ethena Airdrop rewards data in batch',
436
424
  data: null,
@@ -466,16 +454,15 @@ function getPortfolioData(provider_1, network_1, defaultProvider_1, addresses_1)
466
454
  try {
467
455
  const [accDataPromise, earnDataPromise] = yield Promise.allSettled([
468
456
  (0, morphoBlue_1._getMorphoBlueAccountData)(client, network, address, market, morphoMarketsData[market.value]),
469
- includeStaking ? (0, morphoBlue_1.getMorphoEarn)(client, network, address, market, morphoMarketsData[market.value]) : null,
457
+ (0, morphoBlue_1.getMorphoEarn)(client, network, address, market, morphoMarketsData[market.value]),
470
458
  ]);
471
459
  if (accDataPromise.status === 'rejected') {
472
460
  console.error(`Error fetching MorphoBlue account data for address ${address} on market ${market.value}:`, accDataPromise.reason);
473
461
  positions[address.toLowerCase()].morphoBlue[market.value] = { error: `Error fetching MorphoBlue account data for address ${address} on market ${market.value}`, data: null };
474
462
  }
475
463
  if (earnDataPromise.status === 'rejected') {
476
- // An Earn failure belongs to the staking entry: the lending position is not the one that failed.
477
- console.error(`Error fetching MorphoBlue earn data for address ${address} on market ${market.value}:`, earnDataPromise.reason);
478
- stakingPositions[address.toLowerCase()].morphoBlue[market.value] = { error: `Error fetching MorphoBlue earn data for address ${address} on market ${market.value}`, data: null };
464
+ console.error(`Error fetching MorphoBlue account data for address ${address} on market ${market.value}:`, earnDataPromise.reason);
465
+ positions[address.toLowerCase()].morphoBlue[market.value] = { error: `Error fetching MorphoBlue account data for address ${address} on market ${market.value}`, data: null };
479
466
  }
480
467
  if (accDataPromise.status !== 'rejected') {
481
468
  const accData = accDataPromise.value;
@@ -534,11 +521,9 @@ function getPortfolioData(provider_1, network_1, defaultProvider_1, addresses_1)
534
521
  positions[address.toLowerCase()].spark[market.value] = { error: `Error fetching Spark account data for address ${address} on market ${market.value}`, data: null };
535
522
  }
536
523
  }))).flat(),
537
- // flatMap, not map: each CDP's fetch has to be one of the awaited promises, or getPortfolioData can return
538
- // before a vault's data lands and the vault is missing from the result.
539
- ...addresses.flatMap((address) => {
524
+ ...addresses.map((address) => __awaiter(this, void 0, void 0, function* () {
540
525
  var _a;
541
- return ((_a = makerCdps[address.toLowerCase()]) !== null && _a !== void 0 ? _a : []).map((cdpInfo) => __awaiter(this, void 0, void 0, function* () {
526
+ return (_a = makerCdps[address.toLowerCase()]) === null || _a === void 0 ? void 0 : _a.map((cdpInfo) => __awaiter(this, void 0, void 0, function* () {
542
527
  try {
543
528
  const cdpData = yield (0, maker_1._getMakerCdpData)(client, network, cdpInfo);
544
529
  if (cdpData) {
@@ -550,7 +535,7 @@ function getPortfolioData(provider_1, network_1, defaultProvider_1, addresses_1)
550
535
  positions[address.toLowerCase()].maker[cdpInfo.id] = { error: `Error fetching Maker CDP data for address ${address} with ID ${cdpInfo.id}`, data: null };
551
536
  }
552
537
  }));
553
- }),
538
+ })).flat(),
554
539
  ...aaveV2Markets.map((market) => addresses.map((address) => __awaiter(this, void 0, void 0, function* () {
555
540
  try {
556
541
  const accData = yield (0, aaveV2_1._getAaveV2AccountData)(client, network, address, aaveV2MarketsData[market.value].assetsData, market);
@@ -611,7 +596,7 @@ function getPortfolioData(provider_1, network_1, defaultProvider_1, addresses_1)
611
596
  }
612
597
  }))).flat(),
613
598
  // liquity sBold/yBold and staking options
614
- ...stakingAddresses.map((address) => __awaiter(this, void 0, void 0, function* () {
599
+ ...addresses.map((address) => __awaiter(this, void 0, void 0, function* () {
615
600
  try {
616
601
  if (!isMainnet) {
617
602
  stakingPositions[address.toLowerCase()].liquityV2SBoldYBold = { error: '', data: null };
@@ -60,7 +60,8 @@ exports.summerVaults = summerVaults;
60
60
  const yearnV3Vaults = __importStar(require("./yearnV3Vaults"));
61
61
  exports.yearnV3Vaults = yearnV3Vaults;
62
62
  const getSavingsData = (provider, network, accounts) => __awaiter(void 0, void 0, void 0, function* () {
63
- const morphoVaultsList = Object.keys(morphoVaults.morphoVaultsOptions.MORPHO_VAULTS);
63
+ const morphoVaultsList = Object.keys(morphoVaults.morphoVaultsOptions.MORPHO_VAULTS)
64
+ .filter((key) => morphoVaults.morphoVaultsOptions.getMorphoVault(key).network === network);
64
65
  const yearnVaultsList = Object.keys(yearnVaults.yearnVaultsOptions.YEARN_VAULTS);
65
66
  const sparkSavingsVaultsList = Object.keys(sparkSavingsVaults.sparkSavingsVaultsOptions.SPARK_SAVINGS_VAULTS);
66
67
  const yearnV3VaultsList = Object.keys(yearnV3Vaults.yearnV3VaultsOptions.YEARN_V3_VAULTS);
@@ -68,7 +69,7 @@ const getSavingsData = (provider, network, accounts) => __awaiter(void 0, void 0
68
69
  .filter((key) => summerVaults.summerVaultsOptions.getSummerVault(key).network === network);
69
70
  const savingsData = {};
70
71
  yield Promise.all([
71
- ...(network === common_1.NetworkNumber.Eth ? [
72
+ ...(morphoVaultsList.length ? [
72
73
  (() => __awaiter(void 0, void 0, void 0, function* () {
73
74
  try {
74
75
  const vaults = morphoVaultsList.map((vaultKey) => morphoVaults.morphoVaultsOptions.getMorphoVault(vaultKey));
@@ -79,6 +80,8 @@ const getSavingsData = (provider, network, accounts) => __awaiter(void 0, void 0
79
80
  console.error('[getSavingsData] Error fetching morpho vaults:', err);
80
81
  }
81
82
  }))(),
83
+ ] : []),
84
+ ...(network === common_1.NetworkNumber.Eth ? [
82
85
  ...yearnVaultsList.map((vaultKey) => __awaiter(void 0, void 0, void 0, function* () {
83
86
  try {
84
87
  const vault = yearnVaults.yearnVaultsOptions.getYearnVault(vaultKey);
@@ -3,7 +3,7 @@ import * as morphoVaultsOptions from './options';
3
3
  import { EthAddress, EthereumProvider, NetworkNumber, MorphoVault, MorphoVaultType, SavingsVaultData } from '../../types';
4
4
  export { morphoVaultsOptions, };
5
5
  /**
6
- * Fetches liquidity for all given vaults in a single API request (chunked if over the page cap),
6
+ * Fetches liquidity for all given vaults, one API request per vault version (chunked if over the page cap),
7
7
  * returned as a map keyed by lowercased vault address. A vault missing from the API response is
8
8
  * absent from the map.
9
9
  */
@@ -53,42 +53,50 @@ const graphql_request_1 = require("graphql-request");
53
53
  const tokens_1 = require("@defisaver/tokens");
54
54
  const morphoVaultsOptions = __importStar(require("./options"));
55
55
  exports.morphoVaultsOptions = morphoVaultsOptions;
56
+ const types_1 = require("../../types");
56
57
  const viem_1 = require("../../services/viem");
57
58
  const contracts_1 = require("../../contracts");
58
59
  const constants_1 = require("../../constants");
59
60
  // Morpho API caps list page size at 100 items
60
61
  const MORPHO_API_PAGE_SIZE = 100;
61
- const vaultsLiquidityQuery = `
62
+ const buildLiquidityQuery = (listField) => `
62
63
  query VaultsLiquidity($addresses: [String!], $chainIds: [Int!]) {
63
- vaults(first: ${MORPHO_API_PAGE_SIZE}, where: { address_in: $addresses, chainId_in: $chainIds }) {
64
+ ${listField}(first: ${MORPHO_API_PAGE_SIZE}, where: { address_in: $addresses, chainId_in: $chainIds }) {
64
65
  items {
65
66
  address
66
- liquidity {
67
- underlying
68
- }
67
+ liquidity${listField === 'vaults' ? ' {\n underlying\n }' : ''}
69
68
  }
70
69
  }
71
70
  }`;
71
+ const liquidityQueries = {
72
+ [types_1.MorphoVaultVersion.V1]: { field: 'vaults', query: buildLiquidityQuery('vaults') },
73
+ [types_1.MorphoVaultVersion.V2]: { field: 'vaultV2s', query: buildLiquidityQuery('vaultV2s') },
74
+ };
72
75
  /**
73
- * Fetches liquidity for all given vaults in a single API request (chunked if over the page cap),
76
+ * Fetches liquidity for all given vaults, one API request per vault version (chunked if over the page cap),
74
77
  * returned as a map keyed by lowercased vault address. A vault missing from the API response is
75
78
  * absent from the map.
76
79
  */
77
80
  const fetchMorphoVaultsLiquidity = (network, vaults) => __awaiter(void 0, void 0, void 0, function* () {
78
- const chunks = [];
79
- for (let i = 0; i < vaults.length; i += MORPHO_API_PAGE_SIZE)
80
- chunks.push(vaults.slice(i, i + MORPHO_API_PAGE_SIZE));
81
+ const requests = [];
82
+ [types_1.MorphoVaultVersion.V1, types_1.MorphoVaultVersion.V2].forEach((version) => {
83
+ const versionVaults = vaults.filter((vault) => vault.version === version);
84
+ for (let i = 0; i < versionVaults.length; i += MORPHO_API_PAGE_SIZE)
85
+ requests.push({ version, chunk: versionVaults.slice(i, i + MORPHO_API_PAGE_SIZE) });
86
+ });
81
87
  const liquidityByAddress = {};
82
- yield Promise.all(chunks.map((chunk) => __awaiter(void 0, void 0, void 0, function* () {
83
- const data = yield (0, graphql_request_1.request)(constants_1.MORPHO_API_URL, vaultsLiquidityQuery, {
88
+ yield Promise.all(requests.map((_a) => __awaiter(void 0, [_a], void 0, function* ({ version, chunk }) {
89
+ const { field, query } = liquidityQueries[version];
90
+ const data = yield (0, graphql_request_1.request)(constants_1.MORPHO_API_URL, query, {
84
91
  addresses: chunk.map((vault) => vault.address),
85
92
  chainIds: [network],
86
93
  // the BigInt scalar serializes as a JSON number when it fits in Number.MAX_SAFE_INTEGER, a string otherwise
87
94
  });
88
- (data.vaults.items || []).forEach((item) => {
89
- var _a, _b;
90
- if (((_a = item === null || item === void 0 ? void 0 : item.liquidity) === null || _a === void 0 ? void 0 : _a.underlying) !== undefined && ((_b = item.liquidity) === null || _b === void 0 ? void 0 : _b.underlying) !== null) {
91
- liquidityByAddress[item.address.toLowerCase()] = String(item.liquidity.underlying);
95
+ (data[field].items || []).forEach((item) => {
96
+ // V1 exposes liquidity as { underlying }, V2 as a plain BigInt scalar
97
+ const underlying = (item === null || item === void 0 ? void 0 : item.liquidity) !== null && typeof (item === null || item === void 0 ? void 0 : item.liquidity) === 'object' ? item.liquidity.underlying : item === null || item === void 0 ? void 0 : item.liquidity;
98
+ if (underlying !== undefined && underlying !== null) {
99
+ liquidityByAddress[item.address.toLowerCase()] = String(underlying);
92
100
  }
93
101
  });
94
102
  })));
@@ -102,7 +110,19 @@ const getBatchedViemProvider = (provider, network) => (0, viem_1.getViemProvider
102
110
  },
103
111
  },
104
112
  });
105
- const getMorphoVaultChainData = (provider, morphoVault, accounts) => __awaiter(void 0, void 0, void 0, function* () {
113
+ // Vault V2 is ERC-4626 but has no decimals offset, so shares are converted with convertToAssets
114
+ const getMorphoVaultV2ChainData = (provider, morphoVault, accounts) => __awaiter(void 0, void 0, void 0, function* () {
115
+ const vaultContract = (0, contracts_1.getErc4626ContractViem)(provider, morphoVault.address);
116
+ const [totalAssets, suppliedAssets] = yield Promise.all([
117
+ vaultContract.read.totalAssets(),
118
+ Promise.all(accounts.map((account) => __awaiter(void 0, void 0, void 0, function* () {
119
+ const share = yield vaultContract.read.balanceOf([account]);
120
+ return share === BigInt(0) ? BigInt(0) : vaultContract.read.convertToAssets([share]);
121
+ }))),
122
+ ]);
123
+ return { totalAssets, suppliedAssets };
124
+ });
125
+ const getMorphoVaultV1ChainData = (provider, morphoVault, accounts) => __awaiter(void 0, void 0, void 0, function* () {
106
126
  const morphoVaultContract = (0, contracts_1.getMorphoVaultContractViem)(provider, morphoVault.address);
107
127
  const shares = {};
108
128
  const [totalAssets, totalSupply, decimals, decimalsOffset] = yield Promise.all([
@@ -119,11 +139,29 @@ const getMorphoVaultChainData = (provider, morphoVault, accounts) => __awaiter(v
119
139
  totalAssets, totalSupply, decimals, decimalsOffset, shares,
120
140
  };
121
141
  });
142
+ const getMorphoVaultChainData = (provider, morphoVault, accounts) => __awaiter(void 0, void 0, void 0, function* () {
143
+ return (morphoVault.version === types_1.MorphoVaultVersion.V2
144
+ ? { v2: yield getMorphoVaultV2ChainData(provider, morphoVault, accounts) }
145
+ : { v1: yield getMorphoVaultV1ChainData(provider, morphoVault, accounts) });
146
+ });
122
147
  const formatMorphoVaultData = (morphoVault, chainData, liquidityUnderlying, accounts) => {
123
- const { totalAssets, totalSupply, decimals, decimalsOffset, shares, } = chainData;
124
- const poolSize = (0, tokens_1.assetAmountInEth)(totalAssets.toString(), morphoVault.asset);
125
148
  const liquidity = (0, tokens_1.assetAmountInEth)(liquidityUnderlying, morphoVault.asset);
126
149
  const supplied = {};
150
+ if (chainData.v2) {
151
+ const { totalAssets, suppliedAssets } = chainData.v2;
152
+ accounts.forEach((account, i) => {
153
+ supplied[account.toLowerCase()] = (0, tokens_1.assetAmountInEth)(suppliedAssets[i].toString(), morphoVault.asset);
154
+ });
155
+ return {
156
+ poolSize: (0, tokens_1.assetAmountInEth)(totalAssets.toString(), morphoVault.asset),
157
+ supplied,
158
+ liquidity,
159
+ asset: morphoVault.asset,
160
+ optionType: morphoVault.type,
161
+ };
162
+ }
163
+ const { totalAssets, totalSupply, decimals, decimalsOffset, shares, } = chainData.v1;
164
+ const poolSize = (0, tokens_1.assetAmountInEth)(totalAssets.toString(), morphoVault.asset);
127
165
  accounts.forEach((account) => {
128
166
  const share = shares[account] || BigInt(0);
129
167
  supplied[account.toLowerCase()] = new decimal_js_1.default(new decimal_js_1.default(share.toString()).mul(new decimal_js_1.default(totalAssets.toString()).add(1)).div(new decimal_js_1.default(totalSupply.toString()).add(Math.pow(10, decimalsOffset))).div(Math.pow(10, 18))
@@ -17,5 +17,7 @@ export declare const MORPHO_VAULT_STEAKHOUSE_PYUSD: MorphoVault;
17
17
  export declare const MORPHO_VAULT_SMOKEHOUSE_USDT: MorphoVault;
18
18
  export declare const MORPHO_VAULT_SMOKEHOUSE_USDC: MorphoVault;
19
19
  export declare const MORPHO_VAULT_SMOKEHOUSE_DAI: MorphoVault;
20
+ export declare const MORPHO_VAULT_GAUNTLET_USDG_PREMIUM: MorphoVault;
21
+ export declare const MORPHO_VAULT_STEAKHOUSE_USDG_PRO: MorphoVault;
20
22
  export declare const MORPHO_VAULTS: Record<MorphoVaultType, MorphoVault>;
21
23
  export declare const getMorphoVault: (type: MorphoVaultType) => MorphoVault;
@@ -1,12 +1,14 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getMorphoVault = exports.MORPHO_VAULTS = exports.MORPHO_VAULT_SMOKEHOUSE_DAI = exports.MORPHO_VAULT_SMOKEHOUSE_USDC = exports.MORPHO_VAULT_SMOKEHOUSE_USDT = exports.MORPHO_VAULT_STEAKHOUSE_PYUSD = exports.MORPHO_VAULT_STEAKHOUSE_ETH = exports.MORPHO_VAULT_STEAKHOUSE_USDC = exports.MORPHO_VAULT_STEAKHOUSE_USDT = exports.MORPHO_VAULT_GAUNTLET_RESOLV_USDC = exports.MORPHO_VAULT_GAUNTLET_USDT_PRIME = exports.MORPHO_VAULT_GAUNTLET_USDA_CORE = exports.MORPHO_VAULT_FLAGSHIP_USDT = exports.MORPHO_VAULT_BOOSTED_USDC = exports.MORPHO_VAULT_GAUNTLET_WETH_PRIME = exports.MORPHO_VAULT_GAUNTLET_WETH_CORE = exports.MORPHO_VAULT_RE7_WETH = exports.MORPHO_VAULT_GAUNTLET_USDC_PRIME = exports.MORPHO_VAULT_GAUNTLET_USDC_CORE = exports.MORPHO_VAULT_FLAGSHIP_ETH = void 0;
3
+ exports.getMorphoVault = exports.MORPHO_VAULTS = exports.MORPHO_VAULT_STEAKHOUSE_USDG_PRO = exports.MORPHO_VAULT_GAUNTLET_USDG_PREMIUM = exports.MORPHO_VAULT_SMOKEHOUSE_DAI = exports.MORPHO_VAULT_SMOKEHOUSE_USDC = exports.MORPHO_VAULT_SMOKEHOUSE_USDT = exports.MORPHO_VAULT_STEAKHOUSE_PYUSD = exports.MORPHO_VAULT_STEAKHOUSE_ETH = exports.MORPHO_VAULT_STEAKHOUSE_USDC = exports.MORPHO_VAULT_STEAKHOUSE_USDT = exports.MORPHO_VAULT_GAUNTLET_RESOLV_USDC = exports.MORPHO_VAULT_GAUNTLET_USDT_PRIME = exports.MORPHO_VAULT_GAUNTLET_USDA_CORE = exports.MORPHO_VAULT_FLAGSHIP_USDT = exports.MORPHO_VAULT_BOOSTED_USDC = exports.MORPHO_VAULT_GAUNTLET_WETH_PRIME = exports.MORPHO_VAULT_GAUNTLET_WETH_CORE = exports.MORPHO_VAULT_RE7_WETH = exports.MORPHO_VAULT_GAUNTLET_USDC_PRIME = exports.MORPHO_VAULT_GAUNTLET_USDC_CORE = exports.MORPHO_VAULT_FLAGSHIP_ETH = void 0;
4
4
  const types_1 = require("../../types");
5
5
  exports.MORPHO_VAULT_FLAGSHIP_ETH = {
6
6
  type: types_1.MorphoVaultType.MorphoVaultFlagshipEth,
7
7
  name: 'Flagship ETH',
8
8
  address: '0x38989BBA00BDF8181F4082995b3DEAe96163aC5D',
9
9
  asset: 'WETH',
10
+ network: types_1.NetworkNumber.Eth,
11
+ version: types_1.MorphoVaultVersion.V1,
10
12
  deploymentBlock: 18927491,
11
13
  isLegacy: true,
12
14
  };
@@ -15,6 +17,8 @@ exports.MORPHO_VAULT_GAUNTLET_USDC_CORE = {
15
17
  name: 'Gauntlet USDC Core',
16
18
  address: '0x8eB67A509616cd6A7c1B3c8C21D48FF57df3d458',
17
19
  asset: 'USDC',
20
+ network: types_1.NetworkNumber.Eth,
21
+ version: types_1.MorphoVaultVersion.V1,
18
22
  deploymentBlock: 19777569,
19
23
  isLegacy: true,
20
24
  };
@@ -23,6 +27,8 @@ exports.MORPHO_VAULT_GAUNTLET_USDC_PRIME = {
23
27
  name: 'Gauntlet USDC Prime',
24
28
  address: '0xdd0f28e19C1780eb6396170735D45153D261490d',
25
29
  asset: 'USDC',
30
+ network: types_1.NetworkNumber.Eth,
31
+ version: types_1.MorphoVaultVersion.V1,
26
32
  deploymentBlock: 19777569,
27
33
  isLegacy: true,
28
34
  };
@@ -31,6 +37,8 @@ exports.MORPHO_VAULT_RE7_WETH = {
31
37
  name: 'RE7 WETH',
32
38
  address: '0x78Fc2c2eD1A4cDb5402365934aE5648aDAd094d0',
33
39
  asset: 'WETH',
40
+ network: types_1.NetworkNumber.Eth,
41
+ version: types_1.MorphoVaultVersion.V1,
34
42
  deploymentBlock: 19121118,
35
43
  isLegacy: true,
36
44
  };
@@ -39,6 +47,8 @@ exports.MORPHO_VAULT_GAUNTLET_WETH_CORE = {
39
47
  name: 'Gauntlet WETH Core',
40
48
  address: '0x4881Ef0BF6d2365D3dd6499ccd7532bcdBCE0658',
41
49
  asset: 'WETH',
50
+ network: types_1.NetworkNumber.Eth,
51
+ version: types_1.MorphoVaultVersion.V1,
42
52
  deploymentBlock: 19541126,
43
53
  isLegacy: true,
44
54
  };
@@ -47,6 +57,8 @@ exports.MORPHO_VAULT_GAUNTLET_WETH_PRIME = {
47
57
  name: 'Gauntlet WETH Prime',
48
58
  address: '0x2371e134e3455e0593363cBF89d3b6cf53740618',
49
59
  asset: 'WETH',
60
+ network: types_1.NetworkNumber.Eth,
61
+ version: types_1.MorphoVaultVersion.V1,
50
62
  deploymentBlock: 19372149,
51
63
  isLegacy: true,
52
64
  };
@@ -55,6 +67,8 @@ exports.MORPHO_VAULT_BOOSTED_USDC = {
55
67
  name: 'Boosted USDC',
56
68
  address: '0xd63070114470f685b75B74D60EEc7c1113d33a3D',
57
69
  asset: 'USDC',
70
+ network: types_1.NetworkNumber.Eth,
71
+ version: types_1.MorphoVaultVersion.V1,
58
72
  deploymentBlock: 20377233,
59
73
  isLegacy: true,
60
74
  };
@@ -63,6 +77,8 @@ exports.MORPHO_VAULT_FLAGSHIP_USDT = {
63
77
  name: 'Flagship USDT',
64
78
  address: '0x2C25f6C25770fFEC5959D34B94Bf898865e5D6b1',
65
79
  asset: 'USDT',
80
+ network: types_1.NetworkNumber.Eth,
81
+ version: types_1.MorphoVaultVersion.V1,
66
82
  deploymentBlock: 19127039,
67
83
  isLegacy: true,
68
84
  };
@@ -71,6 +87,8 @@ exports.MORPHO_VAULT_GAUNTLET_USDA_CORE = {
71
87
  name: 'Gauntlet USDA Core',
72
88
  address: '0x125D41A6e5dbf455cD9Df8F80BCC6fd172D52Cc6',
73
89
  asset: 'USDA',
90
+ network: types_1.NetworkNumber.Eth,
91
+ version: types_1.MorphoVaultVersion.V1,
74
92
  deploymentBlock: 19633608,
75
93
  isLegacy: true,
76
94
  };
@@ -79,6 +97,8 @@ exports.MORPHO_VAULT_GAUNTLET_USDT_PRIME = {
79
97
  name: 'Gauntlet USDT Prime',
80
98
  address: '0x8CB3649114051cA5119141a34C200D65dc0Faa73',
81
99
  asset: 'USDT',
100
+ network: types_1.NetworkNumber.Eth,
101
+ version: types_1.MorphoVaultVersion.V1,
82
102
  deploymentBlock: 19486541,
83
103
  isLegacy: true,
84
104
  };
@@ -87,6 +107,8 @@ exports.MORPHO_VAULT_GAUNTLET_RESOLV_USDC = {
87
107
  name: 'Gauntlet Resolv USDC',
88
108
  address: '0x132E6C9C33A62D7727cd359b1f51e5B566E485Eb',
89
109
  asset: 'USDC',
110
+ network: types_1.NetworkNumber.Eth,
111
+ version: types_1.MorphoVaultVersion.V1,
90
112
  deploymentBlock: 21487882,
91
113
  isLegacy: true,
92
114
  };
@@ -96,6 +118,8 @@ exports.MORPHO_VAULT_STEAKHOUSE_USDT = {
96
118
  name: 'Steakhouse USDT',
97
119
  address: '0xbEef047a543E45807105E51A8BBEFCc5950fcfBa',
98
120
  asset: 'USDT',
121
+ network: types_1.NetworkNumber.Eth,
122
+ version: types_1.MorphoVaultVersion.V1,
99
123
  deploymentBlock: 19043398,
100
124
  isLegacy: false,
101
125
  };
@@ -104,6 +128,8 @@ exports.MORPHO_VAULT_STEAKHOUSE_USDC = {
104
128
  name: 'Steakhouse USDC',
105
129
  address: '0xBEEF01735c132Ada46AA9aA4c54623cAA92A64CB',
106
130
  asset: 'USDC',
131
+ network: types_1.NetworkNumber.Eth,
132
+ version: types_1.MorphoVaultVersion.V1,
107
133
  deploymentBlock: 18928285,
108
134
  isLegacy: false,
109
135
  };
@@ -112,6 +138,8 @@ exports.MORPHO_VAULT_STEAKHOUSE_ETH = {
112
138
  name: 'Steakhouse WETH',
113
139
  address: '0xBEEf050ecd6a16c4e7bfFbB52Ebba7846C4b8cD4',
114
140
  asset: 'WETH',
141
+ network: types_1.NetworkNumber.Eth,
142
+ version: types_1.MorphoVaultVersion.V1,
115
143
  deploymentBlock: 19380443,
116
144
  isLegacy: false,
117
145
  };
@@ -120,6 +148,8 @@ exports.MORPHO_VAULT_STEAKHOUSE_PYUSD = {
120
148
  name: 'Steakhouse PYUSD',
121
149
  address: '0xbEEF02e5E13584ab96848af90261f0C8Ee04722a',
122
150
  asset: 'PYUSD',
151
+ network: types_1.NetworkNumber.Eth,
152
+ version: types_1.MorphoVaultVersion.V1,
123
153
  deploymentBlock: 19043398,
124
154
  isLegacy: false,
125
155
  };
@@ -129,6 +159,8 @@ exports.MORPHO_VAULT_SMOKEHOUSE_USDT = {
129
159
  name: 'Smokehouse USDT',
130
160
  address: '0xA0804346780b4c2e3bE118ac957D1DB82F9d7484',
131
161
  asset: 'USDT',
162
+ network: types_1.NetworkNumber.Eth,
163
+ version: types_1.MorphoVaultVersion.V1,
132
164
  deploymentBlock: 21522238,
133
165
  isLegacy: false,
134
166
  };
@@ -137,6 +169,8 @@ exports.MORPHO_VAULT_SMOKEHOUSE_USDC = {
137
169
  name: 'Smokehouse USDC',
138
170
  address: '0xBEeFFF209270748ddd194831b3fa287a5386f5bC',
139
171
  asset: 'USDC',
172
+ network: types_1.NetworkNumber.Eth,
173
+ version: types_1.MorphoVaultVersion.V1,
140
174
  deploymentBlock: 21337719,
141
175
  isLegacy: false,
142
176
  };
@@ -145,9 +179,32 @@ exports.MORPHO_VAULT_SMOKEHOUSE_DAI = {
145
179
  name: 'Smokehouse DAI',
146
180
  address: '0xbeeFfF68CC520D68f82641EFF84330C631E2490E',
147
181
  asset: 'DAI',
182
+ network: types_1.NetworkNumber.Eth,
183
+ version: types_1.MorphoVaultVersion.V1,
148
184
  deploymentBlock: 21343808,
149
185
  isLegacy: false,
150
186
  };
187
+ // Vault V2
188
+ exports.MORPHO_VAULT_GAUNTLET_USDG_PREMIUM = {
189
+ type: types_1.MorphoVaultType.MorphoVaultGauntletUSDGPremium,
190
+ name: 'Gauntlet USDG Premium',
191
+ address: '0x390c1bb01F3F627144a40617e287d4cE3D5aBCfa',
192
+ asset: 'USDG',
193
+ network: types_1.NetworkNumber.Arb,
194
+ version: types_1.MorphoVaultVersion.V2,
195
+ deploymentBlock: 510799903,
196
+ isLegacy: false,
197
+ };
198
+ exports.MORPHO_VAULT_STEAKHOUSE_USDG_PRO = {
199
+ type: types_1.MorphoVaultType.MorphoVaultSteakhouseUSDGPro,
200
+ name: 'Steakhouse USDG Pro',
201
+ address: '0xbeeFf72B77e7584a450E887125F25E8D8819016a',
202
+ asset: 'USDG',
203
+ network: types_1.NetworkNumber.Arb,
204
+ version: types_1.MorphoVaultVersion.V2,
205
+ deploymentBlock: 512247107,
206
+ isLegacy: false,
207
+ };
151
208
  exports.MORPHO_VAULTS = {
152
209
  [types_1.MorphoVaultType.MorphoVaultFlagshipEth]: exports.MORPHO_VAULT_FLAGSHIP_ETH,
153
210
  [types_1.MorphoVaultType.MorphoVaultGauntletUSDCCore]: exports.MORPHO_VAULT_GAUNTLET_USDC_CORE,
@@ -169,6 +226,9 @@ exports.MORPHO_VAULTS = {
169
226
  [types_1.MorphoVaultType.MorphoVaultSmokehouseUSDT]: exports.MORPHO_VAULT_SMOKEHOUSE_USDT,
170
227
  [types_1.MorphoVaultType.MorphoVaultSmokehouseUSDC]: exports.MORPHO_VAULT_SMOKEHOUSE_USDC,
171
228
  [types_1.MorphoVaultType.MorphoVaultSmokehouseDAI]: exports.MORPHO_VAULT_SMOKEHOUSE_DAI,
229
+ // Vault V2
230
+ [types_1.MorphoVaultType.MorphoVaultGauntletUSDGPremium]: exports.MORPHO_VAULT_GAUNTLET_USDG_PREMIUM,
231
+ [types_1.MorphoVaultType.MorphoVaultSteakhouseUSDGPro]: exports.MORPHO_VAULT_STEAKHOUSE_USDG_PRO,
172
232
  };
173
233
  const getMorphoVault = (type) => exports.MORPHO_VAULTS[type];
174
234
  exports.getMorphoVault = getMorphoVault;
@@ -88,6 +88,7 @@ const _getSparkMarketsData = (provider, network, selectedMarket) => __awaiter(vo
88
88
  collateralAssets: eModeCategoriesData[emodeCategoryId] ? [...eModeCategoriesData[emodeCategoryId].collateralAssets, selectedMarket.assets[i]] : [selectedMarket.assets[i]],
89
89
  borrowAssets: eModeCategoriesData[emodeCategoryId] ? [...eModeCategoriesData[emodeCategoryId].borrowAssets, selectedMarket.assets[i]] : [selectedMarket.assets[i]],
90
90
  ltvZeroAssets: [],
91
+ isolated: false,
91
92
  };
92
93
  return ({
93
94
  symbol: selectedMarket.assets[i],