import { Router, RequestHandler } from 'express';
import { PathParams } from 'express-serve-static-core';
import { Schema, Connection, Model, Document } from 'mongoose';
import { ModuleOptions } from './types';
import { ArkExpressPackage } from './package';
import { Utils } from './utils';
declare type ModelMap<DBT> = {
    name: string;
    schema: Schema;
    instance?: Model<any>;
    dbName?: DBT;
};
declare type MiddlewareMatcher = {
    path?: PathParams;
    handler: RequestHandler | RequestHandler[];
};
export declare class ArkExpressModule<DBT = any> {
    id: string;
    options: ModuleOptions;
    router: Router;
    package: ArkExpressPackage;
    modelMapping: ModelMap<DBT>[];
    utils: Utils;
    private middlewares;
    constructor();
    registerModel(name: string, schema: Schema, dbName?: DBT): ArkExpressModule<DBT>;
    getModel<T extends Document = Document>(name: string): Model<T>;
    getDatabase(name?: string): Connection;
    getRouter(): RequestHandler;
    __normalizeModelName(modelName: string): string;
    __getMiddlewares(): MiddlewareMatcher[];
    use(middleware: RequestHandler): ArkExpressModule<DBT>;
    useWithPath(path: PathParams, middleware: RequestHandler | RequestHandler[]): ArkExpressModule<DBT>;
    main(): void;
}
export {};
//# sourceMappingURL=module.d.ts.map