Streamhosts we can offer for this sid (may be empty — we may host none).
Dial the peer's candidates in order; throws if all fail.
A candidate we offered was chosen: take up the connection. For a
streamhost we host, that means the inbound socket the peer already opened;
for a proxy, it means dialling it and sending the XEP-0065 <activate/>.
activateJid names the peer to activate the stream to, when that is not
ctx.targetJid — it differs by role in XEP-0260, while the two context JIDs
must stay fixed because they are what the dstaddr hash is built from and
both parties have to compute the same one.
Node-only implementation lives behind this interface so the universal sipub code (src/sipub/sipub.ts) never imports
node:netdirectly.