import { IAddress, INormalizedNumber } from './web3'; import { IDebankProtocolExposure, IDebankTokenExposure, ITokenizedVaultStrategist, IWSSubaccountCefi } from './webserver'; type ILabelValue = { label: string; value: string; usd: number; }; export type IPoolLoan = { address: IAddress; apr: number; collateral: IAddress; principal: INormalizedNumber; allocation: number; repaid: INormalizedNumber; exposure?: ILabelValue[]; positions?: ILabelValue[]; idleCapital?: boolean; }; export type IPoolRewards = { upshift_points: string; latestUpshiftPointMultiplier: number; upshift_points_multipliers: { multiplier: number; timestamp: number; }[]; additional_points: string[]; }; export type IPool = { address: IAddress; name: string; logoUrl: string; asset: IAddress; loansOperator?: IAddress; globalLoansAmount: INormalizedNumber; symbol: string; totalAssets?: INormalizedNumber; totalSupply: INormalizedNumber; maxSupply: INormalizedNumber; decimals: number; getTotalLoansDeployed: INormalizedNumber; chainId: number; withdrawalFee: INormalizedNumber; loans?: IPoolLoan[]; collateral?: IAddress[]; apy?: number; sUSDeAPY?: number; leverageLoopAPR?: number; leverage?: string; managementFee?: number | undefined; stakeAPY?: number; idleAssets?: INormalizedNumber; description?: string; hardcodedStrategist?: string; protocolExposure?: IDebankProtocolExposure[]; tokenExposure?: IDebankTokenExposure[]; cefiExposure?: IWSSubaccountCefi[]; vaultsSubAccWhitelist?: IAddress[]; internalType?: 'lendingPool' | 'tokenizedVault'; publicType?: 'Lending' | 'Defi Yield' | 'Pre-deposit'; strategist: ITokenizedVaultStrategist; isFeatured?: boolean; isVisible?: boolean; rewards?: IPoolRewards; }; export type IPoolWithUnderlying = IPool & { underlying: { address: IAddress; symbol: string; decimals: number; chain: number; }; }; export interface ISubgraphFormattedPool { decimals: number; symbol: string; name: string; asset: IAddress; totalSupply: INormalizedNumber; totalAssets: INormalizedNumber; maxSupply: INormalizedNumber; globalLoansAmount: INormalizedNumber; getTotalLoansDeployed: INormalizedNumber; withdrawalFee: INormalizedNumber; chainId: number; address: IAddress; managementFee: number; underlying: { address: IAddress; chain: number; }; loansOperator: IAddress; loans: ISubgraphFormattedLoan[]; } export interface ISubgraphFormattedLoan { amount: INormalizedNumber; address: IAddress; apr: number; collateral: IAddress; repaid: INormalizedNumber; borrower: IAddress; } export type IPoolWithPositions = IPoolWithUnderlying & { token: IAddress; position: string; apy: number; status: string; availableRedemptions: IPoolAvailableRedemption[]; redeemable: INormalizedNumber; walletBalance: string; }; export type IPoolFunctions = 'decimals' | 'symbol' | 'name' | 'asset' | 'totalSupply' | 'maxSupply' | 'totalAssets' | 'globalLoansAmount' | 'loansOperator' | 'getTotalLoansDeployed' | 'withdrawalFee' | 'lagDuration' | 'withdrawalsPaused' | 'assetsWhitelistAddress' | 'getWhitelistedAssets' | 'maxDepositAmount' | 'getTotalAssets' | 'lpTokenAddress' | 'depositCap'; export type IPoolAction = 'deposit' | 'withdraw' | 'claim' | 'stake' | 'getReward' | 'unstake'; export type IPoolModal = { isOpen: boolean; onClose: (e: any) => void; type: IPoolAction; mode?: 'light' | 'dark'; } & IPoolWithUnderlying; export type IPoolAvailableRedemption = { receiver: IAddress; day: INormalizedNumber; month: INormalizedNumber; year: INormalizedNumber; amount: INormalizedNumber; date: Date; pool: IAddress; }; export type IPoolRedemptionHistoryItem = { receiver: IAddress; amount: INormalizedNumber; processed: Date; requested: Date; pool: IAddress; }; export type IPoolOrderParam = 'asc' | 'desc'; export type IPoolHistoricalParams = { order?: IPoolOrderParam; start: Date; interval?: 'years' | 'quarters' | 'months' | 'weeks' | 'days' | 'hours' | 'minutes'; }; export {};