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 { UniswapV3ContractFactory, UniswapV3PositionManager } from '../contracts';
import { UniswapV3LiquidityContractPositionBuilder } from './uniswap-v3.liquidity.contract-position-builder';
export declare type UniswapV3LiquidityPositionDataProps = {
    feeTier: number;
    liquidity: number;
    reserves: number[];
    poolAddress: string;
    assetStandard: Standard.ERC_721;
    rangeStart?: number;
    rangeEnd?: number;
    positionKey: string;
};
export declare type UniswapV3LiquidityPositionDefinition = {
    address: string;
    poolAddress: string;
    token0Address: string;
    token1Address: string;
    feeTier: number;
};
export declare abstract class UniswapV3LiquidityContractPositionFetcher extends CustomContractPositionTemplatePositionFetcher<UniswapV3PositionManager, UniswapV3LiquidityPositionDataProps, UniswapV3LiquidityPositionDefinition> {
    protected readonly appToolkit: IAppToolkit;
    protected readonly contractFactory: UniswapV3ContractFactory;
    protected readonly uniswapV3LiquidityContractPositionBuilder: UniswapV3LiquidityContractPositionBuilder;
    abstract subgraphUrl: string;
    abstract positionManagerAddress: string;
    abstract factoryAddress: string;
    constructor(appToolkit: IAppToolkit, contractFactory: UniswapV3ContractFactory, uniswapV3LiquidityContractPositionBuilder: UniswapV3LiquidityContractPositionBuilder);
    getContract(address: string): UniswapV3PositionManager;
    getDefinitions(): Promise<UniswapV3LiquidityPositionDefinition[]>;
    getTokenDefinitions({ definition, }: GetTokenDefinitionsParams<UniswapV3PositionManager, UniswapV3LiquidityPositionDefinition>): Promise<{
        metaType: MetaType;
        address: string;
        network: import("../../../types").Network;
    }[]>;
    getDataProps({ multicall, contractPosition, definition, }: GetDataPropsParams<UniswapV3PositionManager, UniswapV3LiquidityPositionDataProps, UniswapV3LiquidityPositionDefinition>): Promise<UniswapV3LiquidityPositionDataProps>;
    getLabel({ contractPosition, definition, }: GetDisplayPropsParams<UniswapV3PositionManager, UniswapV3LiquidityPositionDataProps, UniswapV3LiquidityPositionDefinition>): Promise<string>;
    getTokenBalancesPerPosition(): Promise<void>;
    getBalances(address: string): Promise<ContractPositionBalance<UniswapV3LiquidityPositionDataProps>[]>;
}
