import { type AnySoloEvent, type SoloEventType } from './event-types/event-types.js';
import { type SoloLogger } from '../logging/solo-logger.js';
import { type SoloEventBus } from './solo-event-bus.js';
import { Duration } from '../time/duration.js';
export declare class DefaultSoloEventBus implements SoloEventBus {
    private readonly logger;
    private readonly emitter;
    private readonly history;
    constructor(logger: SoloLogger);
    emit(event: AnySoloEvent): void;
    on<T extends AnySoloEvent>(type: SoloEventType, handler: (event: T) => void): void;
    off<T extends AnySoloEvent>(type: SoloEventType, handler: (event: T) => void): void;
    clearHistory(type?: SoloEventType): void;
    waitFor<T extends AnySoloEvent>(type: SoloEventType, predicate?: (event: T) => boolean, timeout?: Duration): Promise<T>;
}
