/** A key in a grouped category axis — an array of nullable labels representing the path through the hierarchy. */
export type GroupedCategoryKey = (string | null)[];
declare class TreeNode {
    label: string | null;
    parent?: TreeNode | undefined;
    refId?: number | undefined;
    position: number;
    subtreeLeft: number;
    subtreeRight: number;
    children: TreeNode[];
    leafCount: number;
    depth: number;
    prelim: number;
    mod: number;
    ancestor: this;
    change: number;
    shift: number;
    index: number;
    screen: number;
    constructor(label?: string | null, parent?: TreeNode | undefined, refId?: number | undefined);
    insertTick(tick: GroupedCategoryKey, index: number): TreeNode | undefined;
    getLeftSibling(): TreeNode | undefined;
    getLeftmostSibling(): TreeNode | undefined;
    nextLeft(): TreeNode | undefined;
    nextRight(): TreeNode | undefined;
    getSiblings(): TreeNode[];
}
export declare function treeLayout(ticks: GroupedCategoryKey[]): {
    layout: TreeLayout;
    tickNodes: Map<GroupedCategoryKey, TreeNode>;
};
export declare class TreeLayout {
    private readonly dimensions;
    nodes: TreeNode[];
    depth: number;
    insertNode(node: TreeNode): void;
    scaling(extent: number, flip?: boolean): number;
}
export {};
