export type CacheConstructor = new (max?: number, ttlInMsecs?: number, cacheId?: string, cacheStatistics?: HitStatisticsRecord) => T export type CacheEntry = { expiry: number key: any prev: CacheEntry | null next: CacheEntry | null value: T } export 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; } export 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; } export 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; } export 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; } export 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; } export class HitStatisticsRecord { records: Record> initForCache(cacheId: string, currentTimeStamp: string): void resetForCache(cacheId: string): void } export class LruObjectHitStatistics extends LruObject{ constructor(max?: number, ttlInMsecs?: number, cacheId?: string, globalStatisticsRecord?: HitStatisticsRecord, statisticTtlInHours?: number); } export { FifoObject as Fifo } export { LruObject as Lru }