import { CacheAdapter } from "@authhero/adapter-interfaces";
export interface InMemoryCacheConfig {
    /**
     * Default TTL in seconds for cache entries (optional)
     */
    defaultTtlSeconds?: number;
    /**
     * Maximum number of entries in the cache (optional, for basic LRU behavior)
     */
    maxEntries?: number;
    /**
     * Interval in milliseconds for cleanup of expired entries (default: 60000ms = 1 minute)
     */
    cleanupIntervalMs?: number;
}
export declare class InMemoryCache implements CacheAdapter {
    private config;
    private cache;
    private accessOrder;
    private accessCounter;
    private cleanupTimer?;
    constructor(config?: InMemoryCacheConfig);
    get<T = any>(key: string): Promise<T | null>;
    set<T = any>(key: string, value: T, ttlSeconds?: number): Promise<void>;
    delete(key: string): Promise<boolean>;
    deleteByPrefix(prefix: string): Promise<number>;
    clear(): Promise<void>;
    /**
     * Get cache statistics
     */
    getStats(): {
        size: number;
        maxEntries: number | undefined;
        defaultTtlSeconds: number | undefined;
    };
    /**
     * Clean up expired entries
     */
    private cleanupExpired;
    /**
     * Evict least recently used entry
     */
    private evictLeastRecentlyUsed;
    /**
     * Stop cleanup timer (useful for testing or graceful shutdown)
     */
    destroy(): void;
}
/**
 * Create an in-memory cache adapter
 */
export declare function createInMemoryCache(config?: InMemoryCacheConfig): CacheAdapter;
