using System;
using Svrnty.CQRS.Events.Abstractions.Models;
using Svrnty.CQRS.Events.Abstractions.EventStore;
namespace Svrnty.CQRS.Events.Abstractions.Models;
///
/// Represents a stored event with its metadata.
/// Used for event persistence and catch-up delivery.
///
public sealed class StoredEvent
{
///
/// Unique identifier for this event.
///
public required string EventId { get; init; }
///
/// Correlation ID linking this event to a command.
///
public required string CorrelationId { get; init; }
///
/// Type name of the event (e.g., "UserInvitationSentEvent").
///
public required string EventType { get; init; }
///
/// Global sequence number for ordering.
///
public required long Sequence { get; init; }
///
/// The actual event instance.
///
public required ICorrelatedEvent Event { get; init; }
///
/// When this event occurred.
///
public required DateTimeOffset OccurredAt { get; init; }
///
/// When this event was stored.
///
public required DateTimeOffset StoredAt { get; init; }
}