import os
from dotenv import load_dotenv
load_dotenv()

def env_int(name: str, default: int) -> int:
    try:
        return int(os.getenv(name, str(default)))
    except (TypeError, ValueError):
        return default

def env_float(name: str, default: float) -> float:
    try:
        return float(os.getenv(name, str(default)))
    except (TypeError, ValueError):
        return default

class Config:
    # Like APIs
    LIKE_API_100: str = os.getenv("LIKE_API_100", "http://127.0.0.1:8000/like100?uid={UID}&server_name={SERVER_NAME}")
    LIKE_API_200: str = os.getenv("LIKE_API_200", "http://127.0.0.1:8000/like200?uid={UID}&server_name={SERVER_NAME}")
    SERVER_NAME: str = os.getenv("SERVER_NAME", "bd")
    FREE_LIKE_AMOUNT: int = env_int("FREE_LIKE_AMOUNT", 20)
    LIKE_API_TIMEOUT: float = env_float("LIKE_API_TIMEOUT", 12.0)
    LIKE_API_FREE: str = os.getenv("LIKE_API_FREE", "http://127.0.0.1:8000/like?uid={UID}&server_name={SERVER_NAME}&count={AMOUNT}")
    ADMIN_TOKEN: str  = os.getenv("ADMIN_TOKEN", "ams_admin_2024_secret")
    APP_ENV: str      = os.getenv("APP_ENV", "production")

    # Telegram logging and JWT refresh automation
    TELEGRAM_BOT_TOKEN: str = os.getenv("TELEGRAM_BOT_TOKEN", "")
    TELEGRAM_LOG_CHAT_ID: str = os.getenv("TELEGRAM_LOG_CHAT_ID", os.getenv("TELEGRAM_GROUP_ID", ""))
    TELEGRAM_GROUP_ID: str = os.getenv("TELEGRAM_GROUP_ID", "")
    TELEGRAM_POLL_SECONDS: float = env_float("TELEGRAM_POLL_SECONDS", 5.0)
    JWT_REFRESH_THRESHOLD_100: int = env_int("JWT_REFRESH_THRESHOLD_100", 30)
    JWT_REFRESH_THRESHOLD_200: int = env_int("JWT_REFRESH_THRESHOLD_200", 30)
    JWT_REFRESH_TIMEOUT_SECONDS: int = env_int("JWT_REFRESH_TIMEOUT_SECONDS", 900)
    JWT_COMMAND_100: str = os.getenv("JWT_COMMAND_100", "")
    JWT_COMMAND_200: str = os.getenv("JWT_COMMAND_200", "")
    JWT_SUCCESS_TEXT_100: str = os.getenv("JWT_SUCCESS_TEXT_100", "100 like jwt generate success")
    JWT_SUCCESS_TEXT_200: str = os.getenv("JWT_SUCCESS_TEXT_200", "200 like jwt generate success")

    # ══════════════════════════════════════════════════════
    # HARDCODED API KEYS — এখানে key add/remove করো
    # Format: "key": {"name":"...", "nick":"...", "daily_limit":20, "total_limit":500}
    # ══════════════════════════════════════════════════════
    HARDCODED_KEYS: dict = {
        "symoon_1_IVpdym75vdMLJ5pIrgqp": {
            "name": "symoon_1",
            "nick": "Symoon",
            "daily_limit": 20,
            "total_limit": 500,
        },
        "test_key_abc123def456ghi789jk": {
            "name": "test_user",
            "nick": "Test",
            "daily_limit": 10,
            "total_limit": 100,
        },
        # নতুন key এখানে add করো:
        # "username_RANDOM20CHARS": {
        #     "name": "username",
        #     "nick": "Display Name",
        #     "daily_limit": 20,
        #     "total_limit": 500,
        # },
    }

cfg = Config()
