///
///
import { Writable } from 'stream';
import type { MongoServerError, Document, WriteError, WriteConcernError, BulkWriteResult } from 'mongodb';
import type { DataService } from 'mongodb-data-service';
export type CollectionStreamProgressError = Error | WriteError | WriteConcernError;
type CollectionStreamError = Error & {
cause?: CollectionStreamProgressError;
};
type WriteCollectionStreamProgressError = Error & {
index: number;
code: MongoServerError['code'];
op: MongoServerError['op'];
errInfo: MongoServerError['errInfo'];
};
declare const numKeys: readonly ["insertedCount", "matchedCount", "modifiedCount", "deletedCount", "upsertedCount", "ok"];
type NumericBulkWriteResult = {
[numkey in keyof BulkWriteResult & typeof numKeys[number]]?: number;
};
export type CollectionStreamProgress = {
docsWritten: number;
docsProcessed: number;
errors: CollectionStreamProgressError[];
};
export type CollectionStreamStats = Required & {
writeErrors: WriteCollectionStreamProgressError[];
writeConcernErrors: WriteCollectionStreamProgressError[];
};
export declare class WritableCollectionStream extends Writable {
dataService: Pick;
ns: string;
BATCH_SIZE: number;
docsWritten: number;
docsProcessed: number;
stopOnErrors: boolean;
batch: Document[];
_batchCounter: number;
_stats: CollectionStreamStats;
_errors: CollectionStreamProgressError[];
constructor(dataService: Pick, ns: string, stopOnErrors: boolean);
_write(document: Document, _encoding: BufferEncoding, next: (err?: Error) => void): Promise | undefined;
_final(callback: (err?: Error) => void): void;
_executeBatch(callback: (err?: Error) => void): Promise;
_makeStreamError(): CollectionStreamError | undefined;
_mergeBulkOpResult(result?: NumericBulkWriteResult & Partial): void;
getErrors(): CollectionStreamProgressError[];
getStats(): CollectionStreamStats;
printJobStats(): void;
}
export declare const createCollectionWriteStream: (dataService: Pick, ns: string, stopOnErrors: boolean) => WritableCollectionStream;
export {};
//# sourceMappingURL=collection-stream.d.ts.map