// 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('../../../../../../../../../../src/vdl');
var makeError = require('../../../../../../../../../../src/verror/make-errors');
var actions = require('../../../../../../../../../../src/verror/actions');
var canonicalize = require('../../../../../../../../../../src/vdl/canonicalize');






module.exports = {};



// Types:
var _type1 = new vdl.Type();
var _type10 = new vdl.Type();
var _type11 = new vdl.Type();
var _type12 = new vdl.Type();
var _type13 = new vdl.Type();
var _type14 = new vdl.Type();
var _type15 = new vdl.Type();
var _type16 = new vdl.Type();
var _type17 = new vdl.Type();
var _type2 = new vdl.Type();
var _type3 = new vdl.Type();
var _type4 = new vdl.Type();
var _type5 = new vdl.Type();
var _type6 = new vdl.Type();
var _type7 = new vdl.Type();
var _type8 = new vdl.Type();
var _type9 = new vdl.Type();
var _typeArgs = new vdl.Type();
var _typeCompComp = new vdl.Type();
var _typeComposites = new vdl.Type();
var _typeCompositesArray = new vdl.Type();
var _typeKeyScalars = new vdl.Type();
var _typeNamedArray = new vdl.Type();
var _typeNamedBool = new vdl.Type();
var _typeNamedByte = new vdl.Type();
var _typeNamedComplex128 = new vdl.Type();
var _typeNamedComplex64 = new vdl.Type();
var _typeNamedEnum = new vdl.Type();
var _typeNamedFloat32 = new vdl.Type();
var _typeNamedFloat64 = new vdl.Type();
var _typeNamedInt16 = new vdl.Type();
var _typeNamedInt32 = new vdl.Type();
var _typeNamedInt64 = new vdl.Type();
var _typeNamedList = new vdl.Type();
var _typeNamedMap = new vdl.Type();
var _typeNamedSet = new vdl.Type();
var _typeNamedString = new vdl.Type();
var _typeNamedStruct = new vdl.Type();
var _typeNamedUint16 = new vdl.Type();
var _typeNamedUint32 = new vdl.Type();
var _typeNamedUint64 = new vdl.Type();
var _typeNamedUnion = new vdl.Type();
var _typeNestedArgs = new vdl.Type();
var _typeScalars = new vdl.Type();
var _typeScalarsArray = new vdl.Type();
_type1.kind = vdl.kind.LIST;
_type1.name = "";
_type1.elem = _typeScalars;
_type10.kind = vdl.kind.LIST;
_type10.name = "";
_type10.elem = _type8;
_type11.kind = vdl.kind.LIST;
_type11.name = "";
_type11.elem = vdl.types.INT32;
_type12.kind = vdl.kind.SET;
_type12.name = "";
_type12.key = vdl.types.INT32;
_type13.kind = vdl.kind.MAP;
_type13.name = "";
_type13.elem = vdl.types.STRING;
_type13.key = vdl.types.INT32;
_type14.kind = vdl.kind.LIST;
_type14.name = "";
_type14.elem = vdl.types.BYTE;
_type15.kind = vdl.kind.LIST;
_type15.name = "";
_type15.elem = vdl.types.STRING;
_type16.kind = vdl.kind.SET;
_type16.name = "";
_type16.key = vdl.types.STRING;
_type17.kind = vdl.kind.MAP;
_type17.name = "";
_type17.elem = vdl.types.INT64;
_type17.key = vdl.types.STRING;
_type2.kind = vdl.kind.SET;
_type2.name = "";
_type2.key = _typeKeyScalars;
_type3.kind = vdl.kind.MAP;
_type3.name = "";
_type3.elem = _typeScalars;
_type3.key = vdl.types.STRING;
_type4.kind = vdl.kind.MAP;
_type4.name = "";
_type4.elem = _type5;
_type4.key = _typeKeyScalars;
_type5.kind = vdl.kind.LIST;
_type5.name = "";
_type5.elem = _type6;
_type6.kind = vdl.kind.MAP;
_type6.name = "";
_type6.elem = vdl.types.COMPLEX128;
_type6.key = vdl.types.STRING;
_type7.kind = vdl.kind.LIST;
_type7.name = "";
_type7.elem = _typeComposites;
_type8.kind = vdl.kind.MAP;
_type8.name = "";
_type8.elem = _typeComposites;
_type8.key = vdl.types.STRING;
_type9.kind = vdl.kind.MAP;
_type9.name = "";
_type9.elem = _type10;
_type9.key = _typeKeyScalars;
_typeArgs.kind = vdl.kind.STRUCT;
_typeArgs.name = "v.io/x/ref/lib/vdl/testdata/base.Args";
_typeArgs.fields = [{name: "A", type: vdl.types.INT32}, {name: "B", type: vdl.types.INT32}];
_typeCompComp.kind = vdl.kind.STRUCT;
_typeCompComp.name = "v.io/x/ref/lib/vdl/testdata/base.CompComp";
_typeCompComp.fields = [{name: "A0", type: _typeComposites}, {name: "A1", type: _typeCompositesArray}, {name: "A2", type: _type7}, {name: "A3", type: _type8}, {name: "A4", type: _type9}];
_typeComposites.kind = vdl.kind.STRUCT;
_typeComposites.name = "v.io/x/ref/lib/vdl/testdata/base.Composites";
_typeComposites.fields = [{name: "A0", type: _typeScalars}, {name: "A1", type: _typeScalarsArray}, {name: "A2", type: _type1}, {name: "A3", type: _type2}, {name: "A4", type: _type3}, {name: "A5", type: _type4}];
_typeCompositesArray.kind = vdl.kind.ARRAY;
_typeCompositesArray.name = "v.io/x/ref/lib/vdl/testdata/base.CompositesArray";
_typeCompositesArray.len = 2;
_typeCompositesArray.elem = _typeComposites;
_typeKeyScalars.kind = vdl.kind.STRUCT;
_typeKeyScalars.name = "v.io/x/ref/lib/vdl/testdata/base.KeyScalars";
_typeKeyScalars.fields = [{name: "A0", type: vdl.types.BOOL}, {name: "A1", type: vdl.types.BYTE}, {name: "A2", type: vdl.types.UINT16}, {name: "A3", type: vdl.types.UINT32}, {name: "A4", type: vdl.types.UINT64}, {name: "A5", type: vdl.types.INT16}, {name: "A6", type: vdl.types.INT32}, {name: "A7", type: vdl.types.INT64}, {name: "A8", type: vdl.types.FLOAT32}, {name: "A9", type: vdl.types.FLOAT64}, {name: "A10", type: vdl.types.COMPLEX64}, {name: "A11", type: vdl.types.COMPLEX128}, {name: "A12", type: vdl.types.STRING}, {name: "B0", type: _typeNamedBool}, {name: "B1", type: _typeNamedByte}, {name: "B2", type: _typeNamedUint16}, {name: "B3", type: _typeNamedUint32}, {name: "B4", type: _typeNamedUint64}, {name: "B5", type: _typeNamedInt16}, {name: "B6", type: _typeNamedInt32}, {name: "B7", type: _typeNamedInt64}, {name: "B8", type: _typeNamedFloat32}, {name: "B9", type: _typeNamedFloat64}, {name: "B10", type: _typeNamedComplex64}, {name: "B11", type: _typeNamedComplex128}, {name: "B12", type: _typeNamedString}];
_typeNamedArray.kind = vdl.kind.ARRAY;
_typeNamedArray.name = "v.io/x/ref/lib/vdl/testdata/base.NamedArray";
_typeNamedArray.len = 2;
_typeNamedArray.elem = vdl.types.BOOL;
_typeNamedBool.kind = vdl.kind.BOOL;
_typeNamedBool.name = "v.io/x/ref/lib/vdl/testdata/base.NamedBool";
_typeNamedByte.kind = vdl.kind.BYTE;
_typeNamedByte.name = "v.io/x/ref/lib/vdl/testdata/base.NamedByte";
_typeNamedComplex128.kind = vdl.kind.COMPLEX128;
_typeNamedComplex128.name = "v.io/x/ref/lib/vdl/testdata/base.NamedComplex128";
_typeNamedComplex64.kind = vdl.kind.COMPLEX64;
_typeNamedComplex64.name = "v.io/x/ref/lib/vdl/testdata/base.NamedComplex64";
_typeNamedEnum.kind = vdl.kind.ENUM;
_typeNamedEnum.name = "v.io/x/ref/lib/vdl/testdata/base.NamedEnum";
_typeNamedEnum.labels = ["A", "B", "C"];
_typeNamedFloat32.kind = vdl.kind.FLOAT32;
_typeNamedFloat32.name = "v.io/x/ref/lib/vdl/testdata/base.NamedFloat32";
_typeNamedFloat64.kind = vdl.kind.FLOAT64;
_typeNamedFloat64.name = "v.io/x/ref/lib/vdl/testdata/base.NamedFloat64";
_typeNamedInt16.kind = vdl.kind.INT16;
_typeNamedInt16.name = "v.io/x/ref/lib/vdl/testdata/base.NamedInt16";
_typeNamedInt32.kind = vdl.kind.INT32;
_typeNamedInt32.name = "v.io/x/ref/lib/vdl/testdata/base.NamedInt32";
_typeNamedInt64.kind = vdl.kind.INT64;
_typeNamedInt64.name = "v.io/x/ref/lib/vdl/testdata/base.NamedInt64";
_typeNamedList.kind = vdl.kind.LIST;
_typeNamedList.name = "v.io/x/ref/lib/vdl/testdata/base.NamedList";
_typeNamedList.elem = vdl.types.UINT32;
_typeNamedMap.kind = vdl.kind.MAP;
_typeNamedMap.name = "v.io/x/ref/lib/vdl/testdata/base.NamedMap";
_typeNamedMap.elem = vdl.types.FLOAT32;
_typeNamedMap.key = vdl.types.STRING;
_typeNamedSet.kind = vdl.kind.SET;
_typeNamedSet.name = "v.io/x/ref/lib/vdl/testdata/base.NamedSet";
_typeNamedSet.key = vdl.types.STRING;
_typeNamedString.kind = vdl.kind.STRING;
_typeNamedString.name = "v.io/x/ref/lib/vdl/testdata/base.NamedString";
_typeNamedStruct.kind = vdl.kind.STRUCT;
_typeNamedStruct.name = "v.io/x/ref/lib/vdl/testdata/base.NamedStruct";
_typeNamedStruct.fields = [{name: "A", type: vdl.types.BOOL}, {name: "B", type: vdl.types.STRING}, {name: "C", type: vdl.types.INT32}];
_typeNamedUint16.kind = vdl.kind.UINT16;
_typeNamedUint16.name = "v.io/x/ref/lib/vdl/testdata/base.NamedUint16";
_typeNamedUint32.kind = vdl.kind.UINT32;
_typeNamedUint32.name = "v.io/x/ref/lib/vdl/testdata/base.NamedUint32";
_typeNamedUint64.kind = vdl.kind.UINT64;
_typeNamedUint64.name = "v.io/x/ref/lib/vdl/testdata/base.NamedUint64";
_typeNamedUnion.kind = vdl.kind.UNION;
_typeNamedUnion.name = "v.io/x/ref/lib/vdl/testdata/base.NamedUnion";
_typeNamedUnion.fields = [{name: "A", type: vdl.types.BOOL}, {name: "B", type: vdl.types.STRING}, {name: "C", type: vdl.types.INT32}];
_typeNestedArgs.kind = vdl.kind.STRUCT;
_typeNestedArgs.name = "v.io/x/ref/lib/vdl/testdata/base.NestedArgs";
_typeNestedArgs.fields = [{name: "Args", type: _typeArgs}];
_typeScalars.kind = vdl.kind.STRUCT;
_typeScalars.name = "v.io/x/ref/lib/vdl/testdata/base.Scalars";
_typeScalars.fields = [{name: "A0", type: vdl.types.BOOL}, {name: "A1", type: vdl.types.BYTE}, {name: "A2", type: vdl.types.UINT16}, {name: "A3", type: vdl.types.UINT32}, {name: "A4", type: vdl.types.UINT64}, {name: "A5", type: vdl.types.INT16}, {name: "A6", type: vdl.types.INT32}, {name: "A7", type: vdl.types.INT64}, {name: "A8", type: vdl.types.FLOAT32}, {name: "A9", type: vdl.types.FLOAT64}, {name: "A10", type: vdl.types.COMPLEX64}, {name: "A11", type: vdl.types.COMPLEX128}, {name: "A12", type: vdl.types.STRING}, {name: "A13", type: vdl.types.ERROR}, {name: "A14", type: vdl.types.ANY}, {name: "A15", type: vdl.types.TYPEOBJECT}, {name: "B0", type: _typeNamedBool}, {name: "B1", type: _typeNamedByte}, {name: "B2", type: _typeNamedUint16}, {name: "B3", type: _typeNamedUint32}, {name: "B4", type: _typeNamedUint64}, {name: "B5", type: _typeNamedInt16}, {name: "B6", type: _typeNamedInt32}, {name: "B7", type: _typeNamedInt64}, {name: "B8", type: _typeNamedFloat32}, {name: "B9", type: _typeNamedFloat64}, {name: "B10", type: _typeNamedComplex64}, {name: "B11", type: _typeNamedComplex128}, {name: "B12", type: _typeNamedString}, {name: "B13", type: _typeNamedEnum}, {name: "B14", type: _typeNamedUnion}];
_typeScalarsArray.kind = vdl.kind.ARRAY;
_typeScalarsArray.name = "v.io/x/ref/lib/vdl/testdata/base.ScalarsArray";
_typeScalarsArray.len = 2;
_typeScalarsArray.elem = _typeScalars;
_type1.freeze();
_type10.freeze();
_type11.freeze();
_type12.freeze();
_type13.freeze();
_type14.freeze();
_type15.freeze();
_type16.freeze();
_type17.freeze();
_type2.freeze();
_type3.freeze();
_type4.freeze();
_type5.freeze();
_type6.freeze();
_type7.freeze();
_type8.freeze();
_type9.freeze();
_typeArgs.freeze();
_typeCompComp.freeze();
_typeComposites.freeze();
_typeCompositesArray.freeze();
_typeKeyScalars.freeze();
_typeNamedArray.freeze();
_typeNamedBool.freeze();
_typeNamedByte.freeze();
_typeNamedComplex128.freeze();
_typeNamedComplex64.freeze();
_typeNamedEnum.freeze();
_typeNamedFloat32.freeze();
_typeNamedFloat64.freeze();
_typeNamedInt16.freeze();
_typeNamedInt32.freeze();
_typeNamedInt64.freeze();
_typeNamedList.freeze();
_typeNamedMap.freeze();
_typeNamedSet.freeze();
_typeNamedString.freeze();
_typeNamedStruct.freeze();
_typeNamedUint16.freeze();
_typeNamedUint32.freeze();
_typeNamedUint64.freeze();
_typeNamedUnion.freeze();
_typeNestedArgs.freeze();
_typeScalars.freeze();
_typeScalarsArray.freeze();
module.exports.Args = (vdl.registry.lookupOrCreateConstructor(_typeArgs));
module.exports.CompComp = (vdl.registry.lookupOrCreateConstructor(_typeCompComp));
module.exports.Composites = (vdl.registry.lookupOrCreateConstructor(_typeComposites));
module.exports.CompositesArray = (vdl.registry.lookupOrCreateConstructor(_typeCompositesArray));
module.exports.KeyScalars = (vdl.registry.lookupOrCreateConstructor(_typeKeyScalars));
module.exports.NamedArray = (vdl.registry.lookupOrCreateConstructor(_typeNamedArray));
module.exports.NamedBool = (vdl.registry.lookupOrCreateConstructor(_typeNamedBool));
module.exports.NamedByte = (vdl.registry.lookupOrCreateConstructor(_typeNamedByte));
module.exports.NamedComplex128 = (vdl.registry.lookupOrCreateConstructor(_typeNamedComplex128));
module.exports.NamedComplex64 = (vdl.registry.lookupOrCreateConstructor(_typeNamedComplex64));
module.exports.NamedEnum = {
  A: canonicalize.reduce(new (vdl.registry.lookupOrCreateConstructor(_typeNamedEnum))('A', true), _typeNamedEnum),
  B: canonicalize.reduce(new (vdl.registry.lookupOrCreateConstructor(_typeNamedEnum))('B', true), _typeNamedEnum),
  C: canonicalize.reduce(new (vdl.registry.lookupOrCreateConstructor(_typeNamedEnum))('C', true), _typeNamedEnum),
};
module.exports.NamedFloat32 = (vdl.registry.lookupOrCreateConstructor(_typeNamedFloat32));
module.exports.NamedFloat64 = (vdl.registry.lookupOrCreateConstructor(_typeNamedFloat64));
module.exports.NamedInt16 = (vdl.registry.lookupOrCreateConstructor(_typeNamedInt16));
module.exports.NamedInt32 = (vdl.registry.lookupOrCreateConstructor(_typeNamedInt32));
module.exports.NamedInt64 = (vdl.registry.lookupOrCreateConstructor(_typeNamedInt64));
module.exports.NamedList = (vdl.registry.lookupOrCreateConstructor(_typeNamedList));
module.exports.NamedMap = (vdl.registry.lookupOrCreateConstructor(_typeNamedMap));
module.exports.NamedSet = (vdl.registry.lookupOrCreateConstructor(_typeNamedSet));
module.exports.NamedString = (vdl.registry.lookupOrCreateConstructor(_typeNamedString));
module.exports.NamedStruct = (vdl.registry.lookupOrCreateConstructor(_typeNamedStruct));
module.exports.NamedUint16 = (vdl.registry.lookupOrCreateConstructor(_typeNamedUint16));
module.exports.NamedUint32 = (vdl.registry.lookupOrCreateConstructor(_typeNamedUint32));
module.exports.NamedUint64 = (vdl.registry.lookupOrCreateConstructor(_typeNamedUint64));
module.exports.NamedUnion = (vdl.registry.lookupOrCreateConstructor(_typeNamedUnion));
module.exports.NestedArgs = (vdl.registry.lookupOrCreateConstructor(_typeNestedArgs));
module.exports.Scalars = (vdl.registry.lookupOrCreateConstructor(_typeScalars));
module.exports.ScalarsArray = (vdl.registry.lookupOrCreateConstructor(_typeScalarsArray));




