import { DxfObject } from "../../core/dxf/DxfObject";
/**
 * MergeHelper class is used to merge child objects for a given object
 * @hidden
 */
export declare class DxfUtils {
    static MergeInfo: {
        removedObjects: number;
        mergedMeshes: number;
        mergedLines: number;
        mergedPoints: number;
        mergedUnknownTypeObjects: number;
        elapsedTime: number;
    };
    /**
     * Merges child objects for given object.
     * it tries to merge objects in the same level and with the same parent;
     * @param saveBatchInfo caller can set saveBatchInfo to true, so that s/he can
     * get the object's original data before merged.
     * While this takes some extra space, so, we'd like to add a flag here.
     */
    static merge(object: DxfObject, saveBatchInfo?: boolean): void;
    /**
     * Merges all objects of given object, just leaf children.
     * If objects' material are the same, they can be merged.
     * Better to call mergeInner first then deepMerge for a better performance.
     * return \{ "added": THREE.Object3D[], "removed": THREE.Object3D[] \}
     */
    static deepMerge(objects: DxfObject[], levelObject?: DxfObject | undefined, bRemovedAndAddedAfterMerge?: boolean, bRemoveEmptyObjectsAfterMerge?: boolean, saveBatchInfo?: boolean): {
        added: DxfObject[];
        removed: DxfObject[];
    };
}
