import typing

import android.app
import android.bluetooth
import android.content
import android.graphics.drawable
import android.location
import android.net
import android.os
import android.view
import java
import java.lang
import java.util
import java.util.concurrent
import java.util.function

class Call(java.lang.Object):
    AVAILABLE_PHONE_ACCOUNTS: typing.ClassVar[str] = ...
    EVENT_CLEAR_DIAGNOSTIC_MESSAGE: typing.ClassVar[str] = ...
    EVENT_DISPLAY_DIAGNOSTIC_MESSAGE: typing.ClassVar[str] = ...
    EXTRA_ASSERTED_DISPLAY_NAME: typing.ClassVar[str] = ...
    EXTRA_DIAGNOSTIC_MESSAGE: typing.ClassVar[str] = ...
    EXTRA_DIAGNOSTIC_MESSAGE_ID: typing.ClassVar[str] = ...
    EXTRA_IS_BUSINESS_CALL: typing.ClassVar[str] = ...
    EXTRA_IS_SUPPRESSED_BY_DO_NOT_DISTURB: typing.ClassVar[str] = ...
    EXTRA_LAST_EMERGENCY_CALLBACK_TIME_MILLIS: typing.ClassVar[str] = ...
    EXTRA_SILENT_RINGING_REQUESTED: typing.ClassVar[str] = ...
    EXTRA_SUGGESTED_PHONE_ACCOUNTS: typing.ClassVar[str] = ...
    REJECT_REASON_DECLINED: typing.ClassVar[int] = ...
    REJECT_REASON_UNWANTED: typing.ClassVar[int] = ...
    STATE_ACTIVE: typing.ClassVar[int] = ...
    STATE_AUDIO_PROCESSING: typing.ClassVar[int] = ...
    STATE_CONNECTING: typing.ClassVar[int] = ...
    STATE_DIALING: typing.ClassVar[int] = ...
    STATE_DISCONNECTED: typing.ClassVar[int] = ...
    STATE_DISCONNECTING: typing.ClassVar[int] = ...
    STATE_HOLDING: typing.ClassVar[int] = ...
    STATE_NEW: typing.ClassVar[int] = ...
    STATE_PULLING_CALL: typing.ClassVar[int] = ...
    STATE_RINGING: typing.ClassVar[int] = ...
    STATE_SELECT_PHONE_ACCOUNT: typing.ClassVar[int] = ...
    STATE_SIMULATED_RINGING: typing.ClassVar[int] = ...
    def addConferenceParticipants(self, participants: java.util.List[android.net.Uri], /) -> None: ...
    def answer(self, videoState: int | java.jint | java.lang.Integer, /) -> None: ...
    def conference(self, callToConferenceWith: Call, /) -> None: ...
    def deflect(self, address: android.net.Uri, /) -> None: ...
    def disconnect(self) -> None: ...
    def getCannedTextResponses(self) -> java.util.List[java.lang.String]: ...
    def getChildren(self) -> java.util.List[Call]: ...
    def getConferenceableCalls(self) -> java.util.List[Call]: ...
    def getDetails(self) -> Call.Details: ...
    def getGenericConferenceActiveChildCall(self) -> Call | None: ...
    def getParent(self) -> Call: ...
    def getRemainingPostDialSequence(self) -> str: ...
    def getRttCall(self) -> Call.RttCall | None: ...
    def getState(self) -> int: ...
    def getVideoCall(self) -> InCallService.VideoCall: ...
    def handoverTo(self, toHandle: PhoneAccountHandle, videoState: int | java.jint | java.lang.Integer, extras: android.os.Bundle, /) -> None: ...
    def hold(self) -> None: ...
    def isRttActive(self) -> bool: ...
    def mergeConference(self) -> None: ...
    def phoneAccountSelected(self, accountHandle: PhoneAccountHandle, setDefault: bool | java.jboolean | java.lang.Boolean, /) -> None: ...
    def playDtmfTone(self, digit: str | java.jchar | java.lang.Character, /) -> None: ...
    def postDialContinue(self, proceed: bool | java.jboolean | java.lang.Boolean, /) -> None: ...
    def pullExternalCall(self) -> None: ...
    def putExtras(self, extras: android.os.Bundle, /) -> None: ...
    @typing.overload
    def registerCallback(self, callback: Call.Callback, /) -> None: ...
    @typing.overload
    def registerCallback(self, callback: Call.Callback, handler: android.os.Handler, /) -> None: ...
    @typing.overload
    def reject(self, rejectReason: int | java.jint | java.lang.Integer, /) -> None: ...
    @typing.overload
    def reject(self, rejectWithMessage: bool | java.jboolean | java.lang.Boolean, textMessage: str | java.lang.String, /) -> None: ...
    @typing.overload
    def removeExtras(self, keys: java.util.List[java.lang.String], /) -> None: ...
    @typing.overload
    def removeExtras(self, *keys: java.lang.String) -> None: ...
    def respondToRttRequest(self, id: int | java.jint | java.lang.Integer, accept: bool | java.jboolean | java.lang.Boolean, /) -> None: ...
    def sendCallEvent(self, event: str | java.lang.String, extras: android.os.Bundle, /) -> None: ...
    def sendRttRequest(self) -> None: ...
    def splitFromConference(self) -> None: ...
    def stopDtmfTone(self) -> None: ...
    def stopRtt(self) -> None: ...
    def swapConference(self) -> None: ...
    def toString(self) -> str: ...
    def unhold(self) -> None: ...
    def unregisterCallback(self, callback: Call.Callback, /) -> None: ...

    class RttCall(java.lang.Object):
        RTT_MODE_FULL: typing.ClassVar[int] = ...
        RTT_MODE_HCO: typing.ClassVar[int] = ...
        RTT_MODE_VCO: typing.ClassVar[int] = ...
        def getRttAudioMode(self) -> int: ...
        def read(self) -> str: ...
        def readImmediately(self) -> str: ...
        def setRttMode(self, mode: int | java.jint | java.lang.Integer, /) -> None: ...
        def write(self, input: str | java.lang.String, /) -> None: ...

    class Details(java.lang.Object):
        CAPABILITY_ADD_PARTICIPANT: typing.ClassVar[int] = ...
        CAPABILITY_CANNOT_DOWNGRADE_VIDEO_TO_AUDIO: typing.ClassVar[int] = ...
        CAPABILITY_CAN_PAUSE_VIDEO: typing.ClassVar[int] = ...
        CAPABILITY_CAN_PULL_CALL: typing.ClassVar[int] = ...
        CAPABILITY_DISCONNECT_FROM_CONFERENCE: typing.ClassVar[int] = ...
        CAPABILITY_HOLD: typing.ClassVar[int] = ...
        CAPABILITY_MANAGE_CONFERENCE: typing.ClassVar[int] = ...
        CAPABILITY_MERGE_CONFERENCE: typing.ClassVar[int] = ...
        CAPABILITY_MUTE: typing.ClassVar[int] = ...
        CAPABILITY_REMOTE_PARTY_SUPPORTS_RTT: typing.ClassVar[int] = ...
        CAPABILITY_RESPOND_VIA_TEXT: typing.ClassVar[int] = ...
        CAPABILITY_SEPARATE_FROM_CONFERENCE: typing.ClassVar[int] = ...
        CAPABILITY_SUPPORTS_VT_LOCAL_BIDIRECTIONAL: typing.ClassVar[int] = ...
        CAPABILITY_SUPPORTS_VT_LOCAL_RX: typing.ClassVar[int] = ...
        CAPABILITY_SUPPORTS_VT_LOCAL_TX: typing.ClassVar[int] = ...
        CAPABILITY_SUPPORTS_VT_REMOTE_BIDIRECTIONAL: typing.ClassVar[int] = ...
        CAPABILITY_SUPPORTS_VT_REMOTE_RX: typing.ClassVar[int] = ...
        CAPABILITY_SUPPORTS_VT_REMOTE_TX: typing.ClassVar[int] = ...
        CAPABILITY_SUPPORT_DEFLECT: typing.ClassVar[int] = ...
        CAPABILITY_SUPPORT_HOLD: typing.ClassVar[int] = ...
        CAPABILITY_SWAP_CONFERENCE: typing.ClassVar[int] = ...
        DIRECTION_INCOMING: typing.ClassVar[int] = ...
        DIRECTION_OUTGOING: typing.ClassVar[int] = ...
        DIRECTION_UNKNOWN: typing.ClassVar[int] = ...
        PROPERTY_ASSISTED_DIALING: typing.ClassVar[int] = ...
        PROPERTY_CONFERENCE: typing.ClassVar[int] = ...
        PROPERTY_CROSS_SIM: typing.ClassVar[int] = ...
        PROPERTY_EMERGENCY_CALLBACK_MODE: typing.ClassVar[int] = ...
        PROPERTY_ENTERPRISE_CALL: typing.ClassVar[int] = ...
        PROPERTY_GENERIC_CONFERENCE: typing.ClassVar[int] = ...
        PROPERTY_HAS_CDMA_VOICE_PRIVACY: typing.ClassVar[int] = ...
        PROPERTY_HIGH_DEF_AUDIO: typing.ClassVar[int] = ...
        PROPERTY_IS_ADHOC_CONFERENCE: typing.ClassVar[int] = ...
        PROPERTY_IS_EXTERNAL_CALL: typing.ClassVar[int] = ...
        PROPERTY_IS_TRANSACTIONAL: typing.ClassVar[int] = ...
        PROPERTY_NETWORK_IDENTIFIED_EMERGENCY_CALL: typing.ClassVar[int] = ...
        PROPERTY_RTT: typing.ClassVar[int] = ...
        PROPERTY_SELF_MANAGED: typing.ClassVar[int] = ...
        PROPERTY_VOIP_AUDIO_MODE: typing.ClassVar[int] = ...
        PROPERTY_WIFI: typing.ClassVar[int] = ...
        @typing.overload
        def can(self, capability: int | java.jint | java.lang.Integer, /) -> bool: ...
        @typing.overload
        @staticmethod
        def can(capabilities: int | java.jint | java.lang.Integer, capability: int | java.jint | java.lang.Integer, /) -> bool: ...
        @staticmethod
        def capabilitiesToString(capabilities: int | java.jint | java.lang.Integer, /) -> str: ...
        def equals(self, o: java.lang.Object | int | bool | float | str, /) -> bool: ...
        def getAccountHandle(self) -> PhoneAccountHandle: ...
        def getCallCapabilities(self) -> int: ...
        def getCallDirection(self) -> int: ...
        def getCallProperties(self) -> int: ...
        def getCallerDisplayName(self) -> str: ...
        def getCallerDisplayNamePresentation(self) -> int: ...
        def getCallerNumberVerificationStatus(self) -> int: ...
        def getConnectTimeMillis(self) -> int: ...
        def getContactDisplayName(self) -> str: ...
        def getContactPhotoUri(self) -> android.net.Uri: ...
        def getCreationTimeMillis(self) -> int: ...
        def getDisconnectCause(self) -> DisconnectCause: ...
        def getExtras(self) -> android.os.Bundle: ...
        def getGatewayInfo(self) -> GatewayInfo: ...
        def getHandle(self) -> android.net.Uri: ...
        def getHandlePresentation(self) -> int: ...
        def getId(self) -> str: ...
        def getIntentExtras(self) -> android.os.Bundle: ...
        def getState(self) -> int: ...
        def getStatusHints(self) -> StatusHints: ...
        def getVideoState(self) -> int: ...
        @typing.overload
        def hasProperty(self, property: int | java.jint | java.lang.Integer, /) -> bool: ...
        @typing.overload
        @staticmethod
        def hasProperty(properties: int | java.jint | java.lang.Integer, property: int | java.jint | java.lang.Integer, /) -> bool: ...
        def hashCode(self) -> int: ...
        @staticmethod
        def propertiesToString(properties: int | java.jint | java.lang.Integer, /) -> str: ...
        def toString(self) -> str: ...

    class Callback(java.lang.Object):
        HANDOVER_FAILURE_DEST_APP_REJECTED: typing.ClassVar[int] = ...
        HANDOVER_FAILURE_NOT_SUPPORTED: typing.ClassVar[int] = ...
        HANDOVER_FAILURE_ONGOING_EMERGENCY_CALL: typing.ClassVar[int] = ...
        HANDOVER_FAILURE_UNKNOWN: typing.ClassVar[int] = ...
        HANDOVER_FAILURE_USER_REJECTED: typing.ClassVar[int] = ...
        def __init__(self) -> None: ...
        def onCallDestroyed(self, call: Call, /) -> None: ...
        def onCannedTextResponsesLoaded(self, call: Call, cannedTextResponses: java.util.List[java.lang.String], /) -> None: ...
        def onChildrenChanged(self, call: Call, children: java.util.List[Call], /) -> None: ...
        def onConferenceableCallsChanged(self, call: Call, conferenceableCalls: java.util.List[Call], /) -> None: ...
        def onConnectionEvent(self, call: Call, event: str | java.lang.String, extras: android.os.Bundle, /) -> None: ...
        def onDetailsChanged(self, call: Call, details: Call.Details, /) -> None: ...
        def onHandoverComplete(self, call: Call, /) -> None: ...
        def onHandoverFailed(self, call: Call, failureReason: int | java.jint | java.lang.Integer, /) -> None: ...
        def onParentChanged(self, call: Call, parent: Call, /) -> None: ...
        def onPostDialWait(self, call: Call, remainingPostDialSequence: str | java.lang.String, /) -> None: ...
        def onRttInitiationFailure(self, call: Call, reason: int | java.jint | java.lang.Integer, /) -> None: ...
        def onRttModeChanged(self, call: Call, mode: int | java.jint | java.lang.Integer, /) -> None: ...
        def onRttRequest(self, call: Call, id: int | java.jint | java.lang.Integer, /) -> None: ...
        def onRttStatusChanged(self, call: Call, enabled: bool | java.jboolean | java.lang.Boolean, rttCall: Call.RttCall, /) -> None: ...
        def onStateChanged(self, call: Call, state: int | java.jint | java.lang.Integer, /) -> None: ...
        def onVideoCallChanged(self, call: Call, videoCall: InCallService.VideoCall, /) -> None: ...

