import { Checkout, EIP6963ProviderInfo, WrappedBrowserProvider } from '@imtbl/checkout-sdk';
export interface ProvidersState {
    fromProvider?: WrappedBrowserProvider;
    fromProviderInfo?: EIP6963ProviderInfo;
    fromAddress?: string;
    toProvider?: WrappedBrowserProvider;
    toProviderInfo?: EIP6963ProviderInfo;
    toAddress?: string;
    checkout: Checkout;
    lockedToProvider?: boolean;
}
export declare const initialProvidersState: ProvidersState;
export interface ProvidersContextState {
    providersState: ProvidersState;
    providersDispatch: React.Dispatch<ProvidersContextAction>;
}
export interface ProvidersContextAction {
    payload: ProvidersContextActionPayload;
}
type ProvidersContextActionPayload = SetProviderPayload | SetCheckoutPayload | ResetStatePayload | SetLockedToProviderPayload;
export declare enum ProvidersContextActions {
    SET_PROVIDER = "SET_PROVIDER",
    SET_CHECKOUT = "SET_CHECKOUT",
    RESET_STATE = "RESET_STATE",
    SET_LOCKED_TO_PROVIDER = "SET_LOCKED_TO_PROVIDER"
}
export interface SetProviderPayload {
    type: ProvidersContextActions.SET_PROVIDER;
    fromProvider?: WrappedBrowserProvider;
    fromProviderInfo?: EIP6963ProviderInfo;
    fromAddress?: string;
    toProvider?: WrappedBrowserProvider;
    toProviderInfo?: EIP6963ProviderInfo;
    toAddress?: string;
}
export interface SetCheckoutPayload {
    type: ProvidersContextActions.SET_CHECKOUT;
    checkout: Checkout;
}
export interface ResetStatePayload {
    type: ProvidersContextActions.RESET_STATE;
    fromProvider?: WrappedBrowserProvider;
    toProvider?: WrappedBrowserProvider;
    checkout: Checkout;
}
export interface SetLockedToProviderPayload {
    type: ProvidersContextActions.SET_LOCKED_TO_PROVIDER;
    lockedToProvider: boolean;
}
export declare const ProvidersContext: import("react").Context<ProvidersContextState>;
export type Reducer<S, A> = (prevState: S, action: A) => S;
export declare const providersContextReducer: Reducer<ProvidersState, ProvidersContextAction>;
export declare const useProvidersReducer: (initialState?: ProvidersState) => readonly [ProvidersState, import("react").Dispatch<ProvidersContextAction>];
export declare function ProvidersContextProvider({ children, initialState, }: {
    children: React.ReactNode;
    initialState: ProvidersState;
}): import("@emotion/react/jsx-runtime").JSX.Element;
export declare const useProvidersContext: () => ProvidersContextState;
export {};
