local GarrisonShared =
{
	Tables =
	{
		{
			Name = "GarrisonAbilityEffect",
			Type = "Structure",
			Fields =
			{
				{ Name = "name", Type = "cstring", Nilable = false },
				{ Name = "description", Type = "cstring", Nilable = false },
				{ Name = "icon", Type = "number", Nilable = false },
				{ Name = "factor", Type = "number", Nilable = false },
			},
		},
		{
			Name = "GarrisonFollowerAbilityInfo",
			Type = "Structure",
			Fields =
			{
				{ Name = "id", Type = "number", Nilable = false },
				{ Name = "name", Type = "cstring", Nilable = false },
				{ Name = "description", Type = "string", Nilable = false },
				{ Name = "icon", Type = "number", Nilable = false },
				{ Name = "isTrait", Type = "bool", Nilable = false },
				{ Name = "isSpecialization", Type = "bool", Nilable = false },
				{ Name = "temporary", Type = "bool", Nilable = false },
				{ Name = "category", Type = "cstring", Nilable = true },
				{ Name = "counters", Type = "table", InnerType = "GarrisonAbilityEffect", Nilable = false },
				{ Name = "isEmptySlot", Type = "bool", Nilable = false },
			},
		},
		{
			Name = "GarrisonTalentCurrencyCostInfo",
			Type = "Structure",
			Fields =
			{
				{ Name = "currencyType", Type = "number", Nilable = false },
				{ Name = "currencyQuantity", Type = "number", Nilable = false },
			},
		},
		{
			Name = "GarrisonTalentInfo",
			Type = "Structure",
			Fields =
			{
				{ Name = "id", Type = "number", Nilable = false },
				{ Name = "ability", Type = "GarrisonFollowerAbilityInfo", Nilable = false },
				{ Name = "name", Type = "string", Nilable = false },
				{ Name = "icon", Type = "number", Nilable = false },
				{ Name = "tier", Type = "number", Nilable = false },
				{ Name = "uiOrder", Type = "number", Nilable = false },
				{ Name = "type", Type = "number", Nilable = false },
				{ Name = "prerequisiteTalentID", Type = "number", Nilable = true },
				{ Name = "selected", Type = "bool", Nilable = false },
				{ Name = "researched", Type = "bool", Nilable = false },
				{ Name = "ignoreTalent", Type = "bool", Nilable = false },
				{ Name = "researchDuration", Type = "time_t", Nilable = false },
				{ Name = "startTime", Type = "time_t", Nilable = false },
				{ Name = "timeRemaining", Type = "time_t", Nilable = false },
				{ Name = "researchGoldCost", Type = "number", Nilable = false },
				{ Name = "researchCurrencyCosts", Type = "table", InnerType = "GarrisonTalentCurrencyCostInfo", Nilable = false },
				{ Name = "talentAvailability", Type = "GarrisonTalentAvailability", Nilable = false },
				{ Name = "talentRank", Type = "number", Nilable = false },
				{ Name = "talentMaxRank", Type = "number", Nilable = false },
				{ Name = "isBeingResearched", Type = "bool", Nilable = false },
				{ Name = "description", Type = "string", Nilable = false },
				{ Name = "perkSpellID", Type = "number", Nilable = false },
				{ Name = "researchDescription", Type = "string", Nilable = true },
				{ Name = "playerConditionReason", Type = "string", Nilable = true },
				{ Name = "socketInfo", Type = "GarrisonTalentSocketInfo", Nilable = false },
				{ Name = "treeID", Type = "number", Nilable = false },
			},
		},
		{
			Name = "GarrisonTalentSocketInfo",
			Type = "Structure",
			Fields =
			{
				{ Name = "socketType", Type = "number", Nilable = false },
				{ Name = "socketSubtype", Type = "number", Nilable = false },
				{ Name = "misc0", Type = "number", Nilable = false },
				{ Name = "misc1", Type = "number", Nilable = false },
			},
		},
		{
			Name = "GarrisonTalentTreeInfo",
			Type = "Structure",
			Fields =
			{
				{ Name = "treeID", Type = "number", Nilable = false },
				{ Name = "title", Type = "cstring", Nilable = false },
				{ Name = "textureKit", Type = "textureKit", Nilable = false },
				{ Name = "talents", Type = "table", InnerType = "GarrisonTalentInfo", Nilable = false },
				{ Name = "isClassAgnostic", Type = "bool", Nilable = false },
				{ Name = "isThemed", Type = "bool", Nilable = false },
				{ Name = "featureType", Type = "number", Nilable = false },
				{ Name = "featureSubtype", Type = "number", Nilable = false },
			},
		},
	},
	Predicates =
	{
	},
};

APIDocumentation:AddDocumentationTable(GarrisonShared);