import { AggregateOptions, Document, FilterQuery, Model, PipelineStage, ProjectionType, QueryOptions, UpdateQuery } from "mongoose";
import { BulkWriteOpResult, UpdatedModel, WriteOperation } from "./mongo-lib.types";
import { IMongoRepository } from "./repository.abstract";
export declare class MongoRepository<T extends Document, K = T, L = T> implements IMongoRepository<T, K, L> {
    private _repository;
    constructor(repository: Model<T>);
    findOne(filters: FilterQuery<T>, projections?: ProjectionType<T>, options?: QueryOptions<T>): Promise<K>;
    find(filters: FilterQuery<T>, projections?: ProjectionType<T>, options?: QueryOptions<T>): Promise<K[]>;
    findOneAndUpdate(filters: FilterQuery<T>, updateQuery: UpdateQuery<T>, options?: QueryOptions<T>): Promise<K>;
    findOneAndDelete(filters: FilterQuery<T>, options?: QueryOptions<T>): Promise<K>;
    updateMany(filters: FilterQuery<T>, updateQuery: UpdateQuery<T>): Promise<UpdatedModel>;
    countDocuments(filters: FilterQuery<T>, options?: QueryOptions<T>): Promise<number>;
    create(payload: Partial<K>): Promise<L>;
    aggregate<L>(pipeline: PipelineStage[], options?: AggregateOptions): Promise<L[]>;
    bulkWrite(operations: WriteOperation[]): Promise<BulkWriteOpResult>;
    distinct(field: string, filters?: FilterQuery<T>): Promise<any[]>;
    deleteMany(operation: FilterQuery<T>): Promise<{
        deletedCount: number;
    }>;
    insertMany(payload: Partial<K>[]): Promise<K[]>;
}
//# sourceMappingURL=repository.d.ts.map