import type { FdtoRestaurantWithMenuV4, FdtoPublishMenuRestaurant, FdoPublishMenuMeta } from "@feedmepos/menu/entity";
import { FdoMenuV4, FdoMasterCatalogSetting } from "@feedmepos/menu/entity";
import { type UpdateMenuRequest } from "@feedmepos/menu/manager";
import { useCoreStore } from "@feedmepos/mf-common";
import { type UpdateMenuSettingReq } from "@/helper/menuSanitizer";
export type MenuV4Doc = FdoMenuV4 & {
    _rev: string;
};
export interface FdtoUpdateMenuRes {
    menu: MenuV4Doc;
    updateId: string | null;
}
export interface PaginatedResponse<T> {
    resources: T[];
    meta: {
        skip: number;
        limit: number;
        sortBy: string;
        descending: boolean;
        totalPages: number;
        totalResources: number;
    };
}
export type PublishMenuMetaDoc = FdoPublishMenuMeta & {
    _rev: string;
};
export declare const menuService: {
    coreStore: () => ReturnType<typeof useCoreStore>;
    url: string;
    listRestaurants: () => Promise<Array<FdtoRestaurantWithMenuV4>>;
    readMenu: () => Promise<MenuV4Doc | null>;
    readMenuById: (menuId: string) => Promise<MenuV4Doc | null>;
    updateMenuModule: (req: UpdateMenuRequest[]) => Promise<FdtoUpdateMenuRes>;
    updateMenuSetting: (req: UpdateMenuSettingReq) => Promise<MenuV4Doc>;
    updateMasterCatalog: (dto: FdoMasterCatalogSetting) => Promise<MenuV4Doc>;
    publishMenu: (dto: FdtoPublishMenuRestaurant) => Promise<boolean>;
    publishMultipleMenu: (restaurantIds: string[], schedulerTime?: string) => Promise<boolean>;
    publishAllMenu: (schedulerTime?: string) => Promise<boolean>;
    revertRestaurantMenu: (restaurantId: string) => Promise<boolean>;
    importMenu: (menu: FdoMenuV4) => Promise<MenuV4Doc>;
    readRestaurantsWithMenu: () => Promise<FdtoRestaurantWithMenuV4[]>;
    readRestaurantsWithMenuPagination: (params?: {
        skip?: number;
        limit?: number;
    }) => Promise<PaginatedResponse<FdtoRestaurantWithMenuV4>>;
    migrateV3ToV4: () => Promise<MenuV4Doc>;
    getPublishMenuMeta: () => Promise<FdoPublishMenuMeta>;
    getPublishRestaurantsProgress: () => Promise<number>;
    deleteSchedulerPublish: (schedulerTime: string) => Promise<FdoPublishMenuMeta>;
};