class CallAttributes(android.os.Parcelable):
    AUDIO_CALL: typing.ClassVar[int] = ...
    CREATOR: typing.ClassVar[android.os.Parcelable.Creator[CallAttributes]] = ...
    DIRECTION_INCOMING: typing.ClassVar[int] = ...
    DIRECTION_OUTGOING: typing.ClassVar[int] = ...
    SUPPORTS_SET_INACTIVE: typing.ClassVar[int] = ...
    SUPPORTS_STREAM: typing.ClassVar[int] = ...
    SUPPORTS_TRANSFER: typing.ClassVar[int] = ...
    SUPPORTS_VIDEO_CALLING: typing.ClassVar[int] = ...
    VIDEO_CALL: typing.ClassVar[int] = ...
    def describeContents(self) -> int: ...
    def equals(self, obj: java.lang.Object | int | bool | float | str, /) -> bool: ...
    def getAddress(self) -> android.net.Uri: ...
    def getCallCapabilities(self) -> int: ...
    def getCallType(self) -> int: ...
    def getDirection(self) -> int: ...
    def getDisplayName(self) -> java.lang.CharSequence: ...
    def getPhoneAccountHandle(self) -> PhoneAccountHandle: ...
    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, phoneAccountHandle: PhoneAccountHandle, callDirection: int | java.jint | java.lang.Integer, displayName: java.lang.CharSequence, address: android.net.Uri, /) -> None: ...
        def build(self) -> CallAttributes: ...
        def setCallCapabilities(self, callCapabilities: int | java.jint | java.lang.Integer, /) -> CallAttributes.Builder: ...
        def setCallType(self, callType: int | java.jint | java.lang.Integer, /) -> CallAttributes.Builder: ...

class CallAudioState(android.os.Parcelable):
    CREATOR: typing.ClassVar[android.os.Parcelable.Creator[CallAudioState]] = ...
    ROUTE_BLUETOOTH: typing.ClassVar[int] = ...
    ROUTE_EARPIECE: typing.ClassVar[int] = ...
    ROUTE_SPEAKER: typing.ClassVar[int] = ...
    ROUTE_STREAMING: typing.ClassVar[int] = ...
    ROUTE_WIRED_HEADSET: typing.ClassVar[int] = ...
    ROUTE_WIRED_OR_EARPIECE: typing.ClassVar[int] = ...
    def __init__(self, muted: bool | java.jboolean | java.lang.Boolean, route: int | java.jint | java.lang.Integer, supportedRouteMask: int | java.jint | java.lang.Integer, /) -> None: ...
    @staticmethod
    def audioRouteToString(route: int | java.jint | java.lang.Integer, /) -> str: ...
    def describeContents(self) -> int: ...
    def equals(self, obj: java.lang.Object | int | bool | float | str, /) -> bool: ...
    def getActiveBluetoothDevice(self) -> android.bluetooth.BluetoothDevice: ...
    def getRoute(self) -> int: ...
    def getSupportedBluetoothDevices(self) -> java.util.Collection[android.bluetooth.BluetoothDevice]: ...
    def getSupportedRouteMask(self) -> int: ...
    def isMuted(self) -> bool: ...
    def toString(self) -> str: ...
    def writeToParcel(self, destination: android.os.Parcel, flags: int | java.jint | java.lang.Integer, /) -> None: ...

class CallControl(java.lang.Object):
    def answer(self, videoState: int | java.jint | java.lang.Integer, executor: java.util.concurrent.Executor, callback: android.os.OutcomeReceiver[java.lang.Void, CallException], /) -> None: ...
    def disconnect(self, disconnectCause: DisconnectCause, executor: java.util.concurrent.Executor, callback: android.os.OutcomeReceiver[java.lang.Void, CallException], /) -> None: ...
    def getCallId(self) -> android.os.ParcelUuid: ...
    def requestCallEndpointChange(self, callEndpoint: CallEndpoint, executor: java.util.concurrent.Executor, callback: android.os.OutcomeReceiver[java.lang.Void, CallException], /) -> None: ...
    def requestMuteState(self, isMuted: bool | java.jboolean | java.lang.Boolean, executor: java.util.concurrent.Executor, callback: android.os.OutcomeReceiver[java.lang.Void, CallException], /) -> None: ...
    def requestVideoState(self, videoState: int | java.jint | java.lang.Integer, executor: java.util.concurrent.Executor, callback: android.os.OutcomeReceiver[java.lang.Void, CallException], /) -> None: ...
    def sendEvent(self, event: str | java.lang.String, extras: android.os.Bundle, /) -> None: ...
    def setActive(self, executor: java.util.concurrent.Executor, callback: android.os.OutcomeReceiver[java.lang.Void, CallException], /) -> None: ...
    def setInactive(self, executor: java.util.concurrent.Executor, callback: android.os.OutcomeReceiver[java.lang.Void, CallException], /) -> None: ...
    def startCallStreaming(self, executor: java.util.concurrent.Executor, callback: android.os.OutcomeReceiver[java.lang.Void, CallException], /) -> None: ...

class CallControlCallback(java.lang.Object):
    def onAnswer(self, arg1: int | java.jint | java.lang.Integer, arg2: java.util.function.Consumer[java.lang.Boolean], /) -> None: ...
    def onCallStreamingStarted(self, arg1: java.util.function.Consumer[java.lang.Boolean], /) -> None: ...
    def onDisconnect(self, arg1: DisconnectCause, arg2: java.util.function.Consumer[java.lang.Boolean], /) -> None: ...
    def onSetActive(self, arg1: java.util.function.Consumer[java.lang.Boolean], /) -> None: ...
    def onSetInactive(self, arg1: java.util.function.Consumer[java.lang.Boolean], /) -> None: ...

class CallEndpoint(android.os.Parcelable):
    CREATOR: typing.ClassVar[android.os.Parcelable.Creator[CallEndpoint]] = ...
    TYPE_BLUETOOTH: typing.ClassVar[int] = ...
    TYPE_EARPIECE: typing.ClassVar[int] = ...
    TYPE_SPEAKER: typing.ClassVar[int] = ...
    TYPE_STREAMING: typing.ClassVar[int] = ...
    TYPE_UNKNOWN: typing.ClassVar[int] = ...
    TYPE_WIRED_HEADSET: typing.ClassVar[int] = ...
    def __init__(self, name: java.lang.CharSequence, type: int | java.jint | java.lang.Integer, id: android.os.ParcelUuid, /) -> None: ...
    def describeContents(self) -> int: ...
    def equals(self, obj: java.lang.Object | int | bool | float | str, /) -> bool: ...
    def getEndpointName(self) -> java.lang.CharSequence: ...
    def getEndpointType(self) -> int: ...
    def getIdentifier(self) -> android.os.ParcelUuid: ...
    def hashCode(self) -> int: ...
    def toString(self) -> str: ...
    def writeToParcel(self, destination: android.os.Parcel, flags: int | java.jint | java.lang.Integer, /) -> None: ...

class CallEndpointException(android.os.Parcelable, java.lang.RuntimeException):
    CREATOR: typing.ClassVar[android.os.Parcelable.Creator[CallEndpointException]] = ...
    ERROR_ANOTHER_REQUEST: typing.ClassVar[int] = ...
    ERROR_ENDPOINT_DOES_NOT_EXIST: typing.ClassVar[int] = ...
    ERROR_REQUEST_TIME_OUT: typing.ClassVar[int] = ...
    ERROR_UNSPECIFIED: typing.ClassVar[int] = ...
    def __init__(self, message: str | java.lang.String, code: int | java.jint | java.lang.Integer, /) -> None: ...
    def describeContents(self) -> int: ...
    def getCode(self) -> int: ...
    def writeToParcel(self, dest: android.os.Parcel, flags: int | java.jint | java.lang.Integer, /) -> None: ...

class CallEventCallback(java.lang.Object):
    def onAvailableCallEndpointsChanged(self, arg1: java.util.List[CallEndpoint], /) -> None: ...
    def onCallEndpointChanged(self, arg1: CallEndpoint, /) -> None: ...
    def onCallStreamingFailed(self, arg1: int | java.jint | java.lang.Integer, /) -> None: ...
    def onEvent(self, arg1: str | java.lang.String, arg2: android.os.Bundle, /) -> None: ...
    def onMuteStateChanged(self, arg1: bool | java.jboolean | java.lang.Boolean, /) -> None: ...
    def onVideoStateChanged(self, videoState: int | java.jint | java.lang.Integer, /) -> None: ...

class CallException(android.os.Parcelable, java.lang.RuntimeException):
    CODE_CALL_CANNOT_BE_SET_TO_ACTIVE: typing.ClassVar[int] = ...
    CODE_CALL_IS_NOT_BEING_TRACKED: typing.ClassVar[int] = ...
    CODE_CALL_NOT_PERMITTED_AT_PRESENT_TIME: typing.ClassVar[int] = ...
    CODE_CANNOT_HOLD_CURRENT_ACTIVE_CALL: typing.ClassVar[int] = ...
    CODE_ERROR_UNKNOWN: typing.ClassVar[int] = ...
    CODE_OPERATION_TIMED_OUT: typing.ClassVar[int] = ...
    CREATOR: typing.ClassVar[android.os.Parcelable.Creator[CallException]] = ...
    def __init__(self, message: str | java.lang.String, code: int | java.jint | java.lang.Integer, /) -> None: ...
    def describeContents(self) -> int: ...
    def getCode(self) -> int: ...
    def writeToParcel(self, dest: android.os.Parcel, flags: int | java.jint | java.lang.Integer, /) -> None: ...

