local ____exports = {}
local ____isaac_2Dtypescript_2Ddefinitions = require("isaac-typescript-definitions")
local CardType = ____isaac_2Dtypescript_2Ddefinitions.CardType
local Challenge = ____isaac_2Dtypescript_2Ddefinitions.Challenge
local CollectibleType = ____isaac_2Dtypescript_2Ddefinitions.CollectibleType
local LevelStage = ____isaac_2Dtypescript_2Ddefinitions.LevelStage
local PillColor = ____isaac_2Dtypescript_2Ddefinitions.PillColor
local PillEffect = ____isaac_2Dtypescript_2Ddefinitions.PillEffect
local PlayerType = ____isaac_2Dtypescript_2Ddefinitions.PlayerType
local RoomType = ____isaac_2Dtypescript_2Ddefinitions.RoomType
local TrinketType = ____isaac_2Dtypescript_2Ddefinitions.TrinketType
local ____enums = require("functions.enums")
local getEnumLength = ____enums.getEnumLength
local getHighestEnumValue = ____enums.getHighestEnumValue
local ____utils = require("functions.utils")
local iRange = ____utils.iRange
--- Equal to `CollectibleType.SAD_ONION`.
____exports.FIRST_COLLECTIBLE_TYPE = CollectibleType.SAD_ONION
--- Calculated from the `CollectibleType` enum.
-- 
-- Note that this cannot be calculated from the length of the enum, because unlike all of the other
-- enums, collectible types are not contiguous.
____exports.LAST_VANILLA_COLLECTIBLE_TYPE = getHighestEnumValue(nil, CollectibleType)
--- Calculated from the `CollectibleType` enum. (`CollectibleType.NULL` is not included.)
____exports.NUM_VANILLA_COLLECTIBLE_TYPES = getEnumLength(nil, CollectibleType) - 1
--- Equal to `TrinketType.SWALLOWED_PENNY`.
____exports.FIRST_TRINKET_TYPE = TrinketType.SWALLOWED_PENNY
--- Calculated from the `TrinketType` enum.
____exports.LAST_VANILLA_TRINKET_TYPE = getHighestEnumValue(nil, TrinketType)
--- Calculated from the `TrinketType` enum. (`TrinketType.NULL` is not included.)
____exports.NUM_VANILLA_TRINKET_TYPES = getEnumLength(nil, TrinketType) - 1
--- Equal to `Card.FOOL`.
____exports.FIRST_CARD_TYPE = CardType.FOOL
--- Calculated from the `Card` enum.
____exports.LAST_VANILLA_CARD_TYPE = getHighestEnumValue(nil, CardType)
--- Calculated from the `Card` enum. `Card.NULL` is not included.
____exports.NUM_VANILLA_CARD_TYPES = getEnumLength(nil, CardType) - 1
--- Equal to `PillEffect.BAD_GAS`.
____exports.FIRST_PILL_EFFECT = PillEffect.BAD_GAS
--- Calculated from the `PillEffect` enum.
____exports.LAST_VANILLA_PILL_EFFECT = getHighestEnumValue(nil, PillEffect)
--- Calculated from the `PillEffect` enum. (There is no `PillEffect.NULL` in the custom enum, so we
-- do not have to subtract one here.)
____exports.NUM_VANILLA_PILL_EFFECTS = getEnumLength(nil, PillEffect)
--- Equal to `PillColor.BLUE_BLUE`.
____exports.FIRST_PILL_COLOR = PillColor.BLUE_BLUE
--- Equal to `PillColor.WHITE_YELLOW`.
-- 
-- Note that `PillColor.GOLD` is technically higher, but that is not considered for the purposes of
-- this constant.
____exports.LAST_NORMAL_PILL_COLOR = PillColor.WHITE_YELLOW
--- Equal to `PillColor.HORSE_BLUE_BLUE`.
____exports.FIRST_HORSE_PILL_COLOR = PillColor.HORSE_BLUE_BLUE
--- Equal to `PillColor.HORSE_WHITE_YELLOW`.
-- 
-- Note that `PillColor.HORSE_GOLD` is technically higher, but that is not considered for the
-- purposes of this constant.
____exports.LAST_HORSE_PILL_COLOR = PillColor.HORSE_WHITE_YELLOW
____exports.NUM_NORMAL_PILL_COLORS = #iRange(nil, ____exports.FIRST_PILL_COLOR, ____exports.LAST_NORMAL_PILL_COLOR)
--- Equal to `PlayerType.ISAAC`.
____exports.FIRST_CHARACTER = PlayerType.ISAAC
--- Calculated from the `PlayerType` enum.
____exports.LAST_VANILLA_CHARACTER = getHighestEnumValue(nil, PlayerType)
____exports.FIRST_ROOM_TYPE = RoomType.DEFAULT
____exports.LAST_ROOM_TYPE = getHighestEnumValue(nil, RoomType)
____exports.FIRST_STAGE = LevelStage.BASEMENT_1
____exports.LAST_STAGE = getHighestEnumValue(nil, LevelStage)
--- Calculated from the `Challenge` enum. `Challenge.NULL` is not included.
____exports.NUM_VANILLA_CHALLENGES = getEnumLength(nil, Challenge) - 1
return ____exports
