If "me" reported about my movement vector, and received the vectors of Enemy and bullets - it seems to me next should be just local math calculations about the vectors crossing... and the results
just an example
when you shoot 1 bullet it takes some time until it arrives to the enemy. the server needs to track that bullet and 60 times per second send it to all clients so the can draw the real position of the bullet and also meanwhile the players moved so the server needs also to send the location of all players to the clients so they can draw the new position and each time it needs to check for collision.