import { type Dayjs } from 'dayjs';
/** 避免 `?? []` 每次 render 新数组引用，触发依赖 list 的 effect 死循环 */
export declare const EMPTY_RESERVATION_LIST: unknown[];
/** 营业日锚定：当日 02:00 — 次日 02:00（与时间轴默认一致） */
export declare function bookingTimeWindowForAnchorDay(anchorDay: Dayjs): [Dayjs, Dayjs];
/**
 * 表格视图初始筛选项：与 Sales Monitor 一致——支付态 + **今日营业日窗口**（`bookingTimeWindowForAnchorDay`）。
 * 用户可在 QuickFilter 改日期；平面图仍用独立的 `floorDayBookingData` 与顶栏日程对齐。
 */
export declare function getGridTableBookingSearchParams(): Record<string, unknown>;
export interface UsePisellReservationBookingDataOptions {
    /** 列表单页条数；平面图按日合并台位时宜用大页 */
    listPageSize?: number;
    /** 初始筛选项；不传则与 Sales Monitor 一致（含当前营业日预约窗口） */
    getInitialSearchParams?: () => Record<string, unknown>;
    /**
     * 合并进每次请求的扁平参数（在 `filter.values` 展开之后），如平面图
     * `form_record_ids: number[]` 按当前资源桌筛选预约。
     */
    extraRequestParams?: Record<string, unknown>;
    /**
     * 是否启用列表 WebSocket 推送并用 `mutate` 覆盖当前数据（`osServer` + `subscriberId`）。
     * 表格全量/分页必须与接口 HTTP 结果一致，应设为 `false`：推送常为平面图子集（如仅绑定桌），
     * 会覆盖刚返回的整页列表，表现为「请求 50 条只显示几条且像平面图资源」。
     * 平面图合并用 booking 请求可保持默认 `true`。
     */
    subscribeRealtimePush?: boolean;
}
/** 内置列表数据 hook 返回结构（booking / resource 页共用） */
export interface UsePisellReservationBookingDataResult {
    data: unknown[];
    loading: boolean;
    total: number;
    pagination: {
        pageNumber: number;
        pageSize: number;
    };
    onPageChange: (pageNumber: number, pageSize: number) => void;
    searchParams: Record<string, unknown>;
    onSearch: (params: Record<string, unknown>) => void;
    onReset: () => void;
    refresh: () => void;
    refreshAsync: () => Promise<unknown>;
    /** 函数式合并 searchParams 并重置到第一页（用于日程变更） */
    patchSearchParams: (updater: (prev: Record<string, unknown>) => Record<string, unknown>) => void;
}
export declare function usePisellReservationBookingData(enabled: boolean, options?: UsePisellReservationBookingDataOptions): UsePisellReservationBookingDataResult;
