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 { GetUnderlyingTokensParams, GetPricePerShareParams, GetDataPropsParams, GetDisplayPropsParams, DefaultAppTokenDefinition, GetDefinitionsParams, GetAddressesParams, DefaultAppTokenDataProps } from '../../../position/template/app-token.template.types';
import { PendleContractFactory, PendleYieldToken } from '../contracts';
export declare type PendleYieldTokenDataProps = DefaultAppTokenDataProps & {
    expiry: number;
    baseTokenAddress: string;
    marketAddress: string;
};
export declare type PendleYieldTokenDefinition = {
    address: string;
    marketAddress: string;
    ownershipTokenAddress: string;
    baseTokenAddress: string;
    yieldTokenAddress: string;
    underlyingAddress: string;
    underlyingYieldAddress: string;
    forgeAddress: string;
    expiry: number;
};
export declare class EthereumPendleYieldTokenFetcher extends AppTokenTemplatePositionFetcher<PendleYieldToken, PendleYieldTokenDataProps, PendleYieldTokenDefinition> {
    protected readonly appToolkit: IAppToolkit;
    protected readonly contractFactory: PendleContractFactory;
    groupLabel: string;
    pendleDataAddress: string;
    constructor(appToolkit: IAppToolkit, contractFactory: PendleContractFactory);
    getDefinitions({ multicall }: GetDefinitionsParams): Promise<PendleYieldTokenDefinition[]>;
    getAddresses({ definitions }: GetAddressesParams<DefaultAppTokenDefinition>): string[];
    getContract(address: string): PendleYieldToken;
    getUnderlyingTokenDefinitions({ contract }: GetUnderlyingTokensParams<PendleYieldToken>): Promise<{
        address: string;
        network: import("../../../types").Network;
    }[]>;
    getPricePerShare({ definition, multicall, appToken, tokenLoader, }: GetPricePerShareParams<PendleYieldToken, PendleYieldTokenDataProps, PendleYieldTokenDefinition>): Promise<number[]>;
    getDataProps(params: GetDataPropsParams<PendleYieldToken, PendleYieldTokenDataProps, PendleYieldTokenDefinition>): Promise<{
        marketAddress: string;
        baseTokenAddress: string;
        expiry: number;
        liquidity: number;
        reserves: number[];
        apy: number;
        isDebt: boolean;
    }>;
    getLabel({ appToken, definition, tokenLoader, }: GetDisplayPropsParams<PendleYieldToken, PendleYieldTokenDataProps, PendleYieldTokenDefinition>): Promise<string>;
    getTertiaryLabel({ appToken, }: GetDisplayPropsParams<PendleYieldToken, PendleYieldTokenDataProps, PendleYieldTokenDefinition>): Promise<string | number | DollarDisplayItem | PercentageDisplayItem | undefined>;
}
