import type { CausationId, CorrelationId, EventId, PrincipalId, ProjectId } from "./ids.js";

export interface BusinessEvent<TPayload = unknown> {
  readonly id: EventId;
  readonly type: string;
  readonly schemaVersion: number;
  readonly occurredAt: string;
  readonly aggregateType: string;
  readonly aggregateId: string;
  readonly aggregateRevision: number;
  readonly projectId?: ProjectId;
  readonly principalId?: PrincipalId;
  readonly correlationId: CorrelationId;
  readonly causationId?: CausationId;
  readonly payload: TPayload;
}
