import { type MouseEvent } from 'react'; import type { FloorMapDataSources, FloorMapMergedItem } from '@pisell/materials'; import type { PisellReservationProps, PisellReservationTableRow } from '../types'; /** 与 useEngineContext 返回值形状一致(不直接 import hook),避免类型循环 */ declare type EngineContextValue = { appHelper?: any; engine?: any; blockContext?: any; components?: any; pageContext?: any; }; /** * 只读平面图点击 → 宿主结账抽屉或内置预约详情弹窗的状态与 `floorMapItemClickBefore`; * 日历受控 raw 通过 `openBookingDetailFromRaw` 走同一套详情。 */ export declare function useFloorMapBookingInteraction(options: { engineCtx: EngineContextValue | null | undefined; onFloorMapBookingClick?: PisellReservationProps['onFloorMapBookingClick']; dataSources: FloorMapDataSources; /** * 与 `PisellReservation` 中 `buildReservationMergedTableRows` 输出一致;推送更新后用于同步 * 已打开的「预约详情」弹窗的 raw / 行数据。 */ mergedTableRows: PisellReservationTableRow[]; /** * 与场控 `getPicoCodingOpenData` target 中的 BIZ 一致(如 `dine_in`)。 * 旧店铺(id=2155)非 `dine_in` 时点击有效 booking 走宿主结账抽屉。 */ reservationBiz?: string; /** 资源选择模式:点击资源时只把资源信息回传给调用方 */ resourceSelectMode?: PisellReservationProps['resourceSelectMode']; /** * 阅读态点击「空白卡片」时直接走宿主新建 booking 用——与详情 Modal 右上角 * 「New」按钮 (`handleHeaderNewOrderClick`) 完全同源。dine_in 走预加载版插件 * 需要 `reservationRuleProduct` 拼 service 项;其它业务仅靠 `reservationBiz` * + `associatedMenuListIds` 即可。 */ associatedMenuListIds?: number[]; reservationRuleProduct?: any | null; }): { bookingDetailOpen: boolean; bookingDetailRaw: Record | null; bookingDetailRow: PisellReservationTableRow | null; bookingDetailSceneName: string | undefined; bookingDetailSingleMode: boolean; readModeSelectedFloorItemId: string | null; closeBookingDetailModal: (e?: MouseEvent) => void; closeBookingDetailNow: () => void; floorMapItemClickBefore: (args: { item: FloorMapMergedItem; mode: 'read' | 'edit'; dataSources: FloorMapDataSources; event: MouseEvent; }) => void; openBookingDetailFromRaw: (payload: { raw: Record; row?: PisellReservationTableRow | null; sceneElementName?: string; /** * 单条预约模式:弹窗仅展示该 raw,不调宿主 `getResourceBookingItem`, * 不渲染三个 Tab。日历点击 cell 时传 true。 */ singleBookingMode?: boolean; }) => void; }; export {};