local w=require(script.Parent.Parent.Shared.t)local O=w.map(w.string,w.array(w.interface({event=w.string;target=w.Instance;component=w.string,call=w.intersection(w.string,function(w)return w:sub(1,1)~="\095","\067\097\108\108\101\100 \109\101\116\104\111\100 \110\097\109\101\115 \099\097\110\110\111\116 \098\101\103\105\110 \119\105\116\104 \095"end)})))local T=w.interface({server=w.optional(O);client=w.optional(O);shared=w.optional(O)})return{module=T;section=O}
local t = require(script.Parent.Parent.Shared.t)

local section = t.map(
	t.string,
	t.array(
		t.interface({
			event = t.string;
			target = t.Instance;
			component = t.string;
			call = t.intersection(t.string, function(value)
				return value:sub(1, 1) ~= "_", "Called method names cannot begin with _"
			end)
		})
	)
)

local module = t.interface({
	server = t.optional(section),
	client = t.optional(section),
	shared = t.optional(section)
})

return {
	module = module;
	section = section;
}
