import typing

import android.app
import android.content
import android.content.pm
import android.graphics
import android.graphics.drawable
import android.media
import android.media.tv.interactive
import android.net
import android.os
import android.provider
import android.util
import android.view
import java
import java.chaquopy
import java.lang
import java.util

class AdBuffer(android.os.Parcelable):
    CREATOR: typing.ClassVar[android.os.Parcelable.Creator[AdBuffer]] = ...
    def __init__(self, id: int | java.jint | java.lang.Integer, mimeType: str | java.lang.String, buffer: android.os.SharedMemory, offset: int | java.jint | java.lang.Integer, length: int | java.jint | java.lang.Integer, presentationTimeUs: int | java.jlong | java.lang.Long, flags: int | java.jint | java.lang.Integer, /) -> None: ...
    def describeContents(self) -> int: ...
    def getFlags(self) -> int: ...
    def getId(self) -> int: ...
    def getLength(self) -> int: ...
    def getMimeType(self) -> str: ...
    def getOffset(self) -> int: ...
    def getPresentationTimeUs(self) -> int: ...
    def getSharedMemory(self) -> android.os.SharedMemory: ...
    def writeToParcel(self, dest: android.os.Parcel, flags: int | java.jint | java.lang.Integer, /) -> None: ...

class AdRequest(android.os.Parcelable):
    CREATOR: typing.ClassVar[android.os.Parcelable.Creator[AdRequest]] = ...
    REQUEST_TYPE_START: typing.ClassVar[int] = ...
    REQUEST_TYPE_STOP: typing.ClassVar[int] = ...
    @typing.overload
    def __init__(self, id: int | java.jint | java.lang.Integer, requestType: int | java.jint | java.lang.Integer, uri: android.net.Uri, startTime: int | java.jlong | java.lang.Long, stopTime: int | java.jlong | java.lang.Long, echoInterval: int | java.jlong | java.lang.Long, metadata: android.os.Bundle, /) -> None: ...
    @typing.overload
    def __init__(self, id: int | java.jint | java.lang.Integer, requestType: int | java.jint | java.lang.Integer, fileDescriptor: android.os.ParcelFileDescriptor, startTime: int | java.jlong | java.lang.Long, stopTime: int | java.jlong | java.lang.Long, echoInterval: int | java.jlong | java.lang.Long, mediaFileType: str | java.lang.String, metadata: android.os.Bundle, /) -> None: ...
    def describeContents(self) -> int: ...
    def getEchoIntervalMillis(self) -> int: ...
    def getFileDescriptor(self) -> android.os.ParcelFileDescriptor | None: ...
    def getId(self) -> int: ...
    def getMediaFileType(self) -> str | None: ...
    def getMetadata(self) -> android.os.Bundle: ...
    def getRequestType(self) -> int: ...
    def getStartTimeMillis(self) -> int: ...
    def getStopTimeMillis(self) -> int: ...
    def getUri(self) -> android.net.Uri | None: ...
    def writeToParcel(self, dest: android.os.Parcel, flags: int | java.jint | java.lang.Integer, /) -> None: ...

class AdResponse(android.os.Parcelable):
    CREATOR: typing.ClassVar[android.os.Parcelable.Creator[AdResponse]] = ...
    RESPONSE_TYPE_BUFFERING: typing.ClassVar[int] = ...
    RESPONSE_TYPE_ERROR: typing.ClassVar[int] = ...
    RESPONSE_TYPE_FINISHED: typing.ClassVar[int] = ...
    RESPONSE_TYPE_PLAYING: typing.ClassVar[int] = ...
    RESPONSE_TYPE_STOPPED: typing.ClassVar[int] = ...
    def __init__(self, id: int | java.jint | java.lang.Integer, responseType: int | java.jint | java.lang.Integer, elapsedTime: int | java.jlong | java.lang.Long, /) -> None: ...
    def describeContents(self) -> int: ...
    def getElapsedTimeMillis(self) -> int: ...
    def getId(self) -> int: ...
    def getResponseType(self) -> int: ...
    def writeToParcel(self, dest: android.os.Parcel, flags: int | java.jint | java.lang.Integer, /) -> None: ...

class AitInfo(android.os.Parcelable):
    CREATOR: typing.ClassVar[android.os.Parcelable.Creator[AitInfo]] = ...
    def __init__(self, type: int | java.jint | java.lang.Integer, version: int | java.jint | java.lang.Integer, /) -> None: ...
    def describeContents(self) -> int: ...
    def getType(self) -> int: ...
    def getVersion(self) -> int: ...
    def toString(self) -> str: ...
    def writeToParcel(self, dest: android.os.Parcel, flags: int | java.jint | java.lang.Integer, /) -> None: ...

class BroadcastInfoRequest(android.os.Parcelable):
    CREATOR: typing.ClassVar[android.os.Parcelable.Creator[BroadcastInfoRequest]] = ...
    REQUEST_OPTION_AUTO_UPDATE: typing.ClassVar[int] = ...
    REQUEST_OPTION_ONESHOT: typing.ClassVar[int] = ...
    REQUEST_OPTION_ONEWAY: typing.ClassVar[int] = ...
    REQUEST_OPTION_REPEAT: typing.ClassVar[int] = ...
    def describeContents(self) -> int: ...
    def getOption(self) -> int: ...
    def getRequestId(self) -> int: ...
    def getType(self) -> int: ...
    def writeToParcel(self, dest: android.os.Parcel, flags: int | java.jint | java.lang.Integer, /) -> None: ...

class BroadcastInfoResponse(android.os.Parcelable):
    CREATOR: typing.ClassVar[android.os.Parcelable.Creator[BroadcastInfoResponse]] = ...
    RESPONSE_RESULT_CANCEL: typing.ClassVar[int] = ...
    RESPONSE_RESULT_ERROR: typing.ClassVar[int] = ...
    RESPONSE_RESULT_OK: typing.ClassVar[int] = ...
    def describeContents(self) -> int: ...
    def getRequestId(self) -> int: ...
    def getResponseResult(self) -> int: ...
    def getSequence(self) -> int: ...
    def getType(self) -> int: ...
    def writeToParcel(self, dest: android.os.Parcel, flags: int | java.jint | java.lang.Integer, /) -> None: ...

class CommandRequest(BroadcastInfoRequest, android.os.Parcelable):
    ARGUMENT_TYPE_JSON: typing.ClassVar[str] = ...
    ARGUMENT_TYPE_XML: typing.ClassVar[str] = ...
    CREATOR: typing.ClassVar[android.os.Parcelable.Creator[CommandRequest]] = ...
    def __init__(self, requestId: int | java.jint | java.lang.Integer, option: int | java.jint | java.lang.Integer, namespace: str | java.lang.String, name: str | java.lang.String, arguments: str | java.lang.String, argumentType: str | java.lang.String, /) -> None: ...
    def describeContents(self) -> int: ...
    def getArgumentType(self) -> str: ...
    def getArguments(self) -> str: ...
    def getName(self) -> str: ...
    def getNamespace(self) -> str: ...
    def writeToParcel(self, dest: android.os.Parcel, flags: int | java.jint | java.lang.Integer, /) -> None: ...

class CommandResponse(BroadcastInfoResponse, android.os.Parcelable):
    CREATOR: typing.ClassVar[android.os.Parcelable.Creator[CommandResponse]] = ...
    RESPONSE_TYPE_JSON: typing.ClassVar[str] = ...
    RESPONSE_TYPE_XML: typing.ClassVar[str] = ...
    def __init__(self, requestId: int | java.jint | java.lang.Integer, sequence: int | java.jint | java.lang.Integer, responseResult: int | java.jint | java.lang.Integer, response: str | java.lang.String, responseType: str | java.lang.String, /) -> None: ...
    def describeContents(self) -> int: ...
    def getResponse(self) -> str | None: ...
    def getResponseType(self) -> str: ...
    def writeToParcel(self, dest: android.os.Parcel, flags: int | java.jint | java.lang.Integer, /) -> None: ...

class DsmccRequest(BroadcastInfoRequest, android.os.Parcelable):
    CREATOR: typing.ClassVar[android.os.Parcelable.Creator[DsmccRequest]] = ...
    def __init__(self, requestId: int | java.jint | java.lang.Integer, option: int | java.jint | java.lang.Integer, uri: android.net.Uri, /) -> None: ...
    def describeContents(self) -> int: ...
    def getUri(self) -> android.net.Uri: ...
    def writeToParcel(self, dest: android.os.Parcel, flags: int | java.jint | java.lang.Integer, /) -> None: ...

class DsmccResponse(BroadcastInfoResponse, android.os.Parcelable):
    BIOP_MESSAGE_TYPE_DIRECTORY: typing.ClassVar[str] = ...
    BIOP_MESSAGE_TYPE_FILE: typing.ClassVar[str] = ...
    BIOP_MESSAGE_TYPE_SERVICE_GATEWAY: typing.ClassVar[str] = ...
    BIOP_MESSAGE_TYPE_STREAM: typing.ClassVar[str] = ...
    CREATOR: typing.ClassVar[android.os.Parcelable.Creator[DsmccResponse]] = ...
    @typing.overload
    def __init__(self, requestId: int | java.jint | java.lang.Integer, sequence: int | java.jint | java.lang.Integer, responseResult: int | java.jint | java.lang.Integer, file: android.os.ParcelFileDescriptor, /) -> None: ...
    @typing.overload
    def __init__(self, requestId: int | java.jint | java.lang.Integer, sequence: int | java.jint | java.lang.Integer, responseResult: int | java.jint | java.lang.Integer, isServiceGateway: bool | java.jboolean | java.lang.Boolean, childList: java.util.List[java.lang.String], /) -> None: ...
    @typing.overload
    def __init__(self, requestId: int | java.jint | java.lang.Integer, sequence: int | java.jint | java.lang.Integer, responseResult: int | java.jint | java.lang.Integer, eventIds: java.chaquopy.JavaArrayJInt, eventNames: java.chaquopy.JavaArray[java.lang.String], /) -> None: ...
    def describeContents(self) -> int: ...
    def getBiopMessageType(self) -> str: ...
    def getChildList(self) -> java.util.List[java.lang.String]: ...
    def getFile(self) -> android.os.ParcelFileDescriptor: ...
    def getStreamEventIds(self) -> java.chaquopy.JavaArrayJInt: ...
    def getStreamEventNames(self) -> java.chaquopy.JavaArray[java.lang.String]: ...
    def writeToParcel(self, dest: android.os.Parcel, flags: int | java.jint | java.lang.Integer, /) -> None: ...

class PesRequest(BroadcastInfoRequest, android.os.Parcelable):
    CREATOR: typing.ClassVar[android.os.Parcelable.Creator[PesRequest]] = ...
    def __init__(self, requestId: int | java.jint | java.lang.Integer, option: int | java.jint | java.lang.Integer, tsPid: int | java.jint | java.lang.Integer, streamId: int | java.jint | java.lang.Integer, /) -> None: ...
    def describeContents(self) -> int: ...
    def getStreamId(self) -> int: ...
    def getTsPid(self) -> int: ...
    def writeToParcel(self, dest: android.os.Parcel, flags: int | java.jint | java.lang.Integer, /) -> None: ...

class PesResponse(BroadcastInfoResponse, android.os.Parcelable):
    CREATOR: typing.ClassVar[android.os.Parcelable.Creator[PesResponse]] = ...
    def __init__(self, requestId: int | java.jint | java.lang.Integer, sequence: int | java.jint | java.lang.Integer, responseResult: int | java.jint | java.lang.Integer, sharedFilterToken: str | java.lang.String, /) -> None: ...
    def describeContents(self) -> int: ...
    def getSharedFilterToken(self) -> str | None: ...
    def writeToParcel(self, dest: android.os.Parcel, flags: int | java.jint | java.lang.Integer, /) -> None: ...

class SectionRequest(BroadcastInfoRequest, android.os.Parcelable):
    CREATOR: typing.ClassVar[android.os.Parcelable.Creator[SectionRequest]] = ...
    def __init__(self, requestId: int | java.jint | java.lang.Integer, option: int | java.jint | java.lang.Integer, tsPid: int | java.jint | java.lang.Integer, tableId: int | java.jint | java.lang.Integer, version: int | java.jint | java.lang.Integer, /) -> None: ...
    def describeContents(self) -> int: ...
    def getTableId(self) -> int: ...
    def getTsPid(self) -> int: ...
    def getVersion(self) -> int: ...
    def writeToParcel(self, dest: android.os.Parcel, flags: int | java.jint | java.lang.Integer, /) -> None: ...

