import { type CommonLogger, type ErrorReporter, type TransactionObservabilityManager } from '@lokalise/node-core'; import type { ConsumerMessageMetadataType } from '@message-queue-toolkit/schemas'; import type { MetadataFiller } from '../messages/MetadataFiller.ts'; import type { HandlerSpy, HandlerSpyParams, PublicHandlerSpy } from '../queues/HandlerSpy.ts'; import type { EventRegistry } from './EventRegistry.ts'; import type { AnyEventHandler, CommonEventDefinition, CommonEventDefinitionConsumerSchemaType, CommonEventDefinitionPublisherSchemaType, EventTypeNames, SingleEventHandler } from './eventTypes.ts'; export type DomainEventEmitterDependencies = { eventRegistry: EventRegistry; metadataFiller: MetadataFiller; logger: CommonLogger; errorReporter?: ErrorReporter; transactionObservabilityManager?: TransactionObservabilityManager; }; export declare class DomainEventEmitter { private readonly eventRegistry; private readonly metadataFiller; private readonly logger; private readonly errorReporter?; private readonly transactionObservabilityManager?; private readonly _handlerSpy?; private readonly eventHandlerMap; private readonly inProgressBackgroundHandlerByEventId; constructor(deps: DomainEventEmitterDependencies, options?: { handlerSpy?: HandlerSpy | HandlerSpyParams | boolean; }); get handlerSpy(): PublicHandlerSpy>; dispose(): Promise; emit(supportedEvent: SupportedEvent, data: Omit, 'type'>, precedingMessageMetadata?: Partial): Promise, 'type'>>; /** * Register handler for a specific event */ on>(eventTypeName: EventTypeName, handler: SingleEventHandler, isBackgroundHandler?: boolean): void; /** * Register handler for multiple events */ onMany>(eventTypeNames: EventTypeName[], handler: SingleEventHandler, isBackgroundHandler?: boolean): void; /** * Register handler for all events supported by the emitter */ onAny(handler: AnyEventHandler, isBackgroundHandler?: boolean): void; private handleEvent; private executeEventHandler; private buildTransactionKey; }