"""
Détection du composant privilégié (`packaging/linux/meshamoto-helper`), partagée par les
trois backends Linux qui en dépendent : tunnel WireGuard, mode isolation, DNS interne.

Installé par le paquet Arch avec une règle polkit `allow_active`, il permet d'effectuer
ces opérations **sans invite de mot de passe**. Son contrat est décrit en tête du script
lui-même : il n'accepte aucun fichier de configuration, uniquement des paramètres
validés un à un.

Absent — AppImage, lancement depuis les sources, autre distribution — chaque backend
retombe sur son chemin historique (`pkexec wg-quick`, `pkexec nft`, `pkexec cp`), soit
une invite par action. Aucune régression, seulement l'absence du confort.

Module dédié plutôt qu'une constante dans un backend : les trois consommateurs
l'importent, et un `import privileged_helper` (module, pas symbole) permet aux tests de
neutraliser la détection de façon uniforme — un `from ... import helper_available` fige
la référence et rend le patch inopérant.
"""

from __future__ import annotations

import os

HELPER_PATH = "/usr/lib/meshamoto/meshamoto-helper"


def helper_available() -> bool:
    """Vrai si le composant privilégié est installé et exécutable."""
    return os.path.isfile(HELPER_PATH) and os.access(HELPER_PATH, os.X_OK)
