import { BaseEntity } from "./base-entity.js"; import { BaseProps, IDomainEvent, IDomainEventBus } from "../types/index.js"; /** * Base class for Aggregates that adds domain event management capabilities. * In Domain-Driven Design (DDD), only Aggregates (aggregate roots) should emit domain events. * Regular Entities and Value Objects should NOT manage domain events. */ export declare abstract class BaseAggregate extends BaseEntity { /** * Add a domain event to this aggregate. * Safe to call inside the `onCreate` hook. */ protected addDomainEvent(event: IDomainEvent): void; /** * Dispatch all events through the event bus */ dispatchAll(bus: IDomainEventBus): Promise; /** * Get all uncommitted domain events */ getUncommittedEvents(): IDomainEvent[]; /** * Clear all domain events (call after publishing) */ clearEvents(): void; /** * Check if aggregate has uncommitted events */ hasUncommittedEvents(): boolean; /** * Get a domain event by name */ getEvent(eventName: string): IDomainEvent | undefined; /** * Check if an event has been added to the aggregate */ hasEvent(eventName: string): boolean; } //# sourceMappingURL=base-aggregate.d.ts.map