import typing

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

class BundleSession(java.lang.AutoCloseable):
    KEY_STATSD_ATOM: typing.ClassVar[str] = ...
    def close(self) -> None: ...
    def equals(self, o: java.lang.Object | int | bool | float | str, /) -> bool: ...
    def getSessionId(self) -> LogSessionId: ...
    def hashCode(self) -> int: ...
    def reportBundleMetrics(self, metrics: android.os.PersistableBundle, /) -> None: ...

class EditingEndedEvent(Event, android.os.Parcelable):
    CREATOR: typing.ClassVar[android.os.Parcelable.Creator[EditingEndedEvent]] = ...
    ERROR_CODE_AUDIO_PROCESSING_FAILED: typing.ClassVar[int] = ...
    ERROR_CODE_DECODER_INIT_FAILED: typing.ClassVar[int] = ...
    ERROR_CODE_DECODING_FAILED: typing.ClassVar[int] = ...
    ERROR_CODE_DECODING_FORMAT_UNSUPPORTED: typing.ClassVar[int] = ...
    ERROR_CODE_ENCODER_INIT_FAILED: typing.ClassVar[int] = ...
    ERROR_CODE_ENCODING_FAILED: typing.ClassVar[int] = ...
    ERROR_CODE_ENCODING_FORMAT_UNSUPPORTED: typing.ClassVar[int] = ...
    ERROR_CODE_FAILED_RUNTIME_CHECK: typing.ClassVar[int] = ...
    ERROR_CODE_IO_BAD_HTTP_STATUS: typing.ClassVar[int] = ...
    ERROR_CODE_IO_CLEARTEXT_NOT_PERMITTED: typing.ClassVar[int] = ...
    ERROR_CODE_IO_FILE_NOT_FOUND: typing.ClassVar[int] = ...
    ERROR_CODE_IO_NETWORK_CONNECTION_FAILED: typing.ClassVar[int] = ...
    ERROR_CODE_IO_NETWORK_CONNECTION_TIMEOUT: typing.ClassVar[int] = ...
    ERROR_CODE_IO_NO_PERMISSION: typing.ClassVar[int] = ...
    ERROR_CODE_IO_READ_POSITION_OUT_OF_RANGE: typing.ClassVar[int] = ...
    ERROR_CODE_IO_UNSPECIFIED: typing.ClassVar[int] = ...
    ERROR_CODE_MUXING_FAILED: typing.ClassVar[int] = ...
    ERROR_CODE_NONE: typing.ClassVar[int] = ...
    ERROR_CODE_VIDEO_FRAME_PROCESSING_FAILED: typing.ClassVar[int] = ...
    FINAL_STATE_CANCELED: typing.ClassVar[int] = ...
    FINAL_STATE_ERROR: typing.ClassVar[int] = ...
    FINAL_STATE_SUCCEEDED: typing.ClassVar[int] = ...
    OPERATION_TYPE_AUDIO_EDIT: typing.ClassVar[int] = ...
    OPERATION_TYPE_AUDIO_TRANSCODE: typing.ClassVar[int] = ...
    OPERATION_TYPE_AUDIO_TRANSMUX: typing.ClassVar[int] = ...
    OPERATION_TYPE_PAUSED: typing.ClassVar[int] = ...
    OPERATION_TYPE_RESUMED: typing.ClassVar[int] = ...
    OPERATION_TYPE_VIDEO_EDIT: typing.ClassVar[int] = ...
    OPERATION_TYPE_VIDEO_TRANSCODE: typing.ClassVar[int] = ...
    OPERATION_TYPE_VIDEO_TRANSMUX: typing.ClassVar[int] = ...
    PROGRESS_PERCENT_UNKNOWN: typing.ClassVar[int] = ...
    TIME_SINCE_CREATED_UNKNOWN: typing.ClassVar[int] = ...
    def describeContents(self) -> int: ...
    def equals(self, o: java.lang.Object | int | bool | float | str, /) -> bool: ...
    def getErrorCode(self) -> int: ...
    def getExporterName(self) -> str | None: ...
    def getFinalProgressPercent(self) -> float: ...
    def getFinalState(self) -> int: ...
    def getInputMediaItemInfos(self) -> java.util.List[MediaItemInfo]: ...
    def getMetricsBundle(self) -> android.os.Bundle: ...
    def getMuxerName(self) -> str | None: ...
    def getOperationTypes(self) -> int: ...
    def getOutputMediaItemInfo(self) -> MediaItemInfo | None: ...
    def getTimeSinceCreatedMillis(self) -> int: ...
    def hashCode(self) -> int: ...
    def toString(self) -> str: ...
    def writeToParcel(self, dest: android.os.Parcel, flags: int | java.jint | java.lang.Integer, /) -> None: ...

    class Builder(java.lang.Object):
        def __init__(self, finalState: int | java.jint | java.lang.Integer, /) -> None: ...
        def addInputMediaItemInfo(self, mediaItemInfo: MediaItemInfo, /) -> EditingEndedEvent.Builder: ...
        def addOperationType(self, operationType: int | java.jlong | java.lang.Long, /) -> EditingEndedEvent.Builder: ...
        def build(self) -> EditingEndedEvent: ...
        def setErrorCode(self, value: int | java.jint | java.lang.Integer, /) -> EditingEndedEvent.Builder: ...
        def setExporterName(self, exporterName: str | java.lang.String, /) -> EditingEndedEvent.Builder: ...
        def setFinalProgressPercent(self, finalProgressPercent: float | java.jfloat | java.lang.Float, /) -> EditingEndedEvent.Builder: ...
        def setMetricsBundle(self, metricsBundle: android.os.Bundle, /) -> EditingEndedEvent.Builder: ...
        def setMuxerName(self, muxerName: str | java.lang.String, /) -> EditingEndedEvent.Builder: ...
        def setOutputMediaItemInfo(self, mediaItemInfo: MediaItemInfo, /) -> EditingEndedEvent.Builder: ...
        def setTimeSinceCreatedMillis(self, timeSinceCreatedMillis: int | java.jlong | java.lang.Long, /) -> EditingEndedEvent.Builder: ...

