import typing

import android.content
import android.graphics
import android.util
import android.view
import java
import java.chaquopy
import java.lang
import java.util

class Animator(java.lang.Cloneable):
    DURATION_INFINITE: typing.ClassVar[int] = ...
    def __init__(self) -> None: ...
    def addListener(self, listener: Animator.AnimatorListener, /) -> None: ...
    def addPauseListener(self, listener: Animator.AnimatorPauseListener, /) -> None: ...
    def cancel(self) -> None: ...
    def clone(self) -> Animator: ...
    def end(self) -> None: ...
    def getDuration(self) -> int: ...
    def getInterpolator(self) -> TimeInterpolator: ...
    def getListeners(self) -> java.util.ArrayList[Animator.AnimatorListener]: ...
    def getStartDelay(self) -> int: ...
    def getTotalDuration(self) -> int: ...
    def isPaused(self) -> bool: ...
    def isRunning(self) -> bool: ...
    def isStarted(self) -> bool: ...
    def pause(self) -> None: ...
    def removeAllListeners(self) -> None: ...
    def removeListener(self, listener: Animator.AnimatorListener, /) -> None: ...
    def removePauseListener(self, listener: Animator.AnimatorPauseListener, /) -> None: ...
    def resume(self) -> None: ...
    def setDuration(self, arg1: int | java.jlong | java.lang.Long, /) -> Animator: ...
    def setInterpolator(self, arg1: TimeInterpolator, /) -> None: ...
    def setStartDelay(self, arg1: int | java.jlong | java.lang.Long, /) -> None: ...
    def setTarget(self, target: java.lang.Object | int | bool | float | str, /) -> None: ...
    def setupEndValues(self) -> None: ...
    def setupStartValues(self) -> None: ...
    def start(self) -> None: ...

    class AnimatorPauseListener(java.lang.Object):
        def onAnimationPause(self, arg1: Animator, /) -> None: ...
        def onAnimationResume(self, arg1: Animator, /) -> None: ...

    class AnimatorListener(java.lang.Object):
        def onAnimationCancel(self, arg1: Animator, /) -> None: ...
        @typing.overload
        def onAnimationEnd(self, arg1: Animator, /) -> None: ...
        @typing.overload
        def onAnimationEnd(self, animation: Animator, isReverse: bool | java.jboolean | java.lang.Boolean, /) -> None: ...
        def onAnimationRepeat(self, arg1: Animator, /) -> None: ...
        @typing.overload
        def onAnimationStart(self, arg1: Animator, /) -> None: ...
        @typing.overload
        def onAnimationStart(self, animation: Animator, isReverse: bool | java.jboolean | java.lang.Boolean, /) -> None: ...

class AnimatorInflater(java.lang.Object):
    def __init__(self) -> None: ...
    @staticmethod
    def loadAnimator(context: android.content.Context, id: int | java.jint | java.lang.Integer, /) -> Animator: ...
    @staticmethod
    def loadStateListAnimator(context: android.content.Context, id: int | java.jint | java.lang.Integer, /) -> StateListAnimator: ...

class AnimatorListenerAdapter(Animator.AnimatorListener, Animator.AnimatorPauseListener):
    def __init__(self) -> None: ...
    def onAnimationCancel(self, animation: Animator, /) -> None: ...
    def onAnimationEnd(self, animation: Animator, /) -> None: ...
    def onAnimationPause(self, animation: Animator, /) -> None: ...
    def onAnimationRepeat(self, animation: Animator, /) -> None: ...
    def onAnimationResume(self, animation: Animator, /) -> None: ...
    def onAnimationStart(self, animation: Animator, /) -> None: ...

