import { RestaurantQueue } from '~backend/queue/queue.interface'; export interface EmitEventPayload { topicIds: string[]; event: CustomerEvent | PortalEvent; } export declare enum CUSTOMER_EVENT { NEW_MESSAGE = "CUSTOMER:NEW_MESSAGE", UPDATE_QUEUE = "CUSTOMER:UPDATE_QUEUE", UPDATE_QUEUE_CART = "CUSTOMER:UPDATE_QUEUE:CART", UPDATE_ORDER = "CUSTOMER:UPDATE_ORDER", NEW_REWARD = "CUSTOMER:NEW_REWARD" } export declare enum PORTAL_EVENT { NEW_DELIVERY_ORDER = "PORTAL:NEW_DELIVERY_ORDER", DELIVERY_TIMEOUT = "PORTAL:DELIVERY_TIMEOUT" } export interface BaseEvent { type: CUSTOMER_EVENT | PORTAL_EVENT; } export interface CustomerNewMessageEvent extends BaseEvent { type: CUSTOMER_EVENT.NEW_MESSAGE; data: { message: string; color?: string; }; } export interface CustomerUpdateQueueEvent extends BaseEvent { type: CUSTOMER_EVENT.UPDATE_QUEUE; data: RestaurantQueue; } export interface CustomerUpdateQueueCartEvent extends BaseEvent { type: CUSTOMER_EVENT.UPDATE_QUEUE_CART; data: string; } export interface CustomerUpdateOrderEvent extends BaseEvent { type: CUSTOMER_EVENT.UPDATE_ORDER; data: { id: string; }; } export interface CustomerNewRewardEvent extends BaseEvent { type: CUSTOMER_EVENT.NEW_REWARD; } export type CustomerEvent = CustomerNewMessageEvent | CustomerUpdateOrderEvent | CustomerNewRewardEvent | CustomerUpdateQueueEvent | CustomerUpdateQueueCartEvent; export interface PortalNewDeliveryOrderEvent extends BaseEvent { type: PORTAL_EVENT.NEW_DELIVERY_ORDER; } export interface PortalDeliveryTimeout extends BaseEvent { type: PORTAL_EVENT.DELIVERY_TIMEOUT; } export type PortalEvent = PortalNewDeliveryOrderEvent | PortalDeliveryTimeout;