import typing

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

class ActiveProcessingPicture(android.os.Parcelable):
    CREATOR: typing.ClassVar[android.os.Parcelable.Creator[ActiveProcessingPicture]] = ...
    def __init__(self, id: int | java.jint | java.lang.Integer, profileId: str | java.lang.String, /) -> None: ...
    def describeContents(self) -> int: ...
    def getId(self) -> int: ...
    def getProfileId(self) -> str: ...
    def writeToParcel(self, dest: android.os.Parcel, flags: int | java.jint | java.lang.Integer, /) -> None: ...

class AmbientBacklightEvent(android.os.Parcelable):
    AMBIENT_BACKLIGHT_EVENT_DISABLED: typing.ClassVar[int] = ...
    AMBIENT_BACKLIGHT_EVENT_ENABLED: typing.ClassVar[int] = ...
    AMBIENT_BACKLIGHT_EVENT_INTERRUPTED: typing.ClassVar[int] = ...
    AMBIENT_BACKLIGHT_EVENT_METADATA_AVAILABLE: typing.ClassVar[int] = ...
    CREATOR: typing.ClassVar[android.os.Parcelable.Creator[AmbientBacklightEvent]] = ...
    def __init__(self, eventType: int | java.jint | java.lang.Integer, metadata: AmbientBacklightMetadata, /) -> None: ...
    def describeContents(self) -> int: ...
    def equals(self, obj: java.lang.Object | int | bool | float | str, /) -> bool: ...
    def getEventType(self) -> int: ...
    def getMetadata(self) -> AmbientBacklightMetadata: ...
    def hashCode(self) -> int: ...
    def toString(self) -> str: ...
    def writeToParcel(self, dest: android.os.Parcel, flags: int | java.jint | java.lang.Integer, /) -> None: ...

class AmbientBacklightMetadata(android.os.Parcelable):
    ALGORITHM_NONE: typing.ClassVar[int] = ...
    ALGORITHM_RLE: typing.ClassVar[int] = ...
    CREATOR: typing.ClassVar[android.os.Parcelable.Creator[AmbientBacklightMetadata]] = ...
    def __init__(self, packageName: str | java.lang.String, compressAlgorithm: int | java.jint | java.lang.Integer, source: int | java.jint | java.lang.Integer, colorFormat: int | java.jint | java.lang.Integer, horizontalZonesNumber: int | java.jint | java.lang.Integer, verticalZonesNumber: int | java.jint | java.lang.Integer, zonesColors: java.chaquopy.JavaArrayJInt, /) -> None: ...
    def describeContents(self) -> int: ...
    def getColorFormat(self) -> int: ...
    def getCompressionAlgorithm(self) -> int: ...
    def getHorizontalZonesCount(self) -> int: ...
    def getPackageName(self) -> str: ...
    def getSource(self) -> int: ...
    def getVerticalZonesCount(self) -> int: ...
    def getZoneColors(self) -> java.chaquopy.JavaArrayJInt: ...
    def toString(self) -> str: ...
    def writeToParcel(self, dest: android.os.Parcel, flags: int | java.jint | java.lang.Integer, /) -> None: ...

class AmbientBacklightSettings(android.os.Parcelable):
    CREATOR: typing.ClassVar[android.os.Parcelable.Creator[AmbientBacklightSettings]] = ...
    SOURCE_AUDIO: typing.ClassVar[int] = ...
    SOURCE_AUDIO_VIDEO: typing.ClassVar[int] = ...
    SOURCE_NONE: typing.ClassVar[int] = ...
    SOURCE_VIDEO: typing.ClassVar[int] = ...
    def __init__(self, source: int | java.jint | java.lang.Integer, maxFps: int | java.jint | java.lang.Integer, colorFormat: int | java.jint | java.lang.Integer, horizontalZonesNumber: int | java.jint | java.lang.Integer, verticalZonesNumber: int | java.jint | java.lang.Integer, isLetterboxOmitted: bool | java.jboolean | java.lang.Boolean, threshold: int | java.jint | java.lang.Integer, /) -> None: ...
    def describeContents(self) -> int: ...
    def getColorFormat(self) -> int: ...
    def getHorizontalZonesCount(self) -> int: ...
    def getMaxFps(self) -> int: ...
    def getSource(self) -> int: ...
    def getThreshold(self) -> int: ...
    def getVerticalZonesCount(self) -> int: ...
    def isLetterboxOmitted(self) -> bool: ...
    def toString(self) -> str: ...
    def writeToParcel(self, dest: android.os.Parcel, flags: int | java.jint | java.lang.Integer, /) -> None: ...

