import { Graph2 } from "@hpcc-js/util";
import { Hierarchy } from "./dagreWorker.ts";
import { Layout, Point } from "./layout.ts";
import { VertexPlaceholder, EdgePlaceholder, SubgraphPlaceholder } from "./placeholders.ts";
interface Node {
    origData: VertexPlaceholder;
    children: Node[];
}
export interface EdgeLayout {
    path: string;
    labelPos: Point;
}
export interface Options {
}
export interface TidyTreeOptions extends Options {
    rankdir: "TB" | "LR";
}
export declare class TidyTreeBase extends Layout {
    protected options: Options;
    constructor(graph: any, options: Options);
    private _visited;
    protected _tree: Node;
    protected _d3Hierarchy: Hierarchy;
    protected sortTree(data: Graph2, node?: Node): void;
    protected depthFirst(data: Graph2<VertexPlaceholder, EdgePlaceholder, SubgraphPlaceholder>, v: VertexPlaceholder, parent?: any): void;
    protected breadthFirst(data: Graph2<VertexPlaceholder, EdgePlaceholder, SubgraphPlaceholder>, v: VertexPlaceholder): void;
    start(): Promise<this>;
    finalize(nodes: Node[]): void;
}
export declare class Tree extends TidyTreeBase {
    protected options: TidyTreeOptions;
    constructor(graph: any, options: TidyTreeOptions);
    start(): Promise<this>;
    edgePath(ep: EdgePlaceholder, curveDepth: number): EdgeLayout;
}
export declare class RadialTree extends TidyTreeBase {
    constructor(graph: any);
    start(): Promise<this>;
}
export declare class Dendrogram extends TidyTreeBase {
    protected options: TidyTreeOptions;
    constructor(graph: any, options: TidyTreeOptions);
    start(): Promise<this>;
    edgePath(ep: EdgePlaceholder, curveDepth: number): EdgeLayout;
}
export declare class RadialDendrogram extends TidyTreeBase {
    constructor(graph: any);
    start(): Promise<this>;
}
export {};
