-- Compiled with roblox-ts v1.3.3
warn("This StrictMap class should not be used anymore! Switch to @rbxts/strict-map")
local StrictMap
do
	StrictMap = setmetatable({}, {
		__tostring = function()
			return "StrictMap"
		end,
	})
	StrictMap.__index = StrictMap
	function StrictMap.new(...)
		local self = setmetatable({}, StrictMap)
		return self:constructor(...) or self
	end
	function StrictMap:constructor(entries, getMissingKeyErrorMessage)
		self.getMissingKeyErrorMessage = getMissingKeyErrorMessage
		local _map = {}
		for _, _v in ipairs(entries or {}) do
			_map[_v[1]] = _v[2]
		end
		self.map = _map
	end
	function StrictMap:entries()
		local result = {}
		for key, value in pairs(self.map) do
			local _arg0 = { key, value }
			table.insert(result, _arg0)
		end
		return result
	end
	function StrictMap:forEach(callbackfn)
		local _map = self.map
		local _arg0 = function(value, key)
			return callbackfn(value, key, self)
		end
		for _k, _v in pairs(_map) do
			_arg0(_v, _k, _map)
		end
	end
	function StrictMap:has(key)
		return self.map[key] ~= nil
	end
	function StrictMap:isEmpty()
		return next(self.map) == nil
	end
	function StrictMap:keys()
		local result = {}
		for key in pairs(self.map) do
			table.insert(result, key)
		end
		return result
	end
	function StrictMap:mustGet(key)
		local value = self.map[key]
		if value == nil then
			if self.getMissingKeyErrorMessage ~= nil then
				error(self.getMissingKeyErrorMessage(key))
			else
				error("Missing value for key: " .. tostring(key))
			end
		end
		return value
	end
	function StrictMap:size()
		-- ▼ ReadonlyMap.size ▼
		local _size = 0
		for _ in pairs(self.map) do
			_size += 1
		end
		-- ▲ ReadonlyMap.size ▲
		return _size
	end
	function StrictMap:toReadonlyMap()
		local _map = {}
		for _, _v in ipairs(self:entries()) do
			_map[_v[1]] = _v[2]
		end
		return _map
	end
	function StrictMap:toString()
		return game:GetService("HttpService"):JSONEncode(self.map)
	end
	function StrictMap:values()
		local result = {}
		for _, value in pairs(self.map) do
			table.insert(result, value)
		end
		return result
	end
	function StrictMap:clear()
		self.map = {}
	end
	function StrictMap:delete(key)
		-- ▼ Map.delete ▼
		local _valueExisted = self.map[key] ~= nil
		self.map[key] = nil
		-- ▲ Map.delete ▲
		return _valueExisted
	end
	function StrictMap:set(key, value)
		self.map[key] = value
	end
	function StrictMap:__tostring()
		return self:toString()
	end
end
return {
	StrictMap = StrictMap,
}
