import Flatbush from 'flatbush';
import { Box3, Vector3 } from "three";
import { CurveMap } from "../../../Geometry/CurveMap";
import { Contour } from "../../Contour";
import { Database } from '../../Database';
import { Curve } from "../../Entity/Curve";
import { Polyline } from "../../Entity/Polyline";
import { RoomWallBase } from "../Entity/Wall/RoomWallBase";
import { RoomWallExtendAndBreak } from "./RoomWallExtendAndBreak";
/**
 * 户型分析服务:
 * 1.自动延伸墙
 * 2.合理的构建墙
 * 3.自动分析地板
 *
 * 墙体被分裂后合并(join line)
 *
 * TODO:
 * 删除重复的墙(例如 2个rec wall)
 * 增量更新 diff walls(始作俑者 1) -> dep walls(需要更新 2) ->dep's dep walls(需要被依赖 3)    +[可能被影响到的wall 2(比如被切割的墙) (依赖墙 3)]
 *  ->1.用盒子搜索范围依赖(盒子1级依赖)
 *  ->2.用盒子扩大搜索范围依赖(盒子2级依赖)
 *  ->正确的分析1级依赖 2级依赖 (或者不要分析? 直接用盒子来?)
 *  ->分析
 *  ->更新1级 2级 的墙
 */
export declare class RoomWallParse {
    private _ExtendsWalls;
    private _UpdateDb;
    private _IsCacheWallNodePoints;
    static _CacheWallNodePoints: Vector3[];
    static _CacheWallMaps: [RoomWallExtendAndBreak, CurveMap][];
    static _CacheCurveWallMaps: Map<Curve, RoomWallBase>;
    static _CacheRoofs: Polyline[];
    /**
     * @param [_ExtendsWalls=true] 更新墙体,在开图时不更新图纸
     * @param [_UpdateDb] 更新的图纸(新绘制Region)
     * @param [_IsCacheWallNodePoints] 需要把节点缓存下来?
     */
    constructor(_ExtendsWalls: boolean, _UpdateDb: Database, _IsCacheWallNodePoints: boolean);
    /**
     * @param walls 需要解析的墙体列表
     * @param changeWalls 更新的墙体列表(如果提供 增量模式)
     */
    Parse(walls: RoomWallBase[], changeWalls?: RoomWallBase[]): void;
    private PraseWallsFromSameFloor;
    fb: Flatbush;
    boxs: Box3[];
    GenFB(trimContours: Contour[]): void;
}
//# sourceMappingURL=RoomWallParse.d.ts.map