import { HSMLEntity, SWID } from "../../hsml-types";
import { Matrix } from "../../index";
import { ThinInstancedIndexedMesh } from "../../types";
import { BidirectionalMap } from "../../utils/utils.ts";
export declare class InstancedMeshImpl<T extends HSMLEntity> {
    mesh: ThinInstancedIndexedMesh;
    getMatrixImpl: (entity: T) => Matrix;
    pick: (swid: SWID[]) => void;
    private selectedEntitiesDeltaMatrix?;
    private name?;
    indexMap: BidirectionalMap<string, number>;
    freeIndicies: number[];
    currentIndex: number;
    pickable: boolean;
    private fadeBehavior;
    constructor(mesh: ThinInstancedIndexedMesh, getMatrixImpl: (entity: T) => Matrix, pick: (swid: SWID[]) => void, selectedEntitiesDeltaMatrix?: Matrix | undefined, name?: string | undefined);
    setPickable: (pickable: boolean) => void;
    add: (entities: T[]) => void;
    remove: (entities: T[]) => void;
    fadeInMesh: (duration: number) => void;
}
