export interface ClassDescriptor { kind: 'class'; elements: ClassElement[]; finisher?: (classDef: Constructor) => undefined | Constructor; } export interface ClassElement { kind: 'field' | 'method'; key: PropertyKey; placement: 'static' | 'prototype' | 'own'; initializer?: any; extras?: ClassElement[]; finisher?: (classDef: Constructor) => undefined | Constructor; descriptor?: PropertyDescriptor; } export declare type Constructor = { new (...args: any[]): T; }; export declare const classStandardDecorator: (value: any, descriptor: ClassDescriptor, fn: (value: any, classDef: Constructor) => any) => { kind: "class"; elements: ClassElement[]; finisher(classDef: Constructor): void; }; export declare const classLegacyDecorator: (value: any, classDef: Constructor, fn: (value: any, classDef: Constructor) => any) => any;