interface Constructor<T> {
    new (...args: any[]): T;
}
interface ClassDescriptor {
    elements: ClassElement[];
    finisher?: <T>(clazz: Constructor<T>) => undefined | Constructor<T>;
    kind: 'class';
}
interface ClassElement {
    descriptor?: PropertyDescriptor;
    extras?: ClassElement[];
    finisher?: <T>(clazz: Constructor<T>) => undefined | Constructor<T>;
    initializer?: Function;
    key: PropertyKey;
    kind: 'field' | 'method';
    placement: 'static' | 'prototype' | 'own';
}
/**
 * Class decorator factory that defines the decorated class as a custom element.
 *
 * ```
 * @customElement('my-element')
 * class MyElement {
 *   render() {
 *     return html``;
 *   }
 * }
 * ```
 * @category Decorator
 * @param tagName The name of the custom element to define.
 */
export declare const customElement: (tagName: string) => (classOrDescriptor: Constructor<HTMLElement> | ClassDescriptor) => any;
declare global {
    interface Window {
        ControlMgr: any;
        Matrix3: any;
    }
}
export {};
