from typing import List, Optional, Tuple, Union

from pygame.surface import Surface

def get_backends() -> List[str]: ...
def init(backend: Optional[str]) -> None: ...
def quit() -> None: ...
def list_cameras() -> List[str]: ...

class Camera:
    def __init__(
        self,
        device: str,
        size: Union[Tuple[int, int], List[int]] = (640, 480),
        format: str = "RGB",
    ) -> None: ...
    def start(self) -> None: ...
    def stop(self) -> None: ...
    def get_controls(self) -> Tuple[bool, bool, int]: ...
    def set_controls(
        self,
        hflip: bool = ...,
        vflip: bool = ...,
        brightness: int = ...,
    ) -> Tuple[bool, bool, int]: ...
    def get_size(self) -> Tuple[int, int]: ...
    def query_image(self) -> bool: ...
    def get_image(self, surface: Optional[Surface] = None) -> Surface: ...
    def get_raw(self) -> bytes: ...