class AnimatorSet(Animator):
    def __init__(self) -> None: ...
    def cancel(self) -> None: ...
    def clone(self) -> AnimatorSet: ...
    def end(self) -> None: ...
    def getChildAnimations(self) -> java.util.ArrayList[Animator]: ...
    def getCurrentPlayTime(self) -> int: ...
    def getDuration(self) -> int: ...
    def getInterpolator(self) -> TimeInterpolator: ...
    def getStartDelay(self) -> int: ...
    def getTotalDuration(self) -> int: ...
    def isRunning(self) -> bool: ...
    def isStarted(self) -> bool: ...
    def pause(self) -> None: ...
    def play(self, anim: Animator, /) -> AnimatorSet.Builder: ...
    @typing.overload
    def playSequentially(self, items: java.util.List[Animator], /) -> None: ...
    @typing.overload
    def playSequentially(self, *items: Animator) -> None: ...
    @typing.overload
    def playTogether(self, items: java.util.Collection[Animator], /) -> None: ...
    @typing.overload
    def playTogether(self, *items: Animator) -> None: ...
    def resume(self) -> None: ...
    def reverse(self) -> None: ...
    def setCurrentPlayTime(self, playTime: int | java.jlong | java.lang.Long, /) -> None: ...
    def setDuration(self, duration: int | java.jlong | java.lang.Long, /) -> AnimatorSet: ...
    def setInterpolator(self, interpolator: TimeInterpolator, /) -> None: ...
    def setStartDelay(self, startDelay: int | java.jlong | java.lang.Long, /) -> None: ...
    def setTarget(self, target: java.lang.Object | int | bool | float | str, /) -> None: ...
    def setupEndValues(self) -> None: ...
    def setupStartValues(self) -> None: ...
    def start(self) -> None: ...
    def toString(self) -> str: ...

    class Builder(java.lang.Object):
        @typing.overload
        def after(self, delay: int | java.jlong | java.lang.Long, /) -> AnimatorSet.Builder: ...
        @typing.overload
        def after(self, anim: Animator, /) -> AnimatorSet.Builder: ...
        def before(self, anim: Animator, /) -> AnimatorSet.Builder: ...
        def with_(self, anim: Animator, /) -> AnimatorSet.Builder: ...

class ArgbEvaluator(TypeEvaluator):
    def __init__(self) -> None: ...
    def evaluate(self, fraction: float | java.jfloat | java.lang.Float, startValue: java.lang.Object | int | bool | float | str, endValue: java.lang.Object | int | bool | float | str, /) -> java.lang.Object: ...

_BidirectionalTypeConverter__T = typing.TypeVar('_BidirectionalTypeConverter__T')  # <T>
_BidirectionalTypeConverter__V = typing.TypeVar('_BidirectionalTypeConverter__V')  # <V>
class BidirectionalTypeConverter(TypeConverter[_BidirectionalTypeConverter__T, _BidirectionalTypeConverter__V], typing.Generic[_BidirectionalTypeConverter__T, _BidirectionalTypeConverter__V]):
    def __init__(self, fromClass: typing.Type[_BidirectionalTypeConverter__T], toClass: typing.Type[_BidirectionalTypeConverter__V], /) -> None: ...
    def convertBack(self, arg1: _BidirectionalTypeConverter__V, /) -> _BidirectionalTypeConverter__T: ...
    def invert(self) -> BidirectionalTypeConverter[_BidirectionalTypeConverter__V, _BidirectionalTypeConverter__T]: ...

class FloatArrayEvaluator(TypeEvaluator[java.chaquopy.JavaArrayJFloat]):
    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, reuseArray: java.chaquopy.JavaArrayJFloat, /) -> None: ...
    def evaluate(self, fraction: float | java.jfloat | java.lang.Float, startValue: java.chaquopy.JavaArrayJFloat, endValue: java.chaquopy.JavaArrayJFloat, /) -> java.chaquopy.JavaArrayJFloat: ...

class FloatEvaluator(TypeEvaluator[java.lang.Number]):
    def __init__(self) -> None: ...
    def evaluate(self, fraction: float | java.jfloat | java.lang.Float, startValue: java.lang.Number, endValue: java.lang.Number, /) -> float: ...

class IntArrayEvaluator(TypeEvaluator[java.chaquopy.JavaArrayJInt]):
    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, reuseArray: java.chaquopy.JavaArrayJInt, /) -> None: ...
    def evaluate(self, fraction: float | java.jfloat | java.lang.Float, startValue: java.chaquopy.JavaArrayJInt, endValue: java.chaquopy.JavaArrayJInt, /) -> java.chaquopy.JavaArrayJInt: ...

class IntEvaluator(TypeEvaluator[java.lang.Integer]):
    def __init__(self) -> None: ...
    def evaluate(self, fraction: float | java.jfloat | java.lang.Float, startValue: int | java.jint | java.lang.Integer, endValue: int | java.jint | java.lang.Integer, /) -> int: ...

