import { AnyKeys, Model as MongooseModel, RootFilterQuery, UpdateQuery } from 'mongoose';
type AnyObject = {
    [key: string]: any;
};
export declare class MongooseRepository<SchemaModel> {
    protected model: MongooseModel<SchemaModel>;
    /**
     * The mongoose schema model
     * @protected
     */
    get schema(): import("mongoose").Schema<SchemaModel, MongooseModel<SchemaModel, any, any, any, import("mongoose").IfAny<SchemaModel, any, import("mongoose").Document<unknown, any, SchemaModel, any> & import("mongoose").Default__v<import("mongoose").Require_id<SchemaModel>>>, any>, {}, {}, {}, {}, import("mongoose").DefaultSchemaOptions, import("mongoose").ObtainDocumentType<any, SchemaModel, import("mongoose").ResolveSchemaOptions<import("mongoose").DefaultSchemaOptions>>, import("mongoose").IfAny<import("mongoose").FlatRecord<import("mongoose").ObtainDocumentType<any, SchemaModel, import("mongoose").ResolveSchemaOptions<import("mongoose").DefaultSchemaOptions>>>, any, import("mongoose").Document<unknown, {}, import("mongoose").FlatRecord<import("mongoose").ObtainDocumentType<any, SchemaModel, import("mongoose").ResolveSchemaOptions<import("mongoose").DefaultSchemaOptions>>>, {}> & import("mongoose").Default__v<import("mongoose").Require_id<import("mongoose").FlatRecord<import("mongoose").ObtainDocumentType<any, SchemaModel, import("mongoose").ResolveSchemaOptions<import("mongoose").DefaultSchemaOptions>>>>>>>;
    delete(filter: RootFilterQuery<SchemaModel>): Promise<void>;
    deleteMany(filter: RootFilterQuery<SchemaModel>): Promise<void>;
    find(filter: RootFilterQuery<SchemaModel>): Promise<SchemaModel[]>;
    getOne(filter: RootFilterQuery<SchemaModel>): Promise<SchemaModel>;
    getOneById(id: any): Promise<SchemaModel>;
    put(data: SchemaModel | AnyObject): Promise<SchemaModel>;
    putMany(data: any[]): Promise<Awaited<SchemaModel>[]>;
    update(filter: RootFilterQuery<SchemaModel>, data: AnyKeys<SchemaModel> & AnyObject): Promise<import("mongoose").UpdateWriteOpResult>;
    pushOnArrayProperty(filter: RootFilterQuery<SchemaModel>, property: string, data: any): Promise<import("mongoose").UpdateWriteOpResult>;
    pullFromArrayProperty(filter: RootFilterQuery<SchemaModel>, property: string, data: any): Promise<import("mongoose").UpdateWriteOpResult>;
    updateQuery(filter: RootFilterQuery<SchemaModel>, query: UpdateQuery<SchemaModel>): Promise<import("mongoose").UpdateWriteOpResult>;
}
export {};
