import { EntityGroupType } from '../../EntityGroupCollection';
import { CadGeometryType, OpenCascadeInstance, TopoDS_Edge, TopoDS_Shape, TopoDS_Vertex, TopoDS_Wire } from './CadCommon';
import { CadObject } from './CadObject';
type YieldedEntity = TopoDS_Vertex | TopoDS_Edge | TopoDS_Wire;
type EntityCallback<E extends YieldedEntity> = (entity: E, index: number) => void;
type TraverseEntitiesFunction<E extends YieldedEntity> = (oc: OpenCascadeInstance, shape: TopoDS_Shape, callback: EntityCallback<E>) => void;
interface TraverseOptions<E extends YieldedEntity> {
    groupName: string;
    groupType: EntityGroupType;
    object: CadObject<CadGeometryType>;
    shape: TopoDS_Shape;
    traverseFunction: TraverseEntitiesFunction<E>;
    onEntityTraversed: EntityCallback<E>;
    onEntityNotInGroupTraversed?: EntityCallback<E>;
}
export declare class CadEntityGroupCollection {
    static traverseEntitiesInGroup<E extends YieldedEntity>(options: TraverseOptions<E>): void;
}
export {};
