package de.krisenvorrat.app.domain.model

internal sealed class SyncError(message: String, cause: Throwable? = null) : Exception(message, cause) {
    class ConnectionError(cause: Throwable? = null) :
        SyncError("Server nicht erreichbar", cause)

    class Timeout(cause: Throwable? = null) :
        SyncError("Zeitüberschreitung bei der Verbindung zum Server", cause)

    class AuthError :
        SyncError("Authentifizierung fehlgeschlagen – Sitzung abgelaufen oder nicht angemeldet")

    class ServerError(val statusCode: Int, message: String) :
        SyncError("Serverfehler ($statusCode): $message")

    class NotConfigured(detail: String) :
        SyncError("Sync nicht konfiguriert: $detail")

    class Unknown(cause: Throwable) :
        SyncError("Unbekannter Fehler: ${cause.message}", cause)
}
