import typing

import android.app
import android.bluetooth
import android.os
import android.util
import java
import java.chaquopy
import java.lang
import java.util

class AdvertiseCallback(java.lang.Object):
    ADVERTISE_FAILED_ALREADY_STARTED: typing.ClassVar[int] = ...
    ADVERTISE_FAILED_DATA_TOO_LARGE: typing.ClassVar[int] = ...
    ADVERTISE_FAILED_FEATURE_UNSUPPORTED: typing.ClassVar[int] = ...
    ADVERTISE_FAILED_INTERNAL_ERROR: typing.ClassVar[int] = ...
    ADVERTISE_FAILED_TOO_MANY_ADVERTISERS: typing.ClassVar[int] = ...
    def __init__(self) -> None: ...
    def onStartFailure(self, errorCode: int | java.jint | java.lang.Integer, /) -> None: ...
    def onStartSuccess(self, settingsInEffect: AdvertiseSettings, /) -> None: ...

class AdvertiseData(android.os.Parcelable):
    CREATOR: typing.ClassVar[android.os.Parcelable.Creator[AdvertiseData]] = ...
    def describeContents(self) -> int: ...
    def equals(self, obj: java.lang.Object | int | bool | float | str, /) -> bool: ...
    def getIncludeDeviceName(self) -> bool: ...
    def getIncludeTxPowerLevel(self) -> bool: ...
    def getManufacturerSpecificData(self) -> android.util.SparseArray[java.chaquopy.JavaArrayJByte]: ...
    def getServiceData(self) -> java.util.Map[android.os.ParcelUuid, java.chaquopy.JavaArrayJByte]: ...
    def getServiceSolicitationUuids(self) -> java.util.List[android.os.ParcelUuid]: ...
    def getServiceUuids(self) -> java.util.List[android.os.ParcelUuid]: ...
    def getTransportDiscoveryData(self) -> java.util.List[TransportDiscoveryData]: ...
    def hashCode(self) -> int: ...
    def toString(self) -> str: ...
    def writeToParcel(self, dest: android.os.Parcel, flags: int | java.jint | java.lang.Integer, /) -> None: ...

    class Builder(java.lang.Object):
        def __init__(self) -> None: ...
        def addManufacturerData(self, manufacturerId: int | java.jint | java.lang.Integer, manufacturerSpecificData: java.chaquopy.JavaArrayJByte, /) -> AdvertiseData.Builder: ...
        def addServiceData(self, serviceDataUuid: android.os.ParcelUuid, serviceData: java.chaquopy.JavaArrayJByte, /) -> AdvertiseData.Builder: ...
        def addServiceSolicitationUuid(self, serviceSolicitationUuid: android.os.ParcelUuid, /) -> AdvertiseData.Builder: ...
        def addServiceUuid(self, serviceUuid: android.os.ParcelUuid, /) -> AdvertiseData.Builder: ...
        def addTransportDiscoveryData(self, transportDiscoveryData: TransportDiscoveryData, /) -> AdvertiseData.Builder: ...
        def build(self) -> AdvertiseData: ...
        def setIncludeDeviceName(self, includeDeviceName: bool | java.jboolean | java.lang.Boolean, /) -> AdvertiseData.Builder: ...
        def setIncludeTxPowerLevel(self, includeTxPowerLevel: bool | java.jboolean | java.lang.Boolean, /) -> AdvertiseData.Builder: ...

