import { Provider } from '@ethersproject/providers'; import { BigNumber, Signer } from 'ethers'; import { SdkConfig } from '../../sdk-config'; import { TrancheConfigurationSubgraphResult, TrancheSubgraphResult } from '../DataService/subgraph-types'; import { PoolOverview } from '../DataService/types'; import { LockingSummarySubgraphResult, SystemVariables } from '../Locking/types'; import { PortfolioLendingPool, PortfolioRewards, PortfolioSummary, UserLendingPoolTrancheFixedTermDepositLock } from './types'; export declare class Portfolio { private _kasuConfig; private _lockingService; private _dataService; private _userLendingService; private readonly _graph; private _systemVariablesAbi; private _userLoyaltyRewardsAbi; private _kasuNftContract; readonly _signerOrProvider: Signer | Provider; private _isLiteDeployment; constructor(_kasuConfig: SdkConfig, signerOrProvider: Signer | Provider); private computeYieldMetrics; /** * Calculate aggregate yield metrics for a set of portfolio lending pools. * Accepts pre-fetched pool data and returns totals without performing any network calls. */ calculateYieldMetrics(portfolioLendingPools: PortfolioLendingPool[]): { totalInvestments: number; totalYieldEarned: number; weightedApy: number; weeklyYieldEarnings: number; }; /** * Calculate the user's weekly protocol fee share (in stable asset units) given tranche * balances/configs, system variables and locking summary. All inputs are expected to be pre-fetched. */ calculateWeeklyProtocolFees(params: { trancheBalances: TrancheSubgraphResult; trancheConfigurations: TrancheConfigurationSubgraphResult; systemVariables: SystemVariables; lockingSummary: LockingSummarySubgraphResult; userRksuAmount: string; }): number; /** * Calculate the user's weekly KASU bonus rewards (KASU) based on current deposits, * loyalty level, reward rate, and KSU epoch price. Inputs should be pre-fetched. */ calculateWeeklyKsuBonusRewards(params: { userAddress: string; userRksuAmount: string; userDepositAmounts: [BigNumber, BigNumber]; ksuEpochPrice: { price: BigNumber; decimals: number; }; }): Promise; getPortfolioRewards(userAddress: string): Promise; getUserNfts(userAddress: string): Promise; getPortfolioSummary(userAddress: string, portfolioLendingPools: PortfolioLendingPool[], currentEpoch: string): Promise; getPortfolioLendingData(userAddress: string, poolOverviews: PoolOverview[], currentEpoch: string, provider?: Provider): Promise; precisionToString(val: number): string; calculateFixedTermDepositEarnings(fixedTermDepositLock: UserLendingPoolTrancheFixedTermDepositLock, totalTrancheBalance: string, totalTrancheShares: string): number; }