@defisaver/positions-sdk 2.1.161-portfolio-api-1-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.
- package/cjs/aaveV3/index.d.ts +2 -12
- package/cjs/aaveV3/sgho.d.ts +2 -16
- package/cjs/claiming/aaveV3.d.ts +2 -2
- package/cjs/claiming/ethena.d.ts +2 -1
- package/cjs/claiming/king.d.ts +2 -1
- package/cjs/claiming/spark.d.ts +2 -2
- package/cjs/fluid/index.d.ts +5 -49
- package/cjs/liquity/index.d.ts +2 -12
- package/cjs/liquityV2/index.d.ts +3 -23
- package/cjs/portfolio/index.d.ts +4 -4
- package/cjs/portfolio/index.js +46 -33
- package/cjs/types/aave.d.ts +83 -0
- package/cjs/types/fluid.d.ts +13 -0
- package/cjs/types/index.d.ts +1 -0
- package/cjs/types/index.js +1 -0
- package/cjs/types/liquity.d.ts +12 -0
- package/cjs/types/liquityV2.d.ts +24 -0
- package/cjs/types/portfolio.d.ts +68 -5
- package/cjs/umbrella/index.d.ts +2 -3
- package/esm/aaveV3/index.d.ts +2 -12
- package/esm/aaveV3/sgho.d.ts +2 -16
- package/esm/claiming/aaveV3.d.ts +2 -2
- package/esm/claiming/aaveV3.js +1 -1
- package/esm/claiming/ethena.d.ts +2 -1
- package/esm/claiming/king.d.ts +2 -1
- package/esm/claiming/spark.d.ts +2 -2
- package/esm/claiming/spark.js +1 -1
- package/esm/fluid/index.d.ts +5 -49
- package/esm/liquity/index.d.ts +2 -12
- package/esm/liquityV2/index.d.ts +3 -23
- package/esm/portfolio/index.d.ts +4 -4
- package/esm/portfolio/index.js +46 -33
- package/esm/types/aave.d.ts +83 -0
- package/esm/types/fluid.d.ts +13 -0
- package/esm/types/index.d.ts +1 -0
- package/esm/types/index.js +1 -0
- package/esm/types/liquity.d.ts +12 -0
- package/esm/types/liquityV2.d.ts +24 -0
- package/esm/types/portfolio.d.ts +68 -5
- package/esm/umbrella/index.d.ts +2 -3
- package/package.json +1 -1
- package/src/aaveV3/index.ts +2 -1
- package/src/aaveV3/sgho.ts +2 -17
- package/src/claiming/aaveV3.ts +4 -2
- package/src/claiming/ethena.ts +5 -5
- package/src/claiming/king.ts +3 -3
- package/src/claiming/spark.ts +6 -4
- package/src/fluid/index.ts +4 -3
- package/src/liquity/index.ts +2 -2
- package/src/liquityV2/index.ts +3 -3
- package/src/portfolio/index.ts +69 -53
- package/src/types/aave.ts +86 -0
- package/src/types/fluid.ts +14 -0
- package/src/types/index.ts +2 -1
- package/src/types/liquity.ts +13 -1
- package/src/types/liquityV2.ts +26 -1
- package/src/types/portfolio.ts +86 -5
- package/src/umbrella/index.ts +2 -1
package/cjs/types/portfolio.d.ts
CHANGED
|
@@ -1,20 +1,33 @@
|
|
|
1
|
-
import { AaveV2MarketData, AaveV2PositionData, AaveV3MarketData, AaveV3PositionData, AaveVersions } from './aave';
|
|
1
|
+
import { AaveV2MarketData, AaveV2PositionData, AaveV3MarketData, AaveV3PositionData, AaveVersions, StakeAaveData, UmbrellaStakingData } from './aave';
|
|
2
2
|
import { AaveV4AccountData, AaveV4SpokeData, AaveV4SpokesType } from './aaveV4';
|
|
3
|
+
import { AaveRewardsClaimableToken, EthenaAirdropClaimableToken, KingRewardsClaimableToken, MerklRewardsClaimableToken, SparkAirdropClaimableToken, SparkRewardsClaimableToken, UniswapAirdropClaimableToken } from './claiming';
|
|
3
4
|
import { EthAddress } from './common';
|
|
4
5
|
import { CompoundV2MarketsData, CompoundV2PositionData, CompoundV3MarketsData, CompoundV3PositionData, CompoundVersions } from './compound';
|
|
5
6
|
import { CrvUSDGlobalMarketData, CrvUSDUserData, CrvUSDVersions } from './curveUsd';
|
|
6
|
-
import { FluidVaultData } from './fluid';
|
|
7
|
-
import { LiquityTroveInfo } from './liquity';
|
|
8
|
-
import { LiquityV2MarketData } from './liquityV2';
|
|
7
|
+
import { FluidEarnPositionData, FluidVaultData } from './fluid';
|
|
8
|
+
import { LiquityStakingData, LiquityTroveInfo } from './liquity';
|
|
9
|
+
import { LiquityV2MarketData, LiquityV2SBoldYBoldData, LiquityV2StakingData, LiquityV2Versions } from './liquityV2';
|
|
9
10
|
import { LlamaLendGlobalMarketData, LlamaLendUserData, LlamaLendVersionsType } from './llamaLend';
|
|
10
11
|
import { CdpData } from './maker';
|
|
11
|
-
import { MorphoBlueMarketInfo, MorphoBluePositionData, MorphoBlueVersions } from './morphoBlue';
|
|
12
|
+
import { MorphoBlueEarnData, MorphoBlueMarketInfo, MorphoBluePositionData, MorphoBlueVersions } from './morphoBlue';
|
|
12
13
|
import { MorphoMidnightMarketInfo, MorphoMidnightPositionData, MorphoMidnightVersions } from './morphoMidnight';
|
|
13
14
|
import { SparkMarketsData, SparkPositionData, SparkVersions } from './spark';
|
|
14
15
|
export interface PortfolioProtocolData<T> {
|
|
15
16
|
error: string;
|
|
16
17
|
data: T | null;
|
|
17
18
|
}
|
|
19
|
+
/** A failed fetch of a protocol that, when it succeeds, getPortfolioData returns unwrapped rather than as `{ error, data }`. */
|
|
20
|
+
export interface PortfolioProtocolError {
|
|
21
|
+
error: string;
|
|
22
|
+
data: null;
|
|
23
|
+
}
|
|
24
|
+
/** What getPortfolioData reads besides positions and markets. Both default to true. */
|
|
25
|
+
export interface PortfolioDataOptions {
|
|
26
|
+
/** stakingPositions; with false it comes back as {} and no staking source is read. */
|
|
27
|
+
staking?: boolean;
|
|
28
|
+
/** rewardsData; with false it comes back as {} and no rewards source is read. */
|
|
29
|
+
rewards?: boolean;
|
|
30
|
+
}
|
|
18
31
|
export interface PortfolioPositionsDataForAddress {
|
|
19
32
|
aaveV3: {
|
|
20
33
|
[key in AaveVersions]?: PortfolioProtocolData<AaveV3PositionData>;
|
|
@@ -60,6 +73,56 @@ export interface PortfolioPositionsDataForAddress {
|
|
|
60
73
|
export interface PortfolioPositionsData {
|
|
61
74
|
[key: EthAddress]: PortfolioPositionsDataForAddress;
|
|
62
75
|
}
|
|
76
|
+
/**
|
|
77
|
+
* The staking positions getPortfolioData returns for an address. The shapes are uneven, and the DeFi Saver app
|
|
78
|
+
* parses them as they are: a protocol read once per address comes back unwrapped on success, as
|
|
79
|
+
* `{ error, data: null }` on failure, and as {} (or Fluid's `{ error: '', data: {} }`) on a network it is not read on.
|
|
80
|
+
*/
|
|
81
|
+
export interface PortfolioStakingPositionsDataForAddress {
|
|
82
|
+
/** stkAAVE, stkGHO and sGHO; mainnet only. */
|
|
83
|
+
aaveV3: StakeAaveData | PortfolioProtocolError | {};
|
|
84
|
+
/** Morpho Blue supply without a borrow (Earn), by market; only markets with a deposit or an error. */
|
|
85
|
+
morphoBlue: {
|
|
86
|
+
[key in MorphoBlueVersions]?: PortfolioProtocolData<MorphoBlueEarnData>;
|
|
87
|
+
};
|
|
88
|
+
compoundV3: Record<string, never>;
|
|
89
|
+
spark: Record<string, never>;
|
|
90
|
+
aaveV2: Record<string, never>;
|
|
91
|
+
compoundV2: Record<string, never>;
|
|
92
|
+
/** LQTY staking and the LUSD stability pool; mainnet only. */
|
|
93
|
+
liquity: LiquityStakingData | PortfolioProtocolError | {};
|
|
94
|
+
/** Stability pool deposits, by market; mainnet only, legacy markets left out. */
|
|
95
|
+
liquityV2: {
|
|
96
|
+
[key in LiquityV2Versions]?: PortfolioProtocolData<LiquityV2StakingData>;
|
|
97
|
+
};
|
|
98
|
+
/** Fluid lending (fToken) deposits; `{ error: '', data: {} }` on a network without Fluid. */
|
|
99
|
+
fluid: FluidEarnPositionData[] | PortfolioProtocolError | {
|
|
100
|
+
error: string;
|
|
101
|
+
data: Record<string, never>;
|
|
102
|
+
};
|
|
103
|
+
/** Umbrella stakes; absent off mainnet. */
|
|
104
|
+
umbrella?: UmbrellaStakingData | PortfolioProtocolError;
|
|
105
|
+
/** sBOLD, yBOLD and stYBOLD; data is null off mainnet. */
|
|
106
|
+
liquityV2SBoldYBold: PortfolioProtocolData<LiquityV2SBoldYBoldData>;
|
|
107
|
+
}
|
|
108
|
+
export type PortfolioStakingPositionsData = Record<EthAddress, PortfolioStakingPositionsDataForAddress>;
|
|
109
|
+
/** The claimable rewards getPortfolioData returns for an address. Off mainnet only Merkl and Aave V3 are read. */
|
|
110
|
+
export interface PortfolioRewardsDataForAddress {
|
|
111
|
+
merkl: PortfolioProtocolData<MerklRewardsClaimableToken[]>;
|
|
112
|
+
aaveV3: {
|
|
113
|
+
[key in AaveVersions]?: PortfolioProtocolData<AaveRewardsClaimableToken[]>;
|
|
114
|
+
};
|
|
115
|
+
spark: {
|
|
116
|
+
[key in SparkVersions]?: PortfolioProtocolData<SparkRewardsClaimableToken[]>;
|
|
117
|
+
};
|
|
118
|
+
/** The SPK airdrop. */
|
|
119
|
+
spk: PortfolioProtocolData<SparkAirdropClaimableToken[]>;
|
|
120
|
+
king: PortfolioProtocolData<KingRewardsClaimableToken[]>;
|
|
121
|
+
/** {} off mainnet. */
|
|
122
|
+
ethena: PortfolioProtocolData<EthenaAirdropClaimableToken[]> | {};
|
|
123
|
+
uniswap: PortfolioProtocolData<UniswapAirdropClaimableToken[]>;
|
|
124
|
+
}
|
|
125
|
+
export type PortfolioRewardsData = Record<EthAddress, PortfolioRewardsDataForAddress>;
|
|
63
126
|
/** The `markets` getPortfolioData returns: every market it read, by protocol, keyed by market or spoke. */
|
|
64
127
|
export interface PortfolioMarketsData {
|
|
65
128
|
morphoMarketsData: Record<string, MorphoBlueMarketInfo>;
|
package/cjs/umbrella/index.d.ts
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { Client } from 'viem';
|
|
2
2
|
import { EthAddress, NetworkNumber } from '../types/common';
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
}>;
|
|
3
|
+
import { UmbrellaStakingData } from '../types/aave';
|
|
4
|
+
export declare const getUmbrellaData: (provider: Client, network: NetworkNumber, address: EthAddress) => Promise<UmbrellaStakingData>;
|
package/esm/aaveV3/index.d.ts
CHANGED
|
@@ -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';
|
package/esm/aaveV3/sgho.d.ts
CHANGED
|
@@ -1,18 +1,4 @@
|
|
|
1
1
|
import { EthAddress, NetworkNumber } from '../types/common';
|
|
2
|
-
|
|
3
|
-
|
|
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>;
|
package/esm/claiming/aaveV3.d.ts
CHANGED
|
@@ -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<
|
|
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[]>;
|
package/esm/claiming/aaveV3.js
CHANGED
|
@@ -8,7 +8,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
8
8
|
});
|
|
9
9
|
};
|
|
10
10
|
import Dec from 'decimal.js';
|
|
11
|
-
import { ClaimType } from '../types/claiming';
|
|
11
|
+
import { ClaimType, } from '../types/claiming';
|
|
12
12
|
import { AaveIncentiveDataProviderV3ContractViem, AaveRewardsControllerViem, } from '../contracts';
|
|
13
13
|
import { compareAddresses, getEthAmountForDecimals, LONGER_TIMEOUT } from '../services/utils';
|
|
14
14
|
import { getAaveUnderlyingSymbol } from '../helpers/aaveHelpers';
|
package/esm/claiming/ethena.d.ts
CHANGED
|
@@ -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,
|
|
4
|
+
export declare const fetchEthenaAirdropRewards: (walletAddresses: EthAddress[]) => Promise<Record<string, EthenaAirdropClaimableToken[]>>;
|
package/esm/claiming/king.d.ts
CHANGED
|
@@ -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,
|
|
5
|
+
export declare const getKingRewards: (provider: Client, network: NetworkNumber, walletAddresses: EthAddress[]) => Promise<Record<string, KingRewardsClaimableToken[]>>;
|
package/esm/claiming/spark.d.ts
CHANGED
|
@@ -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,
|
|
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[]>;
|
package/esm/claiming/spark.js
CHANGED
|
@@ -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';
|
package/esm/fluid/index.d.ts
CHANGED
|
@@ -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
|
-
|
|
76
|
-
|
|
77
|
-
|
|
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: {
|
package/esm/liquity/index.d.ts
CHANGED
|
@@ -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>;
|
package/esm/liquityV2/index.d.ts
CHANGED
|
@@ -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
|
-
|
|
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>;
|
package/esm/portfolio/index.d.ts
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { EthAddress, EthereumProvider, NetworkNumber } from '../types/common';
|
|
2
|
-
import { PortfolioMarketsData, 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:
|
|
6
|
-
rewardsData:
|
|
5
|
+
stakingPositions: PortfolioStakingPositionsData;
|
|
6
|
+
rewardsData: PortfolioRewardsData;
|
|
7
7
|
markets: PortfolioMarketsData;
|
|
8
8
|
}>;
|
|
9
9
|
export * from './discovery';
|
package/esm/portfolio/index.js
CHANGED
|
@@ -34,8 +34,13 @@ 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) {
|
|
37
|
+
return __awaiter(this, arguments, void 0, function* (provider, network, defaultProvider, addresses, isSim = false, options = {}) {
|
|
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 : [];
|
|
39
44
|
const isFluidSupported = [NetworkNumber.Eth, NetworkNumber.Arb, NetworkNumber.Base, NetworkNumber.Plasma].includes(network);
|
|
40
45
|
const morphoMarkets = Object.values(MorphoBlueMarkets(network)).filter((market) => market.chainIds.includes(network));
|
|
41
46
|
const morphoMidnightMarkets = Object.values(MorphoMidnightMarkets(network)).filter((market) => market.chainIds.includes(network));
|
|
@@ -107,7 +112,7 @@ export function getPortfolioData(provider_1, network_1, defaultProvider_1, addre
|
|
|
107
112
|
};
|
|
108
113
|
}
|
|
109
114
|
// TODO: check default values, probably needed when fetching portfolio on unsupported networks
|
|
110
|
-
for (const address of
|
|
115
|
+
for (const address of stakingAddresses) {
|
|
111
116
|
stakingPositions[address.toLowerCase()] = {
|
|
112
117
|
aaveV3: {},
|
|
113
118
|
morphoBlue: {},
|
|
@@ -121,14 +126,20 @@ export function getPortfolioData(provider_1, network_1, defaultProvider_1, addre
|
|
|
121
126
|
error: '',
|
|
122
127
|
data: {},
|
|
123
128
|
},
|
|
129
|
+
// Set by the sBOLD/yBOLD fetch below, whether it succeeds or fails.
|
|
130
|
+
liquityV2SBoldYBold: { error: '', data: null },
|
|
124
131
|
};
|
|
132
|
+
}
|
|
133
|
+
for (const address of rewardsAddresses) {
|
|
134
|
+
// merkl, spk, king and uniswap are set by their fetches below, whether they succeed or fail.
|
|
125
135
|
rewardsData[address.toLowerCase()] = {
|
|
126
|
-
merkl: {},
|
|
136
|
+
merkl: { error: '', data: null },
|
|
127
137
|
aaveV3: {},
|
|
128
138
|
spark: {},
|
|
129
|
-
spk: {},
|
|
130
|
-
king: {},
|
|
139
|
+
spk: { error: '', data: null },
|
|
140
|
+
king: { error: '', data: null },
|
|
131
141
|
ethena: {},
|
|
142
|
+
uniswap: { error: '', data: null },
|
|
132
143
|
};
|
|
133
144
|
}
|
|
134
145
|
yield Promise.allSettled([
|
|
@@ -204,7 +215,7 @@ export function getPortfolioData(provider_1, network_1, defaultProvider_1, addre
|
|
|
204
215
|
}
|
|
205
216
|
})),
|
|
206
217
|
// === STAKING DATA (independent of market data) ===
|
|
207
|
-
...
|
|
218
|
+
...stakingAddresses.map((address) => __awaiter(this, void 0, void 0, function* () {
|
|
208
219
|
try {
|
|
209
220
|
if (!isFluidSupported)
|
|
210
221
|
return;
|
|
@@ -215,7 +226,7 @@ export function getPortfolioData(provider_1, network_1, defaultProvider_1, addre
|
|
|
215
226
|
stakingPositions[address.toLowerCase()].fluid = { error: `Error fetching Fluid lend data for address ${address}`, data: null };
|
|
216
227
|
}
|
|
217
228
|
})),
|
|
218
|
-
...
|
|
229
|
+
...stakingAddresses.map((address) => __awaiter(this, void 0, void 0, function* () {
|
|
219
230
|
try {
|
|
220
231
|
if (!isMainnet)
|
|
221
232
|
return;
|
|
@@ -226,7 +237,7 @@ export function getPortfolioData(provider_1, network_1, defaultProvider_1, addre
|
|
|
226
237
|
stakingPositions[address.toLowerCase()].liquity = { error: `Error fetching Liquity staking data for address ${address}`, data: null };
|
|
227
238
|
}
|
|
228
239
|
})),
|
|
229
|
-
...
|
|
240
|
+
...stakingAddresses.map((address) => __awaiter(this, void 0, void 0, function* () {
|
|
230
241
|
try {
|
|
231
242
|
if (!isMainnet)
|
|
232
243
|
return;
|
|
@@ -237,7 +248,7 @@ export function getPortfolioData(provider_1, network_1, defaultProvider_1, addre
|
|
|
237
248
|
stakingPositions[address.toLowerCase()].aaveV3 = { error: `Error fetching Aave V3 staking data for address ${address}`, data: null };
|
|
238
249
|
}
|
|
239
250
|
})),
|
|
240
|
-
...
|
|
251
|
+
...stakingAddresses.map((address) => __awaiter(this, void 0, void 0, function* () {
|
|
241
252
|
try {
|
|
242
253
|
if (!isMainnet)
|
|
243
254
|
return;
|
|
@@ -249,7 +260,7 @@ export function getPortfolioData(provider_1, network_1, defaultProvider_1, addre
|
|
|
249
260
|
}
|
|
250
261
|
})),
|
|
251
262
|
// Liquity V2 staking
|
|
252
|
-
...liquityV2MarketsStaking.map(market =>
|
|
263
|
+
...liquityV2MarketsStaking.map(market => stakingAddresses.map((address) => __awaiter(this, void 0, void 0, function* () {
|
|
253
264
|
try {
|
|
254
265
|
if (!isMainnet) {
|
|
255
266
|
stakingPositions[address.toLowerCase()].liquityV2[market.value] = { error: '', data: null };
|
|
@@ -268,13 +279,13 @@ export function getPortfolioData(provider_1, network_1, defaultProvider_1, addre
|
|
|
268
279
|
(() => __awaiter(this, void 0, void 0, function* () {
|
|
269
280
|
try {
|
|
270
281
|
if (!isMainnet) {
|
|
271
|
-
for (const address of
|
|
282
|
+
for (const address of rewardsAddresses) {
|
|
272
283
|
rewardsData[address.toLowerCase()].king = { error: '', data: [] };
|
|
273
284
|
}
|
|
274
285
|
return;
|
|
275
286
|
}
|
|
276
|
-
const kingRewards = yield getKingRewards(client, network,
|
|
277
|
-
for (const address of
|
|
287
|
+
const kingRewards = yield getKingRewards(client, network, rewardsAddresses);
|
|
288
|
+
for (const address of rewardsAddresses) {
|
|
278
289
|
const lowerAddress = address.toLowerCase();
|
|
279
290
|
rewardsData[lowerAddress].king = {
|
|
280
291
|
error: '',
|
|
@@ -284,7 +295,7 @@ export function getPortfolioData(provider_1, network_1, defaultProvider_1, addre
|
|
|
284
295
|
}
|
|
285
296
|
catch (error) {
|
|
286
297
|
console.error('Error fetching King rewards data in batch:', error);
|
|
287
|
-
for (const address of
|
|
298
|
+
for (const address of rewardsAddresses) {
|
|
288
299
|
rewardsData[address.toLowerCase()].king = {
|
|
289
300
|
error: 'Error fetching King rewards data in batch',
|
|
290
301
|
data: null,
|
|
@@ -296,13 +307,13 @@ export function getPortfolioData(provider_1, network_1, defaultProvider_1, addre
|
|
|
296
307
|
(() => __awaiter(this, void 0, void 0, function* () {
|
|
297
308
|
try {
|
|
298
309
|
if (!isMainnet) {
|
|
299
|
-
for (const address of
|
|
310
|
+
for (const address of rewardsAddresses) {
|
|
300
311
|
rewardsData[address.toLowerCase()].uniswap = { error: '', data: [] };
|
|
301
312
|
}
|
|
302
313
|
return;
|
|
303
314
|
}
|
|
304
|
-
const uniswapRewards = yield getUniswapRewards(client, network,
|
|
305
|
-
for (const address of
|
|
315
|
+
const uniswapRewards = yield getUniswapRewards(client, network, rewardsAddresses);
|
|
316
|
+
for (const address of rewardsAddresses) {
|
|
306
317
|
const lowerAddress = address.toLowerCase();
|
|
307
318
|
rewardsData[lowerAddress].uniswap = {
|
|
308
319
|
error: '',
|
|
@@ -312,7 +323,7 @@ export function getPortfolioData(provider_1, network_1, defaultProvider_1, addre
|
|
|
312
323
|
}
|
|
313
324
|
catch (error) {
|
|
314
325
|
console.error('Error fetching Uniswap rewards data in batch:', error);
|
|
315
|
-
for (const address of
|
|
326
|
+
for (const address of rewardsAddresses) {
|
|
316
327
|
rewardsData[address.toLowerCase()].uniswap = {
|
|
317
328
|
error: 'Error fetching Uniswap rewards data in batch',
|
|
318
329
|
data: null,
|
|
@@ -320,7 +331,7 @@ export function getPortfolioData(provider_1, network_1, defaultProvider_1, addre
|
|
|
320
331
|
}
|
|
321
332
|
}
|
|
322
333
|
}))(),
|
|
323
|
-
...sparkMarkets.map((market) =>
|
|
334
|
+
...sparkMarkets.map((market) => rewardsAddresses.map((address) => __awaiter(this, void 0, void 0, function* () {
|
|
324
335
|
try {
|
|
325
336
|
if (!isMainnet) {
|
|
326
337
|
rewardsData[address.toLowerCase()].spark[market.value] = { error: '', data: [] };
|
|
@@ -334,7 +345,7 @@ export function getPortfolioData(provider_1, network_1, defaultProvider_1, addre
|
|
|
334
345
|
rewardsData[address.toLowerCase()].spark[market.value] = { error: `Error fetching Spark rewards data for address ${address}`, data: null };
|
|
335
346
|
}
|
|
336
347
|
}))).flat(),
|
|
337
|
-
...
|
|
348
|
+
...rewardsAddresses.map((address) => __awaiter(this, void 0, void 0, function* () {
|
|
338
349
|
try {
|
|
339
350
|
const merklData = yield getMerklUnclaimedRewards(address, network);
|
|
340
351
|
rewardsData[address.toLowerCase()].merkl = { error: '', data: merklData };
|
|
@@ -344,27 +355,28 @@ export function getPortfolioData(provider_1, network_1, defaultProvider_1, addre
|
|
|
344
355
|
rewardsData[address.toLowerCase()].merkl = { error: `Error fetching Merkl rewards data for address ${address}`, data: null };
|
|
345
356
|
}
|
|
346
357
|
})),
|
|
347
|
-
...aaveV3Markets.map(market =>
|
|
358
|
+
...aaveV3Markets.map(market => rewardsAddresses.map((address) => __awaiter(this, void 0, void 0, function* () {
|
|
348
359
|
try {
|
|
349
360
|
const aaveData = yield getUnclaimedRewardsForAllMarkets(client, network, address, market.providerAddress);
|
|
350
361
|
rewardsData[address.toLowerCase()].aaveV3[market.value] = { error: '', data: aaveData };
|
|
351
362
|
}
|
|
352
363
|
catch (error) {
|
|
353
364
|
console.error(`Error fetching Aave V3 Merit rewards data for address ${address}:`, error);
|
|
354
|
-
|
|
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 };
|
|
355
367
|
}
|
|
356
368
|
}))).flat(),
|
|
357
369
|
// Batch Spark Airdrop rewards
|
|
358
370
|
(() => __awaiter(this, void 0, void 0, function* () {
|
|
359
371
|
try {
|
|
360
372
|
if (!isMainnet) {
|
|
361
|
-
for (const address of
|
|
373
|
+
for (const address of rewardsAddresses) {
|
|
362
374
|
rewardsData[address.toLowerCase()].spk = { error: '', data: [] };
|
|
363
375
|
}
|
|
364
376
|
return;
|
|
365
377
|
}
|
|
366
|
-
const sparkAirdropRewards = yield fetchSparkAirdropRewards(client, network,
|
|
367
|
-
for (const address of
|
|
378
|
+
const sparkAirdropRewards = yield fetchSparkAirdropRewards(client, network, rewardsAddresses);
|
|
379
|
+
for (const address of rewardsAddresses) {
|
|
368
380
|
const lowerAddress = address.toLowerCase();
|
|
369
381
|
rewardsData[lowerAddress].spk = {
|
|
370
382
|
error: '',
|
|
@@ -374,7 +386,7 @@ export function getPortfolioData(provider_1, network_1, defaultProvider_1, addre
|
|
|
374
386
|
}
|
|
375
387
|
catch (error) {
|
|
376
388
|
console.error('Error fetching Spark Airdrop rewards data in batch:', error);
|
|
377
|
-
for (const address of
|
|
389
|
+
for (const address of rewardsAddresses) {
|
|
378
390
|
rewardsData[address.toLowerCase()].spk = {
|
|
379
391
|
error: 'Error fetching Spark Airdrop rewards data in batch',
|
|
380
392
|
data: null,
|
|
@@ -387,8 +399,8 @@ export function getPortfolioData(provider_1, network_1, defaultProvider_1, addre
|
|
|
387
399
|
if (!isMainnet) {
|
|
388
400
|
return;
|
|
389
401
|
}
|
|
390
|
-
const ethenaAirdropRewards = yield fetchEthenaAirdropRewards(
|
|
391
|
-
for (const address of
|
|
402
|
+
const ethenaAirdropRewards = yield fetchEthenaAirdropRewards(rewardsAddresses);
|
|
403
|
+
for (const address of rewardsAddresses) {
|
|
392
404
|
const lowerAddress = address.toLowerCase();
|
|
393
405
|
rewardsData[lowerAddress].ethena = {
|
|
394
406
|
error: '',
|
|
@@ -398,7 +410,7 @@ export function getPortfolioData(provider_1, network_1, defaultProvider_1, addre
|
|
|
398
410
|
}
|
|
399
411
|
catch (error) {
|
|
400
412
|
console.error('Error fetching Ethena Airdrop rewards data:', error);
|
|
401
|
-
for (const address of
|
|
413
|
+
for (const address of rewardsAddresses) {
|
|
402
414
|
rewardsData[address.toLowerCase()].ethena = {
|
|
403
415
|
error: 'Error fetching Ethena Airdrop rewards data in batch',
|
|
404
416
|
data: null,
|
|
@@ -434,15 +446,16 @@ export function getPortfolioData(provider_1, network_1, defaultProvider_1, addre
|
|
|
434
446
|
try {
|
|
435
447
|
const [accDataPromise, earnDataPromise] = yield Promise.allSettled([
|
|
436
448
|
_getMorphoBlueAccountData(client, network, address, market, morphoMarketsData[market.value]),
|
|
437
|
-
getMorphoEarn(client, network, address, market, morphoMarketsData[market.value]),
|
|
449
|
+
includeStaking ? getMorphoEarn(client, network, address, market, morphoMarketsData[market.value]) : null,
|
|
438
450
|
]);
|
|
439
451
|
if (accDataPromise.status === 'rejected') {
|
|
440
452
|
console.error(`Error fetching MorphoBlue account data for address ${address} on market ${market.value}:`, accDataPromise.reason);
|
|
441
453
|
positions[address.toLowerCase()].morphoBlue[market.value] = { error: `Error fetching MorphoBlue account data for address ${address} on market ${market.value}`, data: null };
|
|
442
454
|
}
|
|
443
455
|
if (earnDataPromise.status === 'rejected') {
|
|
444
|
-
|
|
445
|
-
|
|
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 };
|
|
446
459
|
}
|
|
447
460
|
if (accDataPromise.status !== 'rejected') {
|
|
448
461
|
const accData = accDataPromise.value;
|
|
@@ -578,7 +591,7 @@ export function getPortfolioData(provider_1, network_1, defaultProvider_1, addre
|
|
|
578
591
|
}
|
|
579
592
|
}))).flat(),
|
|
580
593
|
// liquity sBold/yBold and staking options
|
|
581
|
-
...
|
|
594
|
+
...stakingAddresses.map((address) => __awaiter(this, void 0, void 0, function* () {
|
|
582
595
|
try {
|
|
583
596
|
if (!isMainnet) {
|
|
584
597
|
stakingPositions[address.toLowerCase()].liquityV2SBoldYBold = { error: '', data: null };
|