local c=import("\046\047\066\097\115\101\073\110\115\116\097\110\099\101")local D=import("\046\046\047\118\097\108\105\100\097\116\101\084\121\112\101")local d=c:extend("\067\111\110\116\101\120\116\065\099\116\105\111\110\083\101\114\118\105\099\101")function d.prototype.BindCoreAction(L,c,d,P,...)D("\097\099\116\105\111\110\078\097\109\101",c,"\115\116\114\105\110\103")D("\102\117\110\099\116\105\111\110\084\111\066\105\110\100",d,"\102\117\110\099\116\105\111\110")D("\099\114\101\097\116\101\084\111\117\099\104\066\117\116\116\111\110",P,"\098\111\111\108\101\097\110")end function d.prototype.UnbindCoreAction(d,c)D("\097\099\116\105\111\110\078\097\109\101",c,"\115\116\114\105\110\103")end return d
local BaseInstance = import("./BaseInstance")
local validateType = import("../validateType")
local ContextActionService = BaseInstance:extend("ContextActionService")

--[[
	These action binding and unbinding functions mimic Roblox's validation
	of arguments, but are a little stricter about type expectations:
	* Roblox only throws errors on the 'actionName' parameter if it can't cast it to a string

	Additionally, Roblox does not throw error in either of these cases:
	* Binding a different action to the same name (overwrites existing action)
	* Unbinding actions that were never bound does not error
]]
function ContextActionService.prototype:BindCoreAction(actionName, functionToBind, createTouchButton, ...)
	validateType("actionName", actionName, "string")
	validateType("functionToBind", functionToBind, "function")
	validateType("createTouchButton", createTouchButton, "boolean")
end

function ContextActionService.prototype:UnbindCoreAction(actionName)
	validateType("actionName", actionName, "string")
end

return ContextActionService