@defisaver/positions-sdk 2.1.168 → 2.1.169-custom-fetching-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 (37) hide show
  1. package/cjs/helpers/aaveV4Helpers/index.js +11 -1
  2. package/cjs/markets/morphoBlue/index.d.ts +2 -0
  3. package/cjs/markets/morphoBlue/index.js +18 -1
  4. package/cjs/moneymarket/moneymarketCommonService.js +12 -2
  5. package/cjs/portfolio/customDeFiData.d.ts +3 -0
  6. package/cjs/portfolio/customDeFiData.js +262 -0
  7. package/cjs/portfolio/index.d.ts +1 -0
  8. package/cjs/portfolio/index.js +15 -851
  9. package/cjs/types/common.d.ts +1 -0
  10. package/cjs/types/common.js +1 -0
  11. package/cjs/types/morphoBlue.d.ts +1 -0
  12. package/cjs/types/morphoBlue.js +1 -0
  13. package/cjs/types/portfolio.d.ts +34 -0
  14. package/cjs/types/portfolio.js +18 -0
  15. package/esm/helpers/aaveV4Helpers/index.js +11 -1
  16. package/esm/markets/morphoBlue/index.d.ts +2 -0
  17. package/esm/markets/morphoBlue/index.js +16 -0
  18. package/esm/moneymarket/moneymarketCommonService.js +12 -2
  19. package/esm/portfolio/customDeFiData.d.ts +3 -0
  20. package/esm/portfolio/customDeFiData.js +256 -0
  21. package/esm/portfolio/index.d.ts +1 -0
  22. package/esm/portfolio/index.js +16 -849
  23. package/esm/types/common.d.ts +1 -0
  24. package/esm/types/common.js +1 -0
  25. package/esm/types/morphoBlue.d.ts +1 -0
  26. package/esm/types/morphoBlue.js +1 -0
  27. package/esm/types/portfolio.d.ts +34 -0
  28. package/esm/types/portfolio.js +17 -1
  29. package/package.json +2 -2
  30. package/src/helpers/aaveV4Helpers/index.ts +12 -1
  31. package/src/markets/morphoBlue/index.ts +16 -0
  32. package/src/moneymarket/moneymarketCommonService.ts +13 -2
  33. package/src/portfolio/customDeFiData.ts +378 -0
  34. package/src/portfolio/index.ts +16 -834
  35. package/src/types/common.ts +1 -0
  36. package/src/types/morphoBlue.ts +1 -0
  37. package/src/types/portfolio.ts +37 -0
