/// <reference types="react" />
import type { Dayjs } from 'dayjs';
import type { VenueDateSummaryItem, VenueResource, VenueResourceSlot, VenueTimeSlotGrid, SlotPriceInfo, SlotTag, DateMeta, CourtMeta, TimeMeta } from './types';
export declare const SLOT_MINUTES = 30;
export declare const SLOTS_PER_HOUR = 2;
export declare const AUTO_VIEW_HOURS = 5;
export declare const FIRST_COLUMN_WIDTH = 120;
export declare const SLOT_MIN_WIDTH = 70;
export declare function formatDateKey(date: Dayjs): string;
export declare function parseDateKey(key: string): Dayjs;
export declare function getWeekDays(anchor: Dayjs): Dayjs[];
export declare function getMonthLabel(date: Dayjs): string;
export declare function getMonthDays(date: Dayjs): (Dayjs | null)[];
export declare function getWeekdayShortLabel(date: Dayjs): string;
export declare function pad(n: number): string;
export declare function timeToMinutes(time: string): number;
export declare function minutesToTime(minutes: number): string;
export declare function isHourBoundary(slot: string): boolean;
/**
 * 格式化小时列头
 * 使用 i18n 模板 `pisell2.venue.time.hour.format`，支持 {suffix} / {hour} 两个占位符
 *   - en / pt: "{hour}{suffix}" → "6pm"
 *   - zh-CN / zh-TW: "{suffix}{hour}点/點" → "下午6点"
 *   - ja: "{suffix}{hour}時" → "午後6時"
 * 未命中模板时回退到 "{hour}{suffix}" 兼容旧行为
 */
export declare function formatHourHeader(slot: string): string;
/** 从 timeLabels 中提取整点小时（用于表头合并列） */
export declare function buildHourGroups(timeLabels: string[]): string[];
/**
 * 从 API 返回的 dateSummary 中查找指定日期的展示信息
 * 替代原来基于 mock 数据自行计算的逻辑
 */
export declare function getDateMetaFromSummary(date: Dayjs, dateSummary: VenueDateSummaryItem[], symbol?: string): DateMeta;
/**
 * 获取资源维度的可用性概况（某个资源在当天的整体情况）
 */
export declare function getResourceCourtMeta(resource: VenueResource): CourtMeta;
/**
 * 获取时段维度的可用性概况（某个时间点所有资源的情况）
 */
export declare function getTimeMetaFromGrid(resources: VenueResource[], slotIndex: number): TimeMeta;
/**
 * 构建 SlotPriceInfo 用于价格样式映射
 * 从 VenueResourceSlot 的 price 转换为 UI 展示所需的格式
 */
export declare function buildSlotPriceInfo(slot: VenueResourceSlot): SlotPriceInfo;
export declare function getPriceColor(params: {
    highlight: boolean;
    courtType: string;
}): string;
export declare function getSlotTag(priceInfo: SlotPriceInfo): SlotTag | null;
/**
 * 获取列头标签（某个时间点的统一标签）
 * 暂时返回 null，后续 API 可扩展返回标签信息
 */
export declare function getColumnTag(resources: VenueResource[], slotIndex: number): SlotTag | null;
export declare function getTableGridStyle(slotCount: number): React.CSSProperties;
/** 找到第一个有 available 时段的 slot 索引 */
export declare function getFirstAvailableSlotIndex(grid: VenueTimeSlotGrid | null): number;
export declare function getSuggestedStartHourIndex(params: {
    firstAvailableIndex: number;
    totalHours: number;
}): number;
export declare function formatRange(start: string, end: string): string;
export declare function getDateDisplay(dateKey: string): string;
