/**
 * 合并 RecordBoard.floorMap 与预约默认：持久化 onSave、画布 Tab 尾区、缩放/平移等
 */
import React from 'react';
import type { FloorMapDataSources, FloorMapMergedItem, FloorMapViewConfig, FloorMapViewportOverlayRenderArgs, PisellFloorMapLayoutRef, RecordBoardProps } from '@pisell/materials';
import { getReservationRenderItemByKind } from './reservationCards';
export interface UseReservationFloorMapMergedParams {
    floorMapProp: RecordBoardProps['floorMap'];
    baseFloorConfig: FloorMapViewConfig;
    dataSources: FloorMapDataSources;
    renderItemByKind: ReturnType<typeof getReservationRenderItemByKind>;
    gridDataSourceKey: string;
    effectiveMapMode: 'read' | 'edit';
    resolvedFloorPlanId: number | null;
    floorPlanRemoteId: number | null;
    effectiveFloorPlanCode: string;
    floorPlanCanvasWidth?: number;
    floorPlanCanvasHeight?: number;
    floorPlanName?: Record<string, string>;
    floorPlanSort?: number;
    floorPlanStatus?: number;
    onFloorPlanPersisted?: () => void;
    putFloorPlan?: (id: number, body: Record<string, unknown>) => Promise<unknown>;
    isFloorModeControlled: boolean;
    mapEditInternal: boolean;
    setMapEditInternal: React.Dispatch<React.SetStateAction<boolean>>;
    floorMapLayoutRef: React.RefObject<PisellFloorMapLayoutRef | null>;
    reservationFloorMapViewportOverlay: (args: FloorMapViewportOverlayRenderArgs) => React.ReactNode;
    setRemoteFloorPlanView: React.Dispatch<React.SetStateAction<Partial<FloorMapViewConfig> | null>>;
    /**
     * 平面图图元点击时先于 `floorMap.onItemClick` 调用；用于只读态打开宿主抽屉等。
     * `dataSources` 与合并后的 `floorMap.dataSources` 一致。
     */
    floorMapItemClickBefore?: (args: {
        item: FloorMapMergedItem;
        index: number;
        event: React.MouseEvent<HTMLElement>;
        mode: 'read' | 'edit';
        dataSources: FloorMapDataSources;
    }) => void;
    /** 与引擎语言同步，避免 dataSourceLabels 等停留在首次渲染语言 */
    engineLocale: string;
    /** 场控等：HUD 表抽屉开启时视口叠加层锚左下、Dock 默认右下（可由 floorMap 显式覆盖） */
    floorMapHudTableDrawer?: boolean;
}
export declare function useReservationFloorMapMerged(params: UseReservationFloorMapMergedParams): any;
