import * as _web3_react_walletconnect from '@web3-react/walletconnect';
import * as _web3_react_core from '@web3-react/core';
import * as _web3_react_metamask from '@web3-react/metamask';
import * as React from 'react';
import { ReactNode } from 'react';
import * as _web3_react_types from '@web3-react/types';
import { Connector } from '@web3-react/types';

interface WalletProviderProps {
    children: ReactNode;
}
declare enum Wallet {
    INJECTED = "INJECTED",
    COINBASE_WALLET = "COINBASE_WALLET",
    WALLET_CONNECT = "WALLET_CONNECT",
    FORTMATIC = "FORTMATIC",
    NETWORK = "NETWORK",
    GNOSIS_SAFE = "GNOSIS_SAFE"
}
declare function WalletProvider({ children }: WalletProviderProps): JSX.Element;

declare function useWallet(): {
    setSelectedWallet: React.Dispatch<React.SetStateAction<Wallet | undefined>>;
    connectors: [_web3_react_types.Connector, _web3_react_core.Web3ReactHooks][];
    priorityWallet: {
        connector: _web3_react_types.Connector | null;
        hooks: _web3_react_core.Web3ReactHooks | null;
    };
};

interface WalletInfo {
    connector?: Connector;
    wallet?: Wallet;
    name: string;
    iconURL?: string;
    description?: string;
    href?: string | null;
    color?: string;
    primary?: true;
    mobile?: true;
    mobileOnly?: true;
}
declare const WALLETS: WalletInfo[];

declare function getWalletForConnector(connector: Connector): Wallet.INJECTED | Wallet.WALLET_CONNECT | Wallet.NETWORK;

declare function getName(connector: Connector): "MetaMask" | "WalletConnect" | "Network" | "Unknown";

declare const MetamaskConnector: {
    wallet: _web3_react_metamask.MetaMask;
    hooks: _web3_react_core.Web3ReactHooks;
};
declare const WalletConnectConnector: {
    wallet: _web3_react_walletconnect.WalletConnect;
    hooks: _web3_react_core.Web3ReactHooks;
};

export { MetamaskConnector, WALLETS, WalletConnectConnector, WalletProvider, getName, getWalletForConnector, useWallet };
