import { Provider } from '@decorators/di';
import { ClassConstructor } from '../types';
export interface ModuleWithProviders {
    module: ClassConstructor;
    providers: (ClassConstructor | Provider)[];
}
interface ModuleOptions {
    controllers?: ClassConstructor[];
    modules?: (ModuleWithProviders | ClassConstructor)[];
    namespace?: string;
    providers?: (ClassConstructor | Provider)[];
}
/**
 * Module provides a scope providers, nested namespace
 *
 * Module options:
 * * controllers - list of controllers to handle namespace-based endpoints.
 * Each enpoint consists of parent module.namespace + controller.url + method.url
 * * modules - list of child modules
 * * namespace - prefix to be added to all nested modules and provided controllers
 * * providers - list of required providers
 */
export declare function Module(options: ModuleOptions): (target: ClassConstructor) => void;
export {};
