local ____lualib = require("lualib_bundle")
local __TS__ArrayMap = ____lualib.__TS__ArrayMap
local __TS__ArrayFilter = ____lualib.__TS__ArrayFilter
local ____exports = {}
____exports.snapPosition = function(object, index, height)
    local snapPoints = object:getSnapPoints()
    local snapPoint = snapPoints[index]
    if not snapPoint then
        error(
            (("The given object " .. object:getGUID()) .. " has no snap point ") .. tostring(index),
            0
        )
    end
    local position = object:positionToWorld(snapPoint.position)
    if height then
        position:setAt("y", height)
    end
    return position
end
____exports.atSnapPoint = function(object, index)
    local position = ____exports.snapPosition(object, index)
    local hits = Physics.cast({
        type = 3,
        origin = position:add(Vector(0, 0.5, 0)),
        size = {1, 1, 1},
        direction = {0, -1, 0}
    })
    return __TS__ArrayFilter(
        __TS__ArrayMap(
            hits,
            function(____, h) return h.hit_object end
        ),
        function(____, o) return o ~= object and o.interactable end
    )
end
return ____exports
