import type { Session, SessionData } from '../../types/session.js'; export interface RedisStoreInfo { redis: boolean; client: RedisClient | FallbackStore; } export interface RedisClient { get(key: string): Promise; setex(key: string, ttl: number, value: string): Promise; del(...keys: string[]): Promise; exists(key: string): Promise; sadd(key: string, ...members: string[]): Promise; srem(key: string, ...members: string[]): Promise; smembers(key: string): Promise; expire(key: string, ttl: number): Promise; keys(pattern: string): Promise; ping(): Promise; pipeline(): Pipeline; } export interface Pipeline { setex(key: string, ttl: number, value: string): Pipeline; sadd(key: string, ...members: string[]): Pipeline; srem(key: string, ...members: string[]): Pipeline; expire(key: string, ttl: number): Pipeline; del(...keys: string[]): Pipeline; exec(): Promise | null>; } export interface FallbackStore { create(data: SessionData): Promise; get(id: string): Promise; update(id: string, data: Partial): Promise; delete(id: string): Promise; deleteExpired(): Promise; getByUserId(userId: string): Promise; exists(id: string): Promise; touch(id: string): Promise; clear(): Promise; destroy(): Promise; } export interface SerializedSession { id: string; data: SessionData; lastAccessedAt: string; } export interface RedisHealthResult { available: boolean; latency?: number; error?: string; } export interface HealthCheckResult { redis: RedisHealthResult; fallback: { available: boolean; }; } export interface RedisMetrics { operationsPerSecond: number; averageLatency: number; errorRate: number; memoryUsage: number; connectionCount: number; lastUpdated: string; } export interface MigrationConfig { sourceRedisUrl?: string; targetRedisUrl?: string; batchSize: number; backupPath?: string; preserveTTL: boolean; } export interface StoreLogger { info(obj: any, msg?: string): void; warn(obj: any, msg?: string): void; error(obj: any, msg?: string): void; debug(obj: any, msg?: string): void; } export interface OperationContext { sessionId?: string; userId?: string; operation: string; timestamp: string; store: 'redis' | 'memory'; } export interface SessionQuery { userId?: string; pattern?: string; limit?: number; offset?: number; sortBy?: 'lastAccessedAt' | 'createdAt'; sortOrder?: 'asc' | 'desc'; } //# sourceMappingURL=types.d.ts.map