import { CheckoutTenderPos, CustomerIdentifier, CustomerIdentify, Discount, Money, Order, OrderCreateDiscount, OrderCreateDiscounts, OrderCreateGiftCards, OrderCreatePoints, OrderCreatePos, OrderCreateSurcharge, OrderCreateSurcharges, OrderTender, RequestError, RequestStatus, Taxes } from '@open-tender/types';
import { AppState } from '../app';
import { OrderState } from './order';
export interface CheckoutState {
    activating: RequestStatus;
    authorizing: RequestStatus;
    check: Order | null;
    completedOrder: Order | null;
    customer: CustomerIdentify | null;
    discounts: OrderCreateDiscounts;
    error: RequestError;
    giftCards: OrderCreateGiftCards;
    identifying: RequestStatus;
    isTaxExempt: boolean;
    loading: RequestStatus;
    madeFor: string | null;
    pendingDiscounts: boolean;
    phone: string | null;
    points: OrderCreatePoints;
    removing: RequestStatus;
    submitting: RequestStatus;
    surcharges: OrderCreateSurcharges;
    taxes: Taxes;
    tip: Money | null;
    validating: RequestStatus;
}
export declare const prepareOrder: (order: OrderState, checkout: CheckoutState) => OrderCreatePos | null;
export declare enum CheckoutActionType {
    AddPromoCode = "checkout/addPromoCode",
    AddTender = "checkout/addTender",
    RemoveTender = "checkout/removeTender",
    UpdateTender = "checkout/updateTender",
    UpdateCart = "checkout/updateCart",
    IdentifyCustomer = "checkout/identifyCustomer",
    CompleteChipDNA = "checkout/completeChipDNA",
    AddCreditTender = "checkout/addCreditTender",
    ValidatePosOrder = "checkout/validatePosOrder",
    SubmitPosOrder = "checkout/submitPosOrder",
    VoidPosOrder = "checkout/voidPosOrder",
    ActivateGiftCards = "checkout/activateGiftCards"
}
export declare const addPromoCode: import("@reduxjs/toolkit").AsyncThunk<Discount, string, {
    state: AppState;
    rejectValue: RequestError;
    dispatch?: import("redux").Dispatch<import("redux").UnknownAction> | undefined;
    extra?: unknown;
    serializedErrorType?: unknown;
    pendingMeta?: unknown;
    fulfilledMeta?: unknown;
    rejectedMeta?: unknown;
}>;
export declare const addTender: import("@reduxjs/toolkit").AsyncThunk<void | OrderTender, CheckoutTenderPos, {
    state: AppState;
    rejectValue: RequestError;
    dispatch?: import("redux").Dispatch<import("redux").UnknownAction> | undefined;
    extra?: unknown;
    serializedErrorType?: unknown;
    pendingMeta?: unknown;
    fulfilledMeta?: unknown;
    rejectedMeta?: unknown;
}>;
export declare const removeTender: import("@reduxjs/toolkit").AsyncThunk<void | OrderTender, number, {
    state: AppState;
    rejectValue: RequestError;
    dispatch?: import("redux").Dispatch<import("redux").UnknownAction> | undefined;
    extra?: unknown;
    serializedErrorType?: unknown;
    pendingMeta?: unknown;
    fulfilledMeta?: unknown;
    rejectedMeta?: unknown;
}>;
export declare const updateTender: import("@reduxjs/toolkit").AsyncThunk<void | OrderTender, void, {
    state: AppState;
    rejectValue: RequestError;
    dispatch?: import("redux").Dispatch<import("redux").UnknownAction> | undefined;
    extra?: unknown;
    serializedErrorType?: unknown;
    pendingMeta?: unknown;
    fulfilledMeta?: unknown;
    rejectedMeta?: unknown;
}>;
export declare const updateCart: import("@reduxjs/toolkit").AsyncThunk<void, any, {
    state: AppState;
    rejectValue: RequestError;
    dispatch?: import("redux").Dispatch<import("redux").UnknownAction> | undefined;
    extra?: unknown;
    serializedErrorType?: unknown;
    pendingMeta?: unknown;
    fulfilledMeta?: unknown;
    rejectedMeta?: unknown;
}>;
export interface IdentifyCustomer {
    data: CustomerIdentifier;
    callback?: () => void;
    showError?: boolean;
}
export declare const identifyCustomer: import("@reduxjs/toolkit").AsyncThunk<void | CustomerIdentify, IdentifyCustomer, {
    state: AppState;
    rejectValue: RequestError;
    dispatch?: import("redux").Dispatch<import("redux").UnknownAction> | undefined;
    extra?: unknown;
    serializedErrorType?: unknown;
    pendingMeta?: unknown;
    fulfilledMeta?: unknown;
    rejectedMeta?: unknown;
}>;
export declare const completeChipDNA: import("@reduxjs/toolkit").AsyncThunk<any, string | null, {
    state: AppState;
    rejectValue: RequestError;
    dispatch?: import("redux").Dispatch<import("redux").UnknownAction> | undefined;
    extra?: unknown;
    serializedErrorType?: unknown;
    pendingMeta?: unknown;
    fulfilledMeta?: unknown;
    rejectedMeta?: unknown;
}>;
export declare const addCreditTender: import("@reduxjs/toolkit").AsyncThunk<any, void, {
    state: AppState;
    rejectValue: RequestError;
    dispatch?: import("redux").Dispatch<import("redux").UnknownAction> | undefined;
    extra?: unknown;
    serializedErrorType?: unknown;
    pendingMeta?: unknown;
    fulfilledMeta?: unknown;
    rejectedMeta?: unknown;
}>;
export declare const validatePosOrder: import("@reduxjs/toolkit").AsyncThunk<void | Order, void, {
    state: AppState;
    rejectValue: RequestError;
    dispatch?: import("redux").Dispatch<import("redux").UnknownAction> | undefined;
    extra?: unknown;
    serializedErrorType?: unknown;
    pendingMeta?: unknown;
    fulfilledMeta?: unknown;
    rejectedMeta?: unknown;
}>;
export declare const submitPosOrder: import("@reduxjs/toolkit").AsyncThunk<void | Order, void, {
    state: AppState;
    rejectValue: RequestError;
    dispatch?: import("redux").Dispatch<import("redux").UnknownAction> | undefined;
    extra?: unknown;
    serializedErrorType?: unknown;
    pendingMeta?: unknown;
    fulfilledMeta?: unknown;
    rejectedMeta?: unknown;
}>;
export declare const voidPosOrder: import("@reduxjs/toolkit").AsyncThunk<void | Order, void, {
    state: AppState;
    rejectValue: RequestError;
    dispatch?: import("redux").Dispatch<import("redux").UnknownAction> | undefined;
    extra?: unknown;
    serializedErrorType?: unknown;
    pendingMeta?: unknown;
    fulfilledMeta?: unknown;
    rejectedMeta?: unknown;
}>;
export declare const activateGiftCards: import("@reduxjs/toolkit").AsyncThunk<any, any, {
    state: AppState;
    rejectValue: RequestError;
    dispatch?: import("redux").Dispatch<import("redux").UnknownAction> | undefined;
    extra?: unknown;
    serializedErrorType?: unknown;
    pendingMeta?: unknown;
    fulfilledMeta?: unknown;
    rejectedMeta?: unknown;
}>;
export declare const resetPosCheckout: import("@reduxjs/toolkit").ActionCreatorWithoutPayload<"checkout/resetPosCheckout">, resetPosCheck: import("@reduxjs/toolkit").ActionCreatorWithoutPayload<"checkout/resetPosCheck">, resetPosCheckError: import("@reduxjs/toolkit").ActionCreatorWithoutPayload<"checkout/resetPosCheckError">, handleCheckoutError: import("@reduxjs/toolkit").ActionCreatorWithPayload<any, "checkout/handleCheckoutError">, addGiftCard: import("@reduxjs/toolkit").ActionCreatorWithPayload<any, "checkout/addGiftCard">, removeGiftCard: import("@reduxjs/toolkit").ActionCreatorWithPayload<any, "checkout/removeGiftCard">, addSurcharge: import("@reduxjs/toolkit").ActionCreatorWithPayload<OrderCreateSurcharge, "checkout/addSurcharge">, removeSurcharge: import("@reduxjs/toolkit").ActionCreatorWithPayload<OrderCreateSurcharge, "checkout/removeSurcharge">, addDiscount: import("@reduxjs/toolkit").ActionCreatorWithPayload<OrderCreateDiscount & {
    index?: number | undefined;
}, "checkout/addDiscount">, removeDiscount: import("@reduxjs/toolkit").ActionCreatorWithPayload<OrderCreateDiscount & {
    index?: number | undefined;
}, "checkout/removeDiscount">, addTax: import("@reduxjs/toolkit").ActionCreatorWithPayload<any, "checkout/addTax">, removeTax: import("@reduxjs/toolkit").ActionCreatorWithPayload<any, "checkout/removeTax">, addTip: import("@reduxjs/toolkit").ActionCreatorWithPayload<any, "checkout/addTip">, removeTip: import("@reduxjs/toolkit").ActionCreatorWithoutPayload<"checkout/removeTip">, setTaxExempt: import("@reduxjs/toolkit").ActionCreatorWithPayload<any, "checkout/setTaxExempt">, addCustomer: import("@reduxjs/toolkit").ActionCreatorWithPayload<any, "checkout/addCustomer">, removeCustomer: import("@reduxjs/toolkit").ActionCreatorWithoutPayload<"checkout/removeCustomer">, setPendingDiscounts: import("@reduxjs/toolkit").ActionCreatorWithPayload<any, "checkout/setPendingDiscounts">, setPoints: import("@reduxjs/toolkit").ActionCreatorWithPayload<any, "checkout/setPoints">, setMadeFor: import("@reduxjs/toolkit").ActionCreatorWithPayload<any, "checkout/setMadeFor">, setPhone: import("@reduxjs/toolkit").ActionCreatorWithPayload<any, "checkout/setPhone">;
export declare const selectPosCheckout: (state: AppState) => CheckoutState;
export declare const selectPosCheck: (state: AppState) => Order | null;
export declare const selectPosCustomer: (state: AppState) => CustomerIdentify | null;
export declare const selectPosCustomerName: (state: AppState) => string | null;
export declare const selectPosCustomerNameShort: (state: AppState) => string | null;
export declare const selectPosPendingDiscounts: (state: AppState) => boolean;
export declare const selectPosAmountDue: (state: AppState) => `${number}.${number}` | null;
export declare const selectPosCheckSubtotal: (state: AppState) => `${number}.${number}`;
export declare const selectPosCheckTotal: (state: AppState) => `${number}.${number}`;
export declare const selectPosCheckTenders: (state: AppState) => import("@open-tender/types").OrderTenders;
export declare const checkoutReducer: import("redux").Reducer<CheckoutState>;
