"""
This type stub file was generated by pyright.
"""

import starlette.requests
import starlette.responses
from json_logging.framework_base import AppRequestInstrumentationConfigurator, RequestAdapter, ResponseAdapter
from starlette.middleware.base import BaseHTTPMiddleware, RequestResponseEndpoint
from starlette.requests import Request
from starlette.responses import Response
from starlette.types import ASGIApp

class JSONLoggingASGIMiddleware(BaseHTTPMiddleware):
    def __init__(self, app: ASGIApp, exclude_url_patterns=...) -> None:
        ...
    
    async def dispatch(self, request: Request, call_next: RequestResponseEndpoint) -> Response:
        ...
    


class FastAPIAppRequestInstrumentationConfigurator(AppRequestInstrumentationConfigurator):
    def config(self, app, exclude_url_patterns=...): # -> None:
        ...
    


class FastAPIRequestAdapter(RequestAdapter):
    @staticmethod
    def get_request_class_type(): # -> type[Request]:
        ...
    
    @staticmethod
    def support_global_request_object(): # -> Literal[False]:
        ...
    
    @staticmethod
    def get_current_request():
        ...
    
    def get_remote_user(self, request: starlette.requests.Request): # -> Any | Literal['-']:
        ...
    
    def get_http_header(self, request: starlette.requests.Request, header_name, default=...): # -> str | None:
        ...
    
    def set_correlation_id(self, request_, value): # -> None:
        ...
    
    def get_correlation_id_in_request_context(self, request: starlette.requests.Request): # -> Any | None:
        ...
    
    def get_protocol(self, request: starlette.requests.Request): # -> str:
        ...
    
    def get_path(self, request: starlette.requests.Request): # -> str:
        ...
    
    def get_content_length(self, request: starlette.requests.Request): # -> str:
        ...
    
    def get_method(self, request: starlette.requests.Request): # -> str:
        ...
    
    def get_remote_ip(self, request: starlette.requests.Request): # -> str:
        ...
    
    def get_remote_port(self, request: starlette.requests.Request): # -> int:
        ...
    


class FastAPIResponseAdapter(ResponseAdapter):
    def get_status_code(self, response: starlette.responses.Response): # -> int:
        ...
    
    def get_response_size(self, response: starlette.responses.Response): # -> str:
        ...
    
    def get_content_type(self, response: starlette.responses.Response): # -> str:
        ...
    


