import type { ReactNode } from 'react';
import { NetworkConfigs } from './clientProvider.js';
import { Theme } from '../themes/themeContract.js';
import { CreateSessionArgs } from '@roochnetwork/rooch-sdk';
export declare const RoochContext: import("react").Context<(Omit<import("zustand").StoreApi<import("./sessionStore.js").SessionStoreState>, "persist"> & {
    persist: {
        setOptions: (options: Partial<import("zustand/middleware.js").PersistOptions<import("./sessionStore.js").SessionStoreState, unknown>>) => void;
        clearStorage: () => void;
        rehydrate: () => Promise<void> | void;
        hasHydrated: () => boolean;
        onHydrate: (fn: (state: import("./sessionStore.js").SessionStoreState) => void) => () => void;
        onFinishHydration: (fn: (state: import("./sessionStore.js").SessionStoreState) => void) => () => void;
        getOptions: () => Partial<import("zustand/middleware.js").PersistOptions<import("./sessionStore.js").SessionStoreState, unknown>>;
    };
}) | null>;
export type RoochProviderProps<T extends NetworkConfigs> = {
    networks?: NetworkConfigs;
    sessionConf?: CreateSessionArgs;
    onNetworkChange?: (network: keyof T & string) => void;
    requestErrorCallback?: (code: number) => void;
    /** The theme to use for styling UI components. Defaults to using the light theme. */
    theme?: Theme | null;
    children: ReactNode;
} & ({
    defaultNetwork?: keyof T & string;
    network?: never;
} | {
    defaultNetwork?: never;
    network?: keyof T & string;
});
export declare function RoochProvider<T extends NetworkConfigs>(props: RoochProviderProps<T>): import("react/jsx-runtime.js").JSX.Element;