// Consts:

  module.exports.Cbool = canonicalize.reduce(new (vdl.registry.lookupOrCreateConstructor(vdl.types.BOOL))(true, true), vdl.types.BOOL);

  module.exports.Cbyte = canonicalize.reduce(new (vdl.registry.lookupOrCreateConstructor(vdl.types.BYTE))(1, true), vdl.types.BYTE);

  module.exports.Cint32 = canonicalize.reduce(new (vdl.registry.lookupOrCreateConstructor(vdl.types.INT32))(2, true), vdl.types.INT32);

  module.exports.Cint64 = canonicalize.reduce(new (vdl.registry.lookupOrCreateConstructor(vdl.types.INT64))(new vdl.BigInt(1, new Uint8Array([0x3])), true), vdl.types.INT64);

  module.exports.Cuint32 = canonicalize.reduce(new (vdl.registry.lookupOrCreateConstructor(vdl.types.UINT32))(4, true), vdl.types.UINT32);

  module.exports.Cuint64 = canonicalize.reduce(new (vdl.registry.lookupOrCreateConstructor(vdl.types.UINT64))(new vdl.BigInt(1, new Uint8Array([0x5])), true), vdl.types.UINT64);

  module.exports.Cfloat32 = canonicalize.reduce(new (vdl.registry.lookupOrCreateConstructor(vdl.types.FLOAT32))(6, true), vdl.types.FLOAT32);

  module.exports.Cfloat64 = canonicalize.reduce(new (vdl.registry.lookupOrCreateConstructor(vdl.types.FLOAT64))(7, true), vdl.types.FLOAT64);

  module.exports.CNamedBool = canonicalize.reduce(new (vdl.registry.lookupOrCreateConstructor(_typeNamedBool))(true, true), _typeNamedBool);

  module.exports.CNamedStruct = canonicalize.reduce(new (vdl.registry.lookupOrCreateConstructor(_typeNamedStruct))({
  'a': true,
  'b': "test",
  'c': 0,
}, true), _typeNamedStruct);

  module.exports.Ccomplex64 = canonicalize.reduce(new (vdl.registry.lookupOrCreateConstructor(vdl.types.COMPLEX64))(new vdl.Complex(8.000000, 9.000000), true), vdl.types.COMPLEX64);

  module.exports.Ccomplex128 = canonicalize.reduce(new (vdl.registry.lookupOrCreateConstructor(vdl.types.COMPLEX128))(new vdl.Complex(10.000000, 11.000000), true), vdl.types.COMPLEX128);

  module.exports.Cstring = canonicalize.reduce(new (vdl.registry.lookupOrCreateConstructor(vdl.types.STRING))("foo", true), vdl.types.STRING);

  module.exports.Cenum = canonicalize.reduce(new (vdl.registry.lookupOrCreateConstructor(_typeNamedEnum))('A', true), _typeNamedEnum);

  module.exports.Cunion = canonicalize.reduce(new (vdl.registry.lookupOrCreateConstructor(_typeNamedUnion))({ "a": true }, true), _typeNamedUnion);

  module.exports.Carray = canonicalize.reduce(new (vdl.registry.lookupOrCreateConstructor(_typeNamedArray))([
true,
false,
], true), _typeNamedArray);

  module.exports.Clist = canonicalize.reduce(new (vdl.registry.lookupOrCreateConstructor(_type11))([
1,
2,
3,
], true), _type11);

  module.exports.Cset = canonicalize.reduce(new (vdl.registry.lookupOrCreateConstructor(_type12))(new Set([
  1, 
  2, 
  3, ]), true), _type12);

  module.exports.cmap = canonicalize.reduce(new (vdl.registry.lookupOrCreateConstructor(_type13))(new Map([
  [1, "A"],
  [2, "B"],
  [3, "C"]]), true), _type13);

  module.exports.Cargs = canonicalize.reduce(new (vdl.registry.lookupOrCreateConstructor(_typeArgs))({
  'a': 1,
  'b': 2,
}, true), _typeArgs);

  module.exports.CScalars = canonicalize.reduce(new (vdl.registry.lookupOrCreateConstructor(_typeScalars))({
  'a0': true,
  'a1': 1,
  'a2': 2,
  'a3': 3,
  'a4': new vdl.BigInt(1, new Uint8Array([0x4])),
  'a5': 5,
  'a6': 6,
  'a7': new vdl.BigInt(1, new Uint8Array([0x7])),
  'a8': 8,
  'a9': 9,
  'a10': new vdl.Complex(10.000000, 0.000000),
  'a11': new vdl.Complex(11.000000, 0.000000),
  'a12': "abc",
  'a13': null,
  'a14': canonicalize.reduce(new (vdl.registry.lookupOrCreateConstructor(vdl.types.BOOL))(false, true), vdl.types.BOOL),
  'a15': vdl.types.BOOL,
  'b0': true,
  'b1': 1,
  'b2': 2,
  'b3': 3,
  'b4': new vdl.BigInt(1, new Uint8Array([0x4])),
  'b5': 5,
  'b6': 6,
  'b7': new vdl.BigInt(1, new Uint8Array([0x7])),
  'b8': 8,
  'b9': 9,
  'b10': new vdl.Complex(10.000000, 0.000000),
  'b11': new vdl.Complex(11.000000, 0.000000),
  'b12': "abc",
  'b13': 'B',
  'b14': { "c": 123 },
}, true), _typeScalars);

  module.exports.True = canonicalize.reduce(new (vdl.registry.lookupOrCreateConstructor(vdl.types.BOOL))(true, true), vdl.types.BOOL);

  module.exports.Foo = canonicalize.reduce(new (vdl.registry.lookupOrCreateConstructor(vdl.types.STRING))("foo", true), vdl.types.STRING);

  module.exports.Five = canonicalize.reduce(new (vdl.registry.lookupOrCreateConstructor(vdl.types.INT32))(5, true), vdl.types.INT32);

  module.exports.Six = canonicalize.reduce(new (vdl.registry.lookupOrCreateConstructor(vdl.types.UINT64))(new vdl.BigInt(1, new Uint8Array([0x6])), true), vdl.types.UINT64);

  module.exports.SixSquared = canonicalize.reduce(new (vdl.registry.lookupOrCreateConstructor(vdl.types.UINT64))(new vdl.BigInt(1, new Uint8Array([0x24])), true), vdl.types.UINT64);

  module.exports.FiveSquared = canonicalize.reduce(new (vdl.registry.lookupOrCreateConstructor(vdl.types.INT32))(25, true), vdl.types.INT32);

  module.exports.CTypeObject_bool = vdl.types.BOOL;

  module.exports.CTypeObject_string = vdl.types.STRING;

  module.exports.CTypeObject_bytes = _type14;

  module.exports.CTypeObject_byte = vdl.types.BYTE;

  module.exports.CTypeObject_uint16 = vdl.types.UINT16;

  module.exports.CTypeObject_int16 = vdl.types.INT16;

  module.exports.CTypeObject_float32 = vdl.types.FLOAT32;

  module.exports.CTypeObject_complex64 = vdl.types.COMPLEX64;

  module.exports.CTypeObject_enum = _typeNamedEnum;

  module.exports.CTypeObject_Array = _typeNamedArray;

  module.exports.CTypeObject_List = _type15;

  module.exports.CTypeObject_Set = _type16;

  module.exports.CTypeObject_Map = _type17;

  module.exports.CTypeObject_Struct = _typeScalars;

  module.exports.CTypeObject_Union = _typeNamedUnion;

  module.exports.CTypeObject_TypeObject = vdl.types.TYPEOBJECT;

  module.exports.CTypeObject_Any = vdl.types.ANY;



