import { AdviceMetadata } from './metadatas'; import { Type, ObjectMap, InjectToken, IContainer, ParamProviders } from '@ts-ioc/core'; import { Advices } from './advices'; /** * Aop IAdvisor interface token. * it is a token id, you can register yourself IAdvisor for this. */ export declare const AdvisorToken: InjectToken; /** * aspect and advices manager. * * @export * @interface IAdvisor */ export interface IAdvisor { /** * aspects * * @type {Map, ObjectMap>} * @memberof IAdvisor */ aspects: Map, ObjectMap>; /** * advices * * @type {Map} * @memberof IAdvisor */ advices: Map; /** * has register advices or not. * * @param {Type} targetType * @returns {boolean} * @memberof IAdvisor */ hasRegisterAdvices(targetType: Type): boolean; /** * set advices. * * @param {string} key * @param {Advices} advices * @memberof IAdvisor */ setAdvices(key: string, advices: Advices): any; /** * get advices. * * @param {string} key * @returns {Advices} * @memberof IAdvisor */ getAdvices(key: string): Advices; /** * add aspect. * * @param {Type} aspect * @param {IContainer} raiseContainer * @memberof IAdvisor */ add(aspect: Type, raiseContainer: IContainer): any; /** * get aspect registered container. * * @param {Type} aspect * @param {IContainer} [defaultContainer] * @returns {IContainer} * @memberof IAdvisor */ getContainer(aspect: Type, defaultContainer?: IContainer): IContainer; /** * resolve aspect. * * @template T * @param {Type} aspect * @param {...ParamProviders[]} providers * @returns {T} * @memberof IAdvisor */ resolve(aspect: Type, ...providers: ParamProviders[]): T; }