import { Group } from '@antv/g';
import type { S2CellType } from '../../common';
import type { Node } from '../layout/node';
import type { BaseHeaderConfig } from './interface';
/**
 * New Base Header for all headers(cornerHeader, rowHeader, colHeader)
 * NOTE: Do not use this.cfg(which lays in group) to get header config,
 * use @see headerConfig instead
 */
export declare abstract class BaseHeader<T extends BaseHeaderConfig> extends Group {
    protected scrollGroup: Group;
    protected frozenGroup: Group;
    protected frozenTrailingGroup: Group;
    protected extraFrozenNodes: Node[];
    protected abstract initGroups(): void;
    protected abstract layout(): void;
    protected abstract offset(): void;
    protected abstract clip(): void;
    protected abstract getCellInstance(node: Node): S2CellType;
    protected headerConfig: T;
    constructor(config: T);
    getHeaderConfig(): T;
    render(type?: string): void;
    /**
     * Scroll header group's x,y
     * @param scrollX hScrollBar horizontal offset
     * @param scrollY hScrollBar vertical offset
     * @param type
     */
    onScrollXY(scrollX: number, scrollY: number, type?: string): void;
    /**
     * Only call when hRowScrollBar scrolls
     * @param rowHeaderScrollX  hRowScrollbar horizontal offset
     * @param type
     */
    onRowScrollX(rowHeaderScrollX: number, type?: string): void;
    /**
     * 清空热区，为重绘做准备，防止热区重复渲染
     * @param type 当前重绘的header类型
     */
    protected clearResizeAreaGroup(type?: string): void;
    clear(): void;
    /**
     * Check whether header cell in viewPort
     */
    protected isHeaderCellInViewport: ({ cellPosition, cellSize, viewportPosition, viewportSize, }: {
        cellPosition: number;
        cellSize: number;
        viewportPosition: number;
        viewportSize: number;
    }) => boolean;
    getNodes(): Node[];
}
