package de.gecheckt.pdf.umbenenner.application.port.in;

/**
 * Versiegeltes Ergebnis-Interface für eine manuelle Dateiumbenennung via
 * {@link ManualFileRenameUseCase}.
 * <p>
 * Mögliche Ergebnisse:
 * <ul>
 *   <li>{@link ManualFileRenameSuccess} – Umbenennung war erfolgreich (ggf. mit Suffix).</li>
 *   <li>{@link ManualFileRenameNoOpIdenticalTarget} – keine Aktion erforderlich, da die
 *       Zieldatei bereits denselben Inhalt hat.</li>
 *   <li>{@link ManualFileRenameDocumentNotFound} – das Dokument wurde in der Persistenz
 *       nicht gefunden.</li>
 *   <li>{@link ManualFileRenameInvalidState} – das Dokument befindet sich in einem
 *       ungültigen Zustand für eine Umbenennung.</li>
 *   <li>{@link ManualFileRenameSourceFileMissing} – die bisherige Zieldatei existiert
 *       im Zielordner nicht mehr.</li>
 *   <li>{@link ManualFileRenameFileSystemFailure} – ein technischer Dateisystemfehler
 *       ist aufgetreten.</li>
 *   <li>{@link ManualFileRenamePersistenceFailure} – die Persistenzaktualisierung ist
 *       fehlgeschlagen (Dateisystem ggf. zurückgerollt).</li>
 * </ul>
 */
public sealed interface ManualFileRenameResult
        permits ManualFileRenameSuccess,
                ManualFileRenameNoOpIdenticalTarget,
                ManualFileRenameDocumentNotFound,
                ManualFileRenameInvalidState,
                ManualFileRenameSourceFileMissing,
                ManualFileRenameFileSystemFailure,
                ManualFileRenamePersistenceFailure {
}
