import { Types } from "..";
import { SubscriberForInboxEvents, SubscriberForUserEvents, SubscriberForEvents, SubscriberForKvdbEvents, SubscriberForStoreEvents, SubscriberForThreadsEvents } from "./subscriptions";
import { BaseEventDispatcherManager, ConnectionEventsManager, CustomEventsManager, InboxEventsManager, KvdbEventsManager, StoreEventsManager, ThreadEventsManager, UserEventsManager } from "./managers";
export declare class EventManager {
    private _isEventLoopRunning;
    dispatchers: ((event: Types.Event) => void)[];
    private eventsQueue;
    constructor();
    private listenForEvents;
    static startEventLoop(eventQueue: {
        waitEvent: () => Promise<Types.Event>;
    }): EventManager;
    stopEventLoop(): void;
    removeAllDispatchers: () => void;
    protected onEvent(event: Types.Event): void;
    registerDispatcher(manager: BaseEventDispatcherManager): void;
    getThreadEventManager(threadApi: SubscriberForThreadsEvents): ThreadEventsManager;
    getStoreEventManager(storeApi: SubscriberForStoreEvents): StoreEventsManager;
    getKvdbEventManager(kvdbApi: SubscriberForKvdbEvents): KvdbEventsManager;
    getInboxEventManager(inboxApi: SubscriberForInboxEvents): InboxEventsManager;
    getCustomEventsManager(eventApi: SubscriberForEvents): CustomEventsManager;
    getConnectionEventManager(connectionId: string): ConnectionEventsManager;
    getUserEventsManager(connectionApi: SubscriberForUserEvents): UserEventsManager;
}
