export type DecoratorTargetMethod< This, Args extends Array, Return extends Promise | void > = (this: This, ...args: Args) => Return; export type DecoratorReplacementMethod< This, Args extends Array > = (this: This, ...args: Args) => Promise; export type MethodDecoratorContext< This, Args extends Array, Return extends Promise | void > = ClassMethodDecoratorContext>;