import { IAppToolkit } from '../../../app-toolkit/app-toolkit.interface';
import { AppTokenTemplatePositionFetcher } from '../../../position/template/app-token.template.position-fetcher';
import { DefaultAppTokenDataProps, GetAddressesParams, GetDataPropsParams, GetDisplayPropsParams, GetPricePerShareParams, GetTokenPropsParams, GetUnderlyingTokensParams } from '../../../position/template/app-token.template.types';
import { BeefyContractFactory, BeefyVaultToken } from '../contracts';
import { BeefyVaultTokenDefinitionsResolver } from './beefy.vault.token-definition-resolver';
export declare type BeefyVaultTokenDefinition = {
    address: string;
    underlyingAddress: string;
    id: string;
    marketName: string;
    symbol: string;
    apy: number;
};
export declare abstract class BeefyVaultTokenFetcher extends AppTokenTemplatePositionFetcher<BeefyVaultToken, DefaultAppTokenDataProps, BeefyVaultTokenDefinition> {
    protected readonly appToolkit: IAppToolkit;
    private readonly tokenDefinitionsResolver;
    protected readonly contractFactory: BeefyContractFactory;
    constructor(appToolkit: IAppToolkit, tokenDefinitionsResolver: BeefyVaultTokenDefinitionsResolver, contractFactory: BeefyContractFactory);
    getContract(address: string): BeefyVaultToken;
    getDecimals({ appToken }: GetTokenPropsParams<BeefyVaultToken>): Promise<number>;
    getDefinitions(): Promise<BeefyVaultTokenDefinition[]>;
    getAddresses({ definitions }: GetAddressesParams<BeefyVaultTokenDefinition>): Promise<string[]>;
    getUnderlyingTokenDefinitions({ definition, }: GetUnderlyingTokensParams<BeefyVaultToken, BeefyVaultTokenDefinition>): Promise<{
        address: string;
        network: import("../../../types").Network;
    }[]>;
    getPricePerShare({ contract, multicall }: GetPricePerShareParams<BeefyVaultToken>): Promise<number[]>;
    getLabel({ appToken }: GetDisplayPropsParams<BeefyVaultToken>): Promise<string>;
    getApy({ definition }: GetDataPropsParams<BeefyVaultToken, DefaultAppTokenDataProps, BeefyVaultTokenDefinition>): Promise<number>;
}
