/** A key in a grouped category axis — an array of nullable labels representing the path through the hierarchy. */
export type GroupedCategoryKey = (string | null)[];
/**
 * The tree layout is calculated in abstract x/y coordinates, where the root is at (0, 0)
 * and the tree grows downward from the root.
 */
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;
    separatorDepth: number;
    leftmostLeaf: TreeNode;
    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 minPosition;
    private maxPosition;
    nodes: TreeNode[];
    depth: number;
    insertNode(node: TreeNode): void;
    private scaling;
    resize(range: number[], step: number, inset: number, bandwidth: number): void;
}
export {};
