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, GetAddressesParams, GetDataPropsParams, GetDefinitionsParams, GetDisplayPropsParams, GetPriceParams } from '../../../position/template/app-token.template.types';
import { PendlePrincipalToken, PendleV2ContractFactory } from '../contracts';
export declare type PendleV2PrincipalTokenDefinition = {
    address: string;
    icon: string;
    name: string;
    price: number;
    expiry: string;
    impliedApy: number;
    ptDiscount: number;
};
export declare type PendleV2PrincipalTokenDataProps = DefaultAppTokenDataProps & PendleV2PrincipalTokenDefinition;
export declare abstract class PendleV2PrincipalTokenFetcher extends AppTokenTemplatePositionFetcher<PendlePrincipalToken, PendleV2PrincipalTokenDataProps, PendleV2PrincipalTokenDefinition> {
    protected readonly appToolkit: IAppToolkit;
    protected readonly pendleV2ContractFactory: PendleV2ContractFactory;
    groupLabel: string;
    constructor(appToolkit: IAppToolkit, pendleV2ContractFactory: PendleV2ContractFactory);
    getDefinitions(_params: GetDefinitionsParams): Promise<PendleV2PrincipalTokenDefinition[]>;
    getContract(address: string): PendlePrincipalToken;
    getAddresses({ definitions }: GetAddressesParams): Promise<string[]>;
    getUnderlyingTokenDefinitions(): Promise<never[]>;
    getPricePerShare(): Promise<number[]>;
    getPrice({ definition, }: GetPriceParams<PendlePrincipalToken, PendleV2PrincipalTokenDataProps, PendleV2PrincipalTokenDefinition>): Promise<number>;
    getApy({ definition, }: GetDataPropsParams<PendlePrincipalToken, PendleV2PrincipalTokenDataProps, PendleV2PrincipalTokenDefinition>): Promise<number>;
    getLabel({ definition, }: GetDisplayPropsParams<PendlePrincipalToken, PendleV2PrincipalTokenDataProps, PendleV2PrincipalTokenDefinition>): Promise<string>;
    getSecondaryLabel({ definition, }: GetDisplayPropsParams<PendlePrincipalToken, PendleV2PrincipalTokenDataProps, PendleV2PrincipalTokenDefinition>): Promise<string | number | DollarDisplayItem | PercentageDisplayItem | undefined>;
    getTertiaryLabel({ definition, }: GetDisplayPropsParams<PendlePrincipalToken, PendleV2PrincipalTokenDataProps, PendleV2PrincipalTokenDefinition>): Promise<string | number | DollarDisplayItem | PercentageDisplayItem | undefined>;
    getImages({ definition, }: GetDisplayPropsParams<PendlePrincipalToken, PendleV2PrincipalTokenDataProps, PendleV2PrincipalTokenDefinition>): Promise<string[]>;
    getDataProps(params: GetDataPropsParams<PendlePrincipalToken, PendleV2PrincipalTokenDataProps, PendleV2PrincipalTokenDefinition>): Promise<PendleV2PrincipalTokenDataProps>;
}
