---@meta

---@class Color
---@field r number
---@field g number
---@field b number
---@field a number

---@class Vector2
---@field x number
---@field y number

---@class Vector3
---@field x number
---@field y number
---@field z number

---@class Vector4
---@field x number
---@field y number
---@field z number
---@field w number

---@class Quaternion
---@field x number
---@field y number
---@field z number
---@field w number

---@alias int integer
---@alias float number
---@alias bool boolean

---@class ListInt
---@field Count integer
local ListInt = {
    ---@param item integer
    Add = function (item) end,
    ---@param item integer
    Remove = function (item) end,
    ---@param index integer
    ---@param item integer
    Insert = function (index, item) end,
    ---@param index integer
    RemoveAt = function (index) end,
    ---@param item integer
    IndexOf = function (item) end,
    ---@param item integer
    LastIndexOf = function (item) end,
    Clear = function () end
}

---@alias CameraType string
---| "StableCamera"
---| "WeirdCamera"
---| "OldCamera"

---@alias TailType string
---| "Clear"
---| "Disable"
---| "Enable"

---@alias VisibilityType string
---| "Shown"
---| "Hidden"
---| "Gone"

---@alias SpaceType string
---| "World"
---| "Screen"

---@alias EaseType string
---| "notUsed"
---| "linear"
---| "easeOutQuad"
---| "easeInQuad"
---| "easeInOutQuad"
---| "easeInCubic"
---| "easeOutCubic"
---| "easeInOutCubic"
---| "easeInQuart"
---| "easeOutQuart"
---| "easeInOutQuart"
---| "easeInQuint"
---| "easeOutQuint"
---| "easeInOutQuint"
---| "easeInSine"
---| "easeOutSine"
---| "easeInOutSine"
---| "easeInExpo"
---| "easeOutExpo"
---| "easeInOutExpo"
---| "easeInCirc"
---| "easeOutCirc"
---| "easeInOutCirc"
---| "easeInBounce"
---| "easeOutBounce"
---| "easeInOutBounce"
---| "easeInBack"
---| "easeOutBack"
---| "easeInOutBack"
---| "easeInElastic"
---| "easeOutElastic"
---| "easeInOutElastic"
---| "easeSpring"
---| "easeShake"
---| "punch"
---| "once"
---| "clamp"
---| "pingPong"
---| "animationCurve"

---@alias KeyCode string
---| "None"
---| "Backspace"
---| "Delete"
---| "Tab"
---| "Clear"
---| "Return"
---| "Pause"
---| "Escape"
---| "Space"
---| "Keypad0"
---| "Keypad1"
---| "Keypad2"
---| "Keypad3"
---| "Keypad4"
---| "Keypad5"
---| "Keypad6"
---| "Keypad7"
---| "Keypad8"
---| "Keypad9"
---| "KeypadPeriod"
---| "KeypadDivide"
---| "KeypadMultiply"
---| "KeypadMinus"
---| "KeypadPlus"
---| "KeypadEnter"
---| "KeypadEquals"
---| "UpArrow"
---| "DownArrow"
---| "RightArrow"
---| "LeftArrow"
---| "Insert"
---| "Home"
---| "End"
---| "PageUp"
---| "PageDown"
---| "F1"
---| "F2"
---| "F3"
---| "F4"
---| "F5"
---| "F6"
---| "F7"
---| "F8"
---| "F9"
---| "F10"
---| "F11"
---| "F12"
---| "F13"
---| "F14"
---| "F15"
---| "Alpha0"
---| "Alpha1"
---| "Alpha2"
---| "Alpha3"
---| "Alpha4"
---| "Alpha5"
---| "Alpha6"
---| "Alpha7"
---| "Alpha8"
---| "Alpha9"
---| "Exclaim"
---| "DoubleQuote"
---| "Hash"
---| "Dollar"
---| "Percent"
---| "Ampersand"
---| "Quote"
---| "LeftParen"
---| "RightParen"
---| "Asterisk"
---| "Plus"
---| "Comma"
---| "Minus"
---| "Period"
---| "Slash"
---| "Colon"
---| "Semicolon"
---| "Less"
---| "Equals"
---| "Greater"
---| "Question"
---| "At"
---| "LeftBracket"
---| "Backslash"
---| "RightBracket"
---| "Caret"
---| "Underscore"
---| "BackQuote"
---| "A"
---| "B"
---| "C"
---| "D"
---| "E"
---| "F"
---| "G"
---| "H"
---| "I"
---| "J"
---| "K"
---| "L"
---| "M"
---| "N"
---| "O"
---| "P"
---| "Q"
---| "R"
---| "S"
---| "T"
---| "U"
---| "V"
---| "W"
---| "X"
---| "Y"
---| "Z"
---| "LeftCurlyBracket"
---| "Pipe"
---| "RightCurlyBracket"
---| "Tilde"
---| "Numlock"
---| "CapsLock"
---| "ScrollLock"
---| "RightShift"
---| "LeftShift"
---| "RightControl"
---| "LeftControl"
---| "RightAlt"
---| "LeftAlt"
---| "LeftMeta"
---| "LeftCommand"
---| "LeftApple"
---| "LeftWindows"
---| "RightMeta"
---| "RightCommand"
---| "RightApple"
---| "RightWindows"
---| "AltGr"
---| "Help"
---| "Print"
---| "SysReq"
---| "Break"
---| "Menu"
---| "WheelUp"
---| "WheelDown"
---| "Mouse0"
---| "Mouse1"
---| "Mouse2"
---| "Mouse3"
---| "Mouse4"
---| "Mouse5"
---| "Mouse6"