import { LineType } from '../ConnectionLine';
import PositionType from '../PositionType';
import { FontWeightType } from '../FontWeightType';
import { FontStyleType } from '../FontStyleType';
import FeatureModel from './FeatureModel';
import Mindmap from './Mindmap';
import SizeType from '../SizeType';
export type NodeModelType = 'CentralTopic' | 'MainTopic';
export type TopicShapeType = 'rectangle' | 'rounded rectangle' | 'elipse' | 'line' | 'none' | 'image';
declare abstract class INodeModel {
    static MAIN_TOPIC_TO_MAIN_TOPIC_DISTANCE: number;
    private static _nextUuid;
    protected _mindmap: Mindmap;
    constructor(mindmap: Mindmap);
    getId(): number;
    abstract getFeatures(): FeatureModel[];
    setId(id?: number): void;
    getType(): NodeModelType;
    setType(type: NodeModelType): void;
    setText(text: string | undefined): void;
    getText(): string | null;
    setPosition(x: number, y: number): void;
    getPosition(): PositionType;
    setImageSize(width: number, height: number): void;
    getImageSize(): SizeType | undefined;
    setImageUrl(url: string): void;
    getMetadata(): string;
    setMetadata(json: string): void;
    getImageUrl(): string;
    getMindmap(): Mindmap;
    /**
     * lets the mindmap handle the disconnect node operation
     * @see mindplot.model.IMindmap.disconnect
     */
    disconnect(): void;
    getShapeType(): TopicShapeType;
    setShapeType(type: TopicShapeType | undefined): void;
    setOrder(value: number): void;
    getOrder(): number | undefined;
    setFontFamily(fontFamily: string | undefined): void;
    getFontFamily(): string | undefined;
    setFontStyle(fontStyle: FontStyleType | undefined): void;
    getFontStyle(): FontStyleType | undefined;
    setFontWeight(weight: FontWeightType): void;
    getFontWeight(): FontWeightType | undefined;
    setFontColor(color: string | undefined): void;
    getFontColor(): string | undefined;
    setFontSize(size: number | undefined): void;
    getFontSize(): number | undefined;
    getBorderColor(): string | undefined;
    setBorderColor(color: string | undefined): void;
    getBackgroundColor(): string | undefined;
    setBackgroundColor(color: string | undefined): void;
    areChildrenShrunken(): boolean;
    /**
     * @return {Boolean} true if the children nodes are hidden by the shrink option
     */
    setChildrenShrunken(value: boolean): void;
    setConnectionStyle(type: LineType | undefined): void;
    getConnectionStyle(): LineType | undefined;
    setConnectionColor(value: string | undefined): void;
    getConnectionColor(): string | undefined;
    isNodeModel(): boolean;
    /**
     * @return {Boolean} true if the node model has a parent assigned to it
     */
    isConnected(): boolean;
    abstract append(node: INodeModel): void;
    /**
     * lets the mindmap handle the connect node operation
     * @throws will throw an error if parent is null or undefined
     * @see mindplot.model.IMindmap.connect
     */
    connectTo(parent: INodeModel): void;
    /**
     * @param target
     * @return target
     */
    copyTo(target: INodeModel): INodeModel;
    /**
     * lets parent handle the delete node operation, or, if none defined, calls the mindmap to
     * remove the respective branch
     */
    deleteNode(): void;
    abstract getPropertiesKeys(): string[];
    abstract getProperty(key: string): number | string | boolean | undefined;
    abstract putProperty(key: string, value: number | string | boolean | undefined): void;
    abstract setParent(parent: INodeModel): void;
    abstract getChildren(): INodeModel[];
    abstract getParent(): INodeModel | null;
    abstract clone(): INodeModel;
    isChildNode(node: INodeModel): boolean;
    findNodeById(id: number): INodeModel | undefined;
    inspect(): string;
    abstract removeChild(child: INodeModel): void;
    static _nextUUID(): number;
}
export default INodeModel;
