namespace OmsorgCore.Application.Abstractions;

public record ValueListUsageEntry(string EntityType, Guid EntityId, string DisplayLabel);

/// <summary>
/// Prüft, ob ein bestimmter <c>ValueListItem</c>-Wert (identifiziert über den <c>Key</c> seiner
/// Liste) noch irgendwo verwendet wird — Voraussetzung dafür, dass <c>ValueListService.DeleteItemAsync</c>
/// das Löschen verweigert, solange Treffer existieren (Nutzeranforderung: "erst überall entfernen").
/// Eine Implementierung je Liste, registriert in Infrastructure/DependencyInjection.cs.
/// </summary>
public interface IValueListUsageChecker
{
    string Key { get; }

    Task<IReadOnlyList<ValueListUsageEntry>> FindUsagesAsync(Guid itemId, string itemValue, CancellationToken cancellationToken = default);
}
