/**
 * Cache configuration
 */
interface CacheConfig {
    maxSize: number;
    defaultTtl: number;
}
/**
 * High-performance in-memory cache with TTL and file change detection
 */
export declare class MemoryCache<T = unknown> {
    private cache;
    private accessOrder;
    private accessCounter;
    private config;
    constructor(config?: Partial<CacheConfig>);
    /**
     * Get cached value with file change detection
     */
    get(key: string, filePath?: string): Promise<T | undefined>;
    /**
     * Set cached value
     */
    set(key: string, value: T, filePath?: string, ttl?: number): Promise<void>;
    /**
     * Check if key exists in cache
     */
    has(key: string): boolean;
    /**
     * Delete cached value
     */
    delete(key: string): boolean;
    /**
     * Clear all cached values
     */
    clear(): void;
    /**
     * Get cache statistics
     */
    getStats(): {
        size: number;
        maxSize: number;
        hitRate: number;
        memoryUsage: number;
    };
    /**
     * Get file hash for change detection
     */
    private getFileHash;
    /**
     * Evict least recently used item
     */
    private evictLRU;
    /**
     * Estimate memory usage (rough calculation)
     */
    private estimateMemoryUsage;
}
/**
 * Global cache instances
 */
export declare const yamlCache: MemoryCache<unknown>;
export declare const fileCache: MemoryCache<string>;
/**
 * Memoization decorator for functions
 */
export declare function memoize<TArgs extends readonly unknown[], TReturn>(fn: (...args: TArgs) => TReturn, keyGenerator?: (...args: TArgs) => string): (...args: TArgs) => TReturn;
/**
 * Async memoization decorator
 */
export declare function memoizeAsync<TArgs extends readonly unknown[], TReturn>(fn: (...args: TArgs) => Promise<TReturn>, keyGenerator?: (...args: TArgs) => string, ttl?: number): (...args: TArgs) => Promise<TReturn>;
/**
 * Start timing an operation
 */
export declare function startTimer(operation: string): void;
/**
 * End timing an operation and record metrics
 */
export declare function endTimer(operation: string): number;
/**
 * Get performance metrics for an operation
 */
export declare function getMetrics(operation: string): {
    count: number;
    totalTime: number;
    avgTime: number;
} | undefined;
/**
 * Get all performance metrics
 */
export declare function getAllMetrics(): Record<string, {
    count: number;
    totalTime: number;
    avgTime: number;
}>;
/**
 * Clear all metrics
 */
export declare function clearMetrics(): void;
/**
 * Decorator for timing function execution
 */
export declare function timeFunction<TArgs extends readonly unknown[], TReturn>(fn: (...args: TArgs) => TReturn, operationName?: string): (...args: TArgs) => TReturn;
export {};
