@defisaver/positions-sdk 2.1.161-portfolio-api-dev → 2.1.161-portfolio-api-2-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 (58) hide show
  1. package/cjs/aaveV3/index.d.ts +2 -12
  2. package/cjs/aaveV3/sgho.d.ts +2 -16
  3. package/cjs/claiming/aaveV3.d.ts +2 -2
  4. package/cjs/claiming/ethena.d.ts +2 -1
  5. package/cjs/claiming/king.d.ts +2 -1
  6. package/cjs/claiming/spark.d.ts +2 -2
  7. package/cjs/fluid/index.d.ts +5 -49
  8. package/cjs/liquity/index.d.ts +2 -12
  9. package/cjs/liquityV2/index.d.ts +3 -23
  10. package/cjs/portfolio/index.d.ts +5 -5
  11. package/cjs/portfolio/index.js +46 -33
  12. package/cjs/types/aave.d.ts +83 -0
  13. package/cjs/types/fluid.d.ts +13 -0
  14. package/cjs/types/index.d.ts +1 -0
  15. package/cjs/types/index.js +1 -0
  16. package/cjs/types/liquity.d.ts +12 -0
  17. package/cjs/types/liquityV2.d.ts +24 -0
  18. package/cjs/types/portfolio.d.ts +88 -10
  19. package/cjs/umbrella/index.d.ts +2 -3
  20. package/esm/aaveV3/index.d.ts +2 -12
  21. package/esm/aaveV3/sgho.d.ts +2 -16
  22. package/esm/claiming/aaveV3.d.ts +2 -2
  23. package/esm/claiming/aaveV3.js +1 -1
  24. package/esm/claiming/ethena.d.ts +2 -1
  25. package/esm/claiming/king.d.ts +2 -1
  26. package/esm/claiming/spark.d.ts +2 -2
  27. package/esm/claiming/spark.js +1 -1
  28. package/esm/fluid/index.d.ts +5 -49
  29. package/esm/liquity/index.d.ts +2 -12
  30. package/esm/liquityV2/index.d.ts +3 -23
  31. package/esm/portfolio/index.d.ts +5 -5
  32. package/esm/portfolio/index.js +46 -33
  33. package/esm/types/aave.d.ts +83 -0
  34. package/esm/types/fluid.d.ts +13 -0
  35. package/esm/types/index.d.ts +1 -0
  36. package/esm/types/index.js +1 -0
  37. package/esm/types/liquity.d.ts +12 -0
  38. package/esm/types/liquityV2.d.ts +24 -0
  39. package/esm/types/portfolio.d.ts +88 -10
  40. package/esm/umbrella/index.d.ts +2 -3
  41. package/package.json +1 -1
  42. package/src/aaveV3/index.ts +2 -1
  43. package/src/aaveV3/sgho.ts +2 -17
  44. package/src/claiming/aaveV3.ts +4 -2
  45. package/src/claiming/ethena.ts +5 -5
  46. package/src/claiming/king.ts +3 -3
  47. package/src/claiming/spark.ts +6 -4
  48. package/src/fluid/index.ts +4 -3
  49. package/src/liquity/index.ts +2 -2
  50. package/src/liquityV2/index.ts +3 -3
  51. package/src/portfolio/index.ts +72 -55
  52. package/src/types/aave.ts +86 -0
  53. package/src/types/fluid.ts +14 -0
  54. package/src/types/index.ts +2 -1
  55. package/src/types/liquity.ts +13 -1
  56. package/src/types/liquityV2.ts +26 -1
  57. package/src/types/portfolio.ts +111 -11
  58. package/src/umbrella/index.ts +2 -1
@@ -1,5 +1,5 @@
1
1
  import { Client } from 'viem';
2
- import { AaveMarketInfo, AaveV3MarketData, AaveV3PositionData, AaveV3UsedAssets, EModeCategoryDataMapping } from '../types';
2
+ import { AaveMarketInfo, AaveV3MarketData, AaveV3PositionData, AaveV3UsedAssets, EModeCategoryDataMapping, StakeAaveData } from '../types';
3
3
  import { Blockish, EthAddress, EthereumProvider, NetworkNumber, PositionBalances } from '../types/common';
4
4
  import { getMeritCampaigns } from './merit';
5
5
  import { getMerkleCampaigns } from './merkl';
