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 PillColor = ____isaac_2Dtypescript_2Ddefinitions.PillColor
local PillEffect = ____isaac_2Dtypescript_2Ddefinitions.PillEffect
local PlayerType = ____isaac_2Dtypescript_2Ddefinitions.PlayerType
local TrinketType = ____isaac_2Dtypescript_2Ddefinitions.TrinketType
local ____enums = require("functions.enums")
local getEnumLength = ____enums.getEnumLength
local getHighestEnumValue = ____enums.getHighestEnumValue
--- Equal to `CollectibleType.SAD_ONION` (1).
____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 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` (1).
____exports.FIRST_TRINKET_TYPE = TrinketType.SWALLOWED_PENNY
--- Calculated from the `TrinketType` enum.
-- 
-- Note that this cannot be calculated from the length of the enum, because trinket types are not
-- contiguous.
____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` (1).
____exports.FIRST_CARD_TYPE = CardType.FOOL
--- Calculated from the `CardType` 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` (0).
____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` (1).
____exports.FIRST_PILL_COLOR = PillColor.BLUE_BLUE
--- Equal to `PillColor.WHITE_YELLOW` (13).
-- 
-- 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` (2049).
____exports.FIRST_HORSE_PILL_COLOR = PillColor.HORSE_BLUE_BLUE
--- Equal to `PillColor.HORSE_WHITE_YELLOW` (2061).
-- 
-- 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
--- Calculated from the difference between the first pill color and the last pill color. This does
-- not include Gold Pills. In Repentance, this should be equal to 13.
____exports.NUM_NORMAL_PILL_COLORS = ____exports.LAST_NORMAL_PILL_COLOR - ____exports.FIRST_PILL_COLOR + 1
--- Equal to `PlayerType.ISAAC` (0).
____exports.FIRST_CHARACTER = PlayerType.ISAAC
--- Calculated from the `PlayerType` enum.
____exports.LAST_VANILLA_CHARACTER = getHighestEnumValue(nil, PlayerType)
--- Calculated from the `Challenge` enum. `Challenge.NULL` is not included.
____exports.NUM_VANILLA_CHALLENGES = getEnumLength(nil, Challenge) - 1
return ____exports
