using Prefab.Domain.Common;
namespace Prefab.Domain.Events;
///
/// Event raised whenever a generic attribute is added, updated, or removed from an entity.
///
/// The entity that owns the attribute.
/// The attribute key.
/// The attribute value involved in the change.
/// Indicates the type of mutation performed.
public record GenericAttributeChangedEvent(object Entity, string Key, object? Value, GenericAttributeChangeType ChangeType) : Event;
///
/// Represents the types of mutations that can occur for a generic attribute.
///
public enum GenericAttributeChangeType
{
/// Attribute was added for the first time.
Add,
/// Attribute was updated with a new value.
Update,
/// Attribute was removed.
Remove
}