import { FastTransform } from '../math/FastTransform';
import { Writeable } from '../Types';
import { BoundingInfo, DeepImmutable, Matrix, Vector3 } from './babylonjs-import';
import { BimChangeIfc } from './bim-api-client';
import { BimProductMeshDescriptor, BimVertexData } from './bim-format-types';
import type { FlatSegment3, VertexData } from '@twinfinity/geometry';
import { BimProductMesh } from './BimProductMesh';
import { IBimIfcLoaderElement } from './bim-ifc-loader-element';
import { BimIfcMesh } from './bim-ifc-mesh';
import { BimIfcObject } from './bim-ifc-object';
import { BimIfcStyle } from './bim-ifc-style';
import { IfcMaterialHighlightIndex } from './CustomBabylonMaterials/IfcMaterial';
import { RgbaComponent } from './rgba';
import { MergedIfcProductMeshesRenderInfo } from './MergedIfcProductMeshesRenderInfo';
import { MergeId } from './MergeId';
/**
 * Represents the mesh of an IFC product. An IFC product may
 * consist of `0..N` meshes. A door is often represented as two meshes: a
 * rectangle and a door handle.
 */
export declare class IfcProductMesh implements BimProductMesh {
    readonly ifcProduct: BimIfcObject;
    readonly mi: number;
    readonly r: number;
    readonly si: number;
    readonly wt: number;
    private static readonly _tmp;
    readonly colorTexturePixelIndex: number;
    /** Determine which babylonjs mesh this ifc product mesh shall belong to. */
    mergeId: string;
    /** @inheritDoc */
    cullingDistance: number;
    /** @inheritDoc */
    edges?: FlatSegment3[];
    /** Center of the cube, this mesh will be a part of, in IFC space (not worldspace) */
    centerOfParentIfcCube?: DeepImmutable<Vector3>;
    _renderPropertyInfo?: MergedIfcProductMeshesRenderInfo;
    private readonly _loaderElement;
    constructor(ifcProduct: BimIfcObject, mi: number, r: number, si: number, wt: number);
    static from(o: BimIfcObject, dto: BimProductMesh): BimProductMesh;
    get vertexCount(): number;
    get indexCount(): number;
    getVertexData(): Promise<VertexData>;
    getEdges(): Promise<FlatSegment3[]>;
    get isOnGpu(): boolean;
    get visible(): boolean;
    set visible(visible: boolean);
    get outline(): boolean;
    set outline(value: boolean);
    get highlight(): IfcMaterialHighlightIndex;
    set highlight(value: IfcMaterialHighlightIndex);
    get ignoreClipPlanes(): boolean;
    set ignoreClipPlanes(value: boolean);
    get depthWriteIgnoresVisibility(): boolean;
    set depthWriteIgnoresVisibility(value: boolean);
    get ghostOutline(): boolean;
    set ghostOutline(enabled: boolean);
    get descriptor(): BimProductMeshDescriptor;
    get style(): BimIfcStyle;
    get ifc(): BimChangeIfc;
    get loaderElement(): IBimIfcLoaderElement;
    get vertexData(): BimVertexData;
    private get renderProperties();
    aabb(min: Vector3, max: Vector3, noCache?: boolean): void;
    _clearMergeId(): boolean;
    _setMergeId(mergeId: MergeId): boolean;
    boundingInfo(bI?: BoundingInfo, noCache?: boolean): BoundingInfo;
    defaultColor(): boolean;
    transform(noCache?: boolean): Matrix;
    fastTransform(noCache?: boolean): FastTransform;
    mesh(noCache?: boolean): BimIfcMesh;
    copyColorTo(dst: Writeable<ArrayLike<number>>, dstOffset?: number): void;
    setColor(color: ArrayLike<number>): boolean;
    getColorComponent(colorComponent: RgbaComponent): number;
    private get materials();
}
//# sourceMappingURL=IfcProductMesh.d.ts.map