import * as d3 from 'd3';
import { MarkModel } from './MarkModel';
export interface NodeShapeAttrs {
    r?: number;
    width?: number;
    height?: number;
    rx?: number;
    ry?: number;
}
export interface NodeData extends d3.SimulationNodeDatum {
    label: string;
    label_display: 'center' | 'outside' | 'none';
    shape: 'circle' | 'rect' | 'ellipse';
    shape_attrs: NodeShapeAttrs;
    value?: number;
    xval: number;
    yval: number;
    color: number;
}
export interface LinkData {
    source: NodeData;
    target: NodeData;
    value: number;
}
export declare class GraphModel extends MarkModel {
    defaults(): {
        _model_name: string;
        _view_name: string;
        node_data: any[];
        link_matrix: any[];
        link_data: any[];
        charge: number;
        static: boolean;
        link_distance: number;
        link_type: string;
        directed: boolean;
        highlight_links: boolean;
        colors: string[];
        x: any[];
        y: any[];
        color: any;
        link_color: any;
        hovered_point: any;
        scales_metadata: {
            x: {
                orientation: string;
                dimension: string;
            };
            y: {
                orientation: string;
                dimension: string;
            };
            color: {
                dimension: string;
            };
        };
        _model_module: string;
        _view_module: string;
        _model_module_version: string;
        _view_module_version: string;
        scales: {};
        preserve_domain: {};
        display_legend: boolean;
        labels: any[];
        apply_clip: boolean;
        visible: boolean;
        selected_style: {};
        unselected_style: {};
        selected: any;
        enable_hover: boolean;
        tooltip: any;
        tooltip_style: {
            opacity: number;
        };
        interactions: {
            hover: string;
        };
        tooltip_location: string;
    };
    initialize(attributes: any, options: any): void;
    get static(): boolean;
    get charge(): number;
    get directed(): boolean;
    private get nodeData();
    private getShapeAttrs;
    private updateNodeData;
    private updateLinkData;
    update_data(): void;
    update_domains(): void;
    static serializers: {
        x: {
            deserialize: (data: any, manager: any) => any;
            serialize: (data: any, manager: any) => any;
        };
        y: {
            deserialize: (data: any, manager: any) => any;
            serialize: (data: any, manager: any) => any;
        };
        color: {
            deserialize: (data: any, manager: any) => any;
            serialize: (data: any, manager: any) => any;
        };
        link_color: {
            deserialize: (data: any, manager: any) => any;
            serialize: (data: any, manager: any) => any;
        };
        link_matrix: {
            deserialize: (data: any, manager: any) => any;
            serialize: (data: any, manager: any) => any;
        };
        scales: {
            deserialize: typeof import("@jupyter-widgets/base").unpack_models;
        };
        tooltip: {
            deserialize: typeof import("@jupyter-widgets/base").unpack_models;
        };
        selected: {
            deserialize: (data: any, manager: any) => any;
            serialize: (data: any, manager: any) => any;
        };
    };
    mark_data: NodeData[];
    link_data: LinkData[];
}
