import { UbMenuConfiguration, UbMenuEntity, UbMenuItem, UbMenuModifierGroup } from '../third-party-api/uber-eats'; import { DeliveryProvider } from './delivery'; export declare enum OnlineOrderMappingWarningCode { ROOT_ITEM = "ROOT_ITEM", ITEM_ATTRIBUTE = "ITEM_ATTRIBUTE", PAYMENT = "PAYMENT", IS_TEST_ORDER = "IS_TEST_ORDER" } export declare enum OMMItemContextType { MENU = 0, ITEM = 1, MODIFIER_GROUP = 2 } export declare enum OMMItemContentEntityType { PRODUCT = "PRODUCT", PRODUCT_ATTRIBUTE = "PRODUCT_ATTRIBUTE" } export declare enum OnlinePlatformType { UBER_EATS = "UBER_EATS", FOOD_PANDA = "FOOD_PANDA", SDIT = "SDIT", NIDIN = "NIDIN" } export declare enum OOReasonCode { RESTAURANT_TOO_BUSY = "RESTAURANT_TOO_BUSY", KITCHEN_CLOSED = "KITCHEN_CLOSED", OUT_OF_ITEMS = "OUT_OF_ITEMS", CUSTOMER_CALLED_TO_CANCEL = "CUSTOMER_CALLED_TO_CANCEL", CANNOT_COMPLETE_CUSTOMER_NOTE = "CANNOT_COMPLETE_CUSTOMER_NOTE", PAYMENT_EXPIRED = "PAYMENT_EXPIRED", OTHER = "OTHER" } export declare enum OMEntityType { ITEM = "ITEM", MODIFIER_GROUP = "MODIFIER_GROUP" } /** * 第三方店家與Kiosky店家的關聯,共用StoreOnlinePlatformStore */ export declare enum ThirdPartyStoreProvider { POSKY = "POSKY" } export declare type OMMMenuEntity = UbMenuEntity; export interface OMMItem extends UbMenuItem { external_data: OMMItemContent[]; } export interface OMMModifierGroup extends UbMenuModifierGroup { external_data: OMMItemContent[]; } export interface OMMConfig extends UbMenuConfiguration { items: OMMItem[]; modifier_groups: OMMModifierGroup[]; } export interface OMMItemContent { overrideId?: { contextType: OMMItemContextType; contextValue: string; }; content: { entityName: OMMItemContentEntityType; entityId: string; }; } export interface OMMContent { id: string; entityName: 'Product' | 'ProductAttribute'; } /** ======== OnlinePlatformStore ============= */ export interface SOPSContent { content?: { /** for online platform */ customPaymentConfigName?: string; /** for pos integration */ isIntegration?: boolean; /** for foodpanda 類別全店只有一組排序,不跟著menu */ orderedCategoryIds?: string[]; /** for foodpanda 塑膠袋必須要對應到一個品項 */ containerMappedProductId?: string; /** for foodpanda 串接之後訂單就會直接過來,所以需要有個值來判斷訂單可以被傳給店家了嗎 */ enableOrderIntegration?: string; /** for Nidin API 登入帳號 */ account?: string; /** for Nidin API 登入密碼 */ password?: string; }; } export declare type ThirdPartyStoreIntegrationType = OnlinePlatformType | ThirdPartyStoreProvider | DeliveryProvider; export interface StoreOnlinePlatformStore extends SOPSContent { storeId: string; onlinePlatformType: ThirdPartyStoreIntegrationType; onlinePlatformStoreId: string; } export declare type ThirdPartyType = 'pos' | 'onlinePlatform' | 'delivery'; export declare function getThirdPartyType(params: ThirdPartyStoreIntegrationType): ThirdPartyType;