import type DataGrid from './DataGrid';
import type { FooterData, FooterCellData } from './types';
declare class Footer {
    grid: DataGrid;
    footerData: FooterData;
    hoverColIndex: number;
    /** 当 hover 列为 nested 父列时，记录鼠标所在的子列偏移索引（-1 表示不在子列上） */
    hoverSubColIndex: number;
    constructor(grid: DataGrid);
    /** Footer 行高度（从 DataGrid._footerHeight 读取，支持自定义） */
    get height(): number;
    /** Footer Y 坐标（固定在可视区域底部，水平滚动条上方） */
    get y(): number;
    /** 一次性设置所有列的统计数据 */
    setFooterData(data: FooterData): void;
    /** 设置单列的统计数据（不立即重绘，使用 markDirty 批量合并） */
    setFooterCellData(columnKey: string, data: FooterCellData): void;
    /** 当列结构变化时，清理已不存在列的 footer 数据 */
    cleanupFooterData(existingKeys: Set<string>): void;
    /** 判断鼠标是否在 footer 区域内 */
    isInFooterArea(x: number, y: number): boolean;
    /** 获取鼠标悬停所在的列索引（考虑固定列和滚动偏移），同时更新 hoverSubColIndex */
    getHoverColumnIndex(mouseX: number): number;
    /** 获取指定 nested 父列的所有子列列头 */
    private getNestedChildHeaders;
    /** 安全获取 canvas 元素的视口边界（测试环境中 target 可能不存在） */
    private getCanvasRect;
    /** 获取列在屏幕上的实际 X 坐标 */
    private getColumnScreenX;
    /** 处理鼠标单击事件 */
    onClick(mouseX: number, mouseY: number, clientX: number, clientY: number): void;
    /** 处理 nested 子列点击 */
    private onNestedChildClick;
    /**
     * 检测鼠标是否在刷新图标区域内（嵌套子列的刷新按钮）
     * 布局从右到左：[下拉箭头(ARROW_ICON_SIZE)] [刷新icon(REFRESH_ICON_PADDING + REFRESH_ICON_SIZE + REFRESH_ICON_PADDING)]
     */
    private isInsideRefreshIcon;
    /**
     * 从列配置中查找指定 key 的列。
     * 注意：必须按 key 匹配，不能按 index — grid.headers 由 calCrossSpan 生成的复合表头树形结构，
     * 元素本身并无 index 字段（HeaderConfig 仅有 level/rowspan/colspan/children），
     * 而 ColumnHeader 的 index 是叶子列序号，与 headers 树形结构无对应关系。
     */
    private findColumnConfig;
    /** 绘制 footer */
    draw(): void;
    /** 绘制单个 footer 单元格 */
    private drawFooterCell;
    /** 绘制 nested 列的子单元格拆分渲染 */
    private drawNestedFooterCell;
    /** 绘制 "数据统计" 提示文字 */
    private drawHintText;
    /** 绘制 "数据统计" 提示文字（指定最大宽度） */
    private drawHintTextWithMaxWidth;
    /**
     * 绘制刷新图标（icon_backtodefault）
     * @param x 刷新图标区域左边界（包含 padding）
     */
    private drawRefreshIcon;
    /**
     * 绘制 loading 旋转图标（替代刷新icon位置）
     * @param x loading 图标区域左边界（包含 padding，与刷新icon位置对齐）
     */
    private drawLoadingIcon;
    /**
     * 截断文字并添加省略号，不压缩文字宽度
     */
    private truncateText;
    /** 绘制下拉箭头图标 */
    private drawArrowIcon;
}
export default Footer;
