import { Direction, MathTypes, WorldCoordinates } from "@intelligentgraphics/ig.gfx.core";
/** Type for the directions of a wall. Contains the Vectors representing the bounding box of the wall. */
export declare type WallDirections = {
    length: Direction;
    height: Direction;
    width: Direction;
};
/** Type for the faces of a wall (front and back). */
export declare type WallFaces = {
    front: MathTypes.PlaneSegment;
    back: MathTypes.PlaneSegment;
};
/** Class containing static methods for interaction with walls. */
export declare class WallUtilities {
    /**
     * Returns the directions of the component.
     * @param wallId
     * @returns WallDirections
     */
    static directions(wallId: string): WallDirections;
    /**
     * Find the wall closest to the component
     * @param componentId
     * @returns {string}
     */
    static closestWall(componentId: string, desiredTransformation?: MathTypes.Transformation): string;
    /**
     * Find the distance to the closest wall
     * @param componentId
     * @returns {any}
     */
    static closestWallDistance(componentId: string): number;
    /**
     * The distance of the point to the wall.
     * Measure the distance of the point to the front and back plane and decide for the shorter distance.
     * @param point
     * @param wallId
     * @returns {number}
     */
    static distanceToWall(point: WorldCoordinates, wallId: string): number;
    /**
     * The shortest distance one of the points has to the wall
     * @param points
     * @param wallId
     * @returns {number}
     */
    static distanceOfPointsToWall(points: WorldCoordinates[], wallId: string): number;
    /**
     * The average distance all of the points have to the wall
     * @param points
     * @param wallId
     * @returns {number}
     */
    static distanceAverageOfPointsToWall(points: WorldCoordinates[], wallId: string): number;
    /**
     * Returns the front and back face of the wall.
     * @param wallId
     * @returns WallFaces
     */
    static faces(wallId: string): WallFaces;
    /**
     * Create a plane segment from a front/back mesh
     * @param mesh
     * @returns {MathTypes.PlaneSegment}
     */
    private static faceFromMesh;
    /**
     * Determine if a point is close to a wall. I.e. if the point resides within (or close to) the bounding box of the wall
     * @param point
     * @param wallId
     * @param maxOutsideDistance    (optional) number of world units describing closeness,
     *                                e.g. 1.0 -> points less then 1 m from the wall are considered close
     * @returns {boolean}
     */
    static isPointCloseToWall(point: WorldCoordinates, wallId: string): boolean;
    static isPointCloseToWallFront(point: WorldCoordinates, wallId: string, maxDistance?: number): boolean;
}