class EditingSession(java.lang.AutoCloseable):
    def close(self) -> None: ...
    def equals(self, o: java.lang.Object | int | bool | float | str, /) -> bool: ...
    def getSessionId(self) -> LogSessionId: ...
    def hashCode(self) -> int: ...
    def reportEditingEndedEvent(self, editingEndedEvent: EditingEndedEvent, /) -> None: ...

class Event(java.lang.Object):
    def getMetricsBundle(self) -> android.os.Bundle: ...
    def getTimeSinceCreatedMillis(self) -> int: ...

class LogSessionId(java.lang.Object):
    LOG_SESSION_ID_NONE: typing.ClassVar[LogSessionId] = ...
    def equals(self, o: java.lang.Object | int | bool | float | str, /) -> bool: ...
    def getStringId(self) -> str: ...
    def hashCode(self) -> int: ...
    def toString(self) -> str: ...

class MediaItemInfo(android.os.Parcelable):
    CREATOR: typing.ClassVar[android.os.Parcelable.Creator[MediaItemInfo]] = ...
    DATA_TYPE_AUDIO: typing.ClassVar[int] = ...
    DATA_TYPE_DEPTH: typing.ClassVar[int] = ...
    DATA_TYPE_GAIN_MAP: typing.ClassVar[int] = ...
    DATA_TYPE_GAPLESS: typing.ClassVar[int] = ...
    DATA_TYPE_HIGH_DYNAMIC_RANGE_VIDEO: typing.ClassVar[int] = ...
    DATA_TYPE_HIGH_FRAME_RATE: typing.ClassVar[int] = ...
    DATA_TYPE_IMAGE: typing.ClassVar[int] = ...
    DATA_TYPE_METADATA: typing.ClassVar[int] = ...
    DATA_TYPE_SPATIAL_AUDIO: typing.ClassVar[int] = ...
    DATA_TYPE_SPEED_SETTING_CUE_POINTS: typing.ClassVar[int] = ...
    DATA_TYPE_VIDEO: typing.ClassVar[int] = ...
    SOURCE_TYPE_CAMERA: typing.ClassVar[int] = ...
    SOURCE_TYPE_EDITING_SESSION: typing.ClassVar[int] = ...
    SOURCE_TYPE_GALLERY: typing.ClassVar[int] = ...
    SOURCE_TYPE_GENERATED: typing.ClassVar[int] = ...
    SOURCE_TYPE_LOCAL_FILE: typing.ClassVar[int] = ...
    SOURCE_TYPE_REMOTE_FILE: typing.ClassVar[int] = ...
    SOURCE_TYPE_REMOTE_LIVE_STREAM: typing.ClassVar[int] = ...
    SOURCE_TYPE_UNSPECIFIED: typing.ClassVar[int] = ...
    VALUE_UNSPECIFIED: typing.ClassVar[int] = ...
    def describeContents(self) -> int: ...
    def equals(self, o: java.lang.Object | int | bool | float | str, /) -> bool: ...
    def getAudioChannelCount(self) -> int: ...
    def getAudioSampleCount(self) -> int: ...
    def getAudioSampleRateHz(self) -> int: ...
    def getClipDurationMillis(self) -> int: ...
    def getCodecNames(self) -> java.util.List[java.lang.String]: ...
    def getContainerMimeType(self) -> str | None: ...
    def getDataTypes(self) -> int: ...
    def getDurationMillis(self) -> int: ...
    def getSampleMimeTypes(self) -> java.util.List[java.lang.String]: ...
    def getSourceType(self) -> int: ...
    def getVideoDataSpace(self) -> int: ...
    def getVideoFrameRate(self) -> float: ...
    def getVideoSampleCount(self) -> int: ...
    def getVideoSize(self) -> android.util.Size: ...
    def hashCode(self) -> int: ...
    def toString(self) -> str: ...
    def writeToParcel(self, dest: android.os.Parcel, flags: int | java.jint | java.lang.Integer, /) -> None: ...

    class Builder(java.lang.Object):
        def __init__(self) -> None: ...
        def addCodecName(self, codecName: str | java.lang.String, /) -> MediaItemInfo.Builder: ...
        def addDataType(self, dataType: int | java.jlong | java.lang.Long, /) -> MediaItemInfo.Builder: ...
        def addSampleMimeType(self, mimeType: str | java.lang.String, /) -> MediaItemInfo.Builder: ...
        def build(self) -> MediaItemInfo: ...
        def setAudioChannelCount(self, audioChannelCount: int | java.jint | java.lang.Integer, /) -> MediaItemInfo.Builder: ...
        def setAudioSampleCount(self, audioSampleCount: int | java.jlong | java.lang.Long, /) -> MediaItemInfo.Builder: ...
        def setAudioSampleRateHz(self, audioSampleRateHz: int | java.jint | java.lang.Integer, /) -> MediaItemInfo.Builder: ...
        def setClipDurationMillis(self, clipDurationMillis: int | java.jlong | java.lang.Long, /) -> MediaItemInfo.Builder: ...
        def setContainerMimeType(self, containerMimeType: str | java.lang.String, /) -> MediaItemInfo.Builder: ...
        def setDurationMillis(self, durationMillis: int | java.jlong | java.lang.Long, /) -> MediaItemInfo.Builder: ...
        def setSourceType(self, sourceType: int | java.jint | java.lang.Integer, /) -> MediaItemInfo.Builder: ...
        def setVideoDataSpace(self, videoDataSpace: int | java.jint | java.lang.Integer, /) -> MediaItemInfo.Builder: ...
        def setVideoFrameRate(self, videoFrameRate: float | java.jfloat | java.lang.Float, /) -> MediaItemInfo.Builder: ...
        def setVideoSampleCount(self, videoSampleCount: int | java.jlong | java.lang.Long, /) -> MediaItemInfo.Builder: ...
        def setVideoSize(self, videoSize: android.util.Size, /) -> MediaItemInfo.Builder: ...

