local ____lualib = require("lualib_bundle")
local __TS__New = ____lualib.__TS__New
local ____exports = {}
local ____isaac_2Dtypescript_2Ddefinitions = require("isaac-typescript-definitions")
local BossID = ____isaac_2Dtypescript_2Ddefinitions.BossID
local EntityType = ____isaac_2Dtypescript_2Ddefinitions.EntityType
local ____ReadonlySet = require("types.ReadonlySet")
local ReadonlySet = ____ReadonlySet.ReadonlySet
local STORY_BOSS_IDS = {
    BossID.MOM,
    BossID.MOMS_HEART,
    BossID.SATAN,
    BossID.IT_LIVES,
    BossID.ISAAC,
    BossID.BLUE_BABY,
    BossID.LAMB,
    BossID.MEGA_SATAN,
    BossID.ULTRA_GREED,
    BossID.HUSH,
    BossID.DELIRIUM,
    BossID.ULTRA_GREEDIER,
    BossID.MOTHER,
    BossID.MAUSOLEUM_MOM,
    BossID.MAUSOLEUM_MOMS_HEART,
    BossID.DOGMA,
    BossID.BEAST
}
local STORY_BOSS_ENTITY_TYPES_SET = __TS__New(ReadonlySet, {
    EntityType.MOM,
    EntityType.MOMS_HEART,
    EntityType.SATAN,
    EntityType.ISAAC,
    EntityType.LAMB,
    EntityType.MEGA_SATAN,
    EntityType.MEGA_SATAN_2,
    EntityType.ULTRA_GREED,
    EntityType.HUSH,
    EntityType.DELIRIUM,
    EntityType.MOTHER,
    EntityType.DOGMA,
    EntityType.BEAST
})
local STORY_BOSS_IDS_SET = __TS__New(ReadonlySet, STORY_BOSS_IDS)
--- Helper function to determine if the specified entity type is an end-game story boss, like Isaac,
-- Blue Baby, Mega Satan, The Beast, and so on. This is useful because certain effects should only
-- apply to non-story bosses, like Vanishing Twin.
function ____exports.isStoryBoss(self, entityType)
    return STORY_BOSS_ENTITY_TYPES_SET:has(entityType)
end
--- Helper function to determine if the specified boss ID is an end-game story boss, like Isaac, Blue
-- Baby, Mega Satan, The Beast, and so on. This is useful because certain effects should only apply
-- to non-story bosses, like Vanishing Twin.
function ____exports.isStoryBossID(self, bossID)
    return STORY_BOSS_IDS_SET:has(bossID)
end
return ____exports
