local InstanceProperties

-- Format:
-- [TypeName], [ValueType], [DefaultValue]
-- eg. "Position", "Vector3", "Vector3.new(0, 0, 0)"

InstanceProperties = { -- any changes to this table should be changed in InstanceTypes.lua
	Model = {
		{ "Name", "String", "Model" },
	},
	Folder = {
		{ "Name", "String", "Folder" },
	},
	Part = {
		{ "Name", "String", "Part" },
		{ "CFrame", "CFrame", CFrame.new() },
		{ "Color", "Color3", Color3.new() },
		{ "Size", "Vector3", Vector3.new() },
		{ "Anchored", "Bool", true },
		{ "CanCollide", "Bool", true },
		{ "Transparency", "ShortBoundedFloat", 0 },
		{ "Material", "Material", "Plastic" },
		{ "CastShadow", "Bool", false },
		{ "Shape", "PartType", "Block" },
	},
	BoolValue = {
		{ "Name", "String", "Value" },
		{ "Value", "Bool", false },
	},
	WedgePart = {
		{ "Name", "String", "Wedge" },
		{ "CFrame", "CFrame", CFrame.new() },
		{ "Color", "Color3", Color3.new() },
		{ "Size", "Vector3", Vector3.new() },
		{ "Anchored", "Bool", true },
		{ "CanCollide", "Bool", true },
		{ "Transparency", "ShortBoundedFloat", 0 },
		{ "Material", "Material", "Plastic" },
		{ "CastShadow", "Bool", false },
	},
	StringValue = {
		{ "Name", "String", "StringValue" },
		{ "Value", "String", "" },
	},
	MeshPart = {
		{ "Name", "String", "Part" },
		{ "CFrame", "CFrame", CFrame.new() },
		{ "Color", "Color3", Color3.new() },
		{ "Size", "Vector3", Vector3.new() },
		{ "Anchored", "Bool", true },
		{ "CanCollide", "Bool", true },
		{ "Transparency", "ShortBoundedFloat", 0 },
		{ "Material", "Material", "Plastic" },
		{ "CastShadow", "Bool", false },
		{ "MeshId", "String", "" },
		{ "TextureID", "String", "" },
	},
	UnionOperation = {
		{ "Name", "String", "Part" },
		{ "CFrame", "CFrame", CFrame.new() },
		{ "Color", "Color3", Color3.new() },
		{ "Size", "Vector3", Vector3.new() },
		{ "Anchored", "Bool", true },
		{ "CanCollide", "Bool", true },
		{ "Transparency", "ShortBoundedFloat", 0 },
		{ "Material", "Material", "Plastic" },
		{ "CastShadow", "Bool", false },
		{ "MeshId", "String", "" },
	},
	Texture = {
		{ "Name", "String", "Texture" },
		{ "Color3", "Color3", Color3.new() },
		{ "OffsetStudsU", "Float", 0 },
		{ "OffsetStudsV", "Float", 0 },
		{ "StudsPerTileU", "Float", 0 },
		{ "StudsPerTileV", "Float", 0 },
		{ "Texture", "String", "" },
		{ "Transparency", "ShortBoundedFloat", 0 },
		{ "ZIndex", "Int", 0 },
		{ "Face", "NormalId", "Front" },
	},
	BlockMesh = {
		{ "Scale", "Vector3", Vector3.new(1, 1, 1) },
		{ "Offset", "Vector3", Vector3.new(0, 0, 0) },
	},
	PointLight = {
		{ "Name", "String", "PointLight" },
		{ "Brightness", "Float", 1 },
		{ "Color", "Color3", Color3.new(1, 1, 1) },
		{ "Enabled", "Bool", true },
		{ "Range", "Float", 20 },
		{ "Shadows", "Bool", false },
	},
	SpotLight = {
		{ "Name", "String", "SpotLight" },
		{ "Angle", "Float", 90 },
		{ "Brightness", "Float", 1 },
		{ "Color", "Color3", Color3.new(1, 1, 1) },
		{ "Enabled", "Bool", true },
		{ "Face", "NormalId", Enum.NormalId.Front },
		{ "Range", "Float", 16 },
		{ "Shadows", "Bool", false },
	},
	SurfaceLight = {
		{ "Name", "String", "SurfaceLight" },
		{ "Angle", "Float", 90 },
		{ "Brightness", "Float", 1 },
		{ "Color", "Color3", Color3.new(1, 1, 1) },
		{ "Enabled", "Bool", true },
		{ "Face", "NormalId", Enum.NormalId.Front },
		{ "Range", "Float", 16 },
		{ "Shadows", "Bool", false },
	},
	SpecialMesh = {
		{ "Name", "String", "Mesh" },
		{ "MeshId", "String", "" },
		{ "MeshType", "MeshType", Enum.MeshType.FileMesh },
		{ "Offset", "Vector3", Vector3.new(0, 0, 0) },
		{ "Scale", "Vector3", Vector3.new(1, 1, 1) },
		{ "VertexColor", "Vector3", Vector3.new(1, 1, 1) },
		{ "TextureId", "String", "" },
	},
	Decal = {
		{ "Name", "String", "Mesh" },
		{ "Color3", "Color3", Color3.new() },
		{ "Texture", "String", "" },
		{ "Transparency", "ShortBoundedFloat", 0 },
		{ "ZIndex", "Int", 0 },
		{ "Face", "NormalId", "Front" },
	},
	Fire = {
		{ "Name", "String", "Mesh" },
		{ "Color", "Color3", Color3.new() },
		{ "Enabled", "Bool", true },
		{ "Heat", "Float", 9 },
		{ "SecondaryColor", "Color3", Color3.new() },
		{ "Size", "Float", 5 },
		{ "TimeScale", "Float", 1 },
	},
	Smoke = {
		{ "Name", "String", "Mesh" },
		{ "Color", "Color3", Color3.new() },
		{ "Enabled", "Bool", true },
		{ "Opacity", "Float", 1 },
		{ "RiseVelocity", "Float", 1 },
		{ "Size", "Float", 1 },
		{ "TimeScale", "Float", 1 },
	},
	Attachment = {
		{ "Name", "String", "Mesh" },
		{ "CFrame", "CFrame", CFrame.new() },
		{ "Visible", "Bool", false },
	},
}

return InstanceProperties
