import type dayjs from 'dayjs';
import type React from 'react';
import type { PisellReservationTableRow } from '../../types';
export declare type BookingDetailActionKey = 'action-edit' | 'action-cart' | 'action-print' | 'action-list' | 'action-form' | 'action-close' | 'action-start' | 'action-complete';
export declare type BookingDetailTabKey = 'current-occupied' | 'ended' | 'unpaid';
export declare type BookingDetailConfirmActionKey = 'action-close' | 'action-start' | 'action-complete';
export declare type BookingDetailAppointmentStatusTone = 'new' | 'confirmed' | 'arrived' | 'started' | 'cancelled' | 'no-show' | 'completed';
export interface SalesHostModule {
    cancelOrder?: unknown;
    changeBookingStatus?: unknown;
    getResourceBookingItem?: unknown;
}
/** 宿主 `getResourceBookingItem` 关心的三个子列表，未返回时给空数组兜底。 */
export interface ResourceBookingItemLists {
    bookings: unknown[];
    completedBookings: unknown[];
    unpaidBookings: unknown[];
}
export interface ReservationBookingDetailModalProps {
    open: boolean;
    onClose: (e?: React.MouseEvent<HTMLElement>) => void;
    /** 操作成功后的外部刷新回调 */
    onActionSuccess?: () => void | Promise<void>;
    /** 当前点击的单条 floorMapSourceBookings */
    raw: Record<string, unknown> | null;
    tableRow?: PisellReservationTableRow | null;
    /**
     * 平面图绑定图元 `name`，与 reservationCards 里传入 displayRoomTitleFromRow 的第二参一致。
     */
    sceneElementName?: string | null;
    /** 路由 business_code，与平面图空桌新建 handleOpenEditBooking 的 businessCode 一致 */
    reservationBiz?: string;
    /** Pico 关联餐牌 ID */
    associatedMenuListIds?: number[];
    /** 与空桌新建一致：命中的预约规则商品 */
    reservationRuleProduct?: unknown | null;
    /**
     * 当日全量预约列表，透传给 sales.getResourceBookingItem 作为 bookingList 参数。
     */
    floorDayBookingList?: unknown[];
    /**
     * 时间轴当前游标，用作 getResourceBookingItem 的 currentTime 入参。
     * `deviceTime` 是否等于 `currentTime` 由 `followWallClock` 决定。
     */
    currentTime?: dayjs.Dayjs | string | number | Date;
    /**
     * 顶栏「跟随当前时间」开关，与 getResourceBookingList 同一语义：
     * - `true`：`deviceTime` 与 `currentTime` 相同（游标即墙钟，避免差一分钟）；
     * - `false`：`deviceTime` 始终取 `dayjs()` 实时设备时间，与「游标 vs 此刻」双通道一致。
     */
    followWallClock?: boolean;
}
export interface BookingDetailActionItem {
    key: BookingDetailActionKey;
    icon: React.ReactNode;
}
