from typing import Any, Optional, Dict, Union
from typing_extensions import Literal
from google.ads.google_ads.config import _ConfigDataUnparsed
from google.oauth2.credentials import Credentials  # type: ignore

_V1 = Literal["v1"]
_V2 = Literal["v2"]

class GoogleAdsClient:
    credentials: Credentials = ...
    developer_token: str = ...
    endpoint: Optional[str] = ...
    login_customer_id: Optional[str] = ...

    @classmethod
    def load_from_env(cls) -> GoogleAdsClient: ...
    @classmethod
    def load_from_string(cls, yaml_str: str) -> GoogleAdsClient: ...
    @classmethod
    def load_from_storage(cls, path: Optional[str] = ...) -> GoogleAdsClient: ...
    @classmethod
    def load_from_dict(cls, config_dict: _ConfigDataUnparsed) -> GoogleAdsClient: ...
    def __init__(self, credentials: Credentials, developer_token: str, endpoint: Optional[str] = ..., login_customer_id: Optional[str] = ..., logging_config: Optional[Dict[Any, Any]] = ...) -> None: ...
    @classmethod
    def get_type(cls, name: str, version: Union[_V1, _V2] = ...) -> Any: ...
    def get_service(self, name: str, version: Union[_V1, _V2] = ...) -> Any: ...