class MediaMetricsManager(java.lang.Object):
    INVALID_TIMESTAMP: typing.ClassVar[int] = ...
    def createBundleSession(self) -> BundleSession: ...
    def createEditingSession(self) -> EditingSession: ...
    def createPlaybackSession(self) -> PlaybackSession: ...
    def createRecordingSession(self) -> RecordingSession: ...
    def createTranscodingSession(self) -> TranscodingSession: ...
    def releaseSessionId(self, sessionId: str | java.lang.String, /) -> None: ...

class NetworkEvent(Event, android.os.Parcelable):
    CREATOR: typing.ClassVar[android.os.Parcelable.Creator[NetworkEvent]] = ...
    NETWORK_TYPE_2G: typing.ClassVar[int] = ...
    NETWORK_TYPE_3G: typing.ClassVar[int] = ...
    NETWORK_TYPE_4G: typing.ClassVar[int] = ...
    NETWORK_TYPE_5G_NSA: typing.ClassVar[int] = ...
    NETWORK_TYPE_5G_SA: typing.ClassVar[int] = ...
    NETWORK_TYPE_ETHERNET: typing.ClassVar[int] = ...
    NETWORK_TYPE_OFFLINE: typing.ClassVar[int] = ...
    NETWORK_TYPE_OTHER: typing.ClassVar[int] = ...
    NETWORK_TYPE_UNKNOWN: typing.ClassVar[int] = ...
    NETWORK_TYPE_WIFI: typing.ClassVar[int] = ...
    def describeContents(self) -> int: ...
    def equals(self, o: java.lang.Object | int | bool | float | str, /) -> bool: ...
    def getMetricsBundle(self) -> android.os.Bundle: ...
    def getNetworkType(self) -> int: ...
    def getTimeSinceCreatedMillis(self) -> int: ...
    def hashCode(self) -> int: ...
    def toString(self) -> str: ...
    def writeToParcel(self, dest: android.os.Parcel, flags: int | java.jint | java.lang.Integer, /) -> None: ...

    class Builder(java.lang.Object):
        def __init__(self) -> None: ...
        def build(self) -> NetworkEvent: ...
        def setMetricsBundle(self, metricsBundle: android.os.Bundle, /) -> NetworkEvent.Builder: ...
        def setNetworkType(self, value: int | java.jint | java.lang.Integer, /) -> NetworkEvent.Builder: ...
        def setTimeSinceCreatedMillis(self, value: int | java.jlong | java.lang.Long, /) -> NetworkEvent.Builder: ...

