from _typeshed import Incomplete

def encode_data(data): ...
def decode_data(data): ...

LOG_HIDDEN_JSON_PARAMS: Incomplete
LOG_JSON_SEND_MSG: str
LOG_JSON_RECV_MSG: str
LOG_HTTP_SEND_MSG: str
LOG_HTTP_RECV_MSG: str
logger: Incomplete

def get_json_log_data(data): ...

class Proxy:
    def __init__(self, host, port, timeout: int = 120, ssl: bool = False, opener: Incomplete | None = None) -> None: ...
    def __getattr__(self, name): ...
    def __getitem__(self, url): ...

class ProxyJSON(Proxy):
    def __init__(
        self,
        host,
        port,
        timeout: int = 120,
        ssl: bool = False,
        opener: Incomplete | None = None,
        deserialize: bool = True,
    ) -> None: ...
    def __call__(self, url, params: Incomplete | None = None): ...

class ProxyHTTP(Proxy):
    def __call__(self, url, data: Incomplete | None = None, headers: Incomplete | None = None): ...

class URLBuilder:
    def __init__(self, rpc, url: Incomplete | None = None) -> None: ...
    def __getattr__(self, path): ...
    def __getitem__(self, path): ...
    def __call__(self, **kwargs): ...
