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

/// Kontrak/Interface abstrak untuk Layanan Autentikasi.
/// Mendefinisikan method standar yang wajib diimplementasikan oleh penyedia layanan autentikasi (misal: Supabase, Firebase, atau Custom API).
abstract class AuthService {
  /// Melakukan login menggunakan email dan password. Mengembalikan data profil user [UserModel].
  Future<UserModel> login(String email, String password);
  
  /// Mendaftarkan akun baru dengan Nama, Email, dan Password.
  Future<UserModel> register(String name, String email, String password);
  
  /// Menghubungkan perangkat keras ESP32 dengan akun user berdasarkan kode klaim.
  Future<String> claimDevice(String userId, String claimCode);
  
  /// Keluar dari sesi login saat ini dan membersihkan token autentikasi.
  Future<void> logout();
  
  /// Memeriksa status sesi yang tersimpan di lokal perangkat saat aplikasi pertama kali dibuka.
  Future<UserModel?> checkSession();
}