class AdvertiseSettings(android.os.Parcelable):
    ADVERTISE_MODE_BALANCED: typing.ClassVar[int] = ...
    ADVERTISE_MODE_LOW_LATENCY: typing.ClassVar[int] = ...
    ADVERTISE_MODE_LOW_POWER: typing.ClassVar[int] = ...
    ADVERTISE_TX_POWER_HIGH: typing.ClassVar[int] = ...
    ADVERTISE_TX_POWER_LOW: typing.ClassVar[int] = ...
    ADVERTISE_TX_POWER_MEDIUM: typing.ClassVar[int] = ...
    ADVERTISE_TX_POWER_ULTRA_LOW: typing.ClassVar[int] = ...
    CREATOR: typing.ClassVar[android.os.Parcelable.Creator[AdvertiseSettings]] = ...
    def describeContents(self) -> int: ...
    def getMode(self) -> int: ...
    def getTimeout(self) -> int: ...
    def getTxPowerLevel(self) -> int: ...
    def isConnectable(self) -> bool: ...
    def isDiscoverable(self) -> bool: ...
    def toString(self) -> str: ...
    def writeToParcel(self, dest: android.os.Parcel, flags: int | java.jint | java.lang.Integer, /) -> None: ...

    class Builder(java.lang.Object):
        def __init__(self) -> None: ...
        def build(self) -> AdvertiseSettings: ...
        def setAdvertiseMode(self, advertiseMode: int | java.jint | java.lang.Integer, /) -> AdvertiseSettings.Builder: ...
        def setConnectable(self, connectable: bool | java.jboolean | java.lang.Boolean, /) -> AdvertiseSettings.Builder: ...
        def setDiscoverable(self, discoverable: bool | java.jboolean | java.lang.Boolean, /) -> AdvertiseSettings.Builder: ...
        def setTimeout(self, timeoutMillis: int | java.jint | java.lang.Integer, /) -> AdvertiseSettings.Builder: ...
        def setTxPowerLevel(self, txPowerLevel: int | java.jint | java.lang.Integer, /) -> AdvertiseSettings.Builder: ...

class AdvertisingSet(java.lang.Object):
    def enableAdvertising(self, enable: bool | java.jboolean | java.lang.Boolean, duration: int | java.jint | java.lang.Integer, maxExtendedAdvertisingEvents: int | java.jint | java.lang.Integer, /) -> None: ...
    def setAdvertisingData(self, advertiseData: AdvertiseData, /) -> None: ...
    def setAdvertisingParameters(self, parameters: AdvertisingSetParameters, /) -> None: ...
    def setPeriodicAdvertisingData(self, periodicData: AdvertiseData, /) -> None: ...
    def setPeriodicAdvertisingEnabled(self, enable: bool | java.jboolean | java.lang.Boolean, /) -> None: ...
    def setPeriodicAdvertisingParameters(self, parameters: PeriodicAdvertisingParameters, /) -> None: ...
    def setScanResponseData(self, scanResponse: AdvertiseData, /) -> None: ...

class AdvertisingSetCallback(java.lang.Object):
    ADVERTISE_FAILED_ALREADY_STARTED: typing.ClassVar[int] = ...
    ADVERTISE_FAILED_DATA_TOO_LARGE: typing.ClassVar[int] = ...
    ADVERTISE_FAILED_FEATURE_UNSUPPORTED: typing.ClassVar[int] = ...
    ADVERTISE_FAILED_INTERNAL_ERROR: typing.ClassVar[int] = ...
    ADVERTISE_FAILED_TOO_MANY_ADVERTISERS: typing.ClassVar[int] = ...
    ADVERTISE_SUCCESS: typing.ClassVar[int] = ...
    def __init__(self) -> None: ...
    def onAdvertisingDataSet(self, advertisingSet: AdvertisingSet, status: int | java.jint | java.lang.Integer, /) -> None: ...
    def onAdvertisingEnabled(self, advertisingSet: AdvertisingSet, enable: bool | java.jboolean | java.lang.Boolean, status: int | java.jint | java.lang.Integer, /) -> None: ...
    def onAdvertisingParametersUpdated(self, advertisingSet: AdvertisingSet, txPower: int | java.jint | java.lang.Integer, status: int | java.jint | java.lang.Integer, /) -> None: ...
    def onAdvertisingSetStarted(self, advertisingSet: AdvertisingSet, txPower: int | java.jint | java.lang.Integer, status: int | java.jint | java.lang.Integer, /) -> None: ...
    def onAdvertisingSetStopped(self, advertisingSet: AdvertisingSet, /) -> None: ...
    def onPeriodicAdvertisingDataSet(self, advertisingSet: AdvertisingSet, status: int | java.jint | java.lang.Integer, /) -> None: ...
    def onPeriodicAdvertisingEnabled(self, advertisingSet: AdvertisingSet, enable: bool | java.jboolean | java.lang.Boolean, status: int | java.jint | java.lang.Integer, /) -> None: ...
    def onPeriodicAdvertisingParametersUpdated(self, advertisingSet: AdvertisingSet, status: int | java.jint | java.lang.Integer, /) -> None: ...
    def onScanResponseDataSet(self, advertisingSet: AdvertisingSet, status: int | java.jint | java.lang.Integer, /) -> None: ...

