import { Dispatch } from '@reduxjs/toolkit';
import { CheckoutCheck, CheckoutErrorMessages, CheckoutForm, Order, OrderCreate, RequestStatus } from '@open-tender/types';
import { AppState } from '../app';
export interface CheckoutState {
    check: CheckoutCheck | null;
    form: CheckoutForm;
    submitting: boolean;
    isGuest: boolean;
    completedOrder: Order | null;
    errors: CheckoutErrorMessages;
    loading: RequestStatus;
}
export declare enum CheckoutActionType {
    ValidateOrder = "checkout/validateOrder",
    SubmitOrder = "checkout/SubmitOrder",
    SubmitOrderPay = "checkout/SubmitOrderPay",
    UpdateForm = "checkout/updateForm"
}
export declare const validateOrder: import("@reduxjs/toolkit").AsyncThunk<{
    check: CheckoutCheck;
    errors: any;
}, OrderCreate | null | undefined, {
    state: AppState;
    rejectValue: CheckoutErrorMessages;
    dispatch?: Dispatch<import("redux").AnyAction> | undefined;
    extra?: unknown;
    serializedErrorType?: unknown;
    pendingMeta?: unknown;
    fulfilledMeta?: unknown;
    rejectedMeta?: unknown;
}>;
export declare const submitOrder: import("@reduxjs/toolkit").AsyncThunk<Order, {
    save: boolean;
} | undefined, {
    state: AppState;
    rejectValue: CheckoutErrorMessages;
    dispatch?: Dispatch<import("redux").AnyAction> | undefined;
    extra?: unknown;
    serializedErrorType?: unknown;
    pendingMeta?: unknown;
    fulfilledMeta?: unknown;
    rejectedMeta?: unknown;
}>;
export declare const updateForm: import("@reduxjs/toolkit").AsyncThunk<Partial<CheckoutState>, Partial<CheckoutForm>, {
    state: AppState;
    rejectValue: CheckoutErrorMessages;
    dispatch?: Dispatch<import("redux").AnyAction> | undefined;
    extra?: unknown;
    serializedErrorType?: unknown;
    pendingMeta?: unknown;
    fulfilledMeta?: unknown;
    rejectedMeta?: unknown;
}>;
export declare const submitOrderPay: import("@reduxjs/toolkit").AsyncThunk<Order | null, boolean | undefined, {
    state: AppState;
    rejectValue: CheckoutErrorMessages;
    dispatch?: Dispatch<import("redux").AnyAction> | undefined;
    extra?: unknown;
    serializedErrorType?: unknown;
    pendingMeta?: unknown;
    fulfilledMeta?: unknown;
    rejectedMeta?: unknown;
}>;
export declare const resetCheckout: import("@reduxjs/toolkit").ActionCreatorWithoutPayload<"checkout/resetCheckout">, resetCheck: import("@reduxjs/toolkit").ActionCreatorWithoutPayload<"checkout/resetCheck">, resetCompletedOrder: import("@reduxjs/toolkit").ActionCreatorWithoutPayload<"checkout/resetCompletedOrder">, resetErrors: import("@reduxjs/toolkit").ActionCreatorWithoutPayload<"checkout/resetErrors">, resetTip: import("@reduxjs/toolkit").ActionCreatorWithoutPayload<"checkout/resetTip">, setCompletedOrder: import("@reduxjs/toolkit").ActionCreatorWithPayload<any, "checkout/setCompletedOrder">, setGuest: import("@reduxjs/toolkit").ActionCreatorWithPayload<any, "checkout/setGuest">, setSubmitting: import("@reduxjs/toolkit").ActionCreatorWithPayload<any, "checkout/setSubmitting">, updateCheckoutCustomer: import("@reduxjs/toolkit").ActionCreatorWithPayload<any, "checkout/updateCheckoutCustomer">, setRecaptchaToken: import("@reduxjs/toolkit").ActionCreatorWithPayload<any, "checkout/setRecaptchaToken">;
export declare const selectCheckout: (state: AppState) => CheckoutState;
export declare const selectCheck: (state: AppState) => CheckoutCheck | null;
export declare const selectCompletedOrder: (state: AppState) => Order | null;
export declare const selectDiscounts: (state: AppState) => import("@open-tender/types").OrderCreateDiscounts;
export declare const checkoutReducer: import("redux").Reducer<CheckoutState, import("redux").AnyAction>;
