import { IAppToolkit } from '../../../app-toolkit/app-toolkit.interface';
import { AppTokenTemplatePositionFetcher } from '../../../position/template/app-token.template.position-fetcher';
import { GetAddressesParams, DefaultAppTokenDataProps, GetUnderlyingTokensParams, GetPricePerShareParams, GetDisplayPropsParams } from '../../../position/template/app-token.template.types';
import { ReaperContractFactory, ReaperCrypt } from '../contracts';
import { ReaperVaultCacheManager } from './reaper.vault.cache-manager';
declare type ReaperVaultDefinition = {
    name: string;
    address: string;
    underlyingAddress: string;
    apy: number;
};
export declare abstract class ReaperVaultTokenFetcher extends AppTokenTemplatePositionFetcher<ReaperCrypt, DefaultAppTokenDataProps, ReaperVaultDefinition> {
    protected readonly appToolkit: IAppToolkit;
    protected readonly contractFactory: ReaperContractFactory;
    protected readonly cacheManager: ReaperVaultCacheManager;
    constructor(appToolkit: IAppToolkit, contractFactory: ReaperContractFactory, cacheManager: ReaperVaultCacheManager);
    getContract(address: string): ReaperCrypt;
    getDefinitions(): Promise<{
        name: string;
        address: string;
        underlyingAddress: string;
        apy: number;
    }[]>;
    getAddresses({ definitions }: GetAddressesParams): Promise<string[]>;
    getUnderlyingTokenDefinitions({ definition }: GetUnderlyingTokensParams<ReaperCrypt, ReaperVaultDefinition>): Promise<{
        address: string;
        network: import("../../../types").Network;
    }[]>;
    getPricePerShare({ appToken, contract, }: GetPricePerShareParams<ReaperCrypt, DefaultAppTokenDataProps, ReaperVaultDefinition>): Promise<number[]>;
    getLabel({ contract }: GetDisplayPropsParams<ReaperCrypt>): Promise<string>;
}
export {};
