/**
 * 画布日历：sceneElements 顺序资源行 + floorDayBooking 列表 → RecordBoard 日历受控数据。
 */
import { type Dayjs } from 'dayjs';
import type { FloorMapSceneElement, RecordBoardCalendarBookingLike, RecordBoardCalendarResource } from '@pisell/materials';
import type { PisellReservationTableRow } from '../types';
/** 日历浮点小时 → dayjs（与 RecordBoard `dayAndHourToDayjs` 一致） */
export declare function dayjsFromCalendarHour(dateStr: string, hourFloat: number): Dayjs;
/** 与 {@link sceneElementsToBoundRecordIdStrings} 同序：画布已绑定资源 id（string），与预约 `relation_id` 对齐 */
export declare function orderedCanvasResourceRecordIdStrings(sceneElements: FloorMapSceneElement[] | undefined, gridDataSourceKey: string): string[];
export declare function buildCalendarResourcesFromMergedTables(options: {
    orderedResourceIds: string[];
    tables: PisellReservationTableRow[];
}): RecordBoardCalendarResource[];
/**
 * 在合并后的 `tables` 中查找与宿主 raw booking 对应的行（用于详情弹窗）。
 */
export declare function findMergedTableRowForBookingRaw(raw: Record<string, unknown>, tables: PisellReservationTableRow[]): PisellReservationTableRow | undefined;
/**
 * 在已匹配到的 `tableRow.floorMapSourceBookings` 中取出与 `raw` 同一条预约的那条数据（引用随合并刷新）。
 * 供详情弹窗在收到实时推送、合并 tables 后同步更新内容。
 */
export declare function extractFloorMapSourceBookingForRow(raw: Record<string, unknown>, row: PisellReservationTableRow): Record<string, unknown> | undefined;
/**
 * 将 GET booking 列表（与 floorDayBookingData 一致）映射为日历条；仅画布已绑定资源。
 */
export declare function mapFloorDayBookingsToCalendarItems(options: {
    bookings: unknown[] | undefined;
    canvasResourceIdSet: Set<string>;
}): RecordBoardCalendarBookingLike[];
