import { BitbybitOcctModule } from "@bitbybit-dev/occt/bitbybit-dev-occt/bitbybit-dev-occt";
export declare class CacheHelper {
    private readonly occ;
    hashesFromPreviousRun: {};
    usedHashes: {};
    argCache: {};
    constructor(occ: BitbybitOcctModule);
    cleanAllCache(): void;
    cleanCacheForHash(hash: string): void;
    cleanUpCache(): void;
    isOCCTObject(obj: any): boolean;
    /**
     * Checks if an object is a TopoDS_Shape (or subclass).
     * Shapes have ShapeType() method which returns the shape type enum.
     * This is a performant check - just property access + typeof, no function call.
     */
    isShape(obj: any): boolean;
    /**
     * Checks if an object is a non-shape OCCT entity (e.g., document handle, other handles).
     * These are OCCT objects (have $$) but do NOT have ShapeType() method.
     * This distinguishes them from TopoDS_Shape objects.
     */
    isEntityHandle(obj: any): boolean;
    /** Hashes input arguments and checks the cache for that hash.
     * It returns a copy of the cached object if it exists, but will
     * call the `cacheMiss()` callback otherwise. The result will be
     * added to the cache if `GUIState["Cache?"]` is true.
     */
    cacheOp(args: any, cacheMiss: () => any): any;
    /** Returns the cached object if it exists and is valid, or null otherwise. */
    checkCache(hash: string | number): any;
    /** Adds this `shape` to the cache, indexable by `hash`. */
    addToCache(hash: string | number, shape: any): string | number;
    /** This function computes a 32-bit integer hash given a set of `arguments`.
     * If `raw` is true, the raw set of sanitized arguments will be returned instead.
     */
    computeHash(args: any, raw?: boolean): number | string;
    /** This function converts a string to a 32bit integer. */
    stringToHash(str: string): number;
    /** This function returns a version of the `inputArray` without the `objectToRemove`. */
    remove(inputArray: any[], objectToRemove: any): any[];
}