@@ -161,12 +161,15 @@ const isLeveragedPosAaveV4 = (usedAssets, dustLimit = 5) => {
161
161
  let supplyUnstable = 0;
162
162
  let longAsset = '';
163
163
  let shortAsset = '';
164
+ let stableCollAsset = '';
164
165
  Object.values(usedAssets).forEach(({ symbol, suppliedUsd, borrowedUsd, collateral, reserveId, }) => {
165
166
  const spokeAsset = `${symbol}-${reserveId}`;
166
167
  const isSupplied = (+suppliedUsd) > dustLimit; // ignore dust like <limit leftover supply
167
168
  const isBorrowed = (+borrowedUsd) > dustLimit; // ignore dust like <limit leftover supply
168
- if (isSupplied && moneymarket_1.STABLE_ASSETS.includes(symbol) && collateral)
169
+ if (isSupplied && moneymarket_1.STABLE_ASSETS.includes(symbol) && collateral) {
169
170
  supplyStable += 1;
171
+ stableCollAsset = spokeAsset;
172
+ }
170
173
  if (isBorrowed && moneymarket_1.STABLE_ASSETS.includes(symbol))
171
174
  borrowStable += 1;
172
175
  if (isBorrowed && !moneymarket_1.STABLE_ASSETS.includes(symbol)) {
@@ -181,6 +184,7 @@ const isLeveragedPosAaveV4 = (usedAssets, dustLimit = 5) => {
181
184
  const isLong = borrowStable > 0 && borrowUnstable === 0 && supplyUnstable === 1 && supplyStable === 0;
182
185
  const isShort = supplyStable > 0 && supplyUnstable === 0 && borrowUnstable === 1 && borrowStable === 0;
183
186
  const isVolatilePair = supplyUnstable === 1 && borrowUnstable === 1 && supplyStable === 0 && borrowStable === 0;
187
+ const isStablePair = supplyStable === 1 && borrowStable === 1 && supplyUnstable === 0 && borrowUnstable === 0;
184
188
  if (isLong) {
185
189
  return {
186
190
  leveragedType: types_1.LeverageType.Long,
@@ -199,6 +203,12 @@ const isLeveragedPosAaveV4 = (usedAssets, dustLimit = 5) => {
199
203
  leveragedAsset: longAsset,
200
204
  };
201
205
  }
206
+ if (isStablePair) {
207
+ return {
208
+ leveragedType: types_1.LeverageType.StablePair,
209
+ leveragedAsset: stableCollAsset,
210
+ };
211
+ }
202
212
  return {
203
213
  leveragedType: types_1.LeverageType.None,
204
214
  leveragedAsset: '',
@@ -109,6 +109,7 @@ export declare const MORPHO_BLUE_AERO_USDC_625_BASE: (networkId?: NetworkNumber)
109
109
  export declare const MORPHO_BLUE_USDE_USDC_915_BASE: (networkId?: NetworkNumber) => MorphoBlueMarketData;
110
110
  export declare const MORPHO_BLUE_CBETH_USDC_770_BASE: (networkId?: NetworkNumber) => MorphoBlueMarketData;
111
111
  export declare const MORPHO_BLUE_CBXRP_USDC_625_BASE: (networkId?: NetworkNumber) => MorphoBlueMarketData;
112
+ export declare const MORPHO_BLUE_CBHYPE_USDC_625_BASE: (networkId?: NetworkNumber) => MorphoBlueMarketData;
112
113
  export declare const MORPHO_BLUE_SYRUPUSDC_USDC_915_ARB: (networkId?: NetworkNumber) => MorphoBlueMarketData;
113
114
  export declare const MorphoBlueWBTCUSDC_860_Arb: (networkId?: NetworkNumber) => MorphoBlueMarketData;
114
115
  export declare const MORPHO_BLUE_WSTETH_USDC_860_ARB: (networkId?: NetworkNumber) => MorphoBlueMarketData;
@@ -226,6 +227,7 @@ export declare const MorphoBlueMarkets: (networkId: NetworkNumber) => {
226
227
  readonly morphoblueusdeusdc_915_base: MorphoBlueMarketData;
227
228
  readonly morphobluecbethusdc_770_base: MorphoBlueMarketData;
228
229
  readonly morphobluecbxrpusdc_625_base: MorphoBlueMarketData;
230
+ readonly morphobluecbhypeusdc_625_base: MorphoBlueMarketData;
229
231
  readonly morphobluewsuperoethbweth_915_base: MorphoBlueMarketData;
230
232
  readonly morphobluecbetheth_945_base: MorphoBlueMarketData;
231
233
  readonly morphobluecbetheth_965_base: MorphoBlueMarketData;
@@ -2,7 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.MORPHO_BLUE_PRIME_PYUSD_860 = exports.MORPHO_BLUE_PTWEETH_USDA_860 = exports.MORPHO_BLUE_WOETH_ETH_860 = exports.MORPHO_BLUE_SWBTC_WBTC_945 = exports.MORPHO_BLUE_LBTC_WBTC_945 = exports.MORPHO_BLUE_MORPHO_USDC_625 = exports.MORPHO_BLUE_SUSDS_USDT_965 = exports.MORPHO_BLUE_LBTC_CBBTC_945 = exports.MORPHO_BLUE_LBTC_USDC_860 = exports.MORPHO_BLUE_SYRUPUSDC_USDC_915 = exports.MORPHO_BLUE_USR_USDC_915 = exports.MORPHO_BLUE_USDE_DAI_777 = exports.MORPHO_BLUE_USDE_DAI_945 = exports.MORPHO_BLUE_USDE_DAI_915 = exports.MORPHO_BLUE_USDE_DAI_860 = exports.MORPHO_BLUE_SUSDE_DAI_777 = exports.MORPHO_BLUE_SUSDE_DAI_945 = exports.MORPHO_BLUE_SUSDE_DAI_915 = exports.MORPHO_BLUE_SUSDE_DAI_860 = exports.MORPHO_BLUE_WSTETH_ETH_965_EXCHANGE_RATE = exports.MORPHO_BLUE_WSTETH_ETH_945_EXCHANGE_RATE = exports.MORPHO_BLUE_WSTETH_ETH_945 = exports.MORPHO_BLUE_WEETH_ETH_945 = exports.MORPHO_BLUE_EZETH_ETH_945 = exports.MORPHO_BLUE_EZETH_ETH_860 = exports.MORPHO_BLUE_RSWETH_ETH_945 = exports.MORPHO_BLUE_RSETH_ETH_945 = exports.MORPHO_BLUE_ETH_USDT_915 = exports.MORPHO_BLUE_USDE_USDTB_915 = exports.MORPHO_BLUE_SUSDE_USDTB_915 = exports.MORPHO_BLUE_SUSDE_USDC_915 = exports.MORPHO_BLUE_CBBTC_USDC_860 = exports.MORPHO_BLUE_CBBTC_ETH_915 = exports.MORPHO_BLUE_TBTC_USDC = exports.MORPHO_BLUE_MKR_DAI_777 = exports.MORPHO_BLUE_MKR_USDC = exports.MORPHO_BLUE_SUSDE_USDT = exports.MORPHO_BLUE_USDE_USDT = exports.MORPHO_BLUE_WSTETH_PYUSD = exports.MORPHO_BLUE_WSTETH_USDA_EXCHANGE_RATE = exports.MORPHO_BLUE_WSTETH_USDT = exports.MORPHO_BLUE_WBTC_ETH = exports.MORPHO_BLUE_WBTC_PYUSD = exports.MORPHO_BLUE_WBTC_USDT = exports.MORPHO_BLUE_ETH_USDC_860 = exports.MORPHO_BLUE_ETH_USDC_915 = exports.MORPHO_BLUE_WBTC_USDC = exports.MORPHO_BLUE_SDAI_USDC = exports.MORPHO_BLUE_WEETH_ETH_860 = exports.MORPHO_BLUE_WSTETH_USDC = void 0;
4
4
  exports.MORPHO_BLUE_WETH_EURC_860_BASE = exports.MORPHO_BLUE_CBBTC_EURC_860_BASE = exports.MORPHO_BLUE_WSTETH_EURC_860_BASE = exports.MORPHO_BLUE_LBTC_CBBTC_945_BASE = exports.MORPHO_BLUE_WSUPEROETHB_WETH_915_BASE = exports.MORPHO_BLUE_BSDETH_ETH_860_BASE = exports.MORPHO_BLUE_CBBTC_USDC_860_BASE = exports.MORPHO_BLUE_CBBTC_ETH_915_BASE = exports.MORPHO_BLUE_RETH_ETH_945_BASE = exports.MORPHO_BLUE_RETH_USDC_860_BASE = exports.MORPHO_BLUE_ETH_USDC_860_BASE = exports.MORPHO_BLUE_CBETH_ETH_945_BASE = exports.MORPHO_BLUE_CBETH_ETH_965_BASE = exports.MORPHO_BLUE_WSTETH_USDC_860_BASE = exports.MORPHO_BLUE_WSTETH_USDC_860_BASE_13c42741 = exports.MORPHO_BLUE_WSTETH_ETH_965_BASE = exports.MORPHO_BLUE_WSTETH_ETH_945_BASE = exports.MORPHO_BLUE_CBETH_USDC_860_BASE_1c21c59d = exports.MORPHO_BLUE_CBETH_USDC_860_BASE = exports.MORPHO_BLUE_WBTC_PYUSD_860 = exports.MORPHO_BLUE_WBTC_RLUSD_860 = exports.MORPHO_BLUE_ETH_USDT_860 = exports.MORPHO_BLUE_WEETH_USDT_770 = exports.MORPHO_BLUE_CBBTC_PYUSD_860 = exports.MORPHO_BLUE_SYRUPUSDT_USDT_915 = exports.MORPHO_BLUE_WEETH_USDT_860_A6A4C1F1 = exports.MORPHO_BLUE_WEETH_USDT_860 = exports.MORPHO_BLUE_CBBTC_ETH_915_12DBF493 = exports.MORPHO_BLUE_WBTC_ETH_915 = exports.MORPHO_BLUE_CBBTC_RLUSD_860 = exports.MORPHO_BLUE_STUSDS_USDC_860 = exports.MORPHO_BLUE_USD3_USDC_915 = exports.MORPHO_BLUE_ETH_USDC_860_94B823E6 = exports.MORPHO_BLUE_WEETH_USDC_860_85252BB8 = exports.MORPHO_BLUE_WEETH_USDC_860 = exports.MORPHO_BLUE_WEETH_USDC_770 = exports.MORPHO_BLUE_SYRUPUSDC_RLUSD_915 = exports.MORPHO_BLUE_WSTETH_USDT_860 = exports.MORPHO_BLUE_WBTC_USDT_860 = exports.MORPHO_BLUE_SUSDE_PYUSD_915 = exports.MORPHO_BLUE_LBTC_PYUSD_860 = exports.MORPHO_BLUE_CBBTC_USDT_860 = exports.MORPHO_BLUE_WEETH_PYUSD_860 = exports.MORPHO_BLUE_WEETH_RLUSD_860 = exports.MORPHO_BLUE_CBBTC_USDC_860_BC99DE6A = exports.MORPHO_BLUE_WBTC_USDC_860 = exports.MORPHO_BLUE_SYRUPUSDC_PYUSD_915 = exports.MORPHO_BLUE_WSTETH_USDC_860 = exports.MORPHO_BLUE_KBTC_PYUSD_860 = exports.MORPHO_BLUE_KBTC_RLUSD_860 = void 0;
5
- exports.findMorphoBlueMarket = exports.MorphoBlueMarkets = exports.MORPHO_BLUE_WBTC_USDT0_860_ARB = exports.MORPHO_BLUE_WSTETH_USDT0_860_ARB = exports.MORPHO_BLUE_ETH_USDT0_860_ARB = exports.MORPHO_BLUE_WEETH_USDT0_860_ARB = exports.MORPHO_BLUE_SUSDS_USDT0_945_ARB = exports.MORPHO_BLUE_WEETH_USDC_860_ARB = exports.MORPHO_BLUE_SUSDS_USDC_945_ARB = exports.MORPHO_BLUE_ETH_USDC_860_ARB = exports.MORPHO_BLUE_WSTETH_USDC_860_ARB = exports.MorphoBlueWBTCUSDC_860_Arb = exports.MORPHO_BLUE_SYRUPUSDC_USDC_915_ARB = exports.MORPHO_BLUE_CBXRP_USDC_625_BASE = exports.MORPHO_BLUE_CBETH_USDC_770_BASE = exports.MORPHO_BLUE_USDE_USDC_915_BASE = exports.MORPHO_BLUE_AERO_USDC_625_BASE = exports.MORPHO_BLUE_EZETH_ETH_777_BASE = exports.MORPHO_BLUE_EZETH_USDC_777_BASE = exports.MORPHO_BLUE_WEETH_ETH_945_BASE = exports.MORPHO_BLUE_WEETH_USDC_777_BASE = exports.MORPHO_BLUE_WEETH_ETH_915_BASE = exports.MORPHO_BLUE_CBETH_EURC_860_BASE = void 0;
5
+ exports.findMorphoBlueMarket = exports.MorphoBlueMarkets = exports.MORPHO_BLUE_WBTC_USDT0_860_ARB = exports.MORPHO_BLUE_WSTETH_USDT0_860_ARB = exports.MORPHO_BLUE_ETH_USDT0_860_ARB = exports.MORPHO_BLUE_WEETH_USDT0_860_ARB = exports.MORPHO_BLUE_SUSDS_USDT0_945_ARB = exports.MORPHO_BLUE_WEETH_USDC_860_ARB = exports.MORPHO_BLUE_SUSDS_USDC_945_ARB = exports.MORPHO_BLUE_ETH_USDC_860_ARB = exports.MORPHO_BLUE_WSTETH_USDC_860_ARB = exports.MorphoBlueWBTCUSDC_860_Arb = exports.MORPHO_BLUE_SYRUPUSDC_USDC_915_ARB = exports.MORPHO_BLUE_CBHYPE_USDC_625_BASE = exports.MORPHO_BLUE_CBXRP_USDC_625_BASE = exports.MORPHO_BLUE_CBETH_USDC_770_BASE = exports.MORPHO_BLUE_USDE_USDC_915_BASE = exports.MORPHO_BLUE_AERO_USDC_625_BASE = exports.MORPHO_BLUE_EZETH_ETH_777_BASE = exports.MORPHO_BLUE_EZETH_USDC_777_BASE = exports.MORPHO_BLUE_WEETH_ETH_945_BASE = exports.MORPHO_BLUE_WEETH_USDC_777_BASE = exports.MORPHO_BLUE_WEETH_ETH_915_BASE = exports.MORPHO_BLUE_CBETH_EURC_860_BASE = void 0;
6
6
  const utils_1 = require("../../services/utils");
7
7
  const types_1 = require("../../types");
8
8
  // MAINNET
@@ -1767,6 +1767,22 @@ const MORPHO_BLUE_CBXRP_USDC_625_BASE = (networkId = types_1.NetworkNumber.Base)
1767
1767
  protocolName: 'morpho-blue',
1768
1768
  });
1769
1769
  exports.MORPHO_BLUE_CBXRP_USDC_625_BASE = MORPHO_BLUE_CBXRP_USDC_625_BASE;
1770
+ const MORPHO_BLUE_CBHYPE_USDC_625_BASE = (networkId = types_1.NetworkNumber.Base) => ({
1771
+ chainIds: [types_1.NetworkNumber.Base],
1772
+ label: 'Morpho Blue',
1773
+ shortLabel: 'cbHYPE/USDC',
1774
+ value: types_1.MorphoBlueVersions.MorphoBlueCbHYPEUSDC_625_Base,
1775
+ url: 'cbhypeusdc-76629002',
1776
+ loanToken: '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913',
1777
+ collateralToken: '0xB200000000000000000000451d033a5000cb479e',
1778
+ oracle: '0x7FaD8B8De2DDb7b4B415e1Aa3613e45EeF9E4bFf',
1779
+ oracleType: types_1.MorphoBlueOracleType.MARKET_RATE,
1780
+ irm: '0x46415998764C29aB2a25CbeA6254146D50D22687',
1781
+ lltv: 0.625,
1782
+ marketId: '0x76629002c9fdb20fb2092053a4f22c5c65e04a81887218b9546f2a2d82b4c0a8',
1783
+ protocolName: 'morpho-blue',
1784
+ });
1785
+ exports.MORPHO_BLUE_CBHYPE_USDC_625_BASE = MORPHO_BLUE_CBHYPE_USDC_625_BASE;
1770
1786
  // ARBITRUM
1771
1787
  const MORPHO_BLUE_SYRUPUSDC_USDC_915_ARB = (networkId = types_1.NetworkNumber.Eth) => ({
1772
1788
  chainIds: [types_1.NetworkNumber.Arb],
@@ -2052,6 +2068,7 @@ const MorphoBlueMarkets = (networkId) => ({
2052
2068
  [types_1.MorphoBlueVersions.MorphoBlueUSDeUSDC_915_Base]: (0, exports.MORPHO_BLUE_USDE_USDC_915_BASE)(networkId),
2053
2069
  [types_1.MorphoBlueVersions.MorphoBlueCbEthUSDC_770_Base]: (0, exports.MORPHO_BLUE_CBETH_USDC_770_BASE)(networkId),
2054
2070
  [types_1.MorphoBlueVersions.MorphoBlueCbXRPUSDC_625_Base]: (0, exports.MORPHO_BLUE_CBXRP_USDC_625_BASE)(networkId),
2071
+ [types_1.MorphoBlueVersions.MorphoBlueCbHYPEUSDC_625_Base]: (0, exports.MORPHO_BLUE_CBHYPE_USDC_625_BASE)(networkId),
2055
2072
  [types_1.MorphoBlueVersions.MorphoBlueWsuperOETHbWETH_915_Base]: (0, exports.MORPHO_BLUE_WSUPEROETHB_WETH_915_BASE)(networkId),
2056
2073
  [types_1.MorphoBlueVersions.MorphoBlueCbEthEth_945_Base]: (0, exports.MORPHO_BLUE_CBETH_ETH_945_BASE)(networkId),
2057
2074
  [types_1.MorphoBlueVersions.MorphoBlueCbEthEth_965_Base]: (0, exports.MORPHO_BLUE_CBETH_ETH_965_BASE)(networkId),
@@ -20,7 +20,7 @@ exports.calcShortLiqPrice = calcShortLiqPrice;
20
20
  const calcLeverageLiqPrice = (leverageType, assetPrice, borrowedUsd, borrowLimitUsd) => {
21
21
  if (leverageType === common_1.LeverageType.Short || leverageType === common_1.LeverageType.VolatilePairReverse)
22
22
  return (0, exports.calcShortLiqPrice)(assetPrice, borrowedUsd, borrowLimitUsd);
23
- if (leverageType === common_1.LeverageType.Long || leverageType === common_1.LeverageType.VolatilePair)
23
+ if (leverageType === common_1.LeverageType.Long || leverageType === common_1.LeverageType.VolatilePair || leverageType === common_1.LeverageType.StablePair)
24
24
  return (0, exports.calcLongLiqPrice)(assetPrice, borrowedUsd, borrowLimitUsd);
25
25
  console.error('invalid leverageType', leverageType);
26
26
  return '0';
@@ -44,11 +44,14 @@ const isLeveragedPos = (usedAssets, dustLimit = 5) => {
44
44
  let supplyUnstable = 0;
45
45
  let longAsset = '';
46
46
  let shortAsset = '';
47
+ let stableCollAsset = '';
47
48
  Object.values(usedAssets).forEach(({ symbol, suppliedUsd, borrowedUsd, collateral, }) => {
48
49
  const isSupplied = (+suppliedUsd) > dustLimit; // ignore dust like <limit leftover supply
49
50
  const isBorrowed = (+borrowedUsd) > dustLimit; // ignore dust like <limit leftover supply
50
- if (isSupplied && exports.STABLE_ASSETS.includes(symbol) && collateral)
51
+ if (isSupplied && exports.STABLE_ASSETS.includes(symbol) && collateral) {
51
52
  supplyStable += 1;
53
+ stableCollAsset = symbol;
54
+ }
52
55
  if (isBorrowed && exports.STABLE_ASSETS.includes(symbol))
53
56
  borrowStable += 1;
54
57
  if (isBorrowed && !exports.STABLE_ASSETS.includes(symbol)) {
@@ -63,6 +66,7 @@ const isLeveragedPos = (usedAssets, dustLimit = 5) => {
63
66
  const isLong = borrowStable > 0 && borrowUnstable === 0 && supplyUnstable === 1 && supplyStable === 0;
64
67
  const isShort = supplyStable > 0 && supplyUnstable === 0 && borrowUnstable === 1 && borrowStable === 0;
65
68
  const isVolatilePair = supplyUnstable === 1 && borrowUnstable === 1 && supplyStable === 0 && borrowStable === 0;
69
+ const isStablePair = supplyStable === 1 && borrowStable === 1 && supplyUnstable === 0 && borrowUnstable === 0;
66
70
  if (isLong) {
67
71
  return {
68
72
  leveragedType: common_1.LeverageType.Long,
@@ -81,6 +85,12 @@ const isLeveragedPos = (usedAssets, dustLimit = 5) => {
81
85
  leveragedAsset: longAsset,
82
86
  };
83
87
  }
88
+ if (isStablePair) {
89
+ return {
90
+ leveragedType: common_1.LeverageType.StablePair,
91
+ leveragedAsset: stableCollAsset,
92
+ };
93
+ }
84
94
  return {
85
95
  leveragedType: common_1.LeverageType.None,
86
96
  leveragedAsset: '',
@@ -0,0 +1,3 @@
1
+ import { EthAddress, EthereumProvider, NetworkNumber } from '../types/common';
2
+ import { CustomDeFiData, CustomDeFiDataOptions } from '../types';
3
+ export declare function getCustomDeFiData(provider: EthereumProvider, network: NetworkNumber, defaultProvider: EthereumProvider, addresses: EthAddress[], options?: CustomDeFiDataOptions): Promise<CustomDeFiData>;
@@ -0,0 +1,262 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ var __importDefault = (this && this.__importDefault) || function (mod) {
12
+ return (mod && mod.__esModule) ? mod : { "default": mod };
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.getCustomDeFiData = getCustomDeFiData;
16
+ const decimal_js_1 = __importDefault(require("decimal.js"));
17
+ const common_1 = require("../types/common");
18
+ const markets_1 = require("../markets");
19
+ const types_1 = require("../types");
20
+ const viem_1 = require("../services/viem");
21
+ const constants_1 = require("../constants");
22
+ const aaveV2_1 = require("../aaveV2");
23
+ const aaveV3_1 = require("../aaveV3");
24
+ const aaveV4_1 = require("../aaveV4");
25
+ const compoundV2_1 = require("../compoundV2");
26
+ const compoundV3_1 = require("../compoundV3");
27
+ const spark_1 = require("../spark");
28
+ const curveUsd_1 = require("../curveUsd");
29
+ const llamaLend_1 = require("../llamaLend");
30
+ const morphoBlue_1 = require("../morphoBlue");
31
+ const morphoMidnight_1 = require("../morphoMidnight");
32
+ const maker_1 = require("../maker");
33
+ const liquity_1 = require("../liquity");
34
+ const liquityV2_1 = require("../liquityV2");
35
+ const fluid_1 = require("../fluid");
36
+ const umbrella_1 = require("../umbrella");
37
+ const aaveV3_2 = require("../claiming/aaveV3");
38
+ const spark_2 = require("../claiming/spark");
39
+ const king_1 = require("../claiming/king");
40
+ const ethena_1 = require("../claiming/ethena");
41
+ const uniswap_1 = require("../claiming/uniswap");
42
+ const lower = (address) => address.toLowerCase();
43
+ const positive = (value) => new decimal_js_1.default(value || '0').gt(0);
44
+ const supported = (list, network) => (Object.values(list).filter((m) => m.chainIds.includes(network)));
45
+ function getCustomDeFiData(provider_1, network_1, defaultProvider_1, addresses_1) {
46
+ return __awaiter(this, arguments, void 0, function* (provider, network, defaultProvider, addresses, options = {}) {
47
+ var _a;
48
+ const { protocols = Object.values(types_1.PortfolioProtocol), fetchStaking = false, fetchRewards = false, returnEmptyEModePositions = false, fetchFluidMarkets = false, isSim = false, } = options;
49
+ // JSON-RPC body ends up ~4x the calldata cap; 250k keeps it under the ~2.5MB provider limit.
50
+ const batchSize = (_a = options.batchSize) !== null && _a !== void 0 ? _a : (isSim ? 2000 : 250000);
51
+ const has = (protocol) => protocols.includes(protocol);
52
+ const isMainnet = network === common_1.NetworkNumber.Eth;
53
+ const isFluidSupported = [common_1.NetworkNumber.Eth, common_1.NetworkNumber.Arb, common_1.NetworkNumber.Base, common_1.NetworkNumber.Plasma].includes(network);
54
+ const client = (0, viem_1.getViemProvider)(provider, network, { batch: { multicall: { batchSize } } });
55
+ const defaultClient = (0, viem_1.getViemProvider)(defaultProvider, network, { batch: { multicall: { batchSize } } });
56
+ const aaveV3Markets = has(types_1.PortfolioProtocol.AaveV3)
57
+ ? [types_1.AaveVersions.AaveV3, types_1.AaveVersions.AaveV3Lido, types_1.AaveVersions.AaveV3Etherfi].map((v) => (0, markets_1.AaveMarkets)(network)[v]).filter((m) => m.chainIds.includes(network))
58
+ : [];
59
+ const aaveV2Markets = has(types_1.PortfolioProtocol.AaveV2) ? [(0, markets_1.AaveMarkets)(network)[types_1.AaveVersions.AaveV2]].filter((m) => m.chainIds.includes(network)) : [];
60
+ const aaveV4Spokes = has(types_1.PortfolioProtocol.AaveV4) ? supported((0, markets_1.AaveV4Spokes)(network), network) : [];
61
+ const compoundV3Markets = has(types_1.PortfolioProtocol.CompoundV3) ? supported((0, markets_1.CompoundMarkets)(network), network).filter((m) => m.value !== types_1.CompoundVersions.CompoundV2) : [];
62
+ const compoundV2Markets = has(types_1.PortfolioProtocol.CompoundV2) ? [(0, markets_1.CompoundMarkets)(network)[types_1.CompoundVersions.CompoundV2]].filter((m) => m.chainIds.includes(network)) : [];
63
+ const sparkMarkets = has(types_1.PortfolioProtocol.Spark) ? supported((0, markets_1.SparkMarkets)(network), network) : [];
64
+ const morphoMarkets = has(types_1.PortfolioProtocol.MorphoBlue) ? supported((0, markets_1.MorphoBlueMarkets)(network), network) : [];
65
+ const morphoMidnightMarkets = has(types_1.PortfolioProtocol.MorphoMidnight) ? supported((0, markets_1.MorphoMidnightMarkets)(network), network) : [];
66
+ const crvUsdMarkets = has(types_1.PortfolioProtocol.CrvUsd) ? supported((0, markets_1.CrvUsdMarkets)(network), network) : [];
67
+ const llamaLendMarkets = has(types_1.PortfolioProtocol.LlamaLend) && [common_1.NetworkNumber.Eth, common_1.NetworkNumber.Arb].includes(network) ? supported((0, markets_1.LlamaLendMarkets)(network), network) : [];
68
+ const liquityV2Markets = has(types_1.PortfolioProtocol.LiquityV2) && isMainnet ? Object.values((0, markets_1.LiquityV2Markets)(network)) : [];
69
+ const liquityV2StakingMarkets = liquityV2Markets.filter((m) => !m.isLegacy);
70
+ const fetchMaker = has(types_1.PortfolioProtocol.Maker) && isMainnet;
71
+ const fetchLiquity = has(types_1.PortfolioProtocol.Liquity) && isMainnet;
72
+ const fetchFluid = has(types_1.PortfolioProtocol.Fluid) && isFluidSupported;
73
+ const markets = {
74
+ morphoMarketsData: {},
75
+ morphoMidnightMarketsData: {},
76
+ compoundV3MarketsData: {},
77
+ sparkMarketsData: {},
78
+ aaveV3MarketsData: {},
79
+ aaveV2MarketsData: {},
80
+ compoundV2MarketsData: {},
81
+ crvUsdMarketsData: {},
82
+ llamaLendMarketsData: {},
83
+ liquityV2MarketsData: {},
84
+ aaveV4SpokesData: {},
85
+ fluidMarketsData: {},
86
+ makerMarketsData: {},
87
+ };
88
+ const makerCdps = {};
89
+ const positions = {};
90
+ const stakingPositions = {};
91
+ const rewardsData = {};
92
+ for (const address of addresses) {
93
+ positions[lower(address)] = {
94
+ aaveV3: {},
95
+ aaveV4: {},
96
+ morphoBlue: {},
97
+ morphoMidnight: {},
98
+ compoundV3: {},
99
+ spark: {},
100
+ maker: {},
101
+ aaveV2: {},
102
+ compoundV2: {},
103
+ liquity: {},
104
+ crvUsd: {},
105
+ llamaLend: {},
106
+ fluid: { error: '', data: {} },
107
+ };
108
+ if (fetchStaking) {
109
+ stakingPositions[lower(address)] = {
110
+ aaveV3: {}, morphoBlue: {}, liquity: {}, liquityV2: {}, fluid: { error: '', data: {} },
111
+ };
112
+ }
113
+ if (fetchRewards) {
114
+ rewardsData[lower(address)] = {
115
+ merkl: {}, aaveV3: {}, spark: {}, spk: {}, king: {}, ethena: {}, uniswap: {},
116
+ };
117
+ }
118
+ }
119
+ const run = (label, fetch, store, onError) => __awaiter(this, void 0, void 0, function* () {
120
+ try {
121
+ store(yield fetch());
122
+ }
123
+ catch (error) {
124
+ console.error(`Error fetching ${label}:`, error);
125
+ onError({ error: `Error fetching ${label}`, data: null });
126
+ }
127
+ });
128
+ const perAddress = (list, task) => list.map((m) => addresses.map((a) => task(m, a))).flat();
129
+ const batchRewards = (key, label, fetch, enabled = true) => (() => __awaiter(this, void 0, void 0, function* () {
130
+ if (!enabled) {
131
+ for (const address of addresses)
132
+ rewardsData[lower(address)][key] = { error: '', data: [] };
133
+ return;
134
+ }
135
+ try {
136
+ const result = yield fetch();
137
+ for (const address of addresses)
138
+ rewardsData[lower(address)][key] = { error: '', data: result[lower(address)] || [] };
139
+ }
140
+ catch (error) {
141
+ console.error(`Error fetching ${label}:`, error);
142
+ for (const address of addresses)
143
+ rewardsData[lower(address)][key] = { error: `Error fetching ${label}`, data: null };
144
+ }
145
+ }))();
146
+ yield Promise.allSettled([
147
+ ...morphoMarkets.map((m) => __awaiter(this, void 0, void 0, function* () { markets.morphoMarketsData[m.value] = yield (0, morphoBlue_1._getMorphoBluePortfolioMarketData)(client, network, m); })),
148
+ ...morphoMidnightMarkets.map((m) => __awaiter(this, void 0, void 0, function* () { markets.morphoMidnightMarketsData[m.value] = yield (0, morphoMidnight_1._getMorphoMidnightMarketData)(client, network, m); })),
149
+ ...compoundV3Markets.map((m) => __awaiter(this, void 0, void 0, function* () { markets.compoundV3MarketsData[m.value] = yield (0, compoundV3_1._getCompoundV3MarketsData)(client, network, m, defaultClient); })),
150
+ ...sparkMarkets.map((m) => __awaiter(this, void 0, void 0, function* () { markets.sparkMarketsData[m.value] = yield (0, spark_1._getSparkMarketsData)(client, network, m); })),
151
+ ...aaveV3Markets.map((m) => __awaiter(this, void 0, void 0, function* () { markets.aaveV3MarketsData[m.value] = yield (0, aaveV3_1._getAaveV3MarketData)(client, network, m); })),
152
+ ...aaveV4Spokes.map((s) => __awaiter(this, void 0, void 0, function* () { markets.aaveV4SpokesData[s.value] = yield (0, aaveV4_1._getAaveV4SpokeData)(client, network, s); })),
153
+ ...aaveV2Markets.map((m) => __awaiter(this, void 0, void 0, function* () { markets.aaveV2MarketsData[m.value] = yield (0, aaveV2_1._getAaveV2MarketsData)(client, network, m); })),
154
+ ...compoundV2Markets.map((m) => __awaiter(this, void 0, void 0, function* () { markets.compoundV2MarketsData[m.value] = yield (0, compoundV2_1._getCompoundV2MarketsData)(client, network); })),
155
+ ...crvUsdMarkets.map((m) => __awaiter(this, void 0, void 0, function* () { markets.crvUsdMarketsData[m.value] = yield (0, curveUsd_1._getCurveUsdGlobalData)(client, network, m); })),
156
+ ...llamaLendMarkets.map((m) => __awaiter(this, void 0, void 0, function* () { markets.llamaLendMarketsData[m.value] = yield (0, llamaLend_1._getLlamaLendGlobalData)(client, network, m); })),
157
+ ...liquityV2Markets.map((m) => __awaiter(this, void 0, void 0, function* () { markets.liquityV2MarketsData[m.value] = yield (0, liquityV2_1._getLiquityV2MarketData)(client, network, m); })),
158
+ (() => __awaiter(this, void 0, void 0, function* () {
159
+ if (!fetchFluid || !fetchFluidMarkets)
160
+ return;
161
+ try {
162
+ markets.fluidMarketsData = yield (0, fluid_1._getAllFluidMarketDataPortfolio)(client, network);
163
+ }
164
+ catch (error) {
165
+ console.error('Error fetching Fluid markets data:', error);
166
+ }
167
+ }))(),
168
+ (() => __awaiter(this, void 0, void 0, function* () {
169
+ if (!fetchMaker)
170
+ return;
171
+ try {
172
+ markets.makerMarketsData = yield (0, maker_1._getMakerIlksData)(client, network, markets_1.MakerActiveIlks);
173
+ }
174
+ catch (error) {
175
+ console.error('Error fetching Maker ilks data:', error);
176
+ }
177
+ }))(),
178
+ ...addresses.map((address) => __awaiter(this, void 0, void 0, function* () {
179
+ if (!fetchMaker)
180
+ return;
181
+ makerCdps[lower(address)] = yield (0, maker_1._getUserCdps)(client, network, address);
182
+ })),
183
+ ...addresses.map((address) => fetchFluid && run(`Fluid positions for address ${address}`, () => (0, fluid_1._getUserPositionsPortfolio)(client, network, address), (userPositions) => {
184
+ for (const position of userPositions) {
185
+ if (position.userData && positive(position.userData.suppliedUsd))
186
+ positions[lower(address)].fluid.data[position.userData.nftId] = position.userData;
187
+ }
188
+ }, (err) => { positions[lower(address)].fluid = { error: err.error, data: {} }; })),
189
+ ...(fetchStaking ? [
190
+ ...addresses.map((address) => fetchFluid && run(`Fluid lend data for address ${address}`, () => (0, fluid_1._getAllUserEarnPositionsWithFTokens)(client, network, address), (data) => { stakingPositions[lower(address)].fluid = data; }, (err) => { stakingPositions[lower(address)].fluid = err; })),
191
+ ...addresses.map((address) => fetchLiquity && run(`Liquity staking data for address ${address}`, () => (0, liquity_1.getLiquityStakingData)(client, network, address), (data) => { stakingPositions[lower(address)].liquity = data; }, (err) => { stakingPositions[lower(address)].liquity = err; })),
192
+ ...addresses.map((address) => has(types_1.PortfolioProtocol.AaveV3) && isMainnet && run(`Aave V3 staking data for address ${address}`, () => (0, aaveV3_1.getStakeAaveData)(client, network, address), (data) => { stakingPositions[lower(address)].aaveV3 = data; }, (err) => { stakingPositions[lower(address)].aaveV3 = err; })),
193
+ ...addresses.map((address) => has(types_1.PortfolioProtocol.AaveV3) && isMainnet && run(`Umbrella staking data for address ${address}`, () => (0, umbrella_1.getUmbrellaData)(client, network, address), (data) => { stakingPositions[lower(address)].umbrella = data; }, (err) => { stakingPositions[lower(address)].umbrella = err; })),
194
+ ...perAddress(liquityV2StakingMarkets, (market, address) => run(`Liquity V2 staking data for address ${address}, market ${market.value}`, () => (0, liquityV2_1.getLiquityV2Staking)(client, network, market.value, address), (data) => { stakingPositions[lower(address)].liquityV2[market.value] = { error: '', data }; }, (err) => { stakingPositions[lower(address)].liquityV2[market.value] = err; })),
195
+ ] : []),
196
+ ...(fetchRewards ? [
197
+ batchRewards('king', 'King rewards data', () => (0, king_1.getKingRewards)(client, network, addresses), isMainnet),
198
+ batchRewards('uniswap', 'Uniswap rewards data', () => (0, uniswap_1.getUniswapRewards)(client, network, addresses), isMainnet),
199
+ batchRewards('spk', 'Spark Airdrop rewards data', () => (0, spark_2.fetchSparkAirdropRewards)(client, network, addresses), isMainnet && has(types_1.PortfolioProtocol.Spark)),
200
+ batchRewards('ethena', 'Ethena Airdrop rewards data', () => (0, ethena_1.fetchEthenaAirdropRewards)(addresses), isMainnet),
201
+ ...addresses.map((address) => run(`Merkl rewards data for address ${address}`, () => (0, aaveV3_2.getMerklUnclaimedRewards)(address, network), (data) => { rewardsData[lower(address)].merkl = { error: '', data }; }, (err) => { rewardsData[lower(address)].merkl = err; })),
202
+ ...perAddress(aaveV3Markets, (market, address) => run(`Aave V3 rewards data for address ${address}, market ${market.value}`, () => (0, aaveV3_2.getUnclaimedRewardsForAllMarkets)(client, network, address, market.providerAddress), (data) => { rewardsData[lower(address)].aaveV3[market.value] = { error: '', data }; }, (err) => { rewardsData[lower(address)].aaveV3[market.value] = err; })),
203
+ ...perAddress(sparkMarkets, (market, address) => {
204
+ if (!isMainnet) {
205
+ rewardsData[lower(address)].spark[market.value] = { error: '', data: [] };
206
+ return Promise.resolve();
207
+ }
208
+ return run(`Spark rewards data for address ${address}, market ${market.value}`, () => (0, spark_2.fetchSparkRewards)(client, network, address, market.providerAddress), (data) => { rewardsData[lower(address)].spark[market.value] = { error: '', data }; }, (err) => { rewardsData[lower(address)].spark[market.value] = err; });
209
+ }),
210
+ ] : []),
211
+ ]);
212
+ yield Promise.all([
213
+ ...perAddress(aaveV3Markets, (market, address) => run(`AaveV3 account data for address ${address} on market ${market.value}`, () => (0, aaveV3_1._getAaveV3AccountData)(client, network, address, Object.assign({ selectedMarket: market }, markets.aaveV3MarketsData[market.value])), (data) => { if (returnEmptyEModePositions || positive(data.suppliedUsd))
214
+ positions[lower(address)].aaveV3[market.value] = { error: '', data }; }, (err) => { positions[lower(address)].aaveV3[market.value] = err; })),
215
+ ...perAddress(sparkMarkets, (market, address) => run(`Spark account data for address ${address} on market ${market.value}`, () => (0, spark_1._getSparkAccountData)(client, network, address, { selectedMarket: market, assetsData: markets.sparkMarketsData[market.value].assetsData, eModeCategoriesData: markets.sparkMarketsData[market.value].eModeCategoriesData }), (data) => { if (returnEmptyEModePositions || positive(data.suppliedUsd))
216
+ positions[lower(address)].spark[market.value] = { error: '', data }; }, (err) => { positions[lower(address)].spark[market.value] = err; })),
217
+ ...perAddress(aaveV4Spokes, (spoke, address) => run(`AaveV4 account data for address ${address} on spoke ${spoke.value}`, () => (0, aaveV4_1._getAaveV4AccountData)(client, network, markets.aaveV4SpokesData[spoke.value], address), (data) => { if (positive(data.suppliedUsd))
218
+ positions[lower(address)].aaveV4[spoke.value] = { error: '', data }; }, (err) => { positions[lower(address)].aaveV4[spoke.value] = err; })),
219
+ ...perAddress(morphoMarkets, (market, address) => run(`MorphoBlue account data for address ${address} on market ${market.value}`, () => (0, morphoBlue_1._getMorphoBlueAccountData)(client, network, address, market, markets.morphoMarketsData[market.value]), (data) => { if (positive(data.suppliedUsd))
220
+ positions[lower(address)].morphoBlue[market.value] = { error: '', data }; }, (err) => { positions[lower(address)].morphoBlue[market.value] = err; })),
221
+ ...(fetchStaking ? perAddress(morphoMarkets, (market, address) => run(`MorphoBlue earn data for address ${address} on market ${market.value}`, () => (0, morphoBlue_1.getMorphoEarn)(client, network, address, market, markets.morphoMarketsData[market.value]), (data) => { if (data && positive(data.amount))
222
+ stakingPositions[lower(address)].morphoBlue[market.value] = { error: '', data }; }, (err) => { stakingPositions[lower(address)].morphoBlue[market.value] = err; })) : []),
223
+ ...perAddress(morphoMidnightMarkets, (market, address) => {
224
+ var _a;
225
+ if (!((_a = markets.morphoMidnightMarketsData[market.value]) === null || _a === void 0 ? void 0 : _a.isCreated))
226
+ return Promise.resolve();
227
+ return run(`MorphoMidnight account data for address ${address} on market ${market.value}`, () => (0, morphoMidnight_1._getMorphoMidnightAccountData)(client, network, address, market, markets.morphoMidnightMarketsData[market.value]), (data) => { if (positive(data.suppliedUsd))
228
+ positions[lower(address)].morphoMidnight[market.value] = { error: '', data }; }, (err) => { positions[lower(address)].morphoMidnight[market.value] = err; });
229
+ }),
230
+ ...perAddress(compoundV3Markets, (market, address) => run(`CompoundV3 account data for address ${address} on market ${market.value}`, () => (0, compoundV3_1._getCompoundV3AccountData)(client, network, address, constants_1.ZERO_ADDRESS, { selectedMarket: market, assetsData: markets.compoundV3MarketsData[market.value].assetsData }), (data) => { if (positive(data.suppliedUsd))
231
+ positions[lower(address)].compoundV3[market.value] = { error: '', data }; }, (err) => { positions[lower(address)].compoundV3[market.value] = err; })),
232
+ ...perAddress(compoundV2Markets, (market, address) => run(`CompoundV2 account data for address ${address}`, () => (0, compoundV2_1._getCompoundV2AccountData)(client, network, address, markets.compoundV2MarketsData[market.value].assetsData), (data) => { if (positive(data.suppliedUsd))
233
+ positions[lower(address)].compoundV2[market.value] = { error: '', data }; }, (err) => { positions[lower(address)].compoundV2[market.value] = err; })),
234
+ ...perAddress(aaveV2Markets, (market, address) => run(`AaveV2 account data for address ${address}`, () => (0, aaveV2_1._getAaveV2AccountData)(client, network, address, markets.aaveV2MarketsData[market.value].assetsData, market), (data) => { if (positive(data.suppliedUsd))
235
+ positions[lower(address)].aaveV2[market.value] = { error: '', data }; }, (err) => { positions[lower(address)].aaveV2[market.value] = err; })),
236
+ ...perAddress(crvUsdMarkets, (market, address) => run(`Curve USD account data for address ${address} on market ${market.value}`, () => (0, curveUsd_1._getCurveUsdUserData)(client, network, address, market, markets.crvUsdMarketsData[market.value].activeBand, markets.crvUsdMarketsData[market.value].borrowRate), (data) => { if (positive(data.suppliedUsd) || positive(data.borrowedUsd))
237
+ positions[lower(address)].crvUsd[market.value] = { error: '', data }; }, (err) => { positions[lower(address)].crvUsd[market.value] = err; })),
238
+ ...perAddress(llamaLendMarkets, (market, address) => run(`LlamaLend account data for address ${address} on market ${market.value}`, () => (0, llamaLend_1._getLlamaLendUserData)(client, network, address, market, markets.llamaLendMarketsData[market.value]), (data) => {
239
+ if (positive(data.suppliedUsd) || positive(data.borrowedUsd)) {
240
+ positions[lower(address)].llamaLend[market.value] = { error: '', data: Object.assign(Object.assign({}, data), { borrowRate: markets.llamaLendMarketsData[market.value].borrowRate }) };
241
+ }
242
+ }, (err) => { positions[lower(address)].llamaLend[market.value] = err; })),
243
+ ...addresses.map((address) => (makerCdps[lower(address)] || []).map((cdpInfo) => run(`Maker CDP data for address ${address} with ID ${cdpInfo.id}`, () => (0, maker_1._getMakerCdpData)(client, network, cdpInfo, markets.makerMarketsData[cdpInfo.ilkLabel]), (data) => { if (data)
244
+ positions[lower(address)].maker[cdpInfo.id] = { error: '', data }; }, (err) => { positions[lower(address)].maker[cdpInfo.id] = err; }))).flat(),
245
+ ...addresses.map((address) => fetchLiquity && run(`Liquity trove info for address ${address}`, () => (0, liquity_1._getLiquityTroveInfo)(client, network, address), (data) => { if (positive(data.collateral))
246
+ positions[lower(address)].liquity = { error: '', data }; }, (err) => { positions[lower(address)].liquity = err; })),
247
+ ...(fetchStaking && has(types_1.PortfolioProtocol.LiquityV2) ? addresses.map((address) => {
248
+ if (!isMainnet) {
249
+ stakingPositions[lower(address)].liquityV2SBoldYBold = { error: '', data: null };
250
+ return Promise.resolve();
251
+ }
252
+ return run(`sBold/yBold data for address ${address}`, () => (0, liquityV2_1.getLiquitySAndYBold)(client, network, stakingPositions[lower(address)].liquityV2, address), (data) => { stakingPositions[lower(address)].liquityV2SBoldYBold = { error: '', data }; }, (err) => { stakingPositions[lower(address)].liquityV2SBoldYBold = err; });
253
+ }) : []),
254
+ ]);
255
+ return {
256
+ positions,
257
+ stakingPositions,
258
+ rewardsData,
259
+ markets,
260
+ };
261
+ });
262
+ }
@@ -11,4 +11,5 @@ export declare function getShifterPortfolioData(provider: EthereumProvider, netw
11
11
  markets: PortfolioMarketsData;
12
12
  }>;
13
13
  export * from './discovery';
14
+ export * from './customDeFiData';
14
15
  export { getWalletLendingSummaries } from './lendingSummaries';