class SectionResponse(BroadcastInfoResponse, android.os.Parcelable):
    CREATOR: typing.ClassVar[android.os.Parcelable.Creator[SectionResponse]] = ...
    def __init__(self, requestId: int | java.jint | java.lang.Integer, sequence: int | java.jint | java.lang.Integer, responseResult: int | java.jint | java.lang.Integer, sessionId: int | java.jint | java.lang.Integer, version: int | java.jint | java.lang.Integer, sessionData: android.os.Bundle, /) -> None: ...
    def describeContents(self) -> int: ...
    def getSessionData(self) -> android.os.Bundle: ...
    def getSessionId(self) -> int: ...
    def getVersion(self) -> int: ...
    def writeToParcel(self, dest: android.os.Parcel, flags: int | java.jint | java.lang.Integer, /) -> None: ...

class SignalingDataInfo(android.os.Parcelable):
    CONTENT_ENCODING_BASE64: typing.ClassVar[str] = ...
    CONTENT_ENCODING_UTF_8: typing.ClassVar[str] = ...
    CREATOR: typing.ClassVar[android.os.Parcelable.Creator[SignalingDataInfo]] = ...
    LLS_NO_GROUP_ID: typing.ClassVar[int] = ...
    @typing.overload
    def __init__(self, table: str | java.lang.String, signalingDataType: str | java.lang.String, version: int | java.jint | java.lang.Integer, group: int | java.jint | java.lang.Integer, /) -> None: ...
    @typing.overload
    def __init__(self, table: str | java.lang.String, signalingDataType: str | java.lang.String, version: int | java.jint | java.lang.Integer, group: int | java.jint | java.lang.Integer, encoding: str | java.lang.String, /) -> None: ...
    def describeContents(self) -> int: ...
    def getEncoding(self) -> str: ...
    def getGroup(self) -> int: ...
    def getSignalingDataType(self) -> str: ...
    def getTable(self) -> str: ...
    def getVersion(self) -> int: ...
    def writeToParcel(self, dest: android.os.Parcel, flags: int | java.jint | java.lang.Integer, /) -> None: ...

class SignalingDataRequest(BroadcastInfoRequest, android.os.Parcelable):
    CREATOR: typing.ClassVar[android.os.Parcelable.Creator[SignalingDataRequest]] = ...
    SIGNALING_DATA_NO_GROUP_ID: typing.ClassVar[int] = ...
    SIGNALING_METADATA_AEAT: typing.ClassVar[str] = ...
    SIGNALING_METADATA_AEI: typing.ClassVar[str] = ...
    SIGNALING_METADATA_APD: typing.ClassVar[str] = ...
    SIGNALING_METADATA_ASD: typing.ClassVar[str] = ...
    SIGNALING_METADATA_ASPD: typing.ClassVar[str] = ...
    SIGNALING_METADATA_CAD: typing.ClassVar[str] = ...
    SIGNALING_METADATA_CDT: typing.ClassVar[str] = ...
    SIGNALING_METADATA_CRIT: typing.ClassVar[str] = ...
    SIGNALING_METADATA_DCIT: typing.ClassVar[str] = ...
    SIGNALING_METADATA_DWD: typing.ClassVar[str] = ...
    SIGNALING_METADATA_EMSG: typing.ClassVar[str] = ...
    SIGNALING_METADATA_EVTI: typing.ClassVar[str] = ...
    SIGNALING_METADATA_HELD: typing.ClassVar[str] = ...
    SIGNALING_METADATA_IED: typing.ClassVar[str] = ...
    SIGNALING_METADATA_MPD: typing.ClassVar[str] = ...
    SIGNALING_METADATA_MPIT: typing.ClassVar[str] = ...
    SIGNALING_METADATA_MPT: typing.ClassVar[str] = ...
    SIGNALING_METADATA_OSN: typing.ClassVar[str] = ...
    SIGNALING_METADATA_PAT: typing.ClassVar[str] = ...
    SIGNALING_METADATA_RDT: typing.ClassVar[str] = ...
    SIGNALING_METADATA_RRT: typing.ClassVar[str] = ...
    SIGNALING_METADATA_RSAT: typing.ClassVar[str] = ...
    SIGNALING_METADATA_SLT: typing.ClassVar[str] = ...
    SIGNALING_METADATA_SMT: typing.ClassVar[str] = ...
    SIGNALING_METADATA_SSD: typing.ClassVar[str] = ...
    SIGNALING_METADATA_STSID: typing.ClassVar[str] = ...
    SIGNALING_METADATA_STT: typing.ClassVar[str] = ...
    SIGNALING_METADATA_USBD: typing.ClassVar[str] = ...
    SIGNALING_METADATA_USD: typing.ClassVar[str] = ...
    SIGNALING_METADATA_VSPD: typing.ClassVar[str] = ...
    def __init__(self, requestId: int | java.jint | java.lang.Integer, option: int | java.jint | java.lang.Integer, group: int | java.jint | java.lang.Integer, signalingDataTypes: java.util.List[java.lang.String], /) -> None: ...
    def describeContents(self) -> int: ...
    def getGroup(self) -> int: ...
    def getSignalingDataTypes(self) -> java.util.List[java.lang.String]: ...
    def writeToParcel(self, dest: android.os.Parcel, flags: int | java.jint | java.lang.Integer, /) -> None: ...

class SignalingDataResponse(BroadcastInfoResponse, android.os.Parcelable):
    CREATOR: typing.ClassVar[android.os.Parcelable.Creator[SignalingDataResponse]] = ...
    def __init__(self, requestId: int | java.jint | java.lang.Integer, sequence: int | java.jint | java.lang.Integer, responseResult: int | java.jint | java.lang.Integer, signalingDataTypes: java.util.List[java.lang.String], signalingDataInfoList: java.util.List[SignalingDataInfo], /) -> None: ...
    def describeContents(self) -> int: ...
    def getSignalingDataInfoList(self) -> java.util.List[SignalingDataInfo]: ...
    def getSignalingDataTypes(self) -> java.util.List[java.lang.String]: ...
    def writeToParcel(self, dest: android.os.Parcel, flags: int | java.jint | java.lang.Integer, /) -> None: ...

class StreamEventRequest(BroadcastInfoRequest, android.os.Parcelable):
    CREATOR: typing.ClassVar[android.os.Parcelable.Creator[StreamEventRequest]] = ...
    def __init__(self, requestId: int | java.jint | java.lang.Integer, option: int | java.jint | java.lang.Integer, targetUri: android.net.Uri, eventName: str | java.lang.String, /) -> None: ...
    def describeContents(self) -> int: ...
    def getEventName(self) -> str: ...
    def getTargetUri(self) -> android.net.Uri: ...
    def writeToParcel(self, dest: android.os.Parcel, flags: int | java.jint | java.lang.Integer, /) -> None: ...

class StreamEventResponse(BroadcastInfoResponse, android.os.Parcelable):
    CREATOR: typing.ClassVar[android.os.Parcelable.Creator[StreamEventResponse]] = ...
    def __init__(self, requestId: int | java.jint | java.lang.Integer, sequence: int | java.jint | java.lang.Integer, responseResult: int | java.jint | java.lang.Integer, eventId: int | java.jint | java.lang.Integer, nptMillis: int | java.jlong | java.lang.Long, data: java.chaquopy.JavaArrayJByte, /) -> None: ...
    def describeContents(self) -> int: ...
    def getData(self) -> java.chaquopy.JavaArrayJByte | None: ...
    def getEventId(self) -> int: ...
    def getNptMillis(self) -> int: ...
    def writeToParcel(self, dest: android.os.Parcel, flags: int | java.jint | java.lang.Integer, /) -> None: ...

class TableRequest(BroadcastInfoRequest, android.os.Parcelable):
    CREATOR: typing.ClassVar[android.os.Parcelable.Creator[TableRequest]] = ...
    TABLE_NAME_BAT: typing.ClassVar[int] = ...
    TABLE_NAME_CAT: typing.ClassVar[int] = ...
    TABLE_NAME_EIT: typing.ClassVar[int] = ...
    TABLE_NAME_NIT: typing.ClassVar[int] = ...
    TABLE_NAME_PAT: typing.ClassVar[int] = ...
    TABLE_NAME_PMT: typing.ClassVar[int] = ...
    TABLE_NAME_SDT: typing.ClassVar[int] = ...
    TABLE_NAME_SIT: typing.ClassVar[int] = ...
    TABLE_NAME_TDT: typing.ClassVar[int] = ...
    TABLE_NAME_TOT: typing.ClassVar[int] = ...
    def __init__(self, requestId: int | java.jint | java.lang.Integer, option: int | java.jint | java.lang.Integer, tableId: int | java.jint | java.lang.Integer, tableName: int | java.jint | java.lang.Integer, version: int | java.jint | java.lang.Integer, /) -> None: ...
    def describeContents(self) -> int: ...
    def getTableId(self) -> int: ...
    def getTableName(self) -> int: ...
    def getVersion(self) -> int: ...
    def writeToParcel(self, dest: android.os.Parcel, flags: int | java.jint | java.lang.Integer, /) -> None: ...

class TableResponse(BroadcastInfoResponse, android.os.Parcelable):
    CREATOR: typing.ClassVar[android.os.Parcelable.Creator[TableResponse]] = ...
    def __init__(self, requestId: int | java.jint | java.lang.Integer, sequence: int | java.jint | java.lang.Integer, responseResult: int | java.jint | java.lang.Integer, tableUri: android.net.Uri, version: int | java.jint | java.lang.Integer, size: int | java.jint | java.lang.Integer, /) -> None: ...
    def describeContents(self) -> int: ...
    def getSize(self) -> int: ...
    def getTableByteArray(self) -> java.chaquopy.JavaArrayJByte | None: ...
    def getTableSharedMemory(self) -> android.os.SharedMemory | None: ...
    def getTableUri(self) -> android.net.Uri | None: ...
    def getVersion(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, requestId: int | java.jint | java.lang.Integer, sequence: int | java.jint | java.lang.Integer, responseResult: int | java.jint | java.lang.Integer, version: int | java.jint | java.lang.Integer, size: int | java.jint | java.lang.Integer, /) -> None: ...
        def build(self) -> TableResponse: ...
        def setTableByteArray(self, bytes: java.chaquopy.JavaArrayJByte, /) -> TableResponse.Builder: ...
        def setTableSharedMemory(self, sharedMemory: android.os.SharedMemory, /) -> TableResponse.Builder: ...
        def setTableUri(self, uri: android.net.Uri, /) -> TableResponse.Builder: ...

class TimelineRequest(BroadcastInfoRequest, android.os.Parcelable):
    CREATOR: typing.ClassVar[android.os.Parcelable.Creator[TimelineRequest]] = ...
    @typing.overload
    def __init__(self, requestId: int | java.jint | java.lang.Integer, option: int | java.jint | java.lang.Integer, intervalMillis: int | java.jint | java.lang.Integer, /) -> None: ...
    @typing.overload
    def __init__(self, requestId: int | java.jint | java.lang.Integer, option: int | java.jint | java.lang.Integer, intervalMillis: int | java.jint | java.lang.Integer, selector: str | java.lang.String, /) -> None: ...
    def describeContents(self) -> int: ...
    def getIntervalMillis(self) -> int: ...
    def getSelector(self) -> str | None: ...
    def writeToParcel(self, dest: android.os.Parcel, flags: int | java.jint | java.lang.Integer, /) -> None: ...

class TimelineResponse(BroadcastInfoResponse, android.os.Parcelable):
    CREATOR: typing.ClassVar[android.os.Parcelable.Creator[TimelineResponse]] = ...
    def __init__(self, requestId: int | java.jint | java.lang.Integer, sequence: int | java.jint | java.lang.Integer, responseResult: int | java.jint | java.lang.Integer, selector: str | java.lang.String, unitsPerTick: int | java.jint | java.lang.Integer, unitsPerSecond: int | java.jint | java.lang.Integer, wallClock: int | java.jlong | java.lang.Long, ticks: int | java.jlong | java.lang.Long, /) -> None: ...
    def describeContents(self) -> int: ...
    def getSelector(self) -> android.net.Uri | None: ...
    def getTicks(self) -> int: ...
    def getUnitsPerSecond(self) -> int: ...
    def getUnitsPerTick(self) -> int: ...
    def getWallClock(self) -> int: ...
    def writeToParcel(self, dest: android.os.Parcel, flags: int | java.jint | java.lang.Integer, /) -> None: ...