class Keyframe(java.lang.Cloneable):
    def __init__(self) -> None: ...
    def clone(self) -> Keyframe: ...
    def getFraction(self) -> float: ...
    def getInterpolator(self) -> TimeInterpolator: ...
    def getType(self) -> typing.Type: ...
    def getValue(self) -> java.lang.Object: ...
    def hasValue(self) -> bool: ...
    @typing.overload
    @staticmethod
    def ofFloat(fraction: float | java.jfloat | java.lang.Float, /) -> Keyframe: ...
    @typing.overload
    @staticmethod
    def ofFloat(fraction: float | java.jfloat | java.lang.Float, value: float | java.jfloat | java.lang.Float, /) -> Keyframe: ...
    @typing.overload
    @staticmethod
    def ofInt(fraction: float | java.jfloat | java.lang.Float, /) -> Keyframe: ...
    @typing.overload
    @staticmethod
    def ofInt(fraction: float | java.jfloat | java.lang.Float, value: int | java.jint | java.lang.Integer, /) -> Keyframe: ...
    @typing.overload
    @staticmethod
    def ofObject(fraction: float | java.jfloat | java.lang.Float, /) -> Keyframe: ...
    @typing.overload
    @staticmethod
    def ofObject(fraction: float | java.jfloat | java.lang.Float, value: java.lang.Object | int | bool | float | str, /) -> Keyframe: ...
    def setFraction(self, fraction: float | java.jfloat | java.lang.Float, /) -> None: ...
    def setInterpolator(self, interpolator: TimeInterpolator, /) -> None: ...
    def setValue(self, arg1: java.lang.Object | int | bool | float | str, /) -> None: ...

class LayoutTransition(java.lang.Object):
    APPEARING: typing.ClassVar[int] = ...
    CHANGE_APPEARING: typing.ClassVar[int] = ...
    CHANGE_DISAPPEARING: typing.ClassVar[int] = ...
    CHANGING: typing.ClassVar[int] = ...
    DISAPPEARING: typing.ClassVar[int] = ...
    def __init__(self) -> None: ...
    def addChild(self, parent: android.view.ViewGroup, child: android.view.View, /) -> None: ...
    def addTransitionListener(self, listener: LayoutTransition.TransitionListener, /) -> None: ...
    def disableTransitionType(self, transitionType: int | java.jint | java.lang.Integer, /) -> None: ...
    def enableTransitionType(self, transitionType: int | java.jint | java.lang.Integer, /) -> None: ...
    def getAnimator(self, transitionType: int | java.jint | java.lang.Integer, /) -> Animator: ...
    def getDuration(self, transitionType: int | java.jint | java.lang.Integer, /) -> int: ...
    def getInterpolator(self, transitionType: int | java.jint | java.lang.Integer, /) -> TimeInterpolator: ...
    def getStagger(self, transitionType: int | java.jint | java.lang.Integer, /) -> int: ...
    def getStartDelay(self, transitionType: int | java.jint | java.lang.Integer, /) -> int: ...
    def getTransitionListeners(self) -> java.util.List[LayoutTransition.TransitionListener]: ...
    @typing.overload
    def hideChild(self, parent: android.view.ViewGroup, child: android.view.View, /) -> None: ...
    @typing.overload
    def hideChild(self, parent: android.view.ViewGroup, child: android.view.View, newVisibility: int | java.jint | java.lang.Integer, /) -> None: ...
    def isChangingLayout(self) -> bool: ...
    def isRunning(self) -> bool: ...
    def isTransitionTypeEnabled(self, transitionType: int | java.jint | java.lang.Integer, /) -> bool: ...
    def removeChild(self, parent: android.view.ViewGroup, child: android.view.View, /) -> None: ...
    def removeTransitionListener(self, listener: LayoutTransition.TransitionListener, /) -> None: ...
    def setAnimateParentHierarchy(self, animateParentHierarchy: bool | java.jboolean | java.lang.Boolean, /) -> None: ...
    def setAnimator(self, transitionType: int | java.jint | java.lang.Integer, animator: Animator, /) -> None: ...
    @typing.overload
    def setDuration(self, duration: int | java.jlong | java.lang.Long, /) -> None: ...
    @typing.overload
    def setDuration(self, transitionType: int | java.jint | java.lang.Integer, duration: int | java.jlong | java.lang.Long, /) -> None: ...
    def setInterpolator(self, transitionType: int | java.jint | java.lang.Integer, interpolator: TimeInterpolator, /) -> None: ...
    def setStagger(self, transitionType: int | java.jint | java.lang.Integer, duration: int | java.jlong | java.lang.Long, /) -> None: ...
    def setStartDelay(self, transitionType: int | java.jint | java.lang.Integer, delay: int | java.jlong | java.lang.Long, /) -> None: ...
    @typing.overload
    def showChild(self, parent: android.view.ViewGroup, child: android.view.View, /) -> None: ...
    @typing.overload
    def showChild(self, parent: android.view.ViewGroup, child: android.view.View, oldVisibility: int | java.jint | java.lang.Integer, /) -> None: ...

    class TransitionListener(java.lang.Object):
        def endTransition(self, arg1: LayoutTransition, arg2: android.view.ViewGroup, arg3: android.view.View, arg4: int | java.jint | java.lang.Integer, /) -> None: ...
        def startTransition(self, arg1: LayoutTransition, arg2: android.view.ViewGroup, arg3: android.view.View, arg4: int | java.jint | java.lang.Integer, /) -> None: ...

