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