class PlaybackErrorEvent(Event, android.os.Parcelable):
    CREATOR: typing.ClassVar[android.os.Parcelable.Creator[PlaybackErrorEvent]] = ...
    ERROR_AUDIO_TRACK_INIT_FAILED: typing.ClassVar[int] = ...
    ERROR_AUDIO_TRACK_OTHER: typing.ClassVar[int] = ...
    ERROR_AUDIO_TRACK_WRITE_FAILED: typing.ClassVar[int] = ...
    ERROR_DECODER_INIT_FAILED: typing.ClassVar[int] = ...
    ERROR_DECODING_FAILED: typing.ClassVar[int] = ...
    ERROR_DECODING_FORMAT_EXCEEDS_CAPABILITIES: typing.ClassVar[int] = ...
    ERROR_DECODING_FORMAT_UNSUPPORTED: typing.ClassVar[int] = ...
    ERROR_DECODING_OTHER: typing.ClassVar[int] = ...
    ERROR_DRM_CONTENT_ERROR: typing.ClassVar[int] = ...
    ERROR_DRM_DEVICE_REVOKED: typing.ClassVar[int] = ...
    ERROR_DRM_DISALLOWED_OPERATION: typing.ClassVar[int] = ...
    ERROR_DRM_LICENSE_ACQUISITION_FAILED: typing.ClassVar[int] = ...
    ERROR_DRM_OTHER: typing.ClassVar[int] = ...
    ERROR_DRM_PROVISIONING_FAILED: typing.ClassVar[int] = ...
    ERROR_DRM_SCHEME_UNSUPPORTED: typing.ClassVar[int] = ...
    ERROR_DRM_SYSTEM_ERROR: typing.ClassVar[int] = ...
    ERROR_IO_BAD_HTTP_STATUS: typing.ClassVar[int] = ...
    ERROR_IO_CONNECTION_CLOSED: typing.ClassVar[int] = ...
    ERROR_IO_CONNECTION_TIMEOUT: typing.ClassVar[int] = ...
    ERROR_IO_DNS_FAILED: typing.ClassVar[int] = ...
    ERROR_IO_FILE_NOT_FOUND: typing.ClassVar[int] = ...
    ERROR_IO_NETWORK_CONNECTION_FAILED: typing.ClassVar[int] = ...
    ERROR_IO_NETWORK_UNAVAILABLE: typing.ClassVar[int] = ...
    ERROR_IO_NO_PERMISSION: typing.ClassVar[int] = ...
    ERROR_IO_OTHER: typing.ClassVar[int] = ...
    ERROR_OTHER: typing.ClassVar[int] = ...
    ERROR_PARSING_CONTAINER_MALFORMED: typing.ClassVar[int] = ...
    ERROR_PARSING_CONTAINER_UNSUPPORTED: typing.ClassVar[int] = ...
    ERROR_PARSING_MANIFEST_MALFORMED: typing.ClassVar[int] = ...
    ERROR_PARSING_MANIFEST_UNSUPPORTED: typing.ClassVar[int] = ...
    ERROR_PARSING_OTHER: typing.ClassVar[int] = ...
    ERROR_PLAYER_BEHIND_LIVE_WINDOW: typing.ClassVar[int] = ...
    ERROR_PLAYER_OTHER: typing.ClassVar[int] = ...
    ERROR_PLAYER_REMOTE: typing.ClassVar[int] = ...
    ERROR_RUNTIME: typing.ClassVar[int] = ...
    ERROR_UNKNOWN: typing.ClassVar[int] = ...
    def describeContents(self) -> int: ...
    def equals(self, o: java.lang.Object | int | bool | float | str, /) -> bool: ...
    def getErrorCode(self) -> int: ...
    def getMetricsBundle(self) -> android.os.Bundle: ...
    def getSubErrorCode(self) -> int: ...
    def getTimeSinceCreatedMillis(self) -> int: ...
    def hashCode(self) -> int: ...
    def toString(self) -> str: ...
    def writeToParcel(self, dest: android.os.Parcel, flags: int | java.jint | java.lang.Integer, /) -> None: ...

    class Builder(java.lang.Object):
        def __init__(self) -> None: ...
        def build(self) -> PlaybackErrorEvent: ...
        def setErrorCode(self, value: int | java.jint | java.lang.Integer, /) -> PlaybackErrorEvent.Builder: ...
        def setException(self, value: java.lang.Exception, /) -> PlaybackErrorEvent.Builder: ...
        def setMetricsBundle(self, metricsBundle: android.os.Bundle, /) -> PlaybackErrorEvent.Builder: ...
        def setSubErrorCode(self, value: int | java.jint | java.lang.Integer, /) -> PlaybackErrorEvent.Builder: ...
        def setTimeSinceCreatedMillis(self, value: int | java.jlong | java.lang.Long, /) -> PlaybackErrorEvent.Builder: ...

