import { AppObject, AppObjectEntity, AppObjectRepo, Quaternion, QuaternionDTO, RangedNumber, Vector3, Vector3DTO } from "@vived/core";
import { Hideable } from "../../Hideable/Entities/Hideable";
import { LabelEntity } from "../../Label/Entities/LabelEntity";
import { OverlayColor } from "../../OverlayColor/Entities/OverlayColor";
import { Selectable } from "../../Selection/Entities/Selectable";
import { Transform3D } from "../../Transform3D/Entities/Transform3D";
import { CalloutRepo } from "./CalloutRepo";
export declare const CALLOUT_MINIMUM_SIZE: number;
export declare const CALLOUT_MAXIMUM_SIZE: number;
export type CalloutOffsetDirection = "LEFT" | "RIGHT" | "UP" | "DOWN";
export interface CalloutDTO {
    id: string;
    rootPosition: Vector3DTO;
    rootRotation: QuaternionDTO;
    labelPosition: Vector3DTO;
    size: number;
    parentID: string;
    label: string;
    defaultLabel: string;
    color: string;
}
export declare abstract class CalloutEntity extends AppObjectEntity {
    static readonly type = "CALLOUT";
    static get(appObj: AppObject): CalloutEntity | undefined;
    static getById(id: string, appObjects: AppObjectRepo): CalloutEntity | undefined;
    abstract get id(): string;
    abstract inRepo?: CalloutRepo;
    abstract readonly label: LabelEntity;
    abstract readonly rootTransform: Transform3D;
    abstract readonly labelTransform: Transform3D;
    abstract readonly hideable: Hideable;
    abstract readonly selectable: Selectable;
    abstract readonly overlayColor: OverlayColor;
    abstract readonly rangedSize: RangedNumber;
    abstract get size(): number;
    abstract set size(val: number);
    abstract get rootPosition(): Vector3;
    abstract set rootPosition(p: Vector3);
    abstract get rootRotation(): Quaternion;
    abstract set rootRotation(r: Quaternion);
    abstract get labelPosition(): Vector3;
    abstract set labelPosition(p: Vector3);
    abstract get labelRotation(): Quaternion;
    abstract set labelRotation(r: Quaternion);
    abstract get data(): CalloutDTO;
    abstract set data(dto: CalloutDTO);
    abstract get offsetDirection(): CalloutOffsetDirection;
}
export declare function makeCalloutEntity(appObject: AppObject): CalloutEntity;
//# sourceMappingURL=CalloutEntity.d.ts.map