declare classDecorator =
  (ClassConstructor) => DecoratedClassConstructor | undefined

declare memberPropertyDecorator =
  (prototype, name, descriptor?) => decoratedDescriptor | undefined

declare memberAccessorDecorator =
  (prototype, name, descriptor) => decoratedDescriptor | undefined

declare memberMethodDecorator =
  (prototype, name, descriptor) => decoratedDescriptor | undefined

declare memberMethodParameterDecorator =
  (prototype, name, index) => void

declare staticPropertyDecorator =
  (ClassConstructor, name, descriptor?) => decoratedDescriptor | undefined

declare staticAccessorDecorator =
  (ClassConstructor, name, descriptor) => decoratedDescriptor | undefined

declare staticMethodDecorator =
  (ClassConstructor, name, descriptor) => decoratedDescriptor | undefined