export interface Metadata { args: any[]; scope: B; key: string; method: Function; exception: any; result: any; prevented: undefined; target: Object; handle: Function; commit: Function; prevent: Function; skip: Function; } export interface AdviceRef { (metadata: Metadata): any; } export interface MethodSignature { (target: B, key: K, descriptor: any): any; advices: () => AdviceRef[]; } export interface ClassSignature { (target: B): any; advices: () => AdviceRef[]; } export interface AspectBuilder { (definition: AspectDefinition): any; } export interface AspectDefinition { decorateClass: Function; decorateMethod: Function; }