import { IAppToolkit } from '../../../app-toolkit/app-toolkit.interface';
import { CurveContractFactory, CurveStableFactory } 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 CurveFactoryStablePoolTokenFetcher extends CurvePoolDynamicTokenFetcher<CurveStableFactory> {
    protected readonly appToolkit: IAppToolkit;
    protected readonly contractFactory: CurveContractFactory;
    protected readonly curveVolumeDataLoader: CurveVolumeDataLoader;
    constructor(appToolkit: IAppToolkit, contractFactory: CurveContractFactory, curveVolumeDataLoader: CurveVolumeDataLoader);
    resolveRegistry(address: string): CurveStableFactory;
    resolvePoolCount({ contract }: ResolvePoolCountParams<CurveStableFactory>): Promise<import("ethers").BigNumber>;
    resolveSwapAddress({ contract, poolIndex }: ResolveSwapAddressParams<CurveStableFactory>): Promise<string>;
    resolveTokenAddress({ swapAddress }: ResolveTokenAddressParams<CurveStableFactory>): Promise<string>;
    resolveCoinAddresses({ contract, swapAddress }: ResolveCoinAddressesParams<CurveStableFactory>): Promise<[string, string, string, string]>;
    resolveReserves({ contract, swapAddress }: ResolveReservesParams<CurveStableFactory>): Promise<[import("ethers").BigNumber, import("ethers").BigNumber, import("ethers").BigNumber, import("ethers").BigNumber]>;
    resolveFees({ contract, swapAddress }: ResolveFeesParams<CurveStableFactory>): Promise<[import("ethers").BigNumber, import("ethers").BigNumber]>;
}
