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

  public final class CallAttributesCompat {
    ctor public CallAttributesCompat(CharSequence displayName, android.net.Uri address, int direction, optional int callType, optional int callCapabilities);
    method public android.net.Uri getAddress();
    method public int getCallCapabilities();
    method public int getCallType();
    method public int getDirection();
    method public CharSequence getDisplayName();
    property public final android.net.Uri address;
    property public final int callCapabilities;
    property public final int callType;
    property public final int direction;
    property public final CharSequence displayName;
    field public static final int CALL_TYPE_AUDIO_CALL = 1; // 0x1
    field public static final int CALL_TYPE_VIDEO_CALL = 2; // 0x2
    field public static final androidx.core.telecom.CallAttributesCompat.Companion Companion;
    field public static final int DIRECTION_INCOMING = 1; // 0x1
    field public static final int DIRECTION_OUTGOING = 2; // 0x2
    field public static final int SUPPORTS_SET_INACTIVE = 2; // 0x2
    field public static final int SUPPORTS_STREAM = 4; // 0x4
    field public static final int SUPPORTS_TRANSFER = 8; // 0x8
  }

  public static final class CallAttributesCompat.Companion {
  }

  public abstract sealed class CallControlResult {
  }

  public static final class CallControlResult.Error extends androidx.core.telecom.CallControlResult {
    ctor public CallControlResult.Error(int errorCode);
    method public int getErrorCode();
    property public final int errorCode;
  }

  public static final class CallControlResult.Success extends androidx.core.telecom.CallControlResult {
    ctor public CallControlResult.Success();
  }

  public interface CallControlScope extends kotlinx.coroutines.CoroutineScope {
    method public suspend Object? answer(int callType, kotlin.coroutines.Continuation<? super androidx.core.telecom.CallControlResult>);
    method public suspend Object? disconnect(android.telecom.DisconnectCause disconnectCause, kotlin.coroutines.Continuation<? super androidx.core.telecom.CallControlResult>);
    method public kotlinx.coroutines.flow.Flow<java.util.List<androidx.core.telecom.CallEndpointCompat>> getAvailableEndpoints();
    method public android.os.ParcelUuid getCallId();
    method public kotlinx.coroutines.flow.Flow<androidx.core.telecom.CallEndpointCompat> getCurrentCallEndpoint();
    method public kotlinx.coroutines.flow.Flow<java.lang.Boolean> isMuted();
    method public suspend Object? requestEndpointChange(androidx.core.telecom.CallEndpointCompat endpoint, kotlin.coroutines.Continuation<? super androidx.core.telecom.CallControlResult>);
    method public suspend Object? setActive(kotlin.coroutines.Continuation<? super androidx.core.telecom.CallControlResult>);
    method public suspend Object? setInactive(kotlin.coroutines.Continuation<? super androidx.core.telecom.CallControlResult>);
    property public abstract kotlinx.coroutines.flow.Flow<java.util.List<androidx.core.telecom.CallEndpointCompat>> availableEndpoints;
    property public abstract kotlinx.coroutines.flow.Flow<androidx.core.telecom.CallEndpointCompat> currentCallEndpoint;
    property public abstract kotlinx.coroutines.flow.Flow<java.lang.Boolean> isMuted;
  }

  @RequiresApi(android.os.Build.VERSION_CODES.O) public final class CallEndpointCompat {
    ctor public CallEndpointCompat(CharSequence name, int type, android.os.ParcelUuid identifier);
    method public android.os.ParcelUuid getIdentifier();
    method public CharSequence getName();
    method public int getType();
    property public final android.os.ParcelUuid identifier;
    property public final CharSequence name;
    property public final int type;
    field public static final androidx.core.telecom.CallEndpointCompat.Companion Companion;
    field public static final int TYPE_BLUETOOTH = 2; // 0x2
    field public static final int TYPE_EARPIECE = 1; // 0x1
    field public static final int TYPE_SPEAKER = 4; // 0x4
    field public static final int TYPE_STREAMING = 5; // 0x5
    field public static final int TYPE_UNKNOWN = -1; // 0xffffffff
    field public static final int TYPE_WIRED_HEADSET = 3; // 0x3
  }

  public static final class CallEndpointCompat.Companion {
  }

  public final class CallException extends java.lang.RuntimeException {
    ctor public CallException(optional int code);
    method public int getCode();
    property public final int code;
    field public static final androidx.core.telecom.CallException.Companion Companion;
    field public static final int ERROR_BLUETOOTH_DEVICE_IS_NULL = 8; // 0x8
    field public static final int ERROR_CALL_CANNOT_BE_SET_TO_ACTIVE = 4; // 0x4
    field public static final int ERROR_CALL_DOES_NOT_SUPPORT_HOLD = 7; // 0x7
    field public static final int ERROR_CALL_IS_NOT_BEING_TRACKED = 3; // 0x3
    field public static final int ERROR_CALL_NOT_PERMITTED_AT_PRESENT_TIME = 5; // 0x5
    field public static final int ERROR_CANNOT_HOLD_CURRENT_ACTIVE_CALL = 2; // 0x2
    field public static final int ERROR_OPERATION_TIMED_OUT = 6; // 0x6
    field public static final int ERROR_UNKNOWN = 1; // 0x1
  }

  public static final class CallException.Companion {
  }

  @RequiresApi(android.os.Build.VERSION_CODES.O) public final class CallsManager {
    ctor public CallsManager(android.content.Context context);
    method @RequiresPermission("android.permission.MANAGE_OWN_CALLS") public suspend Object? addCall(androidx.core.telecom.CallAttributesCompat callAttributes, kotlin.jvm.functions.Function2<? super java.lang.Integer,? super kotlin.coroutines.Continuation<? super kotlin.Unit>,?> onAnswer, kotlin.jvm.functions.Function2<? super android.telecom.DisconnectCause,? super kotlin.coroutines.Continuation<? super kotlin.Unit>,?> onDisconnect, kotlin.jvm.functions.Function1<? super kotlin.coroutines.Continuation<? super kotlin.Unit>,?> onSetActive, kotlin.jvm.functions.Function1<? super kotlin.coroutines.Continuation<? super kotlin.Unit>,?> onSetInactive, kotlin.jvm.functions.Function1<? super androidx.core.telecom.CallControlScope,kotlin.Unit> block, kotlin.coroutines.Continuation<? super kotlin.Unit>);
    method @RequiresPermission("android.permission.MANAGE_OWN_CALLS") public void registerAppWithTelecom(int capabilities);
    field public static final int CAPABILITY_BASELINE = 1; // 0x1
    field public static final int CAPABILITY_SUPPORTS_CALL_STREAMING = 4; // 0x4
    field public static final int CAPABILITY_SUPPORTS_VIDEO_CALLING = 2; // 0x2
    field public static final androidx.core.telecom.CallsManager.Companion Companion;
  }

  public static final class CallsManager.Companion {
  }

}

package androidx.core.telecom.util {

  @SuppressCompatibility @RequiresOptIn @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.CLASS) public @interface ExperimentalAppActions {
  }

}

