import { BimCoreApi } from '../BimCoreApi';
import { Matrix, Plane } from '../loader/babylonjs-import';
import { Vertex2, Vertex3 } from '../math';
import { BimPointBase } from './BimPointBase';
import { CoordinateTracker, TrackCoordinate3D } from './CoordinateTracker';
export interface HtmlPointParent<T extends TrackCoordinate3D> {
    /** @hidden */
    readonly _pointTracker: CoordinateTracker<T>;
    worldMatrix: () => Matrix;
    scale: (point: Html2CanvasPoint, retainAspectRatio?: boolean) => void;
    rotate: (point: Html2CanvasPoint) => void;
    translate: () => void;
    centerPoint: () => Html2CanvasPoint;
}
/**
 * Represents result of a {@link DynamicPolygonPoint} move operation.
 */
export declare enum PointMoveResult {
    /** Result is unknown */
    Unknown = 0,
    /** Points were moved successfully */
    Success = 1,
    /** Points were not moved because the polygon would have become complex */
    ComplexPolygon = 2,
    /** Could not move point because the ray (from mouse coordinate) did not intersect the polygon plane. */
    RayIntersectionFailed = 3
}
export declare class Html2CanvasPoint extends BimPointBase {
    protected readonly _api: BimCoreApi;
    readonly plane: Plane;
    private static readonly _tmp;
    /** When `true` then {@link DynamicPolygon.onPointTrackableScreen} will trigger for this instance. Otherwise it will not */
    isEnabled: boolean;
    _parent: HtmlPointParent<Html2CanvasPoint>;
    protected recalculateOrGetWorldCoords(force?: boolean): Vertex3;
    protected recalculateOrGetLocalCoords(force?: boolean): Vertex3;
    /**
     *
     * @param _api {@link BimCoreApi} API.
     * @param plane [Plane](https://doc.babylonjs.com/typedoc/classes/babylon.plane) that this point lies on.
     */
    constructor(_api: BimCoreApi, plane: Plane);
    /**
     * Attempt to move a point to a new location on [Plane](https://doc.babylonjs.com/typedoc/classes/babylon.plane).
     * To find the location, a ray is shot from camera through `canvasCoordinate`
     * and then an intersection test is performed. If the ray intersects Plane, the point is moved to the coordinates
     * of the intersection. Otherwise nothing happens.
     * The point is assigned the same x,y,z values
     * as the coordinate where the ray intersects the plane.
     * @returns a {@link DynamicPolygonPointMoveResult}.
     */
    move(canvasCoordinate: Vertex2): PointMoveResult;
    scale(retainAspectRatio?: boolean): void;
    rotate(): void;
    tranlate(): void;
}
//# sourceMappingURL=Html2CanvasPoint.d.ts.map