class CallRedirectionService(android.app.Service):
    SERVICE_INTERFACE: typing.ClassVar[str] = ...
    def __init__(self) -> None: ...
    def cancelCall(self) -> None: ...
    def onBind(self, intent: android.content.Intent, /) -> android.os.IBinder | None: ...
    def onPlaceCall(self, arg1: android.net.Uri, arg2: PhoneAccountHandle, arg3: bool | java.jboolean | java.lang.Boolean, /) -> None: ...
    def onRedirectionTimeout(self) -> None: ...
    def onUnbind(self, intent: android.content.Intent, /) -> bool: ...
    def placeCallUnmodified(self) -> None: ...
    def redirectCall(self, gatewayUri: android.net.Uri, targetPhoneAccount: PhoneAccountHandle, confirmFirst: bool | java.jboolean | java.lang.Boolean, /) -> None: ...

class CallScreeningService(android.app.Service):
    SERVICE_INTERFACE: typing.ClassVar[str] = ...
    def __init__(self) -> None: ...
    def onBind(self, intent: android.content.Intent, /) -> android.os.IBinder: ...
    def onScreenCall(self, arg1: Call.Details, /) -> None: ...
    def onUnbind(self, intent: android.content.Intent, /) -> bool: ...
    def respondToCall(self, callDetails: Call.Details, response: CallScreeningService.CallResponse, /) -> None: ...

    class CallResponse(java.lang.Object):
        CALL_COMPOSER_ATTACHMENT_LOCATION: typing.ClassVar[int] = ...
        CALL_COMPOSER_ATTACHMENT_PICTURE: typing.ClassVar[int] = ...
        CALL_COMPOSER_ATTACHMENT_PRIORITY: typing.ClassVar[int] = ...
        CALL_COMPOSER_ATTACHMENT_SUBJECT: typing.ClassVar[int] = ...
        def equals(self, o: java.lang.Object | int | bool | float | str, /) -> bool: ...
        def getCallComposerAttachmentsToShow(self) -> int: ...
        def getDisallowCall(self) -> bool: ...
        def getRejectCall(self) -> bool: ...
        def getSilenceCall(self) -> bool: ...
        def getSkipCallLog(self) -> bool: ...
        def getSkipNotification(self) -> bool: ...
        def hashCode(self) -> int: ...

        class Builder(java.lang.Object):
            def __init__(self) -> None: ...
            def build(self) -> CallScreeningService.CallResponse: ...
            def setCallComposerAttachmentsToShow(self, callComposerAttachmentsToShow: int | java.jint | java.lang.Integer, /) -> CallScreeningService.CallResponse.Builder: ...
            def setDisallowCall(self, shouldDisallowCall: bool | java.jboolean | java.lang.Boolean, /) -> CallScreeningService.CallResponse.Builder: ...
            def setRejectCall(self, shouldRejectCall: bool | java.jboolean | java.lang.Boolean, /) -> CallScreeningService.CallResponse.Builder: ...
            def setSilenceCall(self, shouldSilenceCall: bool | java.jboolean | java.lang.Boolean, /) -> CallScreeningService.CallResponse.Builder: ...
            def setSkipCallLog(self, shouldSkipCallLog: bool | java.jboolean | java.lang.Boolean, /) -> CallScreeningService.CallResponse.Builder: ...
            def setSkipNotification(self, shouldSkipNotification: bool | java.jboolean | java.lang.Boolean, /) -> CallScreeningService.CallResponse.Builder: ...

class Conference(Conferenceable):
    CONNECT_TIME_NOT_SPECIFIED: typing.ClassVar[int] = ...
    def __init__(self, phoneAccount: PhoneAccountHandle, /) -> None: ...
    def addConnection(self, connection: Connection, /) -> bool: ...
    @staticmethod
    def createFailedConference(disconnectCause: DisconnectCause, phoneAccount: PhoneAccountHandle, /) -> Conference: ...
    def destroy(self) -> None: ...
    def getCallAudioState(self) -> CallAudioState: ...
    def getConferenceableConnections(self) -> java.util.List[Connection]: ...
    def getConnectionCapabilities(self) -> int: ...
    def getConnectionProperties(self) -> int: ...
    def getConnectionStartElapsedRealtimeMillis(self) -> int: ...
    def getConnectionTime(self) -> int: ...
    def getConnections(self) -> java.util.List[Connection]: ...
    def getCurrentCallEndpoint(self) -> CallEndpoint: ...
    def getDisconnectCause(self) -> DisconnectCause: ...
    def getExtras(self) -> android.os.Bundle: ...
    def getPhoneAccountHandle(self) -> PhoneAccountHandle: ...
    def getState(self) -> int: ...
    def getStatusHints(self) -> StatusHints: ...
    def getVideoProvider(self) -> Connection.VideoProvider: ...
    def getVideoState(self) -> int: ...
    def isRingbackRequested(self) -> bool: ...
    def onAddConferenceParticipants(self, participants: java.util.List[android.net.Uri], /) -> None: ...
    def onAnswer(self, videoState: int | java.jint | java.lang.Integer, /) -> None: ...
    def onAvailableCallEndpointsChanged(self, availableEndpoints: java.util.List[CallEndpoint], /) -> None: ...
    def onCallAudioStateChanged(self, state: CallAudioState, /) -> None: ...
    def onCallEndpointChanged(self, callEndpoint: CallEndpoint, /) -> None: ...
    def onConnectionAdded(self, connection: Connection, /) -> None: ...
    def onDisconnect(self) -> None: ...
    def onExtrasChanged(self, extras: android.os.Bundle, /) -> None: ...
    def onHold(self) -> None: ...
    @typing.overload
    def onMerge(self) -> None: ...
    @typing.overload
    def onMerge(self, connection: Connection, /) -> None: ...
    def onMuteStateChanged(self, isMuted: bool | java.jboolean | java.lang.Boolean, /) -> None: ...
    def onPlayDtmfTone(self, c: str | java.jchar | java.lang.Character, /) -> None: ...
    def onReject(self) -> None: ...
    def onSeparate(self, connection: Connection, /) -> None: ...
    def onStopDtmfTone(self) -> None: ...
    def onSwap(self) -> None: ...
    def onUnhold(self) -> None: ...
    def putExtras(self, extras: android.os.Bundle, /) -> None: ...
    def removeConnection(self, connection: Connection, /) -> None: ...
    @typing.overload
    def removeExtras(self, keys: java.util.List[java.lang.String], /) -> None: ...
    @typing.overload
    def removeExtras(self, *keys: java.lang.String) -> None: ...
    def sendConferenceEvent(self, event: str | java.lang.String, extras: android.os.Bundle, /) -> None: ...
    def setActive(self) -> None: ...
    def setConferenceableConnections(self, conferenceableConnections: java.util.List[Connection], /) -> None: ...
    def setConnectionCapabilities(self, connectionCapabilities: int | java.jint | java.lang.Integer, /) -> None: ...
    def setConnectionProperties(self, connectionProperties: int | java.jint | java.lang.Integer, /) -> None: ...
    def setConnectionStartElapsedRealTime(self, connectionStartElapsedRealTime: int | java.jlong | java.lang.Long, /) -> None: ...
    def setConnectionStartElapsedRealtimeMillis(self, connectionStartElapsedRealTime: int | java.jlong | java.lang.Long, /) -> None: ...
    def setConnectionTime(self, connectionTimeMillis: int | java.jlong | java.lang.Long, /) -> None: ...
    def setDialing(self) -> None: ...
    def setDisconnected(self, disconnectCause: DisconnectCause, /) -> None: ...
    def setExtras(self, extras: android.os.Bundle, /) -> None: ...
    def setOnHold(self) -> None: ...
    def setRingbackRequested(self, ringback: bool | java.jboolean | java.lang.Boolean, /) -> None: ...
    def setRinging(self) -> None: ...
    def setStatusHints(self, statusHints: StatusHints, /) -> None: ...
    def setVideoProvider(self, c: Connection, videoProvider: Connection.VideoProvider, /) -> None: ...
    def setVideoState(self, c: Connection, videoState: int | java.jint | java.lang.Integer, /) -> None: ...
    def toString(self) -> str: ...

class Conferenceable(java.lang.Object): ...

