import { LRUCache } from 'lru-cache';
export interface CacheMetrics {
    hits: number;
    misses: number;
    evictions: number;
    sets: number;
    deletes: number;
    clears: number;
    size: number;
    maxSize: number;
    avgHitRate: number;
    createdAt: Date;
    lastResetAt: Date;
}
export interface CacheConfig {
    max: number;
    ttlMinutes: number;
}
declare class CacheMetricsTracker {
    private metrics;
    private startTime;
    constructor();
    reset(): void;
    recordHit(): void;
    recordMiss(): void;
    recordEviction(): void;
    recordSet(): void;
    recordDelete(): void;
    recordClear(): void;
    updateSize(current: number, max: number): void;
    private updateHitRate;
    getMetrics(): CacheMetrics;
    getFormattedMetrics(): string;
}
export declare const cacheMetrics: CacheMetricsTracker;
export declare function getCacheConfig(): CacheConfig;
export declare function createCacheKey(input: string): string;
export declare function createInstanceCache<T extends {}>(onDispose?: (value: T, key: string) => void): LRUCache<string, T>;
export declare class CacheMutex {
    private locks;
    private lockTimeouts;
    private readonly timeout;
    acquire(key: string): Promise<() => void>;
    isLocked(key: string): boolean;
    clearAll(): void;
}
export interface RetryConfig {
    maxAttempts: number;
    baseDelayMs: number;
    maxDelayMs: number;
    jitterFactor: number;
}
export declare const DEFAULT_RETRY_CONFIG: RetryConfig;
export declare function calculateBackoffDelay(attempt: number, config?: RetryConfig): number;
export declare function withRetry<T>(fn: () => Promise<T>, config?: RetryConfig, context?: string): Promise<T>;
export declare function getCacheStatistics(): string;
export {};
//# sourceMappingURL=cache-utils.d.ts.map