---@meta

---@class Animation : UIObject
Animation = {
	--- Gets the animation group this animation belongs to.
	--- @return AnimationGroup group The parent animation group.
	--- @example
	--- local group = myAnimation:GetAnimationGroup()
	GetAnimationGroup = function(self) end,

	--- Gets the delay before the animation starts.
	--- @return number delay The delay in seconds.
	--- @example
	--- local delay = myAnimation:GetDelay()
	GetDelay = function(self) end,

	--- Gets the duration of the animation.
	--- @return number duration The duration in seconds.
	--- @example
	--- local duration = myAnimation:GetDuration()
	GetDuration = function(self) end,

	--- Gets the animation's current elapsed time.
	--- @return number elapsed The elapsed time in seconds.
	--- @example
	--- local elapsed = myAnimation:GetElapsed()
	GetElapsed = function(self) end,

	--- Gets the animation's current progress.
	--- @return number progress The progress (0.0 to 1.0).
	--- @example
	--- local progress = myAnimation:GetProgress()
	GetProgress = function(self) end,

	--- Gets the smoothing type ("IN", "OUT", "IN_OUT", "OUT_IN", "NONE").
	--- @return string smoothing The smoothing type.
	--- @example
	--- local smoothing = myAnimation:GetSmoothing()
	GetSmoothing = function(self) end,

	--- Gets whether the animation plays in reverse.
	--- @return boolean isReverse True if playing in reverse.
	--- @example
	--- local isReverse = myAnimation:IsReverse()
	IsReverse = function(self) end,

	--- Gets whether the animation is currently playing.
	--- @return boolean isPlaying True if playing.
	--- @example
	--- local isPlaying = myAnimation:IsPlaying()
	IsPlaying = function(self) end,

	--- Gets whether the animation is currently paused.
	--- @return boolean isPaused True if paused.
	--- @example
	--- local isPaused = myAnimation:IsPaused()
	IsPaused = function(self) end,

	--- Gets whether the animation is currently stopped.
	--- @return boolean isStopped True if stopped.
	--- @example
	--- local isStopped = myAnimation:IsStopped()
	IsStopped = function(self) end,

	--- Pauses the animation.
	--- @example
	--- myAnimation:Pause()
	Pause = function(self) end,

	--- Plays the animation.
	--- @example
	--- myAnimation:Play()
	Play = function(self) end,

	--- Sets the delay before the animation starts.
	--- @param delay number The delay in seconds.
	--- @example
	--- myAnimation:SetDelay(0.5)
	SetDelay = function(self, delay) end,

	--- Sets the duration of the animation.
	--- @param duration number The duration in seconds.
	--- @example
	--- myAnimation:SetDuration(1.0)
	SetDuration = function(self, duration) end,

	--- Sets whether the animation plays in reverse.
	--- @param reverse boolean True to play in reverse.
	--- @example
	--- myAnimation:SetReverse(true)
	SetReverse = function(self, reverse) end,

	--- Sets the smoothing type.
	--- @param smoothing string The smoothing type ("IN", "OUT", "IN_OUT", "OUT_IN", "NONE").
	--- @example
	--- myAnimation:SetSmoothing("IN_OUT")
	SetSmoothing = function(self, smoothing) end,

	--- Stops the animation.
	--- @example
	--- myAnimation:Stop()
	Stop = function(self) end,
}
