import 'package:shuffle/core/result/result.dart'; import 'package:shuffle/features/auth/domain/auth_failure.dart'; import 'package:shuffle/features/auth/domain/auth_status.dart'; import 'package:shuffle/features/auth/domain/email_link_type.dart'; import 'package:shuffle/features/auth/domain/registration_input.dart'; /// Zugriff auf die Anmeldung (Implementierung: Supabase/GoTrue). abstract interface class AuthRepository { /// Aktueller Status gefolgt von allen Änderungen. Stream watchStatus(); /// Aktueller Status, synchron (für Router-Redirects). AuthStatus get currentStatus; /// Registriert ein Konto. Jede 200-Antwort ist Erfolg; ob die Adresse schon /// existiert, wird nicht ausgewertet (KTO-01 Kriterium 4). Future> signUp(RegistrationInput input); Future> resendConfirmation(String email); Future> signIn(String email, String password); Future> requestPasswordReset(String email); Future> verifyEmailLink( String tokenHash, EmailLinkType type, ); Future> setNewPassword(String password); /// Beendet den Recovery-Guard, nachdem das neue Passwort gesetzt ist (die /// Sitzung bleibt bestehen). Ohne laufende Recovery oder vor dem /// Passwortwechsel ohne Wirkung: Der Guard lässt sich nicht überspringen. void finishPasswordRecovery(); /// Meldet lokal ab (u. a. beim Abbruch der Recovery). Fehler werden nur /// geloggt. Future signOut(); }