import { EventEmitter } from 'events';
import { BaseComponent } from './base.component';
import { ComponentConfig, ComponentState } from '../types/monitoring';
export interface ComponentFactory {
    type: string;
    create(config: ComponentConfig, eventBus: EventEmitter): BaseComponent;
}
export declare class ComponentRegistry {
    private factories;
    private components;
    private eventBus;
    constructor(eventBus: EventEmitter);
    private setupEventListeners;
    registerFactory(factory: ComponentFactory): void;
    unregisterFactory(type: string): void;
    getRegisteredTypes(): string[];
    hasFactory(type: string): boolean;
    createComponent(config: ComponentConfig): BaseComponent;
    getComponent(componentId: string): BaseComponent | undefined;
    getAllComponents(): BaseComponent[];
    getComponentsByType(type: string): BaseComponent[];
    getComponentStates(): ComponentState[];
    removeComponent(componentId: string): boolean;
    removeAllComponents(): void;
    getComponentCount(): number;
    getHealthStatus(): {
        total: number;
        running: number;
        error: number;
        initializing: number;
        paused: number;
        destroyed: number;
    };
    destroy(): void;
}
//# sourceMappingURL=component-registry.d.ts.map