class PlaybackMetrics(android.os.Parcelable):
    CONTENT_TYPE_AD: typing.ClassVar[int] = ...
    CONTENT_TYPE_MAIN: typing.ClassVar[int] = ...
    CONTENT_TYPE_OTHER: typing.ClassVar[int] = ...
    CONTENT_TYPE_UNKNOWN: typing.ClassVar[int] = ...
    CREATOR: typing.ClassVar[android.os.Parcelable.Creator[PlaybackMetrics]] = ...
    DRM_TYPE_CLEARKEY: typing.ClassVar[int] = ...
    DRM_TYPE_NONE: typing.ClassVar[int] = ...
    DRM_TYPE_OTHER: typing.ClassVar[int] = ...
    DRM_TYPE_PLAY_READY: typing.ClassVar[int] = ...
    DRM_TYPE_WIDEVINE_L1: typing.ClassVar[int] = ...
    DRM_TYPE_WIDEVINE_L3: typing.ClassVar[int] = ...
    DRM_TYPE_WV_L3_FALLBACK: typing.ClassVar[int] = ...
    PLAYBACK_TYPE_LIVE: typing.ClassVar[int] = ...
    PLAYBACK_TYPE_OTHER: typing.ClassVar[int] = ...
    PLAYBACK_TYPE_UNKNOWN: typing.ClassVar[int] = ...
    PLAYBACK_TYPE_VOD: typing.ClassVar[int] = ...
    STREAM_SOURCE_DEVICE: typing.ClassVar[int] = ...
    STREAM_SOURCE_MIXED: typing.ClassVar[int] = ...
    STREAM_SOURCE_NETWORK: typing.ClassVar[int] = ...
    STREAM_SOURCE_UNKNOWN: typing.ClassVar[int] = ...
    STREAM_TYPE_DASH: typing.ClassVar[int] = ...
    STREAM_TYPE_HLS: typing.ClassVar[int] = ...
    STREAM_TYPE_OTHER: typing.ClassVar[int] = ...
    STREAM_TYPE_PROGRESSIVE: typing.ClassVar[int] = ...
    STREAM_TYPE_SS: typing.ClassVar[int] = ...
    STREAM_TYPE_UNKNOWN: typing.ClassVar[int] = ...
    def describeContents(self) -> int: ...
    def equals(self, o: java.lang.Object | int | bool | float | str, /) -> bool: ...
    def getAudioUnderrunCount(self) -> int: ...
    def getContentType(self) -> int: ...
    def getDrmSessionId(self) -> java.chaquopy.JavaArrayJByte: ...
    def getDrmType(self) -> int: ...
    def getExperimentIds(self) -> java.chaquopy.JavaArrayJLong: ...
    def getLocalBytesRead(self) -> int: ...
    def getMediaDurationMillis(self) -> int: ...
    def getMetricsBundle(self) -> android.os.Bundle: ...
    def getNetworkBytesRead(self) -> int: ...
    def getNetworkTransferDurationMillis(self) -> int: ...
    def getPlaybackType(self) -> int: ...
    def getPlayerName(self) -> str | None: ...
    def getPlayerVersion(self) -> str | None: ...
    def getStreamSource(self) -> int: ...
    def getStreamType(self) -> int: ...
    def getVideoFramesDropped(self) -> int: ...
    def getVideoFramesPlayed(self) -> int: ...
    def hashCode(self) -> int: ...
    def toString(self) -> str: ...
    def writeToParcel(self, dest: android.os.Parcel, flags: int | java.jint | java.lang.Integer, /) -> None: ...

    class Builder(java.lang.Object):
        def __init__(self) -> None: ...
        def addExperimentId(self, value: int | java.jlong | java.lang.Long, /) -> PlaybackMetrics.Builder: ...
        def build(self) -> PlaybackMetrics: ...
        def setAudioUnderrunCount(self, value: int | java.jint | java.lang.Integer, /) -> PlaybackMetrics.Builder: ...
        def setContentType(self, value: int | java.jint | java.lang.Integer, /) -> PlaybackMetrics.Builder: ...
        def setDrmSessionId(self, drmSessionId: java.chaquopy.JavaArrayJByte, /) -> PlaybackMetrics.Builder: ...
        def setDrmType(self, value: int | java.jint | java.lang.Integer, /) -> PlaybackMetrics.Builder: ...
        def setLocalBytesRead(self, value: int | java.jlong | java.lang.Long, /) -> PlaybackMetrics.Builder: ...
        def setMediaDurationMillis(self, value: int | java.jlong | java.lang.Long, /) -> PlaybackMetrics.Builder: ...
        def setMetricsBundle(self, metricsBundle: android.os.Bundle, /) -> PlaybackMetrics.Builder: ...
        def setNetworkBytesRead(self, value: int | java.jlong | java.lang.Long, /) -> PlaybackMetrics.Builder: ...
        def setNetworkTransferDurationMillis(self, value: int | java.jlong | java.lang.Long, /) -> PlaybackMetrics.Builder: ...
        def setPlaybackType(self, value: int | java.jint | java.lang.Integer, /) -> PlaybackMetrics.Builder: ...
        def setPlayerName(self, value: str | java.lang.String, /) -> PlaybackMetrics.Builder: ...
        def setPlayerVersion(self, value: str | java.lang.String, /) -> PlaybackMetrics.Builder: ...
        def setStreamSource(self, value: int | java.jint | java.lang.Integer, /) -> PlaybackMetrics.Builder: ...
        def setStreamType(self, value: int | java.jint | java.lang.Integer, /) -> PlaybackMetrics.Builder: ...
        def setVideoFramesDropped(self, value: int | java.jint | java.lang.Integer, /) -> PlaybackMetrics.Builder: ...
        def setVideoFramesPlayed(self, value: int | java.jint | java.lang.Integer, /) -> PlaybackMetrics.Builder: ...