class AdvertisingSetParameters(android.os.Parcelable):
    CREATOR: typing.ClassVar[android.os.Parcelable.Creator[AdvertisingSetParameters]] = ...
    INTERVAL_HIGH: typing.ClassVar[int] = ...
    INTERVAL_LOW: typing.ClassVar[int] = ...
    INTERVAL_MAX: typing.ClassVar[int] = ...
    INTERVAL_MEDIUM: typing.ClassVar[int] = ...
    INTERVAL_MIN: typing.ClassVar[int] = ...
    TX_POWER_HIGH: typing.ClassVar[int] = ...
    TX_POWER_LOW: typing.ClassVar[int] = ...
    TX_POWER_MAX: typing.ClassVar[int] = ...
    TX_POWER_MEDIUM: typing.ClassVar[int] = ...
    TX_POWER_MIN: typing.ClassVar[int] = ...
    TX_POWER_ULTRA_LOW: typing.ClassVar[int] = ...
    def describeContents(self) -> int: ...
    def getInterval(self) -> int: ...
    def getPrimaryPhy(self) -> int: ...
    def getSecondaryPhy(self) -> int: ...
    def getTxPowerLevel(self) -> int: ...
    def includeTxPower(self) -> bool: ...
    def isAnonymous(self) -> bool: ...
    def isConnectable(self) -> bool: ...
    def isDiscoverable(self) -> bool: ...
    def isLegacy(self) -> bool: ...
    def isScannable(self) -> bool: ...
    def toString(self) -> str: ...
    def writeToParcel(self, dest: android.os.Parcel, flags: int | java.jint | java.lang.Integer, /) -> None: ...

    class Builder(java.lang.Object):
        def __init__(self) -> None: ...
        def build(self) -> AdvertisingSetParameters: ...
        def setAnonymous(self, isAnonymous: bool | java.jboolean | java.lang.Boolean, /) -> AdvertisingSetParameters.Builder: ...
        def setConnectable(self, connectable: bool | java.jboolean | java.lang.Boolean, /) -> AdvertisingSetParameters.Builder: ...
        def setDiscoverable(self, discoverable: bool | java.jboolean | java.lang.Boolean, /) -> AdvertisingSetParameters.Builder: ...
        def setIncludeTxPower(self, includeTxPower: bool | java.jboolean | java.lang.Boolean, /) -> AdvertisingSetParameters.Builder: ...
        def setInterval(self, interval: int | java.jint | java.lang.Integer, /) -> AdvertisingSetParameters.Builder: ...
        def setLegacyMode(self, isLegacy: bool | java.jboolean | java.lang.Boolean, /) -> AdvertisingSetParameters.Builder: ...
        def setPrimaryPhy(self, primaryPhy: int | java.jint | java.lang.Integer, /) -> AdvertisingSetParameters.Builder: ...
        def setScannable(self, scannable: bool | java.jboolean | java.lang.Boolean, /) -> AdvertisingSetParameters.Builder: ...
        def setSecondaryPhy(self, secondaryPhy: int | java.jint | java.lang.Integer, /) -> AdvertisingSetParameters.Builder: ...
        def setTxPowerLevel(self, txPowerLevel: int | java.jint | java.lang.Integer, /) -> AdvertisingSetParameters.Builder: ...

class BluetoothLeAdvertiser(java.lang.Object):
    @typing.overload
    def startAdvertising(self, settings: AdvertiseSettings, advertiseData: AdvertiseData, callback: AdvertiseCallback, /) -> None: ...
    @typing.overload
    def startAdvertising(self, settings: AdvertiseSettings, advertiseData: AdvertiseData, scanResponse: AdvertiseData, callback: AdvertiseCallback, /) -> None: ...
    @typing.overload
    def startAdvertisingSet(self, parameters: AdvertisingSetParameters, advertiseData: AdvertiseData, scanResponse: AdvertiseData, periodicParameters: PeriodicAdvertisingParameters, periodicData: AdvertiseData, callback: AdvertisingSetCallback, /) -> None: ...
    @typing.overload
    def startAdvertisingSet(self, parameters: AdvertisingSetParameters, advertiseData: AdvertiseData, scanResponse: AdvertiseData, periodicParameters: PeriodicAdvertisingParameters, periodicData: AdvertiseData, callback: AdvertisingSetCallback, handler: android.os.Handler, /) -> None: ...
    @typing.overload
    def startAdvertisingSet(self, parameters: AdvertisingSetParameters, advertiseData: AdvertiseData, scanResponse: AdvertiseData, periodicParameters: PeriodicAdvertisingParameters, periodicData: AdvertiseData, duration: int | java.jint | java.lang.Integer, maxExtendedAdvertisingEvents: int | java.jint | java.lang.Integer, callback: AdvertisingSetCallback, /) -> None: ...
    @typing.overload
    def startAdvertisingSet(self, parameters: AdvertisingSetParameters, advertiseData: AdvertiseData, scanResponse: AdvertiseData, periodicParameters: PeriodicAdvertisingParameters, periodicData: AdvertiseData, duration: int | java.jint | java.lang.Integer, maxExtendedAdvertisingEvents: int | java.jint | java.lang.Integer, callback: AdvertisingSetCallback, handler: android.os.Handler, /) -> None: ...
    def stopAdvertising(self, callback: AdvertiseCallback, /) -> None: ...
    def stopAdvertisingSet(self, callback: AdvertisingSetCallback, /) -> None: ...

