---@meta

---@class AnimationGroup : UIObject
AnimationGroup = {
	--- Creates a new animation of the specified type.
	--- @param animationType string The type of animation to create.
	--- @param name? string Optional. The name for the new animation.
	--- @param inheritsFrom? string Optional. Template to inherit from.
	--- @return Animation animation The created animation.
	--- @example
	--- local alpha = myAnimGroup:CreateAnimation("Alpha", "FadeOut")
	CreateAnimation = function(self, animationType, name, inheritsFrom) end,

	--- Gets the animation at the specified index.
	--- @param index number The index of the animation.
	--- @return Animation animation The animation at the index.
	--- @example
	--- local anim = myAnimGroup:GetAnimation(1)
	GetAnimation = function(self, index) end,

	--- Gets the number of animations in the group.
	--- @return number count The number of animations.
	--- @example
	--- local count = myAnimGroup:GetAnimations()
	GetAnimations = function(self) end,

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

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

	--- Gets the number of times to loop.
	--- @return number loopCount The loop count (-1 for infinite).
	--- @example
	--- local loops = myAnimGroup:GetLooping()
	GetLooping = function(self) end,

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

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

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

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

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

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

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

	--- Sets the number of times to loop.
	--- @param loopType string The loop type ("NONE", "REPEAT", "BOUNCE").
	--- @param loopCount? number Optional. Number of times to loop (-1 for infinite).
	--- @example
	--- myAnimGroup:SetLooping("REPEAT", -1)
	SetLooping = function(self, loopType, loopCount) end,

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

	--- Finishes the current animation loop.
	--- @example
	--- myAnimGroup:Finish()
	Finish = function(self) end,
}
