import { AppObject, AppObjectEntity, Quaternion, QuaternionDTO, Vector3, Vector3DTO } from "@vived/core";
import { Hideable } from "../../Hideable";
import { LabelEntity } from "../../Label";
import { OverlayColor, OverlayColorEnums } from "../../OverlayColor";
import { Selectable } from "../../Selection";
import { Transform3D } from "../../Transform3D";
import { LandmarkRepo } from "./LandmarkRepo";
export declare const LANDMARK_MINIMUM_SIZE: number;
export declare const LANDMARK_MAXIMUM_SIZE: number;
export interface LandmarkDTO {
    id: string;
    position: Vector3DTO;
    size: number;
    rotation: QuaternionDTO;
    label: string;
    defaultLabel: string;
    parentID: string;
    color: OverlayColorEnums;
}
export declare abstract class LandmarkEntity extends AppObjectEntity {
    static readonly type = "LANDMARK";
    static get(appObj: AppObject): LandmarkEntity | undefined;
    abstract get id(): string;
    abstract get parentID(): string;
    abstract get inRepo(): LandmarkRepo | undefined;
    abstract set inRepo(repo: LandmarkRepo | undefined);
    abstract get size(): number;
    abstract set size(val: number);
    abstract get label(): LabelEntity;
    abstract get transform(): Transform3D;
    abstract get hideable(): Hideable;
    abstract get overlayColor(): OverlayColor;
    abstract get selectable(): Selectable;
    abstract get position(): Vector3;
    abstract set position(p: Vector3);
    abstract get rotation(): Quaternion;
    abstract set rotation(r: Quaternion);
    abstract get data(): LandmarkDTO;
    abstract set data(dto: LandmarkDTO);
}
export declare function makeLandmarkEntity(appObject: AppObject): LandmarkEntity;
//# sourceMappingURL=LandmarkEntity.d.ts.map