import { Type, TypeDecorator } from '@neoskop/annotation-factory'; import { Provider } from '@neoskop/injector'; import { Router } from 'express'; /** * Type of NemModule decorator */ export interface NemModuleDecorator { (obj?: NemModule): TypeDecorator; new (obj?: NemModule): NemModule; } /** * Type of NemModule metadata * @see {@link NemModuleDecorator} */ export interface NemModule { modules?: ([string | RegExp, Type | NemModuleWithProviders] | Type | NemModuleWithProviders)[]; providers?: Provider[]; moduleProviders?: Provider[]; middlewares?: (any | any[])[]; router?: [string | RegExp, Router][]; controller?: [string | RegExp, Type][]; } export declare const NemModule: NemModuleDecorator; /** * Type of module factory return value * @example * ``` * * @NemModule() * export class TestModule { * static forValue(value : any) { * return { * nemModule: TestModule, * providers: [ * { provide: 'VALUE', useValue: value } * ] * } * } * } * ``` */ export interface NemModuleWithProviders { nemModule: Type; providers?: Provider[]; moduleProviders?: Provider[]; }