import { App } from '../core/App';
import { Corner } from './Corner';
import { Entity } from './Entity';
import { MeshFaceData } from './MeshFaceData';
import { Point2D } from '../misc';
import { Placement } from '..';
/**
 * 房间
 */
export declare class Room extends Entity {
    /**
     * 默认高度
     */
    static defaultHeight: number;
    /**
     * 默认瓷砖大小
     */
    static defaultBlockSize: number[];
    /**
     * 地板贴图编号
     */
    floorTextureId: string;
    private _floorHeight;
    private _roofHeight;
    private _ceilingHeight;
    /**
     * 地板网格数据
     */
    floorMeshData: MeshFaceData;
    /**
     * 天花板贴图编号
     */
    ceilingTextureId: string;
    /**
     * 天花板网格数据
     */
    ceilingMeshData: MeshFaceData;
    /**
     * 屋顶贴图编号
     */
    roofTextureId: string;
    /**
     * 屋顶网格数据
     */
    roofMeshData: MeshFaceData;
    /**
     * 获取墙角列表
     */
    corners: Corner[];
    /**
     * 获取洞列表
     */
    holes: Corner[][];
    private _floorBlockSize;
    private _ceilingBlockSize;
    private _roofBlockSize;
    private _showFloor;
    private _showCeiling;
    private _showRoof;
    private _floorOpacity;
    /**
     * 原始顶点
     */
    private _positions;
    /**
     * 原始UV
     */
    private _uvs;
    /**
     * 实例化一个房间对象
     * @param app 应用
     */
    constructor(app: App);
    /**
     * 获取实例类型
     */
    get instanceClass(): any;
    /**
     * 获取或设置显示地板
     */
    get showFloor(): boolean;
    set showFloor(value: boolean);
    /**
     * 获取或设置显示天花板
     */
    get showCeiling(): boolean;
    set showCeiling(value: boolean);
    /**
     * 获取或设置显示顶部
     */
    get showRoof(): boolean;
    set showRoof(value: boolean);
    /**
     * 获取或设置地板块大小
     */
    get floorBlockSize(): number[];
    set floorBlockSize(value: number[]);
    /**
     * 获取或设置贴图长度
     */
    get textureWidth(): number;
    set textureWidth(value: number);
    /**
     * 获取或设置贴图宽度
     */
    get textureHeight(): number;
    set textureHeight(value: number);
    /**
     * 获取或设置离地高度
     */
    get floorHeight(): number;
    set floorHeight(value: number);
    /**
     * 获取或设置地板透明度
     */
    get floorOpacity(): number;
    set floorOpacity(value: number);
    /**
     * 获取或设置天花板块大小
     */
    get ceilingBlockSize(): number[];
    set ceilingBlockSize(value: number[]);
    /**
     * 获取或设置屋顶块大小
     */
    get roofBlockSize(): number[];
    set roofBlockSize(value: number[]);
    /**
     * 判断点是否在房间内
     * @param point 二维点
     */
    isPointIn(point: Point2D): boolean;
    /**
     * 获取房间内部的摆件
     */
    get innerPlacements(): Placement[];
    /**
     * 获取面积
     */
    getArea(): number;
    /**
     * 序列化成JSON对象
     */
    toJson(): any;
    /**
     * 从JSON对象反序列化（仅生成层级树）
     * @param json JSON对象
     */
    fromJson(json: any): void;
    /**
     * 创建（仅当前层级可见对象）
     * @param {boolean} force 是否强制
     */
    build(force?: boolean): Promise<void>;
    /**
     * 拆毁（删掉网格，仅保留层级树）
     */
    unbuild(): void;
    /**
     * 释放
     */
    dispose(): void;
    /**
     * 计算包围盒
     */
    computeBoundingInfo(): void;
}
