/// <reference types="jquery" />
import Events from './Events';
import StandaloneActionDispatcher from './StandaloneActionDispatcher';
import DesignerModel from './DesignerModel';
import Workspace from './Workspace';
import Relationship from './Relationship';
import RelationshipModel from './model/RelationshipModel';
import Mindmap from './model/Mindmap';
import NodeModel from './model/NodeModel';
import Topic from './Topic';
import { DesignerOptions } from './DesignerOptionsBuilder';
declare class Designer extends Events {
    private _mindmap;
    private _options;
    private _actionDispatcher;
    private _model;
    private _workspace;
    private _eventBussDispatcher;
    private _dragManager;
    private _relPivot;
    private _clipboard;
    private _cleanScreen;
    constructor(options: DesignerOptions, divElement: JQuery);
    private _registerWheelEvents;
    getActionDispatcher(): StandaloneActionDispatcher;
    addEvent(type: string, listener: any): Events;
    private _registerMouseEvents;
    private _buildDragManager;
    private _buildNodeGraph;
    onObjectFocusEvent(currentObject?: Topic, event?: any): void;
    /** sets focus to all model entities, i.e. relationships and topics */
    selectAll(): void;
    /** removes focus from all model entities, i.e. relationships and topics */
    deselectAll(): void;
    setZoom(zoom: number): void;
    zoomToFit(): void;
    zoomOut(factor?: number): void;
    zoomIn(factor?: number): void;
    shrinkSelectedBranch(): void;
    copyToClipboard(): void;
    pasteClipboard(): void;
    getModel(): DesignerModel;
    createChildForSelectedNode(): void;
    private _copyNodeProps;
    private _createChildModel;
    createSiblingForSelectedNode(): void;
    private _createSiblingModel;
    showRelPivot(event: MouseEvent): void;
    getMindmapProperties(): {
        zoom: number;
    };
    /**
           * @param {mindplot.Mindmap} mindmap
           * @throws will throw an error if mindmapModel is null or undefined
           */
    loadMap(mindmap: Mindmap): void;
    getMindmap(): Mindmap;
    undo(): void;
    redo(): void;
    isReadOnly(): boolean;
    nodeModelToTopic(nodeModel: NodeModel): Topic;
    /**
       * @private
       * @param {mindplot.model.RelationshipModel} model
       * @return {mindplot.Relationship} the relationship created to the model
       * @throws will throw an error if model is null or undefined
       */
    private _relationshipModelToRelationship;
    /**
           * @param {mindplot.model.RelationshipModel} model
           * @return {mindplot.Relationship} the relationship added to the mindmap
           */
    addRelationship(model: RelationshipModel): Relationship;
    /**
           * deletes the relationship from the linked topics, DesignerModel, Workspace and Mindmap
           * @param {mindplot.Relationship} rel the relationship to delete
           */
    deleteRelationship(rel: Relationship): void;
    /**
           * @private
           * @param {mindplot.model.RelationshipModel} model
           * @return {mindplot.Relationship} the new relationship with events registered
           * @throws will throw an error if the target topic cannot be found
           */
    private _buildRelationshipShape;
    /**
           * @param {mindplot.Topic} node the topic to remove
           * removes the given topic and its children from Workspace, DesignerModel and NodeModel
           */
    removeTopic(node: any): void;
    /**
           * @private
           */
    _resetEdition(): void;
    /** */
    deleteSelectedEntities(): void;
    changeFontFamily(font: string): void;
    changeFontStyle(): void;
    changeFontColor(color: string): void;
    /** */
    changeBackgroundColor(color: string): void;
    /** */
    changeBorderColor(color: string): void;
    /** */
    changeFontSize(size: number): void;
    changeTopicShape(shape: string): void;
    changeFontWeight(): void;
    addIconType(iconType: string): void;
    addFormToTopic(formType: string): void;
    /**
     * lets the selected topic open the link editor where the user can define or modify an
     * existing link
     */
    addLink(): void;
    /** */
    addNote(): void;
    goToNode(node: Topic): void;
    getWorkSpace(): Workspace;
    get cleanScreen(): () => void;
    set cleanScreen(value: () => void);
}
export default Designer;