// Errors:

module.exports.NoParams1Error = makeError('v.io/x/ref/lib/vdl/testdata/base.NoParams1', actions.NO_RETRY, {
  'en': '{1:}{2:} en msg',
}, [
]);


module.exports.NoParams2Error = makeError('v.io/x/ref/lib/vdl/testdata/base.NoParams2', actions.RETRY_REFETCH, {
  'en': '{1:}{2:} en msg',
  'fr': '{1:}{2:} fr msg',
}, [
]);


module.exports.WithParams1Error = makeError('v.io/x/ref/lib/vdl/testdata/base.WithParams1', actions.NO_RETRY, {
  'en': '{1:}{2:} en x={3} y={4}',
}, [
  vdl.types.STRING,
  vdl.types.INT32,
]);


module.exports.WithParams2Error = makeError('v.io/x/ref/lib/vdl/testdata/base.WithParams2', actions.RETRY_REFETCH, {
  'en': '{1:}{2:} en x={3} y={4}',
  'fr': '{1:}{2:} fr y={4} x={3}',
}, [
  vdl.types.STRING,
  vdl.types.INT32,
]);


module.exports.notExportedError = makeError('v.io/x/ref/lib/vdl/testdata/base.notExported', actions.NO_RETRY, {
  'en': '{1:}{2:} en x={3} y={4}',
}, [
  vdl.types.STRING,
  vdl.types.INT32,
]);