class BluetoothLeScanner(java.lang.Object):
    EXTRA_CALLBACK_TYPE: typing.ClassVar[str] = ...
    EXTRA_ERROR_CODE: typing.ClassVar[str] = ...
    EXTRA_LIST_SCAN_RESULT: typing.ClassVar[str] = ...
    def flushPendingScanResults(self, callback: ScanCallback, /) -> None: ...
    @typing.overload
    def startScan(self, callback: ScanCallback, /) -> None: ...
    @typing.overload
    def startScan(self, filters: java.util.List[ScanFilter], settings: ScanSettings, callbackIntent: android.app.PendingIntent, /) -> int: ...
    @typing.overload
    def startScan(self, filters: java.util.List[ScanFilter], settings: ScanSettings, callback: ScanCallback, /) -> None: ...
    @typing.overload
    def stopScan(self, callbackIntent: android.app.PendingIntent, /) -> None: ...
    @typing.overload
    def stopScan(self, callback: ScanCallback, /) -> None: ...

class PeriodicAdvertisingParameters(android.os.Parcelable):
    CREATOR: typing.ClassVar[android.os.Parcelable.Creator[PeriodicAdvertisingParameters]] = ...
    def describeContents(self) -> int: ...
    def getIncludeTxPower(self) -> bool: ...
    def getInterval(self) -> int: ...
    def writeToParcel(self, dest: android.os.Parcel, flags: int | java.jint | java.lang.Integer, /) -> None: ...

    class Builder(java.lang.Object):
        def __init__(self) -> None: ...
        def build(self) -> PeriodicAdvertisingParameters: ...
        def setIncludeTxPower(self, includeTxPower: bool | java.jboolean | java.lang.Boolean, /) -> PeriodicAdvertisingParameters.Builder: ...
        def setInterval(self, interval: int | java.jint | java.lang.Integer, /) -> PeriodicAdvertisingParameters.Builder: ...

class ScanCallback(java.lang.Object):
    SCAN_FAILED_ALREADY_STARTED: typing.ClassVar[int] = ...
    SCAN_FAILED_APPLICATION_REGISTRATION_FAILED: typing.ClassVar[int] = ...
    SCAN_FAILED_FEATURE_UNSUPPORTED: typing.ClassVar[int] = ...
    SCAN_FAILED_INTERNAL_ERROR: typing.ClassVar[int] = ...
    SCAN_FAILED_OUT_OF_HARDWARE_RESOURCES: typing.ClassVar[int] = ...
    SCAN_FAILED_SCANNING_TOO_FREQUENTLY: typing.ClassVar[int] = ...
    def __init__(self) -> None: ...
    def onBatchScanResults(self, results: java.util.List[ScanResult], /) -> None: ...
    def onScanFailed(self, errorCode: int | java.jint | java.lang.Integer, /) -> None: ...
    def onScanResult(self, callbackType: int | java.jint | java.lang.Integer, result: ScanResult, /) -> None: ...