class TsRequest(BroadcastInfoRequest, android.os.Parcelable):
    CREATOR: typing.ClassVar[android.os.Parcelable.Creator[TsRequest]] = ...
    def __init__(self, requestId: int | java.jint | java.lang.Integer, option: int | java.jint | java.lang.Integer, tsPid: int | java.jint | java.lang.Integer, /) -> None: ...
    def describeContents(self) -> int: ...
    def getTsPid(self) -> int: ...
    def writeToParcel(self, dest: android.os.Parcel, flags: int | java.jint | java.lang.Integer, /) -> None: ...

class TsResponse(BroadcastInfoResponse, android.os.Parcelable):
    CREATOR: typing.ClassVar[android.os.Parcelable.Creator[TsResponse]] = ...
    def __init__(self, requestId: int | java.jint | java.lang.Integer, sequence: int | java.jint | java.lang.Integer, responseResult: int | java.jint | java.lang.Integer, sharedFilterToken: str | java.lang.String, /) -> None: ...
    def describeContents(self) -> int: ...
    def getSharedFilterToken(self) -> str | None: ...
    def writeToParcel(self, dest: android.os.Parcel, flags: int | java.jint | java.lang.Integer, /) -> None: ...

class TvContentRating(java.lang.Object):
    UNRATED: typing.ClassVar[TvContentRating] = ...
    def contains(self, rating: TvContentRating, /) -> bool: ...
    @staticmethod
    def createRating(domain: str | java.lang.String, ratingSystem: str | java.lang.String, rating: str | java.lang.String, /, *subRatings: java.lang.String) -> TvContentRating: ...
    def equals(self, obj: java.lang.Object | int | bool | float | str, /) -> bool: ...
    def flattenToString(self) -> str: ...
    def getDomain(self) -> str: ...
    def getMainRating(self) -> str: ...
    def getRatingSystem(self) -> str: ...
    def getSubRatings(self) -> java.util.List[java.lang.String]: ...
    def hashCode(self) -> int: ...
    @staticmethod
    def unflattenFromString(ratingString: str | java.lang.String, /) -> TvContentRating: ...