// Services:

  
    
function ServiceA(){}
module.exports.ServiceA = ServiceA;

    
      
ServiceA.prototype.methodA1 = function(ctx, serverCall) {
  throw new Error('Method MethodA1 not implemented');
};
    
      
ServiceA.prototype.methodA2 = function(ctx, serverCall, a, b) {
  throw new Error('Method MethodA2 not implemented');
};
    
      
ServiceA.prototype.methodA3 = function(ctx, serverCall, a) {
  throw new Error('Method MethodA3 not implemented');
};
    
      
ServiceA.prototype.methodA4 = function(ctx, serverCall, a) {
  throw new Error('Method MethodA4 not implemented');
};
     

    
ServiceA.prototype._serviceDescription = {
  name: 'ServiceA',
  pkgPath: 'v.io/x/ref/lib/vdl/testdata/base',
  doc: "",
  embeds: [],
  methods: [
    
      
    {
    name: 'MethodA1',
    doc: "",
    inArgs: [],
    outArgs: [],
    inStream: null,
    outStream: null,
    tags: []
  },
    
      
    {
    name: 'MethodA2',
    doc: "",
    inArgs: [{
      name: 'a',
      doc: "",
      type: vdl.types.INT32
    },
    {
      name: 'b',
      doc: "",
      type: vdl.types.STRING
    },
    ],
    outArgs: [{
      name: 's',
      doc: "",
      type: vdl.types.STRING
    },
    ],
    inStream: null,
    outStream: null,
    tags: []
  },
    
      
    {
    name: 'MethodA3',
    doc: "",
    inArgs: [{
      name: 'a',
      doc: "",
      type: vdl.types.INT32
    },
    ],
    outArgs: [{
      name: 's',
      doc: "",
      type: vdl.types.STRING
    },
    ],
    inStream: null,
    outStream: {
      name: '',
      doc: '',
      type: _typeScalars
    },
    tags: [canonicalize.reduce(new (vdl.registry.lookupOrCreateConstructor(vdl.types.STRING))("tag", true), vdl.types.STRING), canonicalize.reduce(new (vdl.registry.lookupOrCreateConstructor(vdl.types.UINT64))(new vdl.BigInt(1, new Uint8Array([0x6])), true), vdl.types.UINT64), ]
  },
    
      
    {
    name: 'MethodA4',
    doc: "",
    inArgs: [{
      name: 'a',
      doc: "",
      type: vdl.types.INT32
    },
    ],
    outArgs: [],
    inStream: {
      name: '',
      doc: '',
      type: vdl.types.INT32
    },
    outStream: {
      name: '',
      doc: '',
      type: vdl.types.STRING
    },
    tags: []
  },
     
  ]
};

  
    
