/** * @nahisaho/yata-scale - Cache Invalidation Manager * * Manages cache invalidation across tiers */ import type { Entity } from '../types.js'; /** * Invalidation event */ export interface InvalidationEvent { readonly type: 'entity' | 'relationship'; readonly id: string; readonly operation: 'update' | 'delete'; readonly timestamp: Date; } /** * Invalidation listener */ export type InvalidationListener = (event: InvalidationEvent) => void; /** * Invalidation pattern for bulk invalidation */ export interface InvalidationPattern { readonly type?: string; readonly namespace?: string; readonly idPrefix?: string; } /** * Cache invalidation manager */ export declare class InvalidationManager { private listeners; private pendingInvalidations; private batchTimeout; private readonly batchSize; private readonly batchDelayMs; constructor(batchSize?: number, batchDelayMs?: number); /** * Invalidate an entity */ invalidateEntity(id: string, operation?: 'update' | 'delete'): void; /** * Invalidate a relationship */ invalidateRelationship(id: string, operation?: 'update' | 'delete'): void; /** * Invalidate multiple entities */ invalidateEntities(ids: string[], operation?: 'update' | 'delete'): void; /** * Invalidate by pattern */ invalidateByPattern(pattern: InvalidationPattern, entities: Entity[]): void; /** * Queue an invalidation event */ private queueInvalidation; /** * Flush pending invalidations immediately */ flushNow(): void; /** * Notify all listeners */ private notifyListeners; /** * Add invalidation listener */ addListener(listener: InvalidationListener): void; /** * Remove invalidation listener */ removeListener(listener: InvalidationListener): void; /** * Clear all listeners */ clearListeners(): void; /** * Get pending invalidation count */ get pendingCount(): number; /** * Get listener count */ get listenerCount(): number; /** * Close the manager */ close(): void; } //# sourceMappingURL=InvalidationManager.d.ts.map