import { IContainer } from './IContainer'; import { Type } from './types'; import { AsyncLoadOptions, LoadOptions } from './LoadOptions'; /** * container builder. * * @export * @interface IContainerBuilder */ export interface IContainerBuilder { /** * create a new container. * * @returns {IContainer} * @memberof IContainerBuilder */ create(): IContainer; /** * create a new container and load module via options. * * @param {AsyncLoadOptions} [options] * @returns {Promise} * @memberof IContainerBuilder */ build(options?: AsyncLoadOptions): Promise; /** * build container in sync. * * @param {LoadOptions} options * @returns {IContainer} * @memberof IContainerBuilder */ syncBuild(options: LoadOptions): IContainer; /** * load modules for container. * * @param {IContainer} container * @param {AsyncLoadOptions} options * @returns {Promise[]>} * @memberof IContainerBuilder */ loadModule(container: IContainer, options: AsyncLoadOptions): Promise[]>; /** * sync load module for container. * * @param {IContainer} container * @param {LoadOptions} options * @returns {Type[]} * @memberof IContainerBuilder */ snycLoadModule(container: IContainer, options: LoadOptions): Type[]; }