@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
@@ -1,5 +1,4 @@
1
1
  import { Client } from 'viem';
2
2
  import { EthAddress, NetworkNumber } from '../types/common';
3
- import { KingRewardsClaimableToken } from '../types/claiming';
4
3
  export declare const fetchKingRewards: (walletAddress: EthAddress) => Promise<any>;
5
- export declare const getKingRewards: (provider: Client, network: NetworkNumber, walletAddresses: EthAddress[]) => Promise<Record<string, KingRewardsClaimableToken[]>>;
4
+ export declare const getKingRewards: (provider: Client, network: NetworkNumber, walletAddresses: EthAddress[]) => Promise<Record<string, any[]>>;
@@ -1,6 +1,6 @@
1
1
  import { Client } from 'viem';
2
2
  import { EthAddress, NetworkNumber } from '../types/common';
3
- import { SparkAirdropClaimableToken, SparkRewardsClaimableToken } from '../types/claiming';
3
+ import { SparkRewardsClaimableToken } from '../types/claiming';
4
4
  export declare const fetchSpkAirdropRewards: (walletAddress: EthAddress) => Promise<any>;
5
- export declare const fetchSparkAirdropRewards: (provider: Client, network: NetworkNumber, walletAddresses: EthAddress[]) => Promise<Record<string, SparkAirdropClaimableToken[]>>;
5
+ export declare const fetchSparkAirdropRewards: (provider: Client, network: NetworkNumber, walletAddresses: EthAddress[]) => Promise<Record<string, any[]>>;
6
6
  export declare const fetchSparkRewards: (provider: Client, network: NetworkNumber, walletAddress: EthAddress, marketAddress: EthAddress) => Promise<SparkRewardsClaimableToken[]>;
@@ -10,7 +10,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
10
10
  import { assetAmountInEth, getAssetInfoByAddress } from '@defisaver/tokens';
11
11
  import Dec from 'decimal.js';
12
12
  import { createViemContractFromConfigFunc, SparkIncentiveDataProviderContractViem, SparkRewardsControllerViem, } from '../contracts';
13
- import { ClaimType, SparkAirdropType, } from '../types/claiming';
13
+ import { ClaimType, SparkAirdropType } from '../types/claiming';
14
14
  import { compareAddresses, getEthAmountForDecimals } from '../services/utils';
15
15
  const IGNITION_REWARDS = '0xCBA0C0a2a0B6Bb11233ec4EA85C5bFfea33e724d';
16
16
  const PFL3_REWARDS = '0x7ac96180C4d6b2A328D3a19ac059D0E7Fc3C6d41';
@@ -1,6 +1,6 @@
1
1
  import { Client, PublicClient } from 'viem';
2
2
  import { EthAddress, EthereumProvider, NetworkNumber } from '../types/common';
3
- import { FluidAssetsData, FluidEarnPositionData, FluidMarketData, FluidMarketInfo, FluidUsedAssets, FluidVaultData, InnerFluidMarketData } from '../types';
3
+ import { FluidAssetsData, FluidMarketData, FluidMarketInfo, FluidUsedAssets, FluidVaultData, InnerFluidMarketData } from '../types';
4
4
  export { FluidMerklOpportunityType, buildFluidMerklRewardMap, getFluidMerklCampaigns, attachFluidMerklIncentives, } from './merkl';
