import * as Component from './Component'; import * as Event from './EventHandlers'; import * as CommandAble from './CommandAble'; import * as QueryAble from './QueryAble'; import * as StateAble from './StateAble'; import { EventBus } from './EventBus'; import { EventHandling } from './EventBus'; import { Event as E } from './Event'; import { State as S } from './State'; import { Typer } from 'cqes-type'; export { Event }; export interface EventBuses { [name: string]: EventBus; } export interface Subscription { abort: () => Promise; } export interface Constructor { new (...a: Array): T; } export interface props extends Component.props, QueryAble.props, CommandAble.props, StateAble.props { eventHandlers: Event.Handlers; eventBuses: EventBuses; subscriptions: Array; } export declare class Service extends Component.Component { protected commandBuses: CommandAble.Buses; protected commandTypes: CommandAble.Types; protected command: (target: string, streamId: string, data: any, meta?: any) => CommandAble.EventEmitter; protected getCommandTyper: (context: string, category: string, order: string) => Typer; protected queryBuses: QueryAble.Buses; protected queryTypes: QueryAble.Types; protected query: (target: string, data: any, meta?: any) => QueryAble.EventEmitter; protected getQueryTyper: (context: string, view: string, method: string) => Typer; protected eventBuses: EventBuses; protected eventHandlers: Event.Handlers; protected repositories: StateAble.Repositories; protected get: (type: Constructor, streamId: string, useCache?: boolean) => Promise>; protected subscriptions: Array; constructor(props: props); start(): Promise; protected getEventHandler(event: E): Event.handler; protected handleServiceEvent(event: E): Promise; stop(): Promise; }