---@meta --#region DaemonicTypes ---@enum KeyCode local KeyCode = { RALT = "RALT", RCONTROL = "RCONTROL", RSHIFT = "RSHIFT" } ---@alias GUID string ---@alias UnitReference UnitId | GUID ---@enum EncryptionType local EncryptionType = { EncryptionRandomKey = 1, EncryptionCompressionKey = 2, AES256EncryptionKey = 3, } ---@enum HashType local HashType = { MD5 = 1, SHA1 = 2, SHA256 = 3, } ---@enum HMacHashType local HMacHashType = { ["HMAC-MD5"] = 1, ["HMAC-SHA1"] = 2, ["HMAC-SHA256"] = 3, } ---@alias DaemonicObjectReference GUID ---@enum FindPathReturnType local FindPathReturnType = { NavigationFinished = 0, MapFilesInvalid = -1, OutOfMemory = -2, MapCaching = -3, } ---@enum ProductType local ProductType = { Retail = 1, WotlkEra = 2 } ---@enum DispelType local DispelType = { Curse = 'Curse', Disease = 'Disease', Magic = 'Magic', Poison = 'Poison', Enrage = '', } ---@enum DispelId local DispelId = { Curse = 1, Disease = 2, Magic = 3, Poison = 4, Enrage = 5, } ---@enum UnitStandStateType local UnitStandStateType = { STAND = 0, SIT = 1, SIT_CHAIR = 2, SLEEP = 3, SIT_LOW_CHAIR = 4, SIT_MEDIUM_CHAIR = 5, SIT_HIGH_CHAIR = 6, DEAD = 7, KNEEL = 8, SUBMERGED = 9, } ---@enum ExpansionType local ExpansionType = { Retail = 'Retail', Class = 'Classic', ClassicEra = 'Classic_Era', } ---@enum InetRequestType local InetRequestType = { Get = 'GET', Post = 'POST' } ---@enum GetProductStatusReturn local GetProductStatusReturn = { [1] = 1, [2] = 2 } --#endregion DaemonicTypes ---@class Daemonic local Daemonic = { ---@param WoWProtectedAPI string ---@param args ... SecureCode = function(WoWProtectedAPI, args) end, ---@param unit UnitReference Interact = function(unit) end, ---@param x number ---@param y number ---@param z number ClickPosition = function(x, y, z) end, ---@param radians number ---@param update boolean FaceDirection = function(radians, update) end, ---@param startX number ---@param startY number ---@param startZ number ---@param endX number ---@param endY number ---@param endZ number ---@param flags CollisionFlags TraceLine = function(startX, startY, startZ, endX, endY, endZ, flags) end, ---@return string bnetAccountTag ---@return string bnetAccountId ---@return string wowAccount GetWowAccountId = function() end, ---@param x number ---@param y number ---@param z number ---@return number sY ---@return number sX ---@return boolean visible WorldToScreen = function(x, y, z) end, ---@param x number ---@param y number ---@param flags CollisionFlags ---@return number wX ---@return number wY ---@return number wZ ScreenToWorld = function(x, y, flags) end, ---@param object DaemonicObjectReference ---@return boolean ObjectIsQuestObjective = function(object) end, ---@return number x ---@return number y ---@return number z GetLastClickPosition = function() end, ---@return number x ---@return number y ---@return number z GetCorpsePosition = function() end, ---@return boolean IsSpellPending = function() end, CancelPendingSpell = function() end, ---@param x1 number ---@param y1 number ---@param z1 number ---@param x2 number ---@param y2 number ---@param z2 number ---@return number facing ---@return number pitch ---@overload fun(unit1: UnitReference, unit2: UnitReference): facing: number, pitch: number GetAngles = function(x1, y1, z1, x2, y2, z2) end, ---@param x1 number ---@param y1 number ---@param z1 number ---@param x2 number ---@param y2 number ---@param z2 number ---@return number ---@overload fun(unit1: UnitReference, unit2: UnitReference): number GetDistance2D = function(x1, y1, z1, x2, y2, z2) end, ---@param x1 number ---@param y1 number ---@param z1 number ---@param x2 number ---@param y2 number ---@param z2 number ---@return number ---@overload fun(unit1: UnitReference, unit2: UnitReference): number GetDistance3D = function(x1, y1, z1, x2, y2, z2) end, ---@param code string ---@param debugname string ---@param variables any ---@return boolean status ---@return any results RequireCode = function(code, debugname, variables) end, ---@param encCode string ---@param debugname string ---@param variables any ---@return boolean status ---@return any results RequireCodeEnc = function(encCode, debugname, variables) end, ---@param spellId integer ---@return DispelType ---@return DispelId GetSpellDispelType = function(spellId) end, ---@return ExpansionType GameExpansion = function() end, ---@return number width ---@return number height ---@return number scale GameWindowSize = function() end, ---@return number camX ---@return number camY ---@return number camZ ---@return number matrixYX ---@return number matrixYY ---@return number matrixYZ ---@return number matrixZX ---@return number matrixZY ---@return number matrixZZ ---@return number matrixXX ---@return number matrixXY ---@return number matrixXZ ---@return number camFov ---@return number camYaw ---@return number camPitch ---@return number camRoll GetCameraData = function() end, ---@return number camX ---@return number camY ---@return number camZ GetCameraPosition = function() end, ---@return number camYaw ---@return number camPitch ---@return number camRoll GetCameraRotation = function() end, ---@param yaw number ---@param pitch number ---@param roll number SetCameraRotation = function(yaw, pitch, roll) end, ---@param pitch number SetPitch = function(pitch) end, ---@param inputFilePath string ---@param outputFilePath string EncryptAutoLoad = function(inputFilePath, outputFilePath) end, ---@param input string ---@param key string ---@param type EncryptionType ---@param iv string ---@return string EncryptString = function(input, key, type, iv) end, ---@param input string ---@param key string ---@param type EncryptionType ---@param iv string ---@return string DecryptString = function(input, key, type, iv) end, ---@param input string ---@param type HashType ---@return string HashString = function(input, type) end, ---@param input string ---@param key string ---@param type HMacHashType ---@return string HmacString = function(input, key, type) end, ---@param input string ---@return string Base64EncodeString = function(input) end, ---@param input string ---@return string Base64DecodeString = function(input) end, ---@param luaCode string ---@param key string ---@param type EncryptionType ---@param iv string ---@param debugName string ---@return function DecryptAndRunString = function(luaCode, key, type, iv, debugName) end, ---@param luaCode string ---@param debugName string ---@return function LoadString = function(luaCode, debugName) end, ---@param encLuaCode string ---@param key string ---@param type EncryptionType ---@param iv string ---@param debugName string ---@return function DecryptAndLoadString = function(encLuaCode, key, type, iv, debugName) end, ---@param luaCode string ---@return string EncryptCode = function(luaCode) end, ---@param encLuaCode string ---@param debugName string ---@return function LoadStringEnc = function(encLuaCode, debugName) end, ---@param method InetRequestType ---@param url string ---@param parameters string ---@param headers string ---@return number id InetRequest = function(method, url, parameters, headers) end, ---@param id number ---@return string res ---@return number status InetGetRequest = function(id) end, InetSync = function() end, ---@param guid GUID ---@return boolean IsGuid = function(guid) end, ---@return integer GetObjectCount = function() end, ---@param index integer ---@return DaemonicObjectReference object GetObjectWithIndex = function(index) end, ---@param unit UnitReference ---@param offset number ---@param type LuaType ObjectField = function(unit, offset, type) end, ---@param unit UnitReference ---@param offset number ---@param type LuaType ---@param data string | number | integer SetObjectField = function(unit, offset, type, data) end, ---@param unit UnitReference ---@return string ObjectName = function(unit) end, ---@param unit UnitReference ---@return string ObjectMover = function(unit) end, ---@param unit UnitReference ---@return ObjectType ObjectType = function(unit) end, ---@param unit UnitReference ---@return boolean ObjectExists = function(unit) end, ---@param unit UnitReference ---@return GameObjectType GameObjectType = function(unit) end, ---@param object DaemonicObjectReference ---@return string ObjectID = function(object) end, ---@return integer GetMissileCount = function() end, ---@param index integer ---@return integer spellID ---@return integer spellVisualID ---@return number x ---@return number y ---@return number z ---@return GUID caster ---@return number sx ---@return number sy ---@return number sz ---@return GUID target ---@return number tx ---@return number ty ---@return number tz GetMissileWithIndex = function(index) end, ---@param unit UnitReference ---@param spellId integer ---@return integer GetAuraCount = function(unit, spellId) end, ---@param index integer ---@return integer spellId ---@return integer count ---@return number duration ---@return number expirationTime GetAuraWithIndex = function(index) end, ---@param unit UnitReference ---@return number x ---@return number y ---@return number z GetUnitPosition = function(unit) end, ---@param unit UnitReference ---@return number x ---@return number y ---@return number z GetUnitRawPosition = function(unit) end, ---@param unit UnitReference ---@return number UnitFacing = function(unit) end, ---@param unit UnitReference ---@param spellId integer ---@return number x ---@return number y ---@return number z UnitEffect = function(unit, spellId) end, ---@param unit UnitReference ---@return number UnitRawFacing = function(unit) end, ---@param unit UnitReference ---@return UnitCreatureType UnitCreatureTypeId = function(unit) end, ---@param unit UnitReference SetTargetUnit = function(unit) end, ClearTargetUnit = function() end, ---@param unit UnitReference ---@return number UnitPitch = function(unit) end, ---@param unit UnitReference ---@return UnitReference UnitSummonedBy = function(unit) end, ---@param unit UnitReference ---@return UnitReference UnitCreatedBy = function(unit) end, ---@param unit UnitReference ---@return UnitReference UnitTarget = function(unit) end, ---@param unit UnitReference ---@return number UnitHeight = function(unit) end, ---@param unit UnitReference ---@return number UnitFlags = function(unit) end, ---@param unit UnitReference ---@return number UnitFlags2 = function(unit) end, ---@param unit UnitReference ---@return number UnitFlags3 = function(unit) end, ---@param unit UnitReference ---@return number UnitNpcFlags = function(unit) end, ---@param unit UnitReference ---@return number UnitBoundingRadius = function(unit) end, ---@param unit UnitReference ---@return number UnitCombatReach = function(unit) end, ---@param unit UnitReference ---@return number UnitDynamicFlags = function(unit) end, ---@param unit UnitReference ---@return number UnitAnimationFlags = function(unit) end, ---@param unit UnitReference ---@return boolean UnitIsSkinnable = function(unit) end, ---@param unit UnitReference ---@return boolean UnitIsLootable = function(unit) end, ---@param unit UnitReference ---@return UnitReference UnitCastingTarget = function(unit) end, ---@param unit UnitReference ---@return boolean UnitIsMounted = function(unit) end, ---@param unit UnitReference ---@return boolean UnitIsOutdoors = function(unit) end, ---@param unit UnitReference ---@return boolean UnitIsSubmerged = function(unit) end, ---@param unit UnitReference ---@return boolean UnitIsSitting = function(unit) end, ---@param unit UnitReference ---@return integer UnitSpecializationID = function(unit) end, ---@param unit UnitReference ---@return number ---@return number GetDragonridingSpeed = function(unit) end, ---@param unit UnitReference ---@return UnitStandStateType UnitStandStateType = function(unit) end, ---@param path string ---@return string | nil ReadFile = function(path) end, ---@param path string ---@param content string ---@param append boolean WriteFile = function(path, content, append) end, ---@param currentName string ---@param newName string RenameFile = function(currentName, newName) end, ---@param path string ---@param args ... ---@return boolean ---@return any RequireFile = function(path, args) end, ---@return string GetWowDirectory = function() end, ---@return string GetExeDirectory = function() end, ---@param path string ---@param pattern string ---@return string GetDirectoryFiles = function(path, pattern) end, ---@param path string ---@param pattern string ---@return string GetDirectoryFolders = function(path, pattern) end, ---@param path string ---@return boolean FileExists = function(path) end, ---@param path string CreateDirectory = function(path) end, ---@param path string ---@return boolean DirectoryExists = function(path) end, ---@param path string ---@return boolean IsWritablePath = function(path) end, ---@param path string ---@return boolean DeleteFile = function(path) end, ---@param path string ---@return boolean DeleteDirectory = function(path) end, ---@param encFilePath string ---@param variables any ---@return boolean ---@return any RequireFileEnc = function(encFilePath, variables) end, ---@param srcFile string ---@param destFile string CopyFile = function(srcFile, destFile) end, ---@param srcDir string ---@param destDir string CopyDirectory = function(srcDir, destDir) end, ---@param dirPath string RemoveDirectory = function(dirPath) end, ResetAfk = function() end, ---@param key KeyCode ---@return boolean GetKeyState = function(key) end, ---@return boolean IsWindowActive = function() end, ActivateWindow = function() end, ---@param waveFilePath string PlayWinSound = function(waveFilePath) end, ---@return string GetSessionID = function() end, ---@return integer GetSessionIndex = function() end, ---@param MemAddress number ---@param Offset integer ---@param type LuaType ReadMemory = function(MemAddress, Offset, type) end, ---@param text string SetClipboardText = function(text) end, ---@return string GetClipboardText = function() end, KillSession = function() end, ---@param productNumber ProductType ---@return GetProductStatusReturn GetProductStatus = function(productNumber) end, ---@param string string WipeString = function(string) end, ---@return boolean IsInWorld = function() end, ---@param string string ---@return string CompressString = function(string) end, ---@param string string ---@return string DecompressString = function(string) end, ---@param filepath string GetScreenshot = function(filepath) end, MinimizeWindow = function() end, ---@param x number ---@param y number ---@param w? number ---@param h? number MoveWindow = function(x, y, w, h) end, ---@param x number ---@param y number ---@param z number MoveTo = function(x, y, z) end, GetMapID = function() end, ---@param unit UnitReference ---@return MovementFlags GetUnitMovementFlags = function(unit) end, ---@param mapId integer ---@param x1 number ---@param y1 number ---@param z1 number ---@param x2 number ---@param y2 number ---@param z2 number ---@param swim boolean ---@return FindPathReturnType | nil FindPath = function(mapId, x1, y1, z1, x2, y2, z2, swim) end, ---@param pathIndex integer ---@param swim? boolean ---@return number x ---@return number y ---@return number z GetPathNode = function(pathIndex, swim) end, ---@param path string SetMapsPath = function(path) end, ---@param x number ---@param y number ---@param z number ---@return number x ---@return number y GetTileByPosition = function(x, y, z) end, UnloadMaps = function() end, SendMovementHeartbeat = function() end, } SecureCode = Daemonic.SecureCode --Interact = Daemonic.Interact ClickPosition = Daemonic.ClickPosition --FaceDirection = Daemonic.FaceDirection --TraceLine = Daemonic.TraceLine --GetWowAccountId = Daemonic.GetWowAccountId --WorldToScreen = Daemonic.WorldToScreen --ScreenToWorld = Daemonic.ScreenToWorld --ObjectIsQuestObjective = Daemonic.ObjectIsQuestObjective --GetLastClickPosition = Daemonic.GetLastClickPosition --GetCorpsePosition = Daemonic.GetCorpsePosition IsSpellPending = Daemonic.IsSpellPending --CancelPendingSpell = Daemonic.CancelPendingSpell --GetAngles = Daemonic.GetAngles --GetDistance2D = Daemonic.GetDistance2D GetDistance3D = Daemonic.GetDistance3D --RequireCode = Daemonic.RequireCode --RequireCodeEnc = Daemonic.RequireCodeEnc --GetSpellDispelType = Daemonic.GetSpellDispelType --GameExpansion = Daemonic.GameExpansion --GameWindowSize = Daemonic.GameWindowSize --GetCameraData = Daemonic.GetCameraData --GetCameraPosition = Daemonic.GetCameraPosition --GetCameraRotation = Daemonic.GetCameraRotation --SetCameraRotation = Daemonic.SetCameraRotation --SetPitch = Daemonic.SetPitch --EncryptAutoLoad = Daemonic.EncryptAutoLoad --EncryptString = Daemonic.EncryptString --DecryptString = Daemonic.DecryptString --HashString = Daemonic.HashString --HmacString = Daemonic.HmacString --Base64EncodeString = Daemonic.Base64EncodeString --Base64DecodeString = Daemonic.Base64DecodeString --DecryptAndRunString = Daemonic.DecryptAndRunString --LoadString = Daemonic.LoadString --DecryptAndLoadString = Daemonic.DecryptAndLoadString --EncryptCode = Daemonic.EncryptCode --LoadStringEnc = Daemonic.LoadStringEnc --InetRequest = Daemonic.InetRequest --InetGetRequest = Daemonic.InetGetRequest --InetSync = Daemonic.InetSync IsGuid = Daemonic.IsGuid GetObjectCount = Daemonic.GetObjectCount GetObjectWithIndex = Daemonic.GetObjectWithIndex --ObjectField = Daemonic.ObjectField --SetObjectField = Daemonic.SetObjectField --ObjectName = Daemonic.ObjectName --ObjectMover = Daemonic.ObjectMover ObjectType = Daemonic.ObjectType ObjectExists = Daemonic.ObjectExists --GameObjectType = Daemonic.GameObjectType ObjectID = Daemonic.ObjectID --GetMissileCount = Daemonic.GetMissileCount --GetMissileWithIndex = Daemonic.GetMissileWithIndex --GetAuraCount = Daemonic.GetAuraCount --GetAuraWithIndex = Daemonic.GetAuraWithIndex GetUnitPosition = Daemonic.GetUnitPosition --GetUnitRawPosition = Daemonic.GetUnitRawPosition UnitFacing = Daemonic.UnitFacing --UnitEffect = Daemonic.UnitEffect --UnitRawFacing = Daemonic.UnitRawFacing --UnitCreatureTypeId = Daemonic.UnitCreatureTypeId --SetTargetUnit = Daemonic.SetTargetUnit --ClearTargetUnit = Daemonic.ClearTargetUnit --UnitPitch = Daemonic.UnitPitch --UnitSummonedBy = Daemonic.UnitSummonedBy --UnitCreatedBy = Daemonic.UnitCreatedBy --UnitTarget = Daemonic.UnitTarget UnitHeight = Daemonic.UnitHeight --UnitFlags = Daemonic.UnitFlags --UnitFlags2 = Daemonic.UnitFlags2 --UnitFlags3 = Daemonic.UnitFlags3 --UnitNpcFlags = Daemonic.UnitNpcFlags --UnitBoundingRadius = Daemonic.UnitBoundingRadius UnitCombatReach = Daemonic.UnitCombatReach --UnitDynamicFlags = Daemonic.UnitDynamicFlags --UnitAnimationFlags = Daemonic.UnitAnimationFlags --UnitIsSkinnable = Daemonic.UnitIsSkinnable --UnitIsLootable = Daemonic.UnitIsLootable --UnitCastingTarget = Daemonic.UnitCastingTarget UnitIsMounted = Daemonic.UnitIsMounted UnitIsOutdoors = Daemonic.UnitIsOutdoors UnitIsSubmerged = Daemonic.UnitIsSubmerged --UnitIsSitting = Daemonic.UnitIsSitting --UnitSpecializationID = Daemonic.UnitSpecializationID --GetDragonridingSpeed = Daemonic.GetDragonridingSpeed --UnitStandStateType = Daemonic.UnitStandStateType --ReadFile = Daemonic.ReadFile WriteFile = Daemonic.WriteFile --RenameFile = Daemonic.RenameFile --GetWowDirectory = Daemonic.GetWowDirectory --GetExeDirectory = Daemonic.GetExeDirectory GetDirectoryFiles = Daemonic.GetDirectoryFiles --GetDirectoryFolders = Daemonic.GetDirectoryFolders --FileExists = Daemonic.FileExists --CreateDirectory = Daemonic.CreateDirectory --DirectoryExists = Daemonic.DirectoryExists --IsWritablePath = Daemonic.IsWritablePath --DeleteFile = Daemonic.DeleteFile --DeleteDirectory = Daemonic.DeleteDirectory RequireFile = Daemonic.RequireFile --RequireFileEnc = Daemonic.RequireFileEnc --CopyFile = Daemonic.CopyFile --CopyDirectory = Daemonic.CopyDirectory --RemoveDirectory = Daemonic.RemoveDirectory --ResetAfk = Daemonic.ResetAfk --GetKeyState = Daemonic.GetKeyState --IsWindowActive = Daemonic.IsWindowActive --ActivateWindow = Daemonic.ActivateWindow --PlayWinSound = Daemonic.PlayWinSound --GetSessionID = Daemonic.GetSessionID --GetSessionIndex = Daemonic.GetSessionIndex --ReadMemory = Daemonic.ReadMemory --SetClipboardText = Daemonic.SetClipboardText --GetClipboardText = Daemonic.GetClipboardText --KillSession = Daemonic.KillSession GetProductStatus = Daemonic.GetProductStatus --WipeString = Daemonic.WipeString --IsInWorld = Daemonic.IsInWorld --CompressString = Daemonic.CompressString --DecompressString = Daemonic.DecompressString --GetScreenshot = Daemonic.GetScreenshot --MinimizeWindow = Daemonic.MinimizeWindow --MoveWindow = Daemonic.MoveWindow --MoveTo = Daemonic.MoveTo --GetMapID = Daemonic.GetMapID GetUnitMovementFlags = Daemonic.GetUnitMovementFlags --FindPath = Daemonic.FindPath --GetPathNode = Daemonic.GetPathNode --SetMapsPath = Daemonic.SetMapsPath --GetTileByPosition = Daemonic.GetTileByPosition --UnloadMaps = Daemonic.UnloadMaps --SendMovementHeartbeat = Daemonic.SendMovementHeartbeat