from typing import Any

from webrockets import IncomingConnection
from webrockets.auth import BaseAuthentication

class SessionAuthentication(BaseAuthentication):
    def __init__(self, session_cookie_name: str | None = None) -> None: ...
    @property
    def session_cookie_name(self) -> str: ...
    def authenticate(self, conn: IncomingConnection) -> Any | None: ...

class CookieTokenAuthentication(BaseAuthentication):
    cookie_name: str
    def authenticate(self, conn: IncomingConnection) -> Any | None: ...
    def validate_token(self, token: str) -> Any: ...

class HeaderTokenAuthentication(BaseAuthentication):
    header_name: str
    keyword: str
    def authenticate(self, conn: IncomingConnection) -> Any | None: ...
    def validate_token(self, token: str) -> Any: ...

class QueryStringTokenAuthentication(BaseAuthentication):
    query_param: str
    def authenticate(self, conn: IncomingConnection) -> Any | None: ...
    def validate_token(self, token: str) -> Any: ...
