import { AppState } from '../app';
import { CartOwner, GroupOrder, ISOString, SimpleCart, RequestError, RequestStatus, ServiceType, RequestedAt, GroupOrderGuests } from '@open-tender/types';
export interface GroupOrderGuestState {
    cartGuestId: number;
    firstName: string;
    lastName: string;
}
export interface GroupOrderState {
    cart: SimpleCart;
    cartGuest: GroupOrderGuestState | null;
    cartGuests: GroupOrderGuests;
    cartId: number | null;
    cartOwner: CartOwner | null;
    closed: boolean;
    cutoffAt: ISOString | null;
    error: RequestError;
    guestCount: number | null;
    guestLimit: number | null;
    isCartOwner: boolean;
    loading: RequestStatus;
    requestedAt: RequestedAt | null;
    revenueCenterId: number | null;
    serviceType: ServiceType | null;
    spendingLimit: string | null;
    token: string | null;
}
export declare enum GroupOrderActionType {
    JoinGroupOrder = "groupOrder/joinGroupOrder",
    FetchGroupOrder = "groupOrder/fetchGroupOrder",
    UpdateGroupOrder = "groupOrder/updateGroupOrder",
    ReloadGuestOrder = "groupOrder/reloadGuestOrder",
    AddCustomerGroupOrder = "customer/addCustomerGroupOrder"
}
export declare const makeCartPayload: (response: GroupOrder, cartGuestId?: number | null) => {
    cartId: number;
    token: string;
    revenueCenterId: number;
    serviceType: ServiceType;
    requestedAt: RequestedAt;
    cutoffAt: `${number}${number}${number}${number}-${number}${number}-${number}${number}T${number}${number}:${number}${number}:${number}${number}Z` | null;
    guestLimit: number | null;
    guestCount: number;
    spendingLimit: string | null;
    closed: boolean;
    cartOwner: CartOwner | null;
    cart: SimpleCart;
    cartGuests: GroupOrderGuests;
};
export declare const joinGroupOrder: import("@reduxjs/toolkit").AsyncThunk<any, {
    cart_id: number;
    first_name: string;
    last_name: string;
}, {
    state: AppState;
    rejectValue: RequestError;
    dispatch?: import("redux").Dispatch<import("redux").AnyAction> | undefined;
    extra?: unknown;
    serializedErrorType?: unknown;
    pendingMeta?: unknown;
    fulfilledMeta?: unknown;
    rejectedMeta?: unknown;
}>;
export declare const fetchGroupOrder: import("@reduxjs/toolkit").AsyncThunk<void | Partial<GroupOrderState>, string | number, {
    state: AppState;
    rejectValue: RequestError;
    dispatch?: import("redux").Dispatch<import("redux").AnyAction> | undefined;
    extra?: unknown;
    serializedErrorType?: unknown;
    pendingMeta?: unknown;
    fulfilledMeta?: unknown;
    rejectedMeta?: unknown;
}>;
export declare const updateGroupOrder: import("@reduxjs/toolkit").AsyncThunk<void | Partial<GroupOrderState>, void, {
    state: AppState;
    rejectValue: RequestError;
    dispatch?: import("redux").Dispatch<import("redux").AnyAction> | undefined;
    extra?: unknown;
    serializedErrorType?: unknown;
    pendingMeta?: unknown;
    fulfilledMeta?: unknown;
    rejectedMeta?: unknown;
}>;
export declare const reloadGuestOrder: import("@reduxjs/toolkit").AsyncThunk<void, void, {
    state: AppState;
    rejectValue: RequestError;
    dispatch?: import("redux").Dispatch<import("redux").AnyAction> | undefined;
    extra?: unknown;
    serializedErrorType?: unknown;
    pendingMeta?: unknown;
    fulfilledMeta?: unknown;
    rejectedMeta?: unknown;
}>;
export declare const addCustomerGroupOrder: import("@reduxjs/toolkit").AsyncThunk<GroupOrderState, {
    spendingLimit?: string | undefined;
    callback?: (() => void) | undefined;
}, {
    state: AppState;
    rejectValue: RequestError;
    dispatch?: import("redux").Dispatch<import("redux").AnyAction> | undefined;
    extra?: unknown;
    serializedErrorType?: unknown;
    pendingMeta?: unknown;
    fulfilledMeta?: unknown;
    rejectedMeta?: unknown;
}>;
export declare const resetGroupOrder: import("@reduxjs/toolkit").ActionCreatorWithoutPayload<"groupOrder/resetGroupOrder">, adjustGroupOrder: import("@reduxjs/toolkit").ActionCreatorWithPayload<any, "groupOrder/adjustGroupOrder">;
export declare const selectGroupOrder: (state: AppState) => GroupOrderState;
export declare const selectGroupOrderToken: (state: AppState) => string | null;
export declare const selectSpendingLimit: ((state: import("redux").EmptyObject & {
    alerts: import("@open-tender/types").Alerts;
    allergens: import("./allergens").AllergensState;
    announcements: import("./announcements").AnnouncementsState;
    checkout: import("./checkout").CheckoutState;
    completedOrders: import("./completedOrders").CompletedOrdersState;
    config: import("./config").ConfigState;
    confirmation: import("./confirmation").ConfirmationState;
    customer: import("redux").CombinedState<{
        account: import("./customer").AccountState;
        communicationPreferences: import("./customer").CustomerCommunicationPrefsState;
        creditCards: import("./customer").CustomerCreditCardsState;
        allergens: import("./customer").CustomerAllergensState;
        addresses: import("./customer").CustomerAddressesState;
        favorites: import("./customer").CustomerFavoritesState;
        fcmToken: import("./customer").CustomerFcmTokenState;
        giftCards: import("./customer").CustomerGiftCardsState;
        groupOrders: import("./customer").CustomerGroupOrdersState;
        history: import("./customer").CustomerHistoryState;
        houseAccounts: import("./customer").CustomerHouseAccountsState;
        loyalty: import("./customer").CustomerLoyaltyState;
        order: import("./customer").CustomerOrderState;
        orders: import("./customer").CustomerOrdersState;
        pointsShop: import("./customer").PointsShopState;
        tplsPointsShop: import("./customer").TplsPointsShopState;
        qrcode: import("./customer").CustomerQRCodeState;
        rewards: import("./customer").CustomerRewardsState;
        thanx: import("./customer").CustomerThanxState;
        tpls: import("./customer").CustomerTplsState;
    }>;
    deals: import("./deals").DealsState;
    donations: import("./donations").DonationState;
    geolocation: import("./geolocation").GeoLocationState;
    giftCards: import("./giftCards").GiftCardsState;
    groupOrder: GroupOrderState;
    guest: import("./guest").GuestState;
    loader: import("./loader").LoaderState;
    menu: import("./menu").MenuState;
    menuDisplay: import("./menuDisplay").MenuDisplayState;
    menuItems: import("./menuItems").MenuItemsState;
    modal: import("@open-tender/types").Modal;
    misc: import("./misc").MiscState;
    nav: import("./nav").NavState;
    navSite: import("./navSite").NavSiteState;
    notifications: import("@open-tender/types").Notifications;
    oneTimePasscode: import("./oneTimePasscode").OneTimePasscodeState;
    order: import("./order").OrderState;
    orderFulfillment: import("./orderFulfillment").OrderFulfillmentState;
    orderRating: import("./orderRating").OrderRatingState;
    posts: import("./posts").PostsSlice;
    pushNotifications: import("./pushNotifications").PushNotificationsState;
    qr: import("./qr").QrState;
    quote: import("./quote").QuoteState;
    resetPassword: import("./resetPassword").ResetPasswordState;
    revenueCenters: import("./revenueCenters").RevenueCentersState;
    rewardCode: import("./rewardCode").RewardCodeState;
    sidebar: import("./sidebar").SidebarState;
    sidebarModal: import("./sidebarModal").SidebarModalState;
    signUp: import("./signUp").SignUpState;
    tags: import("./tags").TagsState;
    terms: import("./terms").TermsSlice;
    Unsubscribe: import("./unsubscribe").UnsubscribeState;
    validTimes: import("./validTimes").ValidTimesState;
    verifyAccount: import("./verifyAccount").VerifyAccountState;
}) => number | null) & import("reselect").OutputSelectorFields<(args_0: {
    cartGuest: GroupOrderGuestState | null;
    spendingLimit: string | null;
}) => number | null, {
    clearCache: () => void;
}> & {
    clearCache: () => void;
};
export declare const selectGroupOrderClosed: ((state: import("redux").EmptyObject & {
    alerts: import("@open-tender/types").Alerts;
    allergens: import("./allergens").AllergensState;
    announcements: import("./announcements").AnnouncementsState;
    checkout: import("./checkout").CheckoutState;
    completedOrders: import("./completedOrders").CompletedOrdersState;
    config: import("./config").ConfigState;
    confirmation: import("./confirmation").ConfirmationState;
    customer: import("redux").CombinedState<{
        account: import("./customer").AccountState;
        communicationPreferences: import("./customer").CustomerCommunicationPrefsState;
        creditCards: import("./customer").CustomerCreditCardsState;
        allergens: import("./customer").CustomerAllergensState;
        addresses: import("./customer").CustomerAddressesState;
        favorites: import("./customer").CustomerFavoritesState;
        fcmToken: import("./customer").CustomerFcmTokenState;
        giftCards: import("./customer").CustomerGiftCardsState;
        groupOrders: import("./customer").CustomerGroupOrdersState;
        history: import("./customer").CustomerHistoryState;
        houseAccounts: import("./customer").CustomerHouseAccountsState;
        loyalty: import("./customer").CustomerLoyaltyState;
        order: import("./customer").CustomerOrderState;
        orders: import("./customer").CustomerOrdersState;
        pointsShop: import("./customer").PointsShopState;
        tplsPointsShop: import("./customer").TplsPointsShopState;
        qrcode: import("./customer").CustomerQRCodeState;
        rewards: import("./customer").CustomerRewardsState;
        thanx: import("./customer").CustomerThanxState;
        tpls: import("./customer").CustomerTplsState;
    }>;
    deals: import("./deals").DealsState;
    donations: import("./donations").DonationState;
    geolocation: import("./geolocation").GeoLocationState;
    giftCards: import("./giftCards").GiftCardsState;
    groupOrder: GroupOrderState;
    guest: import("./guest").GuestState;
    loader: import("./loader").LoaderState;
    menu: import("./menu").MenuState;
    menuDisplay: import("./menuDisplay").MenuDisplayState;
    menuItems: import("./menuItems").MenuItemsState;
    modal: import("@open-tender/types").Modal;
    misc: import("./misc").MiscState;
    nav: import("./nav").NavState;
    navSite: import("./navSite").NavSiteState;
    notifications: import("@open-tender/types").Notifications;
    oneTimePasscode: import("./oneTimePasscode").OneTimePasscodeState;
    order: import("./order").OrderState;
    orderFulfillment: import("./orderFulfillment").OrderFulfillmentState;
    orderRating: import("./orderRating").OrderRatingState;
    posts: import("./posts").PostsSlice;
    pushNotifications: import("./pushNotifications").PushNotificationsState;
    qr: import("./qr").QrState;
    quote: import("./quote").QuoteState;
    resetPassword: import("./resetPassword").ResetPasswordState;
    revenueCenters: import("./revenueCenters").RevenueCentersState;
    rewardCode: import("./rewardCode").RewardCodeState;
    sidebar: import("./sidebar").SidebarState;
    sidebarModal: import("./sidebarModal").SidebarModalState;
    signUp: import("./signUp").SignUpState;
    tags: import("./tags").TagsState;
    terms: import("./terms").TermsSlice;
    Unsubscribe: import("./unsubscribe").UnsubscribeState;
    validTimes: import("./validTimes").ValidTimesState;
    verifyAccount: import("./verifyAccount").VerifyAccountState;
}) => boolean | null) & import("reselect").OutputSelectorFields<(args_0: {
    cartGuest: GroupOrderGuestState | null;
    cutoffAt: `${number}${number}${number}${number}-${number}${number}-${number}${number}T${number}${number}:${number}${number}:${number}${number}Z` | null;
    closed: boolean;
    tz: import("@open-tender/types").Timezone;
}) => boolean | null, {
    clearCache: () => void;
}> & {
    clearCache: () => void;
};
export declare const selectGroupOrderTests: ((state: import("redux").EmptyObject & {
    alerts: import("@open-tender/types").Alerts;
    allergens: import("./allergens").AllergensState;
    announcements: import("./announcements").AnnouncementsState;
    checkout: import("./checkout").CheckoutState;
    completedOrders: import("./completedOrders").CompletedOrdersState;
    config: import("./config").ConfigState;
    confirmation: import("./confirmation").ConfirmationState;
    customer: import("redux").CombinedState<{
        account: import("./customer").AccountState;
        communicationPreferences: import("./customer").CustomerCommunicationPrefsState;
        creditCards: import("./customer").CustomerCreditCardsState;
        allergens: import("./customer").CustomerAllergensState;
        addresses: import("./customer").CustomerAddressesState;
        favorites: import("./customer").CustomerFavoritesState;
        fcmToken: import("./customer").CustomerFcmTokenState;
        giftCards: import("./customer").CustomerGiftCardsState;
        groupOrders: import("./customer").CustomerGroupOrdersState;
        history: import("./customer").CustomerHistoryState;
        houseAccounts: import("./customer").CustomerHouseAccountsState;
        loyalty: import("./customer").CustomerLoyaltyState;
        order: import("./customer").CustomerOrderState;
        orders: import("./customer").CustomerOrdersState;
        pointsShop: import("./customer").PointsShopState;
        tplsPointsShop: import("./customer").TplsPointsShopState;
        qrcode: import("./customer").CustomerQRCodeState;
        rewards: import("./customer").CustomerRewardsState;
        thanx: import("./customer").CustomerThanxState;
        tpls: import("./customer").CustomerTplsState;
    }>;
    deals: import("./deals").DealsState;
    donations: import("./donations").DonationState;
    geolocation: import("./geolocation").GeoLocationState;
    giftCards: import("./giftCards").GiftCardsState;
    groupOrder: GroupOrderState;
    guest: import("./guest").GuestState;
    loader: import("./loader").LoaderState;
    menu: import("./menu").MenuState;
    menuDisplay: import("./menuDisplay").MenuDisplayState;
    menuItems: import("./menuItems").MenuItemsState;
    modal: import("@open-tender/types").Modal;
    misc: import("./misc").MiscState;
    nav: import("./nav").NavState;
    navSite: import("./navSite").NavSiteState;
    notifications: import("@open-tender/types").Notifications;
    oneTimePasscode: import("./oneTimePasscode").OneTimePasscodeState;
    order: import("./order").OrderState;
    orderFulfillment: import("./orderFulfillment").OrderFulfillmentState;
    orderRating: import("./orderRating").OrderRatingState;
    posts: import("./posts").PostsSlice;
    pushNotifications: import("./pushNotifications").PushNotificationsState;
    qr: import("./qr").QrState;
    quote: import("./quote").QuoteState;
    resetPassword: import("./resetPassword").ResetPasswordState;
    revenueCenters: import("./revenueCenters").RevenueCentersState;
    rewardCode: import("./rewardCode").RewardCodeState;
    sidebar: import("./sidebar").SidebarState;
    sidebarModal: import("./sidebarModal").SidebarModalState;
    signUp: import("./signUp").SignUpState;
    tags: import("./tags").TagsState;
    terms: import("./terms").TermsSlice;
    Unsubscribe: import("./unsubscribe").UnsubscribeState;
    validTimes: import("./validTimes").ValidTimesState;
    verifyAccount: import("./verifyAccount").VerifyAccountState;
}) => {
    closed: boolean;
    pastCutoff: boolean;
    atCapacity: boolean;
}) & import("reselect").OutputSelectorFields<(args_0: {
    closed: boolean;
    cutoffAt: `${number}${number}${number}${number}-${number}${number}-${number}${number}T${number}${number}:${number}${number}:${number}${number}Z` | null;
    guestLimit: number | null;
    guestCount: number | null;
    tz: import("@open-tender/types").Timezone;
}) => {
    closed: boolean;
    pastCutoff: boolean;
    atCapacity: boolean;
}, {
    clearCache: () => void;
}> & {
    clearCache: () => void;
};
export declare const selectGroupOrderPrepTimes: ((state: import("redux").EmptyObject & {
    alerts: import("@open-tender/types").Alerts;
    allergens: import("./allergens").AllergensState;
    announcements: import("./announcements").AnnouncementsState;
    checkout: import("./checkout").CheckoutState;
    completedOrders: import("./completedOrders").CompletedOrdersState;
    config: import("./config").ConfigState;
    confirmation: import("./confirmation").ConfirmationState;
    customer: import("redux").CombinedState<{
        account: import("./customer").AccountState;
        communicationPreferences: import("./customer").CustomerCommunicationPrefsState;
        creditCards: import("./customer").CustomerCreditCardsState;
        allergens: import("./customer").CustomerAllergensState;
        addresses: import("./customer").CustomerAddressesState;
        favorites: import("./customer").CustomerFavoritesState;
        fcmToken: import("./customer").CustomerFcmTokenState;
        giftCards: import("./customer").CustomerGiftCardsState;
        groupOrders: import("./customer").CustomerGroupOrdersState;
        history: import("./customer").CustomerHistoryState;
        houseAccounts: import("./customer").CustomerHouseAccountsState;
        loyalty: import("./customer").CustomerLoyaltyState;
        order: import("./customer").CustomerOrderState;
        orders: import("./customer").CustomerOrdersState;
        pointsShop: import("./customer").PointsShopState;
        tplsPointsShop: import("./customer").TplsPointsShopState;
        qrcode: import("./customer").CustomerQRCodeState;
        rewards: import("./customer").CustomerRewardsState;
        thanx: import("./customer").CustomerThanxState;
        tpls: import("./customer").CustomerTplsState;
    }>;
    deals: import("./deals").DealsState;
    donations: import("./donations").DonationState;
    geolocation: import("./geolocation").GeoLocationState;
    giftCards: import("./giftCards").GiftCardsState;
    groupOrder: GroupOrderState;
    guest: import("./guest").GuestState;
    loader: import("./loader").LoaderState;
    menu: import("./menu").MenuState;
    menuDisplay: import("./menuDisplay").MenuDisplayState;
    menuItems: import("./menuItems").MenuItemsState;
    modal: import("@open-tender/types").Modal;
    misc: import("./misc").MiscState;
    nav: import("./nav").NavState;
    navSite: import("./navSite").NavSiteState;
    notifications: import("@open-tender/types").Notifications;
    oneTimePasscode: import("./oneTimePasscode").OneTimePasscodeState;
    order: import("./order").OrderState;
    orderFulfillment: import("./orderFulfillment").OrderFulfillmentState;
    orderRating: import("./orderRating").OrderRatingState;
    posts: import("./posts").PostsSlice;
    pushNotifications: import("./pushNotifications").PushNotificationsState;
    qr: import("./qr").QrState;
    quote: import("./quote").QuoteState;
    resetPassword: import("./resetPassword").ResetPasswordState;
    revenueCenters: import("./revenueCenters").RevenueCentersState;
    rewardCode: import("./rewardCode").RewardCodeState;
    sidebar: import("./sidebar").SidebarState;
    sidebarModal: import("./sidebarModal").SidebarModalState;
    signUp: import("./signUp").SignUpState;
    tags: import("./tags").TagsState;
    terms: import("./terms").TermsSlice;
    Unsubscribe: import("./unsubscribe").UnsubscribeState;
    validTimes: import("./validTimes").ValidTimesState;
    verifyAccount: import("./verifyAccount").VerifyAccountState;
}) => {
    prepTime?: undefined;
    leadTime?: undefined;
} | {
    prepTime: number;
    leadTime: number;
}) & import("reselect").OutputSelectorFields<(args_0: {
    revenueCenter: import("@open-tender/types").RevenueCenter | null;
    serviceType: ServiceType | null;
}) => {
    prepTime?: undefined;
    leadTime?: undefined;
} | {
    prepTime: number;
    leadTime: number;
}, {
    clearCache: () => void;
}> & {
    clearCache: () => void;
};
export declare const groupOrderReducer: import("redux").Reducer<GroupOrderState, import("redux").AnyAction>;