class TvContract(java.lang.Object):
    ACTION_INITIALIZE_PROGRAMS: typing.ClassVar[str] = ...
    ACTION_PREVIEW_PROGRAM_ADDED_TO_WATCH_NEXT: typing.ClassVar[str] = ...
    ACTION_PREVIEW_PROGRAM_BROWSABLE_DISABLED: typing.ClassVar[str] = ...
    ACTION_REQUEST_CHANNEL_BROWSABLE: typing.ClassVar[str] = ...
    ACTION_WATCH_NEXT_PROGRAM_BROWSABLE_DISABLED: typing.ClassVar[str] = ...
    AUTHORITY: typing.ClassVar[str] = ...
    EXTRA_CHANNEL_ID: typing.ClassVar[str] = ...
    EXTRA_PREVIEW_PROGRAM_ID: typing.ClassVar[str] = ...
    EXTRA_WATCH_NEXT_PROGRAM_ID: typing.ClassVar[str] = ...
    @typing.overload
    @staticmethod
    def buildChannelLogoUri(channelId: int | java.jlong | java.lang.Long, /) -> android.net.Uri: ...
    @typing.overload
    @staticmethod
    def buildChannelLogoUri(channelUri: android.net.Uri, /) -> android.net.Uri: ...
    @staticmethod
    def buildChannelUri(channelId: int | java.jlong | java.lang.Long, /) -> android.net.Uri: ...
    @staticmethod
    def buildChannelUriForPassthroughInput(inputId: str | java.lang.String, /) -> android.net.Uri: ...
    @staticmethod
    def buildChannelsUriForInput(inputId: str | java.lang.String, /) -> android.net.Uri: ...
    @staticmethod
    def buildInputId(name: android.content.ComponentName, /) -> str: ...
    @staticmethod
    def buildPreviewProgramUri(previewProgramId: int | java.jlong | java.lang.Long, /) -> android.net.Uri: ...
    @typing.overload
    @staticmethod
    def buildPreviewProgramsUriForChannel(channelId: int | java.jlong | java.lang.Long, /) -> android.net.Uri: ...
    @typing.overload
    @staticmethod
    def buildPreviewProgramsUriForChannel(channelUri: android.net.Uri, /) -> android.net.Uri: ...
    @staticmethod
    def buildProgramUri(programId: int | java.jlong | java.lang.Long, /) -> android.net.Uri: ...
    @typing.overload
    @staticmethod
    def buildProgramsUriForChannel(channelId: int | java.jlong | java.lang.Long, /) -> android.net.Uri: ...
    @typing.overload
    @staticmethod
    def buildProgramsUriForChannel(channelUri: android.net.Uri, /) -> android.net.Uri: ...
    @typing.overload
    @staticmethod
    def buildProgramsUriForChannel(channelId: int | java.jlong | java.lang.Long, startTime: int | java.jlong | java.lang.Long, endTime: int | java.jlong | java.lang.Long, /) -> android.net.Uri: ...
    @typing.overload
    @staticmethod
    def buildProgramsUriForChannel(channelUri: android.net.Uri, startTime: int | java.jlong | java.lang.Long, endTime: int | java.jlong | java.lang.Long, /) -> android.net.Uri: ...
    @staticmethod
    def buildRecordedProgramUri(recordedProgramId: int | java.jlong | java.lang.Long, /) -> android.net.Uri: ...
    @staticmethod
    def buildWatchNextProgramUri(watchNextProgramId: int | java.jlong | java.lang.Long, /) -> android.net.Uri: ...
    @staticmethod
    def isChannelUri(uri: android.net.Uri, /) -> bool: ...
    @staticmethod
    def isChannelUriForPassthroughInput(uri: android.net.Uri, /) -> bool: ...
    @staticmethod
    def isChannelUriForTunerInput(uri: android.net.Uri, /) -> bool: ...
    @staticmethod
    def isProgramUri(uri: android.net.Uri, /) -> bool: ...
    @staticmethod
    def isRecordedProgramUri(uri: android.net.Uri, /) -> bool: ...
    @staticmethod
    def requestChannelBrowsable(context: android.content.Context, channelId: int | java.jlong | java.lang.Long, /) -> None: ...

    class WatchNextPrograms(TvContract.BaseTvColumns):
        ASPECT_RATIO_16_9: typing.ClassVar[int] = ...
        ASPECT_RATIO_1_1: typing.ClassVar[int] = ...
        ASPECT_RATIO_2_3: typing.ClassVar[int] = ...
        ASPECT_RATIO_3_2: typing.ClassVar[int] = ...
        ASPECT_RATIO_4_3: typing.ClassVar[int] = ...
        AVAILABILITY_AVAILABLE: typing.ClassVar[int] = ...
        AVAILABILITY_FREE_WITH_SUBSCRIPTION: typing.ClassVar[int] = ...
        AVAILABILITY_PAID_CONTENT: typing.ClassVar[int] = ...
        COLUMN_AUDIO_LANGUAGE: typing.ClassVar[str] = ...
        COLUMN_AUTHOR: typing.ClassVar[str] = ...
        COLUMN_AVAILABILITY: typing.ClassVar[str] = ...
        COLUMN_BROWSABLE: typing.ClassVar[str] = ...
        COLUMN_CANONICAL_GENRE: typing.ClassVar[str] = ...
        COLUMN_CONTENT_ID: typing.ClassVar[str] = ...
        COLUMN_CONTENT_RATING: typing.ClassVar[str] = ...
        COLUMN_DURATION_MILLIS: typing.ClassVar[str] = ...
        COLUMN_END_TIME_UTC_MILLIS: typing.ClassVar[str] = ...
        COLUMN_EPISODE_DISPLAY_NUMBER: typing.ClassVar[str] = ...
        COLUMN_EPISODE_TITLE: typing.ClassVar[str] = ...
        COLUMN_INTENT_URI: typing.ClassVar[str] = ...
        COLUMN_INTERACTION_COUNT: typing.ClassVar[str] = ...
        COLUMN_INTERACTION_TYPE: typing.ClassVar[str] = ...
        COLUMN_INTERNAL_PROVIDER_DATA: typing.ClassVar[str] = ...
        COLUMN_INTERNAL_PROVIDER_FLAG1: typing.ClassVar[str] = ...
        COLUMN_INTERNAL_PROVIDER_FLAG2: typing.ClassVar[str] = ...
        COLUMN_INTERNAL_PROVIDER_FLAG3: typing.ClassVar[str] = ...
        COLUMN_INTERNAL_PROVIDER_FLAG4: typing.ClassVar[str] = ...
        COLUMN_INTERNAL_PROVIDER_ID: typing.ClassVar[str] = ...
        COLUMN_ITEM_COUNT: typing.ClassVar[str] = ...
        COLUMN_LAST_ENGAGEMENT_TIME_UTC_MILLIS: typing.ClassVar[str] = ...
        COLUMN_LAST_PLAYBACK_POSITION_MILLIS: typing.ClassVar[str] = ...
        COLUMN_LIVE: typing.ClassVar[str] = ...
        COLUMN_LOGO_URI: typing.ClassVar[str] = ...
        COLUMN_LONG_DESCRIPTION: typing.ClassVar[str] = ...
        COLUMN_OFFER_PRICE: typing.ClassVar[str] = ...
        COLUMN_POSTER_ART_ASPECT_RATIO: typing.ClassVar[str] = ...
        COLUMN_POSTER_ART_URI: typing.ClassVar[str] = ...
        COLUMN_PREVIEW_VIDEO_URI: typing.ClassVar[str] = ...
        COLUMN_RELEASE_DATE: typing.ClassVar[str] = ...
        COLUMN_REVIEW_RATING: typing.ClassVar[str] = ...
        COLUMN_REVIEW_RATING_STYLE: typing.ClassVar[str] = ...
        COLUMN_SEARCHABLE: typing.ClassVar[str] = ...
        COLUMN_SEASON_DISPLAY_NUMBER: typing.ClassVar[str] = ...
        COLUMN_SEASON_TITLE: typing.ClassVar[str] = ...
        COLUMN_SERIES_ID: typing.ClassVar[str] = ...
        COLUMN_SHORT_DESCRIPTION: typing.ClassVar[str] = ...
        COLUMN_SPLIT_ID: typing.ClassVar[str] = ...
        COLUMN_STARTING_PRICE: typing.ClassVar[str] = ...
        COLUMN_START_TIME_UTC_MILLIS: typing.ClassVar[str] = ...
        COLUMN_THUMBNAIL_ASPECT_RATIO: typing.ClassVar[str] = ...
        COLUMN_THUMBNAIL_URI: typing.ClassVar[str] = ...
        COLUMN_TITLE: typing.ClassVar[str] = ...
        COLUMN_TRANSIENT: typing.ClassVar[str] = ...
        COLUMN_TYPE: typing.ClassVar[str] = ...
        COLUMN_VERSION_NUMBER: typing.ClassVar[str] = ...
        COLUMN_VIDEO_HEIGHT: typing.ClassVar[str] = ...
        COLUMN_VIDEO_WIDTH: typing.ClassVar[str] = ...
        COLUMN_WATCH_NEXT_TYPE: typing.ClassVar[str] = ...
        CONTENT_ITEM_TYPE: typing.ClassVar[str] = ...
        CONTENT_TYPE: typing.ClassVar[str] = ...
        CONTENT_URI: typing.ClassVar[android.net.Uri] = ...
        INTERACTION_TYPE_FANS: typing.ClassVar[int] = ...
        INTERACTION_TYPE_FOLLOWERS: typing.ClassVar[int] = ...
        INTERACTION_TYPE_LIKES: typing.ClassVar[int] = ...
        INTERACTION_TYPE_LISTENS: typing.ClassVar[int] = ...
        INTERACTION_TYPE_THUMBS: typing.ClassVar[int] = ...
        INTERACTION_TYPE_VIEWERS: typing.ClassVar[int] = ...
        INTERACTION_TYPE_VIEWS: typing.ClassVar[int] = ...
        REVIEW_RATING_STYLE_PERCENTAGE: typing.ClassVar[int] = ...
        REVIEW_RATING_STYLE_STARS: typing.ClassVar[int] = ...
        REVIEW_RATING_STYLE_THUMBS_UP_DOWN: typing.ClassVar[int] = ...
        TYPE_ALBUM: typing.ClassVar[int] = ...
        TYPE_ARTIST: typing.ClassVar[int] = ...
        TYPE_CHANNEL: typing.ClassVar[int] = ...
        TYPE_CLIP: typing.ClassVar[int] = ...
        TYPE_EVENT: typing.ClassVar[int] = ...
        TYPE_MOVIE: typing.ClassVar[int] = ...
        TYPE_PLAYLIST: typing.ClassVar[int] = ...
        TYPE_STATION: typing.ClassVar[int] = ...
        TYPE_TRACK: typing.ClassVar[int] = ...
        TYPE_TV_EPISODE: typing.ClassVar[int] = ...
        TYPE_TV_SEASON: typing.ClassVar[int] = ...
        TYPE_TV_SERIES: typing.ClassVar[int] = ...
        WATCH_NEXT_TYPE_CONTINUE: typing.ClassVar[int] = ...
        WATCH_NEXT_TYPE_NEW: typing.ClassVar[int] = ...
        WATCH_NEXT_TYPE_NEXT: typing.ClassVar[int] = ...
        WATCH_NEXT_TYPE_WATCHLIST: typing.ClassVar[int] = ...

    class RecordedPrograms(TvContract.BaseTvColumns):
        COLUMN_AUDIO_LANGUAGE: typing.ClassVar[str] = ...
        COLUMN_BROADCAST_GENRE: typing.ClassVar[str] = ...
        COLUMN_CANONICAL_GENRE: typing.ClassVar[str] = ...
        COLUMN_CHANNEL_ID: typing.ClassVar[str] = ...
        COLUMN_CONTENT_RATING: typing.ClassVar[str] = ...
        COLUMN_END_TIME_UTC_MILLIS: typing.ClassVar[str] = ...
        COLUMN_EPISODE_DISPLAY_NUMBER: typing.ClassVar[str] = ...
        COLUMN_EPISODE_TITLE: typing.ClassVar[str] = ...
        COLUMN_INPUT_ID: typing.ClassVar[str] = ...
        COLUMN_INTERNAL_PROVIDER_DATA: typing.ClassVar[str] = ...
        COLUMN_INTERNAL_PROVIDER_FLAG1: typing.ClassVar[str] = ...
        COLUMN_INTERNAL_PROVIDER_FLAG2: typing.ClassVar[str] = ...
        COLUMN_INTERNAL_PROVIDER_FLAG3: typing.ClassVar[str] = ...
        COLUMN_INTERNAL_PROVIDER_FLAG4: typing.ClassVar[str] = ...
        COLUMN_INTERNAL_PROVIDER_ID: typing.ClassVar[str] = ...
        COLUMN_LONG_DESCRIPTION: typing.ClassVar[str] = ...
        COLUMN_MULTI_SERIES_ID: typing.ClassVar[str] = ...
        COLUMN_POSTER_ART_URI: typing.ClassVar[str] = ...
        COLUMN_RECORDING_DATA_BYTES: typing.ClassVar[str] = ...
        COLUMN_RECORDING_DATA_URI: typing.ClassVar[str] = ...
        COLUMN_RECORDING_DURATION_MILLIS: typing.ClassVar[str] = ...
        COLUMN_RECORDING_EXPIRE_TIME_UTC_MILLIS: typing.ClassVar[str] = ...
        COLUMN_REVIEW_RATING: typing.ClassVar[str] = ...
        COLUMN_REVIEW_RATING_STYLE: typing.ClassVar[str] = ...
        COLUMN_SEARCHABLE: typing.ClassVar[str] = ...
        COLUMN_SEASON_DISPLAY_NUMBER: typing.ClassVar[str] = ...
        COLUMN_SEASON_TITLE: typing.ClassVar[str] = ...
        COLUMN_SERIES_ID: typing.ClassVar[str] = ...
        COLUMN_SHORT_DESCRIPTION: typing.ClassVar[str] = ...
        COLUMN_SPLIT_ID: typing.ClassVar[str] = ...
        COLUMN_START_TIME_UTC_MILLIS: typing.ClassVar[str] = ...
        COLUMN_THUMBNAIL_URI: typing.ClassVar[str] = ...
        COLUMN_TITLE: typing.ClassVar[str] = ...
        COLUMN_VERSION_NUMBER: typing.ClassVar[str] = ...
        COLUMN_VIDEO_HEIGHT: typing.ClassVar[str] = ...
        COLUMN_VIDEO_WIDTH: typing.ClassVar[str] = ...
        CONTENT_ITEM_TYPE: typing.ClassVar[str] = ...
        CONTENT_TYPE: typing.ClassVar[str] = ...
        CONTENT_URI: typing.ClassVar[android.net.Uri] = ...
        REVIEW_RATING_STYLE_PERCENTAGE: typing.ClassVar[int] = ...
        REVIEW_RATING_STYLE_STARS: typing.ClassVar[int] = ...
        REVIEW_RATING_STYLE_THUMBS_UP_DOWN: typing.ClassVar[int] = ...

    class Programs(TvContract.BaseTvColumns):
        COLUMN_AUDIO_LANGUAGE: typing.ClassVar[str] = ...
        COLUMN_BROADCAST_GENRE: typing.ClassVar[str] = ...
        COLUMN_CANONICAL_GENRE: typing.ClassVar[str] = ...
        COLUMN_CHANNEL_ID: typing.ClassVar[str] = ...
        COLUMN_CONTENT_RATING: typing.ClassVar[str] = ...
        COLUMN_END_TIME_UTC_MILLIS: typing.ClassVar[str] = ...
        COLUMN_EPISODE_DISPLAY_NUMBER: typing.ClassVar[str] = ...
        COLUMN_EPISODE_NUMBER: typing.ClassVar[str] = ...
        COLUMN_EPISODE_TITLE: typing.ClassVar[str] = ...
        COLUMN_EVENT_ID: typing.ClassVar[str] = ...
        COLUMN_GLOBAL_CONTENT_ID: typing.ClassVar[str] = ...
        COLUMN_INTERNAL_PROVIDER_DATA: typing.ClassVar[str] = ...
        COLUMN_INTERNAL_PROVIDER_FLAG1: typing.ClassVar[str] = ...
        COLUMN_INTERNAL_PROVIDER_FLAG2: typing.ClassVar[str] = ...
        COLUMN_INTERNAL_PROVIDER_FLAG3: typing.ClassVar[str] = ...
        COLUMN_INTERNAL_PROVIDER_FLAG4: typing.ClassVar[str] = ...
        COLUMN_INTERNAL_PROVIDER_ID: typing.ClassVar[str] = ...
        COLUMN_LONG_DESCRIPTION: typing.ClassVar[str] = ...
        COLUMN_MULTI_SERIES_ID: typing.ClassVar[str] = ...
        COLUMN_POSTER_ART_URI: typing.ClassVar[str] = ...
        COLUMN_RECORDING_PROHIBITED: typing.ClassVar[str] = ...
        COLUMN_REVIEW_RATING: typing.ClassVar[str] = ...
        COLUMN_REVIEW_RATING_STYLE: typing.ClassVar[str] = ...
        COLUMN_SCRAMBLED: typing.ClassVar[str] = ...
        COLUMN_SEARCHABLE: typing.ClassVar[str] = ...
        COLUMN_SEASON_DISPLAY_NUMBER: typing.ClassVar[str] = ...
        COLUMN_SEASON_NUMBER: typing.ClassVar[str] = ...
        COLUMN_SEASON_TITLE: typing.ClassVar[str] = ...
        COLUMN_SERIES_ID: typing.ClassVar[str] = ...
        COLUMN_SHORT_DESCRIPTION: typing.ClassVar[str] = ...
        COLUMN_SPLIT_ID: typing.ClassVar[str] = ...
        COLUMN_START_TIME_UTC_MILLIS: typing.ClassVar[str] = ...
        COLUMN_THUMBNAIL_URI: typing.ClassVar[str] = ...
        COLUMN_TITLE: typing.ClassVar[str] = ...
        COLUMN_VERSION_NUMBER: typing.ClassVar[str] = ...
        COLUMN_VIDEO_HEIGHT: typing.ClassVar[str] = ...
        COLUMN_VIDEO_WIDTH: typing.ClassVar[str] = ...
        CONTENT_ITEM_TYPE: typing.ClassVar[str] = ...
        CONTENT_TYPE: typing.ClassVar[str] = ...
        CONTENT_URI: typing.ClassVar[android.net.Uri] = ...
        REVIEW_RATING_STYLE_PERCENTAGE: typing.ClassVar[int] = ...
        REVIEW_RATING_STYLE_STARS: typing.ClassVar[int] = ...
        REVIEW_RATING_STYLE_THUMBS_UP_DOWN: typing.ClassVar[int] = ...

        class Genres(java.lang.Object):
            ANIMAL_WILDLIFE: typing.ClassVar[str] = ...
            ARTS: typing.ClassVar[str] = ...
            COMEDY: typing.ClassVar[str] = ...
            DRAMA: typing.ClassVar[str] = ...
            EDUCATION: typing.ClassVar[str] = ...
            ENTERTAINMENT: typing.ClassVar[str] = ...
            FAMILY_KIDS: typing.ClassVar[str] = ...
            GAMING: typing.ClassVar[str] = ...
            LIFE_STYLE: typing.ClassVar[str] = ...
            MOVIES: typing.ClassVar[str] = ...
            MUSIC: typing.ClassVar[str] = ...
            NEWS: typing.ClassVar[str] = ...
            PREMIER: typing.ClassVar[str] = ...
            SHOPPING: typing.ClassVar[str] = ...
            SPORTS: typing.ClassVar[str] = ...
            TECH_SCIENCE: typing.ClassVar[str] = ...
            TRAVEL: typing.ClassVar[str] = ...
            @staticmethod
            def decode(genres: str | java.lang.String, /) -> java.chaquopy.JavaArray[java.lang.String]: ...
            @staticmethod
            def encode(*genres: java.lang.String) -> str: ...
            @staticmethod
            def isCanonical(genre: str | java.lang.String, /) -> bool: ...

    class PreviewPrograms(TvContract.BaseTvColumns):
        ASPECT_RATIO_16_9: typing.ClassVar[int] = ...
        ASPECT_RATIO_1_1: typing.ClassVar[int] = ...
        ASPECT_RATIO_2_3: typing.ClassVar[int] = ...
        ASPECT_RATIO_3_2: typing.ClassVar[int] = ...
        ASPECT_RATIO_4_3: typing.ClassVar[int] = ...
        AVAILABILITY_AVAILABLE: typing.ClassVar[int] = ...
        AVAILABILITY_FREE_WITH_SUBSCRIPTION: typing.ClassVar[int] = ...
        AVAILABILITY_PAID_CONTENT: typing.ClassVar[int] = ...
        COLUMN_AUDIO_LANGUAGE: typing.ClassVar[str] = ...
        COLUMN_AUTHOR: typing.ClassVar[str] = ...
        COLUMN_AVAILABILITY: typing.ClassVar[str] = ...
        COLUMN_BROWSABLE: typing.ClassVar[str] = ...
        COLUMN_CANONICAL_GENRE: typing.ClassVar[str] = ...
        COLUMN_CHANNEL_ID: typing.ClassVar[str] = ...
        COLUMN_CONTENT_ID: typing.ClassVar[str] = ...
        COLUMN_CONTENT_RATING: typing.ClassVar[str] = ...
        COLUMN_DURATION_MILLIS: typing.ClassVar[str] = ...
        COLUMN_END_TIME_UTC_MILLIS: typing.ClassVar[str] = ...
        COLUMN_EPISODE_DISPLAY_NUMBER: typing.ClassVar[str] = ...
        COLUMN_EPISODE_TITLE: typing.ClassVar[str] = ...
        COLUMN_INTENT_URI: typing.ClassVar[str] = ...
        COLUMN_INTERACTION_COUNT: typing.ClassVar[str] = ...
        COLUMN_INTERACTION_TYPE: typing.ClassVar[str] = ...
        COLUMN_INTERNAL_PROVIDER_DATA: typing.ClassVar[str] = ...
        COLUMN_INTERNAL_PROVIDER_FLAG1: typing.ClassVar[str] = ...
        COLUMN_INTERNAL_PROVIDER_FLAG2: typing.ClassVar[str] = ...
        COLUMN_INTERNAL_PROVIDER_FLAG3: typing.ClassVar[str] = ...
        COLUMN_INTERNAL_PROVIDER_FLAG4: typing.ClassVar[str] = ...
        COLUMN_INTERNAL_PROVIDER_ID: typing.ClassVar[str] = ...
        COLUMN_ITEM_COUNT: typing.ClassVar[str] = ...
        COLUMN_LAST_PLAYBACK_POSITION_MILLIS: typing.ClassVar[str] = ...
        COLUMN_LIVE: typing.ClassVar[str] = ...
        COLUMN_LOGO_URI: typing.ClassVar[str] = ...
        COLUMN_LONG_DESCRIPTION: typing.ClassVar[str] = ...
        COLUMN_OFFER_PRICE: typing.ClassVar[str] = ...
        COLUMN_POSTER_ART_ASPECT_RATIO: typing.ClassVar[str] = ...
        COLUMN_POSTER_ART_URI: typing.ClassVar[str] = ...
        COLUMN_PREVIEW_VIDEO_URI: typing.ClassVar[str] = ...
        COLUMN_RELEASE_DATE: typing.ClassVar[str] = ...
        COLUMN_REVIEW_RATING: typing.ClassVar[str] = ...
        COLUMN_REVIEW_RATING_STYLE: typing.ClassVar[str] = ...
        COLUMN_SEARCHABLE: typing.ClassVar[str] = ...
        COLUMN_SEASON_DISPLAY_NUMBER: typing.ClassVar[str] = ...
        COLUMN_SEASON_TITLE: typing.ClassVar[str] = ...
        COLUMN_SERIES_ID: typing.ClassVar[str] = ...
        COLUMN_SHORT_DESCRIPTION: typing.ClassVar[str] = ...
        COLUMN_SPLIT_ID: typing.ClassVar[str] = ...
        COLUMN_STARTING_PRICE: typing.ClassVar[str] = ...
        COLUMN_START_TIME_UTC_MILLIS: typing.ClassVar[str] = ...
        COLUMN_THUMBNAIL_ASPECT_RATIO: typing.ClassVar[str] = ...
        COLUMN_THUMBNAIL_URI: typing.ClassVar[str] = ...
        COLUMN_TITLE: typing.ClassVar[str] = ...
        COLUMN_TRANSIENT: typing.ClassVar[str] = ...
        COLUMN_TYPE: typing.ClassVar[str] = ...
        COLUMN_VERSION_NUMBER: typing.ClassVar[str] = ...
        COLUMN_VIDEO_HEIGHT: typing.ClassVar[str] = ...
        COLUMN_VIDEO_WIDTH: typing.ClassVar[str] = ...
        COLUMN_WEIGHT: typing.ClassVar[str] = ...
        CONTENT_ITEM_TYPE: typing.ClassVar[str] = ...
        CONTENT_TYPE: typing.ClassVar[str] = ...
        CONTENT_URI: typing.ClassVar[android.net.Uri] = ...
        INTERACTION_TYPE_FANS: typing.ClassVar[int] = ...
        INTERACTION_TYPE_FOLLOWERS: typing.ClassVar[int] = ...
        INTERACTION_TYPE_LIKES: typing.ClassVar[int] = ...
        INTERACTION_TYPE_LISTENS: typing.ClassVar[int] = ...
        INTERACTION_TYPE_THUMBS: typing.ClassVar[int] = ...
        INTERACTION_TYPE_VIEWERS: typing.ClassVar[int] = ...
        INTERACTION_TYPE_VIEWS: typing.ClassVar[int] = ...
        REVIEW_RATING_STYLE_PERCENTAGE: typing.ClassVar[int] = ...
        REVIEW_RATING_STYLE_STARS: typing.ClassVar[int] = ...
        REVIEW_RATING_STYLE_THUMBS_UP_DOWN: typing.ClassVar[int] = ...
        TYPE_ALBUM: typing.ClassVar[int] = ...
        TYPE_ARTIST: typing.ClassVar[int] = ...
        TYPE_CHANNEL: typing.ClassVar[int] = ...
        TYPE_CLIP: typing.ClassVar[int] = ...
        TYPE_EVENT: typing.ClassVar[int] = ...
        TYPE_MOVIE: typing.ClassVar[int] = ...
        TYPE_PLAYLIST: typing.ClassVar[int] = ...
        TYPE_STATION: typing.ClassVar[int] = ...
        TYPE_TRACK: typing.ClassVar[int] = ...
        TYPE_TV_EPISODE: typing.ClassVar[int] = ...
        TYPE_TV_SEASON: typing.ClassVar[int] = ...
        TYPE_TV_SERIES: typing.ClassVar[int] = ...

    class Channels(TvContract.BaseTvColumns):
        BROADCAST_VISIBILITY_TYPE_INVISIBLE: typing.ClassVar[int] = ...
        BROADCAST_VISIBILITY_TYPE_NUMERIC_SELECTABLE_ONLY: typing.ClassVar[int] = ...
        BROADCAST_VISIBILITY_TYPE_VISIBLE: typing.ClassVar[int] = ...
        COLUMN_APP_LINK_COLOR: typing.ClassVar[str] = ...
        COLUMN_APP_LINK_ICON_URI: typing.ClassVar[str] = ...
        COLUMN_APP_LINK_INTENT_URI: typing.ClassVar[str] = ...
        COLUMN_APP_LINK_POSTER_ART_URI: typing.ClassVar[str] = ...
        COLUMN_APP_LINK_TEXT: typing.ClassVar[str] = ...
        COLUMN_BROADCAST_GENRE: typing.ClassVar[str] = ...
        COLUMN_BROADCAST_VISIBILITY_TYPE: typing.ClassVar[str] = ...
        COLUMN_BROWSABLE: typing.ClassVar[str] = ...
        COLUMN_CHANNEL_LIST_ID: typing.ClassVar[str] = ...
        COLUMN_DESCRIPTION: typing.ClassVar[str] = ...
        COLUMN_DISPLAY_NAME: typing.ClassVar[str] = ...
        COLUMN_DISPLAY_NUMBER: typing.ClassVar[str] = ...
        COLUMN_GLOBAL_CONTENT_ID: typing.ClassVar[str] = ...
        COLUMN_INPUT_ID: typing.ClassVar[str] = ...
        COLUMN_INTERNAL_PROVIDER_DATA: typing.ClassVar[str] = ...
        COLUMN_INTERNAL_PROVIDER_FLAG1: typing.ClassVar[str] = ...
        COLUMN_INTERNAL_PROVIDER_FLAG2: typing.ClassVar[str] = ...
        COLUMN_INTERNAL_PROVIDER_FLAG3: typing.ClassVar[str] = ...
        COLUMN_INTERNAL_PROVIDER_FLAG4: typing.ClassVar[str] = ...
        COLUMN_INTERNAL_PROVIDER_ID: typing.ClassVar[str] = ...
        COLUMN_LOCKED: typing.ClassVar[str] = ...
        COLUMN_NETWORK_AFFILIATION: typing.ClassVar[str] = ...
        COLUMN_ORIGINAL_NETWORK_ID: typing.ClassVar[str] = ...
        COLUMN_REMOTE_CONTROL_KEY_PRESET_NUMBER: typing.ClassVar[str] = ...
        COLUMN_SCRAMBLED: typing.ClassVar[str] = ...
        COLUMN_SEARCHABLE: typing.ClassVar[str] = ...
        COLUMN_SERVICE_ID: typing.ClassVar[str] = ...
        COLUMN_SERVICE_TYPE: typing.ClassVar[str] = ...
        COLUMN_TRANSIENT: typing.ClassVar[str] = ...
        COLUMN_TRANSPORT_STREAM_ID: typing.ClassVar[str] = ...
        COLUMN_TYPE: typing.ClassVar[str] = ...
        COLUMN_VERSION_NUMBER: typing.ClassVar[str] = ...
        COLUMN_VIDEO_FORMAT: typing.ClassVar[str] = ...
        COLUMN_VIDEO_RESOLUTION: typing.ClassVar[str] = ...
        CONTENT_ITEM_TYPE: typing.ClassVar[str] = ...
        CONTENT_TYPE: typing.ClassVar[str] = ...
        CONTENT_URI: typing.ClassVar[android.net.Uri] = ...
        SERVICE_TYPE_AUDIO: typing.ClassVar[str] = ...
        SERVICE_TYPE_AUDIO_VIDEO: typing.ClassVar[str] = ...
        SERVICE_TYPE_OTHER: typing.ClassVar[str] = ...
        TYPE_1SEG: typing.ClassVar[str] = ...
        TYPE_ATSC3_T: typing.ClassVar[str] = ...
        TYPE_ATSC_C: typing.ClassVar[str] = ...
        TYPE_ATSC_M_H: typing.ClassVar[str] = ...
        TYPE_ATSC_T: typing.ClassVar[str] = ...
        TYPE_CMMB: typing.ClassVar[str] = ...
        TYPE_DTMB: typing.ClassVar[str] = ...
        TYPE_DVB_C2: typing.ClassVar[str] = ...
        TYPE_DVB_C: typing.ClassVar[str] = ...
        TYPE_DVB_H: typing.ClassVar[str] = ...
        TYPE_DVB_S2: typing.ClassVar[str] = ...
        TYPE_DVB_S: typing.ClassVar[str] = ...
        TYPE_DVB_SH: typing.ClassVar[str] = ...
        TYPE_DVB_T2: typing.ClassVar[str] = ...
        TYPE_DVB_T: typing.ClassVar[str] = ...
        TYPE_ISDB_C: typing.ClassVar[str] = ...
        TYPE_ISDB_S3: typing.ClassVar[str] = ...
        TYPE_ISDB_S: typing.ClassVar[str] = ...
        TYPE_ISDB_T: typing.ClassVar[str] = ...
        TYPE_ISDB_TB: typing.ClassVar[str] = ...
        TYPE_NTSC: typing.ClassVar[str] = ...
        TYPE_OTHER: typing.ClassVar[str] = ...
        TYPE_PAL: typing.ClassVar[str] = ...
        TYPE_PREVIEW: typing.ClassVar[str] = ...
        TYPE_SECAM: typing.ClassVar[str] = ...
        TYPE_S_DMB: typing.ClassVar[str] = ...
        TYPE_T_DMB: typing.ClassVar[str] = ...
        VIDEO_FORMAT_1080I: typing.ClassVar[str] = ...
        VIDEO_FORMAT_1080P: typing.ClassVar[str] = ...
        VIDEO_FORMAT_2160P: typing.ClassVar[str] = ...
        VIDEO_FORMAT_240P: typing.ClassVar[str] = ...
        VIDEO_FORMAT_360P: typing.ClassVar[str] = ...
        VIDEO_FORMAT_4320P: typing.ClassVar[str] = ...
        VIDEO_FORMAT_480I: typing.ClassVar[str] = ...
        VIDEO_FORMAT_480P: typing.ClassVar[str] = ...
        VIDEO_FORMAT_576I: typing.ClassVar[str] = ...
        VIDEO_FORMAT_576P: typing.ClassVar[str] = ...
        VIDEO_FORMAT_720P: typing.ClassVar[str] = ...
        VIDEO_RESOLUTION_ED: typing.ClassVar[str] = ...
        VIDEO_RESOLUTION_FHD: typing.ClassVar[str] = ...
        VIDEO_RESOLUTION_HD: typing.ClassVar[str] = ...
        VIDEO_RESOLUTION_SD: typing.ClassVar[str] = ...
        VIDEO_RESOLUTION_UHD: typing.ClassVar[str] = ...
        @staticmethod
        def getVideoResolution(videoFormat: str | java.lang.String, /) -> str: ...

        class Logo(java.lang.Object):
            CONTENT_DIRECTORY: typing.ClassVar[str] = ...

    class BaseTvColumns(android.provider.BaseColumns):
        COLUMN_PACKAGE_NAME: typing.ClassVar[str] = ...

