import { Repository } from './repository'; import { Optional } from 'typescript-optional'; import mongoose, { HydratedDocument, Model, Schema, UpdateQuery } from 'mongoose'; import { Entity } from './util/entity'; type Constructor = new (...args: any) => T; interface ConstructorMap { [index: string]: { type: Constructor; schema: Schema; }; } type PartialEntityWithIdAndOptionalDiscriminatorKey = { id: string; } & { __t?: string; } & Partial; export declare abstract class MongooseRepository> implements Repository { private readonly entityConstructorMap; private readonly connection?; protected readonly entityModel: Model; protected constructor(entityConstructorMap: ConstructorMap, connection?: mongoose.Connection | undefined); deleteById(id: string): Promise; findAll(filters?: any, sortBy?: any): Promise; findById(id: string): Promise>; save(entity: S | PartialEntityWithIdAndOptionalDiscriminatorKey): Promise; protected instantiateFrom(document: HydratedDocument | null): S | null; private createEntityModel; private insert; private setDiscriminatorKeyOn; private update; } export {};