import typing

import android.os
import java
import java.chaquopy
import java.lang
import java.time
import java.util

class UwbAddress(android.os.Parcelable):
    CREATOR: typing.ClassVar[android.os.Parcelable.Creator[UwbAddress]] = ...
    EXTENDED_ADDRESS_BYTE_LENGTH: typing.ClassVar[int] = ...
    SHORT_ADDRESS_BYTE_LENGTH: typing.ClassVar[int] = ...
    @staticmethod
    def createRandomShortAddress() -> UwbAddress: ...
    def describeContents(self) -> int: ...
    def equals(self, obj: java.lang.Object | int | bool | float | str, /) -> bool: ...
    @staticmethod
    def fromBytes(address: java.chaquopy.JavaArrayJByte, /) -> UwbAddress: ...
    def getAddressBytes(self) -> java.chaquopy.JavaArrayJByte: ...
    def hashCode(self) -> int: ...
    def toString(self) -> str: ...
    def writeToParcel(self, dest: android.os.Parcel, flags: int | java.jint | java.lang.Integer, /) -> None: ...

class UwbComplexChannel(android.os.Parcelable):
    CREATOR: typing.ClassVar[android.os.Parcelable.Creator[UwbComplexChannel]] = ...
    UWB_CHANNEL_10: typing.ClassVar[int] = ...
    UWB_CHANNEL_12: typing.ClassVar[int] = ...
    UWB_CHANNEL_13: typing.ClassVar[int] = ...
    UWB_CHANNEL_14: typing.ClassVar[int] = ...
    UWB_CHANNEL_5: typing.ClassVar[int] = ...
    UWB_CHANNEL_6: typing.ClassVar[int] = ...
    UWB_CHANNEL_8: typing.ClassVar[int] = ...
    UWB_CHANNEL_9: typing.ClassVar[int] = ...
    UWB_PREAMBLE_CODE_INDEX_10: typing.ClassVar[int] = ...
    UWB_PREAMBLE_CODE_INDEX_11: typing.ClassVar[int] = ...
    UWB_PREAMBLE_CODE_INDEX_12: typing.ClassVar[int] = ...
    UWB_PREAMBLE_CODE_INDEX_25: typing.ClassVar[int] = ...
    UWB_PREAMBLE_CODE_INDEX_26: typing.ClassVar[int] = ...
    UWB_PREAMBLE_CODE_INDEX_27: typing.ClassVar[int] = ...
    UWB_PREAMBLE_CODE_INDEX_28: typing.ClassVar[int] = ...
    UWB_PREAMBLE_CODE_INDEX_29: typing.ClassVar[int] = ...
    UWB_PREAMBLE_CODE_INDEX_30: typing.ClassVar[int] = ...
    UWB_PREAMBLE_CODE_INDEX_31: typing.ClassVar[int] = ...
    UWB_PREAMBLE_CODE_INDEX_32: typing.ClassVar[int] = ...
    UWB_PREAMBLE_CODE_INDEX_9: typing.ClassVar[int] = ...
    def describeContents(self) -> int: ...
    def equals(self, o: java.lang.Object | int | bool | float | str, /) -> bool: ...
    def getChannel(self) -> int: ...
    def getPreambleIndex(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) -> UwbComplexChannel: ...
        def setChannel(self, channel: int | java.jint | java.lang.Integer, /) -> UwbComplexChannel.Builder: ...
        def setPreambleIndex(self, preambleIndex: int | java.jint | java.lang.Integer, /) -> UwbComplexChannel.Builder: ...