class PlaybackSession(java.lang.AutoCloseable):
    def close(self) -> None: ...
    def equals(self, o: java.lang.Object | int | bool | float | str, /) -> bool: ...
    def getSessionId(self) -> LogSessionId: ...
    def hashCode(self) -> int: ...
    def reportNetworkEvent(self, event: NetworkEvent, /) -> None: ...
    def reportPlaybackErrorEvent(self, event: PlaybackErrorEvent, /) -> None: ...
    def reportPlaybackMetrics(self, metrics: PlaybackMetrics, /) -> None: ...
    def reportPlaybackStateEvent(self, event: PlaybackStateEvent, /) -> None: ...
    def reportTrackChangeEvent(self, event: TrackChangeEvent, /) -> None: ...

class PlaybackStateEvent(Event, android.os.Parcelable):
    CREATOR: typing.ClassVar[android.os.Parcelable.Creator[PlaybackStateEvent]] = ...
    STATE_ABANDONED: typing.ClassVar[int] = ...
    STATE_BUFFERING: typing.ClassVar[int] = ...
    STATE_ENDED: typing.ClassVar[int] = ...
    STATE_FAILED: typing.ClassVar[int] = ...
    STATE_INTERRUPTED_BY_AD: typing.ClassVar[int] = ...
    STATE_JOINING_BACKGROUND: typing.ClassVar[int] = ...
    STATE_JOINING_FOREGROUND: typing.ClassVar[int] = ...
    STATE_NOT_STARTED: typing.ClassVar[int] = ...
    STATE_PAUSED: typing.ClassVar[int] = ...
    STATE_PAUSED_BUFFERING: typing.ClassVar[int] = ...
    STATE_PLAYING: typing.ClassVar[int] = ...
    STATE_SEEKING: typing.ClassVar[int] = ...
    STATE_STOPPED: typing.ClassVar[int] = ...
    STATE_SUPPRESSED: typing.ClassVar[int] = ...
    STATE_SUPPRESSED_BUFFERING: typing.ClassVar[int] = ...
    def describeContents(self) -> int: ...
    def equals(self, o: java.lang.Object | int | bool | float | str, /) -> bool: ...
    def getMetricsBundle(self) -> android.os.Bundle: ...
    def getState(self) -> int: ...
    def getTimeSinceCreatedMillis(self) -> int: ...
    def hashCode(self) -> int: ...
    def writeToParcel(self, dest: android.os.Parcel, flags: int | java.jint | java.lang.Integer, /) -> None: ...

    class Builder(java.lang.Object):
        def __init__(self) -> None: ...
        def build(self) -> PlaybackStateEvent: ...
        def setMetricsBundle(self, metricsBundle: android.os.Bundle, /) -> PlaybackStateEvent.Builder: ...
        def setState(self, value: int | java.jint | java.lang.Integer, /) -> PlaybackStateEvent.Builder: ...
        def setTimeSinceCreatedMillis(self, value: int | java.jlong | java.lang.Long, /) -> PlaybackStateEvent.Builder: ...

