import { ICloneable, IEquatable } from '@devexpress/utils/lib/types'; export interface IHashBasedCacheTypeCore extends IEquatable { getHashCode(): number; } export interface IHashBasedCacheType extends IHashBasedCacheTypeCore, ICloneable { } export type FromJsonConverterType = (obj: any) => T; export declare class HashBasedCacheCore> { protected hashtable: Record; protected numElements: number; get count(): number; constructor(); clear(): void; getItem(item: T): T; forEach(callback: (item: T) => void): void; findItemByPredicate(predicate: (item: T) => boolean): T; protected processNewItem(_item: T): void; isExist(item: T): boolean; DEBUG_MAX_CELL_LENGTH(): number; removeItems(shouldRemove: (item: T) => boolean): void; private addItemInternal; } export declare abstract class HashBasedCache> extends HashBasedCacheCore { protected tempCacheForMerge: Record; constructor(); clearTemporaryCache(): void; clear(): void; merge(jsonObjs: any, convertFromJSON: FromJsonConverterType): void; getItemByJsonKey(jsonKey: number): T; addItemForMerge(item: T, jsonKey: number): T; convertToJSON(convertToJSON: { (obj: T): any; }): any[]; indexOf(_item: T): void; copyFrom(obj: HashBasedCache): void; }