class MediaQualityContract(java.lang.Object):
    LEVEL_HIGH: typing.ClassVar[str] = ...
    LEVEL_LOW: typing.ClassVar[str] = ...
    LEVEL_MEDIUM: typing.ClassVar[str] = ...
    LEVEL_OFF: typing.ClassVar[str] = ...

    class SoundQuality(java.lang.Object):
        PARAMETER_AUTO_VOLUME_CONTROL: typing.ClassVar[str] = ...
        PARAMETER_BALANCE: typing.ClassVar[str] = ...
        PARAMETER_BASS: typing.ClassVar[str] = ...
        PARAMETER_DIALOGUE_ENHANCER: typing.ClassVar[str] = ...
        PARAMETER_DIGITAL_OUTPUT_DELAY_MILLIS: typing.ClassVar[str] = ...
        PARAMETER_DIGITAL_OUTPUT_MODE: typing.ClassVar[str] = ...
        PARAMETER_DOLBY_AUDIO_PROCESSING_DOLBY_ATMOS: typing.ClassVar[str] = ...
        PARAMETER_DOLBY_AUDIO_PROCESSING_SOUND_MODE: typing.ClassVar[str] = ...
        PARAMETER_DOLBY_AUDIO_PROCESSING_SURROUND_VIRTUALIZER: typing.ClassVar[str] = ...
        PARAMETER_DOLBY_AUDIO_PROCESSING_VOLUME_LEVELER: typing.ClassVar[str] = ...
        PARAMETER_DOWN_MIX_MODE: typing.ClassVar[str] = ...
        PARAMETER_DTS_DRC: typing.ClassVar[str] = ...
        PARAMETER_DTS_VIRTUAL_X_DEFINITION: typing.ClassVar[str] = ...
        PARAMETER_DTS_VIRTUAL_X_DIALOG_CLARITY: typing.ClassVar[str] = ...
        PARAMETER_DTS_VIRTUAL_X_HEIGHT: typing.ClassVar[str] = ...
        PARAMETER_DTS_VIRTUAL_X_LIMITER: typing.ClassVar[str] = ...
        PARAMETER_DTS_VIRTUAL_X_TBHDX: typing.ClassVar[str] = ...
        PARAMETER_DTS_VIRTUAL_X_TRU_SURROUND_X: typing.ClassVar[str] = ...
        PARAMETER_DTS_VIRTUAL_X_TRU_VOLUME_HD: typing.ClassVar[str] = ...
        PARAMETER_EARC: typing.ClassVar[str] = ...
        PARAMETER_SPEAKERS: typing.ClassVar[str] = ...
        PARAMETER_SPEAKERS_DELAY_MILLIS: typing.ClassVar[str] = ...
        PARAMETER_SURROUND_SOUND: typing.ClassVar[str] = ...
        PARAMETER_TREBLE: typing.ClassVar[str] = ...

    class PictureQuality(java.lang.Object):
        PARAMETER_AUTO_PICTURE_QUALITY_ENABLED: typing.ClassVar[str] = ...
        PARAMETER_AUTO_SUPER_RESOLUTION_ENABLED: typing.ClassVar[str] = ...
        PARAMETER_BLUE_STRETCH: typing.ClassVar[str] = ...
        PARAMETER_BRIGHTNESS: typing.ClassVar[str] = ...
        PARAMETER_COLOR_TEMPERATURE: typing.ClassVar[str] = ...
        PARAMETER_COLOR_TUNE: typing.ClassVar[str] = ...
        PARAMETER_COLOR_TUNER_BLUE_GAIN: typing.ClassVar[str] = ...
        PARAMETER_COLOR_TUNER_BLUE_OFFSET: typing.ClassVar[str] = ...
        PARAMETER_COLOR_TUNER_BRIGHTNESS: typing.ClassVar[str] = ...
        PARAMETER_COLOR_TUNER_GREEN_GAIN: typing.ClassVar[str] = ...
        PARAMETER_COLOR_TUNER_GREEN_OFFSET: typing.ClassVar[str] = ...
        PARAMETER_COLOR_TUNER_HUE: typing.ClassVar[str] = ...
        PARAMETER_COLOR_TUNER_RED_GAIN: typing.ClassVar[str] = ...
        PARAMETER_COLOR_TUNER_RED_OFFSET: typing.ClassVar[str] = ...
        PARAMETER_COLOR_TUNER_SATURATION: typing.ClassVar[str] = ...
        PARAMETER_CONTRAST: typing.ClassVar[str] = ...
        PARAMETER_DECONTOUR: typing.ClassVar[str] = ...
        PARAMETER_DYNAMIC_LUMA_CONTROL: typing.ClassVar[str] = ...
        PARAMETER_FILM_MODE: typing.ClassVar[str] = ...
        PARAMETER_FLESH_TONE: typing.ClassVar[str] = ...
        PARAMETER_GLOBAL_DIMMING: typing.ClassVar[str] = ...
        PARAMETER_HUE: typing.ClassVar[str] = ...
        PARAMETER_MPEG_NOISE_REDUCTION: typing.ClassVar[str] = ...
        PARAMETER_NOISE_REDUCTION: typing.ClassVar[str] = ...
        PARAMETER_SATURATION: typing.ClassVar[str] = ...
        PARAMETER_SHARPNESS: typing.ClassVar[str] = ...

