import typing

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

class AccelerateDecelerateInterpolator(BaseInterpolator):
    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, context: android.content.Context, attrs: android.util.AttributeSet, /) -> None: ...
    def getInterpolation(self, input: float | java.jfloat | java.lang.Float, /) -> float: ...

class AccelerateInterpolator(BaseInterpolator):
    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, factor: float | java.jfloat | java.lang.Float, /) -> None: ...
    @typing.overload
    def __init__(self, context: android.content.Context, attrs: android.util.AttributeSet, /) -> None: ...
    def getInterpolation(self, input: float | java.jfloat | java.lang.Float, /) -> float: ...

class AlphaAnimation(Animation):
    @typing.overload
    def __init__(self, fromAlpha: float | java.jfloat | java.lang.Float, toAlpha: float | java.jfloat | java.lang.Float, /) -> None: ...
    @typing.overload
    def __init__(self, context: android.content.Context, attrs: android.util.AttributeSet, /) -> None: ...
    def applyTransformation(self, interpolatedTime: float | java.jfloat | java.lang.Float, t: Transformation, /) -> None: ...
    def willChangeBounds(self) -> bool: ...
    def willChangeTransformationMatrix(self) -> bool: ...

class Animation(java.lang.Cloneable):
    ABSOLUTE: typing.ClassVar[int] = ...
    INFINITE: typing.ClassVar[int] = ...
    RELATIVE_TO_PARENT: typing.ClassVar[int] = ...
    RELATIVE_TO_SELF: typing.ClassVar[int] = ...
    RESTART: typing.ClassVar[int] = ...
    REVERSE: typing.ClassVar[int] = ...
    START_ON_FIRST_FRAME: typing.ClassVar[int] = ...
    ZORDER_BOTTOM: typing.ClassVar[int] = ...
    ZORDER_NORMAL: typing.ClassVar[int] = ...
    ZORDER_TOP: typing.ClassVar[int] = ...
    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, context: android.content.Context, attrs: android.util.AttributeSet, /) -> None: ...
    def applyTransformation(self, interpolatedTime: float | java.jfloat | java.lang.Float, t: Transformation, /) -> None: ...
    def cancel(self) -> None: ...
    def clone(self) -> Animation: ...
    def computeDurationHint(self) -> int: ...
    def ensureInterpolator(self) -> None: ...
    def finalize(self) -> None: ...
    def getBackdropColor(self) -> int: ...
    def getBackgroundColor(self) -> int: ...
    def getDetachWallpaper(self) -> bool: ...
    def getDuration(self) -> int: ...
    def getFillAfter(self) -> bool: ...
    def getFillBefore(self) -> bool: ...
    def getInterpolator(self) -> Interpolator: ...
    def getRepeatCount(self) -> int: ...
    def getRepeatMode(self) -> int: ...
    def getScaleFactor(self) -> float: ...
    def getShowBackdrop(self) -> bool: ...
    def getStartOffset(self) -> int: ...
    def getStartTime(self) -> int: ...
    @typing.overload
    def getTransformation(self, currentTime: int | java.jlong | java.lang.Long, outTransformation: Transformation, /) -> bool: ...
    @typing.overload
    def getTransformation(self, currentTime: int | java.jlong | java.lang.Long, outTransformation: Transformation, scale: float | java.jfloat | java.lang.Float, /) -> bool: ...
    def getZAdjustment(self) -> int: ...
    def hasEnded(self) -> bool: ...
    def hasStarted(self) -> bool: ...
    def initialize(self, width: int | java.jint | java.lang.Integer, height: int | java.jint | java.lang.Integer, parentWidth: int | java.jint | java.lang.Integer, parentHeight: int | java.jint | java.lang.Integer, /) -> None: ...
    def isFillEnabled(self) -> bool: ...
    def isInitialized(self) -> bool: ...
    def reset(self) -> None: ...
    def resolveSize(self, type: int | java.jint | java.lang.Integer, value: float | java.jfloat | java.lang.Float, size: int | java.jint | java.lang.Integer, parentSize: int | java.jint | java.lang.Integer, /) -> float: ...
    def restrictDuration(self, durationMillis: int | java.jlong | java.lang.Long, /) -> None: ...
    def scaleCurrentDuration(self, scale: float | java.jfloat | java.lang.Float, /) -> None: ...
    def setAnimationListener(self, listener: Animation.AnimationListener, /) -> None: ...
    def setBackdropColor(self, backdropColor: int | java.jint | java.lang.Integer, /) -> None: ...
    def setBackgroundColor(self, bg: int | java.jint | java.lang.Integer, /) -> None: ...
    def setDetachWallpaper(self, detachWallpaper: bool | java.jboolean | java.lang.Boolean, /) -> None: ...
    def setDuration(self, durationMillis: int | java.jlong | java.lang.Long, /) -> None: ...
    def setFillAfter(self, fillAfter: bool | java.jboolean | java.lang.Boolean, /) -> None: ...
    def setFillBefore(self, fillBefore: bool | java.jboolean | java.lang.Boolean, /) -> None: ...
    def setFillEnabled(self, fillEnabled: bool | java.jboolean | java.lang.Boolean, /) -> None: ...
    @typing.overload
    def setInterpolator(self, i: Interpolator, /) -> None: ...
    @typing.overload
    def setInterpolator(self, context: android.content.Context, resID: int | java.jint | java.lang.Integer, /) -> None: ...
    def setRepeatCount(self, repeatCount: int | java.jint | java.lang.Integer, /) -> None: ...
    def setRepeatMode(self, repeatMode: int | java.jint | java.lang.Integer, /) -> None: ...
    def setShowBackdrop(self, showBackdrop: bool | java.jboolean | java.lang.Boolean, /) -> None: ...
    def setStartOffset(self, startOffset: int | java.jlong | java.lang.Long, /) -> None: ...
    def setStartTime(self, startTimeMillis: int | java.jlong | java.lang.Long, /) -> None: ...
    def setZAdjustment(self, zAdjustment: int | java.jint | java.lang.Integer, /) -> None: ...
    def start(self) -> None: ...
    def startNow(self) -> None: ...
    def willChangeBounds(self) -> bool: ...
    def willChangeTransformationMatrix(self) -> bool: ...

    class Description(java.lang.Object):
        type: int = ...
        value: float = ...
        def __init__(self) -> None: ...

    class AnimationListener(java.lang.Object):
        def onAnimationEnd(self, arg1: Animation, /) -> None: ...
        def onAnimationRepeat(self, arg1: Animation, /) -> None: ...
        def onAnimationStart(self, arg1: Animation, /) -> None: ...

