import { AppObject, AppObjectEntity, AppObjectRepo, ParametricLine, Vector2 } from "@vived/core";
import { Transform3D } from "../../Transform3D";
export type OnWorkPlaneChange = () => void;
export declare enum WorkPlaneUnits {
    INCHES = 0,
    METERS = 1,
    FEET = 2
}
export declare enum WorkPlaneShape {
    RECTANGLE = 0,
    CIRCLE = 1,
    UNKNOWN = 2
}
export declare abstract class WorkPlaneEntity extends AppObjectEntity {
    static readonly type = "WorkPlaneEntity";
    abstract readonly transform: Transform3D;
    abstract units: WorkPlaneUnits;
    abstract readonly conversionFactor: number;
    abstract readonly workPlaneShape: WorkPlaneShape;
    abstract showWorkPlane: boolean;
    abstract readonly workPlaneRadius?: number;
    abstract readonly workPlaneSize?: Vector2;
    abstract setWorkPlaneSize(size: Vector2): void;
    abstract setWorkPlaneRadius(radius: number): void;
    abstract pickOnWorkPlane(ray: ParametricLine, unconstrained?: boolean): Vector2 | undefined;
    static get: (appObjects: AppObjectRepo) => WorkPlaneEntity | undefined;
}
export declare function makeWorkPlaneEntity(appObj: AppObject): WorkPlaneEntity;
//# sourceMappingURL=WorkPlaneEntity.d.ts.map