local C=require(script.Parent["\083\121\109\098\111\108\046\114\111\098\108\111\120"])local J=newproxy(true)local t={}local function O(J)t[J]=C.named("\082\111\097\099\116"..J)end O("\072\111\115\116\067\104\097\110\103\101\069\118\101\110\116")O("\072\111\115\116\069\118\101\110\116")function t.of(C)if typeof(C)~="\116\097\098\108\101"then return nil end return C[J]end;(getmetatable(J)).__index=t;(getmetatable(J)).__tostring=function()return"\082\111\097\099\116\084\121\112\101"end return J
--[[
	Contains markers for annotating objects with types.

	To set the type of an object, use `Type` as a key and the actual marker as
	the value:

		local foo = {
			[Type] = Type.Foo,
		}
]]

local Symbol = require(script.Parent["Symbol.roblox"])

local Type = newproxy(true)

local TypeInternal = {}

local function addType(name)
	TypeInternal[name] = Symbol.named("Roact" .. name)
end

addType("HostChangeEvent")
addType("HostEvent")

function TypeInternal.of(value)
	if typeof(value) ~= "table" then
		return nil
	end

	return value[Type]
end

getmetatable(Type).__index = TypeInternal

getmetatable(Type).__tostring = function()
	return "RoactType"
end

return Type
