"""Конфиг бэкенда — читается из переменных окружения."""
from __future__ import annotations
import os
from dataclasses import dataclass
from functools import lru_cache


@dataclass(frozen=True)
class Config:
    bot_token: str
    admin_tg_id: int
    sheet_id: str
    google_credentials_path: str

    gigachat_auth_key: str
    gigachat_model: str
    gigachat_scope: str

    active_period_days: int
    grace_period_days: int

    proxy6_token: str  # пусто = без прокси (прямой HTTP)
    proxy_static_list: str  # статический список прокси через запятую: "http://user:pass@host:port,..."
    proxy_list_file: str    # путь к файлу со списком прокси в формате "host:port:user:pass" или "http://..."


def _required(name: str) -> str:
    val = os.getenv(name)
    if not val:
        raise RuntimeError(f"Missing required env var: {name}")
    return val


@lru_cache(maxsize=1)
def get_config() -> Config:
    return Config(
        bot_token=_required("BOT_TOKEN"),
        admin_tg_id=int(os.getenv("ADMIN_TG_ID", "0")),
        sheet_id=_required("SHEET_ID"),
        google_credentials_path=os.getenv("GOOGLE_CREDENTIALS_PATH", "/app/credentials.json"),
        gigachat_auth_key=_required("GIGACHAT_AUTH_KEY"),
        gigachat_model=os.getenv("GIGACHAT_MODEL", "GigaChat-Pro"),
        gigachat_scope=os.getenv("GIGACHAT_SCOPE", "GIGACHAT_API_PERS"),
        active_period_days=int(os.getenv("ACTIVE_PERIOD_DAYS", "90")),
        grace_period_days=int(os.getenv("GRACE_PERIOD_DAYS", "14")),
        proxy6_token=os.getenv("PROXY6_TOKEN", ""),
        proxy_static_list=os.getenv("PROXY_STATIC_LIST", ""),
        proxy_list_file=os.getenv("PROXY_LIST_FILE", ""),
    )
