import { graphlib } from 'dagre';
import { SafeAny } from '../interfaces/any';
import { AttrDef, GroupNode, IGraphLabel, MetaEdge, Node } from '../interfaces/graph';
import { Point } from '../interfaces/layout';
import { Hierarchy } from './hierarchy';
export declare class RenderGraphInfo {
    hierarchy: Hierarchy;
    private readonly index;
    private readonly hasSubHierarchy;
    root: RenderGroupNodeInfo;
    constructor(hierarchy: Hierarchy);
    getRenderInfoNodes(): RenderNodeInfo[];
    getSubHierarchy(): {
        [nodeName: string]: boolean;
    };
    buildSubHierarchy(nodeName: string): void;
    getOrCreateRenderNodeByName(nodeName: string): RenderNodeInfo;
    getRenderNodeByName(nodeName: string): RenderNodeInfo;
    getNodeByName(nodeName: string): Node;
}
export declare class RenderNodeInfo<T extends Node = Node> {
    node: T;
    expanded: boolean;
    x: number;
    y: number;
    width: number;
    height: number;
    coreBox: {
        width: number;
        height: number;
    };
    outboxWidth: number;
    labelOffset: number;
    radius: number;
    labelHeight: number;
    paddingTop: number;
    paddingLeft: number;
    paddingRight: number;
    paddingBottom: number;
    displayName: SafeAny;
    attr: AttrDef;
    constructor(node: T);
}
export declare class RenderMetaEdgeInfo {
    metaEdge: MetaEdge;
    adjoiningMetaEdge: RenderMetaEdgeInfo;
    weight: number;
    points: Point[];
    constructor(metaEdge: MetaEdge);
}
export declare class RenderGroupNodeInfo extends RenderNodeInfo<GroupNode> {
    coreGraph: graphlib.Graph<RenderNodeInfo>;
    constructor(groupNode: GroupNode, graphOptions: IGraphLabel);
}
export declare function buildRenderInfo(graphHierarchy: Hierarchy): RenderGraphInfo;