class ScanFilter(android.os.Parcelable):
    CREATOR: typing.ClassVar[android.os.Parcelable.Creator[ScanFilter]] = ...
    def describeContents(self) -> int: ...
    def equals(self, obj: java.lang.Object | int | bool | float | str, /) -> bool: ...
    def getAdvertisingData(self) -> java.chaquopy.JavaArrayJByte | None: ...
    def getAdvertisingDataMask(self) -> java.chaquopy.JavaArrayJByte | None: ...
    def getAdvertisingDataType(self) -> int: ...
    def getDeviceAddress(self) -> str | None: ...
    def getDeviceName(self) -> str | None: ...
    def getManufacturerData(self) -> java.chaquopy.JavaArrayJByte | None: ...
    def getManufacturerDataMask(self) -> java.chaquopy.JavaArrayJByte | None: ...
    def getManufacturerId(self) -> int: ...
    def getServiceData(self) -> java.chaquopy.JavaArrayJByte | None: ...
    def getServiceDataMask(self) -> java.chaquopy.JavaArrayJByte | None: ...
    def getServiceDataUuid(self) -> android.os.ParcelUuid | None: ...
    def getServiceSolicitationUuid(self) -> android.os.ParcelUuid | None: ...
    def getServiceSolicitationUuidMask(self) -> android.os.ParcelUuid | None: ...
    def getServiceUuid(self) -> android.os.ParcelUuid | None: ...
    def getServiceUuidMask(self) -> android.os.ParcelUuid | None: ...
    def hashCode(self) -> int: ...
    def matches(self, scanResult: ScanResult, /) -> bool: ...
    def toString(self) -> str: ...
    def writeToParcel(self, dest: android.os.Parcel, flags: int | java.jint | java.lang.Integer, /) -> None: ...

    class Builder(java.lang.Object):
        def __init__(self) -> None: ...
        def build(self) -> ScanFilter: ...
        def setAdvertisingDataType(self, advertisingDataType: int | java.jint | java.lang.Integer, /) -> ScanFilter.Builder: ...
        def setAdvertisingDataTypeWithData(self, advertisingDataType: int | java.jint | java.lang.Integer, advertisingData: java.chaquopy.JavaArrayJByte, advertisingDataMask: java.chaquopy.JavaArrayJByte, /) -> ScanFilter.Builder: ...
        def setDeviceAddress(self, deviceAddress: str | java.lang.String, /) -> ScanFilter.Builder: ...
        def setDeviceName(self, deviceName: str | java.lang.String, /) -> ScanFilter.Builder: ...
        @typing.overload
        def setManufacturerData(self, manufacturerId: int | java.jint | java.lang.Integer, manufacturerData: java.chaquopy.JavaArrayJByte, /) -> ScanFilter.Builder: ...
        @typing.overload
        def setManufacturerData(self, manufacturerId: int | java.jint | java.lang.Integer, manufacturerData: java.chaquopy.JavaArrayJByte, manufacturerDataMask: java.chaquopy.JavaArrayJByte, /) -> ScanFilter.Builder: ...
        @typing.overload
        def setServiceData(self, serviceDataUuid: android.os.ParcelUuid, serviceData: java.chaquopy.JavaArrayJByte, /) -> ScanFilter.Builder: ...
        @typing.overload
        def setServiceData(self, serviceDataUuid: android.os.ParcelUuid, serviceData: java.chaquopy.JavaArrayJByte, serviceDataMask: java.chaquopy.JavaArrayJByte, /) -> ScanFilter.Builder: ...
        @typing.overload
        def setServiceSolicitationUuid(self, serviceSolicitationUuid: android.os.ParcelUuid, /) -> ScanFilter.Builder: ...
        @typing.overload
        def setServiceSolicitationUuid(self, serviceSolicitationUuid: android.os.ParcelUuid, solicitationUuidMask: android.os.ParcelUuid, /) -> ScanFilter.Builder: ...
        @typing.overload
        def setServiceUuid(self, serviceUuid: android.os.ParcelUuid, /) -> ScanFilter.Builder: ...
        @typing.overload
        def setServiceUuid(self, serviceUuid: android.os.ParcelUuid, uuidMask: android.os.ParcelUuid, /) -> ScanFilter.Builder: ...

