import DataLoader from 'dataloader';
import { IAppToolkit } from '../../../app-toolkit/app-toolkit.interface';
import { AppTokenTemplatePositionFetcher } from '../../../position/template/app-token.template.position-fetcher';
import { GetUnderlyingTokensParams, GetPricePerShareParams, DefaultAppTokenDefinition, GetDataPropsParams, GetDisplayPropsParams, DefaultAppTokenDataProps } from '../../../position/template/app-token.template.types';
import { BalancerPoolToken, BalancerV1ContractFactory } from '../contracts';
import { EthereumBalancerV1PoolSubgraphVolumeDataLoader } from './balancer-v1.volume.data-loader';
export declare type BalancerV1PoolTokenDataProps = DefaultAppTokenDataProps & {
    fee: number;
    volume: number;
    weight: number[];
};
export declare class EthereumBalancerV1PoolTokenFetcher extends AppTokenTemplatePositionFetcher<BalancerPoolToken, BalancerV1PoolTokenDataProps> {
    protected readonly appToolkit: IAppToolkit;
    protected readonly contractFactory: BalancerV1ContractFactory;
    protected readonly volumeDataLoaderBuilder: EthereumBalancerV1PoolSubgraphVolumeDataLoader;
    groupLabel: string;
    volumeDataLoader: DataLoader<string, number>;
    constructor(appToolkit: IAppToolkit, contractFactory: BalancerV1ContractFactory, volumeDataLoaderBuilder: EthereumBalancerV1PoolSubgraphVolumeDataLoader);
    getContract(address: string): BalancerPoolToken;
    getAddresses(): Promise<string[]>;
    getUnderlyingTokenDefinitions({ contract }: GetUnderlyingTokensParams<BalancerPoolToken>): Promise<{
        address: string;
        network: import("../../../types").Network;
    }[]>;
    getPricePerShare({ contract, appToken }: GetPricePerShareParams<BalancerPoolToken>): Promise<number[]>;
    getReserves({ appToken }: GetDataPropsParams<BalancerPoolToken, BalancerV1PoolTokenDataProps>): Promise<number[]>;
    getLiquidity({ appToken }: GetDataPropsParams<BalancerPoolToken, BalancerV1PoolTokenDataProps>): Promise<number>;
    getApy({ appToken, contract }: GetDataPropsParams<BalancerPoolToken>): Promise<number>;
    getDataProps(params: GetDataPropsParams<BalancerPoolToken>): Promise<{
        fee: number;
        volume: number;
        weight: number[];
        liquidity: number;
        reserves: number[];
        apy: number;
    }>;
    getLabel({ appToken, }: GetDisplayPropsParams<BalancerPoolToken, BalancerV1PoolTokenDataProps>): Promise<string>;
    getSecondaryLabel({ appToken, }: GetDisplayPropsParams<BalancerPoolToken, BalancerV1PoolTokenDataProps, DefaultAppTokenDefinition>): Promise<string>;
    getStatsItems({ appToken }: GetDisplayPropsParams<BalancerPoolToken, BalancerV1PoolTokenDataProps>): Promise<({
        label: string;
        value: import("../../../position/display.interface").DollarDisplayItem;
    } | {
        label: string;
        value: import("../../../position/display.interface").NumberDisplayItem;
    } | {
        label: string;
        value: import("../../../position/display.interface").PercentageDisplayItem;
    } | {
        label: string;
        value: string;
    })[]>;
}
