import '../../models/user_model.dart';

/// State untuk provider autentikasi ([authProvider]).
/// Merepresentasikan seluruh kemungkinan kondisi autentikasi yang dapat terjadi di aplikasi.
sealed class AuthState {
  const AuthState();
}

/// Kondisi awal atau idle, di mana tidak ada aksi autentikasi yang sedang berjalan.
class AuthIdle extends AuthState {
  const AuthIdle();
}

/// Kondisi loading, aktif ketika sistem sedang memproses login, pendaftaran akun (register),
/// atau pengecekan sesi aktif di latar belakang.
class AuthLoading extends AuthState {
  const AuthLoading();
}

/// Kondisi sukses, dipicu ketika pengguna berhasil login atau mendaftar akun.
/// Membawa data profil pengguna berupa objek [UserModel].
class AuthSuccess extends AuthState {
  /// Objek data pengguna yang sedang aktif login.
  final UserModel user;
  const AuthSuccess(this.user);
}

/// Kondisi gagal, dipicu ketika terjadi kesalahan selama proses autentikasi (misal: password salah).
/// Membawa pesan kesalahan ([message]) untuk ditampilkan ke antarmuka pengguna (UI).
class AuthError extends AuthState {
  /// Pesan kegagalan/error yang ramah bagi pengguna.
  final String message;
  const AuthError(this.message);
}
