import type { BulkOperationResult } from './lib/AbstractBulkOperationResults';
import type { DataMigrationConfig, LoggerInterface, MigrationInfos, RollbackableUpdate } from './types';
import type { Collection, Document } from 'mongodb';
export declare const DELETE_COLLECTION: unique symbol;
export default class MongoBulkDataMigration<TSchema extends Document> implements RollbackableUpdate {
    private readonly options;
    private readonly collectionName;
    private readonly id;
    private readonly migrationInfos;
    private logger;
    constructor(config: DataMigrationConfig<TSchema>);
    setLogger(logger: LoggerInterface): void;
    getInfos(): {
        id: string;
        migrationInfos: MigrationInfos<TSchema>;
        collection: Collection<TSchema>;
        collectionName: string;
    };
    private getRollbackCollection;
    private getRollbackCollectionName;
    private getCollection;
    update(): Promise<BulkOperationResult>;
    private getCursorAndCount;
    private buildBulkUpdater;
    private buildBackupDocument;
    private throttle;
    rollback(): Promise<BulkOperationResult>;
    private getRollbackUpdateQuery;
    private lowerValidationLevel;
    private restoreValidationLevel;
    private canUpdateValidation;
    private setValidationLevel;
    private renameCollection;
    clean(): Promise<void>;
}
