import { BaseEntity } from '../base.entity';
import { Observable } from 'rxjs';
import { PaintedEvent, ParentChangeEvent, SelectionEvent } from '../interfaces/event.interface';
export declare class BaseModel<X extends BaseEntity = BaseEntity> extends BaseEntity {
    private readonly _type;
    private readonly _parent;
    private readonly _parent$;
    private readonly _selected;
    private readonly _selected$;
    private readonly _painted;
    private readonly _painted$;
    constructor(type?: string, id?: string, logPrefix?: string);
    getParent(): X;
    setParent(parent: X): void;
    parentChanges(): Observable<ParentChangeEvent<X>>;
    getPainted(): boolean;
    setPainted(painted?: boolean): void;
    paintChanges(): Observable<PaintedEvent>;
    getType(): string;
    getSelected(): boolean;
    selectSelected(): Observable<boolean>;
    setSelected(selected?: boolean): void;
    selectionChanges(): Observable<SelectionEvent>;
    getSelectedEntities(): BaseModel[];
}