class ObjectAnimator(ValueAnimator):
    def __init__(self) -> None: ...
    def clone(self) -> ObjectAnimator: ...
    def getPropertyName(self) -> str | None: ...
    def getTarget(self) -> java.lang.Object | None: ...
    _ofArgb_0__T = typing.TypeVar('_ofArgb_0__T')  # <T>
    @typing.overload
    @staticmethod
    def ofArgb(target: _ofArgb_0__T, property: android.util.Property[_ofArgb_0__T, java.lang.Integer], /, *values: java.jint) -> ObjectAnimator: ...
    @typing.overload
    @staticmethod
    def ofArgb(target: java.lang.Object | int | bool | float | str, propertyName: str | java.lang.String, /, *values: java.jint) -> ObjectAnimator: ...
    _ofFloat_0__T = typing.TypeVar('_ofFloat_0__T')  # <T>
    _ofFloat_2__T = typing.TypeVar('_ofFloat_2__T')  # <T>
    @typing.overload
    @staticmethod
    def ofFloat(target: _ofFloat_0__T, property: android.util.Property[_ofFloat_0__T, java.lang.Float], /, *values: java.jfloat) -> ObjectAnimator: ...
    @typing.overload
    @staticmethod
    def ofFloat(target: java.lang.Object | int | bool | float | str, propertyName: str | java.lang.String, /, *values: java.jfloat) -> ObjectAnimator: ...
    @typing.overload
    @staticmethod
    def ofFloat(target: _ofFloat_2__T, xProperty: android.util.Property[_ofFloat_2__T, java.lang.Float], yProperty: android.util.Property[_ofFloat_2__T, java.lang.Float], path: android.graphics.Path, /) -> ObjectAnimator: ...
    @typing.overload
    @staticmethod
    def ofFloat(target: java.lang.Object | int | bool | float | str, xPropertyName: str | java.lang.String, yPropertyName: str | java.lang.String, path: android.graphics.Path, /) -> ObjectAnimator: ...
    _ofInt_0__T = typing.TypeVar('_ofInt_0__T')  # <T>
    _ofInt_2__T = typing.TypeVar('_ofInt_2__T')  # <T>
    @typing.overload
    @staticmethod
    def ofInt(target: _ofInt_0__T, property: android.util.Property[_ofInt_0__T, java.lang.Integer], /, *values: java.jint) -> ObjectAnimator: ...
    @typing.overload
    @staticmethod
    def ofInt(target: java.lang.Object | int | bool | float | str, propertyName: str | java.lang.String, /, *values: java.jint) -> ObjectAnimator: ...
    @typing.overload
    @staticmethod
    def ofInt(target: _ofInt_2__T, xProperty: android.util.Property[_ofInt_2__T, java.lang.Integer], yProperty: android.util.Property[_ofInt_2__T, java.lang.Integer], path: android.graphics.Path, /) -> ObjectAnimator: ...
    @typing.overload
    @staticmethod
    def ofInt(target: java.lang.Object | int | bool | float | str, xPropertyName: str | java.lang.String, yPropertyName: str | java.lang.String, path: android.graphics.Path, /) -> ObjectAnimator: ...
    _ofMultiFloat_2__T = typing.TypeVar('_ofMultiFloat_2__T')  # <T>
    @typing.overload
    @staticmethod
    def ofMultiFloat(target: java.lang.Object | int | bool | float | str, propertyName: str | java.lang.String, path: android.graphics.Path, /) -> ObjectAnimator: ...
    @typing.overload
    @staticmethod
    def ofMultiFloat(target: java.lang.Object | int | bool | float | str, propertyName: str | java.lang.String, values: java.chaquopy.JavaArray[java.chaquopy.JavaArrayJFloat], /) -> ObjectAnimator: ...
    @typing.overload
    @staticmethod
    def ofMultiFloat(target: java.lang.Object | int | bool | float | str, propertyName: str | java.lang.String, converter: TypeConverter[_ofMultiFloat_2__T, java.chaquopy.JavaArrayJFloat], evaluator: TypeEvaluator[_ofMultiFloat_2__T], /, *values: _ofMultiFloat_2__T) -> ObjectAnimator: ...
    _ofMultiInt_2__T = typing.TypeVar('_ofMultiInt_2__T')  # <T>
    @typing.overload
    @staticmethod
    def ofMultiInt(target: java.lang.Object | int | bool | float | str, propertyName: str | java.lang.String, path: android.graphics.Path, /) -> ObjectAnimator: ...
    @typing.overload
    @staticmethod
    def ofMultiInt(target: java.lang.Object | int | bool | float | str, propertyName: str | java.lang.String, values: java.chaquopy.JavaArray[java.chaquopy.JavaArrayJInt], /) -> ObjectAnimator: ...
    @typing.overload
    @staticmethod
    def ofMultiInt(target: java.lang.Object | int | bool | float | str, propertyName: str | java.lang.String, converter: TypeConverter[_ofMultiInt_2__T, java.chaquopy.JavaArrayJInt], evaluator: TypeEvaluator[_ofMultiInt_2__T], /, *values: _ofMultiInt_2__T) -> ObjectAnimator: ...
    _ofObject_0__T = typing.TypeVar('_ofObject_0__T')  # <T>
    _ofObject_0__V = typing.TypeVar('_ofObject_0__V')  # <V>
    _ofObject_1__T = typing.TypeVar('_ofObject_1__T')  # <T>
    _ofObject_1__V = typing.TypeVar('_ofObject_1__V')  # <V>
    _ofObject_4__T = typing.TypeVar('_ofObject_4__T')  # <T>
    _ofObject_4__V = typing.TypeVar('_ofObject_4__V')  # <V>
    _ofObject_4__P = typing.TypeVar('_ofObject_4__P')  # <P>
    @typing.overload
    @staticmethod
    def ofObject(target: _ofObject_0__T, property: android.util.Property[_ofObject_0__T, _ofObject_0__V], converter: TypeConverter[android.graphics.PointF, _ofObject_0__V], path: android.graphics.Path, /) -> ObjectAnimator: ...
    @typing.overload
    @staticmethod
    def ofObject(target: _ofObject_1__T, property: android.util.Property[_ofObject_1__T, _ofObject_1__V], evaluator: TypeEvaluator[_ofObject_1__V], /, *values: _ofObject_1__V) -> ObjectAnimator: ...
    @typing.overload
    @staticmethod
    def ofObject(target: java.lang.Object | int | bool | float | str, propertyName: str | java.lang.String, converter: TypeConverter[android.graphics.PointF, java.lang.Object], path: android.graphics.Path, /) -> ObjectAnimator: ...
    @typing.overload
    @staticmethod
    def ofObject(target: java.lang.Object | int | bool | float | str, propertyName: str | java.lang.String, evaluator: TypeEvaluator, /, *values: java.lang.Object) -> ObjectAnimator: ...
    @typing.overload
    @staticmethod
    def ofObject(target: _ofObject_4__T, property: android.util.Property[_ofObject_4__T, _ofObject_4__P], converter: TypeConverter[_ofObject_4__V, _ofObject_4__P], evaluator: TypeEvaluator[_ofObject_4__V], /, *values: _ofObject_4__V) -> ObjectAnimator: ...
    @staticmethod
    def ofPropertyValuesHolder(target: java.lang.Object | int | bool | float | str, /, *values: PropertyValuesHolder) -> ObjectAnimator: ...
    def setAutoCancel(self, cancel: bool | java.jboolean | java.lang.Boolean, /) -> None: ...
    def setDuration(self, duration: int | java.jlong | java.lang.Long, /) -> ObjectAnimator: ...
    def setFloatValues(self, *values: java.jfloat) -> None: ...
    def setIntValues(self, *values: java.jint) -> None: ...
    def setObjectValues(self, *values: java.lang.Object) -> None: ...
    def setProperty(self, property: android.util.Property, /) -> None: ...
    def setPropertyName(self, propertyName: str | java.lang.String, /) -> None: ...
    def setTarget(self, target: java.lang.Object | int | bool | float | str, /) -> None: ...
    def setupEndValues(self) -> None: ...
    def setupStartValues(self) -> None: ...
    def start(self) -> None: ...
    def toString(self) -> str: ...

