import { Pair } from './entities/pair';
import { ChainId } from './constants';
import { Token } from './entities/token';
import { getDefaultProvider } from '@ethersproject/providers'
import { getNetwork } from '@ethersproject/networks'
import IUniswapV2Pair from 'nimbus-swap-mod/v2-core/build/IUniswapV2Pair.json'
import invariant from 'tiny-invariant'
/**
 * Contains methods for constructing instances of pairs and tokens from on-chain data.
 */
export declare abstract class Fetcher {
    /**
     * Cannot be constructed.
     */
    private constructor();
    /**
     * Fetch information for a given token on the given chain, using the given ethers provider.
     * @param chainId chain of the token
     * @param address address of the token on the chain
     * @param provider provider used to fetch the token
     * @param symbol optional symbol of the token
     * @param name optional name of the token
     */
    public static async fetchTokenData(
        chainId: ChainId, 
        address: string, 
        //provider?: import("@ethersproject/providers").BaseProvider,
        provider = getDefaultProvider(getNetwork(chainId)), 
        symbol?: string, 
        name?: string): Promise<Token>;
    /**
     * Fetches information about a pair and constructs a pair from the given two tokens.
     * @param tokenA first token
     * @param tokenB second token
     * @param provider the provider to use to fetch the data
     */
    public static async fetchPairData(
        tokenA: Token, 
        tokenB: Token,
        provider = getDefaultProvider(getNetwork(tokenA.chainId)) 
        //provider?: import("@ethersproject/providers").BaseProvider
        ): Promise<Pair>;
}
