import { ID } from './utils/tool-kit.util';
import { Observable } from 'rxjs';
import { BaseEvent, LockEvent, DestroyOptions } from './interfaces/event.interface';
export declare type BaseEntityType = 'node' | 'link' | 'port' | 'point';
export declare class BaseEntity {
    private _id;
    /**
     * a prefix to make logs more easier
     */
    private _logPrefix;
    private _destroyed;
    private _destroyed$;
    private _locked;
    private _locked$;
    constructor(id?: ID, logPrefix?: string);
    id: ID;
    log(message: string, ...args: any): void;
    withLog(message: string, ...args: any): any;
    getLocked(): boolean;
    setLocked(locked?: boolean): void;
    doClone(lookupTable: {
        [s: string]: any;
    }, clone: any): void;
    clone(lookupTable?: {
        [s: string]: any;
    }): any;
    lockChanges(): Observable<LockEvent>;
    destroy(options?: DestroyOptions): void;
    onEntityDestroy(): Observable<BaseEvent<BaseEntity>>;
}
