"""Central configuration loader.

This loader reads configuration exclusively from `config.toml` located in the
current working directory. It intentionally does NOT read environment
variables (per project configuration choice) to avoid implicit overrides.

Expected TOML structure:

[kokoro]
endpoint = "https://..."
api_key = "..."

"""
from __future__ import annotations

import logging
from pathlib import Path
from typing import Any

logger = logging.getLogger(__name__)

# Defaults (used when keys are missing in TOML)
_DEFAULTS: dict[str, Any] = {
    "KOKORO_ENDPOINT": None,
    "KOKORO_API_KEY": None,
}


def _load_toml(path: Path) -> dict[str, Any]:
    try:
        import tomllib

        with path.open("rb") as fh:
            data = tomllib.load(fh)
        return data if isinstance(data, dict) else {}
    except FileNotFoundError:
        return {}
    except Exception:
        logger.exception("Error leyendo config TOML: %s", path)
        return {}


# Look for ./config.toml only (no environment-based path resolution)
_config_path = Path.cwd() / "config.toml"
_TOML: dict[str, Any]
if _config_path.exists():
    _TOML = _load_toml(_config_path)
else:
    _TOML = {}


def _toml_get(*keys: str, default: Any = None) -> Any:
    node = _TOML
    for k in keys:
        if not isinstance(node, dict):
            return default
        node = node.get(k, {})
    return node or default


# Public config values read exclusively from TOML (TOML > defaults)
KOKORO_ENDPOINT = (
    _toml_get(
        "kokoro",
        "endpoint",
        default=_DEFAULTS["KOKORO_ENDPOINT"],
    )
    or None
)
KOKORO_API_KEY = (
    _toml_get(
        "kokoro",
        "api_key",
        default=_DEFAULTS["KOKORO_API_KEY"],
    )
    or None
)


__all__ = ["KOKORO_ENDPOINT", "KOKORO_API_KEY"]
