import * as Component from './Component'; import { Event as E } from './Event'; import { Typer } from 'cqes-type'; export declare type eventHandler = (event: E) => Promise; export declare enum EventHandling { Ignored = 0, Handled = 1 } export interface Transport { start: () => Promise; save: (events: Array) => Promise; readAllFrom: (position: number, handler: eventHandler) => Promise; readCategoryFrom: (category: string, position: number, handler: eventHandler) => Promise; readStreamFrom: (category: string, id: string, number: number, handler: eventHandler) => Promise; readStreamLast: (category: string, id: string, count: number) => Promise>; subscribe: (category: string, handler: eventHandler) => Promise; psubscribe: (name: string, category: string, handler: eventHandler) => Promise; stop: () => Promise; } export interface Subscription { abort: () => Promise; } export interface EventTypes { [name: string]: Typer; } export interface props extends Component.props { transport: string; originContext?: string; category: string; events: EventTypes; } export declare class EventBus extends Component.Component { protected transport: Transport; protected events: EventTypes; readonly category: string; constructor(props: props); start(): Promise; subscribe(handler: eventHandler): Promise; psubscribe(name: string, handler: eventHandler): Promise; emit(category: string, streamId: string, number: number, name: string, data: any, meta?: any): Promise; emitEvents(events: Array): Promise; readAllFrom(position: number, handler: eventHandler): Promise; readCategoryFrom(category: string, position: number, handler: eventHandler): Promise; readStreamFrom(category: string, streamId: string, number: number, handler: eventHandler): Promise; readStreamLast(category: string, streamId: string, count: number): Promise[]>; typeEvent(event: E): E; stop(): Promise; }