import { ObjectWrapper } from '../sync/ObjectWrapper'; export declare type PrimaryKeyType = string | number; export declare type SubSignature = number; declare abstract class Cache { protected primaryKeys: string[]; protected capacity_: number; protected cacheNodeMap: Map; constructor(primaryKeys: string[]); get capacity(): number; abstract cache(record: object, versionId?: number, reference?: SubSignature): T; abstract remove(versionId: number, reference: SubSignature): void; abstract get(versionId: number): T | undefined; protected hash(value: string | number): string; getRecordHash(record: unknown): string; } export declare class CacheNode { readonly versionId: number; keys?: PrimaryKeyType[]; record?: T; constructor(versionId: number); } export declare class SnapshotCache extends Cache> { constructor(primaryKeys: string[]); cache(record: ObjectWrapper, versionId: number): CacheNode; remove(versionId: number): void; get(versionId: number): CacheNode | undefined; } export {};