/**
 * Tool Event Bus - EDA for Tool Registry
 * @module core/tools/tool-event-bus
 * @since v0.35.0
 */
import type { Logger } from '../../utils/logger.js';
import type { ToolEvent, ToolEventType, ToolEventHandler, ToolIndexedEvent, ToolLoadedEvent, ToolSelectedEvent, RegistryRebuiltEvent } from './types/tool-registry-types.js';
export declare class ToolEventBus {
    private emitter;
    private logger;
    private handlerMap;
    constructor(options?: {
        logger?: Logger;
    });
    on<T extends ToolEventType>(eventType: T, handler: ToolEventHandler<Extract<ToolEvent, {
        type: T;
    }>>): void;
    once<T extends ToolEventType>(eventType: T, handler: ToolEventHandler<Extract<ToolEvent, {
        type: T;
    }>>): void;
    off<T extends ToolEventType>(eventType: T, handler: ToolEventHandler<Extract<ToolEvent, {
        type: T;
    }>>): void;
    emit(event: ToolEvent): void;
    emitAndWait(event: ToolEvent): Promise<void>;
    removeAllListeners(eventType?: ToolEventType): void;
    listenerCount(eventType: ToolEventType): number;
    onToolIndexed(handler: ToolEventHandler<ToolIndexedEvent>): void;
    onToolLoaded(handler: ToolEventHandler<ToolLoadedEvent>): void;
    onToolSelected(handler: ToolEventHandler<ToolSelectedEvent>): void;
    onRegistryRebuilt(handler: ToolEventHandler<RegistryRebuiltEvent>): void;
}
//# sourceMappingURL=tool-event-bus.d.ts.map