import { ConcreteType } from '@cashfarm/lang';
import { IDomainEvent } from '../domain';
import { IEventBus } from '../eventSourcing/iEventBus';
import { IMessageTransport } from './transports/iMessageTransport';
import { IHandlerFunction } from './iHandlerFunction';
export declare class EventBus implements IEventBus {
    private serviceName;
    private transport;
    constructor(serviceName: string, transport: IMessageTransport);
    subscribeToTopic(topic: string, handler: IHandlerFunction): void;
    subscribe(evtClass: IDomainEvent & ConcreteType<{}>, handler: Object): void;
    unsubscribe(evtClass: IDomainEvent & ConcreteType<{}>, handler: any): void;
    publish(evt: IDomainEvent): void;
    private getEventName(evt);
}
