import { Web3ReactHooks } from '@web3-react/core';
export { useWeb3React } from '@web3-react/core';
import { MetaMask } from '@web3-react/metamask';
import { Network } from '@web3-react/network';
import { WalletConnect } from '@web3-react/walletconnect';
import { AddEthereumChainParameter } from '@web3-react/types';

declare enum Wallet {
    INJECTED = "INJECTED",
    METAMASK = "METAMASK",
    COINBASE_WALLET = "COINBASE_WALLET",
    WALLET_CONNECT = "WALLET_CONNECT",
    FORTMATIC = "FORTMATIC",
    NETWORK = "NETWORK",
    GNOSIS_SAFE = "GNOSIS_SAFE"
}
interface WalletInfo {
    connector: MetaMask | WalletConnect | Network;
    hooks: Web3ReactHooks;
    wallet: Wallet;
    name: string;
    mobile?: true;
}

declare const SUPPORTED_WALLETS: {
    [key: string]: WalletInfo;
};
interface IWalletContext {
    setSelectedWallet: (Wallet: Wallet) => void;
    selectedWallet: Wallet | undefined;
}
declare function ProviderExample({ children }: any): JSX.Element;

declare function useWallets(): IWalletContext;

declare enum NetworkName {
    ETHEREUM = "ethereum",
    AVALANCHE = "avalanche",
    BINANCE = "bsc",
    MOONBEAM = "moonbeam",
    MOONRIVER = "moonriver",
    METIS = "metis",
    OPTIMISM = "optimism",
    POLYGON = "polygon"
}
declare function getAddChainParameters(chainId: number): AddEthereumChainParameter | number;
declare const getAddChainParametersfromNetworkName: (network: NetworkName) => AddEthereumChainParameter | number;

export { SUPPORTED_WALLETS, Wallet, ProviderExample as WalletProvider, getAddChainParameters, getAddChainParametersfromNetworkName, useWallets };