class Connection(Conferenceable):
    AUDIO_CODEC_AMR: typing.ClassVar[int] = ...
    AUDIO_CODEC_AMR_WB: typing.ClassVar[int] = ...
    AUDIO_CODEC_EVRC: typing.ClassVar[int] = ...
    AUDIO_CODEC_EVRC_B: typing.ClassVar[int] = ...
    AUDIO_CODEC_EVRC_NW: typing.ClassVar[int] = ...
    AUDIO_CODEC_EVRC_WB: typing.ClassVar[int] = ...
    AUDIO_CODEC_EVS_FB: typing.ClassVar[int] = ...
    AUDIO_CODEC_EVS_NB: typing.ClassVar[int] = ...
    AUDIO_CODEC_EVS_SWB: typing.ClassVar[int] = ...
    AUDIO_CODEC_EVS_WB: typing.ClassVar[int] = ...
    AUDIO_CODEC_G711A: typing.ClassVar[int] = ...
    AUDIO_CODEC_G711AB: typing.ClassVar[int] = ...
    AUDIO_CODEC_G711U: typing.ClassVar[int] = ...
    AUDIO_CODEC_G722: typing.ClassVar[int] = ...
    AUDIO_CODEC_G723: typing.ClassVar[int] = ...
    AUDIO_CODEC_G729: typing.ClassVar[int] = ...
    AUDIO_CODEC_GSM_EFR: typing.ClassVar[int] = ...
    AUDIO_CODEC_GSM_FR: typing.ClassVar[int] = ...
    AUDIO_CODEC_GSM_HR: typing.ClassVar[int] = ...
    AUDIO_CODEC_NONE: typing.ClassVar[int] = ...
    AUDIO_CODEC_QCELP13K: typing.ClassVar[int] = ...
    CAPABILITY_ADD_PARTICIPANT: typing.ClassVar[int] = ...
    CAPABILITY_CANNOT_DOWNGRADE_VIDEO_TO_AUDIO: typing.ClassVar[int] = ...
    CAPABILITY_CAN_PAUSE_VIDEO: typing.ClassVar[int] = ...
    CAPABILITY_CAN_PULL_CALL: typing.ClassVar[int] = ...
    CAPABILITY_CAN_SEND_RESPONSE_VIA_CONNECTION: typing.ClassVar[int] = ...
    CAPABILITY_CAN_UPGRADE_TO_VIDEO: typing.ClassVar[int] = ...
    CAPABILITY_DISCONNECT_FROM_CONFERENCE: typing.ClassVar[int] = ...
    CAPABILITY_HOLD: typing.ClassVar[int] = ...
    CAPABILITY_MANAGE_CONFERENCE: typing.ClassVar[int] = ...
    CAPABILITY_MERGE_CONFERENCE: typing.ClassVar[int] = ...
    CAPABILITY_MUTE: typing.ClassVar[int] = ...
    CAPABILITY_REMOTE_PARTY_SUPPORTS_RTT: typing.ClassVar[int] = ...
    CAPABILITY_RESPOND_VIA_TEXT: typing.ClassVar[int] = ...
    CAPABILITY_SEPARATE_FROM_CONFERENCE: typing.ClassVar[int] = ...
    CAPABILITY_SUPPORTS_VT_LOCAL_BIDIRECTIONAL: typing.ClassVar[int] = ...
    CAPABILITY_SUPPORTS_VT_LOCAL_RX: typing.ClassVar[int] = ...
    CAPABILITY_SUPPORTS_VT_LOCAL_TX: typing.ClassVar[int] = ...
    CAPABILITY_SUPPORTS_VT_REMOTE_BIDIRECTIONAL: typing.ClassVar[int] = ...
    CAPABILITY_SUPPORTS_VT_REMOTE_RX: typing.ClassVar[int] = ...
    CAPABILITY_SUPPORTS_VT_REMOTE_TX: typing.ClassVar[int] = ...
    CAPABILITY_SUPPORT_DEFLECT: typing.ClassVar[int] = ...
    CAPABILITY_SUPPORT_HOLD: typing.ClassVar[int] = ...
    CAPABILITY_SWAP_CONFERENCE: typing.ClassVar[int] = ...
    EVENT_CALL_HOLD_FAILED: typing.ClassVar[str] = ...
    EVENT_CALL_MERGE_FAILED: typing.ClassVar[str] = ...
    EVENT_CALL_PULL_FAILED: typing.ClassVar[str] = ...
    EVENT_CALL_REMOTELY_HELD: typing.ClassVar[str] = ...
    EVENT_CALL_REMOTELY_UNHELD: typing.ClassVar[str] = ...
    EVENT_CALL_SWITCH_FAILED: typing.ClassVar[str] = ...
    EVENT_MERGE_COMPLETE: typing.ClassVar[str] = ...
    EVENT_MERGE_START: typing.ClassVar[str] = ...
    EVENT_ON_HOLD_TONE_END: typing.ClassVar[str] = ...
    EVENT_ON_HOLD_TONE_START: typing.ClassVar[str] = ...
    EVENT_RTT_AUDIO_INDICATION_CHANGED: typing.ClassVar[str] = ...
    EXTRA_ANSWERING_DROPS_FG_CALL: typing.ClassVar[str] = ...
    EXTRA_ANSWERING_DROPS_FG_CALL_APP_NAME: typing.ClassVar[str] = ...
    EXTRA_AUDIO_CODEC: typing.ClassVar[str] = ...
    EXTRA_AUDIO_CODEC_BANDWIDTH_KHZ: typing.ClassVar[str] = ...
    EXTRA_AUDIO_CODEC_BITRATE_KBPS: typing.ClassVar[str] = ...
    EXTRA_CALL_SUBJECT: typing.ClassVar[str] = ...
    EXTRA_CHILD_ADDRESS: typing.ClassVar[str] = ...
    EXTRA_IS_RTT_AUDIO_PRESENT: typing.ClassVar[str] = ...
    EXTRA_LAST_FORWARDED_NUMBER: typing.ClassVar[str] = ...
    EXTRA_LAST_KNOWN_CELL_IDENTITY: typing.ClassVar[str] = ...
    EXTRA_SIP_INVITE: typing.ClassVar[str] = ...
    PROPERTY_ASSISTED_DIALING: typing.ClassVar[int] = ...
    PROPERTY_CROSS_SIM: typing.ClassVar[int] = ...
    PROPERTY_HAS_CDMA_VOICE_PRIVACY: typing.ClassVar[int] = ...
    PROPERTY_HIGH_DEF_AUDIO: typing.ClassVar[int] = ...
    PROPERTY_IS_ADHOC_CONFERENCE: typing.ClassVar[int] = ...
    PROPERTY_IS_EXTERNAL_CALL: typing.ClassVar[int] = ...
    PROPERTY_IS_RTT: typing.ClassVar[int] = ...
    PROPERTY_NETWORK_IDENTIFIED_EMERGENCY_CALL: typing.ClassVar[int] = ...
    PROPERTY_SELF_MANAGED: typing.ClassVar[int] = ...
    PROPERTY_WIFI: typing.ClassVar[int] = ...
    STATE_ACTIVE: typing.ClassVar[int] = ...
    STATE_DIALING: typing.ClassVar[int] = ...
    STATE_DISCONNECTED: typing.ClassVar[int] = ...
    STATE_HOLDING: typing.ClassVar[int] = ...
    STATE_INITIALIZING: typing.ClassVar[int] = ...
    STATE_NEW: typing.ClassVar[int] = ...
    STATE_PULLING_CALL: typing.ClassVar[int] = ...
    STATE_RINGING: typing.ClassVar[int] = ...
    VERIFICATION_STATUS_FAILED: typing.ClassVar[int] = ...
    VERIFICATION_STATUS_NOT_VERIFIED: typing.ClassVar[int] = ...
    VERIFICATION_STATUS_PASSED: typing.ClassVar[int] = ...
    def __init__(self) -> None: ...
    @staticmethod
    def capabilitiesToString(capabilities: int | java.jint | java.lang.Integer, /) -> str: ...
    @staticmethod
    def createCanceledConnection() -> Connection: ...
    @staticmethod
    def createFailedConnection(disconnectCause: DisconnectCause, /) -> Connection: ...
    def destroy(self) -> None: ...
    def getAddress(self) -> android.net.Uri: ...
    def getAddressPresentation(self) -> int: ...
    def getAudioModeIsVoip(self) -> bool: ...
    def getCallAudioState(self) -> CallAudioState: ...
    def getCallerDisplayName(self) -> str: ...
    def getCallerDisplayNamePresentation(self) -> int: ...
    def getCallerNumberVerificationStatus(self) -> int: ...
    def getConference(self) -> Conference | None: ...
    def getConferenceables(self) -> java.util.List[Conferenceable]: ...
    def getConnectionCapabilities(self) -> int: ...
    def getConnectionProperties(self) -> int: ...
    def getCurrentCallEndpoint(self) -> CallEndpoint: ...
    def getDisconnectCause(self) -> DisconnectCause: ...
    def getExtras(self) -> android.os.Bundle: ...
    def getState(self) -> int: ...
    def getStatusHints(self) -> StatusHints: ...
    def getVideoProvider(self) -> Connection.VideoProvider: ...
    def getVideoState(self) -> int: ...
    def handleRttUpgradeResponse(self, rttTextStream: Connection.RttTextStream, /) -> None: ...
    def isRingbackRequested(self) -> bool: ...
    def notifyConferenceMergeFailed(self) -> None: ...
    def onAbort(self) -> None: ...
    def onAddConferenceParticipants(self, participants: java.util.List[android.net.Uri], /) -> None: ...
    @typing.overload
    def onAnswer(self) -> None: ...
    @typing.overload
    def onAnswer(self, videoState: int | java.jint | java.lang.Integer, /) -> None: ...
    def onAvailableCallEndpointsChanged(self, availableEndpoints: java.util.List[CallEndpoint], /) -> None: ...
    def onCallAudioStateChanged(self, state: CallAudioState, /) -> None: ...
    def onCallEndpointChanged(self, callEndpoint: CallEndpoint, /) -> None: ...
    def onCallEvent(self, event: str | java.lang.String, extras: android.os.Bundle, /) -> None: ...
    def onDeflect(self, address: android.net.Uri, /) -> None: ...
    def onDisconnect(self) -> None: ...
    def onExtrasChanged(self, extras: android.os.Bundle, /) -> None: ...
    def onHandoverComplete(self) -> None: ...
    def onHold(self) -> None: ...
    def onMuteStateChanged(self, isMuted: bool | java.jboolean | java.lang.Boolean, /) -> None: ...
    def onPlayDtmfTone(self, c: str | java.jchar | java.lang.Character, /) -> None: ...
    def onPostDialContinue(self, proceed: bool | java.jboolean | java.lang.Boolean, /) -> None: ...
    def onPullExternalCall(self) -> None: ...
    @typing.overload
    def onReject(self) -> None: ...
    @typing.overload
    def onReject(self, rejectReason: int | java.jint | java.lang.Integer, /) -> None: ...
    @typing.overload
    def onReject(self, replyMessage: str | java.lang.String, /) -> None: ...
    def onSeparate(self) -> None: ...
    def onShowIncomingCallUi(self) -> None: ...
    def onSilence(self) -> None: ...
    def onStartRtt(self, rttTextStream: Connection.RttTextStream, /) -> None: ...
    def onStateChanged(self, state: int | java.jint | java.lang.Integer, /) -> None: ...
    def onStopDtmfTone(self) -> None: ...
    def onStopRtt(self) -> None: ...
    def onTrackedByNonUiService(self, isTracked: bool | java.jboolean | java.lang.Boolean, /) -> None: ...
    def onUnhold(self) -> None: ...
    def onUsingAlternativeUi(self, isUsingAlternativeUi: bool | java.jboolean | java.lang.Boolean, /) -> None: ...
    @staticmethod
    def propertiesToString(properties: int | java.jint | java.lang.Integer, /) -> str: ...
    def putExtras(self, extras: android.os.Bundle, /) -> None: ...
    def queryLocationForEmergency(self, timeoutMillis: int | java.jlong | java.lang.Long, provider: str | java.lang.String, executor: java.util.concurrent.Executor, callback: android.os.OutcomeReceiver[android.location.Location, QueryLocationException], /) -> None: ...
    @typing.overload
    def removeExtras(self, keys: java.util.List[java.lang.String], /) -> None: ...
    @typing.overload
    def removeExtras(self, *keys: java.lang.String) -> None: ...
    def requestBluetoothAudio(self, bluetoothDevice: android.bluetooth.BluetoothDevice, /) -> None: ...
    def requestCallEndpointChange(self, endpoint: CallEndpoint, executor: java.util.concurrent.Executor, callback: android.os.OutcomeReceiver[java.lang.Void, CallEndpointException], /) -> None: ...
    def sendConnectionEvent(self, event: str | java.lang.String, extras: android.os.Bundle, /) -> None: ...
    def sendRemoteRttRequest(self) -> None: ...
    def sendRttInitiationFailure(self, reason: int | java.jint | java.lang.Integer, /) -> None: ...
    def sendRttInitiationSuccess(self) -> None: ...
    def sendRttSessionRemotelyTerminated(self) -> None: ...
    def setActive(self) -> None: ...
    def setAddress(self, address: android.net.Uri, presentation: int | java.jint | java.lang.Integer, /) -> None: ...
    def setAudioModeIsVoip(self, isVoip: bool | java.jboolean | java.lang.Boolean, /) -> None: ...
    def setAudioRoute(self, route: int | java.jint | java.lang.Integer, /) -> None: ...
    def setCallerDisplayName(self, callerDisplayName: str | java.lang.String, presentation: int | java.jint | java.lang.Integer, /) -> None: ...
    def setCallerNumberVerificationStatus(self, callerNumberVerificationStatus: int | java.jint | java.lang.Integer, /) -> None: ...
    def setConferenceableConnections(self, conferenceableConnections: java.util.List[Connection], /) -> None: ...
    def setConferenceables(self, conferenceables: java.util.List[Conferenceable], /) -> None: ...
    def setConnectionCapabilities(self, connectionCapabilities: int | java.jint | java.lang.Integer, /) -> None: ...
    def setConnectionProperties(self, connectionProperties: int | java.jint | java.lang.Integer, /) -> None: ...
    def setDialing(self) -> None: ...
    def setDisconnected(self, disconnectCause: DisconnectCause, /) -> None: ...
    def setExtras(self, extras: android.os.Bundle, /) -> None: ...
    def setInitialized(self) -> None: ...
    def setInitializing(self) -> None: ...
    def setNextPostDialChar(self, nextChar: str | java.jchar | java.lang.Character, /) -> None: ...
    def setOnHold(self) -> None: ...
    def setPostDialWait(self, remaining: str | java.lang.String, /) -> None: ...
    def setPulling(self) -> None: ...
    def setRingbackRequested(self, ringback: bool | java.jboolean | java.lang.Boolean, /) -> None: ...
    def setRinging(self) -> None: ...
    def setStatusHints(self, statusHints: StatusHints, /) -> None: ...
    def setVideoProvider(self, videoProvider: Connection.VideoProvider, /) -> None: ...
    def setVideoState(self, videoState: int | java.jint | java.lang.Integer, /) -> None: ...
    @staticmethod
    def stateToString(state: int | java.jint | java.lang.Integer, /) -> str: ...

    class VideoProvider(java.lang.Object):
        SESSION_EVENT_CAMERA_FAILURE: typing.ClassVar[int] = ...
        SESSION_EVENT_CAMERA_PERMISSION_ERROR: typing.ClassVar[int] = ...
        SESSION_EVENT_CAMERA_READY: typing.ClassVar[int] = ...
        SESSION_EVENT_RX_PAUSE: typing.ClassVar[int] = ...
        SESSION_EVENT_RX_RESUME: typing.ClassVar[int] = ...
        SESSION_EVENT_TX_START: typing.ClassVar[int] = ...
        SESSION_EVENT_TX_STOP: typing.ClassVar[int] = ...
        SESSION_MODIFY_REQUEST_FAIL: typing.ClassVar[int] = ...
        SESSION_MODIFY_REQUEST_INVALID: typing.ClassVar[int] = ...
        SESSION_MODIFY_REQUEST_REJECTED_BY_REMOTE: typing.ClassVar[int] = ...
        SESSION_MODIFY_REQUEST_SUCCESS: typing.ClassVar[int] = ...
        SESSION_MODIFY_REQUEST_TIMED_OUT: typing.ClassVar[int] = ...
        def __init__(self) -> None: ...
        def changeCameraCapabilities(self, cameraCapabilities: VideoProfile.CameraCapabilities, /) -> None: ...
        def changePeerDimensions(self, width: int | java.jint | java.lang.Integer, height: int | java.jint | java.lang.Integer, /) -> None: ...
        def changeVideoQuality(self, videoQuality: int | java.jint | java.lang.Integer, /) -> None: ...
        def handleCallSessionEvent(self, event: int | java.jint | java.lang.Integer, /) -> None: ...
        def onRequestCameraCapabilities(self) -> None: ...
        def onRequestConnectionDataUsage(self) -> None: ...
        def onSendSessionModifyRequest(self, arg1: VideoProfile, arg2: VideoProfile, /) -> None: ...
        def onSendSessionModifyResponse(self, arg1: VideoProfile, /) -> None: ...
        def onSetCamera(self, arg1: str | java.lang.String, /) -> None: ...
        def onSetDeviceOrientation(self, arg1: int | java.jint | java.lang.Integer, /) -> None: ...
        def onSetDisplaySurface(self, arg1: android.view.Surface, /) -> None: ...
        def onSetPauseImage(self, arg1: android.net.Uri, /) -> None: ...
        def onSetPreviewSurface(self, arg1: android.view.Surface, /) -> None: ...
        def onSetZoom(self, arg1: float | java.jfloat | java.lang.Float, /) -> None: ...
        def receiveSessionModifyRequest(self, videoProfile: VideoProfile, /) -> None: ...
        def receiveSessionModifyResponse(self, status: int | java.jint | java.lang.Integer, requestedProfile: VideoProfile, responseProfile: VideoProfile, /) -> None: ...
        def setCallDataUsage(self, dataUsage: int | java.jlong | java.lang.Long, /) -> None: ...

    class RttTextStream(java.lang.Object):
        def read(self) -> str: ...
        def readImmediately(self) -> str: ...
        def write(self, input: str | java.lang.String, /) -> None: ...

    class RttModifyStatus(java.lang.Object):
        SESSION_MODIFY_REQUEST_FAIL: typing.ClassVar[int] = ...
        SESSION_MODIFY_REQUEST_INVALID: typing.ClassVar[int] = ...
        SESSION_MODIFY_REQUEST_REJECTED_BY_REMOTE: typing.ClassVar[int] = ...
        SESSION_MODIFY_REQUEST_SUCCESS: typing.ClassVar[int] = ...
        SESSION_MODIFY_REQUEST_TIMED_OUT: typing.ClassVar[int] = ...

