local TradeInfo =
{
	Name = "TradeInfo",
	Type = "System",
	Namespace = "C_TradeInfo",
	Environment = "All",

	Functions =
	{
		{
			Name = "AddTradeMoney",
			Type = "Function",
			HasRestrictions = true,
			Documentation = { "Adds any cursor-held money to the current trade offer." },
		},
		{
			Name = "PickupTradeMoney",
			Type = "Function",
			HasRestrictions = true,
			SecretArguments = "AllowedWhenUntainted",

			Arguments =
			{
				{ Name = "amount", Type = "WOWMONEY", Nilable = false },
			},
		},
		{
			Name = "SetTradeMoney",
			Type = "Function",
			HasRestrictions = true,
			SecretArguments = "AllowedWhenUntainted",
			Documentation = { "Sets the amount of money in the current trade offer." },

			Arguments =
			{
				{ Name = "amount", Type = "WOWMONEY", Nilable = false },
			},
		},
		{
			Name = "ShouldShowTradeOfferWarning",
			Type = "Function",

			Returns =
			{
				{ Name = "shouldShow", Type = "bool", Nilable = false },
			},
		},
	},

	Events =
	{
		{
			Name = "PlayerTradeCurrency",
			Type = "Event",
			LiteralName = "PLAYER_TRADE_CURRENCY",
			SynchronousEvent = true,
		},
		{
			Name = "PlayerTradeMoney",
			Type = "Event",
			LiteralName = "PLAYER_TRADE_MONEY",
			SynchronousEvent = true,
		},
		{
			Name = "TradeAcceptUpdate",
			Type = "Event",
			LiteralName = "TRADE_ACCEPT_UPDATE",
			SynchronousEvent = true,
			Payload =
			{
				{ Name = "playerAccepted", Type = "number", Nilable = false },
				{ Name = "targetAccepted", Type = "number", Nilable = false },
			},
		},
		{
			Name = "TradeClosed",
			Type = "Event",
			LiteralName = "TRADE_CLOSED",
			SynchronousEvent = true,
		},
		{
			Name = "TradeCurrencyChanged",
			Type = "Event",
			LiteralName = "TRADE_CURRENCY_CHANGED",
			SynchronousEvent = true,
		},
		{
			Name = "TradeMoneyChanged",
			Type = "Event",
			LiteralName = "TRADE_MONEY_CHANGED",
			SynchronousEvent = true,
		},
		{
			Name = "TradePlayerItemChanged",
			Type = "Event",
			LiteralName = "TRADE_PLAYER_ITEM_CHANGED",
			SynchronousEvent = true,
			Payload =
			{
				{ Name = "tradeSlotIndex", Type = "number", Nilable = false },
			},
		},
		{
			Name = "TradePotentialBindEnchant",
			Type = "Event",
			LiteralName = "TRADE_POTENTIAL_BIND_ENCHANT",
			SynchronousEvent = true,
			Payload =
			{
				{ Name = "canBecomeBoundForTrade", Type = "bool", Nilable = false },
			},
		},
		{
			Name = "TradePotentialRemoveTransmog",
			Type = "Event",
			LiteralName = "TRADE_POTENTIAL_REMOVE_TRANSMOG",
			SynchronousEvent = true,
			Payload =
			{
				{ Name = "itemLink", Type = "cstring", Nilable = false },
				{ Name = "tradeSlotIndex", Type = "number", Nilable = false },
			},
		},
		{
			Name = "TradeRequest",
			Type = "Event",
			LiteralName = "TRADE_REQUEST",
			SynchronousEvent = true,
			Payload =
			{
				{ Name = "name", Type = "cstring", Nilable = false },
			},
		},
		{
			Name = "TradeRequestCancel",
			Type = "Event",
			LiteralName = "TRADE_REQUEST_CANCEL",
			SynchronousEvent = true,
		},
		{
			Name = "TradeShow",
			Type = "Event",
			LiteralName = "TRADE_SHOW",
			SynchronousEvent = true,
		},
		{
			Name = "TradeTargetItemChanged",
			Type = "Event",
			LiteralName = "TRADE_TARGET_ITEM_CHANGED",
			SynchronousEvent = true,
			Payload =
			{
				{ Name = "tradeSlotIndex", Type = "number", Nilable = false },
			},
		},
		{
			Name = "TradeUpdate",
			Type = "Event",
			LiteralName = "TRADE_UPDATE",
			SynchronousEvent = true,
		},
		{
			Name = "TradeUpdateWarnings",
			Type = "Event",
			LiteralName = "TRADE_UPDATE_WARNINGS",
			SynchronousEvent = true,
		},
	},

	Tables =
	{
	},
	Predicates =
	{
	},
};

APIDocumentation:AddDocumentationTable(TradeInfo);