import { Checkout, EIP6963ProviderInfo, WrappedBrowserProvider, WalletProviderName } from '@imtbl/checkout-sdk';
import { Passport } from '@imtbl/passport';
export interface ConnectState {
    checkout: Checkout | null;
    provider: WrappedBrowserProvider | null;
    passport: Passport | undefined;
    walletProviderName: WalletProviderName | null;
    walletProviderInfo: EIP6963ProviderInfo | null;
    sendCloseEvent: () => void;
}
export declare const initialConnectState: ConnectState;
export interface ConnectContextState {
    connectState: ConnectState;
    connectDispatch: React.Dispatch<ConnectAction>;
}
export interface ConnectAction {
    payload: ActionPayload;
}
type ActionPayload = SetCheckoutPayload | SetProviderPayload | SetPassportPayload | SetProviderNamePayload | SetSendCloseEventPayload;
export declare enum ConnectActions {
    SET_CHECKOUT = "SET_CHECKOUT",
    SET_PROVIDER = "SET_PROVIDER",
    SET_PASSPORT = "SET_PASSPORT",
    SET_WALLET_PROVIDER_NAME = "SET_WALLET_PROVIDER_NAME",
    SET_SEND_CLOSE_EVENT = "SET_SEND_CLOSE_EVENT"
}
export interface SetCheckoutPayload {
    type: ConnectActions.SET_CHECKOUT;
    checkout: Checkout;
}
export interface SetProviderPayload {
    type: ConnectActions.SET_PROVIDER;
    provider: WrappedBrowserProvider;
}
export interface SetPassportPayload {
    type: ConnectActions.SET_PASSPORT;
    passport: Passport;
}
export interface SetProviderNamePayload {
    type: ConnectActions.SET_WALLET_PROVIDER_NAME;
    walletProviderName: WalletProviderName;
}
export interface SetSendCloseEventPayload {
    type: ConnectActions.SET_SEND_CLOSE_EVENT;
    sendCloseEvent: () => void;
}
export declare const ConnectContext: import("react").Context<ConnectContextState>;
export type Reducer<S, A> = (prevState: S, action: A) => S;
export declare const connectReducer: Reducer<ConnectState, ConnectAction>;
export {};
