from email.generator import Generator as BytesGenerator
from typing import Any
from typing import Optional

DISCOVERY_URI: str
V1_DISCOVERY_URI = str

class _BytesGenerator(BytesGenerator):
    _write_lines: Any = ...

def fix_method_name(name: Any): ...
def key2param(key: Any): ...
def build(
    serviceName: Any,
    version: Any,
    http: Optional[Any] = ...,
    discoveryServiceUrl: Any = ...,
    developerKey: Optional[Any] = ...,
    model: Optional[Any] = ...,
    requestBuilder: Any = ...,
    credentials: Optional[Any] = ...,
    cache_discovery: bool = ...,
    cache: Optional[Any] = ...,
): ...
def build_from_document(
    service: Any,
    base: Optional[Any] = ...,
    future: Optional[Any] = ...,
    http: Optional[Any] = ...,
    developerKey: Optional[Any] = ...,
    model: Optional[Any] = ...,
    requestBuilder: Any = ...,
    credentials: Optional[Any] = ...,
): ...

class ResourceMethodParameters:
    argmap: Any = ...
    required_params: Any = ...
    repeated_params: Any = ...
    pattern_params: Any = ...
    query_params: Any = ...
    path_params: Any = ...
    param_types: Any = ...
    enum_params: Any = ...
    def __init__(self, method_desc: Any) -> None: ...
    def set_parameters(self, method_desc: Any) -> None: ...

class Resource:
    _dynamic_attrs: Any = ...
    _http: Any = ...
    _baseUrl: Any = ...
    _model: Any = ...
    _developerKey: Any = ...
    _requestBuilder: Any = ...
    _resourceDesc: Any = ...
    _rootDesc: Any = ...
    _schema: Any = ...
    def __init__(
        self,
        http: Any,
        baseUrl: Any,
        model: Any,
        requestBuilder: Any,
        developerKey: Any,
        resourceDesc: Any,
        rootDesc: Any,
        schema: Any,
    ) -> None: ...
    def _set_dynamic_attr(self, attr_name: Any, value: Any) -> None: ...
    def __getstate__(self): ...
    def __setstate__(self, state: Any) -> None: ...
    def _set_service_methods(self) -> None: ...
    def _add_basic_methods(self, resourceDesc: Any, rootDesc: Any, schema: Any): ...
    def _add_nested_resources(self, resourceDesc: Any, rootDesc: Any, schema: Any): ...
    def _add_next_methods(self, resourceDesc: Any, schema: Any) -> None: ...