class ScanRecord(java.lang.Object):
    DATA_TYPE_3D_INFORMATION_DATA: typing.ClassVar[int] = ...
    DATA_TYPE_ADVERTISING_INTERVAL: typing.ClassVar[int] = ...
    DATA_TYPE_ADVERTISING_INTERVAL_LONG: typing.ClassVar[int] = ...
    DATA_TYPE_APPEARANCE: typing.ClassVar[int] = ...
    DATA_TYPE_BIG_INFO: typing.ClassVar[int] = ...
    DATA_TYPE_BROADCAST_CODE: typing.ClassVar[int] = ...
    DATA_TYPE_CHANNEL_MAP_UPDATE_INDICATION: typing.ClassVar[int] = ...
    DATA_TYPE_CLASS_OF_DEVICE: typing.ClassVar[int] = ...
    DATA_TYPE_DEVICE_ID: typing.ClassVar[int] = ...
    DATA_TYPE_FLAGS: typing.ClassVar[int] = ...
    DATA_TYPE_INDOOR_POSITIONING: typing.ClassVar[int] = ...
    DATA_TYPE_LE_BLUETOOTH_DEVICE_ADDRESS: typing.ClassVar[int] = ...
    DATA_TYPE_LE_ROLE: typing.ClassVar[int] = ...
    DATA_TYPE_LE_SECURE_CONNECTIONS_CONFIRMATION_VALUE: typing.ClassVar[int] = ...
    DATA_TYPE_LE_SECURE_CONNECTIONS_RANDOM_VALUE: typing.ClassVar[int] = ...
    DATA_TYPE_LE_SUPPORTED_FEATURES: typing.ClassVar[int] = ...
    DATA_TYPE_LOCAL_NAME_COMPLETE: typing.ClassVar[int] = ...
    DATA_TYPE_LOCAL_NAME_SHORT: typing.ClassVar[int] = ...
    DATA_TYPE_MANUFACTURER_SPECIFIC_DATA: typing.ClassVar[int] = ...
    DATA_TYPE_MESH_BEACON: typing.ClassVar[int] = ...
    DATA_TYPE_MESH_MESSAGE: typing.ClassVar[int] = ...
    DATA_TYPE_NONE: typing.ClassVar[int] = ...
    DATA_TYPE_PB_ADV: typing.ClassVar[int] = ...
    DATA_TYPE_PUBLIC_TARGET_ADDRESS: typing.ClassVar[int] = ...
    DATA_TYPE_RANDOM_TARGET_ADDRESS: typing.ClassVar[int] = ...
    DATA_TYPE_RESOLVABLE_SET_IDENTIFIER: typing.ClassVar[int] = ...
    DATA_TYPE_SECURITY_MANAGER_OUT_OF_BAND_FLAGS: typing.ClassVar[int] = ...
    DATA_TYPE_SERVICE_DATA_128_BIT: typing.ClassVar[int] = ...
    DATA_TYPE_SERVICE_DATA_16_BIT: typing.ClassVar[int] = ...
    DATA_TYPE_SERVICE_DATA_32_BIT: typing.ClassVar[int] = ...
    DATA_TYPE_SERVICE_SOLICITATION_UUIDS_128_BIT: typing.ClassVar[int] = ...
    DATA_TYPE_SERVICE_SOLICITATION_UUIDS_16_BIT: typing.ClassVar[int] = ...
    DATA_TYPE_SERVICE_SOLICITATION_UUIDS_32_BIT: typing.ClassVar[int] = ...
    DATA_TYPE_SERVICE_UUIDS_128_BIT_COMPLETE: typing.ClassVar[int] = ...
    DATA_TYPE_SERVICE_UUIDS_128_BIT_PARTIAL: typing.ClassVar[int] = ...
    DATA_TYPE_SERVICE_UUIDS_16_BIT_COMPLETE: typing.ClassVar[int] = ...
    DATA_TYPE_SERVICE_UUIDS_16_BIT_PARTIAL: typing.ClassVar[int] = ...
    DATA_TYPE_SERVICE_UUIDS_32_BIT_COMPLETE: typing.ClassVar[int] = ...
    DATA_TYPE_SERVICE_UUIDS_32_BIT_PARTIAL: typing.ClassVar[int] = ...
    DATA_TYPE_SIMPLE_PAIRING_HASH_C: typing.ClassVar[int] = ...
    DATA_TYPE_SIMPLE_PAIRING_HASH_C_256: typing.ClassVar[int] = ...
    DATA_TYPE_SIMPLE_PAIRING_RANDOMIZER_R: typing.ClassVar[int] = ...
    DATA_TYPE_SIMPLE_PAIRING_RANDOMIZER_R_256: typing.ClassVar[int] = ...
    DATA_TYPE_SLAVE_CONNECTION_INTERVAL_RANGE: typing.ClassVar[int] = ...
    DATA_TYPE_TRANSPORT_DISCOVERY_DATA: typing.ClassVar[int] = ...
    DATA_TYPE_TX_POWER_LEVEL: typing.ClassVar[int] = ...
    DATA_TYPE_URI: typing.ClassVar[int] = ...
    def getAdvertiseFlags(self) -> int: ...
    def getAdvertisingDataMap(self) -> java.util.Map[java.lang.Integer, java.chaquopy.JavaArrayJByte]: ...
    def getBytes(self) -> java.chaquopy.JavaArrayJByte: ...
    def getDeviceName(self) -> str | None: ...
    @typing.overload
    def getManufacturerSpecificData(self) -> android.util.SparseArray[java.chaquopy.JavaArrayJByte] | None: ...
    @typing.overload
    def getManufacturerSpecificData(self, manufacturerId: int | java.jint | java.lang.Integer, /) -> java.chaquopy.JavaArrayJByte | None: ...
    @typing.overload
    def getServiceData(self) -> java.util.Map[android.os.ParcelUuid, java.chaquopy.JavaArrayJByte]: ...
    @typing.overload
    def getServiceData(self, serviceDataUuid: android.os.ParcelUuid, /) -> java.chaquopy.JavaArrayJByte | None: ...
    def getServiceSolicitationUuids(self) -> java.util.List[android.os.ParcelUuid]: ...
    def getServiceUuids(self) -> java.util.List[android.os.ParcelUuid] | None: ...
    def getTxPowerLevel(self) -> int: ...
    def toString(self) -> str: ...

