import { Type } from '@nestjs/common'; import { ModuleRef } from '@nestjs/core'; import 'reflect-metadata'; import { IQuery, IQueryBus, IQueryHandler, IQueryPublisher, IQueryResult } from './interfaces'; import { ObservableBus } from './utils/observable-bus'; export declare type QueryHandlerType = Type>; export declare class QueryBus extends ObservableBus implements IQueryBus { private readonly moduleRef; private handlers; private _publisher; constructor(moduleRef: ModuleRef); get publisher(): IQueryPublisher; set publisher(_publisher: IQueryPublisher); execute(query: T): Promise; bind(handler: IQueryHandler, name: string): void; register(handlers?: QueryHandlerType[]): void; resolveQueryTypeByName(name: string): Type; protected registerHandler(handler: QueryHandlerType): void; private getQueryName; private reflectQuery; private reflectQueryName; private useDefaultPublisher; }