class PointFEvaluator(TypeEvaluator[android.graphics.PointF]):
    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, reuse: android.graphics.PointF, /) -> None: ...
    def evaluate(self, fraction: float | java.jfloat | java.lang.Float, startValue: android.graphics.PointF, endValue: android.graphics.PointF, /) -> android.graphics.PointF: ...

class PropertyValuesHolder(java.lang.Cloneable):
    def clone(self) -> PropertyValuesHolder: ...
    def getPropertyName(self) -> str: ...
    @typing.overload
    @staticmethod
    def ofFloat(property: android.util.Property[java.lang.Object, java.lang.Float], /, *values: java.jfloat) -> PropertyValuesHolder: ...
    @typing.overload
    @staticmethod
    def ofFloat(propertyName: str | java.lang.String, /, *values: java.jfloat) -> PropertyValuesHolder: ...
    @typing.overload
    @staticmethod
    def ofInt(property: android.util.Property[java.lang.Object, java.lang.Integer], /, *values: java.jint) -> PropertyValuesHolder: ...
    @typing.overload
    @staticmethod
    def ofInt(propertyName: str | java.lang.String, /, *values: java.jint) -> PropertyValuesHolder: ...
    @typing.overload
    @staticmethod
    def ofKeyframe(property: android.util.Property, /, *values: Keyframe) -> PropertyValuesHolder: ...
    @typing.overload
    @staticmethod
    def ofKeyframe(propertyName: str | java.lang.String, /, *values: Keyframe) -> PropertyValuesHolder: ...
    _ofMultiFloat_2__T = typing.TypeVar('_ofMultiFloat_2__T')  # <T>
    _ofMultiFloat_3__V = typing.TypeVar('_ofMultiFloat_3__V')  # <V>
    @typing.overload
    @staticmethod
    def ofMultiFloat(propertyName: str | java.lang.String, path: android.graphics.Path, /) -> PropertyValuesHolder: ...
    @typing.overload
    @staticmethod
    def ofMultiFloat(propertyName: str | java.lang.String, values: java.chaquopy.JavaArray[java.chaquopy.JavaArrayJFloat], /) -> PropertyValuesHolder: ...
    @typing.overload
    @staticmethod
    def ofMultiFloat(propertyName: str | java.lang.String, converter: TypeConverter[_ofMultiFloat_2__T, java.chaquopy.JavaArrayJFloat], evaluator: TypeEvaluator[_ofMultiFloat_2__T], /, *values: Keyframe) -> PropertyValuesHolder: ...
    @typing.overload
    @staticmethod
    def ofMultiFloat(propertyName: str | java.lang.String, converter: TypeConverter[_ofMultiFloat_3__V, java.chaquopy.JavaArrayJFloat], evaluator: TypeEvaluator[_ofMultiFloat_3__V], /, *values: _ofMultiFloat_3__V) -> PropertyValuesHolder: ...
    _ofMultiInt_2__T = typing.TypeVar('_ofMultiInt_2__T')  # <T>
    _ofMultiInt_3__V = typing.TypeVar('_ofMultiInt_3__V')  # <V>
    @typing.overload
    @staticmethod
    def ofMultiInt(propertyName: str | java.lang.String, path: android.graphics.Path, /) -> PropertyValuesHolder: ...
    @typing.overload
    @staticmethod
    def ofMultiInt(propertyName: str | java.lang.String, values: java.chaquopy.JavaArray[java.chaquopy.JavaArrayJInt], /) -> PropertyValuesHolder: ...
    @typing.overload
    @staticmethod
    def ofMultiInt(propertyName: str | java.lang.String, converter: TypeConverter[_ofMultiInt_2__T, java.chaquopy.JavaArrayJInt], evaluator: TypeEvaluator[_ofMultiInt_2__T], /, *values: Keyframe) -> PropertyValuesHolder: ...
    @typing.overload
    @staticmethod
    def ofMultiInt(propertyName: str | java.lang.String, converter: TypeConverter[_ofMultiInt_3__V, java.chaquopy.JavaArrayJInt], evaluator: TypeEvaluator[_ofMultiInt_3__V], /, *values: _ofMultiInt_3__V) -> PropertyValuesHolder: ...
    _ofObject_0__V = typing.TypeVar('_ofObject_0__V')  # <V>
    _ofObject_1__V = typing.TypeVar('_ofObject_1__V')  # <V>
    _ofObject_4__T = typing.TypeVar('_ofObject_4__T')  # <T>
    _ofObject_4__V = typing.TypeVar('_ofObject_4__V')  # <V>
    @typing.overload
    @staticmethod
    def ofObject(property: android.util.Property[java.lang.Object, _ofObject_0__V], converter: TypeConverter[android.graphics.PointF, _ofObject_0__V], path: android.graphics.Path, /) -> PropertyValuesHolder: ...
    @typing.overload
    @staticmethod
    def ofObject(property: android.util.Property, evaluator: TypeEvaluator[_ofObject_1__V], /, *values: _ofObject_1__V) -> PropertyValuesHolder: ...
    @typing.overload
    @staticmethod
    def ofObject(propertyName: str | java.lang.String, converter: TypeConverter[android.graphics.PointF, java.lang.Object], path: android.graphics.Path, /) -> PropertyValuesHolder: ...
    @typing.overload
    @staticmethod
    def ofObject(propertyName: str | java.lang.String, evaluator: TypeEvaluator, /, *values: java.lang.Object) -> PropertyValuesHolder: ...
    @typing.overload
    @staticmethod
    def ofObject(property: android.util.Property[java.lang.Object, _ofObject_4__V], converter: TypeConverter[_ofObject_4__T, _ofObject_4__V], evaluator: TypeEvaluator[_ofObject_4__T], /, *values: _ofObject_4__T) -> PropertyValuesHolder: ...
    def setConverter(self, converter: TypeConverter, /) -> None: ...
    def setEvaluator(self, evaluator: TypeEvaluator, /) -> None: ...
    def setFloatValues(self, *values: java.jfloat) -> None: ...
    def setIntValues(self, *values: java.jint) -> None: ...
    def setKeyframes(self, *values: Keyframe) -> None: ...
    def setObjectValues(self, *values: java.lang.Object) -> None: ...
    def setProperty(self, property: android.util.Property, /) -> None: ...
    def setPropertyName(self, propertyName: str | java.lang.String, /) -> None: ...
    def toString(self) -> str: ...