class ScanResult(android.os.Parcelable):
    CREATOR: typing.ClassVar[android.os.Parcelable.Creator[ScanResult]] = ...
    DATA_COMPLETE: typing.ClassVar[int] = ...
    DATA_TRUNCATED: typing.ClassVar[int] = ...
    PERIODIC_INTERVAL_NOT_PRESENT: typing.ClassVar[int] = ...
    PHY_UNUSED: typing.ClassVar[int] = ...
    SID_NOT_PRESENT: typing.ClassVar[int] = ...
    TX_POWER_NOT_PRESENT: typing.ClassVar[int] = ...
    @typing.overload
    def __init__(self, device: android.bluetooth.BluetoothDevice, scanRecord: ScanRecord, rssi: int | java.jint | java.lang.Integer, timestampNanos: int | java.jlong | java.lang.Long, /) -> None: ...
    @typing.overload
    def __init__(self, device: android.bluetooth.BluetoothDevice, eventType: int | java.jint | java.lang.Integer, primaryPhy: int | java.jint | java.lang.Integer, secondaryPhy: int | java.jint | java.lang.Integer, advertisingSid: int | java.jint | java.lang.Integer, txPower: int | java.jint | java.lang.Integer, rssi: int | java.jint | java.lang.Integer, periodicAdvertisingInterval: int | java.jint | java.lang.Integer, scanRecord: ScanRecord, timestampNanos: int | java.jlong | java.lang.Long, /) -> None: ...
    def describeContents(self) -> int: ...
    def equals(self, obj: java.lang.Object | int | bool | float | str, /) -> bool: ...
    def getAdvertisingSid(self) -> int: ...
    def getDataStatus(self) -> int: ...
    def getDevice(self) -> android.bluetooth.BluetoothDevice: ...
    def getPeriodicAdvertisingInterval(self) -> int: ...
    def getPrimaryPhy(self) -> int: ...
    def getRssi(self) -> int: ...
    def getScanRecord(self) -> ScanRecord | None: ...
    def getSecondaryPhy(self) -> int: ...
    def getTimestampNanos(self) -> int: ...
    def getTxPower(self) -> int: ...
    def hashCode(self) -> int: ...
    def isConnectable(self) -> bool: ...
    def isLegacy(self) -> bool: ...
    def toString(self) -> str: ...
    def writeToParcel(self, dest: android.os.Parcel, flags: int | java.jint | java.lang.Integer, /) -> None: ...

