import { Injector, ProviderClass } from './Injector'; import { Injectable, ServiceClass } from './utils'; export declare class Module { private name; private dependencies; private services; private configHooks; private runHooks; /** * @param name The name of ne module * @param dependencies An array of dependencies modules */ constructor(name: string, dependencies: Module[]); /** * @returns The module name */ getName(): string; /** * @param injectable A config hook function * @returns The current module */ config(injectable: Injectable): Module; /** * @param {Injectable} injectable A run hook function * @returns {Module} The current module */ run(injectable: Injectable): Module; /** * Register a new service in the module * @param serviceName the service name * @param serviceClass The service class * @returns this */ service(serviceName: string, serviceClass: ServiceClass): Module; /** * Register a new service in the module by providing a factory * @param serviceName the name of the service * @param injectable The function responsible of creating the service instance. * @returns this */ factory(serviceName: string, injectable: Injectable): Module; /** * Register a new service in the module by providing a provider class * @param serviceName The service name * @param providerClass A provider constructor * @returns this */ provider(serviceName: string, providerClass: ProviderClass): Module; /** * Bootstrap the module * @return The module injector */ bootstrap(): Promise; /** * Bootstrap the module. * @param modules An array of module * @param $injectors An array of corresponding injector * @returns the newly created injector */ private _bootstrap(modules, $injectors); }