local RULE_SHOPS = {
	categories = {
		librarian = {
			name = "Librarian",
			container_type = "librarian_shop",
			inventory_type = "shop",
			level_offset = 10,
		},
		chef = {
			name = "Chef",
			container_type = "chef_shop",
			inventory_type = "shop",
			level_offset = 10,
		},
		armorer = {
			name = "Armorer",
			container_type = "armorer_shop",
			inventory_type = "shop",
			level_offset = 10,
		},
		smith = {
			name = "Smithy",
			container_type = "smith_shop",
			inventory_type = "shop",
			level_offset = 10,
		},
		wizard = {
			name = "Wizard",
			container_type = "wizard_shop",
			inventory_type = "shop",
			level_offset = 10,
		},
		merchant = {
			name = "Merchant",
			container_type = "merchant_shop",
			inventory_type = "shop",
			level_offset = 20,
		},
		alchemist = {
			name = "Alchemist",
			container_type = "alchemist_shop",
			inventory_type = "shop",
			level_offset = 10,
		},
		ranger = {
			name = "Ranger",
			container_type = "ranger_shop",
			inventory_type = "shop",
			level_offset = 10,
		},
	},
	generate = function(rules, def, level, index)
		local shop = Shop:new(def, level, index)
		if def.container_type then
			local container_level = (def.level_offset or 0) + level
			local container = rules:generate_instance("container", def.container_type, container_level)
			shop:set_container(container)
		end
		shop:set_name(def.name)
		if def.inventory_type then
			local inventory = Inventory:new(def.inventory_type)
			shop:set_inventory(inventory)
		end
		shop:fill_stock(rules)
		return shop
	end,
}

return RULE_SHOPS