import { IAppToolkit } from '../../../app-toolkit/app-toolkit.interface';
import { DollarDisplayItem, PercentageDisplayItem } from '../../../position/display.interface';
import { AppTokenTemplatePositionFetcher } from '../../../position/template/app-token.template.position-fetcher';
import { DefaultAppTokenDataProps, DefaultAppTokenDefinition, GetAddressesParams, GetDataPropsParams, GetDisplayPropsParams, GetPriceParams, GetPricePerShareParams, GetUnderlyingTokensParams, UnderlyingTokenDefinition } from '../../../position/template/app-token.template.types';
import { PendleMarket, PendleV2ContractFactory } from '../contracts';
declare type Token = {
    name: string;
    icon: string;
    address: string;
    price: number;
};
export declare type PendleV2MarketTokenDefinition = {
    address: string;
    aggregatedApy: number;
    ytFloatingApy: number;
    impliedApy: number;
    underlyingApy: number;
    ptDiscount: number;
    pt: Token;
    sy: Token;
    yt: Token;
    price: number;
    expiry: string;
    name: string;
    icon: string;
};
export declare type PendleV2MarketDataProps = DefaultAppTokenDataProps & PendleV2MarketTokenDefinition;
export declare abstract class PendleV2PoolTokenFetcher extends AppTokenTemplatePositionFetcher<PendleMarket, PendleV2MarketDataProps, PendleV2MarketTokenDefinition> {
    protected readonly appToolkit: IAppToolkit;
    protected readonly pendleV2ContractFactory: PendleV2ContractFactory;
    groupLabel: string;
    constructor(appToolkit: IAppToolkit, pendleV2ContractFactory: PendleV2ContractFactory);
    getDefinitions(): Promise<PendleV2MarketTokenDefinition[]>;
    getContract(address: string): PendleMarket;
    getAddresses({ definitions }: GetAddressesParams<DefaultAppTokenDefinition>): Promise<string[]>;
    getPrice({ definition, }: GetPriceParams<PendleMarket, PendleV2MarketDataProps, PendleV2MarketTokenDefinition>): Promise<number>;
    getUnderlyingTokenDefinitions({ definition, }: GetUnderlyingTokensParams<PendleMarket, PendleV2MarketTokenDefinition>): Promise<UnderlyingTokenDefinition[]>;
    getPricePerShare({ definition, }: GetPricePerShareParams<PendleMarket, PendleV2MarketDataProps, PendleV2MarketTokenDefinition>): Promise<number[]>;
    getApy({ definition, }: GetDataPropsParams<PendleMarket, PendleV2MarketDataProps, PendleV2MarketTokenDefinition>): Promise<number>;
    getLabel({ definition, }: GetDisplayPropsParams<PendleMarket, DefaultAppTokenDataProps, PendleV2MarketTokenDefinition>): Promise<string>;
    getSecondaryLabel({ definition, }: GetDisplayPropsParams<PendleMarket, DefaultAppTokenDataProps, PendleV2MarketTokenDefinition>): Promise<string | number | DollarDisplayItem | PercentageDisplayItem | undefined>;
    getImages({ definition, }: GetDisplayPropsParams<PendleMarket, DefaultAppTokenDataProps, PendleV2MarketTokenDefinition>): Promise<string[]>;
    getDataProps(params: GetDataPropsParams<PendleMarket, PendleV2MarketDataProps, PendleV2MarketTokenDefinition>): Promise<PendleV2MarketDataProps>;
}
export {};