5
5
  export declare const EMPTY_USED_ASSET: {
6
6
  isSupplied: boolean;
@@ -71,10 +71,54 @@ export declare const getFluidTokenData: (provider: EthereumProvider, network: Ne
71
71
  depositRate: string;
72
72
  withdrawRate: string;
73
73
  }>;
74
- export declare const _getFluidDepositData: (provider: Client, network: NetworkNumber, token: string, address: EthAddress) => Promise<FluidEarnPositionData>;
75
- export declare const getFluidDepositData: (provider: EthereumProvider, network: NetworkNumber, token: string, address: EthAddress) => Promise<FluidEarnPositionData>;
76
- export declare const _getAllUserEarnPositionsWithFTokens: (provider: Client, network: NetworkNumber, user: EthAddress) => Promise<FluidEarnPositionData[]>;
77
- export declare const getAllUserEarnPositionsWithFTokens: (provider: EthereumProvider, network: NetworkNumber, user: EthAddress) => Promise<FluidEarnPositionData[]>;
74
+ export declare const _getFluidDepositData: (provider: Client, network: NetworkNumber, token: string, address: EthAddress) => Promise<{
75
+ fTokenAddress: string | undefined;
76
+ fTokenSymbol: string;
77
+ decimals: string;
78
+ totalDeposited: string;
79
+ withdrawable: string;
80
+ apy: string;
81
+ depositRate: string;
82
+ withdrawRate: string;
83
+ deposited: string;
84
+ depositedShares: string;
85
+ }>;
86
+ export declare const getFluidDepositData: (provider: EthereumProvider, network: NetworkNumber, token: string, address: EthAddress) => Promise<{
87
+ fTokenAddress: string | undefined;
88
+ fTokenSymbol: string;
89
+ decimals: string;
90
+ totalDeposited: string;
91
+ withdrawable: string;
92
+ apy: string;
93
+ depositRate: string;
94
+ withdrawRate: string;
95
+ deposited: string;
96
+ depositedShares: string;
97
+ }>;
98
+ export declare const _getAllUserEarnPositionsWithFTokens: (provider: Client, network: NetworkNumber, user: EthAddress) => Promise<{
99
+ fTokenAddress: string | undefined;
100
+ fTokenSymbol: string;
101
+ decimals: string;
102
+ totalDeposited: string;
103
+ withdrawable: string;
104
+ apy: string;
105
+ depositRate: string;
106
+ withdrawRate: string;
107
+ deposited: string;
108
+ depositedShares: string;
109
+ }[]>;
110
+ export declare const getAllUserEarnPositionsWithFTokens: (provider: EthereumProvider, network: NetworkNumber, user: EthAddress) => Promise<{
111
+ fTokenAddress: string | undefined;
112
+ fTokenSymbol: string;
113
+ decimals: string;
114
+ totalDeposited: string;
115
+ withdrawable: string;
116
+ apy: string;
117
+ depositRate: string;
118
+ withdrawRate: string;
119
+ deposited: string;
120
+ depositedShares: string;
121
+ }[]>;
78
122
  export declare const _getUserPositions: (provider: PublicClient, network: NetworkNumber, user: EthAddress) => Promise<{
79
123
  marketData: FluidMarketData | undefined;
80
124
  userData: {
@@ -1,4 +1,4 @@
1
- import { AaveHelperCommon, AaveMarketInfo, AaveV3AggregatedPositionData, AaveV3AssetsData, AaveV3UsedAsset, AaveV3UsedAssets, AaveVersions } from '../../types';
1
+ import { AaveHelperCommon, AaveMarketInfo, AaveV3AggregatedPositionData, AaveV3AssetsData, AaveV3UsedAsset, AaveV3UsedAssets, AaveVersions, EModeCategoriesData } from '../../types';
2
2
  import { EthereumProvider, NetworkNumber } from '../../types/common';
3
3
  export declare const AAVE_V3_MARKETS: AaveVersions[];
4
4
  export declare const isAaveV2: ({ selectedMarket }: {
@@ -15,6 +15,14 @@ export declare const aaveV3IsInSiloedMode: ({ usedAssets, assetsData }: {
15
15
  usedAssets: AaveV3UsedAssets;
16
16
  assetsData: AaveV3AssetsData;
17
17
  }) => boolean;
18
+ export declare const aaveV3IsEmodeIsolated: ({ eModeCategory, eModeCategoriesData }: {
19
+ eModeCategory: number;
20
+ eModeCategoriesData?: EModeCategoriesData;
21
+ }) => boolean;
22
+ export declare const aaveV3CanBeCollateralInEmode: ({ eModeCategory, eModeCategoriesData }: {
23
+ eModeCategory: number;
24
+ eModeCategoriesData?: EModeCategoriesData;
25
+ }, _asset: string) => boolean;
18
26
  export declare const aaveAnyGetCollSuppliedAssets: ({ usedAssets }: {
19
27
  usedAssets: AaveV3UsedAssets;
20
28
  }) => AaveV3UsedAsset[];
@@ -33,6 +33,12 @@ export const isAaveV2 = ({ selectedMarket }) => selectedMarket.value === AaveVer
33
33
  export const isAaveV3 = ({ selectedMarket }) => AAVE_V3_MARKETS.includes(selectedMarket.value);
34
34
  export const aaveV3IsInIsolationMode = ({ usedAssets, assetsData }) => Object.values(usedAssets).some(({ symbol, collateral }) => collateral && assetsData[symbol].isIsolated);
35
35
  export const aaveV3IsInSiloedMode = ({ usedAssets, assetsData }) => Object.values(usedAssets).some(({ symbol, debt }) => debt && assetsData[symbol].isSiloed);
36
+ export const aaveV3IsEmodeIsolated = ({ eModeCategory, eModeCategoriesData }) => { var _a; return eModeCategory !== 0 && !!((_a = eModeCategoriesData === null || eModeCategoriesData === void 0 ? void 0 : eModeCategoriesData[eModeCategory]) === null || _a === void 0 ? void 0 : _a.isolated); };
37
+ export const aaveV3CanBeCollateralInEmode = ({ eModeCategory, eModeCategoriesData }, _asset) => {
38
+ if (!aaveV3IsEmodeIsolated({ eModeCategory, eModeCategoriesData }))
39
+ return true;
40
+ return eModeCategoriesData[eModeCategory].collateralAssets.includes(getNativeAssetFromWrapped(_asset));
41
+ };
36
42
  export const aaveAnyGetCollSuppliedAssets = ({ usedAssets }) => Object.values(usedAssets)
37
43
  .filter(({ isSupplied, collateral }) => isSupplied && collateral);
38
44
  export const aaveAnyGetSuppliableAssets = (_a) => {
@@ -40,13 +46,16 @@ export const aaveAnyGetSuppliableAssets = (_a) => {
40
46
  const data = Object.assign({ usedAssets, eModeCategory, assetsData, selectedMarket, network }, rest);
41
47
  const collAccountAssets = aaveAnyGetCollSuppliedAssets(data);
42
48
  const marketAssets = Object.values(assetsData);
43
- if (collAccountAssets.length === 0 || !isAaveV3(data))
49
+ if (!isAaveV3(data))
44
50
  return marketAssets.filter(({ canBeSupplied }) => canBeSupplied).map(({ symbol }) => ({ symbol, canBeCollateral: true }));
51
+ const canBeCollateralInEmode = (symbol) => aaveV3CanBeCollateralInEmode(data, symbol);
52
+ if (collAccountAssets.length === 0)
53
+ return marketAssets.filter(({ canBeSupplied }) => canBeSupplied).map(({ symbol }) => ({ symbol, canBeCollateral: canBeCollateralInEmode(symbol) }));
45
54
  if (aaveV3IsInIsolationMode(data)) {
46
55
  const collAsset = collAccountAssets[0].symbol;
47
- return marketAssets.filter(d => d.canBeSupplied).map(({ symbol }) => ({ symbol, canBeCollateral: symbol === collAsset }));
56
+ return marketAssets.filter(d => d.canBeSupplied).map(({ symbol }) => ({ symbol, canBeCollateral: symbol === collAsset && canBeCollateralInEmode(symbol) }));
48
57
  }
49
- return marketAssets.filter(d => d.canBeSupplied).map(({ symbol, isIsolated }) => ({ symbol, canBeCollateral: !isIsolated }));
58
+ return marketAssets.filter(d => d.canBeSupplied).map(({ symbol, isIsolated }) => ({ symbol, canBeCollateral: !isIsolated && canBeCollateralInEmode(symbol) }));
50
59
  };
51
60
  export const aaveAnyGetSuppliableAsCollAssets = (_a) => {
52
61
  var { usedAssets, eModeCategory, assetsData, selectedMarket, network } = _a, rest = __rest(_a, ["usedAssets", "eModeCategory", "assetsData", "selectedMarket", "network"]);
@@ -56,12 +65,15 @@ export const aaveAnyGetEmodeMutableProps = ({ eModeCategory, eModeCategoriesData
56
65
  const asset = getNativeAssetFromWrapped(_asset);
57
66
  const assetData = assetsData[asset];
58
67
  const eModeCategoryData = (eModeCategoriesData === null || eModeCategoriesData === void 0 ? void 0 : eModeCategoriesData[eModeCategory]) || {
59
- collateralAssets: [], ltvZeroAssets: [], collateralFactor: '0', liquidationRatio: '0',
68
+ collateralAssets: [], ltvZeroAssets: [], collateralFactor: '0', liquidationRatio: '0', isolated: false,
60
69
  };
61
70
  if (eModeCategory === 0
62
71
  || !eModeCategoryData.collateralAssets.includes(asset)
63
72
  || new Dec(eModeCategoryData.collateralFactor || 0).eq(0)) {
64
73
  const { liquidationRatio, collateralFactor } = assetData;
74
+ if (eModeCategory !== 0 && eModeCategoryData.isolated && !eModeCategoryData.collateralAssets.includes(asset)) {
75
+ return ({ liquidationRatio, collateralFactor: '0' });
76
+ }
65
77
  return ({ liquidationRatio, collateralFactor });
66
78
  }
67
79
  if (eModeCategoryData.ltvZeroAssets.includes(asset))
@@ -96,7 +108,10 @@ export const aaveAnyGetUserReserveLtvAndLltv = ({ eModeCategory, eModeCategories
96
108
  || !eModeCategoryData
97
109
  || !eModeCategoryData.collateralAssets.includes(asset)
98
110
  || new Dec(eModeCategoryData.collateralFactor || 0).eq(0)) {
99
- return { ltv: assetData.collateralFactor, lltv: assetData.liquidationRatio };
111
+ const ltv = eModeCategory !== 0 && (eModeCategoryData === null || eModeCategoryData === void 0 ? void 0 : eModeCategoryData.isolated) && !eModeCategoryData.collateralAssets.includes(asset)
112
+ ? '0'
113
+ : assetData.collateralFactor;
114
+ return { ltv, lltv: assetData.liquidationRatio };
100
115
  }
101
116
  const ltv = eModeCategoryData.ltvZeroAssets.includes(asset) ? '0' : eModeCategoryData.collateralFactor;
102
117
  return { ltv, lltv: eModeCategoryData.liquidationRatio };
@@ -1,6 +1,6 @@
1
1
  import { Client } from 'viem';
2
2
  import { Blockish, EthAddress, EthereumProvider, NetworkNumber, PositionBalances } from '../types/common';
3
- import { LiquityStakingData, LiquityTroveInfo } from '../types';
3
+ import { LiquityTroveInfo } from '../types';
4
4
  export declare const LIQUITY_NORMAL_MODE_RATIO = 110;
5
5
  export declare const LIQUITY_RECOVERY_MODE_RATIO = 150;
6
6
  export declare const _getLiquityAccountBalances: (provider: Client, network: NetworkNumber, block: Blockish, addressMapping: boolean, address: EthAddress) => Promise<PositionBalances>;
@@ -8,4 +8,14 @@ export declare const getLiquityAccountBalances: (provider: EthereumProvider, net
8
8
  export declare const getDebtInFront: (provider: EthereumProvider, address: EthAddress) => Promise<string>;
9
9
  export declare const _getLiquityTroveInfo: (provider: Client, network: NetworkNumber, address: EthAddress) => Promise<LiquityTroveInfo>;
10
10
  export declare const getLiquityTroveInfo: (provider: EthereumProvider, network: NetworkNumber, address: EthAddress) => Promise<LiquityTroveInfo>;
11
- export declare const getLiquityStakingData: (provider: Client, network: NetworkNumber, address: EthAddress) => Promise<LiquityStakingData>;
11
+ export declare const getLiquityStakingData: (provider: Client, network: NetworkNumber, address: EthAddress) => Promise<{
12
+ totalLUSDDeposited: string;
13
+ totalLQTYStaked: string;
14
+ stakedLQTY: string;
15
+ stakedLUSDBalance: string;
16
+ rewardETH: string;
17
+ rewardLUSD: string;
18
+ stabilityRewardETH: string;
19
+ stabilityRewardLQTY: string;
20
+ showStakingBalances: boolean;
21
+ }>;
@@ -1,6 +1,6 @@
1
1
  import { Client, PublicClient } from 'viem';
2
2
  import { EthAddress, EthereumProvider, NetworkNumber } from '../types/common';
3
- import { LiquityV2AssetsData, LiquityV2MarketData, LiquityV2MarketInfo, LiquityV2SBoldYBoldData, LiquityV2StakingData, LiquityV2TroveData, LiquityV2Versions } from '../types';
3
+ import { LiquityV2AssetsData, LiquityV2MarketData, LiquityV2MarketInfo, LiquityV2TroveData, LiquityV2Versions } from '../types';
4
4
  export type SPYieldGainParameters = {
5
5
  P: string;
6
6
  aggWeightedDebtSum: string;
@@ -44,5 +44,25 @@ export type sBoldYieldParameters = {
44
44
  wsETH: string;
45
45
  rETH: string;
46
46
  };
47
- export declare const getLiquityV2Staking: (provider: Client, network: NetworkNumber, market: LiquityV2Versions, user: EthAddress) => Promise<LiquityV2StakingData>;
48
- export declare const getLiquitySAndYBold: (provider: Client, network: NetworkNumber, markets: any, user: EthAddress) => Promise<LiquityV2SBoldYBoldData>;
47
+ export declare const getLiquityV2Staking: (provider: Client, network: NetworkNumber, market: LiquityV2Versions, user: EthAddress) => Promise<{
48
+ totalBOLDDeposited: string;
49
+ stakedBOLDBalance: string;
50
+ stabilityRewardColl: string;
51
+ stabilityRewardYield: string;
52
+ showStakingBalances: boolean;
53
+ debtTokenBalance: string;
54
+ stabilityPoolApy: string;
55
+ }>;
56
+ export declare const getLiquitySAndYBold: (provider: Client, network: NetworkNumber, markets: any, user: EthAddress) => Promise<{
57
+ spApy: string;
58
+ yBoldApy: string;
59
+ totalBoldDepositedSBold: string;
60
+ boldRateSBold: string;
61
+ maxWithdrawSBold: string;
62
+ totalBoldDepositedYBold: string;
63
+ boldRateYBold: string;
64
+ maxWithdrawYBold: string;
65
+ sBoldBalance: string;
66
+ yBoldBalance: string;
67
+ stYBoldBalance: string;
68
+ }>;
@@ -1,9 +1,9 @@
1
1
  import { EthAddress, EthereumProvider, NetworkNumber } from '../types/common';
2
- import { PortfolioDataOptions, PortfolioMarketsData, PortfolioPositionsData, PortfolioRewardsData, PortfolioStakingPositionsData } from '../types';
3
- export declare function getPortfolioData(provider: EthereumProvider, network: NetworkNumber, defaultProvider: EthereumProvider, addresses: EthAddress[], isSim?: boolean, options?: PortfolioDataOptions): Promise<{
2
+ import { PortfolioPositionsData } from '../types';
3
+ export declare function getPortfolioData(provider: EthereumProvider, network: NetworkNumber, defaultProvider: EthereumProvider, addresses: EthAddress[], isSim?: boolean): Promise<{
4
4
  positions: PortfolioPositionsData;
5
- stakingPositions: PortfolioStakingPositionsData;
6
- rewardsData: PortfolioRewardsData;
7
- markets: PortfolioMarketsData;
5
+ stakingPositions: any;
6
+ rewardsData: any;
7
+ markets: any;
8
8
  }>;
9
9
  export * from './discovery';
@@ -34,13 +34,8 @@ import { fetchEthenaAirdropRewards } from '../claiming/ethena';
34
34
  import { _getAaveV4AccountData, _getAaveV4SpokeData } from '../aaveV4';
35
35
  import { getUniswapRewards } from '../claiming/uniswap';
36
36
  export function getPortfolioData(provider_1, network_1, defaultProvider_1, addresses_1) {
37
- return __awaiter(this, arguments, void 0, function* (provider, network, defaultProvider, addresses, isSim = false, options = {}) {
37
+ return __awaiter(this, arguments, void 0, function* (provider, network, defaultProvider, addresses, isSim = false) {
38
38
  const isMainnet = network === NetworkNumber.Eth;
39
- const includeStaking = options.staking !== false;
40
- const includeRewards = options.rewards !== false;
41
- // The addresses staking and rewards are read for: none when left out, so their fetches below make no calls.
42
- const stakingAddresses = includeStaking ? addresses : [];
43
- const rewardsAddresses = includeRewards ? addresses : [];
44
39
  const isFluidSupported = [NetworkNumber.Eth, NetworkNumber.Arb, NetworkNumber.Base, NetworkNumber.Plasma].includes(network);
45
40
  const morphoMarkets = Object.values(MorphoBlueMarkets(network)).filter((market) => market.chainIds.includes(network));
46
41
  const morphoMidnightMarkets = Object.values(MorphoMidnightMarkets(network)).filter((market) => market.chainIds.includes(network));
@@ -112,7 +107,7 @@ export function getPortfolioData(provider_1, network_1, defaultProvider_1, addre
112
107
  };
113
108
  }
114
109
  // TODO: check default values, probably needed when fetching portfolio on unsupported networks
115
- for (const address of stakingAddresses) {
110
+ for (const address of addresses) {
116
111
  stakingPositions[address.toLowerCase()] = {
117
112
  aaveV3: {},
118
113
  morphoBlue: {},
@@ -126,20 +121,14 @@ export function getPortfolioData(provider_1, network_1, defaultProvider_1, addre
126
121
  error: '',
127
122
  data: {},
128
123
  },
129
- // Set by the sBOLD/yBOLD fetch below, whether it succeeds or fails.
130
- liquityV2SBoldYBold: { error: '', data: null },
131
124
  };
132
- }
133
- for (const address of rewardsAddresses) {
134
- // merkl, spk, king and uniswap are set by their fetches below, whether they succeed or fail.
135
125
  rewardsData[address.toLowerCase()] = {
136
- merkl: { error: '', data: null },
126
+ merkl: {},
137
127
  aaveV3: {},
138
128
  spark: {},
139
- spk: { error: '', data: null },
140
- king: { error: '', data: null },
129
+ spk: {},
130
+ king: {},
141
131
  ethena: {},
142
- uniswap: { error: '', data: null },
143
132
  };
144
133
  }
145
134
  yield Promise.allSettled([
@@ -215,7 +204,7 @@ export function getPortfolioData(provider_1, network_1, defaultProvider_1, addre
215
204
  }
216
205
  })),
217
206
  // === STAKING DATA (independent of market data) ===
218
- ...stakingAddresses.map((address) => __awaiter(this, void 0, void 0, function* () {
207
+ ...addresses.map((address) => __awaiter(this, void 0, void 0, function* () {
219
208
  try {
220
209
  if (!isFluidSupported)
221
210
  return;
@@ -226,7 +215,7 @@ export function getPortfolioData(provider_1, network_1, defaultProvider_1, addre
226
215
  stakingPositions[address.toLowerCase()].fluid = { error: `Error fetching Fluid lend data for address ${address}`, data: null };
227
216
  }
228
217
  })),
229
- ...stakingAddresses.map((address) => __awaiter(this, void 0, void 0, function* () {
218
+ ...addresses.map((address) => __awaiter(this, void 0, void 0, function* () {
230
219
  try {
231
220
  if (!isMainnet)
232
221
  return;
@@ -237,7 +226,7 @@ export function getPortfolioData(provider_1, network_1, defaultProvider_1, addre
237
226
  stakingPositions[address.toLowerCase()].liquity = { error: `Error fetching Liquity staking data for address ${address}`, data: null };
238
227
  }
239
228
  })),
240
- ...stakingAddresses.map((address) => __awaiter(this, void 0, void 0, function* () {
229
+ ...addresses.map((address) => __awaiter(this, void 0, void 0, function* () {
241
230
  try {
242
231
  if (!isMainnet)
243
232
  return;
@@ -248,7 +237,7 @@ export function getPortfolioData(provider_1, network_1, defaultProvider_1, addre
248
237
  stakingPositions[address.toLowerCase()].aaveV3 = { error: `Error fetching Aave V3 staking data for address ${address}`, data: null };
249
238
  }
250
239
  })),
251
- ...stakingAddresses.map((address) => __awaiter(this, void 0, void 0, function* () {
240
+ ...addresses.map((address) => __awaiter(this, void 0, void 0, function* () {
252
241
  try {
253
242
  if (!isMainnet)
254
243
  return;
@@ -260,7 +249,7 @@ export function getPortfolioData(provider_1, network_1, defaultProvider_1, addre
260
249
  }
261
250
  })),
262
251
  // Liquity V2 staking
263
- ...liquityV2MarketsStaking.map(market => stakingAddresses.map((address) => __awaiter(this, void 0, void 0, function* () {
252
+ ...liquityV2MarketsStaking.map(market => addresses.map((address) => __awaiter(this, void 0, void 0, function* () {
264
253
  try {
265
254
  if (!isMainnet) {
266
255
  stakingPositions[address.toLowerCase()].liquityV2[market.value] = { error: '', data: null };
@@ -279,13 +268,13 @@ export function getPortfolioData(provider_1, network_1, defaultProvider_1, addre
279
268
  (() => __awaiter(this, void 0, void 0, function* () {
280
269
  try {
281
270
  if (!isMainnet) {
282
- for (const address of rewardsAddresses) {
271
+ for (const address of addresses) {
283
272
  rewardsData[address.toLowerCase()].king = { error: '', data: [] };
284
273
  }
285
274
  return;
286
275
  }
287
- const kingRewards = yield getKingRewards(client, network, rewardsAddresses);
288
- for (const address of rewardsAddresses) {
276
+ const kingRewards = yield getKingRewards(client, network, addresses);
277
+ for (const address of addresses) {
289
278
  const lowerAddress = address.toLowerCase();
290
279
  rewardsData[lowerAddress].king = {
291
280
  error: '',
@@ -295,7 +284,7 @@ export function getPortfolioData(provider_1, network_1, defaultProvider_1, addre
295
284
  }
296
285
  catch (error) {
297
286
  console.error('Error fetching King rewards data in batch:', error);
298
- for (const address of rewardsAddresses) {
287
+ for (const address of addresses) {
299
288
  rewardsData[address.toLowerCase()].king = {
300
289
  error: 'Error fetching King rewards data in batch',
301
290
  data: null,
@@ -307,13 +296,13 @@ export function getPortfolioData(provider_1, network_1, defaultProvider_1, addre
307
296
  (() => __awaiter(this, void 0, void 0, function* () {
308
297
  try {
309
298
  if (!isMainnet) {
310
- for (const address of rewardsAddresses) {
299
+ for (const address of addresses) {
311
300
  rewardsData[address.toLowerCase()].uniswap = { error: '', data: [] };
312
301
  }
313
302
  return;
314
303
  }
315
- const uniswapRewards = yield getUniswapRewards(client, network, rewardsAddresses);
316
- for (const address of rewardsAddresses) {
304
+ const uniswapRewards = yield getUniswapRewards(client, network, addresses);
305
+ for (const address of addresses) {
317
306
  const lowerAddress = address.toLowerCase();
318
307
  rewardsData[lowerAddress].uniswap = {
319
308
  error: '',
@@ -323,7 +312,7 @@ export function getPortfolioData(provider_1, network_1, defaultProvider_1, addre
323
312
  }
324
313
  catch (error) {
325
314
  console.error('Error fetching Uniswap rewards data in batch:', error);
326
- for (const address of rewardsAddresses) {
315
+ for (const address of addresses) {
327
316
  rewardsData[address.toLowerCase()].uniswap = {
328
317
  error: 'Error fetching Uniswap rewards data in batch',
329
318
  data: null,
@@ -331,7 +320,7 @@ export function getPortfolioData(provider_1, network_1, defaultProvider_1, addre
331
320
  }
332
321
  }
333
322
  }))(),
334
- ...sparkMarkets.map((market) => rewardsAddresses.map((address) => __awaiter(this, void 0, void 0, function* () {
323
+ ...sparkMarkets.map((market) => addresses.map((address) => __awaiter(this, void 0, void 0, function* () {
335
324
  try {
336
325
  if (!isMainnet) {
337
326
  rewardsData[address.toLowerCase()].spark[market.value] = { error: '', data: [] };
@@ -345,7 +334,7 @@ export function getPortfolioData(provider_1, network_1, defaultProvider_1, addre
345
334
  rewardsData[address.toLowerCase()].spark[market.value] = { error: `Error fetching Spark rewards data for address ${address}`, data: null };
346
335
  }
347
336
  }))).flat(),
348
- ...rewardsAddresses.map((address) => __awaiter(this, void 0, void 0, function* () {
337
+ ...addresses.map((address) => __awaiter(this, void 0, void 0, function* () {
349
338
  try {
350
339
  const merklData = yield getMerklUnclaimedRewards(address, network);
351
340
  rewardsData[address.toLowerCase()].merkl = { error: '', data: merklData };
@@ -355,28 +344,27 @@ export function getPortfolioData(provider_1, network_1, defaultProvider_1, addre
355
344
  rewardsData[address.toLowerCase()].merkl = { error: `Error fetching Merkl rewards data for address ${address}`, data: null };
356
345
  }
357
346
  })),
358
- ...aaveV3Markets.map(market => rewardsAddresses.map((address) => __awaiter(this, void 0, void 0, function* () {
347
+ ...aaveV3Markets.map(market => addresses.map((address) => __awaiter(this, void 0, void 0, function* () {
359
348
  try {
360
349
  const aaveData = yield getUnclaimedRewardsForAllMarkets(client, network, address, market.providerAddress);
361
350
  rewardsData[address.toLowerCase()].aaveV3[market.value] = { error: '', data: aaveData };
362
351
  }
363
352
  catch (error) {
364
353
  console.error(`Error fetching Aave V3 Merit rewards data for address ${address}:`, error);
365
- // This market only: the other markets keep their rewards.
366
- rewardsData[address.toLowerCase()].aaveV3[market.value] = { error: `Error fetching Aave V3 rewards data for address ${address} on market ${market.value}`, data: null };
354
+ rewardsData[address.toLowerCase()].aaveV3 = { error: `Error fetching Aave V3 rewards data for address ${address}`, data: null };
367
355
  }
368
356
  }))).flat(),
369
357
  // Batch Spark Airdrop rewards
370
358
  (() => __awaiter(this, void 0, void 0, function* () {
371
359
  try {
372
360
  if (!isMainnet) {
373
- for (const address of rewardsAddresses) {
361
+ for (const address of addresses) {
374
362
  rewardsData[address.toLowerCase()].spk = { error: '', data: [] };
375
363
  }
376
364
  return;
377
365
  }
378
- const sparkAirdropRewards = yield fetchSparkAirdropRewards(client, network, rewardsAddresses);
379
- for (const address of rewardsAddresses) {
366
+ const sparkAirdropRewards = yield fetchSparkAirdropRewards(client, network, addresses);
367
+ for (const address of addresses) {
380
368
  const lowerAddress = address.toLowerCase();
381
369
  rewardsData[lowerAddress].spk = {
382
370
  error: '',
@@ -386,7 +374,7 @@ export function getPortfolioData(provider_1, network_1, defaultProvider_1, addre
386
374
  }
387
375
  catch (error) {
388
376
  console.error('Error fetching Spark Airdrop rewards data in batch:', error);
389
- for (const address of rewardsAddresses) {
377
+ for (const address of addresses) {
390
378
  rewardsData[address.toLowerCase()].spk = {
391
379
  error: 'Error fetching Spark Airdrop rewards data in batch',
392
380
  data: null,
@@ -399,8 +387,8 @@ export function getPortfolioData(provider_1, network_1, defaultProvider_1, addre
399
387
  if (!isMainnet) {
400
388
  return;
401
389
  }
402
- const ethenaAirdropRewards = yield fetchEthenaAirdropRewards(rewardsAddresses);
403
- for (const address of rewardsAddresses) {
390
+ const ethenaAirdropRewards = yield fetchEthenaAirdropRewards(addresses);
391
+ for (const address of addresses) {
404
392
  const lowerAddress = address.toLowerCase();
405
393
  rewardsData[lowerAddress].ethena = {
406
394
  error: '',
@@ -410,7 +398,7 @@ export function getPortfolioData(provider_1, network_1, defaultProvider_1, addre
410
398
  }
411
399
  catch (error) {
412
400
  console.error('Error fetching Ethena Airdrop rewards data:', error);
413
- for (const address of rewardsAddresses) {
401
+ for (const address of addresses) {
414
402
  rewardsData[address.toLowerCase()].ethena = {
415
403
  error: 'Error fetching Ethena Airdrop rewards data in batch',
416
404
  data: null,
@@ -446,16 +434,15 @@ export function getPortfolioData(provider_1, network_1, defaultProvider_1, addre
446
434
  try {
447
435
  const [accDataPromise, earnDataPromise] = yield Promise.allSettled([
448
436
  _getMorphoBlueAccountData(client, network, address, market, morphoMarketsData[market.value]),
449
- includeStaking ? getMorphoEarn(client, network, address, market, morphoMarketsData[market.value]) : null,
437
+ getMorphoEarn(client, network, address, market, morphoMarketsData[market.value]),
450
438
  ]);
451
439
  if (accDataPromise.status === 'rejected') {
452
440
  console.error(`Error fetching MorphoBlue account data for address ${address} on market ${market.value}:`, accDataPromise.reason);
453
441
  positions[address.toLowerCase()].morphoBlue[market.value] = { error: `Error fetching MorphoBlue account data for address ${address} on market ${market.value}`, data: null };
454
442
  }
455
443
  if (earnDataPromise.status === 'rejected') {
456
- // An Earn failure belongs to the staking entry: the lending position is not the one that failed.
457
- console.error(`Error fetching MorphoBlue earn data for address ${address} on market ${market.value}:`, earnDataPromise.reason);
458
- stakingPositions[address.toLowerCase()].morphoBlue[market.value] = { error: `Error fetching MorphoBlue earn data for address ${address} on market ${market.value}`, data: null };
444
+ console.error(`Error fetching MorphoBlue account data for address ${address} on market ${market.value}:`, earnDataPromise.reason);
445
+ positions[address.toLowerCase()].morphoBlue[market.value] = { error: `Error fetching MorphoBlue account data for address ${address} on market ${market.value}`, data: null };
459
446
  }
460
447
  if (accDataPromise.status !== 'rejected') {
461
448
  const accData = accDataPromise.value;
@@ -514,11 +501,9 @@ export function getPortfolioData(provider_1, network_1, defaultProvider_1, addre
514
501
  positions[address.toLowerCase()].spark[market.value] = { error: `Error fetching Spark account data for address ${address} on market ${market.value}`, data: null };
515
502
  }
516
503
  }))).flat(),
517
- // flatMap, not map: each CDP's fetch has to be one of the awaited promises, or getPortfolioData can return
518
- // before a vault's data lands and the vault is missing from the result.
519
- ...addresses.flatMap((address) => {
504
+ ...addresses.map((address) => __awaiter(this, void 0, void 0, function* () {
520
505
  var _a;
521
- return ((_a = makerCdps[address.toLowerCase()]) !== null && _a !== void 0 ? _a : []).map((cdpInfo) => __awaiter(this, void 0, void 0, function* () {
506
+ return (_a = makerCdps[address.toLowerCase()]) === null || _a === void 0 ? void 0 : _a.map((cdpInfo) => __awaiter(this, void 0, void 0, function* () {
522
507
  try {
523
508
  const cdpData = yield _getMakerCdpData(client, network, cdpInfo);
524
509
  if (cdpData) {
@@ -530,7 +515,7 @@ export function getPortfolioData(provider_1, network_1, defaultProvider_1, addre
530
515
  positions[address.toLowerCase()].maker[cdpInfo.id] = { error: `Error fetching Maker CDP data for address ${address} with ID ${cdpInfo.id}`, data: null };
531
516
  }
532
517
  }));
533
- }),
518
+ })).flat(),
534
519
  ...aaveV2Markets.map((market) => addresses.map((address) => __awaiter(this, void 0, void 0, function* () {
535
520
  try {
536
521
  const accData = yield _getAaveV2AccountData(client, network, address, aaveV2MarketsData[market.value].assetsData, market);
@@ -591,7 +576,7 @@ export function getPortfolioData(provider_1, network_1, defaultProvider_1, addre
591
576
  }
592
577
  }))).flat(),
593
578
  // liquity sBold/yBold and staking options
594
- ...stakingAddresses.map((address) => __awaiter(this, void 0, void 0, function* () {
579
+ ...addresses.map((address) => __awaiter(this, void 0, void 0, function* () {
595
580
  try {
596
581
  if (!isMainnet) {
597
582
  stakingPositions[address.toLowerCase()].liquityV2SBoldYBold = { error: '', data: null };
@@ -18,7 +18,8 @@ import * as summerVaults from './summerVaults';
18
18
  import * as yearnV3Vaults from './yearnV3Vaults';
19
19
  export { morphoVaults, yearnVaults, makerDsr, skyOptions, sparkSavingsVaults, summerVaults, yearnV3Vaults, };
20
20
  export const getSavingsData = (provider, network, accounts) => __awaiter(void 0, void 0, void 0, function* () {
21
- const morphoVaultsList = Object.keys(morphoVaults.morphoVaultsOptions.MORPHO_VAULTS);
21
+ const morphoVaultsList = Object.keys(morphoVaults.morphoVaultsOptions.MORPHO_VAULTS)
22
+ .filter((key) => morphoVaults.morphoVaultsOptions.getMorphoVault(key).network === network);
22
23
  const yearnVaultsList = Object.keys(yearnVaults.yearnVaultsOptions.YEARN_VAULTS);
23
24
  const sparkSavingsVaultsList = Object.keys(sparkSavingsVaults.sparkSavingsVaultsOptions.SPARK_SAVINGS_VAULTS);
24
25
  const yearnV3VaultsList = Object.keys(yearnV3Vaults.yearnV3VaultsOptions.YEARN_V3_VAULTS);
@@ -26,7 +27,7 @@ export const getSavingsData = (provider, network, accounts) => __awaiter(void 0,
26
27
  .filter((key) => summerVaults.summerVaultsOptions.getSummerVault(key).network === network);
27
28
  const savingsData = {};
28
29
  yield Promise.all([
29
- ...(network === NetworkNumber.Eth ? [
30
+ ...(morphoVaultsList.length ? [
30
31
  (() => __awaiter(void 0, void 0, void 0, function* () {
31
32
  try {
32
33
  const vaults = morphoVaultsList.map((vaultKey) => morphoVaults.morphoVaultsOptions.getMorphoVault(vaultKey));
@@ -37,6 +38,8 @@ export const getSavingsData = (provider, network, accounts) => __awaiter(void 0,
37
38
  console.error('[getSavingsData] Error fetching morpho vaults:', err);
38
39
  }
39
40
  }))(),
41
+ ] : []),
42
+ ...(network === NetworkNumber.Eth ? [
40
43
  ...yearnVaultsList.map((vaultKey) => __awaiter(void 0, void 0, void 0, function* () {
41
44
  try {
42
45
  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
  */