import { Models } from '../schema/index.js'; import { DBChanges, PreparedQuery } from '../types.js'; import { DB } from '../db.js'; import { EntityDataStore } from '../entity-data-store.js'; import { BTreeKVStore } from '../kv-store/storage/memory-btree.js'; import { KVDoubleBuffer } from '../double-buffer.js'; import { ViewEntity } from '../query-engine.js'; import { ViewNode } from './view-graph.js'; export interface SubscribedQueryInfo { query: PreparedQuery; listeners: Set; errorCallbacks: Set<(error: Error) => void>; uninitializedListeners: WeakSet; rootNode: ViewNode; } type SubscriptionCallback = (update: { results: ViewEntity[]; }) => void; export declare class IVM = Models> { readonly db: DB; storage: BTreeKVStore; entityStore: EntityDataStore; doubleBuffer: KVDoubleBuffer; private runningLock; readonly subscribedQueries: Map; readonly uninitializedQueries: Set; private viewGraph; constructor(db: DB); subscribe(query: PreparedQuery, callback: SubscriptionCallback, errorCallback?: (error: Error) => void): () => void; private initializeQueryResults; flushChangesToListeners(): void; bufferChanges(newChanges: DBChanges): Promise; private acquireRunningLock; updateViews(): Promise; private updateQueryResultsInPlace; private getAffectedViewsInTopologicalOrder; resetSubscriptions(): void; clear(): Promise; } export {};