export interface DomainEvent { readonly eventType: string; readonly aggregateId: string; readonly eventData: T; readonly occurredAt: Date; } export interface DomainEventPublisher { publish(event: DomainEvent): Promise; }