class TvInputInfo(android.os.Parcelable):
    CREATOR: typing.ClassVar[android.os.Parcelable.Creator[TvInputInfo]] = ...
    EXTRA_INPUT_ID: typing.ClassVar[str] = ...
    TYPE_COMPONENT: typing.ClassVar[int] = ...
    TYPE_COMPOSITE: typing.ClassVar[int] = ...
    TYPE_DISPLAY_PORT: typing.ClassVar[int] = ...
    TYPE_DVI: typing.ClassVar[int] = ...
    TYPE_HDMI: typing.ClassVar[int] = ...
    TYPE_OTHER: typing.ClassVar[int] = ...
    TYPE_SCART: typing.ClassVar[int] = ...
    TYPE_SVIDEO: typing.ClassVar[int] = ...
    TYPE_TUNER: typing.ClassVar[int] = ...
    TYPE_VGA: typing.ClassVar[int] = ...
    def canPauseRecording(self) -> bool: ...
    def canRecord(self) -> bool: ...
    def createSettingsIntent(self) -> android.content.Intent: ...
    def createSetupIntent(self) -> android.content.Intent: ...
    def describeContents(self) -> int: ...
    def equals(self, o: java.lang.Object | int | bool | float | str, /) -> bool: ...
    def getExtras(self) -> android.os.Bundle: ...
    def getId(self) -> str: ...
    def getParentId(self) -> str: ...
    def getServiceInfo(self) -> android.content.pm.ServiceInfo: ...
    def getTunerCount(self) -> int: ...
    def getType(self) -> int: ...
    def hashCode(self) -> int: ...
    def isHidden(self, context: android.content.Context, /) -> bool: ...
    def isPassthroughInput(self) -> bool: ...
    def loadCustomLabel(self, context: android.content.Context, /) -> java.lang.CharSequence: ...
    def loadIcon(self, context: android.content.Context, /) -> android.graphics.drawable.Drawable: ...
    def loadLabel(self, context: android.content.Context, /) -> java.lang.CharSequence: ...
    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, context: android.content.Context, component: android.content.ComponentName, /) -> None: ...
        def build(self) -> TvInputInfo: ...
        def setCanPauseRecording(self, canPauseRecording: bool | java.jboolean | java.lang.Boolean, /) -> TvInputInfo.Builder: ...
        def setCanRecord(self, canRecord: bool | java.jboolean | java.lang.Boolean, /) -> TvInputInfo.Builder: ...
        def setExtras(self, extras: android.os.Bundle, /) -> TvInputInfo.Builder: ...
        def setTunerCount(self, tunerCount: int | java.jint | java.lang.Integer, /) -> TvInputInfo.Builder: ...

