import Context from "./Context";
import ColumnHeader from "./ColumnHeader";
import type DataGrid from "./DataGrid";
interface CheckOption {
    checked?: boolean;
    indeterminate?: boolean;
}
declare class Header extends Context {
    checked: boolean;
    indeterminate: boolean;
    allColumnHeaders: ColumnHeader[];
    fixedColumnHeaders: ColumnHeader[];
    columnHeaders: ColumnHeader[];
    resizeTarget: ColumnHeader | null;
    resizeOriginalX: number;
    resizeOriginalWidth: number;
    resizeStartX: number;
    isResizing: boolean;
    resizeMousedownTime: number;
    constructor(grid: DataGrid, x: number, y: number);
    paint(): void;
    mouseDown(x: number, y: number, e?: {
        ctrlKey?: boolean;
        metaKey?: boolean;
        shiftKey?: boolean;
    }): void;
    resizing(x: number, _y: number): void;
    endResize(): void;
    /**
     * Double-click on column resize border: toggle between min and max width
     * Aligned with DOM table behavior (onHeaderResizeDblclick):
     * - If maxWidth === 'unset', do nothing
     * - If current width < max, set to max
     * - If current width === max, set to min (originWidth fallback)
     */
    private onHeaderResizeDblclick;
    /**
     * 一次性调整嵌套子列宽度：只修改被拖拽的子列和其父列
     */
    private resizeNestedChildColumn;
    /**
     * 根据鼠标X坐标和Y坐标查找对应的列头
     * 支持嵌套子列：如果鼠标在子表头行，返回子表头；否则返回父表头或普通列
     * @param mouseX 鼠标X坐标
     * @param mouseY 可选的鼠标Y坐标，用于精确匹配嵌套子列行
     * @param topLevelOnly 是否只返回顶层列头（普通列和嵌套父列），用于跨列拖拽
     */
    getColAtPosition(mouseX: number, mouseY?: number, topLevelOnly?: boolean): ColumnHeader | null;
    handleCheck(opt?: CheckOption): void;
    resizeColumn(colIndex: number, diffWidth: number): void;
    resizeAllColumn(fellWidth: number): void;
    draw(): void;
}
export default Header;
