///
///
///
///
///
///
///
///
///
///
///
///
///
///
///
///
///
///
///
///
///
///
///
///
import mongoose from 'mongoose';
import { Mapping } from 'strict-type-mapper';
import { IDomainRepository } from '../../interfaces/repository.interface';
import { SearchCriteria } from '../../interfaces/search/search.criteria.interface';
import { SearchOptions } from '../../interfaces/search/search.options.interface';
import { UpdateCriteria } from '../../interfaces/update/update.criteria.interface';
/**
* A generic implementation of entity repository.
* @typeparam `T` invariant object type.
* @typeparam `A` invariant attached domain object type.
* @typeparam `E` invariant DB entity type.
*/
export declare class MongoDbRepository implements IDomainRepository {
private readonly mongooseCollection;
private readonly objectEntityMapper;
private readonly mongoEntityFormatter;
constructor(mongooseCollection: mongoose.Model, mapping: Mapping);
private getCriteria;
private getUpdate;
findOne(criteria: SearchCriteria): Promise;
findOneOrFail(criteria: SearchCriteria): Promise;
findAll(criteria?: SearchCriteria, options?: SearchOptions): Promise>;
countAll(criteria: SearchCriteria): Promise;
create(object: T): Promise;
createMany(arrayOfObjects: T[]): Promise;
findOneAndUpdate(criteria: SearchCriteria, update: UpdateCriteria): Promise;
findAllAndUpdate(criteria: SearchCriteria, update: UpdateCriteria): Promise<{
numberOfUpdatedObjects: number;
}>;
findOneAndDelete(criteria: SearchCriteria): Promise;
findAllAndDelete(criteria: SearchCriteria): Promise<{
numberOfDeletedObjects: number;
}>;
}
//# sourceMappingURL=mongo.repository.d.ts.map