import Foundation

enum VoiceInkEngineError: Error, Identifiable {
    case modelLoadFailed
    case transcriptionFailed
    case whisperCoreFailed
    case unzipFailed
    case unknownError

    var id: String { UUID().uuidString }
}

extension VoiceInkEngineError: LocalizedError {
    var errorDescription: String? {
        switch self {
        case .modelLoadFailed:
            return "Kon het transcriptiemodel niet laden."
        case .transcriptionFailed:
            return "Kon de audio niet transcriberen."
        case .whisperCoreFailed:
            return "De kern van de transcriptie-engine is mislukt."
        case .unzipFailed:
            return "Kon het gedownloade Core ML-model niet uitpakken."
        case .unknownError:
            return "Er is een onbekende fout opgetreden."
        }
    }

    var recoverySuggestion: String? {
        switch self {
        case .modelLoadFailed:
            return "Selecteer een ander model of download het huidige model opnieuw."
        case .transcriptionFailed:
            return "Controleer het standaardmodel en probeer het opnieuw. Als het probleem aanhoudt, probeer dan een ander model."
        case .whisperCoreFailed:
            return "Dit kan gebeuren door een probleem met de audio-opname of onvoldoende systeembronnen. Probeer het opnieuw of herstart de app."
        case .unzipFailed:
            return "Het gedownloade Core ML-modelarchief is mogelijk beschadigd. Verwijder het model en download het opnieuw. Controleer de beschikbare schijfruimte."
        case .unknownError:
            return "Herstart de app. Als het probleem aanhoudt, neem dan contact op met support."
        }
    }
}

// Backward compatibility
typealias WhisperStateError = VoiceInkEngineError
