import { Token, Providers } from './types'; import { IParameter } from './IParameter'; /** * execution, invoke some type method * * @export * @interface IExecution */ export interface IMethodAccessor { /** * try to async invoke the method of intance, if no instance will create by type. * * @template T * @param {Token} token type of object * @param {(string | symbol)} propertyKey method name * @param {*} [target] instance of type. * @param {...Providers[]} providers param provider. * @returns {Promise} * @memberof IMethodAccessor */ invoke(token: Token, propertyKey: string | symbol, target?: any, ...providers: Providers[]): Promise; /** * try to invoke the method of intance, if no instance will create by type. * * @template T * @param {Token} token * @param {(string | symbol)} propertyKey * @param {*} [target] * @param {...ParamProvider[]} providers * @returns {T} * @memberof IMethodAccessor */ syncInvoke(token: Token, propertyKey: string | symbol, target?: any, ...providers: Providers[]): T; /** * create params instances with IParameter and provider. * * @param {IParameter[]} params * @param {...ParamProvider[]} providers * @returns {any[]} * @memberof IMethodAccessor */ createSyncParams(params: IParameter[], ...providers: Providers[]): any[]; /** * create params instances with IParameter and provider * * @param {IParameter[]} params * @param {...AsyncParamProvider[]} providers * @returns {Promise} * @memberof IMethodAccessor */ createParams(params: IParameter[], ...providers: Providers[]): Promise; }