import { AggregateEvent } from './aggregate-event'; import { AggregateId } from './aggregate-id'; import { AggregateEventType } from './aggregate-event-type'; export declare abstract class AggregateRoot { private readonly type; private readonly aggregateId; private readonly events; protected constructor(aggregateId: I, type: string); abstract createEvent(): AggregateEventType>; getId(): I; getType(): string; getEvents(): ReadonlyArray>; addEvent(event: AggregateEvent): void; addEvent(events: Array>): void; clearEvents(): void; equals(aggregate: AggregateRoot): boolean; }