class TvInputManager(java.lang.Object):
    ACTION_BLOCKED_RATINGS_CHANGED: typing.ClassVar[str] = ...
    ACTION_PARENTAL_CONTROLS_ENABLED_CHANGED: typing.ClassVar[str] = ...
    ACTION_QUERY_CONTENT_RATING_SYSTEMS: typing.ClassVar[str] = ...
    ACTION_SETUP_INPUTS: typing.ClassVar[str] = ...
    ACTION_VIEW_RECORDING_SCHEDULES: typing.ClassVar[str] = ...
    BROADCAST_INFO_STREAM_EVENT: typing.ClassVar[int] = ...
    BROADCAST_INFO_TYPE_COMMAND: typing.ClassVar[int] = ...
    BROADCAST_INFO_TYPE_DSMCC: typing.ClassVar[int] = ...
    BROADCAST_INFO_TYPE_PES: typing.ClassVar[int] = ...
    BROADCAST_INFO_TYPE_SECTION: typing.ClassVar[int] = ...
    BROADCAST_INFO_TYPE_TABLE: typing.ClassVar[int] = ...
    BROADCAST_INFO_TYPE_TIMELINE: typing.ClassVar[int] = ...
    BROADCAST_INFO_TYPE_TS: typing.ClassVar[int] = ...
    INPUT_STATE_CONNECTED: typing.ClassVar[int] = ...
    INPUT_STATE_CONNECTED_STANDBY: typing.ClassVar[int] = ...
    INPUT_STATE_DISCONNECTED: typing.ClassVar[int] = ...
    META_DATA_CONTENT_RATING_SYSTEMS: typing.ClassVar[str] = ...
    RECORDING_ERROR_INSUFFICIENT_SPACE: typing.ClassVar[int] = ...
    RECORDING_ERROR_RESOURCE_BUSY: typing.ClassVar[int] = ...
    RECORDING_ERROR_UNKNOWN: typing.ClassVar[int] = ...
    SESSION_DATA_KEY_AD_BUFFER: typing.ClassVar[str] = ...
    SESSION_DATA_KEY_AD_RESPONSE: typing.ClassVar[str] = ...
    SESSION_DATA_KEY_BROADCAST_INFO_RESPONSE: typing.ClassVar[str] = ...
    SESSION_DATA_KEY_CHANNEL_URI: typing.ClassVar[str] = ...
    SESSION_DATA_KEY_TRACKS: typing.ClassVar[str] = ...
    SESSION_DATA_KEY_TRACK_ID: typing.ClassVar[str] = ...
    SESSION_DATA_KEY_TRACK_TYPE: typing.ClassVar[str] = ...
    SESSION_DATA_KEY_TV_MESSAGE_TYPE: typing.ClassVar[str] = ...
    SESSION_DATA_KEY_VIDEO_UNAVAILABLE_REASON: typing.ClassVar[str] = ...
    SESSION_DATA_TYPE_AD_BUFFER_CONSUMED: typing.ClassVar[str] = ...
    SESSION_DATA_TYPE_AD_RESPONSE: typing.ClassVar[str] = ...
    SESSION_DATA_TYPE_BROADCAST_INFO_RESPONSE: typing.ClassVar[str] = ...
    SESSION_DATA_TYPE_TRACKS_CHANGED: typing.ClassVar[str] = ...
    SESSION_DATA_TYPE_TRACK_SELECTED: typing.ClassVar[str] = ...
    SESSION_DATA_TYPE_TUNED: typing.ClassVar[str] = ...
    SESSION_DATA_TYPE_TV_MESSAGE: typing.ClassVar[str] = ...
    SESSION_DATA_TYPE_VIDEO_AVAILABLE: typing.ClassVar[str] = ...
    SESSION_DATA_TYPE_VIDEO_UNAVAILABLE: typing.ClassVar[str] = ...
    SIGNAL_STRENGTH_LOST: typing.ClassVar[int] = ...
    SIGNAL_STRENGTH_STRONG: typing.ClassVar[int] = ...
    SIGNAL_STRENGTH_WEAK: typing.ClassVar[int] = ...
    TIME_SHIFT_INVALID_TIME: typing.ClassVar[int] = ...
    TIME_SHIFT_MODE_AUTO: typing.ClassVar[int] = ...
    TIME_SHIFT_MODE_LOCAL: typing.ClassVar[int] = ...
    TIME_SHIFT_MODE_NETWORK: typing.ClassVar[int] = ...
    TIME_SHIFT_MODE_OFF: typing.ClassVar[int] = ...
    TIME_SHIFT_STATUS_AVAILABLE: typing.ClassVar[int] = ...
    TIME_SHIFT_STATUS_UNAVAILABLE: typing.ClassVar[int] = ...
    TIME_SHIFT_STATUS_UNKNOWN: typing.ClassVar[int] = ...
    TIME_SHIFT_STATUS_UNSUPPORTED: typing.ClassVar[int] = ...
    TV_MESSAGE_GROUP_ID_NONE: typing.ClassVar[int] = ...
    TV_MESSAGE_KEY_GROUP_ID: typing.ClassVar[str] = ...
    TV_MESSAGE_KEY_RAW_DATA: typing.ClassVar[str] = ...
    TV_MESSAGE_KEY_STREAM_ID: typing.ClassVar[str] = ...
    TV_MESSAGE_KEY_SUBTYPE: typing.ClassVar[str] = ...
    TV_MESSAGE_SUBTYPE_CC_608E: typing.ClassVar[str] = ...
    TV_MESSAGE_SUBTYPE_WATERMARKING_A335: typing.ClassVar[str] = ...
    TV_MESSAGE_TYPE_CLOSED_CAPTION: typing.ClassVar[int] = ...
    TV_MESSAGE_TYPE_OTHER: typing.ClassVar[int] = ...
    TV_MESSAGE_TYPE_WATERMARK: typing.ClassVar[int] = ...
    VIDEO_UNAVAILABLE_REASON_AUDIO_ONLY: typing.ClassVar[int] = ...
    VIDEO_UNAVAILABLE_REASON_BUFFERING: typing.ClassVar[int] = ...
    VIDEO_UNAVAILABLE_REASON_CAS_BLACKOUT: typing.ClassVar[int] = ...
    VIDEO_UNAVAILABLE_REASON_CAS_CARD_INVALID: typing.ClassVar[int] = ...
    VIDEO_UNAVAILABLE_REASON_CAS_CARD_MUTE: typing.ClassVar[int] = ...
    VIDEO_UNAVAILABLE_REASON_CAS_INSUFFICIENT_OUTPUT_PROTECTION: typing.ClassVar[int] = ...
    VIDEO_UNAVAILABLE_REASON_CAS_LICENSE_EXPIRED: typing.ClassVar[int] = ...
    VIDEO_UNAVAILABLE_REASON_CAS_NEED_ACTIVATION: typing.ClassVar[int] = ...
    VIDEO_UNAVAILABLE_REASON_CAS_NEED_PAIRING: typing.ClassVar[int] = ...
    VIDEO_UNAVAILABLE_REASON_CAS_NO_CARD: typing.ClassVar[int] = ...
    VIDEO_UNAVAILABLE_REASON_CAS_PVR_RECORDING_NOT_ALLOWED: typing.ClassVar[int] = ...
    VIDEO_UNAVAILABLE_REASON_CAS_REBOOTING: typing.ClassVar[int] = ...
    VIDEO_UNAVAILABLE_REASON_CAS_UNKNOWN: typing.ClassVar[int] = ...
    VIDEO_UNAVAILABLE_REASON_INSUFFICIENT_RESOURCE: typing.ClassVar[int] = ...
    VIDEO_UNAVAILABLE_REASON_NOT_CONNECTED: typing.ClassVar[int] = ...
    VIDEO_UNAVAILABLE_REASON_STOPPED: typing.ClassVar[int] = ...
    VIDEO_UNAVAILABLE_REASON_TUNING: typing.ClassVar[int] = ...
    VIDEO_UNAVAILABLE_REASON_UNKNOWN: typing.ClassVar[int] = ...
    VIDEO_UNAVAILABLE_REASON_WEAK_SIGNAL: typing.ClassVar[int] = ...
    def getBlockedRatings(self) -> java.util.List[TvContentRating]: ...
    def getInputState(self, inputId: str | java.lang.String, /) -> int: ...
    def getTvInputInfo(self, inputId: str | java.lang.String, /) -> TvInputInfo | None: ...
    def getTvInputList(self) -> java.util.List[TvInputInfo]: ...
    def isParentalControlsEnabled(self) -> bool: ...
    def isRatingBlocked(self, rating: TvContentRating, /) -> bool: ...
    def registerCallback(self, callback: TvInputManager.TvInputCallback, handler: android.os.Handler, /) -> None: ...
    def unregisterCallback(self, callback: TvInputManager.TvInputCallback, /) -> None: ...
    def updateTvInputInfo(self, inputInfo: TvInputInfo, /) -> None: ...

    class TvInputCallback(java.lang.Object):
        def __init__(self) -> None: ...
        def onInputAdded(self, inputId: str | java.lang.String, /) -> None: ...
        def onInputRemoved(self, inputId: str | java.lang.String, /) -> None: ...
        def onInputStateChanged(self, inputId: str | java.lang.String, state: int | java.jint | java.lang.Integer, /) -> None: ...
        def onInputUpdated(self, inputId: str | java.lang.String, /) -> None: ...
        def onTvInputInfoUpdated(self, inputInfo: TvInputInfo, /) -> None: ...

