# WARNING: Please don't edit this file. It was generated by Python/WinRT v2.1.0

import datetime
import sys
import types
import typing
import uuid as _uuid
from builtins import property as _property

import winrt._winrt
import winrt.system
import winrt.windows.devices.bluetooth as windows_devices_bluetooth
import winrt.windows.foundation as windows_foundation
import winrt.windows.foundation.collections as windows_foundation_collections
import winrt.windows.storage.streams as windows_storage_streams

from winrt.windows.devices.bluetooth.advertisement import BluetoothLEAdvertisementFlags, BluetoothLEAdvertisementPublisherStatus, BluetoothLEAdvertisementType, BluetoothLEAdvertisementWatcherStatus, BluetoothLEScanningMode

Self = typing.TypeVar('Self')

@typing.final
class BluetoothLEAdvertisement(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> BluetoothLEAdvertisement: ...
    def __new__(cls: typing.Type[BluetoothLEAdvertisement]) -> BluetoothLEAdvertisement: ...
    def get_manufacturer_data_by_company_id(self, company_id: winrt.system.UInt16, /) -> typing.Optional[windows_foundation_collections.IVectorView[BluetoothLEManufacturerData]]: ...
    def get_sections_by_type(self, type: winrt.system.UInt8, /) -> typing.Optional[windows_foundation_collections.IVectorView[BluetoothLEAdvertisementDataSection]]: ...
    @_property
    def local_name(self) -> str: ...
    @local_name.setter
    def local_name(self, value: str) -> None: ...
    @_property
    def flags(self) -> typing.Optional[typing.Optional[BluetoothLEAdvertisementFlags]]: ...
    @flags.setter
    def flags(self, value: typing.Optional[typing.Optional[BluetoothLEAdvertisementFlags]]) -> None: ...
    @_property
    def data_sections(self) -> typing.Optional[windows_foundation_collections.IVector[BluetoothLEAdvertisementDataSection]]: ...
    @_property
    def manufacturer_data(self) -> typing.Optional[windows_foundation_collections.IVector[BluetoothLEManufacturerData]]: ...
    @_property
    def service_uuids(self) -> typing.Optional[windows_foundation_collections.IVector[_uuid.UUID]]: ...

@typing.final
class BluetoothLEAdvertisementBytePattern(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> BluetoothLEAdvertisementBytePattern: ...
    @typing.overload
    def __new__(cls: typing.Type[BluetoothLEAdvertisementBytePattern]) -> BluetoothLEAdvertisementBytePattern: ...
    @typing.overload
    def __new__(cls: typing.Type[BluetoothLEAdvertisementBytePattern], data_type: winrt.system.UInt8, offset: winrt.system.Int16, data: typing.Optional[windows_storage_streams.IBuffer]) -> BluetoothLEAdvertisementBytePattern: ...
    @_property
    def offset(self) -> winrt.system.Int16: ...
    @offset.setter
    def offset(self, value: winrt.system.Int16) -> None: ...
    @_property
    def data_type(self) -> winrt.system.UInt8: ...
    @data_type.setter
    def data_type(self, value: winrt.system.UInt8) -> None: ...
    @_property
    def data(self) -> typing.Optional[windows_storage_streams.IBuffer]: ...
    @data.setter
    def data(self, value: typing.Optional[windows_storage_streams.IBuffer]) -> None: ...

@typing.final
class BluetoothLEAdvertisementDataSection(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> BluetoothLEAdvertisementDataSection: ...
    @typing.overload
    def __new__(cls: typing.Type[BluetoothLEAdvertisementDataSection]) -> BluetoothLEAdvertisementDataSection: ...
    @typing.overload
    def __new__(cls: typing.Type[BluetoothLEAdvertisementDataSection], data_type: winrt.system.UInt8, data: typing.Optional[windows_storage_streams.IBuffer]) -> BluetoothLEAdvertisementDataSection: ...
    @_property
    def data_type(self) -> winrt.system.UInt8: ...
    @data_type.setter
    def data_type(self, value: winrt.system.UInt8) -> None: ...
    @_property
    def data(self) -> typing.Optional[windows_storage_streams.IBuffer]: ...
    @data.setter
    def data(self, value: typing.Optional[windows_storage_streams.IBuffer]) -> None: ...

@typing.final
class BluetoothLEAdvertisementDataTypes_Static(type):
    @_property
    def advertising_interval(cls) -> winrt.system.UInt8: ...
    @_property
    def appearance(cls) -> winrt.system.UInt8: ...
    @_property
    def complete_local_name(cls) -> winrt.system.UInt8: ...
    @_property
    def complete_service128_bit_uuids(cls) -> winrt.system.UInt8: ...
    @_property
    def complete_service16_bit_uuids(cls) -> winrt.system.UInt8: ...
    @_property
    def complete_service32_bit_uuids(cls) -> winrt.system.UInt8: ...
    @_property
    def flags(cls) -> winrt.system.UInt8: ...
    @_property
    def incomplete_service128_bit_uuids(cls) -> winrt.system.UInt8: ...
    @_property
    def incomplete_service16_bit_uuids(cls) -> winrt.system.UInt8: ...
    @_property
    def incomplete_service32_bit_uuids(cls) -> winrt.system.UInt8: ...
    @_property
    def manufacturer_specific_data(cls) -> winrt.system.UInt8: ...
    @_property
    def peripheral_connection_interval_range(cls) -> winrt.system.UInt8: ...
    @_property
    def public_target_address(cls) -> winrt.system.UInt8: ...
    @_property
    def random_target_address(cls) -> winrt.system.UInt8: ...
    @_property
    def service_data128_bit_uuids(cls) -> winrt.system.UInt8: ...
    @_property
    def service_data16_bit_uuids(cls) -> winrt.system.UInt8: ...
    @_property
    def service_data32_bit_uuids(cls) -> winrt.system.UInt8: ...
    @_property
    def service_solicitation128_bit_uuids(cls) -> winrt.system.UInt8: ...
    @_property
    def service_solicitation16_bit_uuids(cls) -> winrt.system.UInt8: ...
    @_property
    def service_solicitation32_bit_uuids(cls) -> winrt.system.UInt8: ...
    @_property
    def shortened_local_name(cls) -> winrt.system.UInt8: ...
    @_property
    def tx_power_level(cls) -> winrt.system.UInt8: ...

@typing.final
class BluetoothLEAdvertisementDataTypes(winrt.system.Object, metaclass=BluetoothLEAdvertisementDataTypes_Static):
    pass

@typing.final
class BluetoothLEAdvertisementFilter(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> BluetoothLEAdvertisementFilter: ...
    def __new__(cls: typing.Type[BluetoothLEAdvertisementFilter]) -> BluetoothLEAdvertisementFilter: ...
    @_property
    def advertisement(self) -> typing.Optional[BluetoothLEAdvertisement]: ...
    @advertisement.setter
    def advertisement(self, value: typing.Optional[BluetoothLEAdvertisement]) -> None: ...
    @_property
    def byte_patterns(self) -> typing.Optional[windows_foundation_collections.IVector[BluetoothLEAdvertisementBytePattern]]: ...

@typing.final
class BluetoothLEAdvertisementPublisher(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> BluetoothLEAdvertisementPublisher: ...
    @typing.overload
    def __new__(cls: typing.Type[BluetoothLEAdvertisementPublisher]) -> BluetoothLEAdvertisementPublisher: ...
    @typing.overload
    def __new__(cls: typing.Type[BluetoothLEAdvertisementPublisher], advertisement: typing.Optional[BluetoothLEAdvertisement]) -> BluetoothLEAdvertisementPublisher: ...
    def start(self) -> None: ...
    def stop(self) -> None: ...
    def add_status_changed(self, handler: windows_foundation.TypedEventHandler[BluetoothLEAdvertisementPublisher, BluetoothLEAdvertisementPublisherStatusChangedEventArgs], /) -> windows_foundation.EventRegistrationToken: ...
    def remove_status_changed(self, token: windows_foundation.EventRegistrationToken, /) -> None: ...
    @_property
    def advertisement(self) -> typing.Optional[BluetoothLEAdvertisement]: ...
    @_property
    def status(self) -> BluetoothLEAdvertisementPublisherStatus: ...
    @_property
    def use_extended_advertisement(self) -> bool: ...
    @use_extended_advertisement.setter
    def use_extended_advertisement(self, value: bool) -> None: ...
    @_property
    def preferred_transmit_power_level_in_d_bm(self) -> typing.Optional[typing.Optional[winrt.system.Int16]]: ...
    @preferred_transmit_power_level_in_d_bm.setter
    def preferred_transmit_power_level_in_d_bm(self, value: typing.Optional[typing.Optional[winrt.system.Int16]]) -> None: ...
    @_property
    def is_anonymous(self) -> bool: ...
    @is_anonymous.setter
    def is_anonymous(self, value: bool) -> None: ...
    @_property
    def include_transmit_power_level(self) -> bool: ...
    @include_transmit_power_level.setter
    def include_transmit_power_level(self, value: bool) -> None: ...

@typing.final
class BluetoothLEAdvertisementPublisherStatusChangedEventArgs(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> BluetoothLEAdvertisementPublisherStatusChangedEventArgs: ...
    @_property
    def error(self) -> windows_devices_bluetooth.BluetoothError: ...
    @_property
    def status(self) -> BluetoothLEAdvertisementPublisherStatus: ...
    @_property
    def selected_transmit_power_level_in_d_bm(self) -> typing.Optional[typing.Optional[winrt.system.Int16]]: ...

@typing.final
class BluetoothLEAdvertisementReceivedEventArgs(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> BluetoothLEAdvertisementReceivedEventArgs: ...
    @_property
    def advertisement(self) -> typing.Optional[BluetoothLEAdvertisement]: ...
    @_property
    def advertisement_type(self) -> BluetoothLEAdvertisementType: ...
    @_property
    def bluetooth_address(self) -> winrt.system.UInt64: ...
    @_property
    def raw_signal_strength_in_d_bm(self) -> winrt.system.Int16: ...
    @_property
    def timestamp(self) -> datetime.datetime: ...
    @_property
    def bluetooth_address_type(self) -> windows_devices_bluetooth.BluetoothAddressType: ...
    @_property
    def is_anonymous(self) -> bool: ...
    @_property
    def is_connectable(self) -> bool: ...
    @_property
    def is_directed(self) -> bool: ...
    @_property
    def is_scan_response(self) -> bool: ...
    @_property
    def is_scannable(self) -> bool: ...
    @_property
    def transmit_power_level_in_d_bm(self) -> typing.Optional[typing.Optional[winrt.system.Int16]]: ...

@typing.final
class BluetoothLEAdvertisementWatcher(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> BluetoothLEAdvertisementWatcher: ...
    @typing.overload
    def __new__(cls: typing.Type[BluetoothLEAdvertisementWatcher]) -> BluetoothLEAdvertisementWatcher: ...
    @typing.overload
    def __new__(cls: typing.Type[BluetoothLEAdvertisementWatcher], advertisement_filter: typing.Optional[BluetoothLEAdvertisementFilter]) -> BluetoothLEAdvertisementWatcher: ...
    def start(self) -> None: ...
    def stop(self) -> None: ...
    def add_received(self, handler: windows_foundation.TypedEventHandler[BluetoothLEAdvertisementWatcher, BluetoothLEAdvertisementReceivedEventArgs], /) -> windows_foundation.EventRegistrationToken: ...
    def remove_received(self, token: windows_foundation.EventRegistrationToken, /) -> None: ...
    def add_stopped(self, handler: windows_foundation.TypedEventHandler[BluetoothLEAdvertisementWatcher, BluetoothLEAdvertisementWatcherStoppedEventArgs], /) -> windows_foundation.EventRegistrationToken: ...
    def remove_stopped(self, token: windows_foundation.EventRegistrationToken, /) -> None: ...
    @_property
    def signal_strength_filter(self) -> typing.Optional[windows_devices_bluetooth.BluetoothSignalStrengthFilter]: ...
    @signal_strength_filter.setter
    def signal_strength_filter(self, value: typing.Optional[windows_devices_bluetooth.BluetoothSignalStrengthFilter]) -> None: ...
    @_property
    def scanning_mode(self) -> BluetoothLEScanningMode: ...
    @scanning_mode.setter
    def scanning_mode(self, value: BluetoothLEScanningMode) -> None: ...
    @_property
    def advertisement_filter(self) -> typing.Optional[BluetoothLEAdvertisementFilter]: ...
    @advertisement_filter.setter
    def advertisement_filter(self, value: typing.Optional[BluetoothLEAdvertisementFilter]) -> None: ...
    @_property
    def max_out_of_range_timeout(self) -> datetime.timedelta: ...
    @_property
    def max_sampling_interval(self) -> datetime.timedelta: ...
    @_property
    def min_out_of_range_timeout(self) -> datetime.timedelta: ...
    @_property
    def min_sampling_interval(self) -> datetime.timedelta: ...
    @_property
    def status(self) -> BluetoothLEAdvertisementWatcherStatus: ...
    @_property
    def allow_extended_advertisements(self) -> bool: ...
    @allow_extended_advertisements.setter
    def allow_extended_advertisements(self, value: bool) -> None: ...

@typing.final
class BluetoothLEAdvertisementWatcherStoppedEventArgs(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> BluetoothLEAdvertisementWatcherStoppedEventArgs: ...
    @_property
    def error(self) -> windows_devices_bluetooth.BluetoothError: ...

@typing.final
class BluetoothLEManufacturerData(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> BluetoothLEManufacturerData: ...
    @typing.overload
    def __new__(cls: typing.Type[BluetoothLEManufacturerData]) -> BluetoothLEManufacturerData: ...
    @typing.overload
    def __new__(cls: typing.Type[BluetoothLEManufacturerData], company_id: winrt.system.UInt16, data: typing.Optional[windows_storage_streams.IBuffer]) -> BluetoothLEManufacturerData: ...
    @_property
    def data(self) -> typing.Optional[windows_storage_streams.IBuffer]: ...
    @data.setter
    def data(self, value: typing.Optional[windows_storage_streams.IBuffer]) -> None: ...
    @_property
    def company_id(self) -> winrt.system.UInt16: ...
    @company_id.setter
    def company_id(self, value: winrt.system.UInt16) -> None: ...

