import { IAppToolkit } from '../../../app-toolkit/app-toolkit.interface';
import { AppTokenTemplatePositionFetcher } from '../../../position/template/app-token.template.position-fetcher';
import { GetDataPropsParams, DefaultAppTokenDataProps, GetUnderlyingTokensParams, GetPricePerShareParams, GetAddressesParams, GetDisplayPropsParams } from '../../../position/template/app-token.template.types';
import { YieldProtocolContractFactory } from '../contracts';
import { YieldProtocolLendToken } from '../contracts/ethers/YieldProtocolLendToken';
export declare const formatMaturity: (maturity: number) => string;
declare type FyTokenDefinition = {
    address: string;
    poolAddress?: string;
};
declare type FyTokenDataProps = DefaultAppTokenDataProps & {
    maturity: number;
};
export declare abstract class YieldProtocolLendTokenFetcher extends AppTokenTemplatePositionFetcher<YieldProtocolLendToken, FyTokenDataProps, FyTokenDefinition> {
    protected readonly appToolkit: IAppToolkit;
    protected readonly contractFactory: YieldProtocolContractFactory;
    abstract subgraphUrl: string;
    constructor(appToolkit: IAppToolkit, contractFactory: YieldProtocolContractFactory);
    getContract(address: string): YieldProtocolLendToken;
    getDefinitions(): Promise<FyTokenDefinition[]>;
    getAddresses({ definitions }: GetAddressesParams<FyTokenDefinition>): Promise<string[]>;
    getUnderlyingTokenDefinitions({ contract }: GetUnderlyingTokensParams<YieldProtocolLendToken>): Promise<{
        address: string;
        network: import("../../../types").Network;
    }[]>;
    getPricePerShare({ appToken, definition, contract, multicall, }: GetPricePerShareParams<YieldProtocolLendToken, DefaultAppTokenDataProps, FyTokenDefinition>): Promise<number[]>;
    getDataProps(params: GetDataPropsParams<YieldProtocolLendToken, FyTokenDataProps, FyTokenDefinition>): Promise<{
        maturity: number;
        liquidity: number;
        reserves: number[];
        apy: number;
        isDebt: boolean;
    }>;
    getLabel({ appToken }: GetDisplayPropsParams<YieldProtocolLendToken, FyTokenDataProps, FyTokenDefinition>): Promise<string>;
    getSecondaryLabel({ appToken, }: GetDisplayPropsParams<YieldProtocolLendToken, FyTokenDataProps, FyTokenDefinition>): Promise<string>;
    getTertiaryLabel({ appToken, }: GetDisplayPropsParams<YieldProtocolLendToken, FyTokenDataProps, FyTokenDefinition>): Promise<"" | "Matured">;
}
export {};
