import os

BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))

# Logging
LOG_DIR = os.path.join(BASE_DIR, "logs")
os.makedirs(LOG_DIR, exist_ok=True)
LOG_FILE = os.path.join(LOG_DIR, "server.log")

# JWT
JWT_SECRET = os.getenv("JWT_SECRET", "maya-jwt-secret-change-in-prod-2024")
JWT_ALGORITHM = "HS256"
JWT_EXPIRY_DAYS = 90

# Daily (voice agent)
DAILY_API_URL = "https://api.daily.co/v1"
ROOM_EXPIRY_SECONDS = 10 * 60  # 10 minutes

# Google Play Billing
GOOGLE_PLAY_PACKAGE_NAME = os.getenv("GOOGLE_PLAY_PACKAGE_NAME", "com.india.mayaai")
GOOGLE_PLAY_CREDENTIALS_PATH = os.getenv(
    "GOOGLE_PLAY_CREDENTIALS_PATH", "google-play-service-account.json"
)

# Cloudflare R2
R2_BUCKET_NAME = os.getenv("R2_BUCKET_NAME", "maya-global")
R2_ACCESS_KEY_ID = os.getenv("R2_ACCESS_KEY_ID", "")
R2_SECRET_ACCESS_KEY = os.getenv("R2_SECRET_ACCESS_KEY", "")
R2_ENDPOINT = os.getenv("R2_ENDPOINT", "")
R2_PUBLIC_URL = os.getenv("R2_PUBLIC_URL", "")

# Server
DEFAULT_HOST = os.getenv("HOST", "0.0.0.0")
DEFAULT_PORT = int(os.getenv("FAST_API_PORT", "7860"))

# Google Play subscription state mappings
GOOGLE_STATE_MAP = {
    "SUBSCRIPTION_STATE_ACTIVE": "active",
    "SUBSCRIPTION_STATE_IN_GRACE_PERIOD": "grace_period",
    "SUBSCRIPTION_STATE_CANCELED": "canceled",
    "SUBSCRIPTION_STATE_ON_HOLD": "on_hold",
    "SUBSCRIPTION_STATE_EXPIRED": "expired",
    "SUBSCRIPTION_STATE_PAUSED": "paused",
}

# Webhook notification type → status
WEBHOOK_STATUS_MAP = {
    1: "active",       # recovered
    2: "active",       # renewed
    3: "canceled",     # canceled (still active until expiry)
    4: "active",       # purchased
    5: "on_hold",
    6: "grace_period",
    7: "active",       # restarted
    12: "revoked",
    13: "expired",
}

# Statuses that count as premium
PREMIUM_STATUSES = {"active", "grace_period", "pending_verification"}