function ServiceB(){}
module.exports.ServiceB = ServiceB;

    
      
ServiceB.prototype.methodB1 = function(ctx, serverCall, a, b) {
  throw new Error('Method MethodB1 not implemented');
};
    
      
ServiceB.prototype.methodA1 = function(ctx, serverCall) {
  throw new Error('Method MethodA1 not implemented');
};
    
      
ServiceB.prototype.methodA2 = function(ctx, serverCall, a, b) {
  throw new Error('Method MethodA2 not implemented');
};
    
      
ServiceB.prototype.methodA3 = function(ctx, serverCall, a) {
  throw new Error('Method MethodA3 not implemented');
};
    
      
ServiceB.prototype.methodA4 = function(ctx, serverCall, a) {
  throw new Error('Method MethodA4 not implemented');
};
     

    
ServiceB.prototype._serviceDescription = {
  name: 'ServiceB',
  pkgPath: 'v.io/x/ref/lib/vdl/testdata/base',
  doc: "",
  embeds: [{
      name: 'ServiceA',
      pkgPath: 'v.io/x/ref/lib/vdl/testdata/base',
      doc: ""
    },
    ],
  methods: [
    
      
    {
    name: 'MethodB1',
    doc: "",
    inArgs: [{
      name: 'a',
      doc: "",
      type: _typeScalars
    },
    {
      name: 'b',
      doc: "",
      type: _typeComposites
    },
    ],
    outArgs: [{
      name: 'c',
      doc: "",
      type: _typeCompComp
    },
    ],
    inStream: null,
    outStream: null,
    tags: []
  },
    
      
    {
    name: 'MethodA1',
    doc: "",
    inArgs: [],
    outArgs: [],
    inStream: null,
    outStream: null,
    tags: []
  },
    
      
    {
    name: 'MethodA2',
    doc: "",
    inArgs: [{
      name: 'a',
      doc: "",
      type: vdl.types.INT32
    },
    {
      name: 'b',
      doc: "",
      type: vdl.types.STRING
    },
    ],
    outArgs: [{
      name: 's',
      doc: "",
      type: vdl.types.STRING
    },
    ],
    inStream: null,
    outStream: null,
    tags: []
  },
    
      
    {
    name: 'MethodA3',
    doc: "",
    inArgs: [{
      name: 'a',
      doc: "",
      type: vdl.types.INT32
    },
    ],
    outArgs: [{
      name: 's',
      doc: "",
      type: vdl.types.STRING
    },
    ],
    inStream: null,
    outStream: {
      name: '',
      doc: '',
      type: _typeScalars
    },
    tags: [canonicalize.reduce(new (vdl.registry.lookupOrCreateConstructor(vdl.types.STRING))("tag", true), vdl.types.STRING), canonicalize.reduce(new (vdl.registry.lookupOrCreateConstructor(vdl.types.UINT64))(new vdl.BigInt(1, new Uint8Array([0x6])), true), vdl.types.UINT64), ]
  },
    
      
    {
    name: 'MethodA4',
    doc: "",
    inArgs: [{
      name: 'a',
      doc: "",
      type: vdl.types.INT32
    },
    ],
    outArgs: [],
    inStream: {
      name: '',
      doc: '',
      type: vdl.types.INT32
    },
    outStream: {
      name: '',
      doc: '',
      type: vdl.types.STRING
    },
    tags: []
  },
     
  ]
};

   
 


