import type { CullOnCameraMovePredicate } from './CullOnCameraMovePredicate';
import { MergeId, MergeIdBuilderAlgorithm } from './MergeId';
import { type IBimIfcLoaderElement } from './bim-ifc-loader-element';
import { type BimIfcObject } from './bim-ifc-object';
/**
 * Builder class for creating and optimizing {@link MergeId} instances from IFC loader elements.
 *
 * Each builder instance has a unique ID used as a prefix for generated merge IDs.
 * The builder processes meshes asynchronously, yielding periodically to avoid blocking the main thread.
 */
export declare class MergeIdBuilder {
    readonly _mergeIdAlgorithmFactory: (id: string) => MergeIdBuilderAlgorithm;
    private static _id;
    /** Unique identifier for this builder instance, used as prefix in generated merge IDs. */
    readonly id: number;
    /** Creates a new MergeIdBuilder with a unique auto-incrementing ID. */
    constructor(_mergeIdAlgorithmFactory: (id: string) => MergeIdBuilderAlgorithm);
    /**
     * Processes all meshes from the given loader elements and generates optimized {@link MergeId} instances.
     *
     * Meshes are spatially grouped into grid cells and then hierarchically merged to optimize
     * rendering performance. The operation yields periodically to prevent blocking the main thread.
     *
     * @param options - Configuration options for the merge operation.
     * @param options.loaderElements - The IFC loader elements containing products and meshes to process.
     * @param options.predicate - Filter predicate to determine which IFC products to include.
     * @param options.cullOnCameraMovePredicate - Predicate to determine if a mesh should be culled on camera move.
     * @param options.deadlineMs - Maximum time in milliseconds before yielding to the main thread.
     * @param options.sleepInMs - Duration in milliseconds to sleep when yielding.
     * @returns Promise resolving to an array of optimized {@link MergeId} instances.
     */
    mergeIds({ loaderElements, predicate, deadlineMs, sleepInMs, cullOnCameraMovePredicate }: {
        loaderElements: IBimIfcLoaderElement[];
        predicate: (ifcProduct: BimIfcObject) => unknown;
        cullOnCameraMovePredicate: CullOnCameraMovePredicate;
        deadlineMs: number;
        sleepInMs: number;
    }): Promise<MergeId[]>;
}
//# sourceMappingURL=MergeIdBuilder.d.ts.map