-- Generated ApiVault API data shard. Do not edit manually.
-- version=0.1.0.2; shard=24; systems=20
local addonName, ApiVault = ...
local systems = ApiVault.APIData.systems
systems[#systems + 1] = {
	name = "SimpleTextureAPI",
	type = "ScriptObject",
	ns = "",
	env = "All",
	file = "SimpleTextureAPIDocumentation.lua",
	hash = "f72024431d58d1181b163562a9061fd7ed976dc9955d1cf57ff71e98b2ba33d9",
	functions = {
		{
			n = "AddMaskTexture",
			k = "Function",
			sec = "AllowedWhenUntainted",
			args = {
				{
					n = "mask",
					t = "SimpleMaskTexture",
					nilable = false,
				},
			},
		},
		{
			n = "GetMaskTexture",
			k = "Function",
			sec = "AllowedWhenUntainted",
			args = {
				{
					n = "index",
					t = "luaIndex",
					nilable = false,
				},
			},
			rets = {
				{
					n = "mask",
					t = "SimpleMaskTexture",
					nilable = false,
				},
			},
			ConstSecretAccessor = true,
			SecretReturnsForAspect = {
				"Enum.SecretAspect.Hierarchy",
			},
		},
		{
			n = "GetNumMaskTextures",
			k = "Function",
			rets = {
				{
					n = "count",
					t = "size",
					nilable = false,
				},
			},
			SecretReturnsForAspect = {
				"Enum.SecretAspect.Hierarchy",
			},
		},
		{
			n = "RemoveMaskTexture",
			k = "Function",
			sec = "AllowedWhenUntainted",
			args = {
				{
					n = "mask",
					t = "SimpleMaskTexture",
					nilable = false,
				},
			},
		},
	},
}
systems[#systems + 1] = {
	name = "SimpleTextureBaseAPI",
	type = "ScriptObject",
	ns = "",
	env = "All",
	file = "SimpleTextureBaseAPIDocumentation.lua",
	hash = "99cd804b06d0de6393c1c9379f6305f234e2a7695b11d3089b2c63e140f7fd1f",
	functions = {
		{
			n = "ClearTextureSlice",
			k = "Function",
			doc = {
				"Disable shader based nineslice texture rendering. Since SetAtlas will automatically load slice data for the atlas from the DB, can be useful if you want to disable nineslice after setting an atlas.",
			},
		},
		{
			n = "ClearVertexOffsets",
			k = "Function",
		},
		{
			n = "GetAtlas",
			k = "Function",
			rets = {
				{
					n = "atlas",
					t = "textureAtlas",
					nilable = false,
				},
			},
		},
		{
			n = "GetBlendMode",
			k = "Function",
			rets = {
				{
					n = "blendMode",
					t = "BlendMode",
					nilable = false,
				},
			},
		},
		{
			n = "GetDesaturation",
			k = "Function",
			rets = {
				{
					n = "desaturation",
					t = "normalizedValue",
					nilable = false,
				},
			},
			SecretReturnsForAspect = {
				"Enum.SecretAspect.Desaturation",
			},
		},
		{
			n = "GetHorizTile",
			k = "Function",
			rets = {
				{
					n = "tiling",
					t = "bool",
					nilable = false,
				},
			},
		},
		{
			n = "GetRotation",
			k = "Function",
			rets = {
				{
					n = "radians",
					t = "number",
					nilable = false,
				},
				{
					n = "normalizedRotationPoint",
					t = "vector2",
					nilable = false,
					mix = "Vector2DMixin",
				},
			},
			SecretReturnsForAspect = {
				"Enum.SecretAspect.Rotation",
			},
		},
		{
			n = "GetTexCoord",
			k = "Function",
			rets = {
				{
					n = "ulX",
					t = "number",
					nilable = false,
				},
				{
					n = "ulY",
					t = "number",
					nilable = false,
				},
				{
					n = "llX",
					t = "number",
					nilable = false,
				},
				{
					n = "llY",
					t = "number",
					nilable = false,
				},
				{
					n = "urX",
					t = "number",
					nilable = false,
				},
				{
					n = "urY",
					t = "number",
					nilable = false,
				},
				{
					n = "lrX",
					t = "number",
					nilable = false,
				},
				{
					n = "lrY",
					t = "number",
					nilable = false,
				},
			},
			SecretReturnsForAspect = {
				"Enum.SecretAspect.TexCoords",
			},
		},
		{
			n = "GetTexelSnappingBias",
			k = "Function",
			rets = {
				{
					n = "bias",
					t = "normalizedValue",
					nilable = false,
				},
			},
		},
		{
			n = "GetTexture",
			k = "Function",
			rets = {
				{
					n = "textureFile",
					t = "cstring",
					nilable = true,
				},
			},
		},
		{
			n = "GetTextureFileID",
			k = "Function",
			rets = {
				{
					n = "textureFile",
					t = "fileID",
					nilable = false,
				},
			},
		},
		{
			n = "GetTextureFilePath",
			k = "Function",
			rets = {
				{
					n = "textureFile",
					t = "cstring",
					nilable = true,
				},
			},
		},
		{
			n = "GetTextureSliceMargins",
			k = "Function",
			rets = {
				{
					n = "left",
					t = "number",
					nilable = false,
				},
				{
					n = "top",
					t = "number",
					nilable = false,
				},
				{
					n = "right",
					t = "number",
					nilable = false,
				},
				{
					n = "bottom",
					t = "number",
					nilable = false,
				},
			},
			mayReturnNothing = true,
		},
		{
			n = "GetTextureSliceMode",
			k = "Function",
			rets = {
				{
					n = "sliceMode",
					t = "UITextureSliceMode",
					nilable = false,
				},
			},
			mayReturnNothing = true,
		},
		{
			n = "GetVertTile",
			k = "Function",
			rets = {
				{
					n = "tiling",
					t = "bool",
					nilable = false,
				},
			},
		},
		{
			n = "GetVertexOffset",
			k = "Function",
			sec = "AllowedWhenUntainted",
			args = {
				{
					n = "vertexIndex",
					t = "luaIndex",
					nilable = false,
				},
			},
			rets = {
				{
					n = "offsetX",
					t = "uiUnit",
					nilable = false,
				},
				{
					n = "offsetY",
					t = "uiUnit",
					nilable = false,
				},
			},
			ConstSecretAccessor = true,
		},
		{
			n = "IsBlockingLoadRequested",
			k = "Function",
			rets = {
				{
					n = "blocking",
					t = "bool",
					nilable = false,
				},
			},
		},
		{
			n = "IsDesaturated",
			k = "Function",
			rets = {
				{
					n = "desaturated",
					t = "bool",
					nilable = false,
				},
			},
			RequiresScriptObjectDesaturationAccess = true,
			SecretReturnsForAspect = {
				"Enum.SecretAspect.Desaturation",
			},
		},
		{
			n = "IsSnappingToPixelGrid",
			k = "Function",
			rets = {
				{
					n = "snap",
					t = "bool",
					nilable = false,
				},
			},
		},
		{
			n = "ResetTexCoord",
			k = "Function",
		},
		{
			n = "SetAtlas",
			k = "Function",
			sec = "AllowedWhenTainted",
			args = {
				{
					n = "atlas",
					t = "textureAtlas",
					nilable = false,
				},
				{
					n = "useAtlasSize",
					t = "bool",
					nilable = false,
					def = false,
					NeverSecret = true,
				},
				{
					n = "filterMode",
					t = "FilterMode",
					nilable = true,
					NeverSecret = true,
				},
				{
					n = "resetTexCoords",
					t = "bool",
					nilable = true,
					NeverSecret = true,
				},
				{
					n = "wrapModeHorizontal",
					t = "cstring",
					nilable = true,
					NeverSecret = true,
				},
				{
					n = "wrapModeVertical",
					t = "cstring",
					nilable = true,
					NeverSecret = true,
				},
			},
		},
		{
			n = "SetBlendMode",
			k = "Function",
			sec = "AllowedWhenUntainted",
			args = {
				{
					n = "blendMode",
					t = "BlendMode",
					nilable = false,
				},
			},
		},
		{
			n = "SetBlockingLoadsRequested",
			k = "Function",
			sec = "AllowedWhenUntainted",
			args = {
				{
					n = "blocking",
					t = "bool",
					nilable = false,
					def = false,
				},
			},
		},
		{
			n = "SetColorTexture",
			k = "Function",
			sec = "AllowedWhenTainted",
			args = {
				{
					n = "colorR",
					t = "number",
					nilable = false,
				},
				{
					n = "colorG",
					t = "number",
					nilable = false,
				},
				{
					n = "colorB",
					t = "number",
					nilable = false,
				},
				{
					n = "a",
					t = "SingleColorValue",
					nilable = true,
				},
			},
		},
		{
			n = "SetDesaturated",
			k = "Function",
			sec = "AllowedWhenTainted",
			args = {
				{
					n = "desaturated",
					t = "bool",
					nilable = false,
					def = false,
				},
			},
			SecretArgumentsAddAspect = {
				"Enum.SecretAspect.Desaturation",
			},
		},
		{
			n = "SetDesaturation",
			k = "Function",
			sec = "AllowedWhenTainted",
			args = {
				{
					n = "desaturation",
					t = "normalizedValue",
					nilable = false,
				},
			},
			SecretArgumentsAddAspect = {
				"Enum.SecretAspect.Desaturation",
			},
		},
		{
			n = "SetGradient",
			k = "Function",
			sec = "AllowedWhenUntainted",
			args = {
				{
					n = "orientation",
					t = "Orientation",
					nilable = false,
				},
				{
					n = "minColor",
					t = "colorRGBA",
					nilable = false,
					mix = "ColorMixin",
				},
				{
					n = "maxColor",
					t = "colorRGBA",
					nilable = false,
					mix = "ColorMixin",
				},
			},
		},
		{
			n = "SetHorizTile",
			k = "Function",
			sec = "AllowedWhenUntainted",
			args = {
				{
					n = "tiling",
					t = "bool",
					nilable = false,
					def = false,
				},
			},
		},
		{
			n = "SetMask",
			k = "Function",
			sec = "AllowedWhenUntainted",
			args = {
				{
					n = "file",
					t = "cstring",
					nilable = false,
				},
			},
		},
		{
			n = "SetRotation",
			k = "Function",
			sec = "AllowedWhenTainted",
			args = {
				{
					n = "radians",
					t = "number",
					nilable = false,
				},
				{
					n = "normalizedRotationPoint",
					t = "vector2",
					nilable = true,
					mix = "Vector2DMixin",
				},
			},
			SecretArgumentsAddAspect = {
				"Enum.SecretAspect.Rotation",
			},
		},
		{
			n = "SetSnapToPixelGrid",
			k = "Function",
			sec = "AllowedWhenUntainted",
			args = {
				{
					n = "snap",
					t = "bool",
					nilable = false,
					def = false,
				},
			},
		},
		{
			n = "SetSpriteSheetCell",
			k = "Function",
			sec = "AllowedWhenTainted",
			args = {
				{
					n = "cell",
					t = "luaIndex",
					nilable = false,
					ConditionalSecret = true,
				},
				{
					n = "numRows",
					t = "number",
					nilable = false,
					NeverSecret = true,
				},
				{
					n = "numColumns",
					t = "number",
					nilable = false,
					NeverSecret = true,
				},
				{
					n = "cellWidth",
					t = "number",
					nilable = true,
					NeverSecret = true,
				},
				{
					n = "cellHeight",
					t = "number",
					nilable = true,
					NeverSecret = true,
				},
			},
			SecretArgumentsAddAspect = {
				"Enum.SecretAspect.TexCoords",
			},
		},
		{
			n = "SetTexCoord",
			k = "Function",
			sec = "AllowedWhenTainted",
			args = {
				{
					n = "left",
					t = "number",
					nilable = false,
				},
				{
					n = "right",
					t = "number",
					nilable = false,
				},
				{
					n = "bottom",
					t = "number",
					nilable = false,
				},
				{
					n = "top",
					t = "number",
					nilable = false,
				},
			},
			SecretArgumentsAddAspect = {
				"Enum.SecretAspect.TexCoords",
			},
		},
		{
			n = "SetTexelSnappingBias",
			k = "Function",
			sec = "AllowedWhenUntainted",
			args = {
				{
					n = "bias",
					t = "normalizedValue",
					nilable = false,
				},
			},
		},
		{
			n = "SetTexture",
			k = "Function",
			sec = "AllowedWhenTainted",
			args = {
				{
					n = "textureAsset",
					t = "cstring",
					nilable = true,
				},
				{
					n = "wrapModeHorizontal",
					t = "cstring",
					nilable = true,
				},
				{
					n = "wrapModeVertical",
					t = "cstring",
					nilable = true,
				},
				{
					n = "filterMode",
					t = "cstring",
					nilable = true,
				},
			},
			rets = {
				{
					n = "success",
					t = "bool",
					nilable = false,
				},
			},
		},
		{
			n = "SetTextureSliceMargins",
			k = "Function",
			doc = {
				"Enables nineslice texture rendering using the specified pixel margins. Preferred over legacy nineslice approach that uses 9 separate textures.",
			},
			sec = "AllowedWhenUntainted",
			args = {
				{
					n = "left",
					t = "number",
					nilable = false,
				},
				{
					n = "top",
					t = "number",
					nilable = false,
				},
				{
					n = "right",
					t = "number",
					nilable = false,
				},
				{
					n = "bottom",
					t = "number",
					nilable = false,
				},
			},
		},
		{
			n = "SetTextureSliceMode",
			k = "Function",
			doc = {
				"Controls whether the center and sides are Stretched or Tiled when using nineslice texture rendering. Defaults to Stretched.",
			},
			sec = "AllowedWhenUntainted",
			args = {
				{
					n = "sliceMode",
					t = "UITextureSliceMode",
					nilable = false,
				},
			},
		},
		{
			n = "SetVertTile",
			k = "Function",
			sec = "AllowedWhenUntainted",
			args = {
				{
					n = "tiling",
					t = "bool",
					nilable = false,
					def = false,
				},
			},
		},
		{
			n = "SetVertexOffset",
			k = "Function",
			sec = "AllowedWhenUntainted",
			args = {
				{
					n = "vertexIndex",
					t = "luaIndex",
					nilable = false,
				},
				{
					n = "offsetX",
					t = "uiUnit",
					nilable = false,
				},
				{
					n = "offsetY",
					t = "uiUnit",
					nilable = false,
				},
			},
		},
	},
}
systems[#systems + 1] = {
	name = "SkillInfo",
	type = "System",
	ns = "C_SkillInfo",
	env = "All",
	file = "SkillInfoDocumentation.lua",
	hash = "823a6fa07dad94bfa0356bbecff9089a698951c44e4e0077bc8efaaabd7f45cf",
	events = {
		{
			n = "SkillLinesChanged",
			k = "Event",
			SynchronousEvent = true,
			literal = "SKILL_LINES_CHANGED",
		},
	},
}
systems[#systems + 1] = {
	name = "SlashCommand",
	type = "System",
	ns = "",
	env = "All",
	file = "SlashCommandDocumentation.lua",
	hash = "341dade8e1ad7329ec5b4fcfc95a67b63d05cd93ad5101a84c7cd333e9396adf",
	functions = {
		{
			n = "AreDangerousScriptsAllowed",
			k = "Function",
			rets = {
				{
					n = "allowed",
					t = "bool",
					nilable = false,
				},
			},
		},
		{
			n = "SetAllowDangerousScripts",
			k = "Function",
			sec = "AllowedWhenUntainted",
			args = {
				{
					n = "allowed",
					t = "bool",
					nilable = false,
					def = false,
				},
			},
		},
	},
}
systems[#systems + 1] = {
	name = "",
	type = "",
	ns = "",
	env = "",
	file = "SocialConstantsDocumentation.lua",
	hash = "200c30c11636d44629ac537e2aefc7012e2ada1a7e59785974d647eccdd9dbdd",
	tables = {
		{
			n = "SocialWhoOrigin",
			k = "Enumeration",
			fields = {
				{
					n = "Unknown",
					t = "SocialWhoOrigin",
					EnumValue = 0,
				},
				{
					n = "Social",
					t = "SocialWhoOrigin",
					EnumValue = 1,
				},
				{
					n = "Chat",
					t = "SocialWhoOrigin",
					EnumValue = 2,
				},
				{
					n = "Item",
					t = "SocialWhoOrigin",
					EnumValue = 3,
				},
			},
			max = 3,
			min = 0,
			num = 4,
		},
	},
}
systems[#systems + 1] = {
	name = "SocialQueue",
	type = "System",
	ns = "C_SocialQueue",
	env = "All",
	file = "SocialQueueDocumentation.lua",
	hash = "e77001e573c3c37ad225c38a00e72caa54cfe11c5f1bf7b865dd3c0496658911",
	functions = {
		{
			n = "GetAllGroups",
			k = "Function",
			sec = "AllowedWhenUntainted",
			args = {
				{
					n = "allowNonJoinable",
					t = "bool",
					nilable = false,
					def = false,
				},
				{
					n = "allowNonQueuedGroups",
					t = "bool",
					nilable = false,
					def = false,
				},
			},
			rets = {
				{
					n = "groupGUIDs",
					t = "table",
					nilable = false,
					it = "WOWGUID",
				},
			},
		},
		{
			n = "GetConfig",
			k = "Function",
			rets = {
				{
					n = "config",
					t = "SocialQueueConfig",
					nilable = false,
				},
			},
			mayReturnNothing = true,
		},
		{
			n = "GetGroupForPlayer",
			k = "Function",
			sec = "AllowedWhenUntainted",
			args = {
				{
					n = "playerGUID",
					t = "WOWGUID",
					nilable = false,
				},
			},
			rets = {
				{
					n = "groupGUID",
					t = "WOWGUID",
					nilable = false,
				},
				{
					n = "isSoloQueueParty",
					t = "bool",
					nilable = false,
				},
			},
			mayReturnNothing = true,
		},
		{
			n = "GetGroupInfo",
			k = "Function",
			sec = "AllowedWhenUntainted",
			args = {
				{
					n = "groupGUID",
					t = "WOWGUID",
					nilable = false,
				},
			},
			rets = {
				{
					n = "canJoin",
					t = "bool",
					nilable = false,
				},
				{
					n = "numQueues",
					t = "number",
					nilable = false,
				},
				{
					n = "needTank",
					t = "bool",
					nilable = false,
				},
				{
					n = "needHealer",
					t = "bool",
					nilable = false,
				},
				{
					n = "needDamage",
					t = "bool",
					nilable = false,
				},
				{
					n = "isSoloQueueParty",
					t = "bool",
					nilable = false,
				},
				{
					n = "questSessionActive",
					t = "bool",
					nilable = false,
				},
				{
					n = "leaderGUID",
					t = "WOWGUID",
					nilable = false,
				},
			},
			mayReturnNothing = true,
		},
		{
			n = "GetGroupMembers",
			k = "Function",
			sec = "AllowedWhenUntainted",
			args = {
				{
					n = "groupGUID",
					t = "WOWGUID",
					nilable = false,
				},
			},
			rets = {
				{
					n = "groupMembers",
					t = "table",
					nilable = false,
					it = "SocialQueuePlayerInfo",
				},
			},
			mayReturnNothing = true,
		},
		{
			n = "GetGroupQueues",
			k = "Function",
			sec = "AllowedWhenUntainted",
			args = {
				{
					n = "groupGUID",
					t = "WOWGUID",
					nilable = false,
				},
			},
			rets = {
				{
					n = "queues",
					t = "table",
					nilable = false,
					it = "SocialQueueGroupQueueInfo",
				},
			},
			mayReturnNothing = true,
		},
		{
			n = "RequestToJoin",
			k = "Function",
			sec = "AllowedWhenUntainted",
			args = {
				{
					n = "groupGUID",
					t = "WOWGUID",
					nilable = false,
				},
				{
					n = "applyAsTank",
					t = "bool",
					nilable = false,
					def = false,
				},
				{
					n = "applyAsHealer",
					t = "bool",
					nilable = false,
					def = false,
				},
				{
					n = "applyAsDamage",
					t = "bool",
					nilable = false,
					def = false,
				},
			},
			rets = {
				{
					n = "requestSuccessful",
					t = "bool",
					nilable = false,
				},
			},
		},
		{
			n = "SignalToastDisplayed",
			k = "Function",
			sec = "AllowedWhenUntainted",
			args = {
				{
					n = "groupGUID",
					t = "WOWGUID",
					nilable = false,
				},
				{
					n = "priority",
					t = "number",
					nilable = false,
				},
			},
		},
	},
	events = {
		{
			n = "SocialQueueConfigUpdated",
			k = "Event",
			SynchronousEvent = true,
			literal = "SOCIAL_QUEUE_CONFIG_UPDATED",
		},
		{
			n = "SocialQueueUpdate",
			k = "Event",
			payload = {
				{
					n = "groupGUID",
					t = "WOWGUID",
					nilable = false,
				},
				{
					n = "numAddedItems",
					t = "number",
					nilable = true,
				},
			},
			SynchronousEvent = true,
			literal = "SOCIAL_QUEUE_UPDATE",
		},
	},
	tables = {
		{
			n = "SocialQueueConfig",
			k = "Structure",
			fields = {
				{
					n = "TOASTS_DISABLED",
					t = "bool",
					nilable = false,
				},
				{
					n = "TOAST_DURATION",
					t = "number",
					nilable = false,
				},
				{
					n = "DELAY_DURATION",
					t = "number",
					nilable = false,
				},
				{
					n = "QUEUE_MULTIPLIER",
					t = "number",
					nilable = false,
				},
				{
					n = "PLAYER_MULTIPLIER",
					t = "number",
					nilable = false,
				},
				{
					n = "PLAYER_FRIEND_VALUE",
					t = "number",
					nilable = false,
				},
				{
					n = "PLAYER_GUILD_VALUE",
					t = "number",
					nilable = false,
				},
				{
					n = "THROTTLE_INITIAL_THRESHOLD",
					t = "number",
					nilable = false,
				},
				{
					n = "THROTTLE_DECAY_TIME",
					t = "number",
					nilable = false,
				},
				{
					n = "THROTTLE_PRIORITY_SPIKE",
					t = "number",
					nilable = false,
				},
				{
					n = "THROTTLE_MIN_THRESHOLD",
					t = "number",
					nilable = false,
				},
				{
					n = "THROTTLE_PVP_PRIORITY_NORMAL",
					t = "number",
					nilable = false,
				},
				{
					n = "THROTTLE_PVP_PRIORITY_LOW",
					t = "number",
					nilable = false,
				},
				{
					n = "THROTTLE_PVP_HONOR_THRESHOLD",
					t = "number",
					nilable = false,
				},
				{
					n = "THROTTLE_LFGLIST_PRIORITY_DEFAULT",
					t = "number",
					nilable = false,
				},
				{
					n = "THROTTLE_LFGLIST_PRIORITY_ABOVE",
					t = "number",
					nilable = false,
				},
				{
					n = "THROTTLE_LFGLIST_PRIORITY_BELOW",
					t = "number",
					nilable = false,
				},
				{
					n = "THROTTLE_LFGLIST_ILVL_SCALING_ABOVE",
					t = "number",
					nilable = false,
				},
				{
					n = "THROTTLE_LFGLIST_ILVL_SCALING_BELOW",
					t = "number",
					nilable = false,
				},
				{
					n = "THROTTLE_RF_PRIORITY_ABOVE",
					t = "number",
					nilable = false,
				},
				{
					n = "THROTTLE_RF_ILVL_SCALING_ABOVE",
					t = "number",
					nilable = false,
				},
				{
					n = "THROTTLE_DF_MAX_ITEM_LEVEL",
					t = "number",
					nilable = false,
				},
				{
					n = "THROTTLE_DF_BEST_PRIORITY",
					t = "number",
					nilable = false,
				},
			},
		},
		{
			n = "SocialQueueGroupInfo",
			k = "Structure",
			fields = {
				{
					n = "canJoin",
					t = "bool",
					nilable = false,
				},
				{
					n = "numQueues",
					t = "number",
					nilable = false,
				},
				{
					n = "needTank",
					t = "bool",
					nilable = false,
				},
				{
					n = "needHealer",
					t = "bool",
					nilable = false,
				},
				{
					n = "needDamage",
					t = "bool",
					nilable = false,
				},
				{
					n = "isSoloQueueParty",
					t = "bool",
					nilable = false,
				},
				{
					n = "questSessionActive",
					t = "bool",
					nilable = false,
				},
				{
					n = "leaderGUID",
					t = "WOWGUID",
					nilable = false,
				},
			},
		},
		{
			n = "SocialQueueGroupQueueInfo",
			k = "Structure",
			fields = {
				{
					n = "clientID",
					t = "number",
					nilable = false,
				},
				{
					n = "eligible",
					t = "bool",
					nilable = false,
				},
				{
					n = "needTank",
					t = "bool",
					nilable = false,
				},
				{
					n = "needHealer",
					t = "bool",
					nilable = false,
				},
				{
					n = "needDamage",
					t = "bool",
					nilable = false,
				},
				{
					n = "isAutoAccept",
					t = "bool",
					nilable = false,
				},
				{
					n = "queueData",
					t = "QueueSpecificInfo",
					nilable = false,
				},
			},
		},
		{
			n = "SocialQueuePlayerInfo",
			k = "Structure",
			fields = {
				{
					n = "guid",
					t = "WOWGUID",
					nilable = false,
				},
				{
					n = "clubId",
					t = "ClubId",
					nilable = true,
				},
			},
		},
	},
}
systems[#systems + 1] = {
	name = "SocialRestrictions",
	type = "System",
	ns = "C_SocialRestrictions",
	env = "All",
	file = "SocialRestrictionsDocumentation.lua",
	hash = "a2b641bef8b8d48030df5229aa0582d8c02d25047bd0ffd009013b7e4ae7527f",
	functions = {
		{
			n = "AcknowledgeRegionalChatDisabled",
			k = "Function",
		},
		{
			n = "CanReceiveChat",
			k = "Function",
			doc = {
				"Returns true if the player meets all conditions that allow them to receive chat messages.",
			},
			rets = {
				{
					n = "canReceiveChat",
					t = "bool",
					nilable = false,
				},
			},
		},
		{
			n = "CanSendChat",
			k = "Function",
			doc = {
				"Returns true if the player meets all conditions that allow them to send chat messages.",
			},
			rets = {
				{
					n = "canSendChat",
					t = "bool",
					nilable = false,
				},
			},
		},
		{
			n = "IsChatDisabled",
			k = "Function",
			rets = {
				{
					n = "disabled",
					t = "bool",
					nilable = false,
				},
			},
		},
		{
			n = "IsMuted",
			k = "Function",
			rets = {
				{
					n = "isMuted",
					t = "bool",
					nilable = false,
				},
			},
		},
		{
			n = "IsSilenced",
			k = "Function",
			rets = {
				{
					n = "isSilenced",
					t = "bool",
					nilable = false,
				},
			},
		},
		{
			n = "IsSquelched",
			k = "Function",
			rets = {
				{
					n = "isSquelched",
					t = "bool",
					nilable = false,
				},
			},
		},
		{
			n = "SetChatDisabled",
			k = "Function",
			sec = "AllowedWhenUntainted",
			args = {
				{
					n = "disabled",
					t = "bool",
					nilable = false,
				},
			},
		},
	},
	events = {
		{
			n = "AlertRegionalChatDisabled",
			k = "Event",
			SynchronousEvent = true,
			literal = "ALERT_REGIONAL_CHAT_DISABLED",
		},
		{
			n = "ChatDisabledChangeFailed",
			k = "Event",
			payload = {
				{
					n = "disabled",
					t = "bool",
					nilable = false,
				},
			},
			SynchronousEvent = true,
			literal = "CHAT_DISABLED_CHANGE_FAILED",
		},
		{
			n = "ChatDisabledChanged",
			k = "Event",
			payload = {
				{
					n = "disabled",
					t = "bool",
					nilable = false,
				},
			},
			SynchronousEvent = true,
			literal = "CHAT_DISABLED_CHANGED",
		},
	},
}
systems[#systems + 1] = {
	name = "",
	type = "",
	ns = "",
	env = "",
	file = "SoftTargetConstantsDocumentation.lua",
	hash = "60bca44f1337421590119149b60b05ce493b83b3210b873c41fd2c8e7ccec4d6",
	tables = {
		{
			n = "SoftTargetEnableFlags",
			k = "Enumeration",
			fields = {
				{
					n = "None",
					t = "SoftTargetEnableFlags",
					EnumValue = 0,
				},
				{
					n = "Gamepad",
					t = "SoftTargetEnableFlags",
					EnumValue = 1,
				},
				{
					n = "Kbm",
					t = "SoftTargetEnableFlags",
					EnumValue = 2,
				},
				{
					n = "Any",
					t = "SoftTargetEnableFlags",
					EnumValue = 3,
				},
			},
			max = 3,
			min = 0,
			num = 4,
		},
	},
}
systems[#systems + 1] = {
	name = "",
	type = "",
	ns = "",
	env = "",
	file = "SoulbindsConstantsDocumentation.lua",
	hash = "23af5a49602ad31083a6013a3d9fe9aa5a14a26426594dda9e1451a897abbdd5",
	tables = {
		{
			n = "AddSoulbindConduitReason",
			k = "Enumeration",
			fields = {
				{
					n = "None",
					t = "AddSoulbindConduitReason",
					EnumValue = 0,
				},
				{
					n = "Cheat",
					t = "AddSoulbindConduitReason",
					EnumValue = 1,
				},
				{
					n = "SpellEffect",
					t = "AddSoulbindConduitReason",
					EnumValue = 2,
				},
				{
					n = "Upgrade",
					t = "AddSoulbindConduitReason",
					EnumValue = 3,
				},
			},
			max = 3,
			min = 0,
			num = 4,
		},
		{
			n = "SoulbindConduitFlags",
			k = "Enumeration",
			fields = {
				{
					n = "VisibleToGetallsoulbindconduitScript",
					t = "SoulbindConduitFlags",
					EnumValue = 1,
				},
			},
			max = 1,
			min = 1,
			num = 1,
		},
		{
			n = "SoulbindConduitInstallResult",
			k = "Enumeration",
			fields = {
				{
					n = "Success",
					t = "SoulbindConduitInstallResult",
					EnumValue = 0,
				},
				{
					n = "InvalidItem",
					t = "SoulbindConduitInstallResult",
					EnumValue = 1,
				},
				{
					n = "InvalidConduit",
					t = "SoulbindConduitInstallResult",
					EnumValue = 2,
				},
				{
					n = "InvalidTalent",
					t = "SoulbindConduitInstallResult",
					EnumValue = 3,
				},
				{
					n = "DuplicateConduit",
					t = "SoulbindConduitInstallResult",
					EnumValue = 4,
				},
				{
					n = "ForgeNotInProximity",
					t = "SoulbindConduitInstallResult",
					EnumValue = 5,
				},
				{
					n = "SocketNotEmpty",
					t = "SoulbindConduitInstallResult",
					EnumValue = 6,
				},
			},
			max = 6,
			min = 0,
			num = 7,
		},
		{
			n = "SoulbindConduitTransactionType",
			k = "Enumeration",
			fields = {
				{
					n = "Install",
					t = "SoulbindConduitTransactionType",
					EnumValue = 0,
				},
				{
					n = "Uninstall",
					t = "SoulbindConduitTransactionType",
					EnumValue = 1,
				},
			},
			max = 1,
			min = 0,
			num = 2,
		},
		{
			n = "SoulbindConduitType",
			k = "Enumeration",
			fields = {
				{
					n = "Finesse",
					t = "SoulbindConduitType",
					EnumValue = 0,
				},
				{
					n = "Potency",
					t = "SoulbindConduitType",
					EnumValue = 1,
				},
				{
					n = "Endurance",
					t = "SoulbindConduitType",
					EnumValue = 2,
				},
				{
					n = "Flex",
					t = "SoulbindConduitType",
					EnumValue = 3,
				},
			},
			max = 3,
			min = 0,
			num = 4,
		},
		{
			n = "SoulbindNodeState",
			k = "Enumeration",
			fields = {
				{
					n = "Unavailable",
					t = "SoulbindNodeState",
					EnumValue = 0,
				},
				{
					n = "Unselected",
					t = "SoulbindNodeState",
					EnumValue = 1,
				},
				{
					n = "Selectable",
					t = "SoulbindNodeState",
					EnumValue = 2,
				},
				{
					n = "Selected",
					t = "SoulbindNodeState",
					EnumValue = 3,
				},
			},
			max = 3,
			min = 0,
			num = 4,
		},
	},
}
systems[#systems + 1] = {
	name = "Soulbinds",
	type = "System",
	ns = "C_Soulbinds",
	env = "All",
	file = "SoulbindsDocumentation.lua",
	hash = "d1d7539fb3149ac204771a498e7ce6b9ddccfdf8cbf1c0d19165571007e5832d",
	functions = {
		{
			n = "ActivateSoulbind",
			k = "Function",
			sec = "AllowedWhenUntainted",
			args = {
				{
					n = "soulbindID",
					t = "number",
					nilable = false,
				},
			},
		},
		{
			n = "CanActivateSoulbind",
			k = "Function",
			sec = "AllowedWhenUntainted",
			args = {
				{
					n = "soulbindID",
					t = "number",
					nilable = false,
				},
			},
			rets = {
				{
					n = "result",
					t = "bool",
					nilable = false,
				},
				{
					n = "errorDescription",
					t = "cstring",
					nilable = true,
				},
			},
		},
		{
			n = "CanModifySoulbind",
			k = "Function",
			rets = {
				{
					n = "result",
					t = "bool",
					nilable = false,
				},
			},
		},
		{
			n = "CanResetConduitsInSoulbind",
			k = "Function",
			sec = "AllowedWhenUntainted",
			args = {
				{
					n = "soulbindID",
					t = "number",
					nilable = false,
				},
			},
			rets = {
				{
					n = "result",
					t = "bool",
					nilable = false,
				},
				{
					n = "errorDescription",
					t = "cstring",
					nilable = true,
				},
			},
		},
		{
			n = "CanSwitchActiveSoulbindTreeBranch",
			k = "Function",
			rets = {
				{
					n = "result",
					t = "bool",
					nilable = false,
				},
			},
		},
		{
			n = "CloseUI",
			k = "Function",
		},
		{
			n = "CommitPendingConduitsInSoulbind",
			k = "Function",
			sec = "AllowedWhenUntainted",
			args = {
				{
					n = "soulbindID",
					t = "number",
					nilable = false,
				},
			},
		},
		{
			n = "FindNodeIDActuallyInstalled",
			k = "Function",
			sec = "AllowedWhenUntainted",
			args = {
				{
					n = "soulbindID",
					t = "number",
					nilable = false,
				},
				{
					n = "conduitID",
					t = "number",
					nilable = false,
				},
			},
			rets = {
				{
					n = "nodeID",
					t = "number",
					nilable = false,
				},
			},
		},
		{
			n = "FindNodeIDAppearingInstalled",
			k = "Function",
			sec = "AllowedWhenUntainted",
			args = {
				{
					n = "soulbindID",
					t = "number",
					nilable = false,
				},
				{
					n = "conduitID",
					t = "number",
					nilable = false,
				},
			},
			rets = {
				{
					n = "nodeID",
					t = "number",
					nilable = false,
				},
			},
		},
		{
			n = "FindNodeIDPendingInstall",
			k = "Function",
			sec = "AllowedWhenUntainted",
			args = {
				{
					n = "soulbindID",
					t = "number",
					nilable = false,
				},
				{
					n = "conduitID",
					t = "number",
					nilable = false,
				},
			},
			rets = {
				{
					n = "nodeID",
					t = "number",
					nilable = false,
				},
			},
		},
		{
			n = "FindNodeIDPendingUninstall",
			k = "Function",
			sec = "AllowedWhenUntainted",
			args = {
				{
					n = "soulbindID",
					t = "number",
					nilable = false,
				},
				{
					n = "conduitID",
					t = "number",
					nilable = false,
				},
			},
			rets = {
				{
					n = "nodeID",
					t = "number",
					nilable = false,
				},
			},
		},
		{
			n = "GetActiveSoulbindID",
			k = "Function",
			rets = {
				{
					n = "soulbindID",
					t = "number",
					nilable = false,
				},
			},
		},
		{
			n = "GetConduitCollection",
			k = "Function",
			sec = "AllowedWhenUntainted",
			args = {
				{
					n = "conduitType",
					t = "SoulbindConduitType",
					nilable = false,
				},
			},
			rets = {
				{
					n = "collectionData",
					t = "table",
					nilable = false,
					it = "ConduitCollectionData",
				},
			},
		},
		{
			n = "GetConduitCollectionCount",
			k = "Function",
			rets = {
				{
					n = "count",
					t = "number",
					nilable = false,
				},
			},
		},
		{
			n = "GetConduitCollectionData",
			k = "Function",
			sec = "AllowedWhenUntainted",
			args = {
				{
					n = "conduitID",
					t = "number",
					nilable = false,
				},
			},
			rets = {
				{
					n = "collectionData",
					t = "ConduitCollectionData",
					nilable = true,
				},
			},
		},
		{
			n = "GetConduitCollectionDataAtCursor",
			k = "Function",
			rets = {
				{
					n = "collectionData",
					t = "ConduitCollectionData",
					nilable = true,
				},
			},
		},
		{
			n = "GetConduitCollectionDataByVirtualID",
			k = "Function",
			sec = "AllowedWhenUntainted",
			args = {
				{
					n = "virtualID",
					t = "number",
					nilable = false,
				},
			},
			rets = {
				{
					n = "collectionData",
					t = "ConduitCollectionData",
					nilable = true,
				},
			},
		},
		{
			n = "GetConduitDisplayed",
			k = "Function",
			sec = "AllowedWhenUntainted",
			args = {
				{
					n = "nodeID",
					t = "number",
					nilable = false,
				},
			},
			rets = {
				{
					n = "conduitID",
					t = "number",
					nilable = false,
				},
			},
		},
		{
			n = "GetConduitHyperlink",
			k = "Function",
			sec = "AllowedWhenUntainted",
			args = {
				{
					n = "conduitID",
					t = "number",
					nilable = false,
				},
				{
					n = "rank",
					t = "number",
					nilable = false,
				},
			},
			rets = {
				{
					n = "link",
					t = "cstring",
					nilable = false,
				},
			},
		},
		{
			n = "GetConduitIDPendingInstall",
			k = "Function",
			sec = "AllowedWhenUntainted",
			args = {
				{
					n = "nodeID",
					t = "number",
					nilable = false,
				},
			},
			rets = {
				{
					n = "conduitID",
					t = "number",
					nilable = false,
				},
			},
		},
		{
			n = "GetConduitQuality",
			k = "Function",
			sec = "AllowedWhenUntainted",
			args = {
				{
					n = "conduitID",
					t = "number",
					nilable = false,
				},
				{
					n = "rank",
					t = "number",
					nilable = false,
				},
			},
			rets = {
				{
					n = "quality",
					t = "number",
					nilable = false,
				},
			},
		},
		{
			n = "GetConduitRank",
			k = "Function",
			sec = "AllowedWhenUntainted",
			args = {
				{
					n = "conduitID",
					t = "number",
					nilable = false,
				},
			},
			rets = {
				{
					n = "conduitRank",
					t = "number",
					nilable = false,
				},
			},
		},
		{
			n = "GetConduitSpellID",
			k = "Function",
			sec = "AllowedWhenUntainted",
			args = {
				{
					n = "conduitID",
					t = "number",
					nilable = false,
				},
				{
					n = "conduitRank",
					t = "number",
					nilable = false,
				},
			},
			rets = {
				{
					n = "spellID",
					t = "number",
					nilable = false,
				},
			},
		},
		{
			n = "GetInstalledConduitID",
			k = "Function",
			sec = "AllowedWhenUntainted",
			args = {
				{
					n = "nodeID",
					t = "number",
					nilable = false,
				},
			},
			rets = {
				{
					n = "conduitID",
					t = "number",
					nilable = false,
				},
			},
		},
		{
			n = "GetNode",
			k = "Function",
			sec = "AllowedWhenUntainted",
			args = {
				{
					n = "nodeID",
					t = "number",
					nilable = false,
				},
			},
			rets = {
				{
					n = "node",
					t = "SoulbindNode",
					nilable = false,
				},
			},
		},
		{
			n = "GetSoulbindData",
			k = "Function",
			sec = "AllowedWhenUntainted",
			args = {
				{
					n = "soulbindID",
					t = "number",
					nilable = false,
				},
			},
			rets = {
				{
					n = "data",
					t = "SoulbindData",
					nilable = false,
				},
			},
		},
		{
			n = "GetSpecsAssignedToSoulbind",
			k = "Function",
			sec = "AllowedWhenUntainted",
			args = {
				{
					n = "soulbindID",
					t = "number",
					nilable = false,
				},
			},
			rets = {
				{
					n = "specIDs",
					t = "table",
					nilable = false,
					it = "number",
				},
			},
		},
		{
			n = "GetTree",
			k = "Function",
			sec = "AllowedWhenUntainted",
			args = {
				{
					n = "treeID",
					t = "number",
					nilable = false,
				},
			},
			rets = {
				{
					n = "tree",
					t = "SoulbindTree",
					nilable = false,
				},
			},
		},
		{
			n = "HasAnyInstalledConduitInSoulbind",
			k = "Function",
			sec = "AllowedWhenUntainted",
			args = {
				{
					n = "soulbindID",
					t = "number",
					nilable = false,
				},
			},
			rets = {
				{
					n = "result",
					t = "bool",
					nilable = false,
				},
			},
		},
		{
			n = "HasAnyPendingConduits",
			k = "Function",
			rets = {
				{
					n = "result",
					t = "bool",
					nilable = false,
				},
			},
		},
		{
			n = "HasPendingConduitsInSoulbind",
			k = "Function",
			sec = "AllowedWhenUntainted",
			args = {
				{
					n = "soulbindID",
					t = "number",
					nilable = false,
				},
			},
			rets = {
				{
					n = "result",
					t = "bool",
					nilable = false,
				},
			},
		},
		{
			n = "IsConduitInstalled",
			k = "Function",
			sec = "AllowedWhenUntainted",
			args = {
				{
					n = "nodeID",
					t = "number",
					nilable = false,
				},
			},
			rets = {
				{
					n = "result",
					t = "bool",
					nilable = false,
				},
			},
		},
		{
			n = "IsConduitInstalledInSoulbind",
			k = "Function",
			sec = "AllowedWhenUntainted",
			args = {
				{
					n = "soulbindID",
					t = "number",
					nilable = false,
				},
				{
					n = "conduitID",
					t = "number",
					nilable = false,
				},
			},
			rets = {
				{
					n = "result",
					t = "bool",
					nilable = false,
				},
			},
		},
		{
			n = "IsItemConduitByItemInfo",
			k = "Function",
			sec = "AllowedWhenUntainted",
			args = {
				{
					n = "itemInfo",
					t = "ItemInfo",
					nilable = false,
				},
			},
			rets = {
				{
					n = "result",
					t = "bool",
					nilable = false,
				},
			},
		},
		{
			n = "IsNodePendingModify",
			k = "Function",
			sec = "AllowedWhenUntainted",
			args = {
				{
					n = "nodeID",
					t = "number",
					nilable = false,
				},
			},
			rets = {
				{
					n = "result",
					t = "bool",
					nilable = false,
				},
			},
		},
		{
			n = "IsUnselectedConduitPendingInSoulbind",
			k = "Function",
			sec = "AllowedWhenUntainted",
			args = {
				{
					n = "soulbindID",
					t = "number",
					nilable = false,
				},
			},
			rets = {
				{
					n = "result",
					t = "bool",
					nilable = false,
				},
			},
		},
		{
			n = "ModifyNode",
			k = "Function",
			sec = "AllowedWhenUntainted",
			args = {
				{
					n = "nodeID",
					t = "number",
					nilable = false,
				},
				{
					n = "conduitID",
					t = "number",
					nilable = false,
				},
				{
					n = "type",
					t = "SoulbindConduitTransactionType",
					nilable = false,
				},
			},
		},
		{
			n = "SelectNode",
			k = "Function",
			sec = "AllowedWhenUntainted",
			args = {
				{
					n = "nodeID",
					t = "number",
					nilable = false,
				},
			},
		},
		{
			n = "UnmodifyNode",
			k = "Function",
			sec = "AllowedWhenUntainted",
			args = {
				{
					n = "nodeID",
					t = "number",
					nilable = false,
				},
			},
		},
	},
	events = {
		{
			n = "SoulbindActivated",
			k = "Event",
			payload = {
				{
					n = "soulbindID",
					t = "number",
					nilable = false,
				},
			},
			SynchronousEvent = true,
			literal = "SOULBIND_ACTIVATED",
		},
		{
			n = "SoulbindConduitCollectionCleared",
			k = "Event",
			SynchronousEvent = true,
			literal = "SOULBIND_CONDUIT_COLLECTION_CLEARED",
		},
		{
			n = "SoulbindConduitCollectionRemoved",
			k = "Event",
			payload = {
				{
					n = "conduitID",
					t = "number",
					nilable = false,
				},
			},
			SynchronousEvent = true,
			literal = "SOULBIND_CONDUIT_COLLECTION_REMOVED",
		},
		{
			n = "SoulbindConduitCollectionUpdated",
			k = "Event",
			payload = {
				{
					n = "collectionData",
					t = "ConduitCollectionData",
					nilable = false,
				},
			},
			SynchronousEvent = true,
			literal = "SOULBIND_CONDUIT_COLLECTION_UPDATED",
		},
		{
			n = "SoulbindConduitInstalled",
			k = "Event",
			payload = {
				{
					n = "nodeID",
					t = "number",
					nilable = false,
				},
				{
					n = "data",
					t = "SoulbindConduitData",
					nilable = false,
				},
			},
			SynchronousEvent = true,
			literal = "SOULBIND_CONDUIT_INSTALLED",
		},
		{
			n = "SoulbindConduitUninstalled",
			k = "Event",
			payload = {
				{
					n = "nodeID",
					t = "number",
					nilable = false,
				},
				{
					n = "data",
					t = "SoulbindConduitData",
					nilable = false,
				},
			},
			SynchronousEvent = true,
			literal = "SOULBIND_CONDUIT_UNINSTALLED",
		},
		{
			n = "SoulbindForgeInteractionEnded",
			k = "Event",
			SynchronousEvent = true,
			literal = "SOULBIND_FORGE_INTERACTION_ENDED",
		},
		{
			n = "SoulbindForgeInteractionStarted",
			k = "Event",
			SynchronousEvent = true,
			literal = "SOULBIND_FORGE_INTERACTION_STARTED",
		},
		{
			n = "SoulbindNodeLearned",
			k = "Event",
			payload = {
				{
					n = "nodeID",
					t = "number",
					nilable = false,
				},
			},
			SynchronousEvent = true,
			literal = "SOULBIND_NODE_LEARNED",
		},
		{
			n = "SoulbindNodeUnlearned",
			k = "Event",
			payload = {
				{
					n = "nodeID",
					t = "number",
					nilable = false,
				},
			},
			SynchronousEvent = true,
			literal = "SOULBIND_NODE_UNLEARNED",
		},
		{
			n = "SoulbindNodeUpdated",
			k = "Event",
			payload = {
				{
					n = "nodeID",
					t = "number",
					nilable = false,
				},
			},
			SynchronousEvent = true,
			literal = "SOULBIND_NODE_UPDATED",
		},
		{
			n = "SoulbindPathChanged",
			k = "Event",
			SynchronousEvent = true,
			literal = "SOULBIND_PATH_CHANGED",
		},
		{
			n = "SoulbindPendingConduitChanged",
			k = "Event",
			payload = {
				{
					n = "nodeID",
					t = "number",
					nilable = false,
				},
				{
					n = "conduitID",
					t = "number",
					nilable = false,
				},
			},
			SynchronousEvent = true,
			literal = "SOULBIND_PENDING_CONDUIT_CHANGED",
		},
	},
	tables = {
		{
			n = "ConduitCollectionData",
			k = "Structure",
			fields = {
				{
					n = "conduitID",
					t = "number",
					nilable = false,
				},
				{
					n = "conduitRank",
					t = "number",
					nilable = false,
				},
				{
					n = "conduitItemLevel",
					t = "number",
					nilable = false,
				},
				{
					n = "conduitType",
					t = "SoulbindConduitType",
					nilable = false,
				},
				{
					n = "conduitSpecSetID",
					t = "number",
					nilable = false,
				},
				{
					n = "conduitSpecIDs",
					t = "table",
					nilable = false,
					it = "number",
				},
				{
					n = "conduitSpecName",
					t = "cstring",
					nilable = true,
				},
				{
					n = "covenantID",
					t = "number",
					nilable = true,
				},
				{
					n = "conduitItemID",
					t = "number",
					nilable = false,
				},
			},
		},
		{
			n = "SoulbindConduitData",
			k = "Structure",
			fields = {
				{
					n = "conduitID",
					t = "number",
					nilable = false,
				},
				{
					n = "conduitRank",
					t = "number",
					nilable = false,
				},
			},
		},
		{
			n = "SoulbindData",
			k = "Structure",
			fields = {
				{
					n = "ID",
					t = "number",
					nilable = false,
				},
				{
					n = "covenantID",
					t = "number",
					nilable = false,
				},
				{
					n = "name",
					t = "cstring",
					nilable = false,
				},
				{
					n = "description",
					t = "cstring",
					nilable = false,
				},
				{
					n = "textureKit",
					t = "textureKit",
					nilable = false,
				},
				{
					n = "unlocked",
					t = "bool",
					nilable = false,
				},
				{
					n = "cvarIndex",
					t = "luaIndex",
					nilable = false,
				},
				{
					n = "tree",
					t = "SoulbindTree",
					nilable = false,
				},
				{
					n = "modelSceneData",
					t = "SoulbindModelSceneData",
					nilable = false,
				},
				{
					n = "activationSoundKitID",
					t = "number",
					nilable = false,
				},
				{
					n = "playerConditionReason",
					t = "cstring",
					nilable = true,
				},
			},
		},
		{
			n = "SoulbindModelSceneData",
			k = "Structure",
			fields = {
				{
					n = "creatureDisplayInfoID",
					t = "number",
					nilable = false,
				},
				{
					n = "modelSceneActorID",
					t = "number",
					nilable = false,
				},
			},
		},
		{
			n = "SoulbindNode",
			k = "Structure",
			fields = {
				{
					n = "ID",
					t = "number",
					nilable = false,
				},
				{
					n = "row",
					t = "number",
					nilable = false,
				},
				{
					n = "column",
					t = "number",
					nilable = false,
				},
				{
					n = "icon",
					t = "fileID",
					nilable = false,
				},
				{
					n = "spellID",
					t = "number",
					nilable = false,
				},
				{
					n = "playerConditionReason",
					t = "cstring",
					nilable = true,
				},
				{
					n = "conduitID",
					t = "number",
					nilable = false,
				},
				{
					n = "conduitRank",
					t = "number",
					nilable = false,
				},
				{
					n = "state",
					t = "SoulbindNodeState",
					nilable = false,
				},
				{
					n = "conduitType",
					t = "SoulbindConduitType",
					nilable = true,
				},
				{
					n = "parentNodeIDs",
					t = "table",
					nilable = false,
					it = "number",
				},
				{
					n = "failureRenownRequirement",
					t = "number",
					nilable = true,
				},
				{
					n = "socketEnhanced",
					t = "bool",
					nilable = true,
				},
			},
		},
		{
			n = "SoulbindTree",
			k = "Structure",
			fields = {
				{
					n = "editable",
					t = "bool",
					nilable = false,
				},
				{
					n = "nodes",
					t = "table",
					nilable = false,
					it = "SoulbindNode",
				},
			},
		},
	},
}
systems[#systems + 1] = {
	name = "Sound",
	type = "System",
	ns = "C_Sound",
	env = "All",
	file = "SoundDocumentation.lua",
	hash = "7b232799e18fd0196585aeb5e518c8ac1f9eb4177403c6abe9afc373ff46aeee",
	functions = {
		{
			n = "GetSoundScaledVolume",
			k = "Function",
			sec = "AllowedWhenUntainted",
			args = {
				{
					n = "soundHandle",
					t = "number",
					nilable = false,
				},
			},
			rets = {
				{
					n = "scaledVolume",
					t = "number",
					nilable = false,
				},
			},
		},
		{
			n = "IsPlaying",
			k = "Function",
			sec = "AllowedWhenUntainted",
			args = {
				{
					n = "soundHandle",
					t = "number",
					nilable = false,
				},
			},
			rets = {
				{
					n = "isPlaying",
					t = "bool",
					nilable = false,
				},
			},
		},
		{
			n = "PlayItemSound",
			k = "Function",
			sec = "AllowedWhenUntainted",
			args = {
				{
					n = "soundType",
					t = "ItemSoundType",
					nilable = false,
				},
				{
					n = "itemLocation",
					t = "ItemLocation",
					nilable = false,
					mix = "ItemLocationMixin",
				},
			},
		},
		{
			n = "PlaySound",
			k = "Function",
			sec = "AllowedWhenUntainted",
			args = {
				{
					n = "soundKitID",
					t = "number",
					nilable = false,
				},
				{
					n = "uiSoundSubType",
					t = "UISoundSubType",
					nilable = false,
					def = "g_defaultSI3UISoundSubTypeForLua",
				},
				{
					n = "forceNoDuplicates",
					t = "bool",
					nilable = false,
					def = false,
				},
				{
					n = "runFinishCallback",
					t = "bool",
					nilable = false,
					def = false,
				},
				{
					n = "overridePriority",
					t = "number",
					nilable = true,
				},
			},
			rets = {
				{
					n = "success",
					t = "bool",
					nilable = false,
				},
				{
					n = "soundHandle",
					t = "SoundHandle",
					nilable = false,
				},
			},
			mayReturnNothing = true,
		},
		{
			n = "PlayVocalErrorSound",
			k = "Function",
			sec = "AllowedWhenUntainted",
			args = {
				{
					n = "vocalErrorSoundID",
					t = "Vocalerrorsounds",
					nilable = false,
				},
			},
		},
	},
	events = {
		{
			n = "SoundDeviceUpdate",
			k = "Event",
			SynchronousEvent = true,
			literal = "SOUND_DEVICE_UPDATE",
		},
		{
			n = "SoundkitFinished",
			k = "Event",
			payload = {
				{
					n = "soundHandle",
					t = "number",
					nilable = false,
				},
			},
			SynchronousEvent = true,
			literal = "SOUNDKIT_FINISHED",
		},
	},
	tables = {
		{
			n = "PlaySoundParams",
			k = "Structure",
			fields = {
				{
					n = "soundKitID",
					t = "number",
					nilable = false,
				},
				{
					n = "uiSoundSubType",
					t = "UISoundSubType",
					nilable = false,
					def = "g_defaultSI3UISoundSubTypeForLua",
				},
				{
					n = "forceNoDuplicates",
					t = "bool",
					nilable = false,
					def = false,
				},
				{
					n = "runFinishCallback",
					t = "bool",
					nilable = false,
					def = false,
				},
				{
					n = "overridePriority",
					t = "number",
					nilable = true,
				},
			},
		},
		{
			n = "PlaySoundResult",
			k = "Structure",
			fields = {
				{
					n = "success",
					t = "bool",
					nilable = false,
				},
				{
					n = "soundHandle",
					t = "SoundHandle",
					nilable = false,
				},
			},
		},
	},
}
systems[#systems + 1] = {
	name = "SpecializationInfo",
	type = "System",
	ns = "C_SpecializationInfo",
	env = "All",
	file = "SpecializationInfoDocumentation.lua",
	hash = "631a43f0635c5ca529f36a8a45762186bf17645b5c517fab1f71c5eb01c21ce7",
	functions = {
		{
			n = "CanPlayerUsePVPTalentUI",
			k = "Function",
			rets = {
				{
					n = "canUse",
					t = "bool",
					nilable = false,
				},
				{
					n = "failureReason",
					t = "string",
					nilable = false,
				},
			},
		},
		{
			n = "CanPlayerUseTalentSpecUI",
			k = "Function",
			rets = {
				{
					n = "canUse",
					t = "bool",
					nilable = false,
				},
				{
					n = "failureReason",
					t = "string",
					nilable = false,
				},
			},
		},
		{
			n = "CanPlayerUseTalentUI",
			k = "Function",
			rets = {
				{
					n = "canUse",
					t = "bool",
					nilable = false,
				},
				{
					n = "failureReason",
					t = "string",
					nilable = false,
				},
			},
		},
		{
			n = "GetActiveSpecGroup",
			k = "Function",
			sec = "AllowedWhenUntainted",
			args = {
				{
					n = "isInspect",
					t = "bool",
					nilable = true,
				},
				{
					n = "isPet",
					t = "bool",
					nilable = true,
				},
			},
			rets = {
				{
					n = "groupIndex",
					t = "luaIndex",
					nilable = false,
				},
			},
		},
		{
			n = "GetAllSelectedPvpTalentIDs",
			k = "Function",
			rets = {
				{
					n = "selectedPvpTalentIDs",
					t = "table",
					nilable = false,
					it = "number",
				},
			},
		},
		{
			n = "GetClassIDFromSpecID",
			k = "Function",
			sec = "AllowedWhenUntainted",
			args = {
				{
					n = "specID",
					t = "number",
					nilable = false,
				},
			},
			rets = {
				{
					n = "classID",
					t = "number",
					nilable = true,
				},
			},
		},
		{
			n = "GetInspectSelectedPvpTalent",
			k = "Function",
			sec = "AllowedWhenUntainted",
			args = {
				{
					n = "inspectedUnit",
					t = "UnitToken",
					nilable = false,
				},
				{
					n = "talentIndex",
					t = "number",
					nilable = false,
				},
			},
			rets = {
				{
					n = "selectedTalentID",
					t = "number",
					nilable = true,
				},
			},
		},
		{
			n = "GetNumSpecializationsForClassID",
			k = "Function",
			sec = "AllowedWhenUntainted",
			args = {
				{
					n = "classID",
					t = "number",
					nilable = false,
				},
			},
			rets = {
				{
					n = "specCount",
					t = "number",
					nilable = false,
				},
			},
		},
		{
			n = "GetPvpTalentAlertStatus",
			k = "Function",
			rets = {
				{
					n = "hasUnspentSlot",
					t = "bool",
					nilable = false,
				},
				{
					n = "hasNewTalent",
					t = "bool",
					nilable = false,
				},
			},
		},
		{
			n = "GetPvpTalentInfo",
			k = "Function",
			sec = "AllowedWhenUntainted",
			args = {
				{
					n = "talentID",
					t = "number",
					nilable = false,
				},
			},
			rets = {
				{
					n = "talentInfo",
					t = "PvpTalentInfo",
					nilable = true,
				},
			},
		},
		{
			n = "GetPvpTalentSlotInfo",
			k = "Function",
			sec = "AllowedWhenUntainted",
			args = {
				{
					n = "talentIndex",
					t = "number",
					nilable = false,
				},
			},
			rets = {
				{
					n = "slotInfo",
					t = "PvpTalentSlotInfo",
					nilable = true,
				},
			},
		},
		{
			n = "GetPvpTalentSlotUnlockLevel",
			k = "Function",
			sec = "AllowedWhenUntainted",
			args = {
				{
					n = "talentIndex",
					t = "number",
					nilable = false,
				},
			},
			rets = {
				{
					n = "requiredLevel",
					t = "number",
					nilable = true,
				},
			},
		},
		{
			n = "GetPvpTalentUnlockLevel",
			k = "Function",
			sec = "AllowedWhenUntainted",
			args = {
				{
					n = "talentID",
					t = "number",
					nilable = false,
				},
			},
			rets = {
				{
					n = "requiredLevel",
					t = "number",
					nilable = true,
				},
			},
		},
		{
			n = "GetSpecIDs",
			k = "Function",
			sec = "AllowedWhenUntainted",
			args = {
				{
					n = "specSetID",
					t = "number",
					nilable = false,
				},
			},
			rets = {
				{
					n = "specIDs",
					t = "table",
					nilable = false,
					it = "number",
				},
			},
		},
		{
			n = "GetSpecialization",
			k = "Function",
			sec = "AllowedWhenUntainted",
			args = {
				{
					n = "isInspect",
					t = "bool",
					nilable = true,
				},
				{
					n = "isPet",
					t = "bool",
					nilable = true,
				},
				{
					n = "specGroupIndex",
					t = "luaIndex",
					nilable = true,
				},
			},
			rets = {
				{
					n = "specializationIndex",
					t = "luaIndex",
					nilable = false,
				},
			},
		},
		{
			n = "GetSpecializationInfo",
			k = "Function",
			sec = "AllowedWhenUntainted",
			args = {
				{
					n = "specializationIndex",
					t = "luaIndex",
					nilable = false,
				},
				{
					n = "isInspect",
					t = "bool",
					nilable = false,
					def = false,
				},
				{
					n = "isPet",
					t = "bool",
					nilable = false,
					def = false,
				},
				{
					n = "inspectTarget",
					t = "string",
					nilable = true,
				},
				{
					n = "sex",
					t = "number",
					nilable = true,
				},
				{
					n = "groupIndex",
					t = "luaIndex",
					nilable = true,
				},
				{
					n = "classID",
					t = "number",
					nilable = true,
				},
			},
			rets = {
				{
					n = "specId",
					t = "number",
					nilable = false,
					def = 0,
				},
				{
					n = "name",
					t = "string",
					nilable = true,
				},
				{
					n = "description",
					t = "string",
					nilable = true,
				},
				{
					n = "icon",
					t = "fileID",
					nilable = true,
				},
				{
					n = "role",
					t = "string",
					nilable = true,
				},
				{
					n = "primaryStat",
					t = "luaIndex",
					nilable = true,
				},
				{
					n = "pointsSpent",
					t = "number",
					nilable = false,
					def = 0,
				},
				{
					n = "background",
					t = "string",
					nilable = true,
				},
				{
					n = "previewPointsSpent",
					t = "number",
					nilable = false,
					def = 0,
				},
				{
					n = "isUnlocked",
					t = "bool",
					nilable = false,
					def = true,
				},
			},
		},
		{
			n = "GetSpecializationMasterySpells",
			k = "Function",
			sec = "AllowedWhenUntainted",
			args = {
				{
					n = "specializationIndex",
					t = "luaIndex",
					nilable = false,
				},
				{
					n = "isInspect",
					t = "bool",
					nilable = true,
				},
				{
					n = "isPet",
					t = "bool",
					nilable = true,
				},
			},
			rets = {
				{
					n = "spellIDs",
					t = "table",
					nilable = false,
					it = "number",
				},
			},
		},
		{
			n = "GetSpellsDisplay",
			k = "Function",
			sec = "AllowedWhenUntainted",
			args = {
				{
					n = "specializationID",
					t = "number",
					nilable = false,
				},
			},
			rets = {
				{
					n = "spellID",
					t = "table",
					nilable = false,
					it = "number",
				},
			},
		},
		{
			n = "GetTalentInfo",
			k = "Function",
			sec = "AllowedWhenUntainted",
			args = {
				{
					n = "query",
					t = "TalentInfoQuery",
					nilable = false,
				},
			},
			rets = {
				{
					n = "result",
					t = "TalentInfoResult",
					nilable = true,
				},
			},
		},
		{
			n = "IsInitialized",
			k = "Function",
			rets = {
				{
					n = "isSpecializationDataInitialized",
					t = "bool",
					nilable = false,
				},
			},
		},
		{
			n = "IsPvpTalentLocked",
			k = "Function",
			sec = "AllowedWhenUntainted",
			args = {
				{
					n = "talentID",
					t = "number",
					nilable = false,
				},
			},
			rets = {
				{
					n = "locked",
					t = "bool",
					nilable = false,
				},
			},
		},
		{
			n = "MatchesCurrentSpecSet",
			k = "Function",
			sec = "AllowedWhenUntainted",
			args = {
				{
					n = "specSetID",
					t = "number",
					nilable = false,
				},
			},
			rets = {
				{
					n = "matches",
					t = "bool",
					nilable = false,
				},
			},
		},
		{
			n = "SetPetSpecialization",
			k = "Function",
			sec = "AllowedWhenUntainted",
			args = {
				{
					n = "specIndex",
					t = "luaIndex",
					nilable = false,
				},
				{
					n = "petNumber",
					t = "number",
					nilable = true,
				},
			},
		},
		{
			n = "SetPvpTalentLocked",
			k = "Function",
			sec = "AllowedWhenUntainted",
			args = {
				{
					n = "talentID",
					t = "number",
					nilable = false,
				},
				{
					n = "locked",
					t = "bool",
					nilable = false,
				},
			},
		},
		{
			n = "SetSpecialization",
			k = "Function",
			sec = "AllowedWhenUntainted",
			args = {
				{
					n = "specIndex",
					t = "luaIndex",
					nilable = false,
				},
			},
			rets = {
				{
					n = "success",
					t = "bool",
					nilable = false,
				},
			},
		},
	},
	events = {
		{
			n = "ActiveTalentGroupChanged",
			k = "Event",
			payload = {
				{
					n = "curr",
					t = "number",
					nilable = false,
				},
				{
					n = "prev",
					t = "number",
					nilable = false,
				},
			},
			SynchronousEvent = true,
			literal = "ACTIVE_TALENT_GROUP_CHANGED",
		},
		{
			n = "ConfirmPetUnlearn",
			k = "Event",
			payload = {
				{
					n = "cost",
					t = "number",
					nilable = false,
				},
			},
			SynchronousEvent = true,
			literal = "CONFIRM_PET_UNLEARN",
		},
		{
			n = "ConfirmTalentWipe",
			k = "Event",
			payload = {
				{
					n = "cost",
					t = "number",
					nilable = false,
				},
				{
					n = "respecType",
					t = "number",
					nilable = false,
				},
			},
			SynchronousEvent = true,
			literal = "CONFIRM_TALENT_WIPE",
		},
		{
			n = "PetSpecializationChanged",
			k = "Event",
			SynchronousEvent = true,
			literal = "PET_SPECIALIZATION_CHANGED",
		},
		{
			n = "PlayerLearnPvpTalentFailed",
			k = "Event",
			SynchronousEvent = true,
			literal = "PLAYER_LEARN_PVP_TALENT_FAILED",
		},
		{
			n = "PlayerLearnTalentFailed",
			k = "Event",
			SynchronousEvent = true,
			literal = "PLAYER_LEARN_TALENT_FAILED",
		},
		{
			n = "PlayerPvpTalentUpdate",
			k = "Event",
			SynchronousEvent = true,
			literal = "PLAYER_PVP_TALENT_UPDATE",
		},
		{
			n = "PlayerTalentUpdate",
			k = "Event",
			SynchronousEvent = true,
			literal = "PLAYER_TALENT_UPDATE",
		},
		{
			n = "SpecInvoluntarilyChanged",
			k = "Event",
			payload = {
				{
					n = "isPet",
					t = "bool",
					nilable = false,
				},
			},
			SynchronousEvent = true,
			literal = "SPEC_INVOLUNTARILY_CHANGED",
		},
		{
			n = "TalentsInvoluntarilyReset",
			k = "Event",
			payload = {
				{
					n = "isPetTalents",
					t = "bool",
					nilable = false,
				},
			},
			SynchronousEvent = true,
			literal = "TALENTS_INVOLUNTARILY_RESET",
		},
	},
	tables = {
		{
			n = "PvpTalentInfo",
			k = "Structure",
			fields = {
				{
					n = "talentID",
					t = "number",
					nilable = false,
				},
				{
					n = "name",
					t = "string",
					nilable = false,
				},
				{
					n = "icon",
					t = "number",
					nilable = false,
				},
				{
					n = "selected",
					t = "bool",
					nilable = false,
				},
				{
					n = "available",
					t = "bool",
					nilable = false,
				},
				{
					n = "spellID",
					t = "number",
					nilable = false,
				},
				{
					n = "unlocked",
					t = "bool",
					nilable = false,
				},
				{
					n = "known",
					t = "bool",
					nilable = false,
				},
				{
					n = "grantedByAura",
					t = "bool",
					nilable = false,
				},
				{
					n = "dependenciesUnmet",
					t = "bool",
					nilable = false,
				},
				{
					n = "dependenciesUnmetReason",
					t = "string",
					nilable = true,
				},
			},
		},
		{
			n = "PvpTalentSlotInfo",
			k = "Structure",
			fields = {
				{
					n = "enabled",
					t = "bool",
					nilable = false,
				},
				{
					n = "level",
					t = "number",
					nilable = false,
				},
				{
					n = "selectedTalentID",
					t = "number",
					nilable = true,
				},
				{
					n = "availableTalentIDs",
					t = "table",
					nilable = false,
					it = "number",
				},
			},
		},
		{
			n = "SpecializationInfoOutput",
			k = "Structure",
			fields = {
				{
					n = "specId",
					t = "number",
					nilable = false,
					def = 0,
				},
				{
					n = "name",
					t = "string",
					nilable = true,
				},
				{
					n = "description",
					t = "string",
					nilable = true,
				},
				{
					n = "icon",
					t = "fileID",
					nilable = true,
				},
				{
					n = "role",
					t = "string",
					nilable = true,
				},
				{
					n = "primaryStat",
					t = "luaIndex",
					nilable = true,
				},
				{
					n = "pointsSpent",
					t = "number",
					nilable = false,
					def = 0,
				},
				{
					n = "background",
					t = "string",
					nilable = true,
				},
				{
					n = "previewPointsSpent",
					t = "number",
					nilable = false,
					def = 0,
				},
				{
					n = "isUnlocked",
					t = "bool",
					nilable = false,
					def = true,
				},
			},
		},
		{
			n = "SpecializationInfoQuery",
			k = "Structure",
			fields = {
				{
					n = "specializationIndex",
					t = "luaIndex",
					nilable = false,
				},
				{
					n = "isInspect",
					t = "bool",
					nilable = false,
					def = false,
				},
				{
					n = "isPet",
					t = "bool",
					nilable = false,
					def = false,
				},
				{
					n = "inspectTarget",
					t = "string",
					nilable = true,
				},
				{
					n = "sex",
					t = "number",
					nilable = true,
				},
				{
					n = "groupIndex",
					t = "luaIndex",
					nilable = true,
				},
				{
					n = "classID",
					t = "number",
					nilable = true,
				},
			},
		},
		{
			n = "TalentInfoQuery",
			k = "Structure",
			fields = {
				{
					n = "groupIndex",
					t = "luaIndex",
					nilable = true,
				},
				{
					n = "isInspect",
					t = "bool",
					nilable = false,
					def = false,
				},
				{
					n = "tier",
					t = "luaIndex",
					nilable = true,
				},
				{
					n = "column",
					t = "luaIndex",
					nilable = true,
				},
				{
					n = "target",
					t = "UnitToken",
					nilable = true,
				},
				{
					n = "specializationIndex",
					t = "luaIndex",
					nilable = true,
				},
				{
					n = "talentIndex",
					t = "luaIndex",
					nilable = true,
				},
				{
					n = "isPet",
					t = "bool",
					nilable = false,
					def = false,
				},
			},
		},
		{
			n = "TalentInfoResult",
			k = "Structure",
			fields = {
				{
					n = "talentID",
					t = "number",
					nilable = false,
					def = 0,
				},
				{
					n = "name",
					t = "string",
					nilable = false,
				},
				{
					n = "icon",
					t = "fileID",
					nilable = false,
				},
				{
					n = "tier",
					t = "luaIndex",
					nilable = false,
				},
				{
					n = "column",
					t = "luaIndex",
					nilable = false,
				},
				{
					n = "selected",
					t = "bool",
					nilable = false,
					def = false,
				},
				{
					n = "available",
					t = "bool",
					nilable = false,
					def = false,
				},
				{
					n = "spellID",
					t = "number",
					nilable = false,
					def = 0,
				},
				{
					n = "isPVPTalentUnlocked",
					t = "bool",
					nilable = false,
					def = false,
				},
				{
					n = "known",
					t = "bool",
					nilable = false,
					def = false,
				},
				{
					n = "grantedByAura",
					t = "bool",
					nilable = false,
					def = false,
				},
				{
					n = "rank",
					t = "luaIndex",
					nilable = false,
				},
				{
					n = "maxRank",
					t = "luaIndex",
					nilable = false,
				},
				{
					n = "meetsPrereq",
					t = "bool",
					nilable = false,
					def = false,
				},
				{
					n = "previewRank",
					t = "luaIndex",
					nilable = false,
				},
				{
					n = "meetsPreviewPrereq",
					t = "bool",
					nilable = false,
					def = false,
				},
				{
					n = "isExceptional",
					t = "bool",
					nilable = false,
					def = false,
				},
				{
					n = "hasGoldBorder",
					t = "bool",
					nilable = false,
					def = false,
				},
			},
		},
	},
}
systems[#systems + 1] = {
	name = "SpecializationShared",
	type = "System",
	ns = "",
	env = "All",
	file = "SpecializationSharedDocumentation.lua",
	hash = "4a5e00018a5a2badb8d231b3bc04d06377f61799b817bdb4c9a17204375344de",
	functions = {
		{
			n = "GetSpecializationInfoForClassID",
			k = "Function",
			sec = "AllowedWhenUntainted",
			args = {
				{
					n = "classID",
					t = "number",
					nilable = false,
				},
				{
					n = "index",
					t = "luaIndex",
					nilable = false,
				},
				{
					n = "gender",
					t = "UnitSex",
					nilable = true,
				},
			},
			rets = {
				{
					n = "id",
					t = "number",
					nilable = false,
				},
				{
					n = "name",
					t = "cstring",
					nilable = false,
				},
				{
					n = "description",
					t = "string",
					nilable = false,
				},
				{
					n = "icon",
					t = "fileID",
					nilable = false,
				},
				{
					n = "role",
					t = "cstring",
					nilable = false,
				},
				{
					n = "recommended",
					t = "bool",
					nilable = false,
				},
				{
					n = "allowedForBoost",
					t = "bool",
					nilable = false,
				},
				{
					n = "masterySpell1",
					t = "number",
					nilable = true,
				},
				{
					n = "masterySpell2",
					t = "number",
					nilable = true,
				},
			},
		},
		{
			n = "GetSpecializationInfoForSpecID",
			k = "Function",
			sec = "AllowedWhenUntainted",
			args = {
				{
					n = "specID",
					t = "number",
					nilable = false,
				},
				{
					n = "gender",
					t = "UnitSex",
					nilable = true,
				},
			},
			rets = {
				{
					n = "id",
					t = "number",
					nilable = false,
				},
				{
					n = "name",
					t = "cstring",
					nilable = false,
				},
				{
					n = "description",
					t = "string",
					nilable = false,
				},
				{
					n = "icon",
					t = "fileID",
					nilable = false,
				},
				{
					n = "role",
					t = "cstring",
					nilable = false,
				},
				{
					n = "recommended",
					t = "bool",
					nilable = false,
				},
				{
					n = "allowedForBoost",
					t = "bool",
					nilable = false,
				},
				{
					n = "masterySpell1",
					t = "number",
					nilable = true,
				},
				{
					n = "masterySpell2",
					t = "number",
					nilable = true,
				},
			},
		},
		{
			n = "GetSpecializationNameForSpecID",
			k = "Function",
			sec = "AllowedWhenUntainted",
			args = {
				{
					n = "specID",
					t = "number",
					nilable = false,
				},
				{
					n = "gender",
					t = "UnitSex",
					nilable = true,
				},
			},
			rets = {
				{
					n = "name",
					t = "cstring",
					nilable = true,
				},
			},
		},
		{
			n = "HasLootSpecializations",
			k = "Function",
			rets = {
				{
					n = "hasLootSpecializations",
					t = "bool",
					nilable = false,
				},
			},
		},
	},
	tables = {
		{
			n = "SpecializationSystem",
			k = "Enumeration",
			fields = {
				{
					n = "TalentTab",
					t = "SpecializationSystem",
					EnumValue = 0,
				},
				{
					n = "ChrSpecialization",
					t = "SpecializationSystem",
					EnumValue = 1,
				},
			},
			max = 1,
			min = 0,
			num = 2,
		},
		{
			n = "SpecializationInfoResult",
			k = "Structure",
			fields = {
				{
					n = "id",
					t = "number",
					nilable = false,
				},
				{
					n = "name",
					t = "cstring",
					nilable = false,
				},
				{
					n = "description",
					t = "string",
					nilable = false,
				},
				{
					n = "icon",
					t = "fileID",
					nilable = false,
				},
				{
					n = "role",
					t = "cstring",
					nilable = false,
				},
				{
					n = "recommended",
					t = "bool",
					nilable = false,
				},
				{
					n = "allowedForBoost",
					t = "bool",
					nilable = false,
				},
				{
					n = "masterySpell1",
					t = "number",
					nilable = true,
				},
				{
					n = "masterySpell2",
					t = "number",
					nilable = true,
				},
			},
		},
	},
}
systems[#systems + 1] = {
	name = "SpellActivationOverlay",
	type = "System",
	ns = "C_SpellActivationOverlay",
	env = "All",
	file = "SpellActivationOverlayDocumentation.lua",
	hash = "f25d6d117002924b112dba6d6281771daa7c98fd3ca28a1474aa74ea6701b94e",
	functions = {
		{
			n = "IsSpellOverlayed",
			k = "Function",
			sec = "AllowedWhenUntainted",
			args = {
				{
					n = "spellID",
					t = "number",
					nilable = false,
				},
			},
			rets = {
				{
					n = "isSpellOverlayed",
					t = "bool",
					nilable = false,
				},
			},
		},
	},
	events = {
		{
			n = "SpellActivationOverlayGlowHide",
			k = "Event",
			payload = {
				{
					n = "spellID",
					t = "number",
					nilable = false,
				},
			},
			SynchronousEvent = true,
			literal = "SPELL_ACTIVATION_OVERLAY_GLOW_HIDE",
		},
		{
			n = "SpellActivationOverlayGlowShow",
			k = "Event",
			payload = {
				{
					n = "spellID",
					t = "number",
					nilable = false,
				},
			},
			SynchronousEvent = true,
			literal = "SPELL_ACTIVATION_OVERLAY_GLOW_SHOW",
		},
		{
			n = "SpellActivationOverlayHide",
			k = "Event",
			payload = {
				{
					n = "spellID",
					t = "number",
					nilable = true,
				},
			},
			SynchronousEvent = true,
			literal = "SPELL_ACTIVATION_OVERLAY_HIDE",
		},
		{
			n = "SpellActivationOverlayShow",
			k = "Event",
			payload = {
				{
					n = "spellID",
					t = "number",
					nilable = false,
				},
				{
					n = "overlayFileDataID",
					t = "number",
					nilable = false,
				},
				{
					n = "locationType",
					t = "ScreenLocationType",
					nilable = false,
				},
				{
					n = "scale",
					t = "number",
					nilable = false,
				},
				{
					n = "r",
					t = "number",
					nilable = false,
				},
				{
					n = "g",
					t = "number",
					nilable = false,
				},
				{
					n = "b",
					t = "number",
					nilable = false,
				},
			},
			SynchronousEvent = true,
			literal = "SPELL_ACTIVATION_OVERLAY_SHOW",
		},
	},
}
systems[#systems + 1] = {
	name = "",
	type = "",
	ns = "",
	env = "",
	file = "SpellBookConstantsDocumentation.lua",
	hash = "e0b83b1777246bed1e60058cf53581eccd8ca064c0a8595a4f685dd1a866a29a",
	tables = {
		{
			n = "SpellBookSkillLineIndex",
			k = "Enumeration",
			fields = {
				{
					n = "General",
					t = "SpellBookSkillLineIndex",
					EnumValue = 1,
				},
				{
					n = "Class",
					t = "SpellBookSkillLineIndex",
					EnumValue = 2,
				},
				{
					n = "MainSpec",
					t = "SpellBookSkillLineIndex",
					EnumValue = 3,
				},
				{
					n = "OffSpecStart",
					t = "SpellBookSkillLineIndex",
					EnumValue = 4,
				},
			},
			max = 4,
			min = 1,
			num = 4,
		},
		{
			n = "SpellBookItemType",
			k = "Enumeration",
			fields = {
				{
					n = "None",
					t = "SpellBookItemType",
					EnumValue = 0,
				},
				{
					n = "Spell",
					t = "SpellBookItemType",
					EnumValue = 1,
				},
				{
					n = "FutureSpell",
					t = "SpellBookItemType",
					EnumValue = 2,
				},
				{
					n = "PetAction",
					t = "SpellBookItemType",
					EnumValue = 3,
				},
				{
					n = "Flyout",
					t = "SpellBookItemType",
					EnumValue = 4,
				},
			},
			max = 4,
			min = 0,
			num = 5,
		},
		{
			n = "SpellBookSpellBank",
			k = "Enumeration",
			fields = {
				{
					n = "Player",
					t = "SpellBookSpellBank",
					EnumValue = 0,
				},
				{
					n = "Pet",
					t = "SpellBookSpellBank",
					EnumValue = 1,
				},
			},
			max = 1,
			min = 0,
			num = 2,
		},
	},
}
systems[#systems + 1] = {
	name = "SpellBook",
	type = "System",
	ns = "C_SpellBook",
	env = "All",
	file = "SpellBookDocumentation.lua",
	hash = "c892b0647fc0fa612643024f74d660e7697137fd88304fd5216ba5f058fee033",
	functions = {
		{
			n = "CastSpellBookItem",
			k = "Function",
			sec = "AllowedWhenUntainted",
			args = {
				{
					n = "spellBookItemSlotIndex",
					t = "luaIndex",
					nilable = false,
				},
				{
					n = "spellBookItemSpellBank",
					t = "SpellBookSpellBank",
					nilable = false,
				},
				{
					n = "targetSelf",
					t = "bool",
					nilable = false,
					def = false,
					doc = {
						"If true, spell will target the current player; Otherwise, targets the player's current target",
					},
				},
			},
		},
		{
			n = "ContainsAnyDisenchantSpell",
			k = "Function",
			doc = {
				"Returns true if player knows any Disenchant spells",
			},
			rets = {
				{
					n = "contains",
					t = "bool",
					nilable = false,
				},
			},
		},
		{
			n = "FindBaseSpellByID",
			k = "Function",
			sec = "AllowedWhenUntainted",
			args = {
				{
					n = "spellID",
					t = "number",
					nilable = false,
				},
			},
			rets = {
				{
					n = "baseSpellID",
					t = "number",
					nilable = true,
				},
			},
		},
		{
			n = "FindFlyoutSlotBySpellID",
			k = "Function",
			sec = "AllowedWhenUntainted",
			args = {
				{
					n = "spellID",
					t = "number",
					nilable = false,
				},
			},
			rets = {
				{
					n = "flyoutSlot",
					t = "luaIndex",
					nilable = false,
				},
			},
		},
		{
			n = "FindSpellBookSlotForSpell",
			k = "Function",
			doc = {
				"If found, returns the first slot position of a SpellBookItem matching the specified spell and criteria",
			},
			sec = "AllowedWhenUntainted",
			args = {
				{
					n = "spellIdentifier",
					t = "SpellIdentifier",
					nilable = false,
				},
				{
					n = "includeHidden",
					t = "bool",
					nilable = false,
					def = false,
					doc = {
						"If true, search includes SpellBookItems that are hidden from the SpellBook UI (ex: spells that have been replaced, are also in a Flyout, etc)",
					},
				},
				{
					n = "includeFlyouts",
					t = "bool",
					nilable = false,
					def = true,
					doc = {
						"If true, search includes Flyout SpellBookItems containing the specified spell",
					},
				},
				{
					n = "includeFutureSpells",
					t = "bool",
					nilable = false,
					def = false,
					doc = {
						"If true, search includes SpellBookItems for spells that have not yet been learned",
					},
				},
				{
					n = "includeOffSpec",
					t = "bool",
					nilable = false,
					def = false,
					doc = {
						"If true, search includes SpellBookItems belonging to non-active specializations; If spell is in active and inactive spec, the active spec slot will always be returned",
					},
				},
			},
			rets = {
				{
					n = "spellBookItemSlotIndex",
					t = "luaIndex",
					nilable = false,
				},
				{
					n = "spellBookItemSpellBank",
					t = "SpellBookSpellBank",
					nilable = false,
				},
			},
			mayReturnNothing = true,
		},
		{
			n = "FindSpellOverrideByID",
			k = "Function",
			sec = "AllowedWhenUntainted",
			args = {
				{
					n = "spellID",
					t = "number",
					nilable = false,
				},
			},
			rets = {
				{
					n = "overrideSpellID",
					t = "number",
					nilable = true,
				},
			},
		},
		{
			n = "GetCurrentLevelSpells",
			k = "Function",
			doc = {
				"Returns general, class, and active spec spells that are learned at the specified level",
			},
			sec = "AllowedWhenUntainted",
			args = {
				{
					n = "level",
					t = "number",
					nilable = false,
				},
			},
			rets = {
				{
					n = "spellIDs",
					t = "table",
					nilable = false,
					it = "number",
				},
			},
			mayReturnNothing = true,
		},
		{
			n = "GetNumSpellBookSkillLines",
			k = "Function",
			rets = {
				{
					n = "numSpellBookSkillLines",
					t = "number",
					nilable = false,
				},
			},
		},
		{
			n = "GetSkillLineIndexByID",
			k = "Function",
			sec = "AllowedWhenUntainted",
			args = {
				{
					n = "skillLineID",
					t = "number",
					nilable = false,
				},
			},
			rets = {
				{
					n = "skillIndex",
					t = "luaIndex",
					nilable = true,
					doc = {
						"Will be nil if the specified SkillLine could not be found, or if it is not one of the player's tracked skill lines",
					},
				},
			},
		},
		{
			n = "GetSpellBookItemAutoCast",
			k = "Function",
			doc = {
				"Returns nothing if item doesn't exist or isn't a spell",
			},
			sec = "AllowedWhenUntainted",
			args = {
				{
					n = "spellBookItemSlotIndex",
					t = "luaIndex",
					nilable = false,
				},
				{
					n = "spellBookItemSpellBank",
					t = "SpellBookSpellBank",
					nilable = false,
				},
			},
			rets = {
				{
					n = "autoCastAllowed",
					t = "bool",
					nilable = false,
					doc = {
						"True if this spell is allowed to be auto-cast",
					},
				},
				{
					n = "autoCastEnabled",
					t = "bool",
					nilable = false,
					doc = {
						"True if auto-casting this spell is currently enabled (usually by the player)",
					},
				},
			},
			mayReturnNothing = true,
		},
		{
			n = "GetSpellBookItemCastCount",
			k = "Function",
			doc = {
				"Returns number of times a SpellBookItem can be cast, typically based on availability of things like required reagent items; Always returns 0 if item is not found or is not a spell",
			},
			sec = "AllowedWhenUntainted",
			args = {
				{
					n = "spellBookItemSlotIndex",
					t = "luaIndex",
					nilable = false,
				},
				{
					n = "spellBookItemSpellBank",
					t = "SpellBookSpellBank",
					nilable = false,
				},
			},
			rets = {
				{
					n = "castCount",
					t = "number",
					nilable = false,
				},
			},
			SecretWhenCooldownsRestricted = true,
		},
		{
			n = "GetSpellBookItemChargeDuration",
			k = "Function",
			doc = {
				"Returns a duration object describing the active recharge time for a spellbook item.",
			},
			sec = "AllowedWhenUntainted",
			args = {
				{
					n = "spellBookItemSlotIndex",
					t = "luaIndex",
					nilable = false,
				},
				{
					n = "spellBookItemSpellBank",
					t = "SpellBookSpellBank",
					nilable = false,
				},
			},
			rets = {
				{
					n = "duration",
					t = "LuaDurationObject",
					nilable = false,
				},
			},
			mayReturnNothing = true,
		},
		{
			n = "GetSpellBookItemCharges",
			k = "Function",
			doc = {
				"Returns a table of info about the charges of a charge-accumulating SpellBookItem; May return nil if item is not found or is not charge-based",
			},
			sec = "AllowedWhenUntainted",
			args = {
				{
					n = "spellBookItemSlotIndex",
					t = "luaIndex",
					nilable = false,
				},
				{
					n = "spellBookItemSpellBank",
					t = "SpellBookSpellBank",
					nilable = false,
				},
			},
			rets = {
				{
					n = "chargeInfo",
					t = "SpellChargeInfo",
					nilable = false,
				},
			},
			SecretWhenCooldownsRestricted = true,
			mayReturnNothing = true,
		},
		{
			n = "GetSpellBookItemCooldown",
			k = "Function",
			doc = {
				"Returns nil if item doesn't exist or if this kind of item doesn't display cooldowns (ex: future or offspec spells)",
			},
			sec = "AllowedWhenUntainted",
			args = {
				{
					n = "spellBookItemSlotIndex",
					t = "luaIndex",
					nilable = false,
				},
				{
					n = "spellBookItemSpellBank",
					t = "SpellBookSpellBank",
					nilable = false,
				},
			},
			rets = {
				{
					n = "spellCooldownInfo",
					t = "SpellCooldownInfo",
					nilable = false,
				},
			},
			SecretWhenCooldownsRestricted = true,
			mayReturnNothing = true,
		},
		{
			n = "GetSpellBookItemCooldownDuration",
			k = "Function",
			doc = {
				"Returns a duration object describing the active cooldown duration for a spellbook item.",
			},
			sec = "AllowedWhenUntainted",
			args = {
				{
					n = "spellBookItemSlotIndex",
					t = "luaIndex",
					nilable = false,
				},
				{
					n = "spellBookItemSpellBank",
					t = "SpellBookSpellBank",
					nilable = false,
				},
				{
					n = "ignoreGCD",
					t = "bool",
					nilable = false,
					def = false,
				},
			},
			rets = {
				{
					n = "duration",
					t = "LuaDurationObject",
					nilable = false,
				},
			},
			mayReturnNothing = true,
		},
		{
			n = "GetSpellBookItemDescription",
			k = "Function",
			sec = "AllowedWhenUntainted",
			args = {
				{
					n = "spellBookItemSlotIndex",
					t = "luaIndex",
					nilable = false,
				},
				{
					n = "spellBookItemSpellBank",
					t = "SpellBookSpellBank",
					nilable = false,
				},
			},
			rets = {
				{
					n = "description",
					t = "string",
					nilable = false,
					doc = {
						"May be empty if spell's data isn't loaded yet; Listen for SPELL_TEXT_UPDATE event, or use SpellMixin to load asynchronously",
					},
				},
			},
			mayReturnNothing = true,
		},
		{
			n = "GetSpellBookItemInfo",
			k = "Function",
			sec = "AllowedWhenUntainted",
			args = {
				{
					n = "spellBookItemSlotIndex",
					t = "luaIndex",
					nilable = false,
				},
				{
					n = "spellBookItemSpellBank",
					t = "SpellBookSpellBank",
					nilable = false,
				},
			},
			rets = {
				{
					n = "spellBookItemInfo",
					t = "SpellBookItemInfo",
					nilable = false,
				},
			},
			mayReturnNothing = true,
		},
		{
			n = "GetSpellBookItemLevelLearned",
			k = "Function",
			doc = {
				"Returns the level the spell is learned at; May return a different value if the player is currently Level Linked with another player; Returns 0 if item is not a Spell",
			},
			sec = "AllowedWhenUntainted",
			args = {
				{
					n = "spellBookItemSlotIndex",
					t = "luaIndex",
					nilable = false,
				},
				{
					n = "spellBookItemSpellBank",
					t = "SpellBookSpellBank",
					nilable = false,
				},
			},
			rets = {
				{
					n = "levelLearned",
					t = "number",
					nilable = false,
				},
			},
		},
		{
			n = "GetSpellBookItemLink",
			k = "Function",
			sec = "AllowedWhenUntainted",
			args = {
				{
					n = "spellBookItemSlotIndex",
					t = "luaIndex",
					nilable = false,
				},
				{
					n = "spellBookItemSpellBank",
					t = "SpellBookSpellBank",
					nilable = false,
				},
				{
					n = "glyphID",
					t = "number",
					nilable = true,
				},
			},
			rets = {
				{
					n = "spellLink",
					t = "string",
					nilable = false,
				},
			},
			mayReturnNothing = true,
		},
		{
			n = "GetSpellBookItemLossOfControlCooldownDuration",
			k = "Function",
			doc = {
				"Returns a duration object describing the active loss of control cooldown duration for a spellbook item.",
			},
			sec = "AllowedWhenUntainted",
			args = {
				{
					n = "spellBookItemSlotIndex",
					t = "luaIndex",
					nilable = false,
				},
				{
					n = "spellBookItemSpellBank",
					t = "SpellBookSpellBank",
					nilable = false,
				},
			},
			rets = {
				{
					n = "duration",
					t = "LuaDurationObject",
					nilable = false,
				},
			},
			mayReturnNothing = true,
		},
		{
			n = "GetSpellBookItemLossOfControlCooldownInfo",
			k = "Function",
			doc = {
				"Returns nil if item doesn't exist or if this kind of item doesn't display cooldowns (ex: future or offspec spells)",
			},
			sec = "AllowedWhenUntainted",
			args = {
				{
					n = "spellBookItemSlotIndex",
					t = "luaIndex",
					nilable = false,
				},
				{
					n = "spellBookItemSpellBank",
					t = "SpellBookSpellBank",
					nilable = false,
				},
			},
			rets = {
				{
					n = "lossOfControlInfo",
					t = "SpellLossOfControlInfo",
					nilable = false,
				},
			},
			SecretWhenCooldownsRestricted = true,
			mayReturnNothing = true,
		},
		{
			n = "GetSpellBookItemName",
			k = "Function",
			sec = "AllowedWhenUntainted",
			args = {
				{
					n = "spellBookItemSlotIndex",
					t = "luaIndex",
					nilable = false,
				},
				{
					n = "spellBookItemSpellBank",
					t = "SpellBookSpellBank",
					nilable = false,
				},
			},
			rets = {
				{
					n = "name",
					t = "string",
					nilable = false,
				},
				{
					n = "subName",
					t = "string",
					nilable = false,
					doc = {
						"May be empty if spell's data isn't loaded yet; Listen for SPELL_TEXT_UPDATE event, or use SpellMixin to load asynchronously",
					},
				},
			},
			mayReturnNothing = true,
		},
		{
			n = "GetSpellBookItemPowerCost",
			k = "Function",
			doc = {
				"Returns a table containing one or more SpellPowerCostInfos, one for each power type a SpellBookItem costs; May return nil if item is not found or has no resource costs",
			},
			sec = "AllowedWhenUntainted",
			args = {
				{
					n = "spellBookItemSlotIndex",
					t = "luaIndex",
					nilable = false,
				},
				{
					n = "spellBookItemSpellBank",
					t = "SpellBookSpellBank",
					nilable = false,
				},
			},
			rets = {
				{
					n = "powerCosts",
					t = "table",
					nilable = false,
					it = "SpellPowerCostInfo",
				},
			},
			mayReturnNothing = true,
		},
		{
			n = "GetSpellBookItemSkillLineIndex",
			k = "Function",
			doc = {
				"Get the index of the SkillLine this SpellBookItem is part of",
			},
			sec = "AllowedWhenUntainted",
			args = {
				{
					n = "spellBookItemSlotIndex",
					t = "luaIndex",
					nilable = false,
				},
				{
					n = "spellBookItemSpellBank",
					t = "SpellBookSpellBank",
					nilable = false,
				},
			},
			rets = {
				{
					n = "skillLineIndex",
					t = "luaIndex",
					nilable = true,
					doc = {
						"Will be nil if the specified SpellBookItem doesn't exist or isn't part of a SkillLine",
					},
				},
			},
		},
		{
			n = "GetSpellBookItemTexture",
			k = "Function",
			sec = "AllowedWhenUntainted",
			args = {
				{
					n = "spellBookItemSlotIndex",
					t = "luaIndex",
					nilable = false,
				},
				{
					n = "spellBookItemSpellBank",
					t = "SpellBookSpellBank",
					nilable = false,
				},
			},
			rets = {
				{
					n = "iconID",
					t = "fileID",
					nilable = false,
				},
			},
			mayReturnNothing = true,
		},
		{
			n = "GetSpellBookItemTradeSkillLink",
			k = "Function",
			doc = {
				"Returns nil if SpellBookItem is not associated with a trade skill",
			},
			sec = "AllowedWhenUntainted",
			args = {
				{
					n = "spellBookItemSlotIndex",
					t = "luaIndex",
					nilable = false,
				},
				{
					n = "spellBookItemSpellBank",
					t = "SpellBookSpellBank",
					nilable = false,
				},
			},
			rets = {
				{
					n = "spellLink",
					t = "string",
					nilable = false,
				},
			},
			mayReturnNothing = true,
		},
		{
			n = "GetSpellBookItemType",
			k = "Function",
			sec = "AllowedWhenUntainted",
			args = {
				{
					n = "spellBookItemSlotIndex",
					t = "luaIndex",
					nilable = false,
				},
				{
					n = "spellBookItemSpellBank",
					t = "SpellBookSpellBank",
					nilable = false,
				},
			},
			rets = {
				{
					n = "itemType",
					t = "SpellBookItemType",
					nilable = false,
				},
				{
					n = "actionID",
					t = "number",
					nilable = false,
					doc = {
						"Represents a base spellID for spells, flyoutID for flyouts, or petActionID for pet actions",
					},
				},
				{
					n = "spellID",
					t = "number",
					nilable = true,
					doc = {
						"May be nil if item is not a spell; Will be the overriding spellID if spell is overriden, otherwise will match actionID",
					},
				},
			},
			mayReturnNothing = true,
		},
		{
			n = "GetSpellBookSkillLineInfo",
			k = "Function",
			sec = "AllowedWhenUntainted",
			args = {
				{
					n = "skillLineIndex",
					t = "luaIndex",
					nilable = false,
				},
			},
			rets = {
				{
					n = "skillLineInfo",
					t = "SpellBookSkillLineInfo",
					nilable = false,
				},
			},
			mayReturnNothing = true,
		},
		{
			n = "HasPetSpells",
			k = "Function",
			doc = {
				"Returns nothing if player has no pet spells",
			},
			rets = {
				{
					n = "numPetSpells",
					t = "number",
					nilable = false,
				},
				{
					n = "petNameToken",
					t = "string",
					nilable = false,
				},
			},
			mayReturnNothing = true,
		},
		{
			n = "IsAutoAttackSpellBookItem",
			k = "Function",
			doc = {
				"Returns true if the SpellBookItem is the player's melee Auto Attack spell",
			},
			sec = "AllowedWhenUntainted",
			args = {
				{
					n = "spellBookItemSlotIndex",
					t = "luaIndex",
					nilable = false,
				},
				{
					n = "spellBookItemSpellBank",
					t = "SpellBookSpellBank",
					nilable = false,
				},
			},
			rets = {
				{
					n = "isAutoAttack",
					t = "bool",
					nilable = false,
				},
			},
		},
		{
			n = "IsClassTalentSpellBookItem",
			k = "Function",
			doc = {
				"Returns true if the SpellBookItem comes from a Class Talent",
			},
			sec = "AllowedWhenUntainted",
			args = {
				{
					n = "spellBookItemSlotIndex",
					t = "luaIndex",
					nilable = false,
				},
				{
					n = "spellBookItemSpellBank",
					t = "SpellBookSpellBank",
					nilable = false,
				},
			},
			rets = {
				{
					n = "isClassTalent",
					t = "bool",
					nilable = false,
				},
			},
		},
		{
			n = "IsPvPTalentSpellBookItem",
			k = "Function",
			doc = {
				"Returns true if the SpellBookItem comes from a PvP Talent",
			},
			sec = "AllowedWhenUntainted",
			args = {
				{
					n = "spellBookItemSlotIndex",
					t = "luaIndex",
					nilable = false,
				},
				{
					n = "spellBookItemSpellBank",
					t = "SpellBookSpellBank",
					nilable = false,
				},
			},
			rets = {
				{
					n = "isPvPTalent",
					t = "bool",
					nilable = false,
				},
			},
		},
		{
			n = "IsRangedAutoAttackSpellBookItem",
			k = "Function",
			doc = {
				"Returns true if the SpellBookItem is the player's ranged Auto Attack spell (ex: Shoot, Auto Shot, etc)",
			},
			sec = "AllowedWhenUntainted",
			args = {
				{
					n = "spellBookItemSlotIndex",
					t = "luaIndex",
					nilable = false,
				},
				{
					n = "spellBookItemSpellBank",
					t = "SpellBookSpellBank",
					nilable = false,
				},
			},
			rets = {
				{
					n = "isRangedAutoAttack",
					t = "bool",
					nilable = false,
				},
			},
		},
		{
			n = "IsSpellBookItemHarmful",
			k = "Function",
			doc = {
				"Returns true if the SpellBookIem can be cast on hostile targets",
			},
			sec = "AllowedWhenUntainted",
			args = {
				{
					n = "spellBookItemSlotIndex",
					t = "luaIndex",
					nilable = false,
				},
				{
					n = "spellBookItemSpellBank",
					t = "SpellBookSpellBank",
					nilable = false,
				},
			},
			rets = {
				{
					n = "isHarmful",
					t = "bool",
					nilable = false,
				},
			},
		},
		{
			n = "IsSpellBookItemHelpful",
			k = "Function",
			doc = {
				"Returns true if the SpellBookIem can be cast on the player or other friendly targets",
			},
			sec = "AllowedWhenUntainted",
			args = {
				{
					n = "spellBookItemSlotIndex",
					t = "luaIndex",
					nilable = false,
				},
				{
					n = "spellBookItemSpellBank",
					t = "SpellBookSpellBank",
					nilable = false,
				},
			},
			rets = {
				{
					n = "isHelpful",
					t = "bool",
					nilable = false,
				},
			},
		},
		{
			n = "IsSpellBookItemInRange",
			k = "Function",
			doc = {
				"Returns true if the current target is within range of the SpellBookIem; False if out of range; Nil if range check was invalid",
			},
			sec = "AllowedWhenUntainted",
			args = {
				{
					n = "spellBookItemSlotIndex",
					t = "luaIndex",
					nilable = false,
				},
				{
					n = "spellBookItemSpellBank",
					t = "SpellBookSpellBank",
					nilable = false,
				},
				{
					n = "targetUnit",
					t = "UnitToken",
					nilable = true,
					doc = {
						"Optional specific target; If not supplied, player's current target (if any) will be used",
					},
				},
			},
			rets = {
				{
					n = "inRange",
					t = "bool",
					nilable = true,
					doc = {
						"May be nil if the range check was invalid, ie due to unknown/invalid spell, missing/invalid target, etc",
					},
				},
			},
		},
		{
			n = "IsSpellBookItemOffSpec",
			k = "Function",
			doc = {
				"Returns true if the SpellBookItem belongs to a non-active class specialization",
			},
			sec = "AllowedWhenUntainted",
			args = {
				{
					n = "spellBookItemSlotIndex",
					t = "luaIndex",
					nilable = false,
				},
				{
					n = "spellBookItemSpellBank",
					t = "SpellBookSpellBank",
					nilable = false,
				},
			},
			rets = {
				{
					n = "isOffSpec",
					t = "bool",
					nilable = false,
				},
			},
		},
		{
			n = "IsSpellBookItemPassive",
			k = "Function",
			doc = {
				"Returns true if the SpellBookItem is a passive spell; Will always return false if it is not a spell",
			},
			sec = "AllowedWhenUntainted",
			args = {
				{
					n = "spellBookItemSlotIndex",
					t = "luaIndex",
					nilable = false,
				},
				{
					n = "spellBookItemSpellBank",
					t = "SpellBookSpellBank",
					nilable = false,
				},
			},
			rets = {
				{
					n = "isPassive",
					t = "bool",
					nilable = false,
				},
			},
		},
		{
			n = "IsSpellBookItemUsable",
			k = "Function",
			doc = {
				"Returns whether the SpellBookIem is currently castable; Typically based on things like learned status, required resources, etc",
			},
			sec = "AllowedWhenUntainted",
			args = {
				{
					n = "spellBookItemSlotIndex",
					t = "luaIndex",
					nilable = false,
				},
				{
					n = "spellBookItemSpellBank",
					t = "SpellBookSpellBank",
					nilable = false,
				},
			},
			rets = {
				{
					n = "isUsable",
					t = "bool",
					nilable = false,
				},
				{
					n = "insufficientPower",
					t = "bool",
					nilable = false,
					doc = {
						"True if SpellBookIem is specifically unusable due to insufficient power (ie MANA, RAGE, etc)",
					},
				},
			},
		},
		{
			n = "IsSpellInSpellBook",
			k = "Function",
			doc = {
				"Returns true if a spell should be found in the spellbook. This function can also return true for spells that aren't known, such as override spells granted by an aura linked to class talents",
			},
			sec = "AllowedWhenUntainted",
			args = {
				{
					n = "spellID",
					t = "number",
					nilable = false,
				},
				{
					n = "spellBank",
					t = "SpellBookSpellBank",
					nilable = false,
					def = "Player",
				},
				{
					n = "includeOverrides",
					t = "bool",
					nilable = false,
					def = true,
				},
			},
			rets = {
				{
					n = "isInSpellBook",
					t = "bool",
					nilable = false,
				},
			},
		},
		{
			n = "IsSpellKnown",
			k = "Function",
			doc = {
				"Returns true if a player knows a spell. This function can also return true for spells that aren't in the spellbook, such as temporarily-granted abilities",
			},
			sec = "AllowedWhenUntainted",
			args = {
				{
					n = "spellID",
					t = "number",
					nilable = false,
				},
				{
					n = "spellBank",
					t = "SpellBookSpellBank",
					nilable = false,
					def = "Player",
				},
			},
			rets = {
				{
					n = "isKnown",
					t = "bool",
					nilable = false,
				},
			},
		},
		{
			n = "IsSpellKnownOrInSpellBook",
			k = "Function",
			doc = {
				"Returns true if a spell is considered to be known or present in the spellbook",
			},
			sec = "AllowedWhenUntainted",
			args = {
				{
					n = "spellID",
					t = "number",
					nilable = false,
				},
				{
					n = "spellBank",
					t = "SpellBookSpellBank",
					nilable = false,
					def = "Player",
				},
				{
					n = "includeOverrides",
					t = "bool",
					nilable = false,
					def = true,
				},
			},
			rets = {
				{
					n = "isKnownOrInSpellBook",
					t = "bool",
					nilable = false,
				},
			},
		},
		{
			n = "PickupSpellBookItem",
			k = "Function",
			sec = "AllowedWhenUntainted",
			args = {
				{
					n = "spellBookItemSlotIndex",
					t = "luaIndex",
					nilable = false,
				},
				{
					n = "spellBookItemSpellBank",
					t = "SpellBookSpellBank",
					nilable = false,
				},
			},
		},
		{
			n = "SetSpellBookItemAutoCastEnabled",
			k = "Function",
			sec = "AllowedWhenUntainted",
			args = {
				{
					n = "spellBookItemSlotIndex",
					t = "luaIndex",
					nilable = false,
				},
				{
					n = "spellBookItemSpellBank",
					t = "SpellBookSpellBank",
					nilable = false,
				},
				{
					n = "enabled",
					t = "bool",
					nilable = false,
				},
			},
		},
		{
			n = "SpellBookItemHasRange",
			k = "Function",
			doc = {
				"Returns true if the SpellBookIem has a min and/or max range greater than 0; Will always return false if it is not a spell",
			},
			sec = "AllowedWhenUntainted",
			args = {
				{
					n = "spellBookItemSlotIndex",
					t = "luaIndex",
					nilable = false,
				},
				{
					n = "spellBookItemSpellBank",
					t = "SpellBookSpellBank",
					nilable = false,
				},
			},
			rets = {
				{
					n = "hasRange",
					t = "bool",
					nilable = false,
				},
			},
		},
		{
			n = "ToggleSpellBookItemAutoCast",
			k = "Function",
			sec = "AllowedWhenUntainted",
			args = {
				{
					n = "spellBookItemSlotIndex",
					t = "luaIndex",
					nilable = false,
				},
				{
					n = "spellBookItemSpellBank",
					t = "SpellBookSpellBank",
					nilable = false,
				},
			},
		},
	},
	events = {
		{
			n = "CurrentSpellCastChanged",
			k = "Event",
			payload = {
				{
					n = "cancelledCast",
					t = "bool",
					nilable = false,
				},
			},
			SynchronousEvent = true,
			literal = "CURRENT_SPELL_CAST_CHANGED",
		},
		{
			n = "LearnedSpellInSkillLine",
			k = "Event",
			payload = {
				{
					n = "spellID",
					t = "number",
					nilable = false,
				},
				{
					n = "skillLineIndex",
					t = "luaIndex",
					nilable = false,
				},
				{
					n = "isGuildPerkSpell",
					t = "bool",
					nilable = false,
				},
			},
			SynchronousEvent = true,
			literal = "LEARNED_SPELL_IN_SKILL_LINE",
		},
		{
			n = "MaxSpellStartRecoveryOffsetChanged",
			k = "Event",
			payload = {
				{
					n = "clampedNewQueueWindowMs",
					t = "number",
					nilable = false,
				},
			},
			SynchronousEvent = true,
			literal = "MAX_SPELL_START_RECOVERY_OFFSET_CHANGED",
		},
		{
			n = "PlayerTotemUpdate",
			k = "Event",
			payload = {
				{
					n = "totemSlot",
					t = "luaIndex",
					nilable = false,
				},
			},
			SynchronousEvent = true,
			literal = "PLAYER_TOTEM_UPDATE",
		},
		{
			n = "SpellFlyoutUpdate",
			k = "Event",
			payload = {
				{
					n = "flyoutID",
					t = "number",
					nilable = true,
				},
				{
					n = "spellID",
					t = "number",
					nilable = true,
				},
				{
					n = "isLearned",
					t = "bool",
					nilable = true,
				},
			},
			SynchronousEvent = true,
			literal = "SPELL_FLYOUT_UPDATE",
			unique = true,
		},
		{
			n = "SpellPushedToActionbar",
			k = "Event",
			payload = {
				{
					n = "spellID",
					t = "number",
					nilable = false,
				},
				{
					n = "slot",
					t = "number",
					nilable = false,
				},
				{
					n = "page",
					t = "number",
					nilable = false,
				},
			},
			SynchronousEvent = true,
			literal = "SPELL_PUSHED_TO_ACTIONBAR",
		},
		{
			n = "SpellPushedToFlyoutOnActionbar",
			k = "Event",
			payload = {
				{
					n = "spellID",
					t = "number",
					nilable = false,
				},
				{
					n = "flyoutSlot",
					t = "luaIndex",
					nilable = false,
				},
				{
					n = "flyoutPage",
					t = "luaIndex",
					nilable = false,
				},
			},
			SynchronousEvent = true,
			literal = "SPELL_PUSHED_TO_FLYOUT_ON_ACTIONBAR",
		},
		{
			n = "SpellUpdateCharges",
			k = "Event",
			SynchronousEvent = true,
			literal = "SPELL_UPDATE_CHARGES",
			unique = true,
		},
		{
			n = "SpellUpdateCooldown",
			k = "Event",
			payload = {
				{
					n = "spellID",
					t = "number",
					nilable = true,
					doc = {
						"Can be a base spell or an override spell. A nil value indicates that all cooldowns should be updated, rather than just a specific one.",
					},
				},
				{
					n = "baseSpellID",
					t = "number",
					nilable = true,
					doc = {
						"Will be set to the base spell if the spellID parameter is an override spell.",
					},
				},
				{
					n = "category",
					t = "number",
					nilable = true,
					doc = {
						"If the spellID parameter is set, the cooldown category of the spell. A nil value indicates the spell does not have a cooldown category.",
					},
				},
				{
					n = "startRecoveryCategory",
					t = "number",
					nilable = true,
					doc = {
						"If the spellID parameter is set, the cooldown start recovery category of the spell. A nil value indicates the spell does not have a cooldown start recovery category.",
					},
				},
			},
			literal = "SPELL_UPDATE_COOLDOWN",
			unique = true,
		},
		{
			n = "SpellUpdateIcon",
			k = "Event",
			payload = {
				{
					n = "spellID",
					t = "number",
					nilable = true,
					doc = {
						"Always refers to the base spell. A nil value indicates that all icons should be updated, rather than just a specific one.",
					},
				},
			},
			literal = "SPELL_UPDATE_ICON",
			unique = true,
		},
		{
			n = "SpellUpdateUsable",
			k = "Event",
			literal = "SPELL_UPDATE_USABLE",
			unique = true,
		},
		{
			n = "SpellUpdateUses",
			k = "Event",
			payload = {
				{
					n = "spellID",
					t = "number",
					nilable = false,
					doc = {
						"Can be a base spell or override spell.",
					},
				},
				{
					n = "baseSpellID",
					t = "number",
					nilable = true,
					doc = {
						"Will be set to the base spell if the spellID parameter is an override spell.",
					},
				},
			},
			literal = "SPELL_UPDATE_USES",
			unique = true,
		},
		{
			n = "SpellsChanged",
			k = "Event",
			literal = "SPELLS_CHANGED",
			unique = true,
		},
		{
			n = "StartAutorepeatSpell",
			k = "Event",
			SynchronousEvent = true,
			literal = "START_AUTOREPEAT_SPELL",
		},
		{
			n = "StopAutorepeatSpell",
			k = "Event",
			SynchronousEvent = true,
			literal = "STOP_AUTOREPEAT_SPELL",
		},
		{
			n = "UpdateShapeshiftCooldown",
			k = "Event",
			literal = "UPDATE_SHAPESHIFT_COOLDOWN",
			unique = true,
		},
		{
			n = "UpdateShapeshiftForm",
			k = "Event",
			SynchronousEvent = true,
			literal = "UPDATE_SHAPESHIFT_FORM",
		},
		{
			n = "UpdateShapeshiftForms",
			k = "Event",
			literal = "UPDATE_SHAPESHIFT_FORMS",
			unique = true,
		},
		{
			n = "UpdateShapeshiftUsable",
			k = "Event",
			literal = "UPDATE_SHAPESHIFT_USABLE",
			unique = true,
		},
	},
	tables = {
		{
			n = "SpellBookItemInfo",
			k = "Structure",
			fields = {
				{
					n = "actionID",
					t = "number",
					nilable = false,
					doc = {
						"Represents a base spellID for spells, flyoutID for flyouts, or petActionID for pet actions",
					},
				},
				{
					n = "spellID",
					t = "number",
					nilable = true,
					doc = {
						"May be nil if item is not a spell; Will be the overriding spellID if spell is overriden, otherwise will match actionID",
					},
				},
				{
					n = "itemType",
					t = "SpellBookItemType",
					nilable = false,
				},
				{
					n = "name",
					t = "string",
					nilable = false,
				},
				{
					n = "subName",
					t = "string",
					nilable = false,
					doc = {
						"May be empty if flyout, or if spell's data isn't loaded yet; Listen for SPELL_TEXT_UPDATE event, or use SpellMixin to load asynchronously",
					},
				},
				{
					n = "iconID",
					t = "fileID",
					nilable = false,
				},
				{
					n = "isPassive",
					t = "bool",
					nilable = false,
					doc = {
						"True if the item is a passive spell; Will always be false if it is not a spell",
					},
				},
				{
					n = "isOffSpec",
					t = "bool",
					nilable = false,
					doc = {
						"True if the item belongs to a non-active specialization",
					},
				},
				{
					n = "skillLineIndex",
					t = "luaIndex",
					nilable = true,
					doc = {
						"Index of the SkillLine this SpellBookItem is part of; Nil this SpellBookItem isn't part of a SkillLine",
					},
				},
			},
		},
		{
			n = "SpellBookSkillLineInfo",
			k = "Structure",
			fields = {
				{
					n = "name",
					t = "string",
					nilable = false,
				},
				{
					n = "iconID",
					t = "fileID",
					nilable = false,
				},
				{
					n = "itemIndexOffset",
					t = "number",
					nilable = false,
					doc = {
						"This value + 1 is the first Spell Book Item slotIndex within this skill line",
					},
				},
				{
					n = "numSpellBookItems",
					t = "number",
					nilable = false,
				},
				{
					n = "isGuild",
					t = "bool",
					nilable = false,
				},
				{
					n = "shouldHide",
					t = "bool",
					nilable = false,
				},
				{
					n = "specID",
					t = "number",
					nilable = true,
					doc = {
						"Will be nil if this skill line is not associated with a specialization",
					},
				},
				{
					n = "offSpecID",
					t = "number",
					nilable = true,
					doc = {
						"Will be nil if this skill line is not associated with a non-active specialization",
					},
				},
			},
		},
	},
}
systems[#systems + 1] = {
	name = "",
	type = "",
	ns = "",
	env = "",
	file = "SpellConstantsDocumentation.lua",
	hash = "c497b0c73279102521e3c6f5aaeda9b7652ee37a4737fc00e13986d04c37c061",
	tables = {
		{
			n = "ConfirmationPromptUIType",
			k = "Enumeration",
			fields = {
				{
					n = "StaticText",
					t = "ConfirmationPromptUIType",
					EnumValue = 0,
				},
				{
					n = "BonusRoll",
					t = "ConfirmationPromptUIType",
					EnumValue = 1,
				},
				{
					n = "SimpleWarning",
					t = "ConfirmationPromptUIType",
					EnumValue = 2,
				},
				{
					n = "StaticTextAlert",
					t = "ConfirmationPromptUIType",
					EnumValue = 3,
				},
				{
					n = "SimpleWarningAlert",
					t = "ConfirmationPromptUIType",
					EnumValue = 4,
				},
			},
			max = 4,
			min = 0,
			num = 5,
		},
		{
			n = "SpellAuraVisibilityType",
			k = "Enumeration",
			fields = {
				{
					n = "RaidInCombat",
					t = "SpellAuraVisibilityType",
					EnumValue = 0,
				},
				{
					n = "RaidOutOfCombat",
					t = "SpellAuraVisibilityType",
					EnumValue = 1,
				},
				{
					n = "EnemyTarget",
					t = "SpellAuraVisibilityType",
					EnumValue = 2,
				},
			},
			max = 2,
			min = 0,
			num = 3,
		},
		{
			n = "SpellCooldownConsts",
			k = "Constants",
			values = {
				{
					n = "GLOBAL_RECOVERY_CATEGORY",
					t = "number",
					Value = 133,
				},
			},
		},
	},
}
systems[#systems + 1] = {
	name = "",
	type = "",
	ns = "",
	env = "",
	file = "SpellDiminishConstantsDocumentation.lua",
	hash = "adc06dffaede06a50f0bbb970d7b97802366832fb9a876845e4178cdc817985f",
	tables = {
		{
			n = "SpellDiminishCategory",
			k = "Enumeration",
			fields = {
				{
					n = "Root",
					t = "SpellDiminishCategory",
					EnumValue = 0,
				},
				{
					n = "Taunt",
					t = "SpellDiminishCategory",
					EnumValue = 1,
				},
				{
					n = "Stun",
					t = "SpellDiminishCategory",
					EnumValue = 2,
				},
				{
					n = "AoEKnockback",
					t = "SpellDiminishCategory",
					EnumValue = 3,
				},
				{
					n = "Incapacitate",
					t = "SpellDiminishCategory",
					EnumValue = 4,
				},
				{
					n = "Disorient",
					t = "SpellDiminishCategory",
					EnumValue = 5,
				},
				{
					n = "Silence",
					t = "SpellDiminishCategory",
					EnumValue = 6,
				},
				{
					n = "Disarm",
					t = "SpellDiminishCategory",
					EnumValue = 7,
				},
			},
			max = 7,
			min = 0,
			num = 8,
		},
		{
			n = "SpellDiminishRuleset",
			k = "Enumeration",
			fields = {
				{
					n = "None",
					t = "SpellDiminishRuleset",
					EnumValue = 0,
				},
				{
					n = "PvE",
					t = "SpellDiminishRuleset",
					EnumValue = 1,
				},
				{
					n = "PvP",
					t = "SpellDiminishRuleset",
					EnumValue = 2,
				},
			},
			max = 2,
			min = 0,
			num = 3,
		},
	},
}
systems[#systems + 1] = {
	name = "SpellDiminishUI",
	type = "System",
	ns = "C_SpellDiminish",
	env = "All",
	file = "SpellDiminishUIDocumentation.lua",
	hash = "00ee09bb5408537f8b93ae81afa00c8e53bd0c8bfd8803f8ebf0f91df4e067be",
	functions = {
		{
			n = "GetAllSpellDiminishCategories",
			k = "Function",
			sec = "AllowedWhenUntainted",
			args = {
				{
					n = "ruleset",
					t = "SpellDiminishRuleset",
					nilable = true,
				},
			},
			rets = {
				{
					n = "categories",
					t = "table",
					nilable = false,
					it = "SpellDiminishCategoryInfo",
				},
			},
			RequiresSpellDiminishUI = true,
		},
		{
			n = "GetSpellDiminishCategoryInfo",
			k = "Function",
			sec = "AllowedWhenUntainted",
			args = {
				{
					n = "category",
					t = "SpellDiminishCategory",
					nilable = false,
				},
			},
			rets = {
				{
					n = "categoryInfo",
					t = "SpellDiminishCategoryInfo",
					nilable = true,
				},
			},
			RequiresSpellDiminishUI = true,
		},
		{
			n = "IsSystemSupported",
			k = "Function",
			rets = {
				{
					n = "isSystemSupported",
					t = "bool",
					nilable = false,
				},
			},
		},
		{
			n = "ShouldTrackSpellDiminishCategory",
			k = "Function",
			sec = "AllowedWhenUntainted",
			args = {
				{
					n = "category",
					t = "SpellDiminishCategory",
					nilable = false,
				},
				{
					n = "ruleset",
					t = "SpellDiminishRuleset",
					nilable = false,
				},
			},
			rets = {
				{
					n = "isTracked",
					t = "bool",
					nilable = false,
				},
			},
			RequiresSpellDiminishUI = true,
			SecretReturns = true,
		},
	},
	events = {
		{
			n = "UnitSpellDiminishCategoryStateUpdated",
			k = "Event",
			payload = {
				{
					n = "unitTarget",
					t = "UnitTokenVariant",
					nilable = false,
				},
				{
					n = "trackerInfo",
					t = "SpellDiminishTrackerInfo",
					nilable = false,
				},
			},
			SecretPayloads = true,
			SynchronousEvent = true,
			literal = "UNIT_SPELL_DIMINISH_CATEGORY_STATE_UPDATED",
		},
	},
	tables = {
		{
			n = "SpellDiminishCategoryInfo",
			k = "Structure",
			fields = {
				{
					n = "category",
					t = "SpellDiminishCategory",
					nilable = false,
				},
				{
					n = "name",
					t = "cstring",
					nilable = false,
				},
				{
					n = "icon",
					t = "fileID",
					nilable = true,
				},
			},
		},
		{
			n = "SpellDiminishTrackerInfo",
			k = "Structure",
			fields = {
				{
					n = "category",
					t = "SpellDiminishCategory",
					nilable = false,
				},
				{
					n = "startTime",
					t = "number",
					nilable = false,
				},
				{
					n = "duration",
					t = "number",
					nilable = false,
				},
				{
					n = "showCountdown",
					t = "bool",
					nilable = false,
				},
				{
					n = "isImmune",
					t = "bool",
					nilable = false,
				},
			},
		},
	},
	predicates = {
		{
			FailureMode = "ReturnNothing",
			Name = "RequiresSpellDiminishUI",
			Type = "Precondition",
		},
	},
}
systems[#systems + 1] = {
	name = "Spell",
	type = "System",
	ns = "C_Spell",
	env = "All",
	file = "SpellDocumentation.lua",
	hash = "3024b4d9b9eda6b24537f04f2a37e6bca7ecba48bdfb153f4bd419d56ac5841d",
	functions = {
		{
			n = "CancelSpellByID",
			k = "Function",
			sec = "AllowedWhenUntainted",
			args = {
				{
					n = "spellID",
					t = "number",
					nilable = false,
				},
			},
			HasRestrictions = true,
		},
		{
			n = "DoesSpellExist",
			k = "Function",
			doc = {
				"Returns true if the spell exists, regardless of whether the player has learned it",
			},
			sec = "AllowedWhenUntainted",
			args = {
				{
					n = "spellIdentifier",
					t = "SpellIdentifier",
					nilable = false,
					doc = {
						"Spell ID, name, name(subtext), or link; Using name will always check for an override on that spell",
					},
				},
			},
			rets = {
				{
					n = "spellExists",
					t = "bool",
					nilable = false,
				},
			},
		},
		{
			n = "EnableSpellRangeCheck",
			k = "Function",
			doc = {
				"Used in conjunction with SpellRangeCheckUpdate to inform the UI when a spell goes in or out of range with the current target.",
			},
			sec = "AllowedWhenUntainted",
			args = {
				{
					n = "spellIdentifier",
					t = "SpellIdentifier",
					nilable = false,
				},
				{
					n = "enable",
					t = "bool",
					nilable = false,
					doc = {
						"True if changes in range for the spell should dispatch SpellRangeCheckUpdate. False if the spell no longer needs the event.",
					},
				},
			},
		},
		{
			n = "GetAuraStatChanges",
			k = "Function",
			sec = "AllowedWhenUntainted",
			args = {
				{
					n = "spellID",
					t = "number",
					nilable = false,
				},
			},
			rets = {
				{
					n = "healthChange",
					t = "number",
					nilable = false,
				},
				{
					n = "powerTypeChanges",
					t = "table",
					nilable = false,
					it = "PowerTypeChange",
				},
			},
		},
		{
			n = "GetBaseSpell",
			k = "Function",
			sec = "AllowedWhenTainted",
			args = {
				{
					n = "spellIdentifier",
					t = "SpellIdentifier",
					nilable = false,
				},
				{
					n = "spec",
					t = "number",
					nilable = false,
					def = 0,
					doc = {
						"Which Class Specialization to consider, as overrides may vary by Spec; Defaults to player's current Spec",
					},
					NeverSecret = true,
				},
			},
			rets = {
				{
					n = "baseSpellID",
					t = "number",
					nilable = false,
					doc = {
						"Returns the spellID passed in if there is no override",
					},
				},
			},
		},
		{
			n = "GetDeadlyDebuffInfo",
			k = "Function",
			sec = "AllowedWhenTainted",
			args = {
				{
					n = "spellIdentifier",
					t = "SpellIdentifier",
					nilable = false,
				},
			},
			rets = {
				{
					n = "deadlyDebuffInfo",
					t = "DeadlyDebuffInfo",
					nilable = false,
				},
			},
			mayReturnNothing = true,
		},
		{
			n = "GetItemModifiedAppearancesApplied",
			k = "Function",
			sec = "AllowedWhenUntainted",
			args = {
				{
					n = "spellID",
					t = "number",
					nilable = false,
				},
			},
			rets = {
				{
					n = "itemModifiedAppearanceIDs",
					t = "table",
					nilable = false,
					it = "number",
				},
			},
		},
		{
			n = "GetMawPowerLinkBySpellID",
			k = "Function",
			sec = "AllowedWhenTainted",
			args = {
				{
					n = "spellID",
					t = "SpellIdentifier",
					nilable = false,
				},
			},
			rets = {
				{
					n = "link",
					t = "cstring",
					nilable = false,
				},
			},
			mayReturnNothing = true,
		},
		{
			n = "GetMawPowerRarityInfoBySpellID",
			k = "Function",
			sec = "AllowedWhenTainted",
			args = {
				{
					n = "spellID",
					t = "SpellIdentifier",
					nilable = false,
				},
			},
			rets = {
				{
					n = "rarityID",
					t = "number",
					nilable = false,
				},
				{
					n = "rarityBorderAtlas",
					t = "textureAtlas",
					nilable = false,
				},
			},
			mayReturnNothing = true,
		},
		{
			n = "GetOverrideSpell",
			k = "Function",
			sec = "AllowedWhenUntainted",
			args = {
				{
					n = "spellIdentifier",
					t = "SpellIdentifier",
					nilable = false,
				},
				{
					n = "spec",
					t = "number",
					nilable = false,
					def = 0,
					doc = {
						"Which Class Specialization to consider, as overrides may vary by Spec; Defaults to player's current Spec",
					},
				},
				{
					n = "onlyKnown",
					t = "bool",
					nilable = false,
					def = true,
				},
				{
					n = "ignoreOverrideSpellID",
					t = "number",
					nilable = false,
					def = 0,
				},
			},
			rets = {
				{
					n = "overrideSpellID",
					t = "number",
					nilable = false,
					doc = {
						"Returns the spellID passed in if there is no override",
					},
				},
			},
		},
		{
			n = "GetSchoolString",
			k = "Function",
			sec = "AllowedWhenTainted",
			args = {
				{
					n = "schoolMask",
					t = "number",
					nilable = false,
				},
			},
			rets = {
				{
					n = "result",
					t = "cstring",
					nilable = false,
				},
			},
		},
		{
			n = "GetSpellAutoCast",
			k = "Function",
			doc = {
				"Returns nil if spell is not found",
			},
			sec = "AllowedWhenTainted",
			args = {
				{
					n = "spellIdentifier",
					t = "SpellIdentifier",
					nilable = false,
				},
			},
			rets = {
				{
					n = "autoCastAllowed",
					t = "bool",
					nilable = false,
				},
				{
					n = "autoCastEnabled",
					t = "bool",
					nilable = false,
				},
			},
			mayReturnNothing = true,
		},
		{
			n = "GetSpellCastCount",
			k = "Function",
			doc = {
				"Returns number of times a spell can be cast, typically based on availability of things like required reagent items; Returns 0 if spell is not found",
			},
			sec = "AllowedWhenTainted",
			args = {
				{
					n = "spellIdentifier",
					t = "SpellIdentifier",
					nilable = false,
				},
			},
			rets = {
				{
					n = "castCount",
					t = "number",
					nilable = false,
				},
			},
			SecretWhenCooldownsRestricted = true,
		},
		{
			n = "GetSpellChargeDuration",
			k = "Function",
			doc = {
				"Returns a duration object describing the active recharge time for a spell.",
			},
			sec = "AllowedWhenTainted",
			args = {
				{
					n = "spellIdentifier",
					t = "SpellIdentifier",
					nilable = false,
				},
			},
			rets = {
				{
					n = "duration",
					t = "LuaDurationObject",
					nilable = false,
				},
			},
			mayReturnNothing = true,
		},
		{
			n = "GetSpellCharges",
			k = "Function",
			doc = {
				"Returns a table of info about the charges of a charge-accumulating spell; May return nil if spell is not found or is not charge-based",
			},
			sec = "AllowedWhenTainted",
			args = {
				{
					n = "spellIdentifier",
					t = "SpellIdentifier",
					nilable = false,
				},
			},
			rets = {
				{
					n = "chargeInfo",
					t = "SpellChargeInfo",
					nilable = false,
				},
			},
			SecretWhenCooldownsRestricted = true,
			mayReturnNothing = true,
		},
		{
			n = "GetSpellCooldown",
			k = "Function",
			doc = {
				"Returns nil if spell is not found",
			},
			sec = "AllowedWhenTainted",
			args = {
				{
					n = "spellIdentifier",
					t = "SpellIdentifier",
					nilable = false,
				},
			},
			rets = {
				{
					n = "spellCooldownInfo",
					t = "SpellCooldownInfo",
					nilable = false,
				},
			},
			SecretWhenCooldownsRestricted = true,
			mayReturnNothing = true,
		},
		{
			n = "GetSpellCooldownDuration",
			k = "Function",
			doc = {
				"Returns a duration object describing the active cooldown duration for a spell.",
			},
			sec = "AllowedWhenTainted",
			args = {
				{
					n = "spellIdentifier",
					t = "SpellIdentifier",
					nilable = false,
				},
				{
					n = "ignoreGCD",
					t = "bool",
					nilable = false,
					def = false,
				},
			},
			rets = {
				{
					n = "duration",
					t = "LuaDurationObject",
					nilable = false,
				},
			},
			mayReturnNothing = true,
		},
		{
			n = "GetSpellDescription",
			k = "Function",
			doc = {
				"Returns nil if spell is not found",
			},
			sec = "AllowedWhenTainted",
			args = {
				{
					n = "spellIdentifier",
					t = "SpellIdentifier",
					nilable = false,
				},
			},
			rets = {
				{
					n = "description",
					t = "string",
					nilable = false,
					doc = {
						"May be empty if spell's data isn't loaded yet; Listen for SPELL_TEXT_UPDATE event, or use SpellMixin to load asynchronously",
					},
				},
			},
			mayReturnNothing = true,
		},
		{
			n = "GetSpellDisplayCount",
			k = "Function",
			doc = {
				"Depending on the spell, return a string that is either the use count or number of charges. If value is beyond the display count parameter, returns the replacementString (defaults to '*').",
			},
			sec = "AllowedWhenUntainted",
			args = {
				{
					n = "spellIdentifier",
					t = "SpellIdentifier",
					nilable = false,
				},
				{
					n = "maxDisplayCount",
					t = "number",
					nilable = false,
					def = 9999,
				},
				{
					n = "replacementString",
					t = "cstring",
					nilable = false,
					def = "*",
				},
			},
			rets = {
				{
					n = "displayCount",
					t = "string",
					nilable = false,
				},
			},
			SecretWhenCooldownsRestricted = true,
		},
		{
			n = "GetSpellIDForSpellIdentifier",
			k = "Function",
			doc = {
				"Meant primarily for getting a spell id from a spell name or link; Returns nothing if spell does not exist",
			},
			sec = "AllowedWhenTainted",
			args = {
				{
					n = "spellIdentifier",
					t = "SpellIdentifier",
					nilable = false,
					doc = {
						"Spell ID, name, name(subtext), or link; Using name will always check for an override on that spell; If passed a spell ID, will return same id as was passed",
					},
				},
			},
			rets = {
				{
					n = "spellID",
					t = "number",
					nilable = false,
				},
			},
			mayReturnNothing = true,
		},
		{
			n = "GetSpellInfo",
			k = "Function",
			doc = {
				"Returns nil if spell is not found",
			},
			sec = "AllowedWhenTainted",
			args = {
				{
					n = "spellIdentifier",
					t = "SpellIdentifier",
					nilable = false,
					doc = {
						"Spell ID, name, name(subtext), or link; Using name will always check for an override on that spell",
					},
				},
			},
			rets = {
				{
					n = "spellInfo",
					t = "SpellInfo",
					nilable = false,
				},
			},
			mayReturnNothing = true,
		},
		{
			n = "GetSpellLevelLearned",
			k = "Function",
			doc = {
				"Returns the level the spell is learned at; May return a different value if the player is currently Level Linked with another player",
			},
			sec = "AllowedWhenTainted",
			args = {
				{
					n = "spellIdentifier",
					t = "SpellIdentifier",
					nilable = false,
				},
			},
			rets = {
				{
					n = "levelLearned",
					t = "number",
					nilable = false,
				},
			},
		},
		{
			n = "GetSpellLink",
			k = "Function",
			doc = {
				"Returns nil if spell is not found",
			},
			sec = "AllowedWhenTainted",
			args = {
				{
					n = "spellIdentifier",
					t = "SpellIdentifier",
					nilable = false,
				},
				{
					n = "glyphID",
					t = "number",
					nilable = true,
					NeverSecret = true,
				},
			},
			rets = {
				{
					n = "spellLink",
					t = "string",
					nilable = false,
				},
			},
			mayReturnNothing = true,
		},
		{
			n = "GetSpellLossOfControlCooldownDuration",
			k = "Function",
			doc = {
				"Returns a duration object describing the active loss of control cooldown duration for a spell.",
			},
			sec = "AllowedWhenTainted",
			args = {
				{
					n = "spellIdentifier",
					t = "SpellIdentifier",
					nilable = false,
				},
			},
			rets = {
				{
					n = "duration",
					t = "LuaDurationObject",
					nilable = false,
				},
			},
			mayReturnNothing = true,
		},
		{
			n = "GetSpellLossOfControlCooldownInfo",
			k = "Function",
			doc = {
				"Returns nil if spell is not found",
			},
			sec = "AllowedWhenTainted",
			args = {
				{
					n = "spellIdentifier",
					t = "SpellIdentifier",
					nilable = false,
				},
			},
			rets = {
				{
					n = "lossOfControlInfo",
					t = "SpellLossOfControlInfo",
					nilable = false,
				},
			},
			SecretWhenCooldownsRestricted = true,
			mayReturnNothing = true,
		},
		{
			n = "GetSpellMaxCumulativeAuraApplications",
			k = "Function",
			sec = "AllowedWhenTainted",
			args = {
				{
					n = "spellID",
					t = "SpellIdentifier",
					nilable = false,
				},
			},
			rets = {
				{
					n = "cumulativeAura",
					t = "number",
					nilable = false,
				},
			},
			SecretWhenUnitAuraRestricted = true,
		},
		{
			n = "GetSpellName",
			k = "Function",
			doc = {
				"Returns nil if spell is not found",
			},
			sec = "AllowedWhenTainted",
			args = {
				{
					n = "spellIdentifier",
					t = "SpellIdentifier",
					nilable = false,
				},
			},
			rets = {
				{
					n = "name",
					t = "string",
					nilable = false,
				},
			},
			mayReturnNothing = true,
		},
		{
			n = "GetSpellPowerCost",
			k = "Function",
			doc = {
				"Returns a table containing one or more SpellPowerCostInfos, one for each power type this spell costs; May return nil if spell is not found or has no resource costs",
			},
			sec = "AllowedWhenTainted",
			args = {
				{
					n = "spellIdentifier",
					t = "SpellIdentifier",
					nilable = false,
				},
			},
			rets = {
				{
					n = "powerCosts",
					t = "table",
					nilable = false,
					it = "SpellPowerCostInfo",
				},
			},
			mayReturnNothing = true,
		},
		{
			n = "GetSpellQueueWindow",
			k = "Function",
			rets = {
				{
					n = "result",
					t = "number",
					nilable = false,
				},
			},
		},
		{
			n = "GetSpellSkillLineAbilityRank",
			k = "Function",
			doc = {
				"Returns the rank of a spell that corresponds to an ability within a ranked SkillLine (ex: a crafting Recipe); Returns nil if spell is not found, or isn't part of a ranked SkillLine",
			},
			sec = "AllowedWhenTainted",
			args = {
				{
					n = "spellIdentifier",
					t = "SpellIdentifier",
					nilable = false,
				},
			},
			rets = {
				{
					n = "rank",
					t = "number",
					nilable = false,
				},
			},
			mayReturnNothing = true,
		},
		{
			n = "GetSpellSubtext",
			k = "Function",
			doc = {
				"Returns nil if spell is not found",
			},
			sec = "AllowedWhenTainted",
			args = {
				{
					n = "spellIdentifier",
					t = "SpellIdentifier",
					nilable = false,
				},
			},
			rets = {
				{
					n = "subtext",
					t = "string",
					nilable = false,
					doc = {
						"May be empty if spell's data isn't loaded yet; Listen for SPELL_TEXT_UPDATE event, or use SpellMixin to load asynchronously",
					},
				},
			},
			mayReturnNothing = true,
		},
		{
			n = "GetSpellTexture",
			k = "Function",
			doc = {
				"Returns nothing if spell is not found",
			},
			sec = "AllowedWhenTainted",
			args = {
				{
					n = "spellIdentifier",
					t = "SpellIdentifier",
					nilable = false,
				},
			},
			rets = {
				{
					n = "iconID",
					t = "fileID",
					nilable = false,
				},
				{
					n = "originalIconID",
					t = "fileID",
					nilable = false,
				},
			},
			mayReturnNothing = true,
		},
		{
			n = "GetSpellTradeSkillLink",
			k = "Function",
			doc = {
				"Returns nil if spell is not associated with a trade skill",
			},
			sec = "AllowedWhenTainted",
			args = {
				{
					n = "spellIdentifier",
					t = "SpellIdentifier",
					nilable = false,
				},
			},
			rets = {
				{
					n = "spellLink",
					t = "string",
					nilable = false,
				},
			},
			mayReturnNothing = true,
		},
		{
			n = "GetVisibilityInfo",
			k = "Function",
			sec = "AllowedWhenUntainted",
			args = {
				{
					n = "spellID",
					t = "number",
					nilable = false,
				},
				{
					n = "visibilityType",
					t = "SpellAuraVisibilityType",
					nilable = false,
				},
			},
			rets = {
				{
					n = "hasCustom",
					t = "bool",
					nilable = false,
				},
				{
					n = "alwaysShowMine",
					t = "bool",
					nilable = false,
				},
				{
					n = "showForMySpec",
					t = "bool",
					nilable = false,
				},
			},
			mayReturnNothing = true,
		},
		{
			n = "IsAutoAttackSpell",
			k = "Function",
			doc = {
				"Returns true if the spell is the player's melee Auto Attack spell",
			},
			sec = "AllowedWhenTainted",
			args = {
				{
					n = "spellIdentifier",
					t = "SpellIdentifier",
					nilable = false,
				},
			},
			rets = {
				{
					n = "isAutoAttack",
					t = "bool",
					nilable = false,
				},
			},
		},
		{
			n = "IsAutoRepeatSpell",
			k = "Function",
			doc = {
				"Returns true if the spell is an auto repeat player spell",
			},
			sec = "AllowedWhenTainted",
			args = {
				{
					n = "spellIdentifier",
					t = "SpellIdentifier",
					nilable = false,
				},
			},
			rets = {
				{
					n = "isAutoRepeat",
					t = "bool",
					nilable = false,
				},
			},
		},
		{
			n = "IsClassTalentSpell",
			k = "Function",
			doc = {
				"Returns true if the spell comes from a Class Talent",
			},
			sec = "AllowedWhenTainted",
			args = {
				{
					n = "spellIdentifier",
					t = "SpellIdentifier",
					nilable = false,
				},
			},
			rets = {
				{
					n = "isAutoRepeat",
					t = "bool",
					nilable = false,
				},
			},
		},
		{
			n = "IsConsumableSpell",
			k = "Function",
			sec = "AllowedWhenTainted",
			args = {
				{
					n = "spellIdentifier",
					t = "SpellIdentifier",
					nilable = false,
				},
			},
			rets = {
				{
					n = "consumable",
					t = "bool",
					nilable = false,
				},
			},
		},
		{
			n = "IsCurrentSpell",
			k = "Function",
			doc = {
				"Returns true if the spell is currently being cast or is queued to be cast",
			},
			sec = "AllowedWhenTainted",
			args = {
				{
					n = "spellIdentifier",
					t = "SpellIdentifier",
					nilable = false,
				},
			},
			rets = {
				{
					n = "isCurrentSpell",
					t = "bool",
					nilable = false,
				},
			},
		},
		{
			n = "IsExternalDefensive",
			k = "Function",
			doc = {
				"Returns true if an aura is considered an external defensive.",
			},
			sec = "AllowedWhenUntainted",
			args = {
				{
					n = "spellID",
					t = "number",
					nilable = false,
				},
			},
			rets = {
				{
					n = "isExternalDefensive",
					t = "bool",
					nilable = false,
				},
			},
		},
		{
			n = "IsPressHoldReleaseSpell",
			k = "Function",
			doc = {
				"Returns true if the spell is an 'empower' type spell that is cast by pressing and holding, with the on-release cast typically being affected by time held",
			},
			sec = "AllowedWhenTainted",
			args = {
				{
					n = "spellIdentifier",
					t = "SpellIdentifier",
					nilable = false,
				},
			},
			rets = {
				{
					n = "isPressHoldRelease",
					t = "bool",
					nilable = false,
				},
			},
		},
		{
			n = "IsPriorityAura",
			k = "Function",
			doc = {
				"Returns true if an aura is considered high priority and should be ordered ahead of other auras in the UI.",
			},
			sec = "AllowedWhenUntainted",
			args = {
				{
					n = "spellID",
					t = "number",
					nilable = false,
				},
			},
			rets = {
				{
					n = "isHighPriority",
					t = "bool",
					nilable = false,
				},
			},
		},
		{
			n = "IsPvPTalentSpell",
			k = "Function",
			doc = {
				"Returns true if the spell comes from a PvP Talent",
			},
			sec = "AllowedWhenTainted",
			args = {
				{
					n = "spellIdentifier",
					t = "SpellIdentifier",
					nilable = false,
				},
			},
			rets = {
				{
					n = "isAutoRepeat",
					t = "bool",
					nilable = false,
				},
			},
		},
		{
			n = "IsRangedAutoAttackSpell",
			k = "Function",
			doc = {
				"Returns true if the spell is the player's ranged Auto Attack spell (ex: Shoot, Auto Shot, etc)",
			},
			sec = "AllowedWhenTainted",
			args = {
				{
					n = "spellIdentifier",
					t = "SpellIdentifier",
					nilable = false,
				},
			},
			rets = {
				{
					n = "isRangedAutoAttack",
					t = "bool",
					nilable = false,
				},
			},
		},
		{
			n = "IsSelfBuff",
			k = "Function",
			doc = {
				"Returns true if an aura only applies effects to the player, and no other units.",
			},
			sec = "AllowedWhenUntainted",
			args = {
				{
					n = "spellID",
					t = "number",
					nilable = false,
				},
			},
			rets = {
				{
					n = "hasSelfEffectsOnly",
					t = "bool",
					nilable = false,
				},
			},
		},
		{
			n = "IsSpellCrowdControl",
			k = "Function",
			doc = {
				"Returns true if the spell causes a crowd control effect when cast on a valid target.",
			},
			sec = "AllowedWhenTainted",
			args = {
				{
					n = "spellIdentifier",
					t = "SpellIdentifier",
					nilable = false,
				},
			},
			rets = {
				{
					n = "isCrowdControl",
					t = "bool",
					nilable = false,
				},
			},
		},
		{
			n = "IsSpellDataCached",
			k = "Function",
			doc = {
				"Returns true if data for the spell has already been loaded and cached this session",
			},
			sec = "AllowedWhenUntainted",
			args = {
				{
					n = "spellIdentifier",
					t = "SpellIdentifier",
					nilable = false,
				},
			},
			rets = {
				{
					n = "isCached",
					t = "bool",
					nilable = false,
				},
			},
		},
		{
			n = "IsSpellDisabled",
			k = "Function",
			sec = "AllowedWhenTainted",
			args = {
				{
					n = "spellIdentifier",
					t = "SpellIdentifier",
					nilable = false,
				},
			},
			rets = {
				{
					n = "disabled",
					t = "bool",
					nilable = false,
				},
			},
		},
		{
			n = "IsSpellHarmful",
			k = "Function",
			doc = {
				"Returns true if the spell can be cast on hostile targets",
			},
			sec = "AllowedWhenTainted",
			args = {
				{
					n = "spellIdentifier",
					t = "SpellIdentifier",
					nilable = false,
				},
			},
			rets = {
				{
					n = "isHarmful",
					t = "bool",
					nilable = false,
				},
			},
		},
		{
			n = "IsSpellHelpful",
			k = "Function",
			doc = {
				"Returns true if the spell can be cast on the player or other friendly targets",
			},
			sec = "AllowedWhenTainted",
			args = {
				{
					n = "spellIdentifier",
					t = "SpellIdentifier",
					nilable = false,
				},
			},
			rets = {
				{
					n = "isHelpful",
					t = "bool",
					nilable = false,
				},
			},
		},
		{
			n = "IsSpellImportant",
			k = "Function",
			doc = {
				"Returns true if the spell is considered important. For example a spell that's lethal if not interrupted would be considered important.",
			},
			sec = "AllowedWhenTainted",
			args = {
				{
					n = "spellIdentifier",
					t = "SpellIdentifier",
					nilable = false,
				},
			},
			rets = {
				{
					n = "isImportant",
					t = "bool",
					nilable = false,
				},
			},
		},
		{
			n = "IsSpellInRange",
			k = "Function",
			doc = {
				"Returns true if the current target is within range of the spell; False if out of range; Nil if range check was invalid",
			},
			sec = "AllowedWhenTainted",
			args = {
				{
					n = "spellIdentifier",
					t = "SpellIdentifier",
					nilable = false,
				},
				{
					n = "targetUnit",
					t = "UnitToken",
					nilable = true,
					doc = {
						"Optional specific target; If not supplied, player's current target (if any) will be used",
					},
				},
			},
			rets = {
				{
					n = "inRange",
					t = "bool",
					nilable = true,
					doc = {
						"May be nil if the range check was invalid, ie due to unknown/invalid spell, missing/invalid target, etc",
					},
				},
			},
		},
		{
			n = "IsSpellPassive",
			k = "Function",
			sec = "AllowedWhenTainted",
			args = {
				{
					n = "spellIdentifier",
					t = "SpellIdentifier",
					nilable = false,
				},
			},
			rets = {
				{
					n = "isPassive",
					t = "bool",
					nilable = false,
				},
			},
		},
		{
			n = "IsSpellUsable",
			k = "Function",
			doc = {
				"Returns whether the spell is currently castable; Typically based on things like learned status, required resources, etc",
			},
			sec = "AllowedWhenTainted",
			args = {
				{
					n = "spellIdentifier",
					t = "SpellIdentifier",
					nilable = false,
				},
			},
			rets = {
				{
					n = "isUsable",
					t = "bool",
					nilable = false,
				},
				{
					n = "insufficientPower",
					t = "bool",
					nilable = false,
					doc = {
						"True if spell is specifically unusable due to insufficient power (ie MANA, RAGE, etc)",
					},
				},
			},
		},
		{
			n = "PickupSpell",
			k = "Function",
			sec = "AllowedWhenUntainted",
			args = {
				{
					n = "spellIdentifier",
					t = "SpellIdentifier",
					nilable = false,
				},
			},
		},
		{
			n = "RequestLoadSpellData",
			k = "Function",
			doc = {
				"Requests data for the spell be loaded; Listen for SPELL_DATA_LOAD_RESULT to be notified when load is finished",
			},
			sec = "AllowedWhenUntainted",
			args = {
				{
					n = "spellIdentifier",
					t = "SpellIdentifier",
					nilable = false,
				},
			},
		},
		{
			n = "SetSpellAutoCastEnabled",
			k = "Function",
			sec = "AllowedWhenUntainted",
			args = {
				{
					n = "spellIdentifier",
					t = "SpellIdentifier",
					nilable = false,
				},
				{
					n = "enabled",
					t = "bool",
					nilable = false,
				},
			},
		},
		{
			n = "SpellHasRange",
			k = "Function",
			doc = {
				"Returns true if the spell has a min and/or max range greater than 0",
			},
			sec = "AllowedWhenTainted",
			args = {
				{
					n = "spellIdentifier",
					t = "SpellIdentifier",
					nilable = false,
				},
			},
			rets = {
				{
					n = "hasRange",
					t = "bool",
					nilable = false,
				},
			},
		},
		{
			n = "TargetSpellIsEnchanting",
			k = "Function",
			rets = {
				{
					n = "isEnchanting",
					t = "bool",
					nilable = false,
				},
			},
		},
		{
			n = "TargetSpellJumpsUpgradeTrack",
			k = "Function",
			rets = {
				{
					n = "jumpsUpgradeTrack",
					t = "bool",
					nilable = false,
				},
			},
		},
		{
			n = "TargetSpellReplacesBonusTree",
			k = "Function",
			rets = {
				{
					n = "result",
					t = "bool",
					nilable = false,
				},
			},
		},
		{
			n = "ToggleSpellAutoCast",
			k = "Function",
			doc = {
				"Toggles whether spell's autoCast is enabled",
			},
			sec = "AllowedWhenUntainted",
			args = {
				{
					n = "spellIdentifier",
					t = "SpellIdentifier",
					nilable = false,
				},
			},
		},
	},
	events = {
		{
			n = "EnchantSpellCompleted",
			k = "Event",
			payload = {
				{
					n = "successful",
					t = "bool",
					nilable = false,
				},
				{
					n = "enchantedItem",
					t = "ItemLocation",
					nilable = true,
					mix = "ItemLocationMixin",
				},
			},
			SynchronousEvent = true,
			literal = "ENCHANT_SPELL_COMPLETED",
		},
		{
			n = "EnchantSpellSelected",
			k = "Event",
			SynchronousEvent = true,
			literal = "ENCHANT_SPELL_SELECTED",
		},
		{
			n = "SpellDataLoadResult",
			k = "Event",
			payload = {
				{
					n = "spellID",
					t = "number",
					nilable = false,
				},
				{
					n = "success",
					t = "bool",
					nilable = false,
				},
			},
			SynchronousEvent = true,
			literal = "SPELL_DATA_LOAD_RESULT",
		},
		{
			n = "SpellRangeCheckUpdate",
			k = "Event",
			doc = {
				"Used in conjunction with EnableSpellRangeCheck to inform the UI when a spell goes in or out of range with the current target.",
			},
			payload = {
				{
					n = "spellIdentifier",
					t = "SpellIdentifier",
					nilable = false,
				},
				{
					n = "isInRange",
					t = "bool",
					nilable = false,
					doc = {
						"Whether or not the current target is in range of the spell. Should not be used if the 'checksRange' parameter is false.",
					},
				},
				{
					n = "checksRange",
					t = "bool",
					nilable = false,
					doc = {
						"Can be false if a range check was not made for any reason, for example there is not a current target.",
					},
				},
			},
			SynchronousEvent = true,
			literal = "SPELL_RANGE_CHECK_UPDATE",
		},
		{
			n = "SpellTextUpdate",
			k = "Event",
			payload = {
				{
					n = "spellID",
					t = "number",
					nilable = false,
				},
			},
			SynchronousEvent = true,
			literal = "SPELL_TEXT_UPDATE",
		},
		{
			n = "UpdateSpellTargetItemContext",
			k = "Event",
			SynchronousEvent = true,
			literal = "UPDATE_SPELL_TARGET_ITEM_CONTEXT",
		},
	},
	tables = {
		{
			n = "DeadlyDebuffInfo",
			k = "Structure",
			fields = {
				{
					n = "criticalTimeRemainingMs",
					t = "number",
					nilable = true,
				},
				{
					n = "criticalStacks",
					t = "number",
					nilable = true,
				},
				{
					n = "priority",
					t = "number",
					nilable = false,
				},
				{
					n = "warningText",
					t = "string",
					nilable = false,
				},
				{
					n = "soundKitID",
					t = "number",
					nilable = true,
				},
			},
		},
		{
			n = "PowerTypeChange",
			k = "Structure",
			fields = {
				{
					n = "powerType",
					t = "PowerType",
					nilable = false,
				},
				{
					n = "amount",
					t = "number",
					nilable = false,
				},
			},
		},
		{
			n = "SpellInfo",
			k = "Structure",
			fields = {
				{
					n = "name",
					t = "string",
					nilable = false,
				},
				{
					n = "iconID",
					t = "fileID",
					nilable = false,
					doc = {
						"Icon for this spell; If spell has been overriden, this may be the icon for the overriding spell; See originalIconID for spell's non-overriden icon",
					},
				},
				{
					n = "originalIconID",
					t = "fileID",
					nilable = false,
				},
				{
					n = "castTime",
					t = "number",
					nilable = false,
				},
				{
					n = "minRange",
					t = "number",
					nilable = false,
				},
				{
					n = "maxRange",
					t = "number",
					nilable = false,
				},
				{
					n = "spellID",
					t = "number",
					nilable = false,
				},
			},
		},
	},
}
