import * as Core from "@intelligentgraphics/ig.gfx.core";
import * as THREE from "@intelligentgraphics/three";
import { BlueprintRoomContainer } from "./Container";
export interface IHoleInfo {
    causedById: string;
    position: THREE.Vector3;
    halfSize: THREE.Vector3;
}
export declare class HolePuncher {
    private readonly roomContainer;
    private readonly api;
    constructor(roomContainer: BlueprintRoomContainer, api: Core._API);
    /**
     * called in move start: remove holes of currently selected articles, then rerender
     */
    fillHolesOfSelected(): void;
    /**
     * Adds a new hole for every explicitId (or selected) into nearest wall (if applicable) and renders only the new changed walls
     */
    punchHolesIntoNearestWall(componentIds: string[]): void;
    /**
     *
     * @param wallComponentId
     * @param wallItems
     *
     * Often called like (w.name, w.userData.punchedHoles) for redraw
     */
    recreateWall(wallComponentId: string, wallItems: {
        position: THREE.Vector3;
        halfSize: THREE.Vector3;
    }[]): void;
    private toVec3;
    /** Gets the distance of two points.
     * @param x1 X part of first point.
     * @param y1 Y part of first point.
     * @param x2 X part of second point.
     * @param y2 Y part of second point.
     * @returns The distance.
     */
    private calculateDistanceBetweenPoints;
    private makeWallX;
}
