import * as Component from './Component'; import { Query } from './Query'; import { Reply } from './Reply'; import { Typer } from 'cqes-type'; export declare type queryHandler = (query: Query) => Promise; export interface QueryTypes { [name: string]: Typer; } export interface ReplyTypes { [name: string]: Typer; } export interface Subscription { abort: () => Promise; } export interface Transport { start: () => Promise; serve: (handler: queryHandler) => Promise; request: queryHandler; stop: () => Promise; } export interface props extends Component.props { transport: string; mode: 'client' | 'server'; view?: string; queries?: QueryTypes; replies?: ReplyTypes; } export declare class QueryBus extends Component.Component { protected transport: Transport; protected queries: QueryTypes; protected replies: ReplyTypes; protected view: string; constructor(props: props); start(): Promise; serve(handler: queryHandler): Promise; request(method: string, data: any, meta?: any): Promise; requestQuery(query: Query): Promise; stop(): Promise; }