// Signature format: 4.0
package androidx.core.uwb {

  public final class RangingCapabilities {
    ctor public RangingCapabilities(boolean isDistanceSupported, boolean isAzimuthalAngleSupported, boolean isElevationAngleSupported, int minRangingInterval, java.util.Set<java.lang.Integer> supportedChannels, java.util.Set<java.lang.Integer> supportedConfigIds);
    method public int getMinRangingInterval();
    method public java.util.Set<java.lang.Integer> getSupportedChannels();
    method public java.util.Set<java.lang.Integer> getSupportedConfigIds();
    method public boolean isAzimuthalAngleSupported();
    method public boolean isDistanceSupported();
    method public boolean isElevationAngleSupported();
    property public final boolean isAzimuthalAngleSupported;
    property public final boolean isDistanceSupported;
    property public final boolean isElevationAngleSupported;
    property public final int minRangingInterval;
    property public final java.util.Set<java.lang.Integer> supportedChannels;
    property public final java.util.Set<java.lang.Integer> supportedConfigIds;
  }

  public final class RangingMeasurement {
    ctor public RangingMeasurement(float value);
    method public float getValue();
    property public final float value;
  }

  public final class RangingParameters {
    ctor public RangingParameters(int uwbConfigType, int sessionId, byte[]? sessionKeyInfo, androidx.core.uwb.UwbComplexChannel? complexChannel, java.util.List<androidx.core.uwb.UwbDevice> peerDevices, int updateRateType);
    method public androidx.core.uwb.UwbComplexChannel? getComplexChannel();
    method public java.util.List<androidx.core.uwb.UwbDevice> getPeerDevices();
    method public int getSessionId();
    method public byte[]? getSessionKeyInfo();
    method public int getUpdateRateType();
    method public int getUwbConfigType();
    property public final androidx.core.uwb.UwbComplexChannel? complexChannel;
    property public final java.util.List<androidx.core.uwb.UwbDevice> peerDevices;
    property public final int sessionId;
    property public final byte[]? sessionKeyInfo;
    property public final int updateRateType;
    property public final int uwbConfigType;
    field public static final int CONFIG_MULTICAST_DS_TWR;
    field public static final int CONFIG_UNICAST_DS_TWR;
    field public static final androidx.core.uwb.RangingParameters.Companion Companion;
    field public static final int RANGING_UPDATE_RATE_AUTOMATIC;
    field public static final int RANGING_UPDATE_RATE_FREQUENT;
    field public static final int RANGING_UPDATE_RATE_INFREQUENT;
  }

  public static final class RangingParameters.Companion {
  }

  public final class RangingPosition {
    ctor public RangingPosition(androidx.core.uwb.RangingMeasurement? distance, androidx.core.uwb.RangingMeasurement? azimuth, androidx.core.uwb.RangingMeasurement? elevation, long elapsedRealtimeNanos);
    method public androidx.core.uwb.RangingMeasurement? getAzimuth();
    method public androidx.core.uwb.RangingMeasurement? getDistance();
    method public long getElapsedRealtimeNanos();
    method public androidx.core.uwb.RangingMeasurement? getElevation();
    property public final androidx.core.uwb.RangingMeasurement? azimuth;
    property public final androidx.core.uwb.RangingMeasurement? distance;
    property public final long elapsedRealtimeNanos;
    property public final androidx.core.uwb.RangingMeasurement? elevation;
  }

  public abstract class RangingResult {
    method public abstract androidx.core.uwb.UwbDevice getDevice();
    property public abstract androidx.core.uwb.UwbDevice device;
  }

  public static final class RangingResult.RangingResultPeerDisconnected extends androidx.core.uwb.RangingResult {
    ctor public RangingResult.RangingResultPeerDisconnected(androidx.core.uwb.UwbDevice device);
    method public androidx.core.uwb.UwbDevice getDevice();
    property public androidx.core.uwb.UwbDevice device;
  }

  public static final class RangingResult.RangingResultPosition extends androidx.core.uwb.RangingResult {
    ctor public RangingResult.RangingResultPosition(androidx.core.uwb.UwbDevice device, androidx.core.uwb.RangingPosition position);
    method public androidx.core.uwb.UwbDevice getDevice();
    method public androidx.core.uwb.RangingPosition getPosition();
    property public androidx.core.uwb.UwbDevice device;
    property public final androidx.core.uwb.RangingPosition position;
  }

  public final class UwbAddress {
    ctor public UwbAddress(byte[] address);
    ctor public UwbAddress(String address);
    method public byte[] getAddress();
    property public final byte[] address;
    field public static final androidx.core.uwb.UwbAddress.Companion Companion;
  }

  public static final class UwbAddress.Companion {
  }

  public interface UwbClientSessionScope {
    method public androidx.core.uwb.UwbAddress getLocalAddress();
    method public androidx.core.uwb.RangingCapabilities getRangingCapabilities();
    method public kotlinx.coroutines.flow.Flow<androidx.core.uwb.RangingResult> prepareSession(androidx.core.uwb.RangingParameters parameters);
    property public abstract androidx.core.uwb.UwbAddress localAddress;
    property public abstract androidx.core.uwb.RangingCapabilities rangingCapabilities;
  }

  public final class UwbComplexChannel {
    ctor public UwbComplexChannel(int channel, int preambleIndex);
    method public int getChannel();
    method public int getPreambleIndex();
    property public final int channel;
    property public final int preambleIndex;
  }

  public interface UwbControleeSessionScope extends androidx.core.uwb.UwbClientSessionScope {
  }

  public interface UwbControllerSessionScope extends androidx.core.uwb.UwbClientSessionScope {
    method public suspend Object? addControlee(androidx.core.uwb.UwbAddress address, kotlin.coroutines.Continuation<? super kotlin.Unit>);
    method public androidx.core.uwb.UwbComplexChannel getUwbComplexChannel();
    method public suspend Object? removeControlee(androidx.core.uwb.UwbAddress address, kotlin.coroutines.Continuation<? super kotlin.Unit>);
    property public abstract androidx.core.uwb.UwbComplexChannel uwbComplexChannel;
  }

  public final class UwbDevice {
    ctor public UwbDevice(androidx.core.uwb.UwbAddress address);
    method public static androidx.core.uwb.UwbDevice createForAddress(byte[] address);
    method public static androidx.core.uwb.UwbDevice createForAddress(String address);
    method public androidx.core.uwb.UwbAddress getAddress();
    property public final androidx.core.uwb.UwbAddress address;
    field public static final androidx.core.uwb.UwbDevice.Companion Companion;
  }

  public static final class UwbDevice.Companion {
    method public androidx.core.uwb.UwbDevice createForAddress(byte[] address);
    method public androidx.core.uwb.UwbDevice createForAddress(String address);
  }

  @kotlin.jvm.JvmDefaultWithCompatibility public interface UwbManager {
    method @Deprecated public suspend Object? clientSessionScope(kotlin.coroutines.Continuation<? super androidx.core.uwb.UwbClientSessionScope>);
    method public suspend Object? controleeSessionScope(kotlin.coroutines.Continuation<? super androidx.core.uwb.UwbControleeSessionScope>);
    method public suspend Object? controllerSessionScope(kotlin.coroutines.Continuation<? super androidx.core.uwb.UwbControllerSessionScope>);
    method public default static androidx.core.uwb.UwbManager createInstance(android.content.Context context);
    field public static final androidx.core.uwb.UwbManager.Companion Companion;
  }

  public static final class UwbManager.Companion {
    method public androidx.core.uwb.UwbManager createInstance(android.content.Context context);
  }

}

package androidx.core.uwb.exceptions {

  public class UwbApiException extends java.lang.Exception {
    ctor public UwbApiException(String message);
  }

  public final class UwbHardwareNotAvailableException extends androidx.core.uwb.exceptions.UwbApiException {
    ctor public UwbHardwareNotAvailableException(String message);
  }

  public final class UwbServiceNotAvailableException extends androidx.core.uwb.exceptions.UwbApiException {
    ctor public UwbServiceNotAvailableException(String message);
  }

  public final class UwbSystemCallbackException extends androidx.core.uwb.exceptions.UwbApiException {
    ctor public UwbSystemCallbackException(String message);
  }

}

