export type ClassAccessorDecorator = (value: ClassAccessorDecoratorTarget, context: ClassAccessorDecoratorContext) => ClassAccessorDecoratorResult | void; export type ClassGetterDecorator = (value: (this: This) => Value, context: ClassGetterDecoratorContext) => ((this: This) => Value) | void; export type ClassSetterDecorator = (value: (this: This, value: Value) => void, context: ClassSetterDecoratorContext) => ((this: This, value: Value) => void) | void; export type ClassMethodDecorator any = any> = (value: Value, context: ClassMethodDecoratorContext) => Value | void; export type ClassFieldDecorator any = any> = (value: Value, context: ClassFieldDecoratorContext) => Value | void; export type Decorator = ClassAccessorDecorator | ClassGetterDecorator | ClassSetterDecorator | ClassMethodDecorator | ClassFieldDecorator;