import { IAppToolkit } from '../../../app-toolkit/app-toolkit.interface';
import { ContractPositionBalance } from '../../../position/position-balance.interface';
import { MetaType, Standard } from '../../../position/position.interface';
import { GetDataPropsParams, GetDefinitionsParams, GetDisplayPropsParams, GetTokenDefinitionsParams } from '../../../position/template/contract-position.template.types';
import { CustomContractPositionTemplatePositionFetcher } from '../../../position/template/custom-contract-position.template.position-fetcher';
import { KyberswapElasticContractFactory, KyberswapElasticLm } from '../contracts';
import { KyberswapElasticFarmContractPositionBuilder } from './kyberswap-elastic.farm.contract-position-builder';
export declare type KyberswapElasticFarmPositionDataProps = {
    feeTier: number;
    liquidity: number;
    reserves: number[];
    poolAddress: string;
    assetStandard: Standard.ERC_721;
    rangeStart?: number;
    rangeEnd?: number;
    apy?: number;
    positionKey: string;
};
export declare type KyberswapElasticFarmPositionDefinition = {
    address: string;
    poolAddress: string;
    token0Address: string;
    token1Address: string;
    rewardTokenAddresses: string[];
    feeTier: number;
};
export declare abstract class KyberswapElasticFarmContractPositionFetcher extends CustomContractPositionTemplatePositionFetcher<KyberswapElasticLm, KyberswapElasticFarmPositionDataProps, KyberswapElasticFarmPositionDefinition> {
    protected readonly appToolkit: IAppToolkit;
    protected readonly contractFactory: KyberswapElasticContractFactory;
    protected readonly kyberElasticFarmContractPositionBuilder: KyberswapElasticFarmContractPositionBuilder;
    abstract kyberswapElasticLmAddress: string;
    constructor(appToolkit: IAppToolkit, contractFactory: KyberswapElasticContractFactory, kyberElasticFarmContractPositionBuilder: KyberswapElasticFarmContractPositionBuilder);
    getContract(address: string): KyberswapElasticLm;
    getDefinitions({ multicall }: GetDefinitionsParams): Promise<KyberswapElasticFarmPositionDefinition[]>;
    getTokenDefinitions({ definition, }: GetTokenDefinitionsParams<KyberswapElasticLm, KyberswapElasticFarmPositionDefinition>): Promise<{
        metaType: MetaType;
        address: string;
        network: import("../../../types").Network;
    }[]>;
    getDataProps({ multicall, contractPosition, definition, }: GetDataPropsParams<KyberswapElasticLm, KyberswapElasticFarmPositionDataProps, KyberswapElasticFarmPositionDefinition>): Promise<KyberswapElasticFarmPositionDataProps>;
    getLabel({ contractPosition, definition, }: GetDisplayPropsParams<KyberswapElasticLm, KyberswapElasticFarmPositionDataProps, KyberswapElasticFarmPositionDefinition>): Promise<string>;
    getTokenBalancesPerPosition(): Promise<void>;
    getBalances(address: string): Promise<ContractPositionBalance<KyberswapElasticFarmPositionDataProps>[]>;
}
