export interface DomainEvent { timestamp: string; aggregateId: string; data: T | null; } export type DomainEventHandler = DomainEvent> = (event: E) => void | Promise; export type EventConstructorContext = { aggregateId: DomainEvent["aggregateId"]; }; /** * Base Domain Event class. * * All Domain Events MUST extend this class. */ export declare abstract class AbstractDomainEvent implements DomainEvent { readonly data: DomainEvent["data"]; readonly timestamp: DomainEvent["timestamp"]; readonly aggregateId: DomainEvent["aggregateId"]; constructor(ctx: EventConstructorContext, data?: T); } //# sourceMappingURL=domain-event.d.ts.map