class RectEvaluator(TypeEvaluator[android.graphics.Rect]):
    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, reuseRect: android.graphics.Rect, /) -> None: ...
    def evaluate(self, fraction: float | java.jfloat | java.lang.Float, startValue: android.graphics.Rect, endValue: android.graphics.Rect, /) -> android.graphics.Rect: ...

class StateListAnimator(java.lang.Cloneable):
    def __init__(self) -> None: ...
    def addState(self, specs: java.chaquopy.JavaArrayJInt, animator: Animator, /) -> None: ...
    def clone(self) -> StateListAnimator: ...
    def jumpToCurrentState(self) -> None: ...

class TimeAnimator(ValueAnimator):
    def __init__(self) -> None: ...
    def setCurrentPlayTime(self, playTime: int | java.jlong | java.lang.Long, /) -> None: ...
    def setTimeListener(self, listener: TimeAnimator.TimeListener, /) -> None: ...
    def start(self) -> None: ...

    class TimeListener(java.lang.Object):
        def onTimeUpdate(self, arg1: TimeAnimator, arg2: int | java.jlong | java.lang.Long, arg3: int | java.jlong | java.lang.Long, /) -> None: ...

class TimeInterpolator(java.lang.Object):
    def getInterpolation(self, arg1: float | java.jfloat | java.lang.Float, /) -> float: ...

