import typing

import java
import java.lang

class Effect(java.lang.Object):
    def __init__(self) -> None: ...
    def apply(self, arg1: int | java.jint | java.lang.Integer, arg2: int | java.jint | java.lang.Integer, arg3: int | java.jint | java.lang.Integer, arg4: int | java.jint | java.lang.Integer, /) -> None: ...
    def getName(self) -> str: ...
    def release(self) -> None: ...
    def setParameter(self, arg1: str | java.lang.String, arg2: java.lang.Object | int | bool | float | str, /) -> None: ...
    def setUpdateListener(self, listener: EffectUpdateListener, /) -> None: ...

class EffectContext(java.lang.Object):
    @staticmethod
    def createWithCurrentGlContext() -> EffectContext: ...
    def getFactory(self) -> EffectFactory: ...
    def release(self) -> None: ...

class EffectFactory(java.lang.Object):
    EFFECT_AUTOFIX: typing.ClassVar[str] = ...
    EFFECT_BACKDROPPER: typing.ClassVar[str] = ...
    EFFECT_BITMAPOVERLAY: typing.ClassVar[str] = ...
    EFFECT_BLACKWHITE: typing.ClassVar[str] = ...
    EFFECT_BRIGHTNESS: typing.ClassVar[str] = ...
    EFFECT_CONTRAST: typing.ClassVar[str] = ...
    EFFECT_CROP: typing.ClassVar[str] = ...
    EFFECT_CROSSPROCESS: typing.ClassVar[str] = ...
    EFFECT_DOCUMENTARY: typing.ClassVar[str] = ...
    EFFECT_DUOTONE: typing.ClassVar[str] = ...
    EFFECT_FILLLIGHT: typing.ClassVar[str] = ...
    EFFECT_FISHEYE: typing.ClassVar[str] = ...
    EFFECT_FLIP: typing.ClassVar[str] = ...
    EFFECT_GRAIN: typing.ClassVar[str] = ...
    EFFECT_GRAYSCALE: typing.ClassVar[str] = ...
    EFFECT_LOMOISH: typing.ClassVar[str] = ...
    EFFECT_NEGATIVE: typing.ClassVar[str] = ...
    EFFECT_POSTERIZE: typing.ClassVar[str] = ...
    EFFECT_REDEYE: typing.ClassVar[str] = ...
    EFFECT_ROTATE: typing.ClassVar[str] = ...
    EFFECT_SATURATE: typing.ClassVar[str] = ...
    EFFECT_SEPIA: typing.ClassVar[str] = ...
    EFFECT_SHARPEN: typing.ClassVar[str] = ...
    EFFECT_STRAIGHTEN: typing.ClassVar[str] = ...
    EFFECT_TEMPERATURE: typing.ClassVar[str] = ...
    EFFECT_TINT: typing.ClassVar[str] = ...
    EFFECT_VIGNETTE: typing.ClassVar[str] = ...
    def createEffect(self, effectName: str | java.lang.String, /) -> Effect: ...
    @staticmethod
    def isEffectSupported(effectName: str | java.lang.String, /) -> bool: ...

class EffectUpdateListener(java.lang.Object):
    def onEffectUpdated(self, arg1: Effect, arg2: java.lang.Object | int | bool | float | str, /) -> None: ...
