"""KickoffAPI - official lightweight Python client.

    pip install requests
    from kickoffapi import KickoffAPI
    api = KickoffAPI("YOUR_API_KEY")
    print(api.live_scores())
"""
import requests

class KickoffAPI:
    def __init__(self, api_key: str, base_url: str = "https://api.kickoffapi.com/api/v2"):
        if not api_key:
            raise ValueError("KickoffAPI: api_key is required")
        self.base_url = base_url.rstrip("/")
        self._s = requests.Session()
        self._s.headers.update({"x-api-key": api_key})

    def request(self, path: str, **params):
        params = {k: v for k, v in params.items() if v is not None}
        r = self._s.get(self.base_url + path, params=params, timeout=30)
        r.raise_for_status()
        return r.json()

    def countries(self, **p):       return self.request("/countries", **p)
    def leagues(self, **p):         return self.request("/leagues", **p)
    def fixtures(self, **p):        return self.request("/fixtures", **p)
    def live_scores(self):          return self.request("/fixtures", live="all")
    def standings(self, **p):       return self.request("/standings", **p)
    def team_statistics(self, **p):
        team = p.pop("team", None) or p.pop("id", None)
        return self.request(f"/teams/{team}/statistics", **p)
    def players(self, **p):         return self.request("/players", **p)
    def odds(self, **p):            return self.request("/odds", **p)
    # v2's Elo prediction, not v1's /predictions — the default base_url above
    # is /api/v2, and /api/v2/predictions is not a route (it 404s). See
    # v2Router.get('/predictions/elo', ...) in src/apiV2.ts.
    def predictions(self, **p):     return self.request("/predictions/elo", team1=p.get("team1"), team2=p.get("team2"))