_TypeConverter__T = typing.TypeVar('_TypeConverter__T')  # <T>
_TypeConverter__V = typing.TypeVar('_TypeConverter__V')  # <V>
class TypeConverter(java.lang.Object, typing.Generic[_TypeConverter__T, _TypeConverter__V]):
    def __init__(self, fromClass: typing.Type[_TypeConverter__T], toClass: typing.Type[_TypeConverter__V], /) -> None: ...
    def convert(self, arg1: _TypeConverter__T, /) -> _TypeConverter__V: ...

_TypeEvaluator__T = typing.TypeVar('_TypeEvaluator__T')  # <T>
class TypeEvaluator(java.lang.Object, typing.Generic[_TypeEvaluator__T]):
    def evaluate(self, arg1: float | java.jfloat | java.lang.Float, arg2: _TypeEvaluator__T, arg3: _TypeEvaluator__T, /) -> _TypeEvaluator__T: ...

class ValueAnimator(Animator):
    INFINITE: typing.ClassVar[int] = ...
    RESTART: typing.ClassVar[int] = ...
    REVERSE: typing.ClassVar[int] = ...
    def __init__(self) -> None: ...
    def addUpdateListener(self, listener: ValueAnimator.AnimatorUpdateListener, /) -> None: ...
    @staticmethod
    def areAnimatorsEnabled() -> bool: ...
    def cancel(self) -> None: ...
    def clone(self) -> ValueAnimator: ...
    def end(self) -> None: ...
    def getAnimatedFraction(self) -> float: ...
    @typing.overload
    def getAnimatedValue(self) -> java.lang.Object: ...
    @typing.overload
    def getAnimatedValue(self, propertyName: str | java.lang.String, /) -> java.lang.Object: ...
    def getCurrentPlayTime(self) -> int: ...
    def getDuration(self) -> int: ...
    @staticmethod
    def getDurationScale() -> float: ...
    @staticmethod
    def getFrameDelay() -> int: ...
    def getInterpolator(self) -> TimeInterpolator: ...
    def getRepeatCount(self) -> int: ...
    def getRepeatMode(self) -> int: ...
    def getStartDelay(self) -> int: ...
    def getTotalDuration(self) -> int: ...
    def getValues(self) -> java.chaquopy.JavaArray[PropertyValuesHolder]: ...
    def isRunning(self) -> bool: ...
    def isStarted(self) -> bool: ...
    @staticmethod
    def ofArgb(*values: java.jint) -> ValueAnimator: ...
    @staticmethod
    def ofFloat(*values: java.jfloat) -> ValueAnimator: ...
    @staticmethod
    def ofInt(*values: java.jint) -> ValueAnimator: ...
    @staticmethod
    def ofObject(evaluator: TypeEvaluator, /, *values: java.lang.Object) -> ValueAnimator: ...
    @staticmethod
    def ofPropertyValuesHolder(*values: PropertyValuesHolder) -> ValueAnimator: ...
    def pause(self) -> None: ...
    @staticmethod
    def registerDurationScaleChangeListener(listener: ValueAnimator.DurationScaleChangeListener, /) -> bool: ...
    def removeAllUpdateListeners(self) -> None: ...
    def removeUpdateListener(self, listener: ValueAnimator.AnimatorUpdateListener, /) -> None: ...
    def resume(self) -> None: ...
    def reverse(self) -> None: ...
    def setCurrentFraction(self, fraction: float | java.jfloat | java.lang.Float, /) -> None: ...
    def setCurrentPlayTime(self, playTime: int | java.jlong | java.lang.Long, /) -> None: ...
    def setDuration(self, duration: int | java.jlong | java.lang.Long, /) -> ValueAnimator: ...
    def setEvaluator(self, value: TypeEvaluator, /) -> None: ...
    def setFloatValues(self, *values: java.jfloat) -> None: ...
    @staticmethod
    def setFrameDelay(frameDelay: int | java.jlong | java.lang.Long, /) -> None: ...
    def setIntValues(self, *values: java.jint) -> None: ...
    def setInterpolator(self, value: TimeInterpolator, /) -> None: ...
    def setObjectValues(self, *values: java.lang.Object) -> None: ...
    def setRepeatCount(self, value: int | java.jint | java.lang.Integer, /) -> None: ...
    def setRepeatMode(self, value: int | java.jint | java.lang.Integer, /) -> None: ...
    def setStartDelay(self, startDelay: int | java.jlong | java.lang.Long, /) -> None: ...
    def setValues(self, *values: PropertyValuesHolder) -> None: ...
    def start(self) -> None: ...
    def toString(self) -> str: ...
    @staticmethod
    def unregisterDurationScaleChangeListener(listener: ValueAnimator.DurationScaleChangeListener, /) -> bool: ...

    class DurationScaleChangeListener(java.lang.Object):
        def onChanged(self, arg1: float | java.jfloat | java.lang.Float, /) -> None: ...

    class AnimatorUpdateListener(java.lang.Object):
        def onAnimationUpdate(self, arg1: ValueAnimator, /) -> None: ...