class MediaQualityManager(java.lang.Object):
    def addActiveProcessingPictureListener(self, executor: java.util.concurrent.Executor, listener: java.util.function.Consumer[java.util.List[ActiveProcessingPicture]], /) -> None: ...
    def createPictureProfile(self, pp: PictureProfile, /) -> None: ...
    def createSoundProfile(self, sp: SoundProfile, /) -> None: ...
    def getAvailablePictureProfiles(self, options: MediaQualityManager.ProfileQueryParams, /) -> java.util.List[PictureProfile]: ...
    def getAvailableSoundProfiles(self, options: MediaQualityManager.ProfileQueryParams, /) -> java.util.List[SoundProfile]: ...
    def getParameterCapabilities(self, names: java.util.List[java.lang.String], /) -> java.util.List[ParameterCapability]: ...
    def getPictureProfile(self, type: int | java.jint | java.lang.Integer, name: str | java.lang.String, options: MediaQualityManager.ProfileQueryParams, /) -> PictureProfile: ...
    def getSoundProfile(self, type: int | java.jint | java.lang.Integer, name: str | java.lang.String, options: MediaQualityManager.ProfileQueryParams, /) -> SoundProfile: ...
    def isAmbientBacklightEnabled(self) -> bool: ...
    def isAutoPictureQualityEnabled(self) -> bool: ...
    def isAutoSoundQualityEnabled(self) -> bool: ...
    def isSuperResolutionEnabled(self) -> bool: ...
    def registerAmbientBacklightCallback(self, executor: java.util.concurrent.Executor, callback: MediaQualityManager.AmbientBacklightCallback, /) -> None: ...
    def registerPictureProfileCallback(self, executor: java.util.concurrent.Executor, callback: MediaQualityManager.PictureProfileCallback, /) -> None: ...
    def registerSoundProfileCallback(self, executor: java.util.concurrent.Executor, callback: MediaQualityManager.SoundProfileCallback, /) -> None: ...
    def removeActiveProcessingPictureListener(self, listener: java.util.function.Consumer[java.util.List[ActiveProcessingPicture]], /) -> None: ...
    def removePictureProfile(self, profileId: str | java.lang.String, /) -> None: ...
    def removeSoundProfile(self, profileId: str | java.lang.String, /) -> None: ...
    def setAmbientBacklightEnabled(self, enabled: bool | java.jboolean | java.lang.Boolean, /) -> None: ...
    def setAmbientBacklightSettings(self, settings: AmbientBacklightSettings, /) -> None: ...
    def unregisterAmbientBacklightCallback(self, callback: MediaQualityManager.AmbientBacklightCallback, /) -> None: ...
    def unregisterPictureProfileCallback(self, callback: MediaQualityManager.PictureProfileCallback, /) -> None: ...
    def unregisterSoundProfileCallback(self, callback: MediaQualityManager.SoundProfileCallback, /) -> None: ...
    def updatePictureProfile(self, profileId: str | java.lang.String, pp: PictureProfile, /) -> None: ...
    def updateSoundProfile(self, profileId: str | java.lang.String, sp: SoundProfile, /) -> None: ...

    class SoundProfileCallback(java.lang.Object):
        def __init__(self) -> None: ...
        def onError(self, profileId: str | java.lang.String, errorCode: int | java.jint | java.lang.Integer, /) -> None: ...
        def onParameterCapabilitiesChanged(self, profileId: str | java.lang.String, updatedCaps: java.util.List[ParameterCapability], /) -> None: ...
        def onSoundProfileAdded(self, profileId: str | java.lang.String, profile: SoundProfile, /) -> None: ...
        def onSoundProfileRemoved(self, profileId: str | java.lang.String, profile: SoundProfile, /) -> None: ...
        def onSoundProfileUpdated(self, profileId: str | java.lang.String, profile: SoundProfile, /) -> None: ...

    class ProfileQueryParams(android.os.Parcelable):
        CREATOR: typing.ClassVar[android.os.Parcelable.Creator[MediaQualityManager.ProfileQueryParams]] = ...
        def areParametersIncluded(self) -> bool: ...
        def describeContents(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) -> MediaQualityManager.ProfileQueryParams: ...
            def setParametersIncluded(self, included: bool | java.jboolean | java.lang.Boolean, /) -> MediaQualityManager.ProfileQueryParams.Builder: ...

    class PictureProfileCallback(java.lang.Object):
        def __init__(self) -> None: ...
        def onError(self, profileId: str | java.lang.String, errorCode: int | java.jint | java.lang.Integer, /) -> None: ...
        def onParameterCapabilitiesChanged(self, profileId: str | java.lang.String, updatedCaps: java.util.List[ParameterCapability], /) -> None: ...
        def onPictureProfileAdded(self, profileId: str | java.lang.String, profile: PictureProfile, /) -> None: ...
        def onPictureProfileRemoved(self, profileId: str | java.lang.String, profile: PictureProfile, /) -> None: ...
        def onPictureProfileUpdated(self, profileId: str | java.lang.String, profile: PictureProfile, /) -> None: ...

    class AmbientBacklightCallback(java.lang.Object):
        def onAmbientBacklightEvent(self, arg1: AmbientBacklightEvent, /) -> None: ...