class ConnectionRequest(android.os.Parcelable):
    CREATOR: typing.ClassVar[android.os.Parcelable.Creator[ConnectionRequest]] = ...
    @typing.overload
    def __init__(self, accountHandle: PhoneAccountHandle, handle: android.net.Uri, extras: android.os.Bundle, /) -> None: ...
    @typing.overload
    def __init__(self, accountHandle: PhoneAccountHandle, handle: android.net.Uri, extras: android.os.Bundle, videoState: int | java.jint | java.lang.Integer, /) -> None: ...
    def describeContents(self) -> int: ...
    def getAccountHandle(self) -> PhoneAccountHandle: ...
    def getAddress(self) -> android.net.Uri: ...
    def getExtras(self) -> android.os.Bundle: ...
    def getParticipants(self) -> java.util.List[android.net.Uri] | None: ...
    def getRttTextStream(self) -> Connection.RttTextStream: ...
    def getVideoState(self) -> int: ...
    def isAdhocConferenceCall(self) -> bool: ...
    def isRequestingRtt(self) -> bool: ...
    def toString(self) -> str: ...
    def writeToParcel(self, destination: android.os.Parcel, flags: int | java.jint | java.lang.Integer, /) -> None: ...

class ConnectionService(android.app.Service):
    SERVICE_INTERFACE: typing.ClassVar[str] = ...
    def __init__(self) -> None: ...
    def addConference(self, conference: Conference, /) -> None: ...
    def addExistingConnection(self, phoneAccountHandle: PhoneAccountHandle, connection: Connection, /) -> None: ...
    def conferenceRemoteConnections(self, remoteConnection1: RemoteConnection, remoteConnection2: RemoteConnection, /) -> None: ...
    def connectionServiceFocusReleased(self) -> None: ...
    def createRemoteIncomingConference(self, connectionManagerPhoneAccount: PhoneAccountHandle, request: ConnectionRequest, /) -> RemoteConference | None: ...
    def createRemoteIncomingConnection(self, connectionManagerPhoneAccount: PhoneAccountHandle, request: ConnectionRequest, /) -> RemoteConnection | None: ...
    def createRemoteOutgoingConference(self, connectionManagerPhoneAccount: PhoneAccountHandle, request: ConnectionRequest, /) -> RemoteConference | None: ...
    def createRemoteOutgoingConnection(self, connectionManagerPhoneAccount: PhoneAccountHandle, request: ConnectionRequest, /) -> RemoteConnection | None: ...
    def getAllConferences(self) -> java.util.Collection[Conference]: ...
    def getAllConnections(self) -> java.util.Collection[Connection]: ...
    def onBind(self, intent: android.content.Intent, /) -> android.os.IBinder: ...
    def onConference(self, connection1: Connection, connection2: Connection, /) -> None: ...
    def onConnectionServiceFocusGained(self) -> None: ...
    def onConnectionServiceFocusLost(self) -> None: ...
    def onCreateIncomingConference(self, connectionManagerPhoneAccount: PhoneAccountHandle, request: ConnectionRequest, /) -> Conference | None: ...
    def onCreateIncomingConferenceFailed(self, connectionManagerPhoneAccount: PhoneAccountHandle, request: ConnectionRequest, /) -> None: ...
    def onCreateIncomingConnection(self, connectionManagerPhoneAccount: PhoneAccountHandle, request: ConnectionRequest, /) -> Connection: ...
    def onCreateIncomingConnectionFailed(self, connectionManagerPhoneAccount: PhoneAccountHandle, request: ConnectionRequest, /) -> None: ...
    def onCreateIncomingHandoverConnection(self, fromPhoneAccountHandle: PhoneAccountHandle, request: ConnectionRequest, /) -> Connection: ...
    def onCreateOutgoingConference(self, connectionManagerPhoneAccount: PhoneAccountHandle, request: ConnectionRequest, /) -> Conference | None: ...
    def onCreateOutgoingConferenceFailed(self, connectionManagerPhoneAccount: PhoneAccountHandle, request: ConnectionRequest, /) -> None: ...
    def onCreateOutgoingConnection(self, connectionManagerPhoneAccount: PhoneAccountHandle, request: ConnectionRequest, /) -> Connection: ...
    def onCreateOutgoingConnectionFailed(self, connectionManagerPhoneAccount: PhoneAccountHandle, request: ConnectionRequest, /) -> None: ...
    def onCreateOutgoingHandoverConnection(self, fromPhoneAccountHandle: PhoneAccountHandle, request: ConnectionRequest, /) -> Connection: ...
    def onHandoverFailed(self, request: ConnectionRequest, error: int | java.jint | java.lang.Integer, /) -> None: ...
    def onRemoteConferenceAdded(self, conference: RemoteConference, /) -> None: ...
    def onRemoteExistingConnectionAdded(self, connection: RemoteConnection, /) -> None: ...
    def onUnbind(self, intent: android.content.Intent, /) -> bool: ...

class DisconnectCause(android.os.Parcelable):
    ANSWERED_ELSEWHERE: typing.ClassVar[int] = ...
    BUSY: typing.ClassVar[int] = ...
    CALL_PULLED: typing.ClassVar[int] = ...
    CANCELED: typing.ClassVar[int] = ...
    CONNECTION_MANAGER_NOT_SUPPORTED: typing.ClassVar[int] = ...
    CREATOR: typing.ClassVar[android.os.Parcelable.Creator[DisconnectCause]] = ...
    ERROR: typing.ClassVar[int] = ...
    LOCAL: typing.ClassVar[int] = ...
    MISSED: typing.ClassVar[int] = ...
    OTHER: typing.ClassVar[int] = ...
    REASON_EMERGENCY_CALL_PLACED: typing.ClassVar[str] = ...
    REASON_EMULATING_SINGLE_CALL: typing.ClassVar[str] = ...
    REASON_IMS_ACCESS_BLOCKED: typing.ClassVar[str] = ...
    REASON_WIFI_ON_BUT_WFC_OFF: typing.ClassVar[str] = ...
    REJECTED: typing.ClassVar[int] = ...
    REMOTE: typing.ClassVar[int] = ...
    RESTRICTED: typing.ClassVar[int] = ...
    UNKNOWN: typing.ClassVar[int] = ...
    @typing.overload
    def __init__(self, code: int | java.jint | java.lang.Integer, /) -> None: ...
    @typing.overload
    def __init__(self, code: int | java.jint | java.lang.Integer, reason: str | java.lang.String, /) -> None: ...
    @typing.overload
    def __init__(self, code: int | java.jint | java.lang.Integer, label: java.lang.CharSequence, description: java.lang.CharSequence, reason: str | java.lang.String, /) -> None: ...
    @typing.overload
    def __init__(self, code: int | java.jint | java.lang.Integer, label: java.lang.CharSequence, description: java.lang.CharSequence, reason: str | java.lang.String, toneToPlay: int | java.jint | java.lang.Integer, /) -> None: ...
    def describeContents(self) -> int: ...
    def equals(self, o: java.lang.Object | int | bool | float | str, /) -> bool: ...
    def getCode(self) -> int: ...
    def getDescription(self) -> java.lang.CharSequence: ...
    def getLabel(self) -> java.lang.CharSequence: ...
    def getReason(self) -> str: ...
    def getTone(self) -> int: ...
    def hashCode(self) -> int: ...
    def toString(self) -> str: ...
    def writeToParcel(self, destination: android.os.Parcel, flags: int | java.jint | java.lang.Integer, /) -> None: ...

class GatewayInfo(android.os.Parcelable):
    CREATOR: typing.ClassVar[android.os.Parcelable.Creator[GatewayInfo]] = ...
    def __init__(self, packageName: str | java.lang.String, gatewayUri: android.net.Uri, originalAddress: android.net.Uri, /) -> None: ...
    def describeContents(self) -> int: ...
    def getGatewayAddress(self) -> android.net.Uri: ...
    def getGatewayProviderPackageName(self) -> str: ...
    def getOriginalAddress(self) -> android.net.Uri: ...
    def isEmpty(self) -> bool: ...
    def writeToParcel(self, destination: android.os.Parcel, flags: int | java.jint | java.lang.Integer, /) -> None: ...

