import { BigNumberish, Contract } from 'ethers';
import { IAppToolkit } from '../../app-toolkit/app-toolkit.interface';
import { ContractPositionTemplatePositionFetcher } from '../../position/template/contract-position.template.position-fetcher';
import { GetDataPropsParams, GetDisplayPropsParams, GetTokenBalancesParams, GetTokenDefinitionsParams, UnderlyingTokenDefinition } from '../../position/template/contract-position.template.types';
export declare type SingleStakingFarmDataProps = {
    liquidity: number;
    apy: number;
    isActive: boolean;
};
export declare abstract class SingleStakingFarmDynamicTemplateContractPositionFetcher<T extends Contract, V extends SingleStakingFarmDataProps = SingleStakingFarmDataProps> extends ContractPositionTemplatePositionFetcher<T, V> {
    protected readonly appToolkit: IAppToolkit;
    constructor(appToolkit: IAppToolkit);
    abstract getFarmAddresses(): string[] | Promise<string[]>;
    abstract getStakedTokenAddress(params: GetTokenDefinitionsParams<T>): Promise<string>;
    abstract getRewardTokenAddresses(params: GetTokenDefinitionsParams<T>): Promise<string | string[]>;
    abstract getRewardRates(params: GetDataPropsParams<T, V>): Promise<BigNumberish | BigNumberish[]>;
    abstract getStakedTokenBalance(params: GetTokenBalancesParams<T, SingleStakingFarmDataProps>): Promise<BigNumberish>;
    abstract getRewardTokenBalances(params: GetTokenBalancesParams<T, SingleStakingFarmDataProps>): Promise<BigNumberish | BigNumberish[]>;
    getDefinitions(): Promise<{
        address: string;
    }[]>;
    getTokenDefinitions(params: GetTokenDefinitionsParams<T>): Promise<UnderlyingTokenDefinition[]>;
    getReserve({ contractPosition, multicall }: GetDataPropsParams<T, V>): Promise<number>;
    getDataProps(params: GetDataPropsParams<T, V>): Promise<V>;
    getLabel({ contractPosition }: GetDisplayPropsParams<T>): Promise<string>;
    getImages({ contractPosition }: GetDisplayPropsParams<T, V>): Promise<string[]>;
    getTokenBalancesPerPosition(params: GetTokenBalancesParams<T, SingleStakingFarmDataProps>): Promise<BigNumberish[]>;
}