class UwbRangingCapabilities(android.os.Parcelable):
    CREATOR: typing.ClassVar[android.os.Parcelable.Creator[UwbRangingCapabilities]] = ...
    def describeContents(self) -> int: ...
    def getMinimumRangingInterval(self) -> java.time.Duration: ...
    def getSupportedChannels(self) -> java.util.List[java.lang.Integer]: ...
    def getSupportedConfigIds(self) -> java.util.List[java.lang.Integer]: ...
    def getSupportedNotificationConfigurations(self) -> java.util.List[java.lang.Integer]: ...
    def getSupportedPreambleIndexes(self) -> java.util.List[java.lang.Integer]: ...
    def getSupportedRangingUpdateRates(self) -> java.util.List[java.lang.Integer]: ...
    def getSupportedSlotDurations(self) -> java.util.List[java.lang.Integer]: ...
    def isAzimuthalAngleSupported(self) -> bool: ...
    def isBackgroundRangingSupported(self) -> bool: ...
    def isDistanceMeasurementSupported(self) -> bool: ...
    def isElevationAngleSupported(self) -> bool: ...
    def isRangingIntervalReconfigurationSupported(self) -> bool: ...
    def toString(self) -> str: ...
    def writeToParcel(self, dest: android.os.Parcel, flags: int | java.jint | java.lang.Integer, /) -> None: ...

class UwbRangingParams(android.os.Parcelable):
    CONFIG_MULTICAST_DS_TWR: typing.ClassVar[int] = ...
    CONFIG_PROVISIONED_INDIVIDUAL_MULTICAST_DS_TWR: typing.ClassVar[int] = ...
    CONFIG_PROVISIONED_MULTICAST_DS_TWR: typing.ClassVar[int] = ...
    CONFIG_PROVISIONED_UNICAST_DS_TWR: typing.ClassVar[int] = ...
    CONFIG_PROVISIONED_UNICAST_DS_TWR_VERY_FAST: typing.ClassVar[int] = ...
    CONFIG_UNICAST_DS_TWR: typing.ClassVar[int] = ...
    CREATOR: typing.ClassVar[android.os.Parcelable.Creator[UwbRangingParams]] = ...
    DURATION_1_MS: typing.ClassVar[int] = ...
    DURATION_2_MS: typing.ClassVar[int] = ...
    SUB_SESSION_UNDEFINED: typing.ClassVar[int] = ...
    def describeContents(self) -> int: ...
    def equals(self, o: java.lang.Object | int | bool | float | str, /) -> bool: ...
    def getComplexChannel(self) -> UwbComplexChannel: ...
    def getConfigId(self) -> int: ...
    def getDeviceAddress(self) -> UwbAddress: ...
    def getPeerAddress(self) -> UwbAddress: ...
    def getRangingUpdateRate(self) -> int: ...
    def getSessionId(self) -> int: ...
    def getSessionKeyInfo(self) -> java.chaquopy.JavaArrayJByte: ...
    def getSlotDuration(self) -> int: ...
    def getSubSessionId(self) -> int: ...
    def getSubSessionKeyInfo(self) -> java.chaquopy.JavaArrayJByte: ...
    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, sessionId: int | java.jint | java.lang.Integer, configId: int | java.jint | java.lang.Integer, deviceAddress: UwbAddress, peerAddress: UwbAddress, /) -> None: ...
        def build(self) -> UwbRangingParams: ...
        def setComplexChannel(self, complexChannel: UwbComplexChannel, /) -> UwbRangingParams.Builder: ...
        def setRangingUpdateRate(self, rate: int | java.jint | java.lang.Integer, /) -> UwbRangingParams.Builder: ...
        def setSessionKeyInfo(self, sessionKeyInfo: java.chaquopy.JavaArrayJByte, /) -> UwbRangingParams.Builder: ...
        def setSlotDuration(self, durationMs: int | java.jint | java.lang.Integer, /) -> UwbRangingParams.Builder: ...
        def setSubSessionId(self, subSessionId: int | java.jint | java.lang.Integer, /) -> UwbRangingParams.Builder: ...
        def setSubSessionKeyInfo(self, subSessionKeyInfo: java.chaquopy.JavaArrayJByte, /) -> UwbRangingParams.Builder: ...