class InCallService(android.app.Service):
    SERVICE_INTERFACE: typing.ClassVar[str] = ...
    def __init__(self) -> None: ...
    def canAddCall(self) -> bool: ...
    def getCallAudioState(self) -> CallAudioState | None: ...
    def getCalls(self) -> java.util.List[Call]: ...
    def getCurrentCallEndpoint(self) -> CallEndpoint: ...
    def onAvailableCallEndpointsChanged(self, availableEndpoints: java.util.List[CallEndpoint], /) -> None: ...
    def onBind(self, intent: android.content.Intent, /) -> android.os.IBinder: ...
    def onBringToForeground(self, showDialpad: bool | java.jboolean | java.lang.Boolean, /) -> None: ...
    def onCallAdded(self, call: Call, /) -> None: ...
    def onCallAudioStateChanged(self, audioState: CallAudioState, /) -> None: ...
    def onCallEndpointChanged(self, callEndpoint: CallEndpoint, /) -> None: ...
    def onCallRemoved(self, call: Call, /) -> None: ...
    def onCanAddCallChanged(self, canAddCall: bool | java.jboolean | java.lang.Boolean, /) -> None: ...
    def onConnectionEvent(self, call: Call, event: str | java.lang.String, extras: android.os.Bundle, /) -> None: ...
    def onMuteStateChanged(self, isMuted: bool | java.jboolean | java.lang.Boolean, /) -> None: ...
    def onSilenceRinger(self) -> None: ...
    def onUnbind(self, intent: android.content.Intent, /) -> bool: ...
    def requestBluetoothAudio(self, bluetoothDevice: android.bluetooth.BluetoothDevice, /) -> None: ...
    def requestCallEndpointChange(self, endpoint: CallEndpoint, executor: java.util.concurrent.Executor, callback: android.os.OutcomeReceiver[java.lang.Void, CallEndpointException], /) -> None: ...
    def setAudioRoute(self, route: int | java.jint | java.lang.Integer, /) -> None: ...
    def setMuted(self, state: bool | java.jboolean | java.lang.Boolean, /) -> None: ...

    class VideoCall(java.lang.Object):
        def __init__(self) -> None: ...
        @typing.overload
        def registerCallback(self, arg1: InCallService.VideoCall.Callback, /) -> None: ...
        @typing.overload
        def registerCallback(self, arg1: InCallService.VideoCall.Callback, arg2: android.os.Handler, /) -> None: ...
        def requestCallDataUsage(self) -> None: ...
        def requestCameraCapabilities(self) -> None: ...
        def sendSessionModifyRequest(self, arg1: VideoProfile, /) -> None: ...
        def sendSessionModifyResponse(self, arg1: VideoProfile, /) -> None: ...
        def setCamera(self, arg1: str | java.lang.String, /) -> None: ...
        def setDeviceOrientation(self, arg1: int | java.jint | java.lang.Integer, /) -> None: ...
        def setDisplaySurface(self, arg1: android.view.Surface, /) -> None: ...
        def setPauseImage(self, arg1: android.net.Uri, /) -> None: ...
        def setPreviewSurface(self, arg1: android.view.Surface, /) -> None: ...
        def setZoom(self, arg1: float | java.jfloat | java.lang.Float, /) -> None: ...
        def unregisterCallback(self, arg1: InCallService.VideoCall.Callback, /) -> None: ...

        class Callback(java.lang.Object):
            def __init__(self) -> None: ...
            def onCallDataUsageChanged(self, arg1: int | java.jlong | java.lang.Long, /) -> None: ...
            def onCallSessionEvent(self, arg1: int | java.jint | java.lang.Integer, /) -> None: ...
            def onCameraCapabilitiesChanged(self, arg1: VideoProfile.CameraCapabilities, /) -> None: ...
            def onPeerDimensionsChanged(self, arg1: int | java.jint | java.lang.Integer, arg2: int | java.jint | java.lang.Integer, /) -> None: ...
            def onSessionModifyRequestReceived(self, arg1: VideoProfile, /) -> None: ...
            def onSessionModifyResponseReceived(self, arg1: int | java.jint | java.lang.Integer, arg2: VideoProfile, arg3: VideoProfile, /) -> None: ...
            def onVideoQualityChanged(self, arg1: int | java.jint | java.lang.Integer, /) -> None: ...

class PhoneAccount(android.os.Parcelable):
    CAPABILITY_ADHOC_CONFERENCE_CALLING: typing.ClassVar[int] = ...
    CAPABILITY_CALL_COMPOSER: typing.ClassVar[int] = ...
    CAPABILITY_CALL_PROVIDER: typing.ClassVar[int] = ...
    CAPABILITY_CALL_SUBJECT: typing.ClassVar[int] = ...
    CAPABILITY_CONNECTION_MANAGER: typing.ClassVar[int] = ...
    CAPABILITY_PLACE_EMERGENCY_CALLS: typing.ClassVar[int] = ...
    CAPABILITY_RTT: typing.ClassVar[int] = ...
    CAPABILITY_SELF_MANAGED: typing.ClassVar[int] = ...
    CAPABILITY_SIM_SUBSCRIPTION: typing.ClassVar[int] = ...
    CAPABILITY_SUPPORTS_CALL_STREAMING: typing.ClassVar[int] = ...
    CAPABILITY_SUPPORTS_TRANSACTIONAL_OPERATIONS: typing.ClassVar[int] = ...
    CAPABILITY_SUPPORTS_VIDEO_CALLING: typing.ClassVar[int] = ...
    CAPABILITY_SUPPORTS_VOICE_CALLING_INDICATIONS: typing.ClassVar[int] = ...
    CAPABILITY_VIDEO_CALLING: typing.ClassVar[int] = ...
    CAPABILITY_VIDEO_CALLING_RELIES_ON_PRESENCE: typing.ClassVar[int] = ...
    CAPABILITY_VOICE_CALLING_AVAILABLE: typing.ClassVar[int] = ...
    CREATOR: typing.ClassVar[android.os.Parcelable.Creator[PhoneAccount]] = ...
    EXTRA_ADD_SELF_MANAGED_CALLS_TO_INCALLSERVICE: typing.ClassVar[str] = ...
    EXTRA_ALWAYS_USE_VOIP_AUDIO_MODE: typing.ClassVar[str] = ...
    EXTRA_CALL_SUBJECT_CHARACTER_ENCODING: typing.ClassVar[str] = ...
    EXTRA_CALL_SUBJECT_MAX_LENGTH: typing.ClassVar[str] = ...
    EXTRA_LOG_SELF_MANAGED_CALLS: typing.ClassVar[str] = ...
    EXTRA_SUPPORTS_HANDOVER_FROM: typing.ClassVar[str] = ...
    EXTRA_SUPPORTS_HANDOVER_TO: typing.ClassVar[str] = ...
    NO_HIGHLIGHT_COLOR: typing.ClassVar[int] = ...
    NO_RESOURCE_ID: typing.ClassVar[int] = ...
    SCHEME_SIP: typing.ClassVar[str] = ...
    SCHEME_TEL: typing.ClassVar[str] = ...
    SCHEME_VOICEMAIL: typing.ClassVar[str] = ...
    @staticmethod
    def builder(accountHandle: PhoneAccountHandle, label: java.lang.CharSequence, /) -> PhoneAccount.Builder: ...
    def describeContents(self) -> int: ...
    def equals(self, o: java.lang.Object | int | bool | float | str, /) -> bool: ...
    def getAccountHandle(self) -> PhoneAccountHandle: ...
    def getAddress(self) -> android.net.Uri: ...
    def getCapabilities(self) -> int: ...
    def getExtras(self) -> android.os.Bundle: ...
    def getHighlightColor(self) -> int: ...
    def getIcon(self) -> android.graphics.drawable.Icon: ...
    def getLabel(self) -> java.lang.CharSequence: ...
    def getShortDescription(self) -> java.lang.CharSequence: ...
    def getSimultaneousCallingRestriction(self) -> java.util.Set[PhoneAccountHandle]: ...
    def getSubscriptionAddress(self) -> android.net.Uri: ...
    def getSupportedUriSchemes(self) -> java.util.List[java.lang.String]: ...
    def hasCapabilities(self, capability: int | java.jint | java.lang.Integer, /) -> bool: ...
    def hasSimultaneousCallingRestriction(self) -> bool: ...
    def hashCode(self) -> int: ...
    def isEnabled(self) -> bool: ...
    def supportsUriScheme(self, uriScheme: str | java.lang.String, /) -> bool: ...
    def toBuilder(self) -> PhoneAccount.Builder: ...
    def toString(self) -> str: ...
    def writeToParcel(self, out: android.os.Parcel, flags: int | java.jint | java.lang.Integer, /) -> None: ...

    class Builder(java.lang.Object):
        @typing.overload
        def __init__(self, phoneAccount: PhoneAccount, /) -> None: ...
        @typing.overload
        def __init__(self, accountHandle: PhoneAccountHandle, label: java.lang.CharSequence, /) -> None: ...
        def addSupportedUriScheme(self, uriScheme: str | java.lang.String, /) -> PhoneAccount.Builder: ...
        def build(self) -> PhoneAccount: ...
        def clearSimultaneousCallingRestriction(self) -> PhoneAccount.Builder: ...
        def setAddress(self, value: android.net.Uri, /) -> PhoneAccount.Builder: ...
        def setCapabilities(self, value: int | java.jint | java.lang.Integer, /) -> PhoneAccount.Builder: ...
        def setExtras(self, extras: android.os.Bundle, /) -> PhoneAccount.Builder: ...
        def setHighlightColor(self, value: int | java.jint | java.lang.Integer, /) -> PhoneAccount.Builder: ...
        def setIcon(self, icon: android.graphics.drawable.Icon, /) -> PhoneAccount.Builder: ...
        def setShortDescription(self, value: java.lang.CharSequence, /) -> PhoneAccount.Builder: ...
        def setSimultaneousCallingRestriction(self, handles: java.util.Set[PhoneAccountHandle], /) -> PhoneAccount.Builder: ...
        def setSubscriptionAddress(self, value: android.net.Uri, /) -> PhoneAccount.Builder: ...
        def setSupportedUriSchemes(self, uriSchemes: java.util.List[java.lang.String], /) -> PhoneAccount.Builder: ...

class PhoneAccountHandle(android.os.Parcelable):
    CREATOR: typing.ClassVar[android.os.Parcelable.Creator[PhoneAccountHandle]] = ...
    @typing.overload
    def __init__(self, componentName: android.content.ComponentName, id: str | java.lang.String, /) -> None: ...
    @typing.overload
    def __init__(self, componentName: android.content.ComponentName, id: str | java.lang.String, userHandle: android.os.UserHandle, /) -> None: ...
    def describeContents(self) -> int: ...
    def equals(self, other: java.lang.Object | int | bool | float | str, /) -> bool: ...
    def getComponentName(self) -> android.content.ComponentName: ...
    def getId(self) -> str: ...
    def getUserHandle(self) -> android.os.UserHandle: ...
    def hashCode(self) -> int: ...
    def toString(self) -> str: ...
    def writeToParcel(self, out: android.os.Parcel, flags: int | java.jint | java.lang.Integer, /) -> None: ...

class PhoneAccountSuggestion(android.os.Parcelable):
    CREATOR: typing.ClassVar[android.os.Parcelable.Creator[PhoneAccountSuggestion]] = ...
    REASON_FREQUENT: typing.ClassVar[int] = ...
    REASON_INTRA_CARRIER: typing.ClassVar[int] = ...
    REASON_NONE: typing.ClassVar[int] = ...
    REASON_OTHER: typing.ClassVar[int] = ...
    REASON_USER_SET: typing.ClassVar[int] = ...
    def __init__(self, handle: PhoneAccountHandle, reason: int | java.jint | java.lang.Integer, shouldAutoSelect: bool | java.jboolean | java.lang.Boolean, /) -> None: ...
    def describeContents(self) -> int: ...
    def equals(self, o: java.lang.Object | int | bool | float | str, /) -> bool: ...
    def getPhoneAccountHandle(self) -> PhoneAccountHandle: ...
    def getReason(self) -> int: ...
    def hashCode(self) -> int: ...
    def shouldAutoSelect(self) -> bool: ...
    def writeToParcel(self, dest: android.os.Parcel, flags: int | java.jint | java.lang.Integer, /) -> None: ...

