import { BigNumber, providers } from 'ethers';
import { Network } from './networks';
import { Token, TokenAmount, TokenOrAddress } from './tokens';
import { ERC20Interface } from './contracts/ERC20';
import { Multicall3 } from './contracts';
import { Multicall3Interface } from './contracts/Multicall3';
export declare class Web3Toolkit {
    readonly chainId: number;
    readonly network: Network;
    readonly provider: providers.Provider;
    readonly nativeToken: Token;
    readonly wrappedNativeToken: Token;
    constructor(chainId: number, provider?: providers.Provider);
    private _erc20Iface?;
    get erc20Iface(): ERC20Interface;
    private _multicall3Iface?;
    get multicall3Iface(): Multicall3Interface;
    private _multicall3?;
    get multicall3(): Multicall3;
    getToken(tokenOrAddress: TokenOrAddress): Promise<Token>;
    getTokens(tokenAddresses: string[]): Promise<Token[]>;
    getBalance(account: string, tokenOrAddress: TokenOrAddress, blockTag?: providers.BlockTag): Promise<TokenAmount>;
    getAllowance(account: string, tokenOrAddress: TokenOrAddress, spender: string): Promise<BigNumber>;
    getAllowances(account: string, tokenOrAddresses: TokenOrAddress[], spender: string): Promise<BigNumber[]>;
}
