"""Electron Angle Patcher: Enforce OpenGL rendering in Chromium-based apps.

This module patches Chromium-based applications (including Electron apps and Chrome)
to enforce the use of OpenGL rendering through the 'use-angle@1' setting.

Features:
    - macOS optimized: Designed specifically for macOS Electron applications
    - Auto-discovery: Automatically finds apps in standard locations
    - Deep scanning: Recursively searches directories comprehensively
    - Special app support: Handles complex apps (Logitech G Hub, Teams, Brave)
    - Executable wrapping: Modifies executables to pass --use-angle=gl
    - Network mount protection: Avoids scanning network-mounted volumes

Example:
    >>> python electron_angle_patcher.py              # Patch all detected apps
    >>> python electron_angle_patcher.py --list-only  # List without patching
    >>> python electron_angle_patcher.py --deep-scan  # Full home directory scan
"""

from __future__ import annotations

# Version info
__version__ = "2026.0.2"

# Public API exports
__all__ = [
    "__version__",
    "Config",
    "AngleVariant",
    "PatchResult",
    "AppInfo",
    "PatchSummary",
    "ExecutableWrapper",
    "BraveExecutablePatcher",
    "ChromeExecutablePatcher",
    "LghubPatcher",
    "ChromiumSettingsPatcher",
    "LocalStateScanner",
    "ElectronAnglePatcher",
    "setup_logging",
    "is_running_as_root",
    "can_write_to_path",
    "get_network_mounts",
    "strip_extended_attributes",
    "resign_application",
    "extract_app_name",
    "kill_app_by_name",
]

# Import all public API components
from electron_angle_patcher.app import ElectronAnglePatcher
from electron_angle_patcher.config import Config
from electron_angle_patcher.executable_patcher import (
    BraveExecutablePatcher,
    ChromeExecutablePatcher,
    ExecutableWrapper,
    LghubPatcher,
)
from electron_angle_patcher.models import AngleVariant, AppInfo, PatchResult, PatchSummary
from electron_angle_patcher.scanner import LocalStateScanner
from electron_angle_patcher.settings_patcher import ChromiumSettingsPatcher
from electron_angle_patcher.utils import (
    can_write_to_path,
    extract_app_name,
    get_network_mounts,
    is_running_as_root,
    kill_app_by_name,
    resign_application,
    setup_logging,
    strip_extended_attributes,
)
