import { Plane, Vector3 } from '@vertexvis/geometry';
/**
 * A measurement result that represents the closets point between two entities.
 */
export interface MinimumDistanceMeasurementResult {
    /**
     * The type.
     */
    type: 'minimum-distance';
    /**
     * The distance between two points.
     */
    distance: number;
    /**
     * The closest point of the first entity, in world coordinates.
     */
    point1: Vector3.Vector3;
    /**
     * The closest point of the second entity, in world coordinates.
     */
    point2: Vector3.Vector3;
}
/**
 * A measurement result that represents the angle between two planar surfaces.
 */
export interface PlanarAngleMeasurementResult {
    /**
     * The type.
     */
    type: 'planar-angle';
    /**
     * The angle between two planes, in radians.
     */
    angle: number;
    /**
     * The plane of the first entity.
     */
    plane1: Plane.Plane;
    /**
     * The plane of the second entity.
     */
    plane2: Plane.Plane;
}
/**
 * A measurement result that represents the distance between two planar
 * surfaces.
 */
export interface PlanarDistanceMeasurementResult {
    /**
     * The type.
     */
    type: 'planar-distance';
    /**
     * The distance between the two planes.
     */
    distance: number;
    /**
     * The plane of the first entity.
     */
    plane1: Plane.Plane;
    /**
     * The plane of the second entity.
     */
    plane2: Plane.Plane;
}
/**
 * A measurement result that represents the surface area of one or more faces.
 */
export interface SurfaceAreaMeasurementResult {
    /**
     * The type.
     */
    type: 'surface-area';
    /**
     * The total area of selected face or faces.
     */
    area: number;
}
/**
 * A type representing the possible measurement results.
 */
export type MeasurementResult = MinimumDistanceMeasurementResult | PlanarAngleMeasurementResult | PlanarDistanceMeasurementResult | SurfaceAreaMeasurementResult;
/**
 * Constructs a new measurement result from the given points.
 *
 * @param point1 A starting point.
 * @param point2 An ending point.
 * @returns A new measurement result.
 */
export declare function makeMinimumDistanceResult(point1: Vector3.Vector3, point2: Vector3.Vector3): MinimumDistanceMeasurementResult;
