import { Checkout, WrappedBrowserProvider } from '@imtbl/checkout-sdk';
import { ConnectWidgetViews } from '../view-context/ConnectViewContextTypes';
export declare enum ConnectionStatus {
    NOT_CONNECTED_NO_PROVIDER = "NOT_CONNECTED_NO_PROVIDER",
    NOT_CONNECTED = "NOT_CONNECTED",
    CONNECTED_WRONG_NETWORK = "CONNECTED_WRONG_NETWORK",
    CONNECTED_WITH_NETWORK = "CONNECTED_WITH_NETWORK",
    ERROR = "ERROR",
    LOADING = "LOADING"
}
export interface ConnectLoaderState {
    connectionStatus: ConnectionStatus;
    deepLink?: ConnectWidgetViews;
    checkout?: Checkout;
    provider?: WrappedBrowserProvider;
}
export declare const initialConnectLoaderState: ConnectLoaderState;
export interface ConnectLoaderContextState {
    connectLoaderState: ConnectLoaderState;
    connectLoaderDispatch: React.Dispatch<ConnectLoaderAction>;
}
export interface ConnectLoaderAction {
    payload: ConnectLoaderActionPayload;
}
type ConnectLoaderActionPayload = UpdateConnectionStatusPayload | SetCheckoutPayload | SetProviderPayload;
export declare enum ConnectLoaderActions {
    UPDATE_CONNECTION_STATUS = "UPDATE_CONNECTION_STATUS",
    SET_CHECKOUT = "SET_CHECKOUT",
    SET_PROVIDER = "SET_PROVIDER"
}
export interface UpdateConnectionStatusPayload {
    type: ConnectLoaderActions.UPDATE_CONNECTION_STATUS;
    connectionStatus: ConnectionStatus;
    deepLink?: ConnectWidgetViews;
}
export interface SetCheckoutPayload {
    type: ConnectLoaderActions.SET_CHECKOUT;
    checkout: Checkout;
}
export interface SetProviderPayload {
    type: ConnectLoaderActions.SET_PROVIDER;
    provider: WrappedBrowserProvider;
}
export declare const ConnectLoaderContext: import("react").Context<ConnectLoaderContextState>;
export type Reducer<S, A> = (prevState: S, action: A) => S;
export declare const connectLoaderReducer: Reducer<ConnectLoaderState, ConnectLoaderAction>;
export declare const useConnectLoaderState: () => readonly [ConnectLoaderState, import("react").Dispatch<ConnectLoaderAction>];
export {};
