/** @internal NOTE: Internal APIs. Subject to change. Use of these APIs in production applications is not supported. */
import { BimVertexData, BimProductMeshDescriptor } from './bim-format-types';
import { BimIfcIndex } from './BimIfcIndex';
import { BimGeometricFeaturesRepository } from './bim-geometric-features-repository';
import { BimChangeIfc } from './bim-api-client';
import { BimVertexDataRepository, WriteBatchResult } from './bim-vertex-data-repository';
import { BimTransformsRepository } from './bim-transforms-repository';
import { BimIfcObject, BimIfcSpace, BimIfcBuildingStorey } from './bim-ifc-object';
import { Discipline } from './discipline';
import { Materials } from './materials';
import { BimIfcStyle } from './bim-ifc-style';
import { BimIfcClass } from './bim-ifc-class';
import { BimIfcLoaderElementParent } from './bim-ifc-loader';
import { BimApiIfcObjectsLoadOptions } from '../BimApiLoadOptions';
import { BimCoreApiClient } from './client/BimCoreApiClient';
import { IBimIfcLoaderElement, type GeometryFormat } from './bim-ifc-loader-element';
import { FastTransform } from '../math/FastTransform';
import { GeometryArrayOffset, GeometryArrays } from './GeometryBuffer';
import { Matrix, Vector3 } from './babylonjs-maths-import';
import { BimTypeObjectRepository } from './BimTypeObjectRepository';
import { Failure } from '../fail';
import { BimProductMesh } from './BimProductMesh';
export type T8BimIfcLoaderElementCreateFailure = Failure<{
    httpStatus: number;
    reason: string;
} & {
    ifc: Pick<BimChangeIfc, 'id' | 'version' | 'url'>;
}>;
export declare const NAME_NOT_SET_SENTINEL = "undefined";
export declare class T8BimIfcLoaderElement implements IBimIfcLoaderElement {
    readonly ifcHttpResource: BimChangeIfc;
    private readonly _vertexDataRepository;
    readonly transformsRepository: BimTransformsRepository;
    readonly typeObjectRepository: BimTypeObjectRepository;
    readonly project: BimIfcObject;
    readonly spaces: BimIfcSpace[];
    readonly floors: BimIfcBuildingStorey[];
    readonly products: BimIfcObject[];
    readonly discipline: Discipline;
    readonly styles: BimIfcStyle[];
    readonly classes: BimIfcClass[];
    readonly ifcName: string;
    readonly materials: Materials;
    readonly loadOptions?: BimApiIfcObjectsLoadOptions;
    readonly transform?: Matrix;
    readonly loader: BimIfcLoaderElementParent;
    readonly index: BimIfcIndex;
    private _t8gi;
    private _numberOfVertices;
    private _numberOfIndices;
    private _meshCount;
    private constructor();
    private deleteLeafNodesWithNoGeometry;
    static create(bimApi: BimCoreApiClient, materials: Materials, vertexDataRepository: BimVertexDataRepository, loader: BimIfcLoaderElementParent, ifcHttpResource: BimChangeIfc, loadOptions?: BimApiIfcObjectsLoadOptions, transform?: Matrix): Promise<T8BimIfcLoaderElement | T8BimIfcLoaderElementCreateFailure>;
    get ifc(): BimChangeIfc;
    get ifcUrl(): URL;
    get numberOfVertices(): number;
    get numberOfIndices(): number;
    get numberOfTriangles(): number;
    get meshCount(): number;
    get ifcProductsWithGeometryCount(): number;
    get indexUrl(): URL | undefined;
    get geometryUrl(): URL | undefined;
    get geometryFormat(): GeometryFormat;
    get propertiesUrl(): URL | undefined;
    get geometricFeaturesUrl(): URL | undefined;
    get hasBatchSupport(): boolean;
    get wasmMemoryUsage(): {
        used: number;
        capacity: number;
        allocated: number;
        outputBuffers: number;
    };
    ensureVertexDataLoaded(): Promise<boolean>;
    getVertexData(productMeshDescriptor: BimProductMeshDescriptor): BimVertexData;
    writeVertexData(ifcProductMesh: BimProductMesh, transform: FastTransform, destination: GeometryArrays, offset: GeometryArrayOffset, aabb: {
        min: Vector3;
        max: Vector3;
    }, options: {
        includeNormals?: boolean;
    }): {
        vertexCount: number;
        indexCount: number;
    };
    writeBatch(meshes: BimProductMesh[], destination: GeometryArrays, offset: GeometryArrayOffset): WriteBatchResult | undefined;
    loadPropertySets(): Promise<boolean>;
    get geometricFeaturesRepository(): BimGeometricFeaturesRepository;
    private readonly _geometricFeaturesRepository;
    private _geometricFeaturesPromise;
    loadGeometricFeatures(): Promise<boolean>;
    private doLoadGeometricFeatures;
    tryCreateOrExtendAABBFromRegions(min: Vector3, max: Vector3, o?: {
        onlyMostPopulatedRegions?: boolean;
    }): boolean;
    private parseT8CMAndCreateObjects;
    private assignParentAndFloor;
    private createT8BimIfcObject;
    private populateProperties;
    private convertT8PropertySetsToType;
    private getOrAddClassIndex;
    private processTransforms;
    private convertIfcBboxToBabylonToRef;
}
//# sourceMappingURL=T8BimIfcLoaderElement.d.ts.map