import type { CornerNodeType, HiddenColumnsInfo, S2CellType } from '../../common/interface';
import type { Query } from '../../data-set';
import type { SpreadSheet } from '../../sheet-type';
import type { Hierarchy } from './hierarchy';
export type NodeProperties = {
    [K in keyof Node as Node[K] extends (...args: any[]) => any ? never : K]?: Node[K];
};
/**
 * Node for cornerHeader, colHeader, rowHeader
 */
export declare class Node {
    id: string;
    value: string;
    field: string;
    x: number;
    y: number;
    width: number;
    height: number;
    colIndex: number;
    level: number;
    rowIndex: number;
    parent?: Node;
    isLeaf: boolean;
    isTotals: boolean;
    isTotalMeasure: boolean;
    isCollapsed: boolean | null;
    children: Node[];
    padding: number;
    hierarchy: Hierarchy;
    isPivotMode: boolean;
    seriesNumberWidth: number;
    /**
     * 1. 给序号列单元格用，标识该序号单元格对应了行头节点，有了关联关系后，就可以在行头冻结时做区分
     * 2. 给 pivot chart sheet 用，关联当前格子和拆分的 axis 的格子
     */
    relatedNode: Node;
    spreadsheet: SpreadSheet;
    query?: Query;
    belongsCell?: S2CellType | null;
    inCollapseNode?: boolean;
    hiddenColumnsInfo?: HiddenColumnsInfo | null;
    cornerType?: CornerNodeType;
    isGrandTotals?: boolean;
    isSubTotals?: boolean;
    isTotalRoot?: boolean;
    isFrozenHead?: boolean;
    isFrozenTrailing?: boolean;
    shallowRender?: boolean;
    /** 是否不绘制 col cell 水平 resize 热区 */
    hideColCellHorizontalResize?: boolean;
    /** 是否不绘制 row cell 竖直 resize 热区 */
    hideRowCellVerticalResize?: boolean;
    extra: {
        description?: string;
        isCustomNode?: boolean;
        isCustomHeight?: boolean;
        [key: string]: any;
    };
    [key: string]: any;
    constructor(cfg: NodeProperties);
    /**
     * Get node's field path
     * eg: node.id = root[&]东北[&]黑龙江
     * => [area, province]
     * @param node
     */
    static getFieldPath(node: Node, isDrillDown?: boolean): string[];
    /**
     * Get all leaves in this node branch, eg:
     *        c1
     *    b1〈
     *        c2
     * a〈
     *        c3
     *    b2〈
     *        c4
     * get a branch's all leaves(c1~c4)
     * @param node
     */
    static getAllLeaveNodes(node: Node): Node[];
    /**
     * Get all children nodes in this node branch, eg:
     *        c1
     *    b1〈
     *        c2
     * a〈
     *        c3
     *    b2〈
     *        c4
     * get a branch's all nodes(c1~c4, b1, b2)
     * @param node
     */
    static getAllChildrenNodes(node: Node, push?: (node: Node) => Node[]): Node[];
    /**
     *        c1
     *    b1〈
     *        c2
     * a〈
     *        c3
     *    b2〈
     *        c4
     * c1 => (a, b1, c1)
     * @param node
     */
    static getBranchNodes(node: Node): Node[];
    static blankNode(): Node;
    static rootNode(): Node;
    getHeadLeafChild(): Node | undefined;
    /**
     * 获取树状模式下，当前节点以及其所有子节点的高度总和
     *
     */
    getTotalHeightForTreeHierarchy(): number;
    isSeriesNumberNode(): boolean;
    clone(): Node;
    get isFrozen(): boolean | undefined;
}
