import { ImplementedRuntimeComponent, ImplementedRuntimeTraitFactory, ImplementedRuntimeTrait, ImplementedRuntimeModule, UtilMethodFactory, UIServices } from '../types';
import { ImplementedUtilMethod } from '../types/utilMethod';
import { UtilMethodManager } from './UtilMethodManager';
export declare type SunmaoLib = {
    components?: ImplementedRuntimeComponent<string, string, string, string>[];
    traits?: ImplementedRuntimeTraitFactory[];
    modules?: ImplementedRuntimeModule[];
    utilMethods?: UtilMethodFactory[];
};
declare type AnyImplementedRuntimeComponent = ImplementedRuntimeComponent<string, string, string, string>;
export declare type RegistryInterface = InstanceType<typeof Registry>;
export declare class Registry {
    private utilMethodManager;
    components: Map<string, Map<string, AnyImplementedRuntimeComponent>>;
    traits: Map<string, Map<string, ImplementedRuntimeTrait>>;
    modules: Map<string, Map<string, import("@sunmao-ui/core").RuntimeModule>>;
    utilMethods: Map<string, Map<string, ImplementedUtilMethod<any>>>;
    private services;
    constructor(services: Omit<UIServices, 'registry'>, utilMethodManager: UtilMethodManager);
    registerComponent(c: AnyImplementedRuntimeComponent): void;
    getComponent(version: string, name: string): AnyImplementedRuntimeComponent;
    getComponentByType(type: string): AnyImplementedRuntimeComponent;
    getAllComponents(): AnyImplementedRuntimeComponent[];
    registerTrait(t: ImplementedRuntimeTraitFactory): void;
    getTrait(version: string, name: string): ImplementedRuntimeTrait;
    getTraitByType(type: string): ImplementedRuntimeTrait;
    getAllTraitTypes(): string[];
    getAllTraits(): ImplementedRuntimeTrait[];
    registerModule(c: ImplementedRuntimeModule, overWrite?: boolean): void;
    getModule(version: string, name: string): ImplementedRuntimeModule;
    getModuleByType(type: string): ImplementedRuntimeModule;
    unregisterAllModules(): void;
    unregisterAllTraits(): void;
    registerUtilMethod<T>(m: ImplementedUtilMethod<T>): void;
    getUtilMethod(version: string, name: string): ImplementedUtilMethod<any> | null;
    getUtilMethodByType(type: string): ImplementedUtilMethod<any> | null;
    getAllUtilMethods(): ImplementedUtilMethod[];
    installLib(lib: SunmaoLib): void;
}
export declare function initRegistry(services: Omit<UIServices, 'registry'>, utilMethodManager: UtilMethodManager): Registry;
export {};