@@ -37,17 +37,7 @@ export declare const getAaveV3AccountData: (provider: EthereumProvider, network:
37
37
  export declare const getAaveV3FullPositionData: (provider: EthereumProvider, network: NetworkNumber, address: EthAddress, market: AaveMarketInfo) => Promise<AaveV3PositionData>;
38
38
  export declare const REWARDABLE_ASSETS: readonly ["0x028171bCA77440897B824Ca71D1c56caC55b68A3", "0x6C3c78838c761c6Ac7bE9F59fe808ea2A6E4379d", "0xD37EE7e4f452C6638c96536e68090De8cBcdb583", "0x279AF5b99540c1A3A7E3CDd326e19659401eF99e", "0xBcca60bB61934080951369a648Fb03DF4F96263C", "0x619beb58998eD2278e08620f97007e1116D5D25b", "0x3Ed3B47Dd13EC9a98b44e6204A523E766B225811", "0x531842cEbbdD378f8ee36D171d6cC9C4fcf475Ec", "0x9ff58f4fFB29fA2266Ab25e75e2A8b3503311656", "0x9c39809Dec7F95F5e0713634a4D0701329B3b4d2", "0x030bA81f1c18d280636F32af80b9AAd02Cf0854e", "0xF63B34710400CAd3e044cFfDcAb00a0f32E33eCf", "0xa06bC25B5805d5F8d82847D191Cb4Af5A3e873E0", "0x0b8f12b1788BFdE65Aa1ca52E3e9F3Ba401be16D", "0x6C5024Cd4F8A59110119C56f8933403A539555EB", "0xdC6a3Ab17299D9C2A412B0e0a4C1f55446AE0817", "0x5165d24277cD063F5ac44Efd447B27025e888f37", "0x7EbD09022Be45AD993BAA1CEc61166Fcc8644d97", "0xF256CC7847E919FAc9B808cC216cAc87CCF2f47a", "0xfAFEDF95E21184E3d880bd56D4806c4b8d31c69A", "0xB9D7CB55f463405CDfBe4E90a6D2Df01C2B92BF1", "0x5BdB050A92CADcCfCDcCCBFC17204a1C9cC0Ab73", "0xc713e5E149D5D0715DcD1c156a020976e7E56B88", "0xba728eAd5e496BE00DCF66F650b6d7758eCB50f8", "0x101cc05f4A51C0319f570d5E146a8C625198e636", "0x01C0eb1f8c6F1C1bF74ae028697ce7AA2a8b0E92", "0xc9BC48c72154ef3e5425641a3c747242112a46AF", "0xB5385132EE8321977FfF44b60cDE9fE9AB0B4e6b", "0x272F97b7a56a387aE942350bBC7Df5700f8a4576", "0x13210D4Fe0d5402bd7Ecbc4B5bC5cFcA3b71adB0", "0x2e8f4bdbe3d47d7d7de490437aea9915d930f1a3", "0xfdb93b3b10936cf81fa59a02a7523b6e2149b2b7", "0xA361718326c15715591c299427c62086F69923D9", "0xbA429f7011c9fa04cDd46a2Da24dc0FF0aC6099c", "0xd4937682df3C8aEF4FE912A96A74121C0829E664", "0xfE8F19B17fFeF0fDbfe2671F248903055AFAA8Ca", "0x683923dB55Fead99A79Fa01A27EeC3cB19679cC3", "0xC2e10006AccAb7B45D9184FcF5b7EC7763f5BaAe", "0x8dAE6Cb04688C62d939ed9B68d32Bc62e49970b1", "0x00ad8eBF64F141f1C81e9f8f792d3d1631c6c684", "0x6F634c6135D2EBD550000ac92F494F9CB8183dAe", "0x4dDff5885a67E4EffeC55875a3977D7E60F82ae0"];
39
39
  export declare const fetchYearlyMeritApyForStakingGho: () => Promise<string>;
40
- export declare const getStakeAaveData: (provider: Client, network: NetworkNumber, address: EthAddress) => Promise<{
41
- activatedCooldown: string;
42
- activatedCooldownAmount: string;
43
- stkAaveRewardsBalance: string;
44
- aaveRewardsBalance: string;
45
- stkAaveBalance: string;
46
- stkGhoBalance: string;
47
- ghoMeritApy: string;
48
- stkAaveApy: string;
49
- sgho: import("./sgho").SghoData;
50
- }>;
40
+ export declare const getStakeAaveData: (provider: Client, network: NetworkNumber, address: EthAddress) => Promise<StakeAaveData>;
51
41
  export { getMeritCampaigns, getMerkleCampaigns, };
52
42
  export { getSghoData } from './sgho';
53
43
  export type { SghoData, SghoUserData } from './sgho';
@@ -1,18 +1,4 @@
1
1
  import { EthAddress, NetworkNumber } from '../types/common';
2
- export interface SghoUserData {
3
- shares: string;
4
- balance: string;
5
- maxDeposit: string;
6
- maxWithdraw: string;
7
- underlyingBalance: string;
8
- }
9
- export interface SghoData {
10
- totalAssets: string;
11
- totalSupply: string;
12
- supplyCap: string;
13
- /** Target savings rate as an APY percent (e.g. "4.25" for 4.25%). */
14
- targetRate: string;
15
- paused: boolean;
16
- user: SghoUserData;
17
- }
2
+ import { SghoData } from '../types/aave';
3
+ export type { SghoData, SghoUserData } from '../types/aave';
18
4
  export declare const getSghoData: (network: NetworkNumber, address?: EthAddress) => Promise<SghoData>;
@@ -1,6 +1,6 @@
1
1
  import { Client } from 'viem';
2
2
  import { EthAddress, NetworkNumber } from '../types';
3
- import { ClaimableToken, MerklRewardsClaimableToken } from '../types/claiming';
4
- export declare function getUnclaimedRewardsForAllMarkets(provider: Client, network: NetworkNumber, walletAddress: EthAddress, marketAddress: EthAddress): Promise<ClaimableToken[]>;
3
+ import { AaveRewardsClaimableToken, ClaimableToken, MerklRewardsClaimableToken } from '../types/claiming';
4
+ export declare function getUnclaimedRewardsForAllMarkets(provider: Client, network: NetworkNumber, walletAddress: EthAddress, marketAddress: EthAddress): Promise<AaveRewardsClaimableToken[]>;
5
5
  export declare function getMerklUnclaimedRewards(account: EthAddress, network: NetworkNumber): Promise<MerklRewardsClaimableToken[]>;
6
6
  export declare function getMeritUnclaimedRewards(account: EthAddress, network: NetworkNumber): Promise<ClaimableToken[]>;
@@ -1,3 +1,4 @@
1
1
  import { EthAddress } from '../types/common';
2
+ import { EthenaAirdropClaimableToken } from '../types/claiming';
2
3
  export declare const fetchEthenaAirdropReward: (address: EthAddress) => Promise<any>;
3
- export declare const fetchEthenaAirdropRewards: (walletAddresses: EthAddress[]) => Promise<Record<string, any[]>>;
4
+ export declare const fetchEthenaAirdropRewards: (walletAddresses: EthAddress[]) => Promise<Record<string, EthenaAirdropClaimableToken[]>>;
@@ -1,4 +1,5 @@
1
1
  import { Client } from 'viem';
2
2
  import { EthAddress, NetworkNumber } from '../types/common';
3
+ import { KingRewardsClaimableToken } from '../types/claiming';
3
4
  export declare const fetchKingRewards: (walletAddress: EthAddress) => Promise<any>;
4
- export declare const getKingRewards: (provider: Client, network: NetworkNumber, walletAddresses: EthAddress[]) => Promise<Record<string, any[]>>;
5
+ export declare const getKingRewards: (provider: Client, network: NetworkNumber, walletAddresses: EthAddress[]) => Promise<Record<string, KingRewardsClaimableToken[]>>;
@@ -1,6 +1,6 @@
1
1
  import { Client } from 'viem';
2
2
  import { EthAddress, NetworkNumber } from '../types/common';
3
- import { SparkRewardsClaimableToken } from '../types/claiming';
3
+ import { SparkAirdropClaimableToken, 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, any[]>>;
5
+ export declare const fetchSparkAirdropRewards: (provider: Client, network: NetworkNumber, walletAddresses: EthAddress[]) => Promise<Record<string, SparkAirdropClaimableToken[]>>;
6
6
  export declare const fetchSparkRewards: (provider: Client, network: NetworkNumber, walletAddress: EthAddress, marketAddress: EthAddress) => Promise<SparkRewardsClaimableToken[]>;
@@ -1,6 +1,6 @@
1
1
  import { Client, PublicClient } from 'viem';
2
2
  import { EthAddress, EthereumProvider, NetworkNumber } from '../types/common';
3
- import { FluidAssetsData, FluidMarketData, FluidMarketInfo, FluidUsedAssets, FluidVaultData, InnerFluidMarketData } from '../types';
3
+ import { FluidAssetsData, FluidEarnPositionData, 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,54 +71,10 @@ 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<{
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
- }[]>;
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[]>;
122
78
  export declare const _getUserPositions: (provider: PublicClient, network: NetworkNumber, user: EthAddress) => Promise<{
123
79
  marketData: FluidMarketData | undefined;
124
80
  userData: {
@@ -1,6 +1,6 @@
1
1
  import { Client } from 'viem';
2
2
  import { Blockish, EthAddress, EthereumProvider, NetworkNumber, PositionBalances } from '../types/common';
3
- import { LiquityTroveInfo } from '../types';
3
+ import { LiquityStakingData, 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,14 +8,4 @@ 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<{
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
- }>;
11
+ export declare const getLiquityStakingData: (provider: Client, network: NetworkNumber, address: EthAddress) => Promise<LiquityStakingData>;
@@ -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, LiquityV2TroveData, LiquityV2Versions } from '../types';
3
+ import { LiquityV2AssetsData, LiquityV2MarketData, LiquityV2MarketInfo, LiquityV2SBoldYBoldData, LiquityV2StakingData, LiquityV2TroveData, LiquityV2Versions } from '../types';
4
4
  export type SPYieldGainParameters = {
5
5
  P: string;
6
6
  aggWeightedDebtSum: string;
@@ -44,25 +44,5 @@ 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<{
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
- }>;
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>;
@@ -1,9 +1,9 @@
1
1
  import { EthAddress, EthereumProvider, NetworkNumber } from '../types/common';
2
- import { PortfolioPositionsData } from '../types';
3
- export declare function getPortfolioData(provider: EthereumProvider, network: NetworkNumber, defaultProvider: EthereumProvider, addresses: EthAddress[], isSim?: boolean): Promise<{
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<{
4
4
  positions: PortfolioPositionsData;
5
- stakingPositions: any;
6
- rewardsData: any;
7
- markets: any;
5
+ stakingPositions: PortfolioStakingPositionsData;
6
+ rewardsData: PortfolioRewardsData;
7
+ markets: PortfolioMarketsData;
8
8
  }>;
9
9
  export * from './discovery';
@@ -54,8 +54,13 @@ 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) {
57
+ return __awaiter(this, arguments, void 0, function* (provider, network, defaultProvider, addresses, isSim = false, options = {}) {
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 : [];
59
64
  const isFluidSupported = [common_1.NetworkNumber.Eth, common_1.NetworkNumber.Arb, common_1.NetworkNumber.Base, common_1.NetworkNumber.Plasma].includes(network);
60
65
  const morphoMarkets = Object.values((0, markets_1.MorphoBlueMarkets)(network)).filter((market) => market.chainIds.includes(network));
61
66
  const morphoMidnightMarkets = Object.values((0, markets_1.MorphoMidnightMarkets)(network)).filter((market) => market.chainIds.includes(network));
@@ -127,7 +132,7 @@ function getPortfolioData(provider_1, network_1, defaultProvider_1, addresses_1)
127
132
  };
128
133
  }
129
134
  // TODO: check default values, probably needed when fetching portfolio on unsupported networks
130
- for (const address of addresses) {
135
+ for (const address of stakingAddresses) {
131
136
  stakingPositions[address.toLowerCase()] = {
132
137
  aaveV3: {},
133
138
  morphoBlue: {},
@@ -141,14 +146,20 @@ function getPortfolioData(provider_1, network_1, defaultProvider_1, addresses_1)
141
146
  error: '',
142
147
  data: {},
143
148
  },
149
+ // Set by the sBOLD/yBOLD fetch below, whether it succeeds or fails.
150
+ liquityV2SBoldYBold: { error: '', data: null },
144
151
  };
152
+ }
153
+ for (const address of rewardsAddresses) {
154
+ // merkl, spk, king and uniswap are set by their fetches below, whether they succeed or fail.
145
155
  rewardsData[address.toLowerCase()] = {
146
- merkl: {},
156
+ merkl: { error: '', data: null },
147
157
  aaveV3: {},
148
158
  spark: {},
149
- spk: {},
150
- king: {},
159
+ spk: { error: '', data: null },
160
+ king: { error: '', data: null },
151
161
  ethena: {},
162
+ uniswap: { error: '', data: null },
152
163
  };
153
164
  }
154
165
  yield Promise.allSettled([
@@ -224,7 +235,7 @@ function getPortfolioData(provider_1, network_1, defaultProvider_1, addresses_1)
224
235
  }
225
236
  })),
226
237
  // === STAKING DATA (independent of market data) ===
227
- ...addresses.map((address) => __awaiter(this, void 0, void 0, function* () {
238
+ ...stakingAddresses.map((address) => __awaiter(this, void 0, void 0, function* () {
228
239
  try {
229
240
  if (!isFluidSupported)
230
241
  return;
@@ -235,7 +246,7 @@ function getPortfolioData(provider_1, network_1, defaultProvider_1, addresses_1)
235
246
  stakingPositions[address.toLowerCase()].fluid = { error: `Error fetching Fluid lend data for address ${address}`, data: null };
236
247
  }
237
248
  })),
238
- ...addresses.map((address) => __awaiter(this, void 0, void 0, function* () {
249
+ ...stakingAddresses.map((address) => __awaiter(this, void 0, void 0, function* () {
239
250
  try {
240
251
  if (!isMainnet)
241
252
  return;
@@ -246,7 +257,7 @@ function getPortfolioData(provider_1, network_1, defaultProvider_1, addresses_1)
246
257
  stakingPositions[address.toLowerCase()].liquity = { error: `Error fetching Liquity staking data for address ${address}`, data: null };
247
258
  }
248
259
  })),
249
- ...addresses.map((address) => __awaiter(this, void 0, void 0, function* () {
260
+ ...stakingAddresses.map((address) => __awaiter(this, void 0, void 0, function* () {
250
261
  try {
251
262
  if (!isMainnet)
252
263
  return;
@@ -257,7 +268,7 @@ function getPortfolioData(provider_1, network_1, defaultProvider_1, addresses_1)
257
268
  stakingPositions[address.toLowerCase()].aaveV3 = { error: `Error fetching Aave V3 staking data for address ${address}`, data: null };
258
269
  }
259
270
  })),
260
- ...addresses.map((address) => __awaiter(this, void 0, void 0, function* () {
271
+ ...stakingAddresses.map((address) => __awaiter(this, void 0, void 0, function* () {
261
272
  try {
262
273
  if (!isMainnet)
263
274
  return;
@@ -269,7 +280,7 @@ function getPortfolioData(provider_1, network_1, defaultProvider_1, addresses_1)
269
280
  }
270
281
  })),
271
282
  // Liquity V2 staking
272
- ...liquityV2MarketsStaking.map(market => addresses.map((address) => __awaiter(this, void 0, void 0, function* () {
283
+ ...liquityV2MarketsStaking.map(market => stakingAddresses.map((address) => __awaiter(this, void 0, void 0, function* () {
273
284
  try {
274
285
  if (!isMainnet) {
275
286
  stakingPositions[address.toLowerCase()].liquityV2[market.value] = { error: '', data: null };
@@ -288,13 +299,13 @@ function getPortfolioData(provider_1, network_1, defaultProvider_1, addresses_1)
288
299
  (() => __awaiter(this, void 0, void 0, function* () {
289
300
  try {
290
301
  if (!isMainnet) {
291
- for (const address of addresses) {
302
+ for (const address of rewardsAddresses) {
292
303
  rewardsData[address.toLowerCase()].king = { error: '', data: [] };
293
304
  }
294
305
  return;
295
306
  }
296
- const kingRewards = yield (0, king_1.getKingRewards)(client, network, addresses);
297
- for (const address of addresses) {
307
+ const kingRewards = yield (0, king_1.getKingRewards)(client, network, rewardsAddresses);
308
+ for (const address of rewardsAddresses) {
298
309
  const lowerAddress = address.toLowerCase();
299
310
  rewardsData[lowerAddress].king = {
300
311
  error: '',
@@ -304,7 +315,7 @@ function getPortfolioData(provider_1, network_1, defaultProvider_1, addresses_1)
304
315
  }
305
316
  catch (error) {
306
317
  console.error('Error fetching King rewards data in batch:', error);
307
- for (const address of addresses) {
318
+ for (const address of rewardsAddresses) {
308
319
  rewardsData[address.toLowerCase()].king = {
309
320
  error: 'Error fetching King rewards data in batch',
310
321
  data: null,
@@ -316,13 +327,13 @@ function getPortfolioData(provider_1, network_1, defaultProvider_1, addresses_1)
316
327
  (() => __awaiter(this, void 0, void 0, function* () {
317
328
  try {
318
329
  if (!isMainnet) {
319
- for (const address of addresses) {
330
+ for (const address of rewardsAddresses) {
320
331
  rewardsData[address.toLowerCase()].uniswap = { error: '', data: [] };
321
332
  }
322
333
  return;
323
334
  }
324
- const uniswapRewards = yield (0, uniswap_1.getUniswapRewards)(client, network, addresses);
325
- for (const address of addresses) {
335
+ const uniswapRewards = yield (0, uniswap_1.getUniswapRewards)(client, network, rewardsAddresses);
336
+ for (const address of rewardsAddresses) {
326
337
  const lowerAddress = address.toLowerCase();
327
338
  rewardsData[lowerAddress].uniswap = {
328
339
  error: '',
@@ -332,7 +343,7 @@ function getPortfolioData(provider_1, network_1, defaultProvider_1, addresses_1)
332
343
  }
333
344
  catch (error) {
334
345
  console.error('Error fetching Uniswap rewards data in batch:', error);
335
- for (const address of addresses) {
346
+ for (const address of rewardsAddresses) {
336
347
  rewardsData[address.toLowerCase()].uniswap = {
337
348
  error: 'Error fetching Uniswap rewards data in batch',
338
349
  data: null,
@@ -340,7 +351,7 @@ function getPortfolioData(provider_1, network_1, defaultProvider_1, addresses_1)
340
351
  }
341
352
  }
342
353
  }))(),
343
- ...sparkMarkets.map((market) => addresses.map((address) => __awaiter(this, void 0, void 0, function* () {
354
+ ...sparkMarkets.map((market) => rewardsAddresses.map((address) => __awaiter(this, void 0, void 0, function* () {
344
355
  try {
345
356
  if (!isMainnet) {
346
357
  rewardsData[address.toLowerCase()].spark[market.value] = { error: '', data: [] };
@@ -354,7 +365,7 @@ function getPortfolioData(provider_1, network_1, defaultProvider_1, addresses_1)
354
365
  rewardsData[address.toLowerCase()].spark[market.value] = { error: `Error fetching Spark rewards data for address ${address}`, data: null };
355
366
  }
356
367
  }))).flat(),
357
- ...addresses.map((address) => __awaiter(this, void 0, void 0, function* () {
368
+ ...rewardsAddresses.map((address) => __awaiter(this, void 0, void 0, function* () {
358
369
  try {
359
370
  const merklData = yield (0, aaveV3_2.getMerklUnclaimedRewards)(address, network);
360
371
  rewardsData[address.toLowerCase()].merkl = { error: '', data: merklData };
@@ -364,27 +375,28 @@ function getPortfolioData(provider_1, network_1, defaultProvider_1, addresses_1)
364
375
  rewardsData[address.toLowerCase()].merkl = { error: `Error fetching Merkl rewards data for address ${address}`, data: null };
365
376
  }
366
377
  })),
367
- ...aaveV3Markets.map(market => addresses.map((address) => __awaiter(this, void 0, void 0, function* () {
378
+ ...aaveV3Markets.map(market => rewardsAddresses.map((address) => __awaiter(this, void 0, void 0, function* () {
368
379
  try {
369
380
  const aaveData = yield (0, aaveV3_2.getUnclaimedRewardsForAllMarkets)(client, network, address, market.providerAddress);
370
381
  rewardsData[address.toLowerCase()].aaveV3[market.value] = { error: '', data: aaveData };
371
382
  }
372
383
  catch (error) {
373
384
  console.error(`Error fetching Aave V3 Merit rewards data for address ${address}:`, error);
374
- rewardsData[address.toLowerCase()].aaveV3 = { error: `Error fetching Aave V3 rewards data for address ${address}`, data: null };
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 };
375
387
  }
376
388
  }))).flat(),
377
389
  // Batch Spark Airdrop rewards
378
390
  (() => __awaiter(this, void 0, void 0, function* () {
379
391
  try {
380
392
  if (!isMainnet) {
381
- for (const address of addresses) {
393
+ for (const address of rewardsAddresses) {
382
394
  rewardsData[address.toLowerCase()].spk = { error: '', data: [] };
383
395
  }
384
396
  return;
385
397
  }
386
- const sparkAirdropRewards = yield (0, spark_2.fetchSparkAirdropRewards)(client, network, addresses);
387
- for (const address of addresses) {
398
+ const sparkAirdropRewards = yield (0, spark_2.fetchSparkAirdropRewards)(client, network, rewardsAddresses);
399
+ for (const address of rewardsAddresses) {
388
400
  const lowerAddress = address.toLowerCase();
389
401
  rewardsData[lowerAddress].spk = {
390
402
  error: '',
@@ -394,7 +406,7 @@ function getPortfolioData(provider_1, network_1, defaultProvider_1, addresses_1)
394
406
  }
395
407
  catch (error) {
396
408
  console.error('Error fetching Spark Airdrop rewards data in batch:', error);
397
- for (const address of addresses) {
409
+ for (const address of rewardsAddresses) {
398
410
  rewardsData[address.toLowerCase()].spk = {
399
411
  error: 'Error fetching Spark Airdrop rewards data in batch',
400
412
  data: null,
@@ -407,8 +419,8 @@ function getPortfolioData(provider_1, network_1, defaultProvider_1, addresses_1)
407
419
  if (!isMainnet) {
408
420
  return;
409
421
  }
410
- const ethenaAirdropRewards = yield (0, ethena_1.fetchEthenaAirdropRewards)(addresses);
411
- for (const address of addresses) {
422
+ const ethenaAirdropRewards = yield (0, ethena_1.fetchEthenaAirdropRewards)(rewardsAddresses);
423
+ for (const address of rewardsAddresses) {
412
424
  const lowerAddress = address.toLowerCase();
413
425
  rewardsData[lowerAddress].ethena = {
414
426
  error: '',
@@ -418,7 +430,7 @@ function getPortfolioData(provider_1, network_1, defaultProvider_1, addresses_1)
418
430
  }
419
431
  catch (error) {
420
432
  console.error('Error fetching Ethena Airdrop rewards data:', error);
421
- for (const address of addresses) {
433
+ for (const address of rewardsAddresses) {
422
434
  rewardsData[address.toLowerCase()].ethena = {
423
435
  error: 'Error fetching Ethena Airdrop rewards data in batch',
424
436
  data: null,
@@ -454,15 +466,16 @@ function getPortfolioData(provider_1, network_1, defaultProvider_1, addresses_1)
454
466
  try {
455
467
  const [accDataPromise, earnDataPromise] = yield Promise.allSettled([
456
468
  (0, morphoBlue_1._getMorphoBlueAccountData)(client, network, address, market, morphoMarketsData[market.value]),
457
- (0, morphoBlue_1.getMorphoEarn)(client, network, address, market, morphoMarketsData[market.value]),
469
+ includeStaking ? (0, morphoBlue_1.getMorphoEarn)(client, network, address, market, morphoMarketsData[market.value]) : null,
458
470
  ]);
459
471
  if (accDataPromise.status === 'rejected') {
460
472
  console.error(`Error fetching MorphoBlue account data for address ${address} on market ${market.value}:`, accDataPromise.reason);
461
473
  positions[address.toLowerCase()].morphoBlue[market.value] = { error: `Error fetching MorphoBlue account data for address ${address} on market ${market.value}`, data: null };
462
474
  }
463
475
  if (earnDataPromise.status === 'rejected') {
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 };
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 };
466
479
  }
467
480
  if (accDataPromise.status !== 'rejected') {
468
481
  const accData = accDataPromise.value;
@@ -598,7 +611,7 @@ function getPortfolioData(provider_1, network_1, defaultProvider_1, addresses_1)
598
611
  }
599
612
  }))).flat(),
600
613
  // liquity sBold/yBold and staking options
601
- ...addresses.map((address) => __awaiter(this, void 0, void 0, function* () {
614
+ ...stakingAddresses.map((address) => __awaiter(this, void 0, void 0, function* () {
602
615
  try {
603
616
  if (!isMainnet) {
604
617
  stakingPositions[address.toLowerCase()].liquityV2SBoldYBold = { error: '', data: null };
@@ -198,3 +198,86 @@ export interface AaveHelperCommon {
198
198
  selectedMarket: Partial<AaveMarketInfo>;
199
199
  network?: NetworkNumber;
200
200
  }
201
+ export interface SghoUserData {
202
+ shares: string;
203
+ balance: string;
204
+ maxDeposit: string;
205
+ maxWithdraw: string;
206
+ underlyingBalance: string;
207
+ }
208
+ export interface SghoData {
209
+ totalAssets: string;
210
+ totalSupply: string;
211
+ supplyCap: string;
212
+ /** Target savings rate as an APY percent (e.g. "4.25" for 4.25%). */
213
+ targetRate: string;
214
+ paused: boolean;
215
+ user: SghoUserData;
216
+ }
217
+ /** stkAAVE, stkGHO and sGHO of an address, from getStakeAaveData. */
218
+ export interface StakeAaveData {
219
+ activatedCooldown: string;
220
+ activatedCooldownAmount: string;
221
+ stkAaveRewardsBalance: string;
222
+ aaveRewardsBalance: string;
223
+ stkAaveBalance: string;
224
+ stkGhoBalance: string;
225
+ ghoMeritApy: string;
226
+ stkAaveApy: string;
227
+ sgho: SghoData;
228
+ }
229
+ export interface UmbrellaTokenInfo {
230
+ token: EthAddress;
231
+ /** USD, converted from the oracle's 8 decimals. */
232
+ price: string;
233
+ name: string;
234
+ symbol: string;
235
+ decimals: number;
236
+ }
237
+ export interface UmbrellaRewardTokenData {
238
+ rewardTokenData: UmbrellaTokenInfo;
239
+ maxEmissionPerSecond: bigint;
240
+ distributionEnd: bigint;
241
+ }
242
+ export interface UmbrellaStakingAccountData {
243
+ stakeUserBalance: string;
244
+ rewardsTokenUserData: {
245
+ reward: EthAddress;
246
+ currentReward: string;
247
+ }[];
248
+ userCooldownAmount: string;
249
+ userEndOfCooldown: bigint | string;
250
+ userWithdrawalWindow: bigint | string;
251
+ }
252
+ /**
253
+ * One Umbrella stake token of an address, from getUmbrellaData: the view contracts' structs merged, with the amounts
254
+ * the app reads converted to decimal strings. The bigint fields are the views' raw values, as the SDK passes them.
255
+ */
256
+ export interface UmbrellaStakingTokenData {
257
+ stakeTokenData: UmbrellaTokenInfo;
258
+ totalAssets: string;
259
+ targetLiquidity: string;
260
+ isStakeConfigured: boolean;
261
+ rewardsTokenData: UmbrellaRewardTokenData[];
262
+ stakeToken: EthAddress;
263
+ stakeUserBalance: bigint;
264
+ rewardsTokenUserData: {
265
+ reward: EthAddress;
266
+ currentReward: bigint;
267
+ }[];
268
+ stkToken: EthAddress;
269
+ totalShares: string;
270
+ stkUnderlyingToken: EthAddress;
271
+ aToken: EthAddress;
272
+ cooldownPeriod: bigint;
273
+ unstakeWindow: bigint;
274
+ stkTokenToWaTokenRate: string;
275
+ waTokenToATokenRate: string;
276
+ rewardsEmissionRates: string[];
277
+ userCooldownAmount: bigint;
278
+ userEndOfCooldown: bigint;
279
+ userWithdrawalWindow: bigint;
280
+ account: UmbrellaStakingAccountData;
281
+ }
282
+ /** Keyed by Umbrella stake (UmbrellaGHO, UmbrellaUSDC, UmbrellaUSDT, UmbrellaETH). */
283
+ export type UmbrellaStakingData = Record<string, UmbrellaStakingTokenData>;
@@ -458,3 +458,16 @@ export interface FluidFTokenDataStructOutput {
458
458
  rewardsRate: bigint;
459
459
  withdrawable: bigint;
460
460
  }
461
+ /** One Fluid lending (fToken) deposit of an address, from getAllUserEarnPositionsWithFTokens and getFluidDepositData. */
462
+ export interface FluidEarnPositionData {
463
+ fTokenAddress: string | undefined;
464
+ fTokenSymbol: string;
465
+ decimals: string;
466
+ totalDeposited: string;
467
+ withdrawable: string;
468
+ apy: string;
469
+ depositRate: string;
470
+ withdrawRate: string;
471
+ deposited: string;
472
+ depositedShares: string;
473
+ }
@@ -15,3 +15,4 @@ export * from './merkl';
15
15
  export * from './savings';
16
16
  export * from './common';
17
17
  export * from './aaveV4';
18
+ export * from './claiming';
@@ -31,3 +31,4 @@ __exportStar(require("./merkl"), exports);
31
31
  __exportStar(require("./savings"), exports);
32
32
  __exportStar(require("./common"), exports);
33
33
  __exportStar(require("./aaveV4"), exports);
34
+ __exportStar(require("./claiming"), exports);
@@ -28,3 +28,15 @@ export interface LiquityTroveInfo {
28
28
  debtInFront: string;
29
29
  exposure: string;
30
30
  }
31
+ /** LQTY staking and the LUSD stability pool deposit of an address, from getLiquityStakingData. */
32
+ export interface LiquityStakingData {
33
+ totalLUSDDeposited: string;
34
+ totalLQTYStaked: string;
35
+ stakedLQTY: string;
36
+ stakedLUSDBalance: string;
37
+ rewardETH: string;
38
+ rewardLUSD: string;
39
+ stabilityRewardETH: string;
40
+ stabilityRewardLQTY: string;
41
+ showStakingBalances: boolean;
42
+ }
@@ -121,3 +121,27 @@ export interface LiquityV2TroveData {
121
121
  lastInterestRateAdjTime: string;
122
122
  exposure: string;
123
123
  }
124
+ /** The stability pool deposit of an address in one market, from getLiquityV2Staking. */
125
+ export interface LiquityV2StakingData {
126
+ totalBOLDDeposited: string;
127
+ stakedBOLDBalance: string;
128
+ stabilityRewardColl: string;
129
+ stabilityRewardYield: string;
130
+ showStakingBalances: boolean;
131
+ debtTokenBalance: string;
132
+ stabilityPoolApy: string;
133
+ }
134
+ /** sBOLD, yBOLD and stYBOLD of an address, from getLiquitySAndYBold. */
135
+ export interface LiquityV2SBoldYBoldData {
136
+ spApy: string;
137
+ yBoldApy: string;
138
+ totalBoldDepositedSBold: string;
139
+ boldRateSBold: string;
140
+ maxWithdrawSBold: string;
141
+ totalBoldDepositedYBold: string;
142
+ boldRateYBold: string;
143
+ maxWithdrawYBold: string;
144
+ sBoldBalance: string;
145
+ yBoldBalance: string;
146
+ stYBoldBalance: string;
147
+ }