import { DomainEvent } from "../domain/domain-event"; export interface DomainEventConsumer { handle(event: TEvent): Promise | void; } export declare abstract class DomainEventBus { static readonly Token = "DomainEventBus"; abstract publish(event: DomainEvent): Promise; abstract subscribe(eventType: new (...args: unknown[]) => TEvent, consumer: DomainEventConsumer): Promise | void; } export declare class InMemoryDomainEventBus extends DomainEventBus { private readonly subscribers; publish(event: DomainEvent): Promise; subscribe(eventType: new (...args: unknown[]) => TEvent, consumer: DomainEventConsumer): void; consumerCount(eventType: new (...args: unknown[]) => DomainEvent): number; }