import React from 'react';
import { CLEAR_CHECKOUT_DATA, SET_GET_CHECKOUT_DATA, SET_GET_CHECKOUT_ERROR, SET_PROCESS_CHECKOUT_DATA, SET_PROCESS_CHECKOUT_ERROR } from './use-checkout.reducer';
import { cacheKeys } from './utils';
export declare type CacheKey = typeof cacheKeys[keyof typeof cacheKeys];
export declare type IsCheckingOut = {
    isCheckingOut: boolean;
    setIsCheckingOut: React.Dispatch<React.SetStateAction<boolean>>;
};
export interface CheckoutProperties {
    completed: boolean;
    id: string;
    url: string;
}
export interface CheckoutState extends CheckoutProperties {
    getCheckoutError: string;
    processCheckoutError: string;
}
export interface ClearCheckoutDataAction {
    type: typeof CLEAR_CHECKOUT_DATA;
    payload?: null;
}
export interface SetGetCheckoutErrorAction {
    type: typeof SET_GET_CHECKOUT_ERROR;
    payload: string;
}
export interface SetGetCheckoutDataAction {
    type: typeof SET_GET_CHECKOUT_DATA;
    payload: Pick<CheckoutProperties, 'completed' | 'id' | 'url'>;
}
export interface SetProcessCheckoutDataAction {
    type: typeof SET_PROCESS_CHECKOUT_DATA;
    payload: Pick<CheckoutProperties, 'id' | 'url'>;
}
export interface SetProcessCheckoutErrorAction {
    type: typeof SET_PROCESS_CHECKOUT_ERROR;
    payload: string;
}
export declare type Actions = ClearCheckoutDataAction | SetGetCheckoutDataAction | SetGetCheckoutErrorAction | SetProcessCheckoutDataAction | SetProcessCheckoutErrorAction;
export interface CheckoutActions {
    clearCheckoutData: () => void;
    getCheckout: CheckoutClientMethod;
    processCheckout: CheckoutClientMethod;
}
export declare type CheckoutClientMethod = (params: unknown) => Promise<CheckoutProperties>;
export interface CheckoutClient {
    get: CheckoutClientMethod;
    process: CheckoutClientMethod;
}
export declare type CheckoutProviderProps = {
    children: JSX.Element | JSX.Element[];
    checkoutClient: CheckoutClient;
    redirectUserToCheckout?: boolean;
};
export declare type CheckoutContextValue = null | CheckoutState;
export declare type CheckoutActionContextValue = null | CheckoutActions;
