local ____lualib = require("lualib_bundle")
local __TS__New = ____lualib.__TS__New
local __TS__Class = ____lualib.__TS__Class
local __TS__ClassExtends = ____lualib.__TS__ClassExtends
local ____exports = {}
local ____ModCallbackCustom = require("enums.ModCallbackCustom")
local ModCallbackCustom = ____ModCallbackCustom.ModCallbackCustom
local ____playerDataStructures = require("functions.playerDataStructures")
local defaultMapGetPlayer = ____playerDataStructures.defaultMapGetPlayer
local mapSetPlayer = ____playerDataStructures.mapSetPlayer
local ____shouldFire = require("shouldFire")
local shouldFirePlayer = ____shouldFire.shouldFirePlayer
local ____DefaultMap = require("classes.DefaultMap")
local DefaultMap = ____DefaultMap.DefaultMap
local ____CustomCallback = require("classes.private.CustomCallback")
local CustomCallback = ____CustomCallback.CustomCallback
local v = {run = {playersCharacterMap = __TS__New(
    DefaultMap,
    function(____, character) return character end
)}}
____exports.PostPlayerChangeType = __TS__Class()
local PostPlayerChangeType = ____exports.PostPlayerChangeType
PostPlayerChangeType.name = "PostPlayerChangeType"
__TS__ClassExtends(PostPlayerChangeType, CustomCallback)
function PostPlayerChangeType.prototype.____constructor(self)
    CustomCallback.prototype.____constructor(self)
    self.v = v
    self.shouldFire = shouldFirePlayer
    self.postPEffectReordered = function(____, player)
        local character = player:GetPlayerType()
        local storedCharacter = defaultMapGetPlayer(nil, v.run.playersCharacterMap, player, character)
        if character ~= storedCharacter then
            mapSetPlayer(nil, v.run.playersCharacterMap, player, character)
            self:fire(player, storedCharacter, character)
        end
    end
    self.customCallbacksUsed = {{ModCallbackCustom.POST_PEFFECT_UPDATE_REORDERED, self.postPEffectReordered}}
end
return ____exports
