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

declare enum Wallet {
    INJECTED = "INJECTED",
    COINBASE_WALLET = "COINBASE_WALLET",
    WALLET_CONNECT = "WALLET_CONNECT",
    FORTMATIC = "FORTMATIC",
    NETWORK = "NETWORK",
    GNOSIS_SAFE = "GNOSIS_SAFE"
}
interface Web3ReactConnector {
    connector: Connector;
    hooks: Web3ReactHooks;
    wallet: Wallet;
}

interface WalletProviderProps {
    children: ReactNode;
}
declare function WalletProvider({ children }: WalletProviderProps): JSX.Element;

declare function useWallets(): {
    connectors: Web3ReactConnector[];
    setSelectedWallet: React.Dispatch<React.SetStateAction<Wallet | null>>;
};

declare function useActiveWeb3React(): {
    connector: _web3_react_types.Connector | null;
    hooks: _web3_react_core.Web3ReactHooks | null;
    wallet: Wallet | null;
} | undefined;

export { WalletProvider, useActiveWeb3React, useWallets };
