import { BaseService, ServiceConfig, ServiceResponse } from "./base-service.js"; export interface CacheItem { data: T; timestamp: number; ttl: number; hits: number; } export interface CacheConfig extends ServiceConfig { maxSize?: number; defaultTtl?: number; cleanupInterval?: number; } export interface CacheStats { size: number; maxSize: number; hits: number; misses: number; hitRate: number; evictions: number; } export declare class CacheService extends BaseService { private cache; private stats; private cleanupTimer?; private readonly maxSize; private readonly defaultTtl; private readonly cleanupInterval; constructor(config?: CacheConfig); /** * Get item from cache */ get(key: string): Promise>; /** * Set item in cache */ set(key: string, data: T, ttl?: number): Promise>; /** * Delete item from cache */ delete(key: string): Promise>; /** * Check if key exists in cache */ has(key: string): Promise>; /** * Get or set pattern - get from cache, or compute and cache if not found */ getOrSet(key: string, computeFn: () => Promise, ttl?: number): Promise>; /** * Clear all cache entries */ clear(): Promise>; /** * Get cache statistics */ getStats(): CacheStats; /** * Evict expired entries */ cleanupExpired(): number; /** * Evict least recently used item */ private evictLeastRecentlyUsed; /** * Start automatic cleanup timer */ private startCleanupTimer; /** * Stop cleanup timer */ stopCleanup(): void; /** * Health check implementation */ healthCheck(): Promise; /** * Generate cache key from object */ static generateKey(prefix: string, params: Record): string; /** * Simple hash function for cache keys */ private static simpleHash; /** * Cleanup on service shutdown */ shutdown(): Promise; }