import { Type } from '@neoskop/annotation-factory'; import { Injector, Provider } from '@neoskop/injector'; import { IRouter, Router } from 'express'; import { NemModule, NemModuleWithProviders } from '../metadata/module'; import { ControllerRouterFactory } from './controller-router'; export interface IModuleContext { /** * The module type class */ moduleType: Type; /** * The module metadata */ metadata: NemModule; /** * The controller factory */ factory: ControllerRouterFactory; /** * The use router */ router: IRouter; /** * The module instance */ module?: T; /** * The module injector */ injector: Injector; } export declare class ModuleRouterFactory { protected injector: Injector; constructor(injector: Injector); static getProviders(moduleType: Type): Provider[]; createRouterFromModule(moduleType: Type, options?: { router?: IRouter; moduleProviders?: Provider[]; }): IModuleContext; protected initContext(moduleType: Type, { router, moduleProviders }: { router?: IRouter; moduleProviders?: Provider[]; }): IModuleContext; protected static assertModuleAnnotation(moduleType: Type): NemModule; protected static assertNemModuleWithProviders(arg: NemModuleWithProviders | Type): NemModuleWithProviders; protected handleImport(module: [string | RegExp, Type | NemModuleWithProviders] | Type | NemModuleWithProviders, router: IRouter): void; protected handleMiddleware(middleware: any | any[], router: IRouter): void; protected handleRouter(route: string | RegExp, subRouter: Router, router: IRouter): void; }