"""
Client automatically generated by SDKgen please do not edit this file manually
https://sdkgen.app
"""

import requests
import sdkgen
from requests import RequestException
from typing import List

from .warning_tag import WarningTag
from .city_tag import CityTag
from .district_tag import DistrictTag
from .state_tag import StateTag
from .bundestag_tag import BundestagTag
from .bundesrat_tag import BundesratTag
from .autobahn_tag import AutobahnTag
from .authorization_tag import AuthorizationTag
from .meta_tag import MetaTag

class Client(sdkgen.ClientAbstract):
    def __init__(self, base_url: str, credentials: sdkgen.CredentialsInterface):
        super().__init__(base_url, credentials)

    def warning(self) -> WarningTag:
        return WarningTag(
            self.http_client,
            self.parser
        )

    def city(self) -> CityTag:
        return CityTag(
            self.http_client,
            self.parser
        )

    def district(self) -> DistrictTag:
        return DistrictTag(
            self.http_client,
            self.parser
        )

    def state(self) -> StateTag:
        return StateTag(
            self.http_client,
            self.parser
        )

    def bundestag(self) -> BundestagTag:
        return BundestagTag(
            self.http_client,
            self.parser
        )

    def bundesrat(self) -> BundesratTag:
        return BundesratTag(
            self.http_client,
            self.parser
        )

    def autobahn(self) -> AutobahnTag:
        return AutobahnTag(
            self.http_client,
            self.parser
        )

    def authorization(self) -> AuthorizationTag:
        return AuthorizationTag(
            self.http_client,
            self.parser
        )

    def meta(self) -> MetaTag:
        return MetaTag(
            self.http_client,
            self.parser
        )



    @staticmethod
    def build(clientId: str, clientSecret: str, tokenStore: sdkgen.TokenStoreInterface, scopes: List[str]):
        return Client("https://api.deutschland-api.dev/", sdkgen.OAuth2(clientId, clientSecret, "https://api.deutschland-api.dev/authorization/token", "", tokenStore, scopes))


    @staticmethod
    def buildAnonymous():
        return Client("https://api.deutschland-api.dev/", sdkgen.Anonymous())
