# Copyright 2025 The Charmarr Project
# See LICENSE file for licensing details.

"""Core libraries for Charmarr charms."""

from charmarr_lib.core._arr import (
    ApplicationConfigBuilder,
    ArrApiClient,
    ArrApiConnectionError,
    ArrApiError,
    ArrApiResponseError,
    BaseArrApiClient,
    DownloadClientConfigBuilder,
    DownloadClientResponse,
    HostConfigResponse,
    MediaIndexerClient,
    MediaManagerConnection,
    QualityProfileResponse,
    RecyclarrError,
    RootFolderResponse,
    SecretGetter,
    config_has_api_key,
    generate_api_key,
    read_api_key,
    reconcile_config_xml,
    reconcile_download_clients,
    reconcile_external_url,
    reconcile_media_manager_connections,
    reconcile_root_folder,
    sync_trash_profiles,
    update_api_key,
)
from charmarr_lib.core._juju import (
    all_events,
    ensure_pebble_user,
    get_secret_rotation_policy,
    observe_events,
    reconcilable_events_k8s,
    reconcilable_events_k8s_workloadless,
)
from charmarr_lib.core._k8s import (
    K8sResourceManager,
    ReconcileResult,
    is_hardware_device_mounted,
    is_storage_mounted,
    reconcile_hardware_transcoding,
    reconcile_storage_volume,
)
from charmarr_lib.core.constants import (
    MEDIA_MANAGER_IMPLEMENTATIONS,
    MEDIA_TYPE_DOWNLOAD_PATHS,
)
from charmarr_lib.core.enums import (
    DownloadClient,
    DownloadClientType,
    MediaIndexer,
    MediaManager,
    RequestManager,
)

__all__ = [
    "MEDIA_MANAGER_IMPLEMENTATIONS",
    "MEDIA_TYPE_DOWNLOAD_PATHS",
    "ApplicationConfigBuilder",
    "ArrApiClient",
    "ArrApiConnectionError",
    "ArrApiError",
    "ArrApiResponseError",
    "BaseArrApiClient",
    "DownloadClient",
    "DownloadClientConfigBuilder",
    "DownloadClientResponse",
    "DownloadClientType",
    "HostConfigResponse",
    "K8sResourceManager",
    "MediaIndexer",
    "MediaIndexerClient",
    "MediaManager",
    "MediaManagerConnection",
    "QualityProfileResponse",
    "ReconcileResult",
    "RecyclarrError",
    "RequestManager",
    "RootFolderResponse",
    "SecretGetter",
    "all_events",
    "config_has_api_key",
    "ensure_pebble_user",
    "generate_api_key",
    "get_secret_rotation_policy",
    "is_hardware_device_mounted",
    "is_storage_mounted",
    "observe_events",
    "read_api_key",
    "reconcilable_events_k8s",
    "reconcilable_events_k8s_workloadless",
    "reconcile_config_xml",
    "reconcile_download_clients",
    "reconcile_external_url",
    "reconcile_hardware_transcoding",
    "reconcile_media_manager_connections",
    "reconcile_root_folder",
    "reconcile_storage_volume",
    "sync_trash_profiles",
    "update_api_key",
]