class QueryLocationException(android.os.Parcelable, java.lang.RuntimeException):
    CREATOR: typing.ClassVar[android.os.Parcelable.Creator[QueryLocationException]] = ...
    ERROR_NOT_ALLOWED_FOR_NON_EMERGENCY_CONNECTIONS: typing.ClassVar[int] = ...
    ERROR_NOT_PERMITTED: typing.ClassVar[int] = ...
    ERROR_PREVIOUS_REQUEST_EXISTS: typing.ClassVar[int] = ...
    ERROR_REQUEST_TIME_OUT: typing.ClassVar[int] = ...
    ERROR_SERVICE_UNAVAILABLE: typing.ClassVar[int] = ...
    ERROR_UNSPECIFIED: typing.ClassVar[int] = ...
    @typing.overload
    def __init__(self, message: str | java.lang.String, /) -> None: ...
    @typing.overload
    def __init__(self, message: str | java.lang.String, code: int | java.jint | java.lang.Integer, /) -> None: ...
    @typing.overload
    def __init__(self, message: str | java.lang.String, code: int | java.jint | java.lang.Integer, cause: java.lang.Throwable, /) -> None: ...
    def describeContents(self) -> int: ...
    def getCode(self) -> int: ...
    def writeToParcel(self, dest: android.os.Parcel, flags: int | java.jint | java.lang.Integer, /) -> None: ...

class RemoteConference(java.lang.Object):
    def disconnect(self) -> None: ...
    def getConferenceableConnections(self) -> java.util.List[RemoteConnection]: ...
    def getConnectionCapabilities(self) -> int: ...
    def getConnectionProperties(self) -> int: ...
    def getConnections(self) -> java.util.List[RemoteConnection]: ...
    def getDisconnectCause(self) -> DisconnectCause: ...
    def getExtras(self) -> android.os.Bundle: ...
    def getState(self) -> int: ...
    def hold(self) -> None: ...
    def merge(self) -> None: ...
    def playDtmfTone(self, digit: str | java.jchar | java.lang.Character, /) -> None: ...
    @typing.overload
    def registerCallback(self, callback: RemoteConference.Callback, /) -> None: ...
    @typing.overload
    def registerCallback(self, callback: RemoteConference.Callback, handler: android.os.Handler, /) -> None: ...
    def separate(self, connection: RemoteConnection, /) -> None: ...
    def setCallAudioState(self, state: CallAudioState, /) -> None: ...
    def stopDtmfTone(self) -> None: ...
    def swap(self) -> None: ...
    def unhold(self) -> None: ...
    def unregisterCallback(self, callback: RemoteConference.Callback, /) -> None: ...

    class Callback(java.lang.Object):
        def __init__(self) -> None: ...
        def onConferenceableConnectionsChanged(self, conference: RemoteConference, conferenceableConnections: java.util.List[RemoteConnection], /) -> None: ...
        def onConnectionAdded(self, conference: RemoteConference, connection: RemoteConnection, /) -> None: ...
        def onConnectionCapabilitiesChanged(self, conference: RemoteConference, connectionCapabilities: int | java.jint | java.lang.Integer, /) -> None: ...
        def onConnectionPropertiesChanged(self, conference: RemoteConference, connectionProperties: int | java.jint | java.lang.Integer, /) -> None: ...
        def onConnectionRemoved(self, conference: RemoteConference, connection: RemoteConnection, /) -> None: ...
        def onDestroyed(self, conference: RemoteConference, /) -> None: ...
        def onDisconnected(self, conference: RemoteConference, disconnectCause: DisconnectCause, /) -> None: ...
        def onExtrasChanged(self, conference: RemoteConference, extras: android.os.Bundle, /) -> None: ...
        def onStateChanged(self, conference: RemoteConference, oldState: int | java.jint | java.lang.Integer, newState: int | java.jint | java.lang.Integer, /) -> None: ...

class RemoteConnection(java.lang.Object):
    def abort(self) -> None: ...
    def addConferenceParticipants(self, participants: java.util.List[android.net.Uri], /) -> None: ...
    def answer(self) -> None: ...
    def disconnect(self) -> None: ...
    def getAddress(self) -> android.net.Uri: ...
    def getAddressPresentation(self) -> int: ...
    def getCallerDisplayName(self) -> java.lang.CharSequence: ...
    def getCallerDisplayNamePresentation(self) -> int: ...
    def getConference(self) -> RemoteConference: ...
    def getConferenceableConnections(self) -> java.util.List[RemoteConnection]: ...
    def getConnectionCapabilities(self) -> int: ...
    def getConnectionProperties(self) -> int: ...
    def getDisconnectCause(self) -> DisconnectCause: ...
    def getExtras(self) -> android.os.Bundle: ...
    def getState(self) -> int: ...
    def getStatusHints(self) -> StatusHints: ...
    def getVideoProvider(self) -> RemoteConnection.VideoProvider: ...
    def getVideoState(self) -> int: ...
    def hold(self) -> None: ...
    def isRingbackRequested(self) -> bool: ...
    def isVoipAudioMode(self) -> bool: ...
    def playDtmfTone(self, digit: str | java.jchar | java.lang.Character, /) -> None: ...
    def postDialContinue(self, proceed: bool | java.jboolean | java.lang.Boolean, /) -> None: ...
    def pullExternalCall(self) -> None: ...
    @typing.overload
    def registerCallback(self, callback: RemoteConnection.Callback, /) -> None: ...
    @typing.overload
    def registerCallback(self, callback: RemoteConnection.Callback, handler: android.os.Handler, /) -> None: ...
    def reject(self) -> None: ...
    def setCallAudioState(self, state: CallAudioState, /) -> None: ...
    def stopDtmfTone(self) -> None: ...
    def unhold(self) -> None: ...
    def unregisterCallback(self, callback: RemoteConnection.Callback, /) -> None: ...

    class VideoProvider(java.lang.Object):
        def registerCallback(self, l: RemoteConnection.VideoProvider.Callback, /) -> None: ...
        def requestCallDataUsage(self) -> None: ...
        def requestCameraCapabilities(self) -> None: ...
        def sendSessionModifyRequest(self, fromProfile: VideoProfile, toProfile: VideoProfile, /) -> None: ...
        def sendSessionModifyResponse(self, responseProfile: VideoProfile, /) -> None: ...
        def setCamera(self, cameraId: str | java.lang.String, /) -> None: ...
        def setDeviceOrientation(self, rotation: int | java.jint | java.lang.Integer, /) -> None: ...
        def setDisplaySurface(self, surface: android.view.Surface, /) -> None: ...
        def setPauseImage(self, uri: android.net.Uri, /) -> None: ...
        def setPreviewSurface(self, surface: android.view.Surface, /) -> None: ...
        def setZoom(self, value: float | java.jfloat | java.lang.Float, /) -> None: ...
        def unregisterCallback(self, l: RemoteConnection.VideoProvider.Callback, /) -> None: ...

        class Callback(java.lang.Object):
            def __init__(self) -> None: ...
            def onCallDataUsageChanged(self, videoProvider: RemoteConnection.VideoProvider, dataUsage: int | java.jlong | java.lang.Long, /) -> None: ...
            def onCallSessionEvent(self, videoProvider: RemoteConnection.VideoProvider, event: int | java.jint | java.lang.Integer, /) -> None: ...
            def onCameraCapabilitiesChanged(self, videoProvider: RemoteConnection.VideoProvider, cameraCapabilities: VideoProfile.CameraCapabilities, /) -> None: ...
            def onPeerDimensionsChanged(self, videoProvider: RemoteConnection.VideoProvider, width: int | java.jint | java.lang.Integer, height: int | java.jint | java.lang.Integer, /) -> None: ...
            def onSessionModifyRequestReceived(self, videoProvider: RemoteConnection.VideoProvider, videoProfile: VideoProfile, /) -> None: ...
            def onSessionModifyResponseReceived(self, videoProvider: RemoteConnection.VideoProvider, status: int | java.jint | java.lang.Integer, requestedProfile: VideoProfile, responseProfile: VideoProfile, /) -> None: ...
            def onVideoQualityChanged(self, videoProvider: RemoteConnection.VideoProvider, videoQuality: int | java.jint | java.lang.Integer, /) -> None: ...

    class Callback(java.lang.Object):
        def __init__(self) -> None: ...
        def onAddressChanged(self, connection: RemoteConnection, address: android.net.Uri, presentation: int | java.jint | java.lang.Integer, /) -> None: ...
        def onCallerDisplayNameChanged(self, connection: RemoteConnection, callerDisplayName: str | java.lang.String, presentation: int | java.jint | java.lang.Integer, /) -> None: ...
        def onConferenceChanged(self, connection: RemoteConnection, conference: RemoteConference, /) -> None: ...
        def onConferenceableConnectionsChanged(self, connection: RemoteConnection, conferenceableConnections: java.util.List[RemoteConnection], /) -> None: ...
        def onConnectionCapabilitiesChanged(self, connection: RemoteConnection, connectionCapabilities: int | java.jint | java.lang.Integer, /) -> None: ...
        def onConnectionEvent(self, connection: RemoteConnection, event: str | java.lang.String, extras: android.os.Bundle, /) -> None: ...
        def onConnectionPropertiesChanged(self, connection: RemoteConnection, connectionProperties: int | java.jint | java.lang.Integer, /) -> None: ...
        def onDestroyed(self, connection: RemoteConnection, /) -> None: ...
        def onDisconnected(self, connection: RemoteConnection, disconnectCause: DisconnectCause, /) -> None: ...
        def onExtrasChanged(self, connection: RemoteConnection, extras: android.os.Bundle, /) -> None: ...
        def onPostDialChar(self, connection: RemoteConnection, nextChar: str | java.jchar | java.lang.Character, /) -> None: ...
        def onPostDialWait(self, connection: RemoteConnection, remainingPostDialSequence: str | java.lang.String, /) -> None: ...
        def onRingbackRequested(self, connection: RemoteConnection, ringback: bool | java.jboolean | java.lang.Boolean, /) -> None: ...
        def onStateChanged(self, connection: RemoteConnection, state: int | java.jint | java.lang.Integer, /) -> None: ...
        def onStatusHintsChanged(self, connection: RemoteConnection, statusHints: StatusHints, /) -> None: ...
        def onVideoProviderChanged(self, connection: RemoteConnection, videoProvider: RemoteConnection.VideoProvider, /) -> None: ...
        def onVideoStateChanged(self, connection: RemoteConnection, videoState: int | java.jint | java.lang.Integer, /) -> None: ...
        def onVoipAudioChanged(self, connection: RemoteConnection, isVoip: bool | java.jboolean | java.lang.Boolean, /) -> None: ...

class StatusHints(android.os.Parcelable):
    CREATOR: typing.ClassVar[android.os.Parcelable.Creator[StatusHints]] = ...
    def __init__(self, label: java.lang.CharSequence, icon: android.graphics.drawable.Icon, extras: android.os.Bundle, /) -> None: ...
    def describeContents(self) -> int: ...
    def equals(self, other: java.lang.Object | int | bool | float | str, /) -> bool: ...
    def getExtras(self) -> android.os.Bundle: ...
    def getIcon(self) -> android.graphics.drawable.Icon: ...
    def getLabel(self) -> java.lang.CharSequence: ...
    def hashCode(self) -> int: ...
    def writeToParcel(self, out: android.os.Parcel, flags: int | java.jint | java.lang.Integer, /) -> None: ...

