import typing

import android.os
import android.ranging.ble.cs
import android.ranging.uwb
import android.ranging.wifi.rtt
import java
import java.lang
import java.util
import java.util.concurrent

class DataNotificationConfig(android.os.Parcelable):
    CREATOR: typing.ClassVar[android.os.Parcelable.Creator[DataNotificationConfig]] = ...
    NOTIFICATION_CONFIG_DISABLE: typing.ClassVar[int] = ...
    NOTIFICATION_CONFIG_ENABLE: typing.ClassVar[int] = ...
    NOTIFICATION_CONFIG_PROXIMITY_EDGE: typing.ClassVar[int] = ...
    NOTIFICATION_CONFIG_PROXIMITY_LEVEL: typing.ClassVar[int] = ...
    def describeContents(self) -> int: ...
    def equals(self, o: java.lang.Object | int | bool | float | str, /) -> bool: ...
    def getNotificationConfigType(self) -> int: ...
    def getProximityFarCm(self) -> int: ...
    def getProximityNearCm(self) -> int: ...
    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 build(self) -> DataNotificationConfig: ...
        def setNotificationConfigType(self, config: int | java.jint | java.lang.Integer, /) -> DataNotificationConfig.Builder: ...
        def setProximityFarCm(self, proximityCm: int | java.jint | java.lang.Integer, /) -> DataNotificationConfig.Builder: ...
        def setProximityNearCm(self, proximityCm: int | java.jint | java.lang.Integer, /) -> DataNotificationConfig.Builder: ...

class RangingCapabilities(android.os.Parcelable):
    CREATOR: typing.ClassVar[android.os.Parcelable.Creator[RangingCapabilities]] = ...
    DISABLED_REGULATORY: typing.ClassVar[int] = ...
    DISABLED_USER: typing.ClassVar[int] = ...
    DISABLED_USER_RESTRICTIONS: typing.ClassVar[int] = ...
    ENABLED: typing.ClassVar[int] = ...
    NOT_SUPPORTED: typing.ClassVar[int] = ...
    def describeContents(self) -> int: ...
    def getCsCapabilities(self) -> android.ranging.ble.cs.BleCsRangingCapabilities: ...
    def getRttRangingCapabilities(self) -> android.ranging.wifi.rtt.RttRangingCapabilities: ...
    def getTechnologyAvailability(self) -> java.util.Map[java.lang.Integer, java.lang.Integer]: ...
    def getUwbCapabilities(self) -> android.ranging.uwb.UwbRangingCapabilities: ...
    def toString(self) -> str: ...
    def writeToParcel(self, dest: android.os.Parcel, flags: int | java.jint | java.lang.Integer, /) -> None: ...

class RangingConfig(android.os.Parcelable):
    RANGING_SESSION_OOB: typing.ClassVar[int] = ...
    RANGING_SESSION_RAW: typing.ClassVar[int] = ...
    def __init__(self) -> None: ...
    def getRangingSessionType(self) -> int: ...
    def toString(self) -> str: ...

class RangingData(android.os.Parcelable):
    CREATOR: typing.ClassVar[android.os.Parcelable.Creator[RangingData]] = ...
    def describeContents(self) -> int: ...
    def getAzimuth(self) -> RangingMeasurement: ...
    def getDistance(self) -> RangingMeasurement: ...
    def getElevation(self) -> RangingMeasurement: ...
    def getRangingTechnology(self) -> int: ...
    def getRssi(self) -> int: ...
    def getTimestampMillis(self) -> int: ...
    def hasRssi(self) -> bool: ...
    def writeToParcel(self, dest: android.os.Parcel, flags: int | java.jint | java.lang.Integer, /) -> None: ...

class RangingDevice(android.os.Parcelable):
    CREATOR: typing.ClassVar[android.os.Parcelable.Creator[RangingDevice]] = ...
    def describeContents(self) -> int: ...
    def equals(self, obj: java.lang.Object | int | bool | float | str, /) -> bool: ...
    def getUuid(self) -> java.util.UUID: ...
    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 build(self) -> RangingDevice: ...
        def setUuid(self, id: java.util.UUID, /) -> RangingDevice.Builder: ...

class RangingManager(java.lang.Object):
    BLE_CS: typing.ClassVar[int] = ...
    BLE_RSSI: typing.ClassVar[int] = ...
    UWB: typing.ClassVar[int] = ...
    WIFI_NAN_RTT: typing.ClassVar[int] = ...
    def createRangingSession(self, executor: java.util.concurrent.Executor, callback: RangingSession.Callback, /) -> RangingSession: ...
    def registerCapabilitiesCallback(self, executor: java.util.concurrent.Executor, callback: RangingManager.RangingCapabilitiesCallback, /) -> None: ...
    def unregisterCapabilitiesCallback(self, callback: RangingManager.RangingCapabilitiesCallback, /) -> None: ...

    class RangingCapabilitiesCallback(java.lang.Object):
        def onRangingCapabilities(self, arg1: RangingCapabilities, /) -> None: ...

