/** * Base Storage Adapter * * Abstract base class for storage adapters. * Provides common validation and default implementations. */ import type { StorageAdapter, SetOptions, SetEntry, MessageHandler, Unsubscribe } from '../types'; /** * Abstract base class for storage adapters. * Subclasses must implement the abstract methods. */ export declare abstract class BaseStorageAdapter implements StorageAdapter { /** * Backend name for error messages (e.g., 'memory', 'redis'). */ protected abstract readonly backendName: string; /** * Whether the adapter is currently connected. */ protected connected: boolean; abstract connect(): Promise; abstract disconnect(): Promise; abstract ping(): Promise; /** * Ensure adapter is connected before operations. * @throws StorageNotConnectedError if not connected */ protected ensureConnected(): void; abstract get(key: string): Promise; /** * Set with validation. */ set(key: string, value: string, options?: SetOptions): Promise; /** * Internal set implementation. Override in subclass. */ protected abstract doSet(key: string, value: string, options?: SetOptions): Promise; abstract delete(key: string): Promise; abstract exists(key: string): Promise; /** * Default mget: sequential gets. * Override for more efficient implementations. */ mget(keys: string[]): Promise<(string | null)[]>; /** * Default mset: sequential sets. * Override for atomic/pipelined implementations. */ mset(entries: SetEntry[]): Promise; /** * Default mdelete: sequential deletes. * Override for more efficient implementations. */ mdelete(keys: string[]): Promise; abstract expire(key: string, ttlSeconds: number): Promise; abstract ttl(key: string): Promise; abstract keys(pattern?: string): Promise; /** * Default count: keys().length. * Override for more efficient implementations. */ count(pattern?: string): Promise; abstract incr(key: string): Promise; abstract decr(key: string): Promise; abstract incrBy(key: string, amount: number): Promise; /** * Default: pub/sub not supported. * Override in adapters that support it. */ supportsPubSub(): boolean; /** * Default: throw not supported error. * Override in adapters that support pub/sub. */ publish(_channel: string, _message: string): Promise; /** * Default: throw not supported error. * Override in adapters that support pub/sub. */ subscribe(_channel: string, _handler: MessageHandler): Promise; /** * Get suggestion message for pub/sub not supported error. * Override in specific adapters. */ protected getPubSubSuggestion(): string; /** * Validate set options. */ protected validateSetOptions(options?: SetOptions): void; }