/**
 * @class
 * A class to represent DBus variants for both the client and service
 * interfaces. The {@link ProxyInterface} and [`Interface`]{@link
 * module:interface~Interface} methods, signals, and properties will use this
 * type to represent variant types. The user should use this class directly for
 * sending variants to methods if their signature expects the type to be a
 * variant.
 *
 * @example
 * let str = new Variant('s', 'hello');
 * let num = new Variant('d', 53);
 * let map = new Variant('a{ss}', { foo: 'bar' });
 * let list = new Variant('as', [ 'foo', 'bar' ]);
 */
class Variant {
  /**
  * Construct a new `Variant` with the given signature and value.
  * @param {string} signature - a DBus type signature for the `Variant`.
  * @param {any} value - the value of the `Variant` with type specified by the type signature.
  */
  constructor (signature, value) {
    this.signature = signature;
    this.value = value;
  }
}

module.exports = {
  Variant: Variant
};
