import type { z } from 'zod/v4'; import type { PublisherBaseEventType } from '../events/baseEventSchemas.ts'; import type { EventRegistry } from '../events/EventRegistry.ts'; import type { CommonEventDefinition } from '../events/eventTypes.ts'; import type { MetadataFiller } from '../messages/MetadataFiller.ts'; import type { AsyncPublisher, SyncPublisher } from '../types/MessageQueueTypes.ts'; import type { CommonCreationConfigType, QueuePublisherOptions } from '../types/queueOptionsTypes.ts'; import type { PublicHandlerSpy } from './HandlerSpy.ts'; export type MessagePublishType = z.input; export type MessageSchemaType = z.input; export type AbstractPublisherFactory | SyncPublisher, DependenciesType, CreationConfigType extends CommonCreationConfigType, QueueLocatorType extends object, EventType extends PublisherBaseEventType, OptionsType extends Omit, 'messageSchemas' | 'creationConfig' | 'locatorConfig'>> = { buildPublisher(dependencies: DependenciesType, options: OptionsType): PublisherType; }; export declare abstract class AbstractPublisherManager | SyncPublisher, DependenciesType, CreationConfigType extends CommonCreationConfigType, QueueLocatorType extends object, EventType extends PublisherBaseEventType, OptionsType extends Omit, 'messageSchemas' | 'creationConfig' | 'locatorConfig'>, SupportedEventDefinitions extends EventDefinitionType[], MetadataType, MessageOptionsType> { private readonly publisherFactory; protected readonly newPublisherOptions: OptionsType; protected readonly metadataFiller: MetadataFiller, MetadataType>; protected readonly metadataField: string; protected readonly targetToEventMap: Record; protected readonly isAsync: boolean; protected targetToPublisherMap: Record; private readonly publisherDependencies; protected constructor({ publisherFactory, newPublisherOptions, publisherDependencies, metadataFiller, eventRegistry, metadataField, isAsync, }: { publisherFactory: AbstractPublisherFactory; newPublisherOptions: OptionsType; publisherDependencies: DependenciesType; metadataFiller: MetadataFiller, MetadataType>; eventRegistry: EventRegistry; metadataField: string; isAsync: boolean; }); protected abstract resolveEventTarget(event: EventDefinitionType): EventTargets | undefined; protected abstract resolveCreationConfig(eventTarget: string): CreationConfigType; protected resolvePublisherConfigOverrides(_eventTarget: string): Partial; private registerEvents; private registerPublishers; initRegisteredPublishers(publishersToInit?: EventTargets[]): Promise; injectPublisher(eventTarget: EventTargets, publisher: PublisherType): void; injectEventDefinition(eventDefinition: EventDefinitionType): void; publish(eventTarget: EventTargets, message: MessagePublishType, precedingEventMetadata?: Partial, messageOptions?: MessageOptionsType): Promise>; protected resolveMessageDefinition(eventTarget: EventTargets, message: MessagePublishType): EventDefinitionType | undefined; protected resolveMessage(messageDefinition: EventDefinitionType | undefined, message: MessagePublishType, precedingEventMetadata?: Partial): MessageSchemaType; resolveBaseFields(): { id: string; timestamp: string; }; /** * @param eventTarget - topic or exchange */ handlerSpy(eventTarget: EventTargets): PublicHandlerSpy; }