import { default as React } from 'react';
import { default as PropTypes } from 'prop-types';
export class MapEditor extends React.Component<any, any, any> {
    constructor(props: any);
    state: {
        pendingAction: null;
        selectionType: null;
        selection: null;
    };
    handleAddEdge(): void;
    handleAddNode(): void;
    handleDeleteEdge(): void;
    handleDeleteNode(): void;
    constrain(x: any, y: any): {
        x: number;
        y: number;
    };
    /**
     * When we create new elements we give it a id
     */
    makeId(): string;
    findNode(id: any): undefined;
    findEdge(id: any): undefined;
    nodeSize(name: any): any;
    nodeShape(name: any): any;
    edgeThickness(capacity: any): any;
    edgeShape(name: any): any;
    edgeCurveDirection(name: any): any;
    edgeCurveOffset(name: any): any;
    bounds(): any;
    cloneTopo(): {
        name: any;
        description: any;
        nodes: any;
        edges: any;
    };
    /**
     * Build a topology suitable for passing into the BaseMap for rendering
     * as nodes and edges
     */
    buildTopology(): {
        nodes: any;
        edges: any;
        name: any;
        description: any;
    } | null;
    handleSelectionChanged(selectionType: any, selectionId: any): void;
    handleChange(attr: any, value: any): void;
    handleNodeDrag(id: any, posx: any, posy: any): void;
    /**
     * TODO: actual handling of the add node should be done at
     * the application level (action) rather than down here in the editor.
     */
    handleAddNodePosition(posx: any, posy: any): void;
    handleAddSelection(node: any): void;
    handleDeleteNodeSelection(nodeId: any): void;
    handleDeleteEdgeSelection(edgeId: any): void;
    renderTextProperty(attr: any, value: any): import("react/jsx-runtime").JSX.Element;
    renderIntegerProperty(attr: any, value: any): import("react/jsx-runtime").JSX.Element;
    renderChoiceProperty(attr: any, options: any, value: any): import("react/jsx-runtime").JSX.Element;
    renderNodeProperties(): import("react/jsx-runtime").JSX.Element;
    renderEdgeProperties(): import("react/jsx-runtime").JSX.Element;
    renderProperties(): import("react/jsx-runtime").JSX.Element;
    renderToolbar(): import("react/jsx-runtime").JSX.Element;
    renderMap(): import("react/jsx-runtime").JSX.Element;
    render(): import("react/jsx-runtime").JSX.Element;
}
export namespace MapEditor {
    namespace propTypes {
        let edgeThicknessMap: PropTypes.Requireable<object>;
        let selected: PropTypes.Requireable<boolean>;
        let edgeColorMap: PropTypes.Requireable<any[]>;
        let nodeSizeMap: PropTypes.Requireable<object>;
        let nodeShapeMap: PropTypes.Requireable<object>;
        let edgeShapeMap: PropTypes.Requireable<object>;
        let stylesMap: PropTypes.Requireable<object>;
        let gridSize: PropTypes.Requireable<number>;
    }
    namespace defaultProps {
        let edgeThicknessMap_1: {
            "100G": number;
            "10G": number;
            "1G": number;
            subG: number;
        };
        export { edgeThicknessMap_1 as edgeThicknessMap };
        let selected_1: boolean;
        export { selected_1 as selected };
        let edgeColorMap_1: never[];
        export { edgeColorMap_1 as edgeColorMap };
        let nodeSizeMap_1: {};
        export { nodeSizeMap_1 as nodeSizeMap };
        let nodeShapeMap_1: {};
        export { nodeShapeMap_1 as nodeShapeMap };
        let edgeShapeMap_1: {};
        export { edgeShapeMap_1 as edgeShapeMap };
        let stylesMap_1: {};
        export { stylesMap_1 as stylesMap };
        let gridSize_1: number;
        export { gridSize_1 as gridSize };
    }
}
