<import src="/mojo/public/sky/core.sky" as="core" />
<import src="/mojo/public/sky/connection.sky" as="connection" />
<script>
function wrapHandle(handle, service, client) {
  return connection.bindProxyHandle(handle, service.client, service);
}

function connectToService(url, service, client) {
  var handle = internals.connectToService(url, service.name);
  return wrapHandle(handle, service, client);
}

module.exports = {
  connectToService: connectToService,
  wrapHandle: wrapHandle,
};
</script>
