import DataLoader from 'dataloader';
import { IAppToolkit } from '../../../app-toolkit/app-toolkit.interface';
import { ContractPositionBalance } from '../../../position/position-balance.interface';
import { MetaType, Standard } from '../../../position/position.interface';
import { GetDataPropsParams, GetDisplayPropsParams, GetTokenDefinitionsParams } from '../../../position/template/contract-position.template.types';
import { CustomContractPositionTemplatePositionFetcher } from '../../../position/template/custom-contract-position.template.position-fetcher';
import { KyberswapElasticContractFactory, PositionManager } from '../contracts';
import { KyberswapElasticApyDataLoader } from './kyberswap-elastic.apy.data-loader';
import { KyberswapElasticLiquidityContractPositionBuilder } from './kyberswap-elastic.liquidity.contract-position-builder';
export declare type KyberswapElasticLiquidityPositionDataProps = {
    feeTier: number;
    liquidity: number;
    reserves: number[];
    poolAddress: string;
    assetStandard: Standard.ERC_721;
    rangeStart?: number;
    rangeEnd?: number;
    apy?: number;
    positionKey: string;
};
export declare type KyberswapElasticLiquidityPositionDefinition = {
    address: string;
    poolAddress: string;
    token0Address: string;
    token1Address: string;
    feeTier: number;
};
export declare abstract class KyberswapElasticLiquidityContractPositionFetcher extends CustomContractPositionTemplatePositionFetcher<PositionManager, KyberswapElasticLiquidityPositionDataProps, KyberswapElasticLiquidityPositionDefinition> {
    protected readonly appToolkit: IAppToolkit;
    protected readonly contractFactory: KyberswapElasticContractFactory;
    protected readonly kyberElasticLiquidityContractPositionBuilder: KyberswapElasticLiquidityContractPositionBuilder;
    protected readonly apyDataLoaderBuilder: KyberswapElasticApyDataLoader;
    abstract subgraphUrl: string;
    abstract positionManagerAddress: string;
    abstract factoryAddress: string;
    abstract blockSubgraphUrl: string;
    protected poolFeeMapping: Record<string, number> | null;
    apyDataLoader: DataLoader<string, number>;
    constructor(appToolkit: IAppToolkit, contractFactory: KyberswapElasticContractFactory, kyberElasticLiquidityContractPositionBuilder: KyberswapElasticLiquidityContractPositionBuilder, apyDataLoaderBuilder: KyberswapElasticApyDataLoader);
    getContract(address: string): PositionManager;
    getDefinitions(): Promise<KyberswapElasticLiquidityPositionDefinition[]>;
    getTokenDefinitions({ definition, }: GetTokenDefinitionsParams<PositionManager, KyberswapElasticLiquidityPositionDefinition>): Promise<{
        metaType: MetaType;
        address: string;
        network: import("../../../types").Network;
    }[]>;
    getDataProps({ multicall, contractPosition, definition, }: GetDataPropsParams<PositionManager, KyberswapElasticLiquidityPositionDataProps, KyberswapElasticLiquidityPositionDefinition>): Promise<KyberswapElasticLiquidityPositionDataProps>;
    getLabel({ contractPosition, definition, }: GetDisplayPropsParams<PositionManager, KyberswapElasticLiquidityPositionDataProps, KyberswapElasticLiquidityPositionDefinition>): Promise<string>;
    getTokenBalancesPerPosition(): Promise<void>;
    getBalances(address: string): Promise<ContractPositionBalance<KyberswapElasticLiquidityPositionDataProps>[]>;
}
