import { BigNumberish } from 'ethers';
import { IAppToolkit } from '../../../app-toolkit/app-toolkit.interface';
import { DefaultDataProps } from '../../../position/display.interface';
import { GetTokenBalancesParams, GetDataPropsParams, GetDefinitionsParams } from '../../../position/template/contract-position.template.types';
import { SingleStakingFarmDataProps } from '../../../position/template/single-staking.dynamic.template.contract-position-fetcher';
import { SingleStakingFarmDefinition, SingleStakingFarmTemplateContractPositionFetcher } from '../../../position/template/single-staking.template.contract-position-fetcher';
import { VelaContractFactory, VelaTokenFarm } from '../contracts';
export interface VelaTokenFarmDefinition extends SingleStakingFarmDefinition {
    poolId: number;
}
export interface VelaTokenFarmDataProps extends DefaultDataProps, SingleStakingFarmDataProps {
    poolId: number;
}
export declare abstract class VelaTokenFarmContractPositionFetcher extends SingleStakingFarmTemplateContractPositionFetcher<VelaTokenFarm, VelaTokenFarmDataProps, VelaTokenFarmDefinition> {
    protected readonly appToolkit: IAppToolkit;
    protected readonly velaContractFactory: VelaContractFactory;
    groupLabel: string;
    abstract get velaTokenFarmAddress(): string | Promise<string>;
    constructor(appToolkit: IAppToolkit, velaContractFactory: VelaContractFactory);
    getContract(address: string): VelaTokenFarm;
    getFarmDefinitions({ multicall }: GetDefinitionsParams): Promise<VelaTokenFarmDefinition[]>;
    getRewardRates({ definition: { poolId }, contract, }: GetDataPropsParams<VelaTokenFarm, VelaTokenFarmDataProps, VelaTokenFarmDefinition>): Promise<BigNumberish | BigNumberish[]>;
    getIsActive({ definition: { poolId }, contract, }: GetDataPropsParams<VelaTokenFarm, VelaTokenFarmDataProps, VelaTokenFarmDefinition>): Promise<boolean>;
    getDataProps(params: GetDataPropsParams<VelaTokenFarm, VelaTokenFarmDataProps, VelaTokenFarmDefinition>): Promise<VelaTokenFarmDataProps>;
    getStakedTokenBalance({ address, contract, contractPosition: { dataProps: { poolId }, }, }: GetTokenBalancesParams<VelaTokenFarm, VelaTokenFarmDataProps>): Promise<BigNumberish>;
    getRewardTokenBalances({ address, contract, multicall, contractPosition: { dataProps: { poolId }, }, }: GetTokenBalancesParams<VelaTokenFarm, VelaTokenFarmDataProps>): Promise<BigNumberish | BigNumberish[]>;
    private getPoolRewarders;
}
