from __future__ import annotations

from typing import Any

class Empty(Exception): ...
class Full(Exception): ...

class Queue:
    def __init__(self, maxsize: int = 0) -> None: ...
    def put(self, item: Any, blocking: bool = True, timeout: float = -1.0) -> None: ...
    def put_nowait(self, item: Any) -> None: ...
    def get(self, blocking: bool = True, timeout: float = -1.0) -> Any: ...
    def get_nowait(self) -> Any: ...
    def task_done(self) -> None: ...
    def join(self) -> None: ...
    def qsize(self) -> int: ...
    def empty(self) -> bool: ...
    def full(self) -> bool: ...
    def stats(self) -> dict[str, int]: ...

class PriorityQueue:
    def __init__(self, maxsize: int = 0) -> None: ...
    def put(self, item: Any, priority: Any = 0, blocking: bool = True, timeout: float = -1.0) -> None: ...
    def put_nowait(self, item: Any, priority: Any = 0) -> None: ...
    def get(self, blocking: bool = True, timeout: float = -1.0) -> Any: ...
    def get_nowait(self) -> Any: ...
    def qsize(self) -> int: ...
    def empty(self) -> bool: ...
    def full(self) -> bool: ...
    def stats(self) -> dict[str, int]: ...

class LifoQueue:
    def __init__(self, maxsize: int = 0) -> None: ...
    def put(self, item: Any, blocking: bool = True, timeout: float = -1.0) -> None: ...
    def put_nowait(self, item: Any) -> None: ...
    def get(self, blocking: bool = True, timeout: float = -1.0) -> Any: ...
    def get_nowait(self) -> Any: ...
    def task_done(self) -> None: ...
    def join(self) -> None: ...
    def qsize(self) -> int: ...
    def empty(self) -> bool: ...
    def full(self) -> bool: ...
    def stats(self) -> dict[str, int]: ...

class SimpleQueue:
    def __init__(self) -> None: ...
    def put(self, item: Any) -> None: ...
    def put_nowait(self, item: Any) -> None: ...
    def get(self, blocking: bool = True, timeout: float = -1.0) -> Any: ...
    def get_nowait(self) -> Any: ...
    def qsize(self) -> int: ...
    def empty(self) -> bool: ...
