import { Token, ToInstance, Providers, Express2 } from '../../types'; import { IContainer } from '../../IContainer'; /** * provider, to dynamic resovle instance of params in run time. * * @export * @class Provider */ export declare class Provider { /** * service provider is value or value factory. * * @memberof Provider */ protected value?: any; /** * service is instance of type. * * @type {Token} * @memberof Provider */ type?: Token; constructor(type?: Token, value?: any); /** * resolve provider value. * * @template T * @param {IContainer} container * @param {Providers[]} providers * @returns {T} * @memberof Provider */ resolve(container: IContainer, ...providers: Providers[]): T; /** * create provider. * * @static * @param {Token} type * @param {(any)} value * @returns Provider * @memberof Provider */ static create(type: Token, value: any): Provider; /** * create extends provider. * * @static * @param {Token} token * @param {(any)} value * @param {Express2} [extendsTarget] * @returns {ExtendsProvider} * @memberof Provider */ static createExtends(token: Token, value: any, extendsTarget?: Express2): ExtendsProvider; /** * create custom provider. * * @static * @param {Token} [type] * @param {ToInstance} [toInstance] * @param {*} [value] * @returns {CustomProvider} * @memberof Provider */ static createCustom(type?: Token, toInstance?: ToInstance, value?: any): CustomProvider; /** * create invoked provider. * * @static * @param {Token} token * @param {string} method * @param {(any)} [value] * @returns {InvokeProvider} * @memberof Provider */ static createInvoke(token: Token, method: string, value?: any): InvokeProvider; /** * create param provider. * * @static * @param {Token} token * @param {(any)} value * @param {number} [index] * @param {string} [method] * @returns {ParamProvider} * @memberof Provider */ static createParam(token: Token, value: any, index?: number, method?: string): ParamProvider; /** * create async param provider. * * @static * @param {(string | string[])} files * @param {Token} token * @param {number} [index] * @param {string} [method] * @param {(any)} [value] * @returns {AsyncParamProvider} * @memberof Provider */ static createAsyncParam(files: string | string[], token: Token, index?: number, method?: string, value?: any): AsyncParamProvider; } export declare class CustomProvider extends Provider { /** * service value is the result of type instance invoke the method return value. * * @type {string} * @memberof Provider */ protected toInstance?: ToInstance; constructor(type?: Token, toInstance?: ToInstance, value?: any); resolve(container: IContainer, ...providers: Providers[]): T; } /** * InvokeProvider * * @export * @class InvokeProvider * @extends {Provider} */ export declare class InvokeProvider extends Provider { /** * service value is the result of type instance invoke the method return value. * * @type {string} * @memberof Provider */ protected method?: string; constructor(type?: Token, method?: string, value?: any); resolve(container: IContainer, ...providers: Providers[]): T; } /** * param provider. * * @export * @interface ParamProvider */ export declare class ParamProvider extends InvokeProvider { /** * param index, param name. * * @type {number} * @memberof ParamProvider */ index?: number; constructor(token?: Token, value?: any, index?: number, method?: string); resolve(container: IContainer, ...providers: Providers[]): T; } /** * Provider enable exntends target with provider in dynamic. * * @export * @class ExtendsProvider * @extends {Provider} */ export declare class ExtendsProvider extends Provider { private extendsTarget; constructor(token: Token, value?: any, extendsTarget?: Express2); resolve(container: IContainer, ...providers: Providers[]): T; extends(target: any): void; } /** * async param provider. * async load source file and execution as param value. * * @export * @interface AsyncParamProvider * @extends {ParamProvider} */ export declare class AsyncParamProvider extends ParamProvider { /** * match ref files. * * @type {(string | string[])} * @memberof AsyncParamProvider */ protected files?: string | string[]; constructor(files: string | string[], token: Token, index?: number, method?: string, value?: any); resolve(container: IContainer, ...providers: Providers[]): any; }