# pyright: reportUnusedVariable=none
# pylint: disable=unused-argument,missing-function-docstring,missing-class-docstring
"""Type stub file for simplepyble library.

This file provides type annotations for the simplepyble library.
Parameters in stub files are not actually used - they only provide type information.
"""

from collections.abc import Callable, Sequence

class Adapter:
    @staticmethod
    def get_adapters() -> list[Adapter]: ...
    def identifier(self) -> str: ...
    def address(self) -> str: ...
    def bluetooth_enabled(self) -> bool: ...
    def get_paired_peripherals(self) -> list[Peripheral]: ...
    def initialized(self) -> bool: ...
    def is_powered(self) -> bool: ...
    def power_off(self) -> None: ...
    def power_on(self) -> None: ...
    def scan_for(self, timeout: float) -> None: ...
    def scan_get_results(self) -> Sequence[Peripheral]: ...
    def scan_is_active(self) -> bool: ...
    def scan_start(self) -> None: ...
    def scan_stop(self) -> None: ...
    def set_callback_on_scan_found(self, callback: Callable[[Peripheral], None]) -> None: ...
    def set_callback_on_scan_start(self, callback: Callable[[], None]) -> None: ...
    def set_callback_on_scan_stop(self, callback: Callable[[], None]) -> None: ...
    def set_callback_on_scan_updated(self, callback: Callable[[Peripheral], None]) -> None: ...

class Peripheral:
    def address(self) -> str: ...
    def address_type(self) -> str: ...
    def connect(self) -> None: ...
    def descriptor_read(self, uuid: str) -> bytes: ...
    def descriptor_write(self, uuid: str, data: bytes) -> None: ...
    def disconnect(self) -> None: ...
    def identifier(self) -> str: ...
    def indicate(self, service_uuid: str, char_uuid: str, callback: Callable[[bytes], None]) -> None: ...
    def initialized(self) -> bool: ...
    def is_connectable(self) -> bool: ...
    def is_connected(self) -> bool: ...
    def is_paired(self) -> bool: ...
    def manufacturer_data(self) -> dict[str, bytes]: ...
    def mtu(self) -> int: ...
    def notify(self, service_uuid: str, char_uuid: str, callback: Callable[[bytes], None]) -> None: ...
    def read(self, service_uuid: str, char_uuid: str) -> bytes: ...
    def write(self, service_uuid: str, char_uuid: str, data: bytes) -> None: ...
    def rssi(self) -> int: ...
    def services(self) -> list[Service]: ...
    def set_callback_on_connected(self, callback: Callable[[], None]) -> None: ...
    def set_callback_on_disconnected(self, callback: Callable[[], None]) -> None: ...
    def tx_power(self) -> int: ...
    def unpair(self) -> None: ...
    def unsubscribe(self, service_uuid: str, char_uuid: str) -> None: ...
    def write_command(self, service_uuid: str, char_uuid: str, data: bytes) -> None: ...
    def write_request(self, service_uuid: str, char_uuid: str, data: bytes) -> None: ...

class Service:
    def uuid(self) -> str: ...
    def characteristics(self) -> list[Characteristic]: ...
    def data(self) -> bytes: ...

class Characteristic:
    def uuid(self) -> str: ...
    def can_indicate(self) -> bool: ...
    def can_notify(self) -> bool: ...
    def can_read(self) -> bool: ...
    def can_write_command(self) -> bool: ...
    def can_write_request(self) -> bool: ...
    def capabilities(self) -> list[str]: ...
    def descriptors(self) -> list[Descriptor]: ...
    def read(self) -> bytes: ...
    def write(self, data: bytes) -> None: ...

class Descriptor:
    def uuid(self) -> str: ...

LINUX: str
MACOS: str
WINDOWS: str
PUBLIC: str
RANDOM: str
UNSPECIFIED: str
BluetoothAddressType: type
OperatingSystem: type

def get_operating_system() -> str: ...
def get_simpleble_version() -> str: ...

config: object
