import PositionType from '../PositionType';
import FeatureModel from './FeatureModel';
import Mindmap from './Mindmap';
export declare type NodeModelType = 'CentralTopic' | 'MainTopic';
declare abstract class INodeModel {
    static MAIN_TOPIC_TO_MAIN_TOPIC_DISTANCE: number;
    private static _next_uuid;
    protected _mindmap: Mindmap;
    constructor(mindmap: Mindmap);
    getId(): number;
    abstract getFeatures(): FeatureModel[];
    setId(id?: number): void;
    getType(): NodeModelType;
    setType(type: NodeModelType): void;
    setText(text: string): void;
    getText(): string | undefined;
    setPosition(x: number, y: number): void;
    getPosition(): PositionType;
    setImageSize(width: number, height: number): void;
    getImageSize(): {
        width: number;
        height: number;
    };
    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(): string;
    /** */
    setShapeType(type: string): void;
    setOrder(value: number): void;
    getOrder(): number;
    setFontFamily(fontFamily: string): void;
    getFontFamily(): string;
    /** */
    setFontStyle(fontStyle: string): void;
    getFontStyle(): string;
    setFontWeight(weight: any): void;
    getFontWeight(): string | number | boolean;
    setFontColor(color: string): void;
    getFontColor(): string;
    setFontSize(size: number): void;
    getFontSize(): number;
    getBorderColor(): string;
    setBorderColor(color: string): void;
    getBackgroundColor(): string;
    setBackgroundColor(color: string): void;
    areChildrenShrunken(): boolean;
    /**
     * @return {Boolean} true if the children nodes are hidden by the shrink option
     */
    setChildrenShrunken(value: boolean): void;
    isNodeModel(): boolean;
    /**
     * @return {Boolean} true if the node model has a parent assigned to it
     */
    isConnected(): boolean;
    abstract append(node: any): 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;
    abstract putProperty(key: string, value: number | string | boolean): void;
    abstract setParent(parent: INodeModel): void;
    abstract getChildren(): INodeModel[];
    abstract getParent(): INodeModel | null;
    abstract clone(): INodeModel;
    isChildNode(node: INodeModel): boolean;
    findNodeById(id: number): INodeModel;
    inspect(): string;
    abstract removeChild(child: INodeModel): any;
    static _nextUUID(): number;
}
declare const TopicShape: {
    RECTANGLE: string;
    ROUNDED_RECT: string;
    ELLIPSE: string;
    LINE: string;
    IMAGE: string;
};
/**
 * @todo: This method must be implemented. (unascribed)
 */
export { TopicShape };
export default INodeModel;
