type CacheConstructor = new (max?: number, ttlInMsecs?: number, cacheId?: string, cacheStatistics?: HitStatisticsRecord) => T type CacheEntry = { expiry: number key: any prev: CacheEntry | null next: CacheEntry | null value: T } interface ToadCache { first: any; last: any; max: number; ttl: number; size: number; clear(): void; delete(key: any): void; deleteMany(keys: any[]): void; evict(): void; expiresAt(key: any): any; keys(): any; get(key: any): T | undefined; getMany(keys: any[]): (T | undefined)[]; set(key: any, value: T): void; } declare class FifoMap implements ToadCache{ constructor(max?: number, ttlInMsecs?: number); first: any; items: Map; last: any; max: number; ttl: number; size: number; clear(): void; delete(key: any): void; deleteMany(keys: any[]): void; evict(): void; expiresAt(key: any): any; get(key: any): T | undefined; getMany(keys: any[]): (T | undefined)[]; keys(): IterableIterator; set(key: any, value: T): void; } declare class FifoObject implements ToadCache { constructor(max?: number, ttlInMsecs?: number); first: any; items: Record>; last: any; size: number; max: number; ttl: number; clear(): void; delete(key: any): void; deleteMany(keys: any[]): void; evict(): void; expiresAt(key: any): any; get(key: any): T | undefined; getMany(keys: any[]): (T | undefined)[]; keys(): string[]; set(key: any, value: T): void; } declare class LruMap implements ToadCache { constructor(max?: number, ttlInMsecs?: number); first: any; items: Map; last: any; max: number; ttl: number; size: number; clear(): void; delete(key: any): void; deleteMany(keys: any[]): void; evict(): void; expiresAt(key: any): any; get(key: any): T | undefined; getMany(keys: any[]): (T | undefined)[]; keys(): IterableIterator; set(key: any, value: T): void; } declare class LruObject implements ToadCache { constructor(max?: number, ttlInMsecs?: number); first: any; items: Record>; last: any; size: number; max: number; ttl: number; clear(): void; delete(key: any): void; deleteMany(keys: any[]): void; evict(): void; expiresAt(key: any): any; get(key: any): T | undefined; getMany(keys: any[]): (T | undefined)[]; keys(): string[]; set(key: any, value: T): void; } declare class HitStatisticsRecord { records: Record> initForCache(cacheId: string, currentTimeStamp: string): void resetForCache(cacheId: string): void } declare class LruObjectHitStatistics extends LruObject{ constructor(max?: number, ttlInMsecs?: number, cacheId?: string, globalStatisticsRecord?: HitStatisticsRecord, statisticTtlInHours?: number); } export { CacheConstructor, ToadCache, LruObject, LruMap, FifoMap, FifoObject, HitStatisticsRecord, LruObjectHitStatistics, FifoObject as Fifo, LruObject as Lru }