1. For friendly unit, I can use UnitInRange(), but it doesn't work for enemies. If I use IsSpellInRange(), it looks like that it doesn't check LOS.

    How can I understand that enemy (mostly in arena) is in sight?

    (If no direct API, I am ready for workarounds. May be, something like using CheckInteractDistance() will work?)

    The API doesn't provide a way to check or guess if a target is in line of sight.