import { IAppToolkit } from '../../../app-toolkit/app-toolkit.interface';
import { CurveContractFactory, CurveCryptoRegistry } from '../contracts';
import { CurvePoolDynamicTokenFetcher, ResolveCoinAddressesParams, ResolveFeesParams, ResolvePoolCountParams, ResolveReservesParams, ResolveSwapAddressParams, ResolveTokenAddressParams } from './curve.pool-dynamic.token-fetcher';
import { CurveVolumeDataLoader } from './curve.volume.data-loader';
export declare abstract class CurveCryptoPoolTokenFetcher extends CurvePoolDynamicTokenFetcher<CurveCryptoRegistry> {
    protected readonly appToolkit: IAppToolkit;
    protected readonly contractFactory: CurveContractFactory;
    protected readonly curveVolumeDataLoader: CurveVolumeDataLoader;
    constructor(appToolkit: IAppToolkit, contractFactory: CurveContractFactory, curveVolumeDataLoader: CurveVolumeDataLoader);
    resolveRegistry(address: string): CurveCryptoRegistry;
    resolvePoolCount({ contract }: ResolvePoolCountParams<CurveCryptoRegistry>): Promise<import("ethers").BigNumber>;
    resolveSwapAddress({ contract, poolIndex }: ResolveSwapAddressParams<CurveCryptoRegistry>): Promise<string>;
    resolveTokenAddress({ contract, swapAddress }: ResolveTokenAddressParams<CurveCryptoRegistry>): Promise<string>;
    resolveCoinAddresses({ contract, swapAddress }: ResolveCoinAddressesParams<CurveCryptoRegistry>): Promise<string[]>;
    resolveReserves({ contract, swapAddress }: ResolveReservesParams<CurveCryptoRegistry>): Promise<import("ethers").BigNumber[]>;
    resolveFees({ contract, swapAddress }: ResolveFeesParams<CurveCryptoRegistry>): Promise<[import("ethers").BigNumber, import("ethers").BigNumber, import("ethers").BigNumber, import("ethers").BigNumber]>;
}
