import { a as GQPPlugin, l as GQPEngine, n as GQPNode, Q as QueryFilters, P as PluginContext } from '../../types-CqJN-Ev5.js'; /** * Cache Plugin for GQP * Query result caching with multiple backends */ interface CacheProvider { get(key: string): Promise; set(key: string, value: T, ttl: number): Promise; delete(key: string): Promise; clear(): Promise; } declare class MemoryCacheProvider implements CacheProvider { private cache; private maxSize; private cleanupInterval?; constructor(maxSize?: number, cleanupIntervalMs?: number); get(key: string): Promise; set(key: string, value: T, ttl: number): Promise; delete(key: string): Promise; clear(): Promise; destroy(): void; private evictOldest; private evictExpired; size(): number; } interface CachePluginConfig { provider?: "memory" | "redis" | CacheProvider; redis?: { url: string; prefix?: string; }; ttl?: number; maxSize?: number; cleanupInterval?: number; strategies?: Record; } declare class CachePlugin implements GQPPlugin { name: string; private config; private provider; private memoryProvider?; private pendingQueries; private stats; constructor(config?: CachePluginConfig); onInit(_engine: GQPEngine): Promise; onDestroy(): Promise; onPreQuery(node: GQPNode, filters: QueryFilters, context: PluginContext): Promise; onPostQuery(node: GQPNode, results: unknown[], context: PluginContext): Promise; private generateCacheKey; private safeStringify; private getTTL; invalidate(_pattern: string): Promise; getStats(): { hits: number; misses: number; hitRate: number; }; clear(): Promise; } declare function createCachePlugin(config?: CachePluginConfig): CachePlugin; export { CachePlugin, type CachePluginConfig, type CacheProvider, MemoryCacheProvider, createCachePlugin };