/**
 * Redis caching layer for The Order
 * Implements caching for database queries, cache invalidation, and cache monitoring
 */
export interface CacheConfig {
    url?: string;
    ttl?: number;
    keyPrefix?: string;
    enableCompression?: boolean;
}
export interface CacheStats {
    hits: number;
    misses: number;
    sets: number;
    deletes: number;
    errors: number;
}
/**
 * Redis Cache Client
 */
export declare class CacheClient {
    private client;
    private config;
    private stats;
    constructor(config?: CacheConfig);
    /**
     * Initialize Redis client
     */
    connect(): Promise<void>;
    /**
     * Disconnect Redis client
     */
    disconnect(): Promise<void>;
    /**
     * Get value from cache
     */
    get<T>(key: string): Promise<T | null>;
    /**
     * Set value in cache
     */
    set(key: string, value: unknown, ttl?: number): Promise<void>;
    /**
     * Delete value from cache
     */
    delete(key: string): Promise<void>;
    /**
     * Delete multiple keys by pattern
     */
    invalidate(pattern: string): Promise<number>;
    /**
     * Check if key exists
     */
    exists(key: string): Promise<boolean>;
    /**
     * Get cache statistics
     */
    getStats(): CacheStats;
    /**
     * Reset cache statistics
     */
    resetStats(): void;
    /**
     * Get full key with prefix
     */
    private getFullKey;
    /**
     * Serialize value
     */
    private serialize;
    /**
     * Deserialize value
     */
    private deserialize;
}
export declare function getCacheClient(config?: CacheConfig): CacheClient;
/**
 * Cache decorator for functions
 */
export declare function cached<T extends (...args: unknown[]) => Promise<unknown>>(fn: T, keyGenerator?: (...args: Parameters<T>) => string, ttl?: number): T;
//# sourceMappingURL=redis.d.ts.map