import { App } from '../core/App';
import { Floor } from './Floor';
import { Placement } from './placement';
import { TransformNode } from '../runtime';
import { Entity } from './Entity';
import { Point3D } from '../misc/Point3D';
import { Thing } from './Thing';
/**
 * 自定义建筑
 */
export declare class Building extends Entity {
    /**
     * 鼠标移入楼层链接的颜色
     */
    static floorLinkColor: string;
    /**
     * 鼠标移入楼层链接的透明度
     */
    static floorLinkAlpha: number;
    /**
     * 是否总是显示建筑结构
     */
    alwaysShowStructure: boolean;
    /**
     * 获取楼层是否已经展开
     */
    expanded: boolean;
    /**
     * 进入建筑是否显示外立面和楼层链接（仅在存在楼层链接时生效）
     */
    showFacadesAndLinks: boolean;
    /**
     * 合并网格的父节点
     */
    mergedMeshNode: TransformNode;
    /**
     * 楼层展开偏移量
     */
    expandOffset: Point3D;
    private _tweenExpand;
    /**
     * 实例化一个建筑对象
     * @param app 应用
     */
    constructor(app: App);
    /**
     * 注册默认事件
     */
    registerDefaultEvents(): void;
    /**
     * 获取外立面
     */
    get facades(): Placement[];
    /**
     * 获取楼层链接外立面
     */
    get floorLinks(): Thing[];
    /**
     * 获取楼层
     */
    get floors(): Floor[];
    /**
     * 获取当前是否正在执行楼层动画
     */
    get expanding(): boolean;
    /**
     * 是否有外立面
     */
    hasFacades(): boolean;
    /**
     * 获取实例类型
     */
    get instanceClass(): any;
    /**
     * 展开楼层
     * @param time 时间，默认值500，单位毫秒
     * @param complete 完成时的回调函数
     */
    expandFloors(time?: number, complete?: () => void): void;
    /**
     * 合并楼层
     * @param time 时间，默认值500，单位毫秒
     * @param complete 完成时的回调函数
     */
    unexpandFloors(time?: number, complete?: () => void): void;
    /**
     * 序列化成JSON对象
     */
    toJson(): any;
    /**
     * 从JSON对象反序列化（仅生成层级树）
     * @param {*} json JSON对象
     */
    fromJson(json: any): void;
    /**
     * 创建（仅当前层级可见对象
     */
    build(force?: boolean): Promise<void>;
    /**
     * 设置子节点列表
     */
    setSubNodes(): void;
    /**
     * 拆毁（删掉网格，仅保留层级树）
     */
    unbuild(): void;
    /**
     * 释放
     */
    dispose(): void;
    /**
     * 创建合并的网格（在园区层级时调用）
     */
    buildMergedMesh(): Promise<void>;
}
