"""Centralized configuration loaded from .env"""
import os
from dotenv import load_dotenv

load_dotenv()

def _ids(v: str):
    return [int(x.strip()) for x in (v or "").split(",") if x.strip()]

BOT_TOKEN = os.getenv("BOT_TOKEN", "")
BOT_USERNAME = os.getenv("BOT_USERNAME", "GenBoostStoreBot")
ADMIN_IDS = _ids(os.getenv("ADMIN_IDS", ""))
ADMIN_USERNAME = os.getenv("ADMIN_USERNAME", "GenBoost_King")
STAFF_GROUP_ID = int(os.getenv("STAFF_GROUP_ID") or 0) or None

# Forced channel join
REQUIRED_CHANNEL_LINK = os.getenv("REQUIRED_CHANNEL_LINK", "https://t.me/CartCraftStore")
REQUIRED_CHANNEL_ID = os.getenv("REQUIRED_CHANNEL_ID", "").strip()
try:
    REQUIRED_CHANNEL_ID = int(REQUIRED_CHANNEL_ID) if REQUIRED_CHANNEL_ID else None
except ValueError:
    REQUIRED_CHANNEL_ID = None
FORCE_JOIN_ALWAYS = os.getenv("FORCE_JOIN_ALWAYS", "false").lower() in ("1", "true", "yes")
# When false (default), Telegram errors like "Chat not found" will not lock users out.
# Set true only after REQUIRED_CHANNEL_ID is confirmed correct and the bot is admin in the channel.
FORCE_JOIN_STRICT = os.getenv("FORCE_JOIN_STRICT", "false").lower() in ("1", "true", "yes")

# Payment addresses
BINANCE_UID = os.getenv("BINANCE_UID", "")
USDT_TRC20_ADDRESS = os.getenv("USDT_TRC20_ADDRESS", "")
USDT_BEP20_ADDRESS = os.getenv("USDT_BEP20_ADDRESS", "")
BTC_ADDRESS = os.getenv("BTC_ADDRESS", "")

# Telegram Stars: how many Stars equal $1 USD (default 120)
STARS_PER_USD = int(os.getenv("STARS_PER_USD", "120"))

# Referral rewards
REFERRAL_ACTIVE_THRESHOLD = int(os.getenv("REFERRAL_ACTIVE_THRESHOLD", "15"))
REFERRAL_ACTIVE_REWARD = float(os.getenv("REFERRAL_ACTIVE_REWARD", "0.30"))
REFERRAL_PURCHASE_MIN = float(os.getenv("REFERRAL_PURCHASE_MIN", "5.00"))
REFERRAL_PURCHASE_REWARD = float(os.getenv("REFERRAL_PURCHASE_REWARD", "0.40"))

DB_PATH = os.getenv("DB_PATH", "genboost.db")

PAYMENT_METHODS = {
    "stars":  {"label": "⭐ Telegram Stars",  "address": f"Send Stars to @{ADMIN_USERNAME}"},
    "binance":{"label": "🟡 Bybit UID",     "address": BINANCE_UID},
    "trc20":  {"label": "{pe:5359437015752401733}🟢 USDT TRC20 (Auto)",  "address": USDT_TRC20_ADDRESS},
    "bep20":  {"label": "{pe:5359437015752401733}🟡 USDT BEP20 (Auto)",  "address": USDT_BEP20_ADDRESS},
    "btc":    {"label": "{pe:5359584650958226302}₿ Bitcoin (Auto)",     "address": BTC_ADDRESS},
}
