import { IEventBus, EventSubscriptionCallback, Constructable, Dispatcher, ErrorLogger } from '../index';
import { IDecodedSerializedEventstoreEvent, IEventFactory, IEventstoreEvent } from './interfaces';
import { EventFactoryRespository as Repository } from './factoryRepository';
import { EventstoreClient } from './eventstoreConsumer';
export declare class EventStoreBus<T extends IEventstoreEvent = IEventstoreEvent> implements IEventBus<T> {
    dispatcher: Dispatcher<T>;
    logError: ErrorLogger;
    eventRepository: Repository<T>;
    client: EventstoreClient;
    constructor(client: EventstoreClient, errorLogger: ErrorLogger, eventRepository: Repository<T>);
    on<T1 extends T>(eventType: Constructable<T1>, callback: EventSubscriptionCallback<T1>): void;
    onAny(callback: EventSubscriptionCallback<T>): void;
    publish(event: T): Promise<void>;
    addEventType(event: Constructable<T>, factory: IEventFactory<T>): void;
    protected processEvents(event: IDecodedSerializedEventstoreEvent): Promise<void>;
}
