"""Type stubs for better IDE support with auto-generated client."""
import ssl
from typing import Any
import httpx


class Client:
    """A client for the Constec ERP API."""
    
    def __init__(
        self,
        base_url: str,
        *,
        cookies: dict[str, str] | None = None,
        headers: dict[str, str] | None = None,
        timeout: httpx.Timeout | None = None,
        verify_ssl: str | bool | ssl.SSLContext = True,
        follow_redirects: bool = False,
        httpx_args: dict[str, Any] | None = None,
        raise_on_unexpected_status: bool = False,
    ) -> None: ...
    
    def with_headers(self, headers: dict[str, str]) -> "Client": ...
    def with_cookies(self, cookies: dict[str, str]) -> "Client": ...
    def with_timeout(self, timeout: httpx.Timeout) -> "Client": ...
    def set_httpx_client(self, client: httpx.Client) -> "Client": ...
    def get_httpx_client(self) -> httpx.Client: ...
    def __enter__(self) -> "Client": ...
    def __exit__(self, *args: Any, **kwargs: Any) -> None: ...
    def set_async_httpx_client(self, async_client: httpx.AsyncClient) -> "Client": ...
    def get_async_httpx_client(self) -> httpx.AsyncClient: ...
    async def __aenter__(self) -> "Client": ...
    async def __aexit__(self, *args: Any, **kwargs: Any) -> None: ...


class AuthenticatedClient:
    """An authenticated client for the Constec ERP API."""
    
    def __init__(
        self,
        base_url: str,
        token: str,
        *,
        prefix: str = "Bearer",
        auth_header_name: str = "Authorization",
        cookies: dict[str, str] | None = None,
        headers: dict[str, str] | None = None,
        timeout: httpx.Timeout | None = None,
        verify_ssl: str | bool | ssl.SSLContext = True,
        follow_redirects: bool = False,
        httpx_args: dict[str, Any] | None = None,
        raise_on_unexpected_status: bool = False,
    ) -> None: ...
    
    def with_headers(self, headers: dict[str, str]) -> "AuthenticatedClient": ...
    def with_cookies(self, cookies: dict[str, str]) -> "AuthenticatedClient": ...
    def with_timeout(self, timeout: httpx.Timeout) -> "AuthenticatedClient": ...
    def set_httpx_client(self, client: httpx.Client) -> "AuthenticatedClient": ...
    def get_httpx_client(self) -> httpx.Client: ...
    def __enter__(self) -> "AuthenticatedClient": ...
    def __exit__(self, *args: Any, **kwargs: Any) -> None: ...
    def set_async_httpx_client(self, async_client: httpx.AsyncClient) -> "AuthenticatedClient": ...
    def get_async_httpx_client(self) -> httpx.AsyncClient: ...
    async def __aenter__(self) -> "AuthenticatedClient": ...
    async def __aexit__(self, *args: Any, **kwargs: Any) -> None: ...
