namespace SchotzIadKmTracker.Api.Services;
///
/// Lecture/écriture de la configuration globale Precision_Distance, et fonction utilitaire
/// pure d'arrondi supérieur (ceiling) réutilisée par tous les points de calcul de distance.
///
public interface IPrecisionDistanceService
{
///
/// Retourne la précision courante (0, 1 ou 2). Crée la ligne singleton avec la valeur
/// par défaut (2) si elle est absente (Exigence 1.2), sur le même modèle que
/// .
///
Task ObtenirAsync(CancellationToken cancellationToken = default);
///
/// Définit la précision. Lève
/// si la valeur n'est pas 0, 1 ou 2 (Exigence 1.6).
///
Task DefinirAsync(int valeur, CancellationToken cancellationToken = default);
///
/// Arrondit une distance brute (km) au supérieur (ceiling) à la précision indiquée.
/// Fonction pure, sans effet de bord, sans accès base — utilisable partout où une
/// distance doit être affichée ou agrégée (Exigences 3.2–3.5, 4.2).
/// Formule : Ceiling(distanceBrute × 10^precision) / 10^precision.
///
decimal ArrondirDistance(decimal distanceBrute, int precision);
}