import { ModuleRef } from '@nestjs/core';
import { Observable } from 'rxjs';
export interface Event {
    name: string;
    payload: any;
    timestamp: Date;
    source?: string;
    metadata?: Record<string, any>;
}
export type EventHandler<T extends Event = Event> = (event: T) => Promise<void> | void;
export declare class EventBusService {
    private readonly moduleRef;
    private readonly logger;
    private readonly eventStream;
    private readonly subscriptions;
    private readonly handlerClassMap;
    constructor(moduleRef: ModuleRef);
    register(eventName: string, handler: EventHandler): void;
    unregister(eventName: string, handler: EventHandler): void;
    registerHandlers(instance: any, prefix?: string): void;
    unregisterHandlers(instance: any): void;
    publish<T extends Event>(event: T): void;
    ofType<T extends Event>(eventName: string): Observable<T>;
    private notifyHandlers;
}
