/**
 * @module vim-loader
 */
import { G3d, G3dScene, VimDocument } from 'vim-format';
export declare class ElementNoMapping {
    getElementsFromElementId(id: number): any;
    hasElement(element: number): boolean;
    getElements(): any[];
    getInstancesFromElement(element: number): number[] | undefined;
    getElementFromInstance(instance: number): any;
    getElementId(element: number): bigint | undefined;
}
export declare class ElementMapping {
    private _instanceToElement;
    private _instanceMeshes;
    private _elementToInstances;
    private _elementIds;
    private _elementIdToElements;
    constructor(instances: number[], instanceToElement: number[], elementIds: BigInt64Array, instanceMeshes?: Int32Array);
    static fromG3d(g3d: G3d, bim: VimDocument): Promise<ElementMapping>;
    /**
     * Returns element indices associated with element id
     * @param id element id
     */
    getElementsFromElementId(id: number | bigint): number[];
    /**
     * Returns true if element exists in the vim.
     */
    hasElement(element: number): boolean;
    hasMesh(element: number): boolean;
    /**
     * Returns all element indices of the vim
     */
    getElements(): ArrayIterator<number>;
    /**
     * Returns instance indices associated with vim element index
     * @param element vim element index
     */
    getInstancesFromElement(element: number): number[] | undefined;
    /**
     * Returns the element index associated with the g3d instance index.
     * @param instance g3d instance index
     * @returns element index or undefined if not found
     */
    getElementFromInstance(instance: number): number;
    /**
     * Retrieves the element ID corresponding to the provided element index.
     * @param {number} element The element index.
     * @returns {bigint} The element ID associated with the given index.
     */
    getElementId(element: number): bigint;
    /**
     * Returns a map where data[i] -> i
     */
    private static invertArray;
    /**
     * Returns a map where data[i] -> i
     */
    private static invertMap;
}
export declare class ElementMapping2 {
    private _instanceToElement;
    private _elementToInstances;
    private _instanceToElementId;
    constructor(scene: G3dScene);
    /**
     * Retrieves element indices associated with the given element ID.
     * @param {number | bigint} id The element ID.
     * @returns {number[] | undefined} An array of element indices associated with the element ID,
     * or undefined if no elements are associated with the ID.
     */
    getElementsFromElementId(id: number | bigint): any;
    /**
     * Checks if the element exists in the vim.
     * @param {number} element The element to check for existence.
     * @returns {boolean} True if the element exists in the vim, otherwise false.
     */
    hasElement(element: number): boolean;
    /**
     * Checks if the element has a mesh in the vim.
     * @param {number} element The element to check for mesh existence.
     * @returns {boolean} True if the element has a mesh in the vim, otherwise false.
     */
    hasMesh(element: number): boolean;
    /**
     * Retrieves all element indices of the vim.
     * @returns {IterableIterator<number>} An iterator of all element indices in the vim.
     */
    getElements(): MapIterator<number>;
    /**
     * Retrieves instance indices associated with the specified vim element index.
     * @param {number} element The vim element index.
     * @returns {number[] | undefined} An array of instance indices associated with the vim element index,
     * or undefined if the element does not exist in the vim.
     */
    getInstancesFromElement(element: number): number[] | undefined;
    /**
     * Retrieves the element index associated with the g3d instance index.
     * @param {number} instance The g3d instance index.
     * @returns {number | undefined} The element index associated with the instance, or undefined if not found.
     */
    getElementFromInstance(instance: number): number;
    /**
     * Retrieves the element ID associated with the specified element index.
     * @param {number} element The element index.
     * @returns {bigint | undefined} The element ID associated with the element index, or undefined if not found.
     */
    getElementId(element: number): bigint;
    /**
     * Returns a map where data[i] -> i
     */
    private static invertMap;
}