class ScanSettings(android.os.Parcelable):
    AUTO_BATCH_MIN_REPORT_DELAY_MILLIS: typing.ClassVar[int] = ...
    CALLBACK_TYPE_ALL_MATCHES: typing.ClassVar[int] = ...
    CALLBACK_TYPE_ALL_MATCHES_AUTO_BATCH: typing.ClassVar[int] = ...
    CALLBACK_TYPE_FIRST_MATCH: typing.ClassVar[int] = ...
    CALLBACK_TYPE_MATCH_LOST: typing.ClassVar[int] = ...
    CREATOR: typing.ClassVar[android.os.Parcelable.Creator[ScanSettings]] = ...
    MATCH_MODE_AGGRESSIVE: typing.ClassVar[int] = ...
    MATCH_MODE_STICKY: typing.ClassVar[int] = ...
    MATCH_NUM_FEW_ADVERTISEMENT: typing.ClassVar[int] = ...
    MATCH_NUM_MAX_ADVERTISEMENT: typing.ClassVar[int] = ...
    MATCH_NUM_ONE_ADVERTISEMENT: typing.ClassVar[int] = ...
    PHY_LE_ALL_SUPPORTED: typing.ClassVar[int] = ...
    SCAN_MODE_BALANCED: typing.ClassVar[int] = ...
    SCAN_MODE_LOW_LATENCY: typing.ClassVar[int] = ...
    SCAN_MODE_LOW_POWER: typing.ClassVar[int] = ...
    SCAN_MODE_OPPORTUNISTIC: typing.ClassVar[int] = ...
    def describeContents(self) -> int: ...
    def getCallbackType(self) -> int: ...
    def getLegacy(self) -> bool: ...
    def getPhy(self) -> int: ...
    def getReportDelayMillis(self) -> int: ...
    def getScanMode(self) -> int: ...
    def getScanResultType(self) -> int: ...
    def writeToParcel(self, dest: android.os.Parcel, flags: int | java.jint | java.lang.Integer, /) -> None: ...

    class Builder(java.lang.Object):
        def __init__(self) -> None: ...
        def build(self) -> ScanSettings: ...
        def setCallbackType(self, callbackType: int | java.jint | java.lang.Integer, /) -> ScanSettings.Builder: ...
        def setLegacy(self, legacy: bool | java.jboolean | java.lang.Boolean, /) -> ScanSettings.Builder: ...
        def setMatchMode(self, matchMode: int | java.jint | java.lang.Integer, /) -> ScanSettings.Builder: ...
        def setNumOfMatches(self, numOfMatches: int | java.jint | java.lang.Integer, /) -> ScanSettings.Builder: ...
        def setPhy(self, phy: int | java.jint | java.lang.Integer, /) -> ScanSettings.Builder: ...
        def setReportDelay(self, reportDelayMillis: int | java.jlong | java.lang.Long, /) -> ScanSettings.Builder: ...
        def setScanMode(self, scanMode: int | java.jint | java.lang.Integer, /) -> ScanSettings.Builder: ...

class TransportBlock(android.os.Parcelable):
    CREATOR: typing.ClassVar[android.os.Parcelable.Creator[TransportBlock]] = ...
    def __init__(self, orgId: int | java.jint | java.lang.Integer, tdsFlags: int | java.jint | java.lang.Integer, transportDataLength: int | java.jint | java.lang.Integer, transportData: java.chaquopy.JavaArrayJByte, /) -> None: ...
    def describeContents(self) -> int: ...
    def equals(self, obj: java.lang.Object | int | bool | float | str, /) -> bool: ...
    def getOrgId(self) -> int: ...
    def getTdsFlags(self) -> int: ...
    def getTransportData(self) -> java.chaquopy.JavaArrayJByte | None: ...
    def getTransportDataLength(self) -> int: ...
    def hashCode(self) -> int: ...
    def toByteArray(self) -> java.chaquopy.JavaArrayJByte | None: ...
    def totalBytes(self) -> int: ...
    def writeToParcel(self, dest: android.os.Parcel, flags: int | java.jint | java.lang.Integer, /) -> None: ...

class TransportDiscoveryData(android.os.Parcelable):
    CREATOR: typing.ClassVar[android.os.Parcelable.Creator[TransportDiscoveryData]] = ...
    @typing.overload
    def __init__(self, transportDiscoveryData: java.chaquopy.JavaArrayJByte, /) -> None: ...
    @typing.overload
    def __init__(self, transportDataType: int | java.jint | java.lang.Integer, transportBlocks: java.util.List[TransportBlock], /) -> None: ...
    def describeContents(self) -> int: ...
    def equals(self, obj: java.lang.Object | int | bool | float | str, /) -> bool: ...
    def getTransportBlocks(self) -> java.util.List[TransportBlock]: ...
    def getTransportDataType(self) -> int: ...
    def hashCode(self) -> int: ...
    def toByteArray(self) -> java.chaquopy.JavaArrayJByte | None: ...
    def toString(self) -> str: ...
    def totalBytes(self) -> int: ...
    def writeToParcel(self, dest: android.os.Parcel, flags: int | java.jint | java.lang.Integer, /) -> None: ...