class TelecomManager(java.lang.Object):
    ACTION_CHANGE_DEFAULT_DIALER: typing.ClassVar[str] = ...
    ACTION_CHANGE_PHONE_ACCOUNTS: typing.ClassVar[str] = ...
    ACTION_CONFIGURE_PHONE_ACCOUNT: typing.ClassVar[str] = ...
    ACTION_DEFAULT_CALL_SCREENING_APP_CHANGED: typing.ClassVar[str] = ...
    ACTION_DEFAULT_DIALER_CHANGED: typing.ClassVar[str] = ...
    ACTION_INCOMING_CALL: typing.ClassVar[str] = ...
    ACTION_PHONE_ACCOUNT_REGISTERED: typing.ClassVar[str] = ...
    ACTION_PHONE_ACCOUNT_UNREGISTERED: typing.ClassVar[str] = ...
    ACTION_POST_CALL: typing.ClassVar[str] = ...
    ACTION_SHOW_CALL_ACCESSIBILITY_SETTINGS: typing.ClassVar[str] = ...
    ACTION_SHOW_CALL_SETTINGS: typing.ClassVar[str] = ...
    ACTION_SHOW_MISSED_CALLS_NOTIFICATION: typing.ClassVar[str] = ...
    ACTION_SHOW_RESPOND_VIA_SMS_SETTINGS: typing.ClassVar[str] = ...
    DTMF_CHARACTER_PAUSE: typing.ClassVar[str] = ...
    DTMF_CHARACTER_WAIT: typing.ClassVar[str] = ...
    DURATION_LONG: typing.ClassVar[int] = ...
    DURATION_MEDIUM: typing.ClassVar[int] = ...
    DURATION_SHORT: typing.ClassVar[int] = ...
    DURATION_VERY_SHORT: typing.ClassVar[int] = ...
    EXTRA_CALL_BACK_NUMBER: typing.ClassVar[str] = ...
    EXTRA_CALL_DISCONNECT_CAUSE: typing.ClassVar[str] = ...
    EXTRA_CALL_DISCONNECT_MESSAGE: typing.ClassVar[str] = ...
    EXTRA_CALL_DURATION: typing.ClassVar[str] = ...
    EXTRA_CALL_LOG_URI: typing.ClassVar[str] = ...
    EXTRA_CALL_NETWORK_TYPE: typing.ClassVar[str] = ...
    EXTRA_CALL_SUBJECT: typing.ClassVar[str] = ...
    EXTRA_CHANGE_DEFAULT_DIALER_PACKAGE_NAME: typing.ClassVar[str] = ...
    EXTRA_DEFAULT_CALL_SCREENING_APP_COMPONENT_NAME: typing.ClassVar[str] = ...
    EXTRA_DISCONNECT_CAUSE: typing.ClassVar[str] = ...
    EXTRA_HANDLE: typing.ClassVar[str] = ...
    EXTRA_HAS_PICTURE: typing.ClassVar[str] = ...
    EXTRA_INCOMING_CALL_ADDRESS: typing.ClassVar[str] = ...
    EXTRA_INCOMING_CALL_EXTRAS: typing.ClassVar[str] = ...
    EXTRA_INCOMING_VIDEO_STATE: typing.ClassVar[str] = ...
    EXTRA_IS_DEFAULT_CALL_SCREENING_APP: typing.ClassVar[str] = ...
    EXTRA_LOCATION: typing.ClassVar[str] = ...
    EXTRA_NOTIFICATION_COUNT: typing.ClassVar[str] = ...
    EXTRA_NOTIFICATION_PHONE_NUMBER: typing.ClassVar[str] = ...
    EXTRA_OUTGOING_CALL_EXTRAS: typing.ClassVar[str] = ...
    EXTRA_OUTGOING_PICTURE: typing.ClassVar[str] = ...
    EXTRA_PHONE_ACCOUNT_HANDLE: typing.ClassVar[str] = ...
    EXTRA_PICTURE_URI: typing.ClassVar[str] = ...
    EXTRA_PRIORITY: typing.ClassVar[str] = ...
    EXTRA_START_CALL_WITH_RTT: typing.ClassVar[str] = ...
    EXTRA_START_CALL_WITH_SPEAKERPHONE: typing.ClassVar[str] = ...
    EXTRA_START_CALL_WITH_VIDEO_STATE: typing.ClassVar[str] = ...
    EXTRA_USE_ASSISTED_DIALING: typing.ClassVar[str] = ...
    GATEWAY_ORIGINAL_ADDRESS: typing.ClassVar[str] = ...
    GATEWAY_PROVIDER_PACKAGE: typing.ClassVar[str] = ...
    METADATA_INCLUDE_EXTERNAL_CALLS: typing.ClassVar[str] = ...
    METADATA_INCLUDE_SELF_MANAGED_CALLS: typing.ClassVar[str] = ...
    METADATA_IN_CALL_SERVICE_CAR_MODE_UI: typing.ClassVar[str] = ...
    METADATA_IN_CALL_SERVICE_RINGING: typing.ClassVar[str] = ...
    METADATA_IN_CALL_SERVICE_UI: typing.ClassVar[str] = ...
    PRESENTATION_ALLOWED: typing.ClassVar[int] = ...
    PRESENTATION_PAYPHONE: typing.ClassVar[int] = ...
    PRESENTATION_RESTRICTED: typing.ClassVar[int] = ...
    PRESENTATION_UNAVAILABLE: typing.ClassVar[int] = ...
    PRESENTATION_UNKNOWN: typing.ClassVar[int] = ...
    PRIORITY_NORMAL: typing.ClassVar[int] = ...
    PRIORITY_URGENT: typing.ClassVar[int] = ...
    def acceptHandover(self, srcAddr: android.net.Uri, videoState: int | java.jint | java.lang.Integer, destAcct: PhoneAccountHandle, /) -> None: ...
    @typing.overload
    def acceptRingingCall(self) -> None: ...
    @typing.overload
    def acceptRingingCall(self, videoState: int | java.jint | java.lang.Integer, /) -> None: ...
    def addCall(self, callAttributes: CallAttributes, executor: java.util.concurrent.Executor, pendingControl: android.os.OutcomeReceiver[CallControl, CallException], handshakes: CallControlCallback, events: CallEventCallback, /) -> None: ...
    def addNewIncomingCall(self, phoneAccount: PhoneAccountHandle, extras: android.os.Bundle, /) -> None: ...
    def addNewIncomingConference(self, phoneAccount: PhoneAccountHandle, extras: android.os.Bundle, /) -> None: ...
    def cancelMissedCallsNotification(self) -> None: ...
    def createManageBlockedNumbersIntent(self) -> android.content.Intent: ...
    def endCall(self) -> bool: ...
    def getAdnUriForPhoneAccount(self, accountHandle: PhoneAccountHandle, /) -> android.net.Uri: ...
    def getCallCapablePhoneAccounts(self) -> java.util.List[PhoneAccountHandle]: ...
    def getDefaultDialerPackage(self) -> str | None: ...
    def getDefaultOutgoingPhoneAccount(self, uriScheme: str | java.lang.String, /) -> PhoneAccountHandle: ...
    def getLine1Number(self, accountHandle: PhoneAccountHandle, /) -> str: ...
    def getOwnSelfManagedPhoneAccounts(self) -> java.util.List[PhoneAccountHandle]: ...
    def getPhoneAccount(self, account: PhoneAccountHandle, /) -> PhoneAccount: ...
    def getRegisteredPhoneAccounts(self) -> java.util.List[PhoneAccount]: ...
    def getSelfManagedPhoneAccounts(self) -> java.util.List[PhoneAccountHandle]: ...
    def getSimCallManager(self) -> PhoneAccountHandle: ...
    def getSimCallManagerForSubscription(self, subscriptionId: int | java.jint | java.lang.Integer, /) -> PhoneAccountHandle | None: ...
    def getSystemDialerPackage(self) -> str | None: ...
    def getUserSelectedOutgoingPhoneAccount(self) -> PhoneAccountHandle | None: ...
    def getVoiceMailNumber(self, accountHandle: PhoneAccountHandle, /) -> str: ...
    @typing.overload
    def handleMmi(self, dialString: str | java.lang.String, /) -> bool: ...
    @typing.overload
    def handleMmi(self, dialString: str | java.lang.String, accountHandle: PhoneAccountHandle, /) -> bool: ...
    def hasManageOngoingCallsPermission(self) -> bool: ...
    def isInCall(self) -> bool: ...
    def isInManagedCall(self) -> bool: ...
    def isIncomingCallPermitted(self, phoneAccountHandle: PhoneAccountHandle, /) -> bool: ...
    def isOutgoingCallPermitted(self, phoneAccountHandle: PhoneAccountHandle, /) -> bool: ...
    def isTtySupported(self) -> bool: ...
    def isVoiceMailNumber(self, accountHandle: PhoneAccountHandle, number: str | java.lang.String, /) -> bool: ...
    def placeCall(self, address: android.net.Uri, extras: android.os.Bundle, /) -> None: ...
    def registerPhoneAccount(self, account: PhoneAccount, /) -> None: ...
    def showInCallScreen(self, showDialpad: bool | java.jboolean | java.lang.Boolean, /) -> None: ...
    def silenceRinger(self) -> None: ...
    def startConference(self, participants: java.util.List[android.net.Uri], extras: android.os.Bundle, /) -> None: ...
    def unregisterPhoneAccount(self, accountHandle: PhoneAccountHandle, /) -> None: ...

class VideoProfile(android.os.Parcelable):
    CREATOR: typing.ClassVar[android.os.Parcelable.Creator[VideoProfile]] = ...
    QUALITY_DEFAULT: typing.ClassVar[int] = ...
    QUALITY_HIGH: typing.ClassVar[int] = ...
    QUALITY_LOW: typing.ClassVar[int] = ...
    QUALITY_MEDIUM: typing.ClassVar[int] = ...
    STATE_AUDIO_ONLY: typing.ClassVar[int] = ...
    STATE_BIDIRECTIONAL: typing.ClassVar[int] = ...
    STATE_PAUSED: typing.ClassVar[int] = ...
    STATE_RX_ENABLED: typing.ClassVar[int] = ...
    STATE_TX_ENABLED: typing.ClassVar[int] = ...
    @typing.overload
    def __init__(self, videoState: int | java.jint | java.lang.Integer, /) -> None: ...
    @typing.overload
    def __init__(self, videoState: int | java.jint | java.lang.Integer, quality: int | java.jint | java.lang.Integer, /) -> None: ...
    def describeContents(self) -> int: ...
    def getQuality(self) -> int: ...
    def getVideoState(self) -> int: ...
    @staticmethod
    def isAudioOnly(videoState: int | java.jint | java.lang.Integer, /) -> bool: ...
    @staticmethod
    def isBidirectional(videoState: int | java.jint | java.lang.Integer, /) -> bool: ...
    @staticmethod
    def isPaused(videoState: int | java.jint | java.lang.Integer, /) -> bool: ...
    @staticmethod
    def isReceptionEnabled(videoState: int | java.jint | java.lang.Integer, /) -> bool: ...
    @staticmethod
    def isTransmissionEnabled(videoState: int | java.jint | java.lang.Integer, /) -> bool: ...
    @staticmethod
    def isVideo(videoState: int | java.jint | java.lang.Integer, /) -> bool: ...
    def toString(self) -> str: ...
    @staticmethod
    def videoStateToString(videoState: int | java.jint | java.lang.Integer, /) -> str: ...
    def writeToParcel(self, dest: android.os.Parcel, flags: int | java.jint | java.lang.Integer, /) -> None: ...

    class CameraCapabilities(android.os.Parcelable):
        CREATOR: typing.ClassVar[android.os.Parcelable.Creator[VideoProfile.CameraCapabilities]] = ...
        @typing.overload
        def __init__(self, width: int | java.jint | java.lang.Integer, height: int | java.jint | java.lang.Integer, /) -> None: ...
        @typing.overload
        def __init__(self, width: int | java.jint | java.lang.Integer, height: int | java.jint | java.lang.Integer, zoomSupported: bool | java.jboolean | java.lang.Boolean, maxZoom: float | java.jfloat | java.lang.Float, /) -> None: ...
        def describeContents(self) -> int: ...
        def getHeight(self) -> int: ...
        def getMaxZoom(self) -> float: ...
        def getWidth(self) -> int: ...
        def isZoomSupported(self) -> bool: ...
        def writeToParcel(self, dest: android.os.Parcel, flags: int | java.jint | java.lang.Integer, /) -> None: ...