class TvInputService(android.app.Service):
    PRIORITY_HINT_USE_CASE_TYPE_BACKGROUND: typing.ClassVar[int] = ...
    PRIORITY_HINT_USE_CASE_TYPE_LIVE: typing.ClassVar[int] = ...
    PRIORITY_HINT_USE_CASE_TYPE_PLAYBACK: typing.ClassVar[int] = ...
    PRIORITY_HINT_USE_CASE_TYPE_RECORD: typing.ClassVar[int] = ...
    PRIORITY_HINT_USE_CASE_TYPE_SCAN: typing.ClassVar[int] = ...
    SERVICE_INTERFACE: typing.ClassVar[str] = ...
    SERVICE_META_DATA: typing.ClassVar[str] = ...
    def __init__(self) -> None: ...
    def onBind(self, intent: android.content.Intent, /) -> android.os.IBinder: ...
    @typing.overload
    def onCreateRecordingSession(self, inputId: str | java.lang.String, /) -> TvInputService.RecordingSession | None: ...
    @typing.overload
    def onCreateRecordingSession(self, inputId: str | java.lang.String, sessionId: str | java.lang.String, /) -> TvInputService.RecordingSession | None: ...
    @typing.overload
    def onCreateSession(self, arg1: str | java.lang.String, /) -> TvInputService.Session | None: ...
    @typing.overload
    def onCreateSession(self, inputId: str | java.lang.String, sessionId: str | java.lang.String, /) -> TvInputService.Session | None: ...
    @typing.overload
    def onCreateSession(self, inputId: str | java.lang.String, sessionId: str | java.lang.String, tvAppAttributionSource: android.content.AttributionSource, /) -> TvInputService.Session | None: ...

    class Session(android.view.KeyEvent.Callback):
        def __init__(self, context: android.content.Context, /) -> None: ...
        def layoutSurface(self, left: int | java.jint | java.lang.Integer, top: int | java.jint | java.lang.Integer, right: int | java.jint | java.lang.Integer, bottom: int | java.jint | java.lang.Integer, /) -> None: ...
        def notifyAdBufferConsumed(self, buffer: AdBuffer, /) -> None: ...
        def notifyAdResponse(self, response: AdResponse, /) -> None: ...
        def notifyAitInfoUpdated(self, aitInfo: AitInfo, /) -> None: ...
        def notifyAudioPresentationChanged(self, audioPresentations: java.util.List[android.media.AudioPresentation], /) -> None: ...
        def notifyAudioPresentationSelected(self, presentationId: int | java.jint | java.lang.Integer, programId: int | java.jint | java.lang.Integer, /) -> None: ...
        def notifyAvailableSpeeds(self, speeds: java.chaquopy.JavaArrayJFloat, /) -> None: ...
        def notifyBroadcastInfoResponse(self, response: BroadcastInfoResponse, /) -> None: ...
        def notifyChannelRetuned(self, channelUri: android.net.Uri, /) -> None: ...
        def notifyContentAllowed(self) -> None: ...
        def notifyContentBlocked(self, rating: TvContentRating, /) -> None: ...
        def notifyCueingMessageAvailability(self, available: bool | java.jboolean | java.lang.Boolean, /) -> None: ...
        def notifySignalStrength(self, strength: int | java.jint | java.lang.Integer, /) -> None: ...
        def notifyTimeShiftMode(self, mode: int | java.jint | java.lang.Integer, /) -> None: ...
        def notifyTimeShiftStatusChanged(self, status: int | java.jint | java.lang.Integer, /) -> None: ...
        def notifyTrackSelected(self, type: int | java.jint | java.lang.Integer, trackId: str | java.lang.String, /) -> None: ...
        def notifyTracksChanged(self, tracks: java.util.List[TvTrackInfo], /) -> None: ...
        def notifyTuned(self, channelUri: android.net.Uri, /) -> None: ...
        def notifyTvMessage(self, type: int | java.jint | java.lang.Integer, data: android.os.Bundle, /) -> None: ...
        def notifyVideoAvailable(self) -> None: ...
        def notifyVideoFreezeUpdated(self, isFrozen: bool | java.jboolean | java.lang.Boolean, /) -> None: ...
        def notifyVideoUnavailable(self, reason: int | java.jint | java.lang.Integer, /) -> None: ...
        def onAdBufferReady(self, buffer: AdBuffer, /) -> None: ...
        def onAppPrivateCommand(self, action: str | java.lang.String, data: android.os.Bundle, /) -> None: ...
        def onCreateOverlayView(self) -> android.view.View: ...
        def onGenericMotionEvent(self, event: android.view.MotionEvent, /) -> bool: ...
        def onKeyDown(self, keyCode: int | java.jint | java.lang.Integer, event: android.view.KeyEvent, /) -> bool: ...
        def onKeyLongPress(self, keyCode: int | java.jint | java.lang.Integer, event: android.view.KeyEvent, /) -> bool: ...
        def onKeyMultiple(self, keyCode: int | java.jint | java.lang.Integer, count: int | java.jint | java.lang.Integer, event: android.view.KeyEvent, /) -> bool: ...
        def onKeyUp(self, keyCode: int | java.jint | java.lang.Integer, event: android.view.KeyEvent, /) -> bool: ...
        def onOverlayViewSizeChanged(self, width: int | java.jint | java.lang.Integer, height: int | java.jint | java.lang.Integer, /) -> None: ...
        def onRelease(self) -> None: ...
        def onRemoveBroadcastInfo(self, requestId: int | java.jint | java.lang.Integer, /) -> None: ...
        def onRequestAd(self, request: AdRequest, /) -> None: ...
        def onRequestBroadcastInfo(self, request: BroadcastInfoRequest, /) -> None: ...
        def onResumePlayback(self) -> None: ...
        def onSelectAudioPresentation(self, presentationId: int | java.jint | java.lang.Integer, programId: int | java.jint | java.lang.Integer, /) -> bool: ...
        def onSelectTrack(self, type: int | java.jint | java.lang.Integer, trackId: str | java.lang.String, /) -> bool: ...
        def onSetCaptionEnabled(self, arg1: bool | java.jboolean | java.lang.Boolean, /) -> None: ...
        def onSetInteractiveAppNotificationEnabled(self, enabled: bool | java.jboolean | java.lang.Boolean, /) -> None: ...
        def onSetStreamVolume(self, arg1: float | java.jfloat | java.lang.Float, /) -> None: ...
        def onSetSurface(self, arg1: android.view.Surface, /) -> bool: ...
        def onSetTvMessageEnabled(self, type: int | java.jint | java.lang.Integer, enabled: bool | java.jboolean | java.lang.Boolean, /) -> None: ...
        def onStopPlayback(self, mode: int | java.jint | java.lang.Integer, /) -> None: ...
        def onSurfaceChanged(self, format: int | java.jint | java.lang.Integer, width: int | java.jint | java.lang.Integer, height: int | java.jint | java.lang.Integer, /) -> None: ...
        def onTimeShiftGetCurrentPosition(self) -> int: ...
        def onTimeShiftGetStartPosition(self) -> int: ...
        def onTimeShiftPause(self) -> None: ...
        def onTimeShiftPlay(self, recordedProgramUri: android.net.Uri, /) -> None: ...
        def onTimeShiftResume(self) -> None: ...
        def onTimeShiftSeekTo(self, timeMs: int | java.jlong | java.lang.Long, /) -> None: ...
        def onTimeShiftSetMode(self, mode: int | java.jint | java.lang.Integer, /) -> None: ...
        def onTimeShiftSetPlaybackParams(self, params: android.media.PlaybackParams, /) -> None: ...
        def onTouchEvent(self, event: android.view.MotionEvent, /) -> bool: ...
        def onTrackballEvent(self, event: android.view.MotionEvent, /) -> bool: ...
        @typing.overload
        def onTune(self, arg1: android.net.Uri, /) -> bool: ...
        @typing.overload
        def onTune(self, channelUri: android.net.Uri, params: android.os.Bundle, /) -> bool: ...
        def onTvAdSessionData(self, type: str | java.lang.String, data: android.os.Bundle, /) -> None: ...
        def onTvMessage(self, type: int | java.jint | java.lang.Integer, data: android.os.Bundle, /) -> None: ...
        def onUnblockContent(self, unblockedRating: TvContentRating, /) -> None: ...
        def sendTvInputSessionData(self, type: str | java.lang.String, data: android.os.Bundle, /) -> None: ...
        def setOverlayViewEnabled(self, enable: bool | java.jboolean | java.lang.Boolean, /) -> None: ...

    class RecordingSession(java.lang.Object):
        def __init__(self, context: android.content.Context, /) -> None: ...
        def notifyError(self, error: int | java.jint | java.lang.Integer, /) -> None: ...
        def notifyRecordingStopped(self, recordedProgramUri: android.net.Uri, /) -> None: ...
        def notifyTuned(self, channelUri: android.net.Uri, /) -> None: ...
        def onAppPrivateCommand(self, action: str | java.lang.String, data: android.os.Bundle, /) -> None: ...
        def onPauseRecording(self, params: android.os.Bundle, /) -> None: ...
        def onRelease(self) -> None: ...
        def onResumeRecording(self, params: android.os.Bundle, /) -> None: ...
        @typing.overload
        def onStartRecording(self, arg1: android.net.Uri, /) -> None: ...
        @typing.overload
        def onStartRecording(self, programUri: android.net.Uri, params: android.os.Bundle, /) -> None: ...
        def onStopRecording(self) -> None: ...
        @typing.overload
        def onTune(self, arg1: android.net.Uri, /) -> None: ...
        @typing.overload
        def onTune(self, channelUri: android.net.Uri, params: android.os.Bundle, /) -> None: ...

    class HardwareSession(TvInputService.Session):
        def __init__(self, context: android.content.Context, /) -> None: ...
        def getHardwareInputId(self) -> str: ...
        def onHardwareVideoAvailable(self) -> None: ...
        def onHardwareVideoUnavailable(self, reason: int | java.jint | java.lang.Integer, /) -> None: ...
        def onSetSurface(self, surface: android.view.Surface, /) -> bool: ...

class TvRecordingClient(java.lang.Object):
    def __init__(self, context: android.content.Context, tag: str | java.lang.String, callback: TvRecordingClient.RecordingCallback, handler: android.os.Handler, /) -> None: ...
    @typing.overload
    def pauseRecording(self) -> None: ...
    @typing.overload
    def pauseRecording(self, params: android.os.Bundle, /) -> None: ...
    def release(self) -> None: ...
    @typing.overload
    def resumeRecording(self) -> None: ...
    @typing.overload
    def resumeRecording(self, params: android.os.Bundle, /) -> None: ...
    def sendAppPrivateCommand(self, action: str | java.lang.String, data: android.os.Bundle, /) -> None: ...
    def setTvInteractiveAppView(self, view: android.media.tv.interactive.TvInteractiveAppView, recordingId: str | java.lang.String, /) -> None: ...
    @typing.overload
    def startRecording(self, programUri: android.net.Uri, /) -> None: ...
    @typing.overload
    def startRecording(self, programUri: android.net.Uri, params: android.os.Bundle, /) -> None: ...
    def stopRecording(self) -> None: ...
    @typing.overload
    def tune(self, inputId: str | java.lang.String, channelUri: android.net.Uri, /) -> None: ...
    @typing.overload
    def tune(self, inputId: str | java.lang.String, channelUri: android.net.Uri, params: android.os.Bundle, /) -> None: ...

    class RecordingCallback(java.lang.Object):
        def __init__(self) -> None: ...
        def onConnectionFailed(self, inputId: str | java.lang.String, /) -> None: ...
        def onDisconnected(self, inputId: str | java.lang.String, /) -> None: ...
        def onError(self, error: int | java.jint | java.lang.Integer, /) -> None: ...
        def onRecordingStopped(self, recordedProgramUri: android.net.Uri, /) -> None: ...
        def onTuned(self, channelUri: android.net.Uri, /) -> None: ...

class TvRecordingInfo(android.os.Parcelable):
    CREATOR: typing.ClassVar[android.os.Parcelable.Creator[TvRecordingInfo]] = ...
    FRIDAY: typing.ClassVar[int] = ...
    MONDAY: typing.ClassVar[int] = ...
    RECORDING_ALL: typing.ClassVar[int] = ...
    RECORDING_IN_PROGRESS: typing.ClassVar[int] = ...
    RECORDING_SCHEDULED: typing.ClassVar[int] = ...
    SATURDAY: typing.ClassVar[int] = ...
    SUNDAY: typing.ClassVar[int] = ...
    THURSDAY: typing.ClassVar[int] = ...
    TUESDAY: typing.ClassVar[int] = ...
    WEDNESDAY: typing.ClassVar[int] = ...
    def __init__(self, recordingId: str | java.lang.String, startPadding: int | java.jlong | java.lang.Long, endPadding: int | java.jlong | java.lang.Long, repeatDays: int | java.jint | java.lang.Integer, name: str | java.lang.String, description: str | java.lang.String, scheduledStartTime: int | java.jlong | java.lang.Long, scheduledDuration: int | java.jlong | java.lang.Long, channelUri: android.net.Uri, programUri: android.net.Uri, contentRatings: java.util.List[TvContentRating], recordingUri: android.net.Uri, recordingStartTime: int | java.jlong | java.lang.Long, recordingDuration: int | java.jlong | java.lang.Long, /) -> None: ...
    def describeContents(self) -> int: ...
    def getChannelUri(self) -> android.net.Uri: ...
    def getContentRatings(self) -> java.util.List[TvContentRating]: ...
    def getDescription(self) -> str: ...
    def getEndPaddingMillis(self) -> int: ...
    def getName(self) -> str: ...
    def getProgramUri(self) -> android.net.Uri | None: ...
    def getRecordingDurationMillis(self) -> int: ...
    def getRecordingId(self) -> str: ...
    def getRecordingStartTimeMillis(self) -> int: ...
    def getRecordingUri(self) -> android.net.Uri | None: ...
    def getRepeatDays(self) -> int: ...
    def getScheduledDurationMillis(self) -> int: ...
    def getScheduledStartTimeMillis(self) -> int: ...
    def getStartPaddingMillis(self) -> int: ...
    def setDescription(self, description: str | java.lang.String, /) -> None: ...
    def setName(self, name: str | java.lang.String, /) -> None: ...
    def writeToParcel(self, dest: android.os.Parcel, flags: int | java.jint | java.lang.Integer, /) -> None: ...

