import { ChainName } from "@0xfutbol/constants";
import React, { ReactNode } from "react";
import { BigNumber, Signer } from "ethers";
export declare const META_SOCCER_WAAS_SESSION = "META_SOCCER_WAAS_SESSION";
export type MetaSoccerWaaSSession = {
    walletId: string;
    walletAddress: string;
    waasBaseUrl: string;
    waasSessionToken: string;
    chainId?: number;
};
export declare const loadMetaSoccerWaaSSession: () => MetaSoccerWaaSSession | undefined;
export declare const saveMetaSoccerWaaSSession: (session: MetaSoccerWaaSSession) => void;
export declare const clearMetaSoccerWaaSSession: () => void;
type MetaSoccerWaaSContextProviderProps = {
    chains: Array<ChainName>;
    children: ReactNode;
};
type ConnectParams = {
    walletId: string;
    walletAddress: string;
    waasBaseUrl: string;
    waasSessionToken: string;
    chainId?: number;
};
export declare const MetaSoccerWaaSContext: React.Context<{
    address: string | undefined;
    chainId: number | undefined;
    signer: Record<"base" | "boba" | "matchain" | "polygon" | "skaleNebula" | "xdc", Signer> | undefined;
    status: "connected" | "unknown" | "connecting" | "disconnected";
    web3Ready: boolean;
    connect: (params: ConnectParams) => Promise<void>;
    disconnect: () => Promise<void>;
    nativeBalanceOf: (_address: string, _chainId: number) => Promise<BigNumber>;
    switchChain: (_chain: ChainName) => Promise<void>;
} | undefined>;
export declare function MetaSoccerWaaSContextProvider({ chains, children }: MetaSoccerWaaSContextProviderProps): import("react/jsx-runtime").JSX.Element;
export declare const useMetaSoccerWaaSContext: () => {
    address: string | undefined;
    chainId: number | undefined;
    signer: Record<"base" | "boba" | "matchain" | "polygon" | "skaleNebula" | "xdc", Signer> | undefined;
    status: "connected" | "unknown" | "connecting" | "disconnected";
    web3Ready: boolean;
    connect: (params: ConnectParams) => Promise<void>;
    disconnect: () => Promise<void>;
    nativeBalanceOf: (_address: string, _chainId: number) => Promise<BigNumber>;
    switchChain: (_chain: ChainName) => Promise<void>;
};
export {};
