// Copyright 2015 The Vanadium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.

// This file was auto-generated by the vanadium vdl tool.
var vdl = require('vanadium').vdl;






module.exports = {};



// Types:




// Consts:



// Errors:



// Services:

  
    
function Chat(){}
module.exports.Chat = Chat

    
      
Chat.prototype.sendMessage = function(ctx, text) {
  throw new Error('Method SendMessage not implemented');
};
     

    
Chat.prototype._serviceDescription = {
  name: 'Chat',
  pkgPath: 'v.io/x/chat/vdl',
  doc: "",
  embeds: [],
  methods: [
    
      
    {
    name: 'SendMessage',
    doc: "// SendMessage sends a message to a user.",
    inArgs: [{
      name: 'text',
      doc: "",
      type: vdl.Types.STRING
    },
    ],
    outArgs: [],
    inStream: null,
    outStream: null,
    tags: []
  },
     
  ]
};

   
 


