import { Observable } from 'rxjs';
import { Coords } from '../interfaces/coords.interface';
import { Dimensions } from '../interfaces/dimensions.interface';
import { SerializedNodeModel } from '../interfaces/serialization.interface';
import { DiagramEngine } from '../services/engine.service';
import { ID } from '../utils/tool-kit.util';
import { EntityMap, HashMap } from '../utils/types';
import { BaseModel } from './base.model';
import { DiagramModel } from './diagram.model';
import { PortModel } from './port.model';
export declare class NodeModel
extends BaseModel {
protected diagramEngine$: import("../state/state").ValueState;
protected extras$: import("../state/state").ValueState;
protected ports$: import("../state/state").EntityState;
protected coords$: import("../state/state").ValueState;
protected dimensions$: import("../state/state").ValueState;
constructor(nodeType?: string, id?: string, extras?: HashMap, x?: number, y?: number, width?: number, height?: number, logPrefix?: string);
getDiagramEngine(): DiagramEngine;
selectDiagramEngine(): Observable;
setDiagramEngine(diagramEngine: DiagramEngine): void;
getCoords(): Coords;
setCoords({ x, y }: Coords): void;
serialize(): SerializedNodeModel;
getSelectedEntities(): BaseModel[];
coordsChanges(): Observable;
selectCoords(): Observable;
selectX(): Observable;
selectY(): Observable;
/**
* Assign a port to the node and set the node as its getParent
* @returns the inserted port
*/
addPort(port: P): P;
removePort(portOrId: ID | P): string;
getPort(id: ID): P;
selectPorts(selector?: () => boolean | ID | ID[]): Observable;
getPorts(): EntityMap
;
getPortsArray(): P[];
setDimensions(dimensions: Partial): void;
getDimensions(): Dimensions;
dimensionChanges(): Observable;
getHeight(): number;
setHeight(height: number): void;
getWidth(): number;
setWidth(width: number): void;
selectWidth(): Observable;
selectHeight(): Observable;
setExtras(extras: any): void;
getExtras(): any;
selectExtras(selector?: (extra: E) => E[keyof E] | string | string[]): Observable;
destroy(): void;
removeAllPorts(): void;
}