import EventDispispatcher from './EventDispatcher';
import StandaloneActionDispatcher from './StandaloneActionDispatcher';
import DesignerModel from './DesignerModel';
import Canvas from './Canvas';
import Relationship from './Relationship';
import EventBusDispatcher from './layout/EventBusDispatcher';
import RelationshipModel from './model/RelationshipModel';
import Mindmap from './model/Mindmap';
import NodeModel from './model/NodeModel';
import Topic from './Topic';
import { DesignerOptions } from './DesignerOptionsBuilder';
import { TopicShapeType } from './model/INodeModel';
import { LineType } from './ConnectionLine';
import ThemeType from './model/ThemeType';
type DesignerEventType = 'modelUpdate' | 'onfocus' | 'onblur' | 'loadSuccess';
declare class Designer extends EventDispispatcher<DesignerEventType> {
    private _mindmap;
    private _options;
    private _actionDispatcher;
    private _model;
    private _canvas;
    _eventBussDispatcher: EventBusDispatcher;
    private _dragManager;
    private _relPivot;
    private _cleanScreen;
    constructor(options: DesignerOptions);
    private _registerWheelEvents;
    getActionDispatcher(): StandaloneActionDispatcher;
    addEvent(type: DesignerEventType, listener: (event: (args?: any) => void) => void): void;
    private _registerMouseEvents;
    private _buildDragManager;
    private _buildNodeGraph;
    onObjectFocusEvent(currentObject?: Topic, event?: any): void;
    closeNodeEditors(): 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(): Promise<void>;
    pasteClipboard(): Promise<void>;
    getModel(): DesignerModel;
    createChildForSelectedNode(): void;
    private _createChildModel;
    createSiblingForSelectedNode(): void;
    private _createSiblingModel;
    showRelPivot(event: MouseEvent): void;
    getMindmapProperties(): {
        zoom: number;
    };
    loadMap(mindmap: Mindmap): Promise<void>;
    getMindmap(): Mindmap;
    undo(): void;
    redo(): void;
    isReadOnly(): boolean;
    nodeModelToTopic(nodeModel: NodeModel): Topic;
    changeTheme(id: ThemeType): void;
    /**
     * @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;
    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 _buildRelationshipShape;
    removeTopic(node: Topic): void;
    private _resetEdition;
    deleteSelectedEntities(): void;
    changeFontFamily(font: string): void;
    changeFontStyle(): void;
    changeFontColor(color: string | undefined): void;
    changeBackgroundColor(color: string | undefined): void;
    changeBorderColor(color: string | undefined): void;
    changeFontSize(size: number): void;
    changeShapeType(shape: TopicShapeType): void;
    changeConnectionStyle(type: LineType): void;
    changeConnectionColor(value: string | undefined): void;
    changeFontWeight(): void;
    addIconType(type: 'image' | 'emoji', iconType: string): void;
    addLink(): void;
    addNote(): void;
    goToNode(node: Topic): void;
    getWorkSpace(): Canvas;
    get cleanScreen(): () => void;
    set cleanScreen(value: () => void);
}
export default Designer;
