import { Collection, FilterQuery, Cursor } from "mongodb"; import { Constructor } from "@replikit/core/typings"; import { Entity, ConnectionManager } from "./index"; import { PlainObject, RepositoryOptions, SafeCursor } from "@replikit/storage/typings"; export declare type QueryBuilder = (q: SafeCursor>) => SafeCursor>; export declare class Repository { readonly connection: ConnectionManager; readonly collection: Collection>; private readonly ctr; private readonly options; private readonly defaults; constructor(connection: ConnectionManager, collection: Collection>, ctr: Constructor, options?: RepositoryOptions); create(plain?: Partial>): T; findOne(filter: FilterQuery>): Promise; findMany(filter?: FilterQuery>): Promise; fetchEntities(cursor: Cursor>): Promise; query(builder: QueryBuilder): Promise; queryAndCount(builder: QueryBuilder): Promise<[T[], number]>; save(entity: T): Promise; createEntities(documents: PlainObject[]): T[]; setDefault(key: K, value: T[K]): void; createEntity(document: PlainObject): T; createDocument(entity: T): PlainObject; }