type Constructor = new (...args: any[]) => T; interface ClassDescriptor { kind: 'class'; elements: ClassElement[]; finisher?: (clazz: Constructor) => undefined | Constructor; } interface ClassElement { kind: 'field' | 'method'; key: PropertyKey; placement: 'static' | 'prototype' | 'own'; initializer?: Function; extras?: ClassElement[]; finisher?: (clazz: Constructor) => undefined | Constructor; descriptor?: PropertyDescriptor; } export declare function customElement(tagName: string): (classOrDescriptor: Constructor | ClassDescriptor) => any; export {};