from typing import TypedDict

class _ParseUserAgentResult(TypedDict):
    family: str
    major: str | None
    minor: str | None
    patch: str | None

class _ParseOsResult(TypedDict):
    family: str
    major: str | None
    minor: str | None
    patch: str | None
    patch_minor: str | None

class _ParseDeviceResult(TypedDict):
    family: str
    brand: str | None
    model: str | None

class _ParseResult(TypedDict):
    user_agent: _ParseUserAgentResult
    os: _ParseOsResult
    device: _ParseDeviceResult
    string: str

def Parse(user_agent_string: str) -> _ParseResult: ...