export interface BaseDecorationOptions { metatable ? : Record < any , any > ; } export class Decoration < T = any , K extends BaseDecorationOptions = BaseDecorationOptions > { public constructor ( public target , public options ) { } } export function decorate < T extends BaseDecorationOptions = BaseDecorationOptions > ( target , options ) { return new Decoration < any , T > ( target , options ) ; }