using TrajetKmTracker.Api.Models.DTOs;
namespace TrajetKmTracker.Api.Services;
///
/// Logique métier du profil utilisateur (singleton Id = 1) : lecture, sauvegarde avec
/// géocodage BAN de l'Adresse_Domicile et détermination de l'état de configuration (onboarding).
///
public interface IProfilService
{
///
/// Retourne le profil (singleton Id = 1). Crée l'enregistrement à la volée s'il est absent
/// afin de garantir qu'un profil vide soit toujours disponible à la lecture.
///
Task GetProfilAsync(CancellationToken cancellationToken = default);
///
/// Sauvegarde le profil. Géocode l'Adresse_Domicile via la BAN : en cas de succès, stocke les
/// coordonnées et positionne DomicileGeocode = true (avec mise en cache de l'adresse) ;
/// en cas d'échec BAN, persiste l'adresse textuelle sans coordonnées et DomicileGeocode = false
/// sans lever d'exception (Requirements 10.2, 10.7, 10.8).
///
Task SaveProfilAsync(SaveProfilDto dto, CancellationToken cancellationToken = default);
///
/// Détermine l'état de configuration du profil (onboarding) :
/// EstConfigure = true si et seulement si un Profil existe avec un Nom ET un Prénom non vides
/// (après trim) ET qu'au moins un Véhicule existe (Property 31, Requirements 16.1, 16.2).
///
Task GetEtatAsync(CancellationToken cancellationToken = default);
}