import { Type } from '@nestjs/common'; import { ModuleRef } from '@nestjs/core'; import { InstanceWrapper } from '@nestjs/core/injector/instance-wrapper'; import 'reflect-metadata'; import { Query } from './classes/query'; import { CqrsModuleOptions, IQuery, IQueryBus, IQueryHandler, IQueryPublisher, IQueryResult } from './interfaces'; import { AsyncContext } from './scopes'; import { ObservableBus } from './utils/observable-bus'; export type QueryHandlerType = Type>; /** * @publicApi */ export declare class QueryBus extends ObservableBus implements IQueryBus { private readonly moduleRef; private readonly options?; private readonly logger; private handlers; private _publisher; constructor(moduleRef: ModuleRef, options?: CqrsModuleOptions | undefined); /** * Returns the publisher. */ get publisher(): IQueryPublisher; /** * Sets the publisher. * Default publisher is `DefaultQueryPubSub` (in memory). * @param _publisher The publisher to set. */ set publisher(_publisher: IQueryPublisher); /** * Executes a query. * @param query The query to execute. */ execute(query: Query): Promise; /** * Executes a query. * @param query The query to execute. */ execute(query: T): Promise; /** * Executes a query. * @param query The query to execute. */ execute(query: Query, asyncContext: AsyncContext): Promise; /** * Executes a query. * @param query The query to execute. */ execute(query: T, asyncContext: AsyncContext): Promise; bind(handler: InstanceWrapper>, queryId: string): void; register(handlers?: InstanceWrapper>[]): void; protected registerHandler(handler: InstanceWrapper>): void; private getQueryId; private reflectQueryId; private useDefaultPublisher; private getQueryName; }