"""Animation system for PyGuara.

Provides easing functions and tween system for smooth value interpolation.
"""

from pyguara.animation.easing import (
    EasingType,
    ease,
    linear,
    ease_in_quad,
    ease_out_quad,
    ease_in_out_quad,
    ease_in_cubic,
    ease_out_cubic,
    ease_in_out_cubic,
    ease_in_quart,
    ease_out_quart,
    ease_in_out_quart,
    ease_in_quint,
    ease_out_quint,
    ease_in_out_quint,
    ease_in_sine,
    ease_out_sine,
    ease_in_out_sine,
    ease_in_expo,
    ease_out_expo,
    ease_in_out_expo,
    ease_in_circ,
    ease_out_circ,
    ease_in_out_circ,
    ease_in_elastic,
    ease_out_elastic,
    ease_in_out_elastic,
    ease_in_back,
    ease_out_back,
    ease_in_out_back,
    ease_in_bounce,
    ease_out_bounce,
    ease_in_out_bounce,
)
from pyguara.animation.tween import Tween, TweenState, TweenManager

__all__ = [
    # Easing types and functions
    "EasingType",
    "ease",
    "linear",
    # Quadratic
    "ease_in_quad",
    "ease_out_quad",
    "ease_in_out_quad",
    # Cubic
    "ease_in_cubic",
    "ease_out_cubic",
    "ease_in_out_cubic",
    # Quartic
    "ease_in_quart",
    "ease_out_quart",
    "ease_in_out_quart",
    # Quintic
    "ease_in_quint",
    "ease_out_quint",
    "ease_in_out_quint",
    # Sine
    "ease_in_sine",
    "ease_out_sine",
    "ease_in_out_sine",
    # Exponential
    "ease_in_expo",
    "ease_out_expo",
    "ease_in_out_expo",
    # Circular
    "ease_in_circ",
    "ease_out_circ",
    "ease_in_out_circ",
    # Elastic
    "ease_in_elastic",
    "ease_out_elastic",
    "ease_in_out_elastic",
    # Back
    "ease_in_back",
    "ease_out_back",
    "ease_in_out_back",
    # Bounce
    "ease_in_bounce",
    "ease_out_bounce",
    "ease_in_out_bounce",
    # Tween system
    "Tween",
    "TweenState",
    "TweenManager",
]
