/**
 * Simple in-memory cache with TTL (Time To Live) support
 */
export declare class MemoryCache {
    private cache;
    private maxSize;
    private defaultTTL;
    private hits;
    private misses;
    constructor(maxSize?: number, defaultTTL?: number);
    /**
     * Get the current size of the cache
     */
    size(): number;
    /**
     * Get all entries as array of [key, value] pairs
     */
    entries(): [string, unknown][];
    /**
     * Get value from cache
     */
    get<T>(key: string): T | undefined;
    /**
     * Set value in cache
     */
    set<T>(key: string, value: T, ttl?: number): void;
    /**
     * Check if key exists and is not expired
     */
    has(key: string): boolean;
    /**
     * Delete entry from cache
     */
    delete(key: string): boolean;
    /**
     * Clear all cache entries
     */
    clear(): void;
    /**
     * Clean up expired entries
     */
    private cleanup;
    /**
     * Get cache statistics
     */
    getStats(): {
        size: number;
        maxSize: number;
        hitRate: string;
        hits: number;
        misses: number;
    };
    /**
     * Get or set with async function
     */
    getOrSet<T>(key: string, fetchFn: () => Promise<T>, ttl?: number): Promise<T>;
}
export declare const apiCache: MemoryCache;
export declare const searchCache: MemoryCache;
export declare const indexCache: MemoryCache;
export declare const technologiesCache: MemoryCache;
export declare const updatesCache: MemoryCache;
export declare const sampleCodeCache: MemoryCache;
export declare const technologyOverviewsCache: MemoryCache;
export declare const wwdcDataCache: MemoryCache;
/**
 * Generate cache key for URL-based requests
 */
export declare function generateUrlCacheKey(url: string, params?: Record<string, unknown>): string;
/**
 * Generate cache key for enhanced analysis
 */
export declare function generateEnhancedCacheKey(url: string, options: {
    includeRelatedApis?: boolean;
    includeReferences?: boolean;
    includeSimilarApis?: boolean;
    includePlatformAnalysis?: boolean;
}): string;
/**
 * Cache decorator for async functions
 */
export declare function cached<T>(cache: MemoryCache, keyGenerator: (...args: unknown[]) => string, ttl?: number): (_target: unknown, _propertyName: string, descriptor: PropertyDescriptor) => void;
/**
 * Cache decorator (alias for compatibility)
 */
export declare function withCache<T = any>(cache: MemoryCache, keyGenerator?: (...args: any[]) => string, ttl?: number): (_target: any, _propertyName: string, descriptor?: PropertyDescriptor) => PropertyDescriptor;
export declare function getCacheInstance(name: string, maxSize?: number, defaultTTL?: number): MemoryCache;
//# sourceMappingURL=cache.d.ts.map