import { Selection } from "@hpcc-js/common";
export interface BaseProps {
    id: string | number;
    origData?: any;
}
export interface VertexBaseProps extends BaseProps {
    text: string;
    categoryID?: string;
    centroid?: boolean;
    hidden?: boolean;
    tooltip?: string;
    annotationIDs?: string[];
}
export interface SubgraphBaseProps extends BaseProps {
    text: string;
    width?: number;
    height?: number;
}
export type Point = [number, number];
export interface EdgeBaseProps<V extends VertexBaseProps = VertexBaseProps> extends BaseProps {
    source: V;
    target: V;
    label?: string;
    labelPos?: Point;
    weight?: number;
    strokeDasharray?: string;
    strokeWidth?: number;
    stroke?: string;
    path?: string;
    fontFamily?: string;
}
export interface HierarchyBase<SG extends SubgraphBaseProps, V extends VertexBaseProps> {
    id: string | number;
    parent: SG;
    child: SG | V;
}
export interface GraphDataProps<SG extends SubgraphBaseProps, V extends VertexBaseProps, E extends EdgeBaseProps<V>> {
    subgraphs?: SG[];
    vertices: V[];
    edges: E[];
    hierarchy?: HierarchyBase<SG, V>[];
}
export interface SubgraphPlaceholder<SG extends SubgraphBaseProps = SubgraphBaseProps> {
    id: string | number;
    element?: Selection<SVGGElement, SubgraphPlaceholder<SG>, SVGGElement, any>;
    props: SG;
    renderResult?: unknown;
    x?: number;
    y?: number;
}
export interface VertexPlaceholder<V extends VertexBaseProps = VertexBaseProps> {
    id: string | number;
    element?: Selection<SVGGElement, VertexPlaceholder<V>, SVGGElement, any>;
    props: V;
    renderResult?: any;
    index?: number;
    x?: number;
    y?: number;
    fx?: number;
    fy?: number;
    vx?: number;
    vy?: number;
    sx?: number;
    sy?: number;
    lat?: number;
    lng?: number;
}
export interface EdgePlaceholder<V extends VertexBaseProps = VertexBaseProps, E extends EdgeBaseProps<V> = EdgeBaseProps<V>> {
    id: string | number;
    element?: Selection<SVGGElement, EdgePlaceholder<V, E>, SVGGElement, any>;
    elementPath?: Selection<SVGPathElement, EdgePlaceholder<V, E>, SVGGElement, any>;
    elementText?: Selection<SVGTextElement, EdgePlaceholder<V, E>, SVGGElement, any>;
    props: E;
    source: VertexPlaceholder<V>;
    target: VertexPlaceholder<V>;
    renderResult?: any;
    index?: number;
    points?: Array<[number, number]>;
}
export declare function isEdgePlaceholder<V extends VertexBaseProps = VertexBaseProps, E extends EdgeBaseProps<V> = EdgeBaseProps<V>>(item: any): item is EdgePlaceholder<V, E>;
