import INodeModel, { NodeModelType as NodeType } from './INodeModel';
import RelationshipModel from './RelationshipModel';
declare abstract class IMindmap {
    getCentralTopic(): INodeModel;
    abstract getDescription(): string;
    abstract setDescription(value: string): void;
    abstract getId(): string;
    abstract setId(id: string): void;
    abstract getVersion(): string;
    abstract setVersion(version: string): void;
    abstract addBranch(nodeModel: any): void;
    abstract getBranches(): any;
    abstract removeBranch(node: any): void;
    abstract getRelationships(): RelationshipModel[];
    connect(parent: INodeModel, child: INodeModel): void;
    /**
       * @param child
       * @throws will throw an error if child is null or undefined
       * @throws will throw an error if child's parent cannot be found
       */
    disconnect(child: INodeModel): void;
    abstract hasAlreadyAdded(node: any): boolean;
    abstract createNode(type: NodeType, id: number): any;
    abstract createRelationship(fromNodeId: number, toNodeId: number): void;
    abstract addRelationship(rel: RelationshipModel): void;
    abstract deleteRelationship(relationship: RelationshipModel): void;
    inspect(): string;
    copyTo(target: IMindmap): void;
}
export default IMindmap;
