import React, { PropsWithChildren, ReactElement } from "react";
import useAsyncControl from "../../hooks/useAsyncControl";
export type WalletConnectionProps = PropsWithChildren<Omit<ReturnType<typeof useAsyncControl>, "process"> & {
    chainId?: number;
    isChainIdValid: boolean | undefined;
    isProviderAvailable: boolean;
    isConnectedAndValidChain: boolean;
    isConnected: boolean;
    wallet?: string;
    connect: () => Promise<void>;
    disconnect: () => void;
    changeChainId: () => Promise<void>;
}>;
type Props = {
    /**
     * The chain id that the user is expected to connect to
     */
    chain?: {
        id: number;
        rpcUrl: string;
        explorerUrl: string;
        name: string;
        currency: string;
    };
    /**
     * When the user doesn't have a provider like metamask available
     */
    ProviderUnavailable?: React.FunctionComponent;
    /**
     * This is invoked when the chain ID is not available
     */
    ChainIdInvalid?: React.FunctionComponent<{
        changeChainId: () => void;
    }>;
    /**
     * This renders the content that is shown inside the wallet content
     */
    Content: (props: WalletConnectionProps) => ReactElement;
};
/**
 * This component handles some cenarios when dealing with the wallet connection to different providers (ex: Metamask)
 **/
declare const WalletConnectionWrapper: React.ForwardRefExoticComponent<Props & {
    children?: React.ReactNode;
} & React.RefAttributes<{
    connect: () => Promise<void>;
    disconnect: () => void;
}>>;
export default WalletConnectionWrapper;
export declare const BaseWalletConnectionWrapper: React.ForwardRefExoticComponent<Props & {
    children?: any;
} & React.RefAttributes<{
    connect: () => Promise<void>;
    disconnect: () => void;
}>>;