class ParameterCapability(android.os.Parcelable):
    CAPABILITY_DEFAULT: typing.ClassVar[str] = ...
    CAPABILITY_ENUM: typing.ClassVar[str] = ...
    CAPABILITY_MAX: typing.ClassVar[str] = ...
    CAPABILITY_MIN: typing.ClassVar[str] = ...
    CREATOR: typing.ClassVar[android.os.Parcelable.Creator[ParameterCapability]] = ...
    TYPE_DOUBLE: typing.ClassVar[int] = ...
    TYPE_INT: typing.ClassVar[int] = ...
    TYPE_LONG: typing.ClassVar[int] = ...
    TYPE_NONE: typing.ClassVar[int] = ...
    TYPE_STRING: typing.ClassVar[int] = ...
    def describeContents(self) -> int: ...
    def getCapabilities(self) -> android.os.Bundle: ...
    def getParameterName(self) -> str: ...
    def getParameterType(self) -> int: ...
    def isSupported(self) -> bool: ...
    def writeToParcel(self, dest: android.os.Parcel, flags: int | java.jint | java.lang.Integer, /) -> None: ...

class PictureProfile(android.os.Parcelable):
    CREATOR: typing.ClassVar[android.os.Parcelable.Creator[PictureProfile]] = ...
    ERROR_DUPLICATE: typing.ClassVar[int] = ...
    ERROR_INVALID_ARGUMENT: typing.ClassVar[int] = ...
    ERROR_NOT_ALLOWLISTED: typing.ClassVar[int] = ...
    ERROR_NO_PERMISSION: typing.ClassVar[int] = ...
    ERROR_UNKNOWN: typing.ClassVar[int] = ...
    TYPE_APPLICATION: typing.ClassVar[int] = ...
    TYPE_SYSTEM: typing.ClassVar[int] = ...
    def describeContents(self) -> int: ...
    def getInputId(self) -> str: ...
    def getName(self) -> str: ...
    def getPackageName(self) -> str: ...
    def getParameters(self) -> android.os.PersistableBundle: ...
    def getProfileId(self) -> str: ...
    def getProfileType(self) -> int: ...
    def writeToParcel(self, dest: android.os.Parcel, flags: int | java.jint | java.lang.Integer, /) -> None: ...

    class Builder(java.lang.Object):
        @typing.overload
        def __init__(self, p: PictureProfile, /) -> None: ...
        @typing.overload
        def __init__(self, name: str | java.lang.String, /) -> None: ...
        def build(self) -> PictureProfile: ...
        def setParameters(self, params: android.os.PersistableBundle, /) -> PictureProfile.Builder: ...

class SoundProfile(android.os.Parcelable):
    CREATOR: typing.ClassVar[android.os.Parcelable.Creator[SoundProfile]] = ...
    ERROR_DUPLICATE: typing.ClassVar[int] = ...
    ERROR_INVALID_ARGUMENT: typing.ClassVar[int] = ...
    ERROR_NOT_ALLOWLISTED: typing.ClassVar[int] = ...
    ERROR_NO_PERMISSION: typing.ClassVar[int] = ...
    ERROR_UNKNOWN: typing.ClassVar[int] = ...
    TYPE_APPLICATION: typing.ClassVar[int] = ...
    TYPE_SYSTEM: typing.ClassVar[int] = ...
    def describeContents(self) -> int: ...
    def getInputId(self) -> str: ...
    def getName(self) -> str: ...
    def getPackageName(self) -> str: ...
    def getParameters(self) -> android.os.PersistableBundle: ...
    def getProfileId(self) -> str: ...
    def getProfileType(self) -> int: ...
    def writeToParcel(self, dest: android.os.Parcel, flags: int | java.jint | java.lang.Integer, /) -> None: ...

    class Builder(java.lang.Object):
        @typing.overload
        def __init__(self, p: SoundProfile, /) -> None: ...
        @typing.overload
        def __init__(self, name: str | java.lang.String, /) -> None: ...
        def build(self) -> SoundProfile: ...
        def setParameters(self, params: android.os.PersistableBundle, /) -> SoundProfile.Builder: ...