class RangingMeasurement(android.os.Parcelable):
    CONFIDENCE_HIGH: typing.ClassVar[int] = ...
    CONFIDENCE_LOW: typing.ClassVar[int] = ...
    CONFIDENCE_MEDIUM: typing.ClassVar[int] = ...
    CREATOR: typing.ClassVar[android.os.Parcelable.Creator[RangingMeasurement]] = ...
    def describeContents(self) -> int: ...
    def getConfidence(self) -> int: ...
    def getMeasurement(self) -> float: ...
    def toString(self) -> str: ...
    def writeToParcel(self, dest: android.os.Parcel, flags: int | java.jint | java.lang.Integer, /) -> None: ...

class RangingPreference(android.os.Parcelable):
    CREATOR: typing.ClassVar[android.os.Parcelable.Creator[RangingPreference]] = ...
    DEVICE_ROLE_INITIATOR: typing.ClassVar[int] = ...
    DEVICE_ROLE_RESPONDER: typing.ClassVar[int] = ...
    def describeContents(self) -> int: ...
    def getDeviceRole(self) -> int: ...
    def getRangingParams(self) -> RangingConfig: ...
    def getSessionConfig(self) -> SessionConfig: ...
    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, role: int | java.jint | java.lang.Integer, rangingConfig: RangingConfig, /) -> None: ...
        def build(self) -> RangingPreference: ...
        def setSessionConfig(self, config: SessionConfig, /) -> RangingPreference.Builder: ...

class RangingSession(java.lang.AutoCloseable):
    def addDeviceToRangingSession(self, deviceRangingParams: RangingConfig, /) -> None: ...
    def close(self) -> None: ...
    def reconfigureRangingInterval(self, intervalSkipCount: int | java.jint | java.lang.Integer, /) -> None: ...
    def removeDeviceFromRangingSession(self, rangingDevice: RangingDevice, /) -> None: ...
    def start(self, rangingPreference: RangingPreference, /) -> android.os.CancellationSignal: ...
    def stop(self) -> None: ...
    def toString(self) -> str: ...

    class Callback(java.lang.Object):
        REASON_LOCAL_REQUEST: typing.ClassVar[int] = ...
        REASON_NO_PEERS_FOUND: typing.ClassVar[int] = ...
        REASON_REMOTE_REQUEST: typing.ClassVar[int] = ...
        REASON_SYSTEM_POLICY: typing.ClassVar[int] = ...
        REASON_UNKNOWN: typing.ClassVar[int] = ...
        REASON_UNSUPPORTED: typing.ClassVar[int] = ...
        def onClosed(self, arg1: int | java.jint | java.lang.Integer, /) -> None: ...
        def onOpenFailed(self, arg1: int | java.jint | java.lang.Integer, /) -> None: ...
        def onOpened(self) -> None: ...
        def onResults(self, arg1: RangingDevice, arg2: RangingData, /) -> None: ...
        def onStarted(self, arg1: RangingDevice, arg2: int | java.jint | java.lang.Integer, /) -> None: ...
        def onStopped(self, arg1: RangingDevice, arg2: int | java.jint | java.lang.Integer, /) -> None: ...

class SensorFusionParams(android.os.Parcelable):
    CREATOR: typing.ClassVar[android.os.Parcelable.Creator[SensorFusionParams]] = ...
    def describeContents(self) -> int: ...
    def equals(self, o: java.lang.Object | int | bool | float | str, /) -> bool: ...
    def hashCode(self) -> int: ...
    def isSensorFusionEnabled(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) -> SensorFusionParams: ...
        def setSensorFusionEnabled(self, sensorFusionEnabled: bool | java.jboolean | java.lang.Boolean, /) -> SensorFusionParams.Builder: ...

class SessionConfig(android.os.Parcelable):
    CREATOR: typing.ClassVar[android.os.Parcelable.Creator[SessionConfig]] = ...
    def describeContents(self) -> int: ...
    def equals(self, o: java.lang.Object | int | bool | float | str, /) -> bool: ...
    def getDataNotificationConfig(self) -> DataNotificationConfig: ...
    def getRangingMeasurementsLimit(self) -> int: ...
    def getSensorFusionParams(self) -> SensorFusionParams: ...
    def hashCode(self) -> int: ...
    def isAngleOfArrivalNeeded(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) -> SessionConfig: ...
        def setAngleOfArrivalNeeded(self, isAngleOfArrivalNeeded: bool | java.jboolean | java.lang.Boolean, /) -> SessionConfig.Builder: ...
        def setDataNotificationConfig(self, config: DataNotificationConfig, /) -> SessionConfig.Builder: ...
        def setRangingMeasurementsLimit(self, rangingMeasurementsLimit: int | java.jint | java.lang.Integer, /) -> SessionConfig.Builder: ...
        def setSensorFusionParams(self, parameters: SensorFusionParams, /) -> SessionConfig.Builder: ...
