import { QueryClient, QueryKey } from '@tanstack/react-query'; /** * Stream event types */ export type StreamEventType = 'create' | 'update' | 'delete' | 'invalidate' | 'patch'; /** * Stream event payload */ export interface StreamEvent { type: StreamEventType; entity: string; id?: string; data?: T; timestamp: string; queryKeys?: QueryKey[]; } /** * Cache update strategy */ export interface CacheUpdateStrategy { entity: string; getQueryKey: (id?: string) => QueryKey; getListQueryKey: () => QueryKey; merge?: (existing: T | undefined, incoming: Partial) => T; shouldInvalidate?: (event: StreamEvent) => boolean; } /** * Cache updater configuration */ export interface StreamCacheConfig { queryClient: QueryClient; strategies: CacheUpdateStrategy[]; onEvent?: (event: StreamEvent) => void; onError?: (error: Error, event: StreamEvent) => void; } /** * Stream to query cache updater */ export declare class StreamQueryCacheUpdater { private queryClient; private strategies; private readonly onEvent?; private readonly onError?; constructor(config: StreamCacheConfig); /** * Process incoming stream event */ processEvent(event: StreamEvent): void; /** * Add or update a strategy */ addStrategy(strategy: CacheUpdateStrategy): void; /** * Remove a strategy */ removeStrategy(entity: string): void; /** * Handle create event */ private handleCreate; /** * Handle update event */ private handleUpdate; /** * Handle delete event */ private handleDelete; /** * Handle patch event (partial update) */ private handlePatch; /** * Handle invalidate event */ private handleInvalidate; } /** * Create stream cache updater helper */ export declare function createStreamCacheUpdater(queryClient: QueryClient, strategies: CacheUpdateStrategy[]): StreamQueryCacheUpdater; /** * Create a simple cache update strategy */ export declare function createCacheStrategy(entity: string, options?: { detailKeyPrefix?: string; listKeyPrefix?: string; }): CacheUpdateStrategy;