class AnimationSet(Animation):
    @typing.overload
    def __init__(self, shareInterpolator: bool | java.jboolean | java.lang.Boolean, /) -> None: ...
    @typing.overload
    def __init__(self, context: android.content.Context, attrs: android.util.AttributeSet, /) -> None: ...
    def addAnimation(self, a: Animation, /) -> None: ...
    def clone(self) -> AnimationSet: ...
    def computeDurationHint(self) -> int: ...
    def getAnimations(self) -> java.util.List[Animation]: ...
    def getDuration(self) -> int: ...
    def getStartTime(self) -> int: ...
    def getTransformation(self, currentTime: int | java.jlong | java.lang.Long, t: Transformation, /) -> bool: ...
    def initialize(self, width: int | java.jint | java.lang.Integer, height: int | java.jint | java.lang.Integer, parentWidth: int | java.jint | java.lang.Integer, parentHeight: int | java.jint | java.lang.Integer, /) -> None: ...
    def reset(self) -> None: ...
    def restrictDuration(self, durationMillis: int | java.jlong | java.lang.Long, /) -> None: ...
    def scaleCurrentDuration(self, scale: float | java.jfloat | java.lang.Float, /) -> None: ...
    def setDuration(self, durationMillis: int | java.jlong | java.lang.Long, /) -> None: ...
    def setFillAfter(self, fillAfter: bool | java.jboolean | java.lang.Boolean, /) -> None: ...
    def setFillBefore(self, fillBefore: bool | java.jboolean | java.lang.Boolean, /) -> None: ...
    def setRepeatMode(self, repeatMode: int | java.jint | java.lang.Integer, /) -> None: ...
    def setStartOffset(self, startOffset: int | java.jlong | java.lang.Long, /) -> None: ...
    def setStartTime(self, startTimeMillis: int | java.jlong | java.lang.Long, /) -> None: ...
    def willChangeBounds(self) -> bool: ...
    def willChangeTransformationMatrix(self) -> bool: ...

class AnimationUtils(java.lang.Object):
    def __init__(self) -> None: ...
    @staticmethod
    def currentAnimationTimeMillis() -> int: ...
    @staticmethod
    def loadAnimation(context: android.content.Context, id: int | java.jint | java.lang.Integer, /) -> Animation: ...
    @staticmethod
    def loadInterpolator(context: android.content.Context, id: int | java.jint | java.lang.Integer, /) -> Interpolator: ...
    @staticmethod
    def loadLayoutAnimation(context: android.content.Context, id: int | java.jint | java.lang.Integer, /) -> LayoutAnimationController: ...
    @staticmethod
    def makeInAnimation(c: android.content.Context, fromLeft: bool | java.jboolean | java.lang.Boolean, /) -> Animation: ...
    @staticmethod
    def makeInChildBottomAnimation(c: android.content.Context, /) -> Animation: ...
    @staticmethod
    def makeOutAnimation(c: android.content.Context, toRight: bool | java.jboolean | java.lang.Boolean, /) -> Animation: ...

class AnticipateInterpolator(BaseInterpolator):
    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, tension: float | java.jfloat | java.lang.Float, /) -> None: ...
    @typing.overload
    def __init__(self, context: android.content.Context, attrs: android.util.AttributeSet, /) -> None: ...
    def getInterpolation(self, t: float | java.jfloat | java.lang.Float, /) -> float: ...

class AnticipateOvershootInterpolator(BaseInterpolator):
    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, tension: float | java.jfloat | java.lang.Float, /) -> None: ...
    @typing.overload
    def __init__(self, tension: float | java.jfloat | java.lang.Float, extraTension: float | java.jfloat | java.lang.Float, /) -> None: ...
    @typing.overload
    def __init__(self, context: android.content.Context, attrs: android.util.AttributeSet, /) -> None: ...
    def getInterpolation(self, t: float | java.jfloat | java.lang.Float, /) -> float: ...

class BaseInterpolator(Interpolator):
    def __init__(self) -> None: ...

class BounceInterpolator(BaseInterpolator):
    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, context: android.content.Context, attrs: android.util.AttributeSet, /) -> None: ...
    def getInterpolation(self, t: float | java.jfloat | java.lang.Float, /) -> float: ...

class CycleInterpolator(BaseInterpolator):
    @typing.overload
    def __init__(self, cycles: float | java.jfloat | java.lang.Float, /) -> None: ...
    @typing.overload
    def __init__(self, context: android.content.Context, attrs: android.util.AttributeSet, /) -> None: ...
    def getInterpolation(self, input: float | java.jfloat | java.lang.Float, /) -> float: ...

class DecelerateInterpolator(BaseInterpolator):
    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, factor: float | java.jfloat | java.lang.Float, /) -> None: ...
    @typing.overload
    def __init__(self, context: android.content.Context, attrs: android.util.AttributeSet, /) -> None: ...
    def getInterpolation(self, input: float | java.jfloat | java.lang.Float, /) -> float: ...

class GridLayoutAnimationController(LayoutAnimationController):
    DIRECTION_BOTTOM_TO_TOP: typing.ClassVar[int] = ...
    DIRECTION_HORIZONTAL_MASK: typing.ClassVar[int] = ...
    DIRECTION_LEFT_TO_RIGHT: typing.ClassVar[int] = ...
    DIRECTION_RIGHT_TO_LEFT: typing.ClassVar[int] = ...
    DIRECTION_TOP_TO_BOTTOM: typing.ClassVar[int] = ...
    DIRECTION_VERTICAL_MASK: typing.ClassVar[int] = ...
    PRIORITY_COLUMN: typing.ClassVar[int] = ...
    PRIORITY_NONE: typing.ClassVar[int] = ...
    PRIORITY_ROW: typing.ClassVar[int] = ...
    @typing.overload
    def __init__(self, animation: Animation, /) -> None: ...
    @typing.overload
    def __init__(self, context: android.content.Context, attrs: android.util.AttributeSet, /) -> None: ...
    @typing.overload
    def __init__(self, animation: Animation, columnDelay: float | java.jfloat | java.lang.Float, rowDelay: float | java.jfloat | java.lang.Float, /) -> None: ...
    def getColumnDelay(self) -> float: ...
    def getDelayForView(self, view: android.view.View, /) -> int: ...
    def getDirection(self) -> int: ...
    def getDirectionPriority(self) -> int: ...
    def getRowDelay(self) -> float: ...
    def setColumnDelay(self, columnDelay: float | java.jfloat | java.lang.Float, /) -> None: ...
    def setDirection(self, direction: int | java.jint | java.lang.Integer, /) -> None: ...
    def setDirectionPriority(self, directionPriority: int | java.jint | java.lang.Integer, /) -> None: ...
    def setRowDelay(self, rowDelay: float | java.jfloat | java.lang.Float, /) -> None: ...
    def willOverlap(self) -> bool: ...

    class AnimationParameters(LayoutAnimationController.AnimationParameters):
        column: int = ...
        columnsCount: int = ...
        row: int = ...
        rowsCount: int = ...
        def __init__(self) -> None: ...

class Interpolator(android.animation.TimeInterpolator): ...

class LayoutAnimationController(java.lang.Object):
    ORDER_NORMAL: typing.ClassVar[int] = ...
    ORDER_RANDOM: typing.ClassVar[int] = ...
    ORDER_REVERSE: typing.ClassVar[int] = ...
    mAnimation: Animation = ...
    mInterpolator: Interpolator = ...
    mRandomizer: java.util.Random = ...
    @typing.overload
    def __init__(self, animation: Animation, /) -> None: ...
    @typing.overload
    def __init__(self, context: android.content.Context, attrs: android.util.AttributeSet, /) -> None: ...
    @typing.overload
    def __init__(self, animation: Animation, delay: float | java.jfloat | java.lang.Float, /) -> None: ...
    def getAnimation(self) -> Animation: ...
    def getAnimationForView(self, view: android.view.View, /) -> Animation: ...
    def getDelay(self) -> float: ...
    def getDelayForView(self, view: android.view.View, /) -> int: ...
    def getInterpolator(self) -> Interpolator: ...
    def getOrder(self) -> int: ...
    def getTransformedIndex(self, params: LayoutAnimationController.AnimationParameters, /) -> int: ...
    def isDone(self) -> bool: ...
    @typing.overload
    def setAnimation(self, animation: Animation, /) -> None: ...
    @typing.overload
    def setAnimation(self, context: android.content.Context, resourceID: int | java.jint | java.lang.Integer, /) -> None: ...
    def setDelay(self, delay: float | java.jfloat | java.lang.Float, /) -> None: ...
    @typing.overload
    def setInterpolator(self, interpolator: Interpolator, /) -> None: ...
    @typing.overload
    def setInterpolator(self, context: android.content.Context, resourceID: int | java.jint | java.lang.Integer, /) -> None: ...
    def setOrder(self, order: int | java.jint | java.lang.Integer, /) -> None: ...
    def start(self) -> None: ...
    def willOverlap(self) -> bool: ...

    class AnimationParameters(java.lang.Object):
        count: int = ...
        index: int = ...
        def __init__(self) -> None: ...

class LinearInterpolator(BaseInterpolator):
    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, context: android.content.Context, attrs: android.util.AttributeSet, /) -> None: ...
    def getInterpolation(self, input: float | java.jfloat | java.lang.Float, /) -> float: ...

class OvershootInterpolator(BaseInterpolator):
    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, tension: float | java.jfloat | java.lang.Float, /) -> None: ...
    @typing.overload
    def __init__(self, context: android.content.Context, attrs: android.util.AttributeSet, /) -> None: ...
    def getInterpolation(self, t: float | java.jfloat | java.lang.Float, /) -> float: ...

class PathInterpolator(BaseInterpolator):
    @typing.overload
    def __init__(self, path: android.graphics.Path, /) -> None: ...
    @typing.overload
    def __init__(self, controlX: float | java.jfloat | java.lang.Float, controlY: float | java.jfloat | java.lang.Float, /) -> None: ...
    @typing.overload
    def __init__(self, context: android.content.Context, attrs: android.util.AttributeSet, /) -> None: ...
    @typing.overload
    def __init__(self, controlX1: float | java.jfloat | java.lang.Float, controlY1: float | java.jfloat | java.lang.Float, controlX2: float | java.jfloat | java.lang.Float, controlY2: float | java.jfloat | java.lang.Float, /) -> None: ...
    def getInterpolation(self, t: float | java.jfloat | java.lang.Float, /) -> float: ...

class RotateAnimation(Animation):
    @typing.overload
    def __init__(self, fromDegrees: float | java.jfloat | java.lang.Float, toDegrees: float | java.jfloat | java.lang.Float, /) -> None: ...
    @typing.overload
    def __init__(self, context: android.content.Context, attrs: android.util.AttributeSet, /) -> None: ...
    @typing.overload
    def __init__(self, fromDegrees: float | java.jfloat | java.lang.Float, toDegrees: float | java.jfloat | java.lang.Float, pivotX: float | java.jfloat | java.lang.Float, pivotY: float | java.jfloat | java.lang.Float, /) -> None: ...
    @typing.overload
    def __init__(self, fromDegrees: float | java.jfloat | java.lang.Float, toDegrees: float | java.jfloat | java.lang.Float, pivotXType: int | java.jint | java.lang.Integer, pivotXValue: float | java.jfloat | java.lang.Float, pivotYType: int | java.jint | java.lang.Integer, pivotYValue: float | java.jfloat | java.lang.Float, /) -> None: ...
    def applyTransformation(self, interpolatedTime: float | java.jfloat | java.lang.Float, t: Transformation, /) -> None: ...
    def initialize(self, width: int | java.jint | java.lang.Integer, height: int | java.jint | java.lang.Integer, parentWidth: int | java.jint | java.lang.Integer, parentHeight: int | java.jint | java.lang.Integer, /) -> None: ...

class ScaleAnimation(Animation):
    @typing.overload
    def __init__(self, context: android.content.Context, attrs: android.util.AttributeSet, /) -> None: ...
    @typing.overload
    def __init__(self, fromX: float | java.jfloat | java.lang.Float, toX: float | java.jfloat | java.lang.Float, fromY: float | java.jfloat | java.lang.Float, toY: float | java.jfloat | java.lang.Float, /) -> None: ...
    @typing.overload
    def __init__(self, fromX: float | java.jfloat | java.lang.Float, toX: float | java.jfloat | java.lang.Float, fromY: float | java.jfloat | java.lang.Float, toY: float | java.jfloat | java.lang.Float, pivotX: float | java.jfloat | java.lang.Float, pivotY: float | java.jfloat | java.lang.Float, /) -> None: ...
    @typing.overload
    def __init__(self, fromX: float | java.jfloat | java.lang.Float, toX: float | java.jfloat | java.lang.Float, fromY: float | java.jfloat | java.lang.Float, toY: float | java.jfloat | java.lang.Float, pivotXType: int | java.jint | java.lang.Integer, pivotXValue: float | java.jfloat | java.lang.Float, pivotYType: int | java.jint | java.lang.Integer, pivotYValue: float | java.jfloat | java.lang.Float, /) -> None: ...
    def applyTransformation(self, interpolatedTime: float | java.jfloat | java.lang.Float, t: Transformation, /) -> None: ...
    def initialize(self, width: int | java.jint | java.lang.Integer, height: int | java.jint | java.lang.Integer, parentWidth: int | java.jint | java.lang.Integer, parentHeight: int | java.jint | java.lang.Integer, /) -> None: ...

class Transformation(java.lang.Object):
    TYPE_ALPHA: typing.ClassVar[int] = ...
    TYPE_BOTH: typing.ClassVar[int] = ...
    TYPE_IDENTITY: typing.ClassVar[int] = ...
    TYPE_MATRIX: typing.ClassVar[int] = ...
    mAlpha: float = ...
    mMatrix: android.graphics.Matrix = ...
    mTransformationType: int = ...
    def __init__(self) -> None: ...
    def clear(self) -> None: ...
    def compose(self, t: Transformation, /) -> None: ...
    def getAlpha(self) -> float: ...
    def getMatrix(self) -> android.graphics.Matrix: ...
    def getTransformationType(self) -> int: ...
    def set(self, t: Transformation, /) -> None: ...
    def setAlpha(self, alpha: float | java.jfloat | java.lang.Float, /) -> None: ...
    def setTransformationType(self, transformationType: int | java.jint | java.lang.Integer, /) -> None: ...
    def toShortString(self) -> str: ...
    def toString(self) -> str: ...

class TranslateAnimation(Animation):
    @typing.overload
    def __init__(self, context: android.content.Context, attrs: android.util.AttributeSet, /) -> None: ...
    @typing.overload
    def __init__(self, fromXDelta: float | java.jfloat | java.lang.Float, toXDelta: float | java.jfloat | java.lang.Float, fromYDelta: float | java.jfloat | java.lang.Float, toYDelta: float | java.jfloat | java.lang.Float, /) -> None: ...
    @typing.overload
    def __init__(self, fromXType: int | java.jint | java.lang.Integer, fromXValue: float | java.jfloat | java.lang.Float, toXType: int | java.jint | java.lang.Integer, toXValue: float | java.jfloat | java.lang.Float, fromYType: int | java.jint | java.lang.Integer, fromYValue: float | java.jfloat | java.lang.Float, toYType: int | java.jint | java.lang.Integer, toYValue: float | java.jfloat | java.lang.Float, /) -> None: ...
    def applyTransformation(self, interpolatedTime: float | java.jfloat | java.lang.Float, t: Transformation, /) -> None: ...
    def initialize(self, width: int | java.jint | java.lang.Integer, height: int | java.jint | java.lang.Integer, parentWidth: int | java.jint | java.lang.Integer, parentHeight: int | java.jint | java.lang.Integer, /) -> None: ...
