import { ComponentFullType, ComponentTypeInfo, ComponentMainType, ComponentSubType } from './types.js'; 
 | 
declare const IS_EXTENDED_CLASS: "___EC__EXTENDED_CLASS___"; 
 | 
/** 
 | 
 * Notice, parseClassType('') should returns {main: '', sub: ''} 
 | 
 * @public 
 | 
 */ 
 | 
export declare function parseClassType(componentType: ComponentFullType): ComponentTypeInfo; 
 | 
export declare function isExtendedClass(clz: any): boolean; 
 | 
export interface ExtendableConstructor { 
 | 
    new (...args: any): any; 
 | 
    $constructor?: new (...args: any) => any; 
 | 
    extend: (proto: { 
 | 
        [name: string]: any; 
 | 
    }) => ExtendableConstructor; 
 | 
    superCall: (context: any, methodName: string, ...args: any) => any; 
 | 
    superApply: (context: any, methodName: string, args: []) => any; 
 | 
    superClass?: ExtendableConstructor; 
 | 
    [IS_EXTENDED_CLASS]?: boolean; 
 | 
} 
 | 
/** 
 | 
 * Implements `ExtendableConstructor` for `rootClz`. 
 | 
 * 
 | 
 * @usage 
 | 
 * ```ts 
 | 
 * class Xxx {} 
 | 
 * type XxxConstructor = typeof Xxx & ExtendableConstructor 
 | 
 * enableClassExtend(Xxx as XxxConstructor); 
 | 
 * ``` 
 | 
 */ 
 | 
export declare function enableClassExtend(rootClz: ExtendableConstructor, mandatoryMethods?: string[]): void; 
 | 
/** 
 | 
 * A work around to both support ts extend and this extend mechanism. 
 | 
 * on sub-class. 
 | 
 * @usage 
 | 
 * ```ts 
 | 
 * class Component { ... } 
 | 
 * classUtil.enableClassExtend(Component); 
 | 
 * classUtil.enableClassManagement(Component, {registerWhenExtend: true}); 
 | 
 * 
 | 
 * class Series extends Component { ... } 
 | 
 * // Without calling `markExtend`, `registerWhenExtend` will not work. 
 | 
 * Component.markExtend(Series); 
 | 
 * ``` 
 | 
 */ 
 | 
export declare function mountExtend(SubClz: any, SupperClz: any): void; 
 | 
export interface CheckableConstructor { 
 | 
    new (...args: any): any; 
 | 
    isInstance: (ins: any) => boolean; 
 | 
} 
 | 
/** 
 | 
 * Implements `CheckableConstructor` for `target`. 
 | 
 * Can not use instanceof, consider different scope by 
 | 
 * cross domain or es module import in ec extensions. 
 | 
 * Mount a method "isInstance()" to Clz. 
 | 
 * 
 | 
 * @usage 
 | 
 * ```ts 
 | 
 * class Xxx {} 
 | 
 * type XxxConstructor = typeof Xxx & CheckableConstructor; 
 | 
 * enableClassCheck(Xxx as XxxConstructor) 
 | 
 * ``` 
 | 
 */ 
 | 
export declare function enableClassCheck(target: CheckableConstructor): void; 
 | 
export declare type Constructor = new (...args: any) => any; 
 | 
export interface ClassManager { 
 | 
    registerClass: (clz: Constructor) => Constructor; 
 | 
    getClass: (componentMainType: ComponentMainType, subType?: ComponentSubType, throwWhenNotFound?: boolean) => Constructor; 
 | 
    getClassesByMainType: (componentType: ComponentMainType) => Constructor[]; 
 | 
    hasClass: (componentType: ComponentFullType) => boolean; 
 | 
    getAllClassMainTypes: () => ComponentMainType[]; 
 | 
    hasSubTypes: (componentType: ComponentFullType) => boolean; 
 | 
} 
 | 
/** 
 | 
 * Implements `ClassManager` for `target` 
 | 
 * 
 | 
 * @usage 
 | 
 * ```ts 
 | 
 * class Xxx {} 
 | 
 * type XxxConstructor = typeof Xxx & ClassManager 
 | 
 * enableClassManagement(Xxx as XxxConstructor); 
 | 
 * ``` 
 | 
 */ 
 | 
export declare function enableClassManagement(target: ClassManager): void; 
 | 
export {}; 
 |