import { NormalOrGLBufferAttributes, Float32BufferAttribute, BufferGeometry, NormalBufferAttributes } from 'three';

type SubsetIndices = ArrayLike<number> & Iterable<number>;
type SubsetFeatureInfo = {
    id: number;
    vertCount: number;
    indices: SubsetIndices;
};
declare class SubsetGeometry<Attributes extends NormalOrGLBufferAttributes & {
    position: Float32BufferAttribute;
}> extends BufferGeometry<Attributes> {
    private _featureInfos;
    private _featureMap;
    private _state;
    private _ids;
    constructor(attributes: Attributes, featureInfos: SubsetFeatureInfo[]);
    addId(id: number): void;
    removeId(id: number): void;
    addAllIds(): void;
    clearIds(): void;
    hasId(id: number): boolean;
    getIds(): number[];
    copy(source: BufferGeometry<NormalBufferAttributes>): this;
    clone(): this;
}

export { SubsetGeometry as S, type SubsetFeatureInfo as a };
