import { SmartDataDbDoc } from './classes.doc.js';
import * as plugins from './plugins.js';
import { EventEmitter } from 'node:events';
/**
 * a wrapper for the native mongodb cursor. Exposes better
 */
/**
 * Wraps a MongoDB ChangeStream with RxJS and EventEmitter support.
 */
export declare class SmartdataDbWatcher<T = any> extends EventEmitter {
    readyDeferred: plugins.smartpromise.Deferred<void>;
    private changeStream;
    private rawSubject;
    /** Emits change documents (or arrays of documents if buffered) */
    changeSubject: any;
    /**
     * @param changeStreamArg native MongoDB ChangeStream
     * @param smartdataDbDocArg document class for instance creation
     * @param opts.bufferTimeMs optional milliseconds to buffer events via RxJS
     */
    constructor(changeStreamArg: plugins.mongodb.ChangeStream<any>, smartdataDbDocArg: typeof SmartDataDbDoc, opts?: {
        bufferTimeMs?: number;
    });
    /**
     * Close the change stream, complete the RxJS subject, and remove listeners.
     */
    close(): Promise<void>;
    /**
     * Alias for close(), matching README usage
     */
    stop(): Promise<void>;
}