class TvTrackInfo(android.os.Parcelable):
    CREATOR: typing.ClassVar[android.os.Parcelable.Creator[TvTrackInfo]] = ...
    TYPE_AUDIO: typing.ClassVar[int] = ...
    TYPE_SUBTITLE: typing.ClassVar[int] = ...
    TYPE_VIDEO: typing.ClassVar[int] = ...
    def describeContents(self) -> int: ...
    def equals(self, o: java.lang.Object | int | bool | float | str, /) -> bool: ...
    def getAudioChannelCount(self) -> int: ...
    def getAudioSampleRate(self) -> int: ...
    def getDescription(self) -> java.lang.CharSequence: ...
    def getEncoding(self) -> str | None: ...
    def getExtra(self) -> android.os.Bundle: ...
    def getId(self) -> str: ...
    def getLanguage(self) -> str: ...
    def getType(self) -> int: ...
    def getVideoActiveFormatDescription(self) -> int: ...
    def getVideoFrameRate(self) -> float: ...
    def getVideoHeight(self) -> int: ...
    def getVideoPixelAspectRatio(self) -> float: ...
    def getVideoWidth(self) -> int: ...
    def hashCode(self) -> int: ...
    def isAudioDescription(self) -> bool: ...
    def isEncrypted(self) -> bool: ...
    def isHardOfHearing(self) -> bool: ...
    def isSpokenSubtitle(self) -> bool: ...
    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, id: str | java.lang.String, /) -> None: ...
        def build(self) -> TvTrackInfo: ...
        def setAudioChannelCount(self, audioChannelCount: int | java.jint | java.lang.Integer, /) -> TvTrackInfo.Builder: ...
        def setAudioDescription(self, audioDescription: bool | java.jboolean | java.lang.Boolean, /) -> TvTrackInfo.Builder: ...
        def setAudioSampleRate(self, audioSampleRate: int | java.jint | java.lang.Integer, /) -> TvTrackInfo.Builder: ...
        def setDescription(self, description: java.lang.CharSequence, /) -> TvTrackInfo.Builder: ...
        def setEncoding(self, encoding: str | java.lang.String, /) -> TvTrackInfo.Builder: ...
        def setEncrypted(self, encrypted: bool | java.jboolean | java.lang.Boolean, /) -> TvTrackInfo.Builder: ...
        def setExtra(self, extra: android.os.Bundle, /) -> TvTrackInfo.Builder: ...
        def setHardOfHearing(self, hardOfHearing: bool | java.jboolean | java.lang.Boolean, /) -> TvTrackInfo.Builder: ...
        def setLanguage(self, language: str | java.lang.String, /) -> TvTrackInfo.Builder: ...
        def setSpokenSubtitle(self, spokenSubtitle: bool | java.jboolean | java.lang.Boolean, /) -> TvTrackInfo.Builder: ...
        def setVideoActiveFormatDescription(self, videoActiveFormatDescription: int | java.jbyte | java.lang.Byte, /) -> TvTrackInfo.Builder: ...
        def setVideoFrameRate(self, videoFrameRate: float | java.jfloat | java.lang.Float, /) -> TvTrackInfo.Builder: ...
        def setVideoHeight(self, videoHeight: int | java.jint | java.lang.Integer, /) -> TvTrackInfo.Builder: ...
        def setVideoPixelAspectRatio(self, videoPixelAspectRatio: float | java.jfloat | java.lang.Float, /) -> TvTrackInfo.Builder: ...
        def setVideoWidth(self, videoWidth: int | java.jint | java.lang.Integer, /) -> TvTrackInfo.Builder: ...

class TvView(android.view.ViewGroup):
    @typing.overload
    def __init__(self, context: android.content.Context, /) -> None: ...
    @typing.overload
    def __init__(self, context: android.content.Context, attrs: android.util.AttributeSet, /) -> None: ...
    @typing.overload
    def __init__(self, context: android.content.Context, attrs: android.util.AttributeSet, defStyleAttr: int | java.jint | java.lang.Integer, /) -> None: ...
    def dispatchDraw(self, canvas: android.graphics.Canvas, /) -> None: ...
    def dispatchGenericMotionEvent(self, event: android.view.MotionEvent, /) -> bool: ...
    def dispatchKeyEvent(self, event: android.view.KeyEvent, /) -> bool: ...
    def dispatchTouchEvent(self, event: android.view.MotionEvent, /) -> bool: ...
    def dispatchTrackballEvent(self, event: android.view.MotionEvent, /) -> bool: ...
    def dispatchUnhandledInputEvent(self, event: android.view.InputEvent, /) -> bool: ...
    def dispatchWindowFocusChanged(self, hasFocus: bool | java.jboolean | java.lang.Boolean, /) -> None: ...
    def draw(self, canvas: android.graphics.Canvas, /) -> None: ...
    def gatherTransparentRegion(self, region: android.graphics.Region, /) -> bool: ...
    def getAudioPresentations(self) -> java.util.List[android.media.AudioPresentation]: ...
    def getSelectedTrack(self, type: int | java.jint | java.lang.Integer, /) -> str: ...
    def getTracks(self, type: int | java.jint | java.lang.Integer, /) -> java.util.List[TvTrackInfo]: ...
    def onAttachedToWindow(self) -> None: ...
    def onDetachedFromWindow(self) -> None: ...
    def onLayout(self, changed: bool | java.jboolean | java.lang.Boolean, left: int | java.jint | java.lang.Integer, top: int | java.jint | java.lang.Integer, right: int | java.jint | java.lang.Integer, bottom: int | java.jint | java.lang.Integer, /) -> None: ...
    def onMeasure(self, widthMeasureSpec: int | java.jint | java.lang.Integer, heightMeasureSpec: int | java.jint | java.lang.Integer, /) -> None: ...
    def onUnhandledInputEvent(self, event: android.view.InputEvent, /) -> bool: ...
    def onVisibilityChanged(self, changedView: android.view.View, visibility: int | java.jint | java.lang.Integer, /) -> None: ...
    def overrideTvAppAttributionSource(self, tvAppAttributionSource: android.content.AttributionSource, /) -> None: ...
    def reset(self) -> None: ...
    def resumePlayback(self) -> None: ...
    def selectAudioPresentation(self, presentationId: int | java.jint | java.lang.Integer, programId: int | java.jint | java.lang.Integer, /) -> None: ...
    def selectTrack(self, type: int | java.jint | java.lang.Integer, trackId: str | java.lang.String, /) -> None: ...
    def sendAppPrivateCommand(self, action: str | java.lang.String, data: android.os.Bundle, /) -> None: ...
    def setCallback(self, callback: TvView.TvInputCallback, /) -> None: ...
    def setCaptionEnabled(self, enabled: bool | java.jboolean | java.lang.Boolean, /) -> None: ...
    def setInteractiveAppNotificationEnabled(self, enabled: bool | java.jboolean | java.lang.Boolean, /) -> None: ...
    def setOnUnhandledInputEventListener(self, listener: TvView.OnUnhandledInputEventListener, /) -> None: ...
    def setStreamVolume(self, volume: float | java.jfloat | java.lang.Float, /) -> None: ...
    def setTimeShiftPositionCallback(self, callback: TvView.TimeShiftPositionCallback, /) -> None: ...
    def setTvMessageEnabled(self, type: int | java.jint | java.lang.Integer, enabled: bool | java.jboolean | java.lang.Boolean, /) -> None: ...
    def setVideoFrozen(self, isFrozen: bool | java.jboolean | java.lang.Boolean, /) -> None: ...
    def setZOrderMediaOverlay(self, isMediaOverlay: bool | java.jboolean | java.lang.Boolean, /) -> None: ...
    def setZOrderOnTop(self, onTop: bool | java.jboolean | java.lang.Boolean, /) -> None: ...
    def stopPlayback(self, mode: int | java.jint | java.lang.Integer, /) -> None: ...
    def timeShiftPause(self) -> None: ...
    def timeShiftPlay(self, inputId: str | java.lang.String, recordedProgramUri: android.net.Uri, /) -> None: ...
    def timeShiftResume(self) -> None: ...
    def timeShiftSeekTo(self, timeMs: int | java.jlong | java.lang.Long, /) -> None: ...
    def timeShiftSetMode(self, mode: int | java.jint | java.lang.Integer, /) -> None: ...
    def timeShiftSetPlaybackParams(self, params: android.media.PlaybackParams, /) -> None: ...
    @typing.overload
    def tune(self, inputId: str | java.lang.String, channelUri: android.net.Uri, /) -> None: ...
    @typing.overload
    def tune(self, inputId: str | java.lang.String, channelUri: android.net.Uri, params: android.os.Bundle, /) -> None: ...

    class TvInputCallback(java.lang.Object):
        def __init__(self) -> None: ...
        def onAitInfoUpdated(self, inputId: str | java.lang.String, aitInfo: AitInfo, /) -> None: ...
        def onAudioPresentationSelected(self, inputId: str | java.lang.String, presentationId: int | java.jint | java.lang.Integer, programId: int | java.jint | java.lang.Integer, /) -> None: ...
        def onAudioPresentationsChanged(self, inputId: str | java.lang.String, audioPresentations: java.util.List[android.media.AudioPresentation], /) -> None: ...
        def onAvailableSpeeds(self, inputId: str | java.lang.String, speeds: java.chaquopy.JavaArrayJFloat, /) -> None: ...
        def onChannelRetuned(self, inputId: str | java.lang.String, channelUri: android.net.Uri, /) -> None: ...
        def onConnectionFailed(self, inputId: str | java.lang.String, /) -> None: ...
        def onContentAllowed(self, inputId: str | java.lang.String, /) -> None: ...
        def onContentBlocked(self, inputId: str | java.lang.String, rating: TvContentRating, /) -> None: ...
        def onCueingMessageAvailability(self, inputId: str | java.lang.String, available: bool | java.jboolean | java.lang.Boolean, /) -> None: ...
        def onDisconnected(self, inputId: str | java.lang.String, /) -> None: ...
        def onSignalStrengthUpdated(self, inputId: str | java.lang.String, strength: int | java.jint | java.lang.Integer, /) -> None: ...
        def onTimeShiftMode(self, inputId: str | java.lang.String, mode: int | java.jint | java.lang.Integer, /) -> None: ...
        def onTimeShiftStatusChanged(self, inputId: str | java.lang.String, status: int | java.jint | java.lang.Integer, /) -> None: ...
        def onTrackSelected(self, inputId: str | java.lang.String, type: int | java.jint | java.lang.Integer, trackId: str | java.lang.String, /) -> None: ...
        def onTracksChanged(self, inputId: str | java.lang.String, tracks: java.util.List[TvTrackInfo], /) -> None: ...
        def onTuned(self, inputId: str | java.lang.String, channelUri: android.net.Uri, /) -> None: ...
        def onTvMessage(self, inputId: str | java.lang.String, type: int | java.jint | java.lang.Integer, data: android.os.Bundle, /) -> None: ...
        def onVideoAvailable(self, inputId: str | java.lang.String, /) -> None: ...
        def onVideoFreezeUpdated(self, inputId: str | java.lang.String, isFrozen: bool | java.jboolean | java.lang.Boolean, /) -> None: ...
        def onVideoSizeChanged(self, inputId: str | java.lang.String, width: int | java.jint | java.lang.Integer, height: int | java.jint | java.lang.Integer, /) -> None: ...
        def onVideoUnavailable(self, inputId: str | java.lang.String, reason: int | java.jint | java.lang.Integer, /) -> None: ...

    class TimeShiftPositionCallback(java.lang.Object):
        def __init__(self) -> None: ...
        def onTimeShiftCurrentPositionChanged(self, inputId: str | java.lang.String, timeMs: int | java.jlong | java.lang.Long, /) -> None: ...
        def onTimeShiftStartPositionChanged(self, inputId: str | java.lang.String, timeMs: int | java.jlong | java.lang.Long, /) -> None: ...

    class OnUnhandledInputEventListener(java.lang.Object):
        def onUnhandledInputEvent(self, arg1: android.view.InputEvent, /) -> bool: ...
