import { AdviceMetadata } from './metadatas/index'; import { MapSet } from '../utils/index'; import { Type, ObjectMap } from '../types'; import { Advices } from './advices/index'; /** * aspect set. * * @export * @interface IAdvisor */ export interface IAdvisor { /** * aspects * * @type {MapSet, ObjectMap>} * @memberof IAdvisor */ aspects: MapSet, ObjectMap>; /** * advices * * @type {MapSet} * @memberof IAdvisor */ advices: MapSet; /** * 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 * @memberof IAdvisor */ add(aspect: Type): any; }