import { Line, Text, ElementClass, Point } from '@wisemapping/web2d';
import NodeGraph from './NodeGraph';
import IconGroup from './IconGroup';
import ShirinkConnector from './ShrinkConnector';
import NodeModel from './model/NodeModel';
import Relationship from './Relationship';
import Workspace from './Workspace';
import LayoutManager from './layout/LayoutManager';
import SizeType from './SizeType';
declare abstract class Topic extends NodeGraph {
    private _innerShape;
    private _relationships;
    private _isInWorkspace;
    private _children;
    private _parent;
    private _outerShape;
    private _text;
    private _iconsGroup;
    private _connector;
    private _outgoingLine;
    constructor(model: NodeModel, options: any);
    protected _registerEvents(): void;
    /**
       * @param {String} type the topic shape type
       * @see {@link mindplot.model.INodeModel}
       */
    setShapeType(type: any): void;
    /** @return {mindplot.Topic} parent topic */
    getParent(): Topic | null;
    protected _setShapeType(type: string, updateModel: boolean): void;
    /** @return {String} topic shape type */
    getShapeType(): string;
    private _removeInnerShape;
    getInnerShape(): ElementClass;
    _buildShape(attributes: any, shapeType: string): any;
    setCursor(type: string): void;
    getOuterShape(): ElementClass;
    getTextShape(): Text;
    getOrBuildIconGroup(): IconGroup;
    /** */
    getIconGroup(): IconGroup;
    private _buildIconGroup;
    /**
       * assigns the new feature model to the topic's node model and adds the respective icon
       * @param {mindplot.model.FeatureModel} featureModel
       * @return {mindplot.Icon} the icon corresponding to the feature model
       */
    addFeature(featureModel: any): mindplot.Icon;
    /** */
    findFeatureById(id: any): import("./model/FeatureModel").default;
    /** */
    removeFeature(featureModel: any): void;
    /** */
    addRelationship(relationship: any): void;
    /** */
    deleteRelationship(relationship: any): void;
    /** */
    getRelationships(): Relationship[];
    _buildTextShape(readOnly: any): Text;
    /** */
    setFontFamily(value: any, updateModel: any): void;
    /** */
    setFontSize(value: any, updateModel: any): void;
    /** */
    setFontStyle(value: any, updateModel: any): void;
    /** */
    setFontWeight(value: any, updateModel: any): void;
    /** */
    getFontWeight(): string | number | boolean;
    /** */
    getFontFamily(): string;
    /** */
    getFontColor(): string;
    /** */
    getFontStyle(): string;
    /** */
    getFontSize(): number;
    /** */
    setFontColor(value: any, updateModel: any): void;
    _setText(text: any, updateModel: any): void;
    /** */
    setText(text: any): void;
    /** */
    getText(): string;
    /** */
    setBackgroundColor(color: any): void;
    _setBackgroundColor(color: any, updateModel: any): void;
    /** */
    getBackgroundColor(): string;
    /** */
    setBorderColor(color: any): void;
    _setBorderColor(color: any, updateModel: any): void;
    /** */
    getBorderColor(): string;
    _buildTopicShape(): void;
    _registerDefaultListenersToElement(elem: any, topic: any): void;
    /** */
    areChildrenShrunken(): boolean;
    /** */
    isCollapsed(): boolean;
    /** */
    setChildrenShrunken(value: any): void;
    /** */
    getShrinkConnector(): ShirinkConnector;
    handleMouseOver(): void;
    handleMouseOut(): void;
    showTextEditor(text: string): void;
    removeFormType(): void;
    showNoteEditor(): void;
    /** opens a dialog where the user can enter or edit an existing link associated with this topic */
    showLinkEditor(): void;
    closeEditors(): void;
    private _getTopicEventDispatcher;
    /**
       * Point: references the center of the rect shape.!!!
       */
    setPosition(point: Point): void;
    /** */
    getOutgoingLine(): Line;
    getIncomingLines(): Line[];
    getOutgoingConnectedTopic(): Topic;
    private _updateConnectionLines;
    /** */
    setBranchVisibility(value: boolean): void;
    /** */
    setVisibility(value: boolean): void;
    /** */
    moveToBack(): void;
    /** */
    moveToFront(): void;
    /** */
    isVisible(): boolean;
    private _setRelationshipLinesVisibility;
    private _setTopicVisibility;
    /** */
    setOpacity(opacity: number): void;
    private _setChildrenVisibility;
    /** */
    invariant(): void;
    setSize(size: SizeType, force: boolean): void;
    protected abstract _updatePositionOnChangeSize(oldSize: SizeType, roundedSize: SizeType): void;
    disconnect(workspace: Workspace): void;
    getOrder(): number;
    /** */
    setOrder(value: number): void;
    /** */
    connectTo(targetTopic: Topic, workspace: Workspace): void;
    abstract updateTopicShape(targetTopic: Topic): any;
    append(child: Topic): void;
    /** */
    removeChild(child: Topic): void;
    /** */
    getChildren(): Topic[];
    removeFromWorkspace(workspace: Workspace): void;
    addToWorkspace(workspace: Workspace): void;
    /** */
    isInWorkspace(): boolean;
    /** */
    createDragNode(layoutManager: LayoutManager): import("./DragTopic").default;
    adjustShapes(): void;
    private _flatten2DElements;
    isChildTopic(childTopic: Topic): boolean;
    isCentralTopic(): boolean;
}
export default Topic;
