import { Session, IGXE, IGXA, CreateArticleFromArticleNumberParams } from "@intelligentgraphics/igd.productdata";
import { ThreeJS_API } from "@intelligentgraphics/ig.gfx.threejs";
import * as BP3D from "@intelligentgraphics/blueprint3d";
import { Material } from "@intelligentgraphics/ig.gfx.core";
export interface RoomConfiguration {
    floor: IGXE.IArticleConfiguration;
    walls: IGXE.IArticleConfiguration[];
    wallHeight: number;
}
export interface Apply3DParams {
    /**
     * Height in meter
     *
     * @type {number}
     */
    wallHeight?: number;
    /**
     * Thickness in meter
     *
     * @type {number}
     */
    wallThickness?: number;
    configuration?: RoomConfiguration;
    model: BP3D.Model.Model;
    wallFrontMaterial: string;
    wallBackMaterial: string;
    floorMaterial: string;
}
export interface BlueprintRoomContainerEnvironment {
    createWallArticle(params: CreateArticleFromArticleNumberParams): Promise<string>;
    createFloorArticle(params: CreateArticleFromArticleNumberParams): Promise<string>;
    onRoomInserted?(walls: string[]): void;
    onFloorInserted?(comId: string): void;
    onWallInserted?(comId: string): void;
}
export interface BlueprintRoomContainerDefaultConfiguration {
    floor: IGXE.IArticleConfiguration;
    wall: IGXE.IArticleConfiguration;
    wallHeight: number;
}
export interface BlueprintRoomContainerParams {
    session: Session;
    roomCatalogSourceId: string;
    api: ThreeJS_API;
    defaultConfiguration?: BlueprintRoomContainerDefaultConfiguration;
    environment?: BlueprintRoomContainerEnvironment;
    materials?: Record<string, Material>;
}
export declare class BlueprintRoomContainer {
    private readonly session;
    private readonly catalogManager;
    private readonly api;
    private readonly roomCatalogSourceId;
    private readonly environment;
    private readonly defaultConfiguration?;
    private wallImportIndex;
    constructor({ session, roomCatalogSourceId, api, environment, defaultConfiguration, }: BlueprintRoomContainerParams);
    getItemById(id: string): IGXA.IArticleItem;
    getItems(): IGXA.IArticleItem[];
    getRoomConfig(): RoomConfiguration;
    remove3D(): void;
    apply3D({ wallHeight, wallThickness, model, configuration, wallBackMaterial, wallFrontMaterial, floorMaterial, }: Apply3DParams): Promise<void>;
    private handleBPPartImported;
    private getFloorComId;
    private getWallComIds;
    private getInitialConfig;
    private calculateFloorComponentArea;
}
