import mongoose from "mongoose";
import DataLoader from "dataloader";
import { Subject } from "rxjs";
export declare type BaseDocument = mongoose.Document & {
    createdAt?: Date;
    updatedAt?: Date;
};
export declare type Model<T extends BaseDocument> = mongoose.Model<T>;
export declare function ModelLoader<T>(model: any, modelHook?: ModelHook<T>, cache?: boolean): DataLoader<string, T>;
export declare class ModelHook<T> {
    onSaved: Subject<T>;
    onUpdated: Subject<unknown>;
    onDeleted: Subject<T>;
    onFindOne: Subject<T>;
    constructor(schema: mongoose.Schema);
}