class RecordingSession(java.lang.AutoCloseable):
    def close(self) -> None: ...
    def equals(self, o: java.lang.Object | int | bool | float | str, /) -> bool: ...
    def getSessionId(self) -> LogSessionId: ...
    def hashCode(self) -> int: ...

class TrackChangeEvent(Event, android.os.Parcelable):
    CREATOR: typing.ClassVar[android.os.Parcelable.Creator[TrackChangeEvent]] = ...
    TRACK_CHANGE_REASON_ADAPTIVE: typing.ClassVar[int] = ...
    TRACK_CHANGE_REASON_INITIAL: typing.ClassVar[int] = ...
    TRACK_CHANGE_REASON_MANUAL: typing.ClassVar[int] = ...
    TRACK_CHANGE_REASON_OTHER: typing.ClassVar[int] = ...
    TRACK_CHANGE_REASON_UNKNOWN: typing.ClassVar[int] = ...
    TRACK_STATE_OFF: typing.ClassVar[int] = ...
    TRACK_STATE_ON: typing.ClassVar[int] = ...
    TRACK_TYPE_AUDIO: typing.ClassVar[int] = ...
    TRACK_TYPE_TEXT: typing.ClassVar[int] = ...
    TRACK_TYPE_VIDEO: typing.ClassVar[int] = ...
    def describeContents(self) -> int: ...
    def equals(self, o: java.lang.Object | int | bool | float | str, /) -> bool: ...
    def getAudioSampleRate(self) -> int: ...
    def getBitrate(self) -> int: ...
    def getChannelCount(self) -> int: ...
    def getCodecName(self) -> str | None: ...
    def getContainerMimeType(self) -> str | None: ...
    def getHeight(self) -> int: ...
    def getLanguage(self) -> str | None: ...
    def getLanguageRegion(self) -> str | None: ...
    def getMetricsBundle(self) -> android.os.Bundle: ...
    def getSampleMimeType(self) -> str | None: ...
    def getTimeSinceCreatedMillis(self) -> int: ...
    def getTrackChangeReason(self) -> int: ...
    def getTrackState(self) -> int: ...
    def getTrackType(self) -> int: ...
    def getVideoFrameRate(self) -> float: ...
    def getWidth(self) -> int: ...
    def hashCode(self) -> int: ...
    def toString(self) -> str: ...
    def writeToParcel(self, dest: android.os.Parcel, flags: int | java.jint | java.lang.Integer, /) -> None: ...

    class Builder(java.lang.Object):
        def __init__(self, type: int | java.jint | java.lang.Integer, /) -> None: ...
        def build(self) -> TrackChangeEvent: ...
        def setAudioSampleRate(self, value: int | java.jint | java.lang.Integer, /) -> TrackChangeEvent.Builder: ...
        def setBitrate(self, value: int | java.jint | java.lang.Integer, /) -> TrackChangeEvent.Builder: ...
        def setChannelCount(self, value: int | java.jint | java.lang.Integer, /) -> TrackChangeEvent.Builder: ...
        def setCodecName(self, value: str | java.lang.String, /) -> TrackChangeEvent.Builder: ...
        def setContainerMimeType(self, value: str | java.lang.String, /) -> TrackChangeEvent.Builder: ...
        def setHeight(self, value: int | java.jint | java.lang.Integer, /) -> TrackChangeEvent.Builder: ...
        def setLanguage(self, value: str | java.lang.String, /) -> TrackChangeEvent.Builder: ...
        def setLanguageRegion(self, value: str | java.lang.String, /) -> TrackChangeEvent.Builder: ...
        def setMetricsBundle(self, metricsBundle: android.os.Bundle, /) -> TrackChangeEvent.Builder: ...
        def setSampleMimeType(self, value: str | java.lang.String, /) -> TrackChangeEvent.Builder: ...
        def setTimeSinceCreatedMillis(self, value: int | java.jlong | java.lang.Long, /) -> TrackChangeEvent.Builder: ...
        def setTrackChangeReason(self, value: int | java.jint | java.lang.Integer, /) -> TrackChangeEvent.Builder: ...
        def setTrackState(self, value: int | java.jint | java.lang.Integer, /) -> TrackChangeEvent.Builder: ...
        def setVideoFrameRate(self, value: float | java.jfloat | java.lang.Float, /) -> TrackChangeEvent.Builder: ...
        def setWidth(self, value: int | java.jint | java.lang.Integer, /) -> TrackChangeEvent.Builder: ...

class TranscodingSession(java.lang.AutoCloseable):
    def close(self) -> None: ...
    def equals(self, o: java.lang.Object | int | bool | float | str, /) -> bool: ...
    def getSessionId(self) -> LogSessionId: ...
    def hashCode(self) -> int: ...
