// 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:
var _typeDuration = new vdl.Type();
var _typeTime = new vdl.Type();
var _typeWireDeadline = new vdl.Type();
_typeDuration.kind = vdl.kind.STRUCT;
_typeDuration.name = "time.Duration";
_typeDuration.fields = [{name: "Seconds", type: vdl.types.INT64}, {name: "Nanos", type: vdl.types.INT32}];
_typeTime.kind = vdl.kind.STRUCT;
_typeTime.name = "time.Time";
_typeTime.fields = [{name: "Seconds", type: vdl.types.INT64}, {name: "Nanos", type: vdl.types.INT32}];
_typeWireDeadline.kind = vdl.kind.STRUCT;
_typeWireDeadline.name = "time.WireDeadline";
_typeWireDeadline.fields = [{name: "FromNow", type: _typeDuration}, {name: "NoDeadline", type: vdl.types.BOOL}];
_typeDuration.freeze();
_typeTime.freeze();
_typeWireDeadline.freeze();
module.exports.Duration = (vdl.registry.lookupOrCreateConstructor(_typeDuration));
module.exports.Time = (vdl.registry.lookupOrCreateConstructor(_typeTime));
module.exports.WireDeadline = (vdl.registry.lookupOrCreateConstructor(_typeWireDeadline));




// Consts:



// Errors:



// Services:

   
 


