import { App } from '../core/App';
import { Thing } from './Thing';
import { Wall } from './Wall';
import { DoorWindowDirection } from './DoorWindowDirection';
import { Point3D } from '../misc/Point3D';
import { Point2D } from '../misc/Point2D';
/**
 * 门窗
 */
export declare class DoorWindow extends Thing {
    private _isOpen;
    /**
     * 是否是窗户，默认false表示门
     */
    isWindow: boolean;
    /**
     * 实例化一个门窗对象
     * @param app 应用
     */
    constructor(app: App);
    /**
     * 获取或设置打开状态
     */
    get isOpen(): boolean;
    set isOpen(value: boolean);
    /**
     * 获取二维边界（用于判断门窗是否在水平方向越界）
     */
    get bound2D(): Point2D;
    /**
     * 获取或设置左边距（到开始墙点的距离）
     */
    left: number;
    /**
     * 判断给定的左边距在指定墙体是否有效
     * @param left 左边距
     * @param parent 墙体
     */
    isLeftEnabled(left: number, parent: Wall): boolean;
    /**
     * 左边距转换成坐标，仅在build中使用
     */
    leftToPosition(): Point3D;
    /**
     * 获取实例类型
     */
    get instanceClass(): any;
    /**
     * 获取或设置朝向，取值0、1、2、3
     */
    get direction(): DoorWindowDirection;
    set direction(value: DoorWindowDirection);
    /**
     * 获取或设置位置
     */
    get position(): Point3D;
    set position(value: Point3D);
    /**
     * 获取或设置底边距（离地高度）
     */
    get bottom(): number;
    set bottom(value: number);
    /**
     * 序列化成JSON对象
     */
    toJson(): any;
    /**
     * 从JSON对象反序列化（仅生成层级树）
     * @param json JSON对象
     */
    fromJson(json: any): void;
    /**
     * 创建（仅当前层级可见对象）
     * @param {boolean} force 是否强制
     */
    build(force?: boolean): Promise<void>;
}
