import { ClassManager } from './clazz.js'; 
 | 
import { ComponentOption, ComponentMainType, ComponentSubType } from './types.js'; 
 | 
/** 
 | 
 * @public 
 | 
 * @param {string} type 
 | 
 * @return {string} 
 | 
 */ 
 | 
export declare function getUID(type: string): string; 
 | 
export interface SubTypeDefaulter { 
 | 
    (option: ComponentOption): ComponentSubType; 
 | 
} 
 | 
export interface SubTypeDefaulterManager { 
 | 
    registerSubTypeDefaulter: (componentType: string, defaulter: SubTypeDefaulter) => void; 
 | 
    determineSubType: (componentType: string, option: ComponentOption) => string; 
 | 
} 
 | 
/** 
 | 
 * Implements `SubTypeDefaulterManager` for `target`. 
 | 
 */ 
 | 
export declare function enableSubTypeDefaulter(target: SubTypeDefaulterManager & ClassManager): void; 
 | 
export interface TopologicalTravelable<T> { 
 | 
    topologicalTravel: (targetNameList: ComponentMainType[], fullNameList: ComponentMainType[], callback: (this: T, mainType: string, dependencies: string[]) => void, context?: T) => void; 
 | 
} 
 | 
/** 
 | 
 * Implements `TopologicalTravelable<any>` for `entity`. 
 | 
 * 
 | 
 * Topological travel on Activity Network (Activity On Vertices). 
 | 
 * Dependencies is defined in Model.prototype.dependencies, like ['xAxis', 'yAxis']. 
 | 
 * If 'xAxis' or 'yAxis' is absent in componentTypeList, just ignore it in topology. 
 | 
 * If there is circular dependencey, Error will be thrown. 
 | 
 */ 
 | 
export declare function enableTopologicalTravel<T>(entity: TopologicalTravelable<T>, dependencyGetter: (name: ComponentMainType) => ComponentMainType[]): void; 
 | 
export declare function inheritDefaultOption<T, K>(superOption: T, subOption: K): K; 
 |