// 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.

/**
 * @summary Namespace vdl defines the Vanadium Definition Language type and
 * value system.
 *
 * @description
 * <p>Namespace vdl defines the Vanadium Definition Language type and value
 * system.</p>
 *
 * <p>VDL is an interface definition language designed to enable interoperation
 * between clients and servers executing in heterogeneous environments.  E.g. it
 * enables a frontend written in Javascript running on a phone to communicate
 * with a backend written in Go running on a server.  VDL is compiled into an
 * intermediate representation that is used to generate code in each target
 * environment.</p>
 *
 * <p>The concepts in VDL are similar to the concepts used in general-purpose
 * languages to specify interfaces and communication protocols.</p>
 *
 * @namespace
 * @name vdl
 * @memberof module:vanadium
 */
module.exports = {
  Kind: require('./kind'),
  Types: require('./types'),
  BigInt: require('./big-int'),
  /**
   * Namespace of utilities to canonicalize vdl types
   * for use in encoding and decoding values.
   * @namespace
   * @memberof module:vanadium.vdl
   */
  Canonicalize: require('./canonicalize'),
  Complex: require('./complex'),
  /**
   * Type registry that contains a mapping of vdl types
   * to constructors
   * @property {module:vanadium.vdl~Registry}
   * @memberof module:vanadium.vdl
   */
  Registry: require('./registry'),
  Type: require('./type'),
};

/**
 * @namespace
 * @name signature
 * @memberof module:vanadium.vdl
 */
module.exports.signature = require('../gen-vdl/v.io/v23/vdlroot/signature');
/**
 * @namespace
 * @name time
 * @memberof module:vanadium.vdl
 */
module.exports.time = require('../gen-vdl/v.io/v23/vdlroot/time');

require('./es6-shim.js'); // If necessary, adds ES6 Map, Set, etc.
