import { ILookupRegistry } from '../../api/ILookupRegistry';
import { ClassType } from '../Constants';
import { IRegistryOptions } from './IRegistryOptions';
export declare class RegistryFactory {
    static $types: {
        pattern: string | RegExp;
        registryClass: ClassType<ILookupRegistry>;
    }[];
    static $handles: {
        [key: string]: ILookupRegistry;
    };
    /**
     * Return the registry handling schema/objects of given context or if not exists the generic default namescaped registry
     *
     * @param namespace
     */
    static get<T extends ILookupRegistry>(namespace?: string, options?: IRegistryOptions): T;
    /**
     * Remove registry from handles list
     *
     * @param namespace
     */
    static remove(namespace: string): void;
    /**
     * Register a special registry for a given namespace or pattern, remove previous if existed
     *
     * @param namespace
     * @param registry
     */
    static register(namespace: string | RegExp, registryClass: ClassType<ILookupRegistry>): void;
    /**
     * Return active and registered namespaces
     */
    static getNamespaces(): string[];
    static getTargets(): any[];
    /**
     * Return all declared namespaces
     */
    static getDeclaredNamespaces(): {
        target: Function;
        namespace: string;
    }[];
    static reset(): void;
}
