///
import { CommandManager, AsyncTaskData } from './action/actionManager';
import * as RX from 'rxjs';
import { RequestData } from "../../pipeline/common";
import { UserContextData } from "../../security/securityContext";
import { EventEmitter } from 'events';
export interface EventData extends RequestData {
value?: any;
source: string;
error?: string;
userContext: UserContextData;
startedAt: string;
completedAt?: string;
status: string;
}
export interface ConsumeEventDefinition {
name?: string;
description: string;
subscribeToDomain?: string;
subscribeToAction?: string;
subscribeToSchema?: string;
filter?: (observable: RX.Observable) => RX.Observable;
/**
* Distribution mode: once or many (default)
*/
distributionMode?: "once" | "many" | undefined;
distributionKey?: string;
metadata?: any;
}
export interface EventDefinition {
description?: string;
schema?: string;
metadata?: any;
subscribeToDomain?: string;
}
export declare enum EventNotificationMode {
never = 0,
always = 1,
successOnly = 2,
}
export declare class MessageBus {
private manager;
private commandBus;
private eventBus;
private _events;
static readonly LocalEvents: EventEmitter;
/**
* Get event queue for a domain
*/
getEventQueue(domain: string, distributionKey: string): RX.Observable;
constructor(manager: CommandManager, hasAsyncActions: boolean);
private consumeEvent(event, distributionKey);
pushTask(command: AsyncTaskData): void;
sendEvent(event: EventData): EventData;
emitLocalEvent(evt: any): void;
}