text: // source: ibc/lightclients/tendermint/v1/tendermint.proto
  /**
   * @fileoverview
   * @enhanceable
   * @suppress {missingRequire} reports error on implicit type usages.
   * @suppress {messageConventions} JS Compiler reports an error if a variable or
   *     field starts with 'MSG_' and isn't a translatable message.
   * @public
   */
  // GENERATED CODE -- DO NOT EDIT!
  /* eslint-disable */
  // @ts-nocheck
  
  var jspb = require('google-protobuf');
  var goog = jspb;
  var global = Function('return this')();
  
  var tendermint_types_validator_pb = require('../../../../tendermint/types/validator_pb.js');
  goog.object.extend(proto, tendermint_types_validator_pb);
  var tendermint_types_types_pb = require('../../../../tendermint/types/types_pb.js');
  goog.object.extend(proto, tendermint_types_types_pb);
  var confio_proofs_pb = require('../../../../confio/proofs_pb.js');
  goog.object.extend(proto, confio_proofs_pb);
  var google_protobuf_duration_pb = require('google-protobuf/google/protobuf/duration_pb.js');
  goog.object.extend(proto, google_protobuf_duration_pb);
  var google_protobuf_timestamp_pb = require('google-protobuf/google/protobuf/timestamp_pb.js');
  goog.object.extend(proto, google_protobuf_timestamp_pb);
  var ibc_core_client_v1_client_pb = require('../../../../ibc/core/client/v1/client_pb.js');
  goog.object.extend(proto, ibc_core_client_v1_client_pb);
  var ibc_core_commitment_v1_commitment_pb = require('../../../../ibc/core/commitment/v1/commitment_pb.js');
  goog.object.extend(proto, ibc_core_commitment_v1_commitment_pb);
  var gogoproto_gogo_pb = require('../../../../gogoproto/gogo_pb.js');
  goog.object.extend(proto, gogoproto_gogo_pb);
  goog.exportSymbol('proto.ibc.lightclients.tendermint.v1.ClientState', null, global);
  goog.exportSymbol('proto.ibc.lightclients.tendermint.v1.ConsensusState', null, global);
  goog.exportSymbol('proto.ibc.lightclients.tendermint.v1.Fraction', null, global);
  goog.exportSymbol('proto.ibc.lightclients.tendermint.v1.Header', null, global);
  goog.exportSymbol('proto.ibc.lightclients.tendermint.v1.Misbehaviour', null, global);
  /**
   * Generated by JsPbCodeGenerator.
   * @param {Array=} opt_data Optional initial data array, typically from a
   * server response, or constructed directly in Javascript. The array is used
   * in place and becomes part of the constructed object. It is not cloned.
   * If no data is provided, the constructed object will be empty, but still
   * valid.
   * @extends {jspb.Message}
   * @constructor
   */
  proto.ibc.lightclients.tendermint.v1.ClientState = function(opt_data) {
    jspb.Message.initialize(this, opt_data, 0, -1, proto.ibc.lightclients.tendermint.v1.ClientState.repeatedFields_, null);
  };
  goog.inherits(proto.ibc.lightclients.tendermint.v1.ClientState, jspb.Message);
  if (goog.DEBUG && !COMPILED) {
    /**
     * @public
     * @override
     */
    proto.ibc.lightclients.tendermint.v1.ClientState.displayName = 'proto.ibc.lightclients.tendermint.v1.ClientState';
  }
  /**
   * Generated by JsPbCodeGenerator.
   * @param {Array=} opt_data Optional initial data array, typically from a
   * server response, or constructed directly in Javascript. The array is used
   * in place and becomes part of the constructed object. It is not cloned.
   * If no data is provided, the constructed object will be empty, but still
   * valid.
   * @extends {jspb.Message}
   * @constructor
   */
  proto.ibc.lightclients.tendermint.v1.ConsensusState = function(opt_data) {
    jspb.Message.initialize(this, opt_data, 0, -1, null, null);
  };
  goog.inherits(proto.ibc.lightclients.tendermint.v1.ConsensusState, jspb.Message);
  if (goog.DEBUG && !COMPILED) {
    /**
     * @public
     * @override
     */
    proto.ibc.lightclients.tendermint.v1.ConsensusState.displayName = 'proto.ibc.lightclients.tendermint.v1.ConsensusState';
  }
  /**
   * Generated by JsPbCodeGenerator.
   * @param {Array=} opt_data Optional initial data array, typically from a
   * server response, or constructed directly in Javascript. The array is used
   * in place and becomes part of the constructed object. It is not cloned.
   * If no data is provided, the constructed object will be empty, but still
   * valid.
   * @extends {jspb.Message}
   * @constructor
   */
  proto.ibc.lightclients.tendermint.v1.Misbehaviour = function(opt_data) {
    jspb.Message.initialize(this, opt_data, 0, -1, null, null);
  };
  goog.inherits(proto.ibc.lightclients.tendermint.v1.Misbehaviour, jspb.Message);
  if (goog.DEBUG && !COMPILED) {
    /**
     * @public
     * @override
     */
    proto.ibc.lightclients.tendermint.v1.Misbehaviour.displayName = 'proto.ibc.lightclients.tendermint.v1.Misbehaviour';
  }
  /**
   * Generated by JsPbCodeGenerator.
   * @param {Array=} opt_data Optional initial data array, typically from a
   * server response, or constructed directly in Javascript. The array is used
   * in place and becomes part of the constructed object. It is not cloned.
   * If no data is provided, the constructed object will be empty, but still
   * valid.
   * @extends {jspb.Message}
   * @constructor
   */
  proto.ibc.lightclients.tendermint.v1.Header = function(opt_data) {
    jspb.Message.initialize(this, opt_data, 0, -1, null, null);
  };
  goog.inherits(proto.ibc.lightclients.tendermint.v1.Header, jspb.Message);
  if (goog.DEBUG && !COMPILED) {
    /**
     * @public
     * @override
     */
    proto.ibc.lightclients.tendermint.v1.Header.displayName = 'proto.ibc.lightclients.tendermint.v1.Header';
  }
  /**
   * Generated by JsPbCodeGenerator.
   * @param {Array=} opt_data Optional initial data array, typically from a
   * server response, or constructed directly in Javascript. The array is used
   * in place and becomes part of the constructed object. It is not cloned.
   * If no data is provided, the constructed object will be empty, but still
   * valid.
   * @extends {jspb.Message}
   * @constructor
   */
  proto.ibc.lightclients.tendermint.v1.Fraction = function(opt_data) {
    jspb.Message.initialize(this, opt_data, 0, -1, null, null);
  };
  goog.inherits(proto.ibc.lightclients.tendermint.v1.Fraction, jspb.Message);
  if (goog.DEBUG && !COMPILED) {
    /**
     * @public
     * @override
     */
    proto.ibc.lightclients.tendermint.v1.Fraction.displayName = 'proto.ibc.lightclients.tendermint.v1.Fraction';
  }
  
  /**
   * List of repeated fields within this message type.
   * @private {!Array<number>}
   * @const
   */
  proto.ibc.lightclients.tendermint.v1.ClientState.repeatedFields_ = [8,9];
  
  
  
  if (jspb.Message.GENERATE_TO_OBJECT) {
  /**
   * Creates an object representation of this proto.
   * Field names that are reserved in JavaScript and will be renamed to pb_name.
   * Optional fields that are not set will be set to undefined.
   * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
   * For the list of reserved names please see:
   *     net/proto2/compiler/js/internal/generator.cc#kKeyword.
   * @param {boolean=} opt_includeInstance Deprecated. whether to include the
   *     JSPB instance for transitional soy proto support:
   *     http://goto/soy-param-migration
   * @return {!Object}
   */
  proto.ibc.lightclients.tendermint.v1.ClientState.prototype.toObject = function(opt_includeInstance) {
    return proto.ibc.lightclients.tendermint.v1.ClientState.toObject(opt_includeInstance, this);
  };
  
  
  /**
   * Static version of the {@see toObject} method.
   * @param {boolean|undefined} includeInstance Deprecated. Whether to include
   *     the JSPB instance for transitional soy proto support:
   *     http://goto/soy-param-migration
   * @param {!proto.ibc.lightclients.tendermint.v1.ClientState} msg The msg instance to transform.
   * @return {!Object}
   * @suppress {unusedLocalVariables} f is only used for nested messages
   */
  proto.ibc.lightclients.tendermint.v1.ClientState.toObject = function(includeInstance, msg) {
    var f, obj = {
      chainId: jspb.Message.getFieldWithDefault(msg, 1, ""),
      trustLevel: (f = msg.getTrustLevel()) && proto.ibc.lightclients.tendermint.v1.Fraction.toObject(includeInstance, f),
      trustingPeriod: (f = msg.getTrustingPeriod()) && google_protobuf_duration_pb.Duration.toObject(includeInstance, f),
      unbondingPeriod: (f = msg.getUnbondingPeriod()) && google_protobuf_duration_pb.Duration.toObject(includeInstance, f),
      maxClockDrift: (f = msg.getMaxClockDrift()) && google_protobuf_duration_pb.Duration.toObject(includeInstance, f),
      frozenHeight: (f = msg.getFrozenHeight()) && ibc_core_client_v1_client_pb.Height.toObject(includeInstance, f),
      latestHeight: (f = msg.getLatestHeight()) && ibc_core_client_v1_client_pb.Height.toObject(includeInstance, f),
      proofSpecsList: jspb.Message.toObjectList(msg.getProofSpecsList(),
      confio_proofs_pb.ProofSpec.toObject, includeInstance),
      upgradePathList: (f = jspb.Message.getRepeatedField(msg, 9)) == null ? undefined : f,
      allowUpdateAfterExpiry: jspb.Message.getBooleanFieldWithDefault(msg, 10, false),
      allowUpdateAfterMisbehaviour: jspb.Message.getBooleanFieldWithDefault(msg, 11, false)
    };
  
    if (includeInstance) {
      obj.$jspbMessageInstance = msg;
    }
    return obj;
  };
  }
  
  
  /**
   * Deserializes binary data (in protobuf wire format).
   * @param {jspb.ByteSource} bytes The bytes to deserialize.
   * @return {!proto.ibc.lightclients.tendermint.v1.ClientState}
   */
  proto.ibc.lightclients.tendermint.v1.ClientState.deserializeBinary = function(bytes) {
    var reader = new jspb.BinaryReader(bytes);
    var msg = new proto.ibc.lightclients.tendermint.v1.ClientState;
    return proto.ibc.lightclients.tendermint.v1.ClientState.deserializeBinaryFromReader(msg, reader);
  };
  
  
  /**
   * Deserializes binary data (in protobuf wire format) from the
   * given reader into the given message object.
   * @param {!proto.ibc.lightclients.tendermint.v1.ClientState} msg The message object to deserialize into.
   * @param {!jspb.BinaryReader} reader The BinaryReader to use.
   * @return {!proto.ibc.lightclients.tendermint.v1.ClientState}
   */
  proto.ibc.lightclients.tendermint.v1.ClientState.deserializeBinaryFromReader = function(msg, reader) {
    while (reader.nextField()) {
      if (reader.isEndGroup()) {
        break;
      }
      var field = reader.getFieldNumber();
      switch (field) {
      case 1:
        var value = /** @type {string} */ (reader.readString());
        msg.setChainId(value);
        break;
      case 2:
        var value = new proto.ibc.lightclients.tendermint.v1.Fraction;
        reader.readMessage(value,proto.ibc.lightclients.tendermint.v1.Fraction.deserializeBinaryFromReader);
        msg.setTrustLevel(value);
        break;
      case 3:
        var value = new google_protobuf_duration_pb.Duration;
        reader.readMessage(value,google_protobuf_duration_pb.Duration.deserializeBinaryFromReader);
        msg.setTrustingPeriod(value);
        break;
      case 4:
        var value = new google_protobuf_duration_pb.Duration;
        reader.readMessage(value,google_protobuf_duration_pb.Duration.deserializeBinaryFromReader);
        msg.setUnbondingPeriod(value);
        break;
      case 5:
        var value = new google_protobuf_duration_pb.Duration;
        reader.readMessage(value,google_protobuf_duration_pb.Duration.deserializeBinaryFromReader);
        msg.setMaxClockDrift(value);
        break;
      case 6:
        var value = new ibc_core_client_v1_client_pb.Height;
        reader.readMessage(value,ibc_core_client_v1_client_pb.Height.deserializeBinaryFromReader);
        msg.setFrozenHeight(value);
        break;
      case 7:
        var value = new ibc_core_client_v1_client_pb.Height;
        reader.readMessage(value,ibc_core_client_v1_client_pb.Height.deserializeBinaryFromReader);
        msg.setLatestHeight(value);
        break;
      case 8:
        var value = new confio_proofs_pb.ProofSpec;
        reader.readMessage(value,confio_proofs_pb.ProofSpec.deserializeBinaryFromReader);
        msg.addProofSpecs(value);
        break;
      case 9:
        var value = /** @type {string} */ (reader.readString());
        msg.addUpgradePath(value);
        break;
      case 10:
        var value = /** @type {boolean} */ (reader.readBool());
        msg.setAllowUpdateAfterExpiry(value);
        break;
      case 11:
        var value = /** @type {boolean} */ (reader.readBool());
        msg.setAllowUpdateAfterMisbehaviour(value);
        break;
      default:
        reader.skipField();
        break;
      }
    }
    return msg;
  };
  
  
  /**
   * Serializes the message to binary data (in protobuf wire format).
   * @return {!Uint8Array}
   */
  proto.ibc.lightclients.tendermint.v1.ClientState.prototype.serializeBinary = function() {
    var writer = new jspb.BinaryWriter();
    proto.ibc.lightclients.tendermint.v1.ClientState.serializeBinaryToWriter(this, writer);
    return writer.getResultBuffer();
  };
  
  
  /**
   * Serializes the given message to binary data (in protobuf wire
   * format), writing to the given BinaryWriter.
   * @param {!proto.ibc.lightclients.tendermint.v1.ClientState} message
   * @param {!jspb.BinaryWriter} writer
   * @suppress {unusedLocalVariables} f is only used for nested messages
   */
  proto.ibc.lightclients.tendermint.v1.ClientState.serializeBinaryToWriter = function(message, writer) {
    var f = undefined;
    f = message.getChainId();
    if (f.length > 0) {
      writer.writeString(
        1,
        f
      );
    }
    f = message.getTrustLevel();
    if (f != null) {
      writer.writeMessage(
        2,
        f,
        proto.ibc.lightclients.tendermint.v1.Fraction.serializeBinaryToWriter
      );
    }
    f = message.getTrustingPeriod();
    if (f != null) {
      writer.writeMessage(
        3,
        f,
        google_protobuf_duration_pb.Duration.serializeBinaryToWriter
      );
    }
    f = message.getUnbondingPeriod();
    if (f != null) {
      writer.writeMessage(
        4,
        f,
        google_protobuf_duration_pb.Duration.serializeBinaryToWriter
      );
    }
    f = message.getMaxClockDrift();
    if (f != null) {
      writer.writeMessage(
        5,
        f,
        google_protobuf_duration_pb.Duration.serializeBinaryToWriter
      );
    }
    f = message.getFrozenHeight();
    if (f != null) {
      writer.writeMessage(
        6,
        f,
        ibc_core_client_v1_client_pb.Height.serializeBinaryToWriter
      );
    }
    f = message.getLatestHeight();
    if (f != null) {
      writer.writeMessage(
        7,
        f,
        ibc_core_client_v1_client_pb.Height.serializeBinaryToWriter
      );
    }
    f = message.getProofSpecsList();
    if (f.length > 0) {
      writer.writeRepeatedMessage(
        8,
        f,
        confio_proofs_pb.ProofSpec.serializeBinaryToWriter
      );
    }
    f = message.getUpgradePathList();
    if (f.length > 0) {
      writer.writeRepeatedString(
        9,
        f
      );
    }
    f = message.getAllowUpdateAfterExpiry();
    if (f) {
      writer.writeBool(
        10,
        f
      );
    }
    f = message.getAllowUpdateAfterMisbehaviour();
    if (f) {
      writer.writeBool(
        11,
        f
      );
    }
  };
  
  
  /**
   * optional string chain_id = 1;
   * @return {string}
   */
  proto.ibc.lightclients.tendermint.v1.ClientState.prototype.getChainId = function() {
    return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, ""));
  };
  
  
  /**
   * @param {string} value
   * @return {!proto.ibc.lightclients.tendermint.v1.ClientState} returns this
   */
  proto.ibc.lightclients.tendermint.v1.ClientState.prototype.setChainId = function(value) {
    return jspb.Message.setProto3StringField(this, 1, value);
  };
  
  
  /**
   * optional Fraction trust_level = 2;
   * @return {?proto.ibc.lightclients.tendermint.v1.Fraction}
   */
  proto.ibc.lightclients.tendermint.v1.ClientState.prototype.getTrustLevel = function() {
    return /** @type{?proto.ibc.lightclients.tendermint.v1.Fraction} */ (
      jspb.Message.getWrapperField(this, proto.ibc.lightclients.tendermint.v1.Fraction, 2));
  };
  
  
  /**
   * @param {?proto.ibc.lightclients.tendermint.v1.Fraction|undefined} value
   * @return {!proto.ibc.lightclients.tendermint.v1.ClientState} returns this
  */
  proto.ibc.lightclients.tendermint.v1.ClientState.prototype.setTrustLevel = function(value) {
    return jspb.Message.setWrapperField(this, 2, value);
  };
  
  
  /**
   * Clears the message field making it undefined.
   * @return {!proto.ibc.lightclients.tendermint.v1.ClientState} returns this
   */
  proto.ibc.lightclients.tendermint.v1.ClientState.prototype.clearTrustLevel = function() {
    return this.setTrustLevel(undefined);
  };
  
  
  /**
   * Returns whether this field is set.
   * @return {boolean}
   */
  proto.ibc.lightclients.tendermint.v1.ClientState.prototype.hasTrustLevel = function() {
    return jspb.Message.getField(this, 2) != null;
  };
  
  
  /**
   * optional google.protobuf.Duration trusting_period = 3;
   * @return {?proto.google.protobuf.Duration}
   */
  proto.ibc.lightclients.tendermint.v1.ClientState.prototype.getTrustingPeriod = function() {
    return /** @type{?proto.google.protobuf.Duration} */ (
      jspb.Message.getWrapperField(this, google_protobuf_duration_pb.Duration, 3));
  };
  
  
  /**
   * @param {?proto.google.protobuf.Duration|undefined} value
   * @return {!proto.ibc.lightclients.tendermint.v1.ClientState} returns this
  */
  proto.ibc.lightclients.tendermint.v1.ClientState.prototype.setTrustingPeriod = function(value) {
    return jspb.Message.setWrapperField(this, 3, value);
  };
  
  
  /**
   * Clears the message field making it undefined.
   * @return {!proto.ibc.lightclients.tendermint.v1.ClientState} returns this
   */
  proto.ibc.lightclients.tendermint.v1.ClientState.prototype.clearTrustingPeriod = function() {
    return this.setTrustingPeriod(undefined);
  };
  
  
  /**
   * Returns whether this field is set.
   * @return {boolean}
   */
  proto.ibc.lightclients.tendermint.v1.ClientState.prototype.hasTrustingPeriod = function() {
    return jspb.Message.getField(this, 3) != null;
  };
  
  
  /**
   * optional google.protobuf.Duration unbonding_period = 4;
   * @return {?proto.google.protobuf.Duration}
   */
  proto.ibc.lightclients.tendermint.v1.ClientState.prototype.getUnbondingPeriod = function() {
    return /** @type{?proto.google.protobuf.Duration} */ (
      jspb.Message.getWrapperField(this, google_protobuf_duration_pb.Duration, 4));
  };
  
  
  /**
   * @param {?proto.google.protobuf.Duration|undefined} value
   * @return {!proto.ibc.lightclients.tendermint.v1.ClientState} returns this
  */
  proto.ibc.lightclients.tendermint.v1.ClientState.prototype.setUnbondingPeriod = function(value) {
    return jspb.Message.setWrapperField(this, 4, value);
  };
  
  
  /**
   * Clears the message field making it undefined.
   * @return {!proto.ibc.lightclients.tendermint.v1.ClientState} returns this
   */
  proto.ibc.lightclients.tendermint.v1.ClientState.prototype.clearUnbondingPeriod = function() {
    return this.setUnbondingPeriod(undefined);
  };
  
  
  /**
   * Returns whether this field is set.
   * @return {boolean}
   */
  proto.ibc.lightclients.tendermint.v1.ClientState.prototype.hasUnbondingPeriod = function() {
    return jspb.Message.getField(this, 4) != null;
  };
  
  
  /**
   * optional google.protobuf.Duration max_clock_drift = 5;
   * @return {?proto.google.protobuf.Duration}
   */
  proto.ibc.lightclients.tendermint.v1.ClientState.prototype.getMaxClockDrift = function() {
    return /** @type{?proto.google.protobuf.Duration} */ (
      jspb.Message.getWrapperField(this, google_protobuf_duration_pb.Duration, 5));
  };
  
  
  /**
   * @param {?proto.google.protobuf.Duration|undefined} value
   * @return {!proto.ibc.lightclients.tendermint.v1.ClientState} returns this
  */
  proto.ibc.lightclients.tendermint.v1.ClientState.prototype.setMaxClockDrift = function(value) {
    return jspb.Message.setWrapperField(this, 5, value);
  };
  
  
  /**
   * Clears the message field making it undefined.
   * @return {!proto.ibc.lightclients.tendermint.v1.ClientState} returns this
   */
  proto.ibc.lightclients.tendermint.v1.ClientState.prototype.clearMaxClockDrift = function() {
    return this.setMaxClockDrift(undefined);
  };
  
  
  /**
   * Returns whether this field is set.
   * @return {boolean}
   */
  proto.ibc.lightclients.tendermint.v1.ClientState.prototype.hasMaxClockDrift = function() {
    return jspb.Message.getField(this, 5) != null;
  };
  
  
  /**
   * optional ibc.core.client.v1.Height frozen_height = 6;
   * @return {?proto.ibc.core.client.v1.Height}
   */
  proto.ibc.lightclients.tendermint.v1.ClientState.prototype.getFrozenHeight = function() {
    return /** @type{?proto.ibc.core.client.v1.Height} */ (
      jspb.Message.getWrapperField(this, ibc_core_client_v1_client_pb.Height, 6));
  };
  
  
  /**
   * @param {?proto.ibc.core.client.v1.Height|undefined} value
   * @return {!proto.ibc.lightclients.tendermint.v1.ClientState} returns this
  */
  proto.ibc.lightclients.tendermint.v1.ClientState.prototype.setFrozenHeight = function(value) {
    return jspb.Message.setWrapperField(this, 6, value);
  };
  
  
  /**
   * Clears the message field making it undefined.
   * @return {!proto.ibc.lightclients.tendermint.v1.ClientState} returns this
   */
  proto.ibc.lightclients.tendermint.v1.ClientState.prototype.clearFrozenHeight = function() {
    return this.setFrozenHeight(undefined);
  };
  
  
  /**
   * Returns whether this field is set.
   * @return {boolean}
   */
  proto.ibc.lightclients.tendermint.v1.ClientState.prototype.hasFrozenHeight = function() {
    return jspb.Message.getField(this, 6) != null;
  };
  
  
  /**
   * optional ibc.core.client.v1.Height latest_height = 7;
   * @return {?proto.ibc.core.client.v1.Height}
   */
  proto.ibc.lightclients.tendermint.v1.ClientState.prototype.getLatestHeight = function() {
    return /** @type{?proto.ibc.core.client.v1.Height} */ (
      jspb.Message.getWrapperField(this, ibc_core_client_v1_client_pb.Height, 7));
  };
  
  
  /**
   * @param {?proto.ibc.core.client.v1.Height|undefined} value
   * @return {!proto.ibc.lightclients.tendermint.v1.ClientState} returns this
  */
  proto.ibc.lightclients.tendermint.v1.ClientState.prototype.setLatestHeight = function(value) {
    return jspb.Message.setWrapperField(this, 7, value);
  };
  
  
  /**
   * Clears the message field making it undefined.
   * @return {!proto.ibc.lightclients.tendermint.v1.ClientState} returns this
   */
  proto.ibc.lightclients.tendermint.v1.ClientState.prototype.clearLatestHeight = function() {
    return this.setLatestHeight(undefined);
  };
  
  
  /**
   * Returns whether this field is set.
   * @return {boolean}
   */
  proto.ibc.lightclients.tendermint.v1.ClientState.prototype.hasLatestHeight = function() {
    return jspb.Message.getField(this, 7) != null;
  };
  
  
  /**
   * repeated ics23.ProofSpec proof_specs = 8;
   * @return {!Array<!proto.ics23.ProofSpec>}
   */
  proto.ibc.lightclients.tendermint.v1.ClientState.prototype.getProofSpecsList = function() {
    return /** @type{!Array<!proto.ics23.ProofSpec>} */ (
      jspb.Message.getRepeatedWrapperField(this, confio_proofs_pb.ProofSpec, 8));
  };
  
  
  /**
   * @param {!Array<!proto.ics23.ProofSpec>} value
   * @return {!proto.ibc.lightclients.tendermint.v1.ClientState} returns this
  */
  proto.ibc.lightclients.tendermint.v1.ClientState.prototype.setProofSpecsList = function(value) {
    return jspb.Message.setRepeatedWrapperField(this, 8, value);
  };
  
  
  /**
   * @param {!proto.ics23.ProofSpec=} opt_value
   * @param {number=} opt_index
   * @return {!proto.ics23.ProofSpec}
   */
  proto.ibc.lightclients.tendermint.v1.ClientState.prototype.addProofSpecs = function(opt_value, opt_index) {
    return jspb.Message.addToRepeatedWrapperField(this, 8, opt_value, proto.ics23.ProofSpec, opt_index);
  };
  
  
  /**
   * Clears the list making it empty but non-null.
   * @return {!proto.ibc.lightclients.tendermint.v1.ClientState} returns this
   */
  proto.ibc.lightclients.tendermint.v1.ClientState.prototype.clearProofSpecsList = function() {
    return this.setProofSpecsList([]);
  };
  
  
  /**
   * repeated string upgrade_path = 9;
   * @return {!Array<string>}
   */
  proto.ibc.lightclients.tendermint.v1.ClientState.prototype.getUpgradePathList = function() {
    return /** @type {!Array<string>} */ (jspb.Message.getRepeatedField(this, 9));
  };
  
  
  /**
   * @param {!Array<string>} value
   * @return {!proto.ibc.lightclients.tendermint.v1.ClientState} returns this
   */
  proto.ibc.lightclients.tendermint.v1.ClientState.prototype.setUpgradePathList = function(value) {
    return jspb.Message.setField(this, 9, value || []);
  };
  
  
  /**
   * @param {string} value
   * @param {number=} opt_index
   * @return {!proto.ibc.lightclients.tendermint.v1.ClientState} returns this
   */
  proto.ibc.lightclients.tendermint.v1.ClientState.prototype.addUpgradePath = function(value, opt_index) {
    return jspb.Message.addToRepeatedField(this, 9, value, opt_index);
  };
  
  
  /**
   * Clears the list making it empty but non-null.
   * @return {!proto.ibc.lightclients.tendermint.v1.ClientState} returns this
   */
  proto.ibc.lightclients.tendermint.v1.ClientState.prototype.clearUpgradePathList = function() {
    return this.setUpgradePathList([]);
  };
  
  
  /**
   * optional bool allow_update_after_expiry = 10;
   * @return {boolean}
   */
  proto.ibc.lightclients.tendermint.v1.ClientState.prototype.getAllowUpdateAfterExpiry = function() {
    return /** @type {boolean} */ (jspb.Message.getBooleanFieldWithDefault(this, 10, false));
  };
  
  
  /**
   * @param {boolean} value
   * @return {!proto.ibc.lightclients.tendermint.v1.ClientState} returns this
   */
  proto.ibc.lightclients.tendermint.v1.ClientState.prototype.setAllowUpdateAfterExpiry = function(value) {
    return jspb.Message.setProto3BooleanField(this, 10, value);
  };
  
  
  /**
   * optional bool allow_update_after_misbehaviour = 11;
   * @return {boolean}
   */
  proto.ibc.lightclients.tendermint.v1.ClientState.prototype.getAllowUpdateAfterMisbehaviour = function() {
    return /** @type {boolean} */ (jspb.Message.getBooleanFieldWithDefault(this, 11, false));
  };
  
  
  /**
   * @param {boolean} value
   * @return {!proto.ibc.lightclients.tendermint.v1.ClientState} returns this
   */
  proto.ibc.lightclients.tendermint.v1.ClientState.prototype.setAllowUpdateAfterMisbehaviour = function(value) {
    return jspb.Message.setProto3BooleanField(this, 11, value);
  };
  
  
  
  
  
  if (jspb.Message.GENERATE_TO_OBJECT) {
  /**
   * Creates an object representation of this proto.
   * Field names that are reserved in JavaScript and will be renamed to pb_name.
   * Optional fields that are not set will be set to undefined.
   * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
   * For the list of reserved names please see:
   *     net/proto2/compiler/js/internal/generator.cc#kKeyword.
   * @param {boolean=} opt_includeInstance Deprecated. whether to include the
   *     JSPB instance for transitional soy proto support:
   *     http://goto/soy-param-migration
   * @return {!Object}
   */
  proto.ibc.lightclients.tendermint.v1.ConsensusState.prototype.toObject = function(opt_includeInstance) {
    return proto.ibc.lightclients.tendermint.v1.ConsensusState.toObject(opt_includeInstance, this);
  };
  
  
  /**
   * Static version of the {@see toObject} method.
   * @param {boolean|undefined} includeInstance Deprecated. Whether to include
   *     the JSPB instance for transitional soy proto support:
   *     http://goto/soy-param-migration
   * @param {!proto.ibc.lightclients.tendermint.v1.ConsensusState} msg The msg instance to transform.
   * @return {!Object}
   * @suppress {unusedLocalVariables} f is only used for nested messages
   */
  proto.ibc.lightclients.tendermint.v1.ConsensusState.toObject = function(includeInstance, msg) {
    var f, obj = {
      timestamp: (f = msg.getTimestamp()) && google_protobuf_timestamp_pb.Timestamp.toObject(includeInstance, f),
      root: (f = msg.getRoot()) && ibc_core_commitment_v1_commitment_pb.MerkleRoot.toObject(includeInstance, f),
      nextValidatorsHash: msg.getNextValidatorsHash_asB64()
    };
  
    if (includeInstance) {
      obj.$jspbMessageInstance = msg;
    }
    return obj;
  };
  }
  
  
  /**
   * Deserializes binary data (in protobuf wire format).
   * @param {jspb.ByteSource} bytes The bytes to deserialize.
   * @return {!proto.ibc.lightclients.tendermint.v1.ConsensusState}
   */
  proto.ibc.lightclients.tendermint.v1.ConsensusState.deserializeBinary = function(bytes) {
    var reader = new jspb.BinaryReader(bytes);
    var msg = new proto.ibc.lightclients.tendermint.v1.ConsensusState;
    return proto.ibc.lightclients.tendermint.v1.ConsensusState.deserializeBinaryFromReader(msg, reader);
  };
  
  
  /**
   * Deserializes binary data (in protobuf wire format) from the
   * given reader into the given message object.
   * @param {!proto.ibc.lightclients.tendermint.v1.ConsensusState} msg The message object to deserialize into.
   * @param {!jspb.BinaryReader} reader The BinaryReader to use.
   * @return {!proto.ibc.lightclients.tendermint.v1.ConsensusState}
   */
  proto.ibc.lightclients.tendermint.v1.ConsensusState.deserializeBinaryFromReader = function(msg, reader) {
    while (reader.nextField()) {
      if (reader.isEndGroup()) {
        break;
      }
      var field = reader.getFieldNumber();
      switch (field) {
      case 1:
        var value = new google_protobuf_timestamp_pb.Timestamp;
        reader.readMessage(value,google_protobuf_timestamp_pb.Timestamp.deserializeBinaryFromReader);
        msg.setTimestamp(value);
        break;
      case 2:
        var value = new ibc_core_commitment_v1_commitment_pb.MerkleRoot;
        reader.readMessage(value,ibc_core_commitment_v1_commitment_pb.MerkleRoot.deserializeBinaryFromReader);
        msg.setRoot(value);
        break;
      case 3:
        var value = /** @type {!Uint8Array} */ (reader.readBytes());
        msg.setNextValidatorsHash(value);
        break;
      default:
        reader.skipField();
        break;
      }
    }
    return msg;
  };
  
  
  /**
   * Serializes the message to binary data (in protobuf wire format).
   * @return {!Uint8Array}
   */
  proto.ibc.lightclients.tendermint.v1.ConsensusState.prototype.serializeBinary = function() {
    var writer = new jspb.BinaryWriter();
    proto.ibc.lightclients.tendermint.v1.ConsensusState.serializeBinaryToWriter(this, writer);
    return writer.getResultBuffer();
  };
  
  
  /**
   * Serializes the given message to binary data (in protobuf wire
   * format), writing to the given BinaryWriter.
   * @param {!proto.ibc.lightclients.tendermint.v1.ConsensusState} message
   * @param {!jspb.BinaryWriter} writer
   * @suppress {unusedLocalVariables} f is only used for nested messages
   */
  proto.ibc.lightclients.tendermint.v1.ConsensusState.serializeBinaryToWriter = function(message, writer) {
    var f = undefined;
    f = message.getTimestamp();
    if (f != null) {
      writer.writeMessage(
        1,
        f,
        google_protobuf_timestamp_pb.Timestamp.serializeBinaryToWriter
      );
    }
    f = message.getRoot();
    if (f != null) {
      writer.writeMessage(
        2,
        f,
        ibc_core_commitment_v1_commitment_pb.MerkleRoot.serializeBinaryToWriter
      );
    }
    f = message.getNextValidatorsHash_asU8();
    if (f.length > 0) {
      writer.writeBytes(
        3,
        f
      );
    }
  };
  
  
  /**
   * optional google.protobuf.Timestamp timestamp = 1;
   * @return {?proto.google.protobuf.Timestamp}
   */
  proto.ibc.lightclients.tendermint.v1.ConsensusState.prototype.getTimestamp = function() {
    return /** @type{?proto.google.protobuf.Timestamp} */ (
      jspb.Message.getWrapperField(this, google_protobuf_timestamp_pb.Timestamp, 1));
  };
  
  
  /**
   * @param {?proto.google.protobuf.Timestamp|undefined} value
   * @return {!proto.ibc.lightclients.tendermint.v1.ConsensusState} returns this
  */
  proto.ibc.lightclients.tendermint.v1.ConsensusState.prototype.setTimestamp = function(value) {
    return jspb.Message.setWrapperField(this, 1, value);
  };
  
  
  /**
   * Clears the message field making it undefined.
   * @return {!proto.ibc.lightclients.tendermint.v1.ConsensusState} returns this
   */
  proto.ibc.lightclients.tendermint.v1.ConsensusState.prototype.clearTimestamp = function() {
    return this.setTimestamp(undefined);
  };
  
  
  /**
   * Returns whether this field is set.
   * @return {boolean}
   */
  proto.ibc.lightclients.tendermint.v1.ConsensusState.prototype.hasTimestamp = function() {
    return jspb.Message.getField(this, 1) != null;
  };
  
  
  /**
   * optional ibc.core.commitment.v1.MerkleRoot root = 2;
   * @return {?proto.ibc.core.commitment.v1.MerkleRoot}
   */
  proto.ibc.lightclients.tendermint.v1.ConsensusState.prototype.getRoot = function() {
    return /** @type{?proto.ibc.core.commitment.v1.MerkleRoot} */ (
      jspb.Message.getWrapperField(this, ibc_core_commitment_v1_commitment_pb.MerkleRoot, 2));
  };
  
  
  /**
   * @param {?proto.ibc.core.commitment.v1.MerkleRoot|undefined} value
   * @return {!proto.ibc.lightclients.tendermint.v1.ConsensusState} returns this
  */
  proto.ibc.lightclients.tendermint.v1.ConsensusState.prototype.setRoot = function(value) {
    return jspb.Message.setWrapperField(this, 2, value);
  };
  
  
  /**
   * Clears the message field making it undefined.
   * @return {!proto.ibc.lightclients.tendermint.v1.ConsensusState} returns this
   */
  proto.ibc.lightclients.tendermint.v1.ConsensusState.prototype.clearRoot = function() {
    return this.setRoot(undefined);
  };
  
  
  /**
   * Returns whether this field is set.
   * @return {boolean}
   */
  proto.ibc.lightclients.tendermint.v1.ConsensusState.prototype.hasRoot = function() {
    return jspb.Message.getField(this, 2) != null;
  };
  
  
  /**
   * optional bytes next_validators_hash = 3;
   * @return {!(string|Uint8Array)}
   */
  proto.ibc.lightclients.tendermint.v1.ConsensusState.prototype.getNextValidatorsHash = function() {
    return /** @type {!(string|Uint8Array)} */ (jspb.Message.getFieldWithDefault(this, 3, ""));
  };
  
  
  /**
   * optional bytes next_validators_hash = 3;
   * This is a type-conversion wrapper around `getNextValidatorsHash()`
   * @return {string}
   */
  proto.ibc.lightclients.tendermint.v1.ConsensusState.prototype.getNextValidatorsHash_asB64 = function() {
    return /** @type {string} */ (jspb.Message.bytesAsB64(
        this.getNextValidatorsHash()));
  };
  
  
  /**
   * optional bytes next_validators_hash = 3;
   * Note that Uint8Array is not supported on all browsers.
   * @see http://caniuse.com/Uint8Array
   * This is a type-conversion wrapper around `getNextValidatorsHash()`
   * @return {!Uint8Array}
   */
  proto.ibc.lightclients.tendermint.v1.ConsensusState.prototype.getNextValidatorsHash_asU8 = function() {
    return /** @type {!Uint8Array} */ (jspb.Message.bytesAsU8(
        this.getNextValidatorsHash()));
  };
  
  
  /**
   * @param {!(string|Uint8Array)} value
   * @return {!proto.ibc.lightclients.tendermint.v1.ConsensusState} returns this
   */
  proto.ibc.lightclients.tendermint.v1.ConsensusState.prototype.setNextValidatorsHash = function(value) {
    return jspb.Message.setProto3BytesField(this, 3, value);
  };
  
  
  
  
  
  if (jspb.Message.GENERATE_TO_OBJECT) {
  /**
   * Creates an object representation of this proto.
   * Field names that are reserved in JavaScript and will be renamed to pb_name.
   * Optional fields that are not set will be set to undefined.
   * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
   * For the list of reserved names please see:
   *     net/proto2/compiler/js/internal/generator.cc#kKeyword.
   * @param {boolean=} opt_includeInstance Deprecated. whether to include the
   *     JSPB instance for transitional soy proto support:
   *     http://goto/soy-param-migration
   * @return {!Object}
   */
  proto.ibc.lightclients.tendermint.v1.Misbehaviour.prototype.toObject = function(opt_includeInstance) {
    return proto.ibc.lightclients.tendermint.v1.Misbehaviour.toObject(opt_includeInstance, this);
  };
  
  
  /**
   * Static version of the {@see toObject} method.
   * @param {boolean|undefined} includeInstance Deprecated. Whether to include
   *     the JSPB instance for transitional soy proto support:
   *     http://goto/soy-param-migration
   * @param {!proto.ibc.lightclients.tendermint.v1.Misbehaviour} msg The msg instance to transform.
   * @return {!Object}
   * @suppress {unusedLocalVariables} f is only used for nested messages
   */
  proto.ibc.lightclients.tendermint.v1.Misbehaviour.toObject = function(includeInstance, msg) {
    var f, obj = {
      clientId: jspb.Message.getFieldWithDefault(msg, 1, ""),
      header1: (f = msg.getHeader1()) && proto.ibc.lightclients.tendermint.v1.Header.toObject(includeInstance, f),
      header2: (f = msg.getHeader2()) && proto.ibc.lightclients.tendermint.v1.Header.toObject(includeInstance, f)
    };
  
    if (includeInstance) {
      obj.$jspbMessageInstance = msg;
    }
    return obj;
  };
  }
  
  
  /**
   * Deserializes binary data (in protobuf wire format).
   * @param {jspb.ByteSource} bytes The bytes to deserialize.
   * @return {!proto.ibc.lightclients.tendermint.v1.Misbehaviour}
   */
  proto.ibc.lightclients.tendermint.v1.Misbehaviour.deserializeBinary = function(bytes) {
    var reader = new jspb.BinaryReader(bytes);
    var msg = new proto.ibc.lightclients.tendermint.v1.Misbehaviour;
    return proto.ibc.lightclients.tendermint.v1.Misbehaviour.deserializeBinaryFromReader(msg, reader);
  };
  
  
  /**
   * Deserializes binary data (in protobuf wire format) from the
   * given reader into the given message object.
   * @param {!proto.ibc.lightclients.tendermint.v1.Misbehaviour} msg The message object to deserialize into.
   * @param {!jspb.BinaryReader} reader The BinaryReader to use.
   * @return {!proto.ibc.lightclients.tendermint.v1.Misbehaviour}
   */
  proto.ibc.lightclients.tendermint.v1.Misbehaviour.deserializeBinaryFromReader = function(msg, reader) {
    while (reader.nextField()) {
      if (reader.isEndGroup()) {
        break;
      }
      var field = reader.getFieldNumber();
      switch (field) {
      case 1:
        var value = /** @type {string} */ (reader.readString());
        msg.setClientId(value);
        break;
      case 2:
        var value = new proto.ibc.lightclients.tendermint.v1.Header;
        reader.readMessage(value,proto.ibc.lightclients.tendermint.v1.Header.deserializeBinaryFromReader);
        msg.setHeader1(value);
        break;
      case 3:
        var value = new proto.ibc.lightclients.tendermint.v1.Header;
        reader.readMessage(value,proto.ibc.lightclients.tendermint.v1.Header.deserializeBinaryFromReader);
        msg.setHeader2(value);
        break;
      default:
        reader.skipField();
        break;
      }
    }
    return msg;
  };
  
  
  /**
   * Serializes the message to binary data (in protobuf wire format).
   * @return {!Uint8Array}
   */
  proto.ibc.lightclients.tendermint.v1.Misbehaviour.prototype.serializeBinary = function() {
    var writer = new jspb.BinaryWriter();
    proto.ibc.lightclients.tendermint.v1.Misbehaviour.serializeBinaryToWriter(this, writer);
    return writer.getResultBuffer();
  };
  
  
  /**
   * Serializes the given message to binary data (in protobuf wire
   * format), writing to the given BinaryWriter.
   * @param {!proto.ibc.lightclients.tendermint.v1.Misbehaviour} message
   * @param {!jspb.BinaryWriter} writer
   * @suppress {unusedLocalVariables} f is only used for nested messages
   */
  proto.ibc.lightclients.tendermint.v1.Misbehaviour.serializeBinaryToWriter = function(message, writer) {
    var f = undefined;
    f = message.getClientId();
    if (f.length > 0) {
      writer.writeString(
        1,
        f
      );
    }
    f = message.getHeader1();
    if (f != null) {
      writer.writeMessage(
        2,
        f,
        proto.ibc.lightclients.tendermint.v1.Header.serializeBinaryToWriter
      );
    }
    f = message.getHeader2();
    if (f != null) {
      writer.writeMessage(
        3,
        f,
        proto.ibc.lightclients.tendermint.v1.Header.serializeBinaryToWriter
      );
    }
  };
  
  
  /**
   * optional string client_id = 1;
   * @return {string}
   */
  proto.ibc.lightclients.tendermint.v1.Misbehaviour.prototype.getClientId = function() {
    return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, ""));
  };
  
  
  /**
   * @param {string} value
   * @return {!proto.ibc.lightclients.tendermint.v1.Misbehaviour} returns this
   */
  proto.ibc.lightclients.tendermint.v1.Misbehaviour.prototype.setClientId = function(value) {
    return jspb.Message.setProto3StringField(this, 1, value);
  };
  
  
  /**
   * optional Header header_1 = 2;
   * @return {?proto.ibc.lightclients.tendermint.v1.Header}
   */
  proto.ibc.lightclients.tendermint.v1.Misbehaviour.prototype.getHeader1 = function() {
    return /** @type{?proto.ibc.lightclients.tendermint.v1.Header} */ (
      jspb.Message.getWrapperField(this, proto.ibc.lightclients.tendermint.v1.Header, 2));
  };
  
  
  /**
   * @param {?proto.ibc.lightclients.tendermint.v1.Header|undefined} value
   * @return {!proto.ibc.lightclients.tendermint.v1.Misbehaviour} returns this
  */
  proto.ibc.lightclients.tendermint.v1.Misbehaviour.prototype.setHeader1 = function(value) {
    return jspb.Message.setWrapperField(this, 2, value);
  };
  
  
  /**
   * Clears the message field making it undefined.
   * @return {!proto.ibc.lightclients.tendermint.v1.Misbehaviour} returns this
   */
  proto.ibc.lightclients.tendermint.v1.Misbehaviour.prototype.clearHeader1 = function() {
    return this.setHeader1(undefined);
  };
  
  
  /**
   * Returns whether this field is set.
   * @return {boolean}
   */
  proto.ibc.lightclients.tendermint.v1.Misbehaviour.prototype.hasHeader1 = function() {
    return jspb.Message.getField(this, 2) != null;
  };
  
  
  /**
   * optional Header header_2 = 3;
   * @return {?proto.ibc.lightclients.tendermint.v1.Header}
   */
  proto.ibc.lightclients.tendermint.v1.Misbehaviour.prototype.getHeader2 = function() {
    return /** @type{?proto.ibc.lightclients.tendermint.v1.Header} */ (
      jspb.Message.getWrapperField(this, proto.ibc.lightclients.tendermint.v1.Header, 3));
  };
  
  
  /**
   * @param {?proto.ibc.lightclients.tendermint.v1.Header|undefined} value
   * @return {!proto.ibc.lightclients.tendermint.v1.Misbehaviour} returns this
  */
  proto.ibc.lightclients.tendermint.v1.Misbehaviour.prototype.setHeader2 = function(value) {
    return jspb.Message.setWrapperField(this, 3, value);
  };
  
  
  /**
   * Clears the message field making it undefined.
   * @return {!proto.ibc.lightclients.tendermint.v1.Misbehaviour} returns this
   */
  proto.ibc.lightclients.tendermint.v1.Misbehaviour.prototype.clearHeader2 = function() {
    return this.setHeader2(undefined);
  };
  
  
  /**
   * Returns whether this field is set.
   * @return {boolean}
   */
  proto.ibc.lightclients.tendermint.v1.Misbehaviour.prototype.hasHeader2 = function() {
    return jspb.Message.getField(this, 3) != null;
  };
  
  
  
  
  
  if (jspb.Message.GENERATE_TO_OBJECT) {
  /**
   * Creates an object representation of this proto.
   * Field names that are reserved in JavaScript and will be renamed to pb_name.
   * Optional fields that are not set will be set to undefined.
   * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
   * For the list of reserved names please see:
   *     net/proto2/compiler/js/internal/generator.cc#kKeyword.
   * @param {boolean=} opt_includeInstance Deprecated. whether to include the
   *     JSPB instance for transitional soy proto support:
   *     http://goto/soy-param-migration
   * @return {!Object}
   */
  proto.ibc.lightclients.tendermint.v1.Header.prototype.toObject = function(opt_includeInstance) {
    return proto.ibc.lightclients.tendermint.v1.Header.toObject(opt_includeInstance, this);
  };
  
  
  /**
   * Static version of the {@see toObject} method.
   * @param {boolean|undefined} includeInstance Deprecated. Whether to include
   *     the JSPB instance for transitional soy proto support:
   *     http://goto/soy-param-migration
   * @param {!proto.ibc.lightclients.tendermint.v1.Header} msg The msg instance to transform.
   * @return {!Object}
   * @suppress {unusedLocalVariables} f is only used for nested messages
   */
  proto.ibc.lightclients.tendermint.v1.Header.toObject = function(includeInstance, msg) {
    var f, obj = {
      signedHeader: (f = msg.getSignedHeader()) && tendermint_types_types_pb.SignedHeader.toObject(includeInstance, f),
      validatorSet: (f = msg.getValidatorSet()) && tendermint_types_validator_pb.ValidatorSet.toObject(includeInstance, f),
      trustedHeight: (f = msg.getTrustedHeight()) && ibc_core_client_v1_client_pb.Height.toObject(includeInstance, f),
      trustedValidators: (f = msg.getTrustedValidators()) && tendermint_types_validator_pb.ValidatorSet.toObject(includeInstance, f)
    };
  
    if (includeInstance) {
      obj.$jspbMessageInstance = msg;
    }
    return obj;
  };
  }
  
  
  /**
   * Deserializes binary data (in protobuf wire format).
   * @param {jspb.ByteSource} bytes The bytes to deserialize.
   * @return {!proto.ibc.lightclients.tendermint.v1.Header}
   */
  proto.ibc.lightclients.tendermint.v1.Header.deserializeBinary = function(bytes) {
    var reader = new jspb.BinaryReader(bytes);
    var msg = new proto.ibc.lightclients.tendermint.v1.Header;
    return proto.ibc.lightclients.tendermint.v1.Header.deserializeBinaryFromReader(msg, reader);
  };
  
  
  /**
   * Deserializes binary data (in protobuf wire format) from the
   * given reader into the given message object.
   * @param {!proto.ibc.lightclients.tendermint.v1.Header} msg The message object to deserialize into.
   * @param {!jspb.BinaryReader} reader The BinaryReader to use.
   * @return {!proto.ibc.lightclients.tendermint.v1.Header}
   */
  proto.ibc.lightclients.tendermint.v1.Header.deserializeBinaryFromReader = function(msg, reader) {
    while (reader.nextField()) {
      if (reader.isEndGroup()) {
        break;
      }
      var field = reader.getFieldNumber();
      switch (field) {
      case 1:
        var value = new tendermint_types_types_pb.SignedHeader;
        reader.readMessage(value,tendermint_types_types_pb.SignedHeader.deserializeBinaryFromReader);
        msg.setSignedHeader(value);
        break;
      case 2:
        var value = new tendermint_types_validator_pb.ValidatorSet;
        reader.readMessage(value,tendermint_types_validator_pb.ValidatorSet.deserializeBinaryFromReader);
        msg.setValidatorSet(value);
        break;
      case 3:
        var value = new ibc_core_client_v1_client_pb.Height;
        reader.readMessage(value,ibc_core_client_v1_client_pb.Height.deserializeBinaryFromReader);
        msg.setTrustedHeight(value);
        break;
      case 4:
        var value = new tendermint_types_validator_pb.ValidatorSet;
        reader.readMessage(value,tendermint_types_validator_pb.ValidatorSet.deserializeBinaryFromReader);
        msg.setTrustedValidators(value);
        break;
      default:
        reader.skipField();
        break;
      }
    }
    return msg;
  };
  
  
  /**
   * Serializes the message to binary data (in protobuf wire format).
   * @return {!Uint8Array}
   */
  proto.ibc.lightclients.tendermint.v1.Header.prototype.serializeBinary = function() {
    var writer = new jspb.BinaryWriter();
    proto.ibc.lightclients.tendermint.v1.Header.serializeBinaryToWriter(this, writer);
    return writer.getResultBuffer();
  };
  
  
  /**
   * Serializes the given message to binary data (in protobuf wire
   * format), writing to the given BinaryWriter.
   * @param {!proto.ibc.lightclients.tendermint.v1.Header} message
   * @param {!jspb.BinaryWriter} writer
   * @suppress {unusedLocalVariables} f is only used for nested messages
   */
  proto.ibc.lightclients.tendermint.v1.Header.serializeBinaryToWriter = function(message, writer) {
    var f = undefined;
    f = message.getSignedHeader();
    if (f != null) {
      writer.writeMessage(
        1,
        f,
        tendermint_types_types_pb.SignedHeader.serializeBinaryToWriter
      );
    }
    f = message.getValidatorSet();
    if (f != null) {
      writer.writeMessage(
        2,
        f,
        tendermint_types_validator_pb.ValidatorSet.serializeBinaryToWriter
      );
    }
    f = message.getTrustedHeight();
    if (f != null) {
      writer.writeMessage(
        3,
        f,
        ibc_core_client_v1_client_pb.Height.serializeBinaryToWriter
      );
    }
    f = message.getTrustedValidators();
    if (f != null) {
      writer.writeMessage(
        4,
        f,
        tendermint_types_validator_pb.ValidatorSet.serializeBinaryToWriter
      );
    }
  };
  
  
  /**
   * optional tendermint.types.SignedHeader signed_header = 1;
   * @return {?proto.tendermint.types.SignedHeader}
   */
  proto.ibc.lightclients.tendermint.v1.Header.prototype.getSignedHeader = function() {
    return /** @type{?proto.tendermint.types.SignedHeader} */ (
      jspb.Message.getWrapperField(this, tendermint_types_types_pb.SignedHeader, 1));
  };
  
  
  /**
   * @param {?proto.tendermint.types.SignedHeader|undefined} value
   * @return {!proto.ibc.lightclients.tendermint.v1.Header} returns this
  */
  proto.ibc.lightclients.tendermint.v1.Header.prototype.setSignedHeader = function(value) {
    return jspb.Message.setWrapperField(this, 1, value);
  };
  
  
  /**
   * Clears the message field making it undefined.
   * @return {!proto.ibc.lightclients.tendermint.v1.Header} returns this
   */
  proto.ibc.lightclients.tendermint.v1.Header.prototype.clearSignedHeader = function() {
    return this.setSignedHeader(undefined);
  };
  
  
  /**
   * Returns whether this field is set.
   * @return {boolean}
   */
  proto.ibc.lightclients.tendermint.v1.Header.prototype.hasSignedHeader = function() {
    return jspb.Message.getField(this, 1) != null;
  };
  
  
  /**
   * optional tendermint.types.ValidatorSet validator_set = 2;
   * @return {?proto.tendermint.types.ValidatorSet}
   */
  proto.ibc.lightclients.tendermint.v1.Header.prototype.getValidatorSet = function() {
    return /** @type{?proto.tendermint.types.ValidatorSet} */ (
      jspb.Message.getWrapperField(this, tendermint_types_validator_pb.ValidatorSet, 2));
  };
  
  
  /**
   * @param {?proto.tendermint.types.ValidatorSet|undefined} value
   * @return {!proto.ibc.lightclients.tendermint.v1.Header} returns this
  */
  proto.ibc.lightclients.tendermint.v1.Header.prototype.setValidatorSet = function(value) {
    return jspb.Message.setWrapperField(this, 2, value);
  };
  
  
  /**
   * Clears the message field making it undefined.
   * @return {!proto.ibc.lightclients.tendermint.v1.Header} returns this
   */
  proto.ibc.lightclients.tendermint.v1.Header.prototype.clearValidatorSet = function() {
    return this.setValidatorSet(undefined);
  };
  
  
  /**
   * Returns whether this field is set.
   * @return {boolean}
   */
  proto.ibc.lightclients.tendermint.v1.Header.prototype.hasValidatorSet = function() {
    return jspb.Message.getField(this, 2) != null;
  };
  
  
  /**
   * optional ibc.core.client.v1.Height trusted_height = 3;
   * @return {?proto.ibc.core.client.v1.Height}
   */
  proto.ibc.lightclients.tendermint.v1.Header.prototype.getTrustedHeight = function() {
    return /** @type{?proto.ibc.core.client.v1.Height} */ (
      jspb.Message.getWrapperField(this, ibc_core_client_v1_client_pb.Height, 3));
  };
  
  
  /**
   * @param {?proto.ibc.core.client.v1.Height|undefined} value
   * @return {!proto.ibc.lightclients.tendermint.v1.Header} returns this
  */
  proto.ibc.lightclients.tendermint.v1.Header.prototype.setTrustedHeight = function(value) {
    return jspb.Message.setWrapperField(this, 3, value);
  };
  
  
  /**
   * Clears the message field making it undefined.
   * @return {!proto.ibc.lightclients.tendermint.v1.Header} returns this
   */
  proto.ibc.lightclients.tendermint.v1.Header.prototype.clearTrustedHeight = function() {
    return this.setTrustedHeight(undefined);
  };
  
  
  /**
   * Returns whether this field is set.
   * @return {boolean}
   */
  proto.ibc.lightclients.tendermint.v1.Header.prototype.hasTrustedHeight = function() {
    return jspb.Message.getField(this, 3) != null;
  };
  
  
  /**
   * optional tendermint.types.ValidatorSet trusted_validators = 4;
   * @return {?proto.tendermint.types.ValidatorSet}
   */
  proto.ibc.lightclients.tendermint.v1.Header.prototype.getTrustedValidators = function() {
    return /** @type{?proto.tendermint.types.ValidatorSet} */ (
      jspb.Message.getWrapperField(this, tendermint_types_validator_pb.ValidatorSet, 4));
  };
  
  
  /**
   * @param {?proto.tendermint.types.ValidatorSet|undefined} value
   * @return {!proto.ibc.lightclients.tendermint.v1.Header} returns this
  */
  proto.ibc.lightclients.tendermint.v1.Header.prototype.setTrustedValidators = function(value) {
    return jspb.Message.setWrapperField(this, 4, value);
  };
  
  
  /**
   * Clears the message field making it undefined.
   * @return {!proto.ibc.lightclients.tendermint.v1.Header} returns this
   */
  proto.ibc.lightclients.tendermint.v1.Header.prototype.clearTrustedValidators = function() {
    return this.setTrustedValidators(undefined);
  };
  
  
  /**
   * Returns whether this field is set.
   * @return {boolean}
   */
  proto.ibc.lightclients.tendermint.v1.Header.prototype.hasTrustedValidators = function() {
    return jspb.Message.getField(this, 4) != null;
  };
  
  
  
  
  
  if (jspb.Message.GENERATE_TO_OBJECT) {
  /**
   * Creates an object representation of this proto.
   * Field names that are reserved in JavaScript and will be renamed to pb_name.
   * Optional fields that are not set will be set to undefined.
   * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
   * For the list of reserved names please see:
   *     net/proto2/compiler/js/internal/generator.cc#kKeyword.
   * @param {boolean=} opt_includeInstance Deprecated. whether to include the
   *     JSPB instance for transitional soy proto support:
   *     http://goto/soy-param-migration
   * @return {!Object}
   */
  proto.ibc.lightclients.tendermint.v1.Fraction.prototype.toObject = function(opt_includeInstance) {
    return proto.ibc.lightclients.tendermint.v1.Fraction.toObject(opt_includeInstance, this);
  };
  
  
  /**
   * Static version of the {@see toObject} method.
   * @param {boolean|undefined} includeInstance Deprecated. Whether to include
   *     the JSPB instance for transitional soy proto support:
   *     http://goto/soy-param-migration
   * @param {!proto.ibc.lightclients.tendermint.v1.Fraction} msg The msg instance to transform.
   * @return {!Object}
   * @suppress {unusedLocalVariables} f is only used for nested messages
   */
  proto.ibc.lightclients.tendermint.v1.Fraction.toObject = function(includeInstance, msg) {
    var f, obj = {
      numerator: jspb.Message.getFieldWithDefault(msg, 1, 0),
      denominator: jspb.Message.getFieldWithDefault(msg, 2, 0)
    };
  
    if (includeInstance) {
      obj.$jspbMessageInstance = msg;
    }
    return obj;
  };
  }
  
  
  /**
   * Deserializes binary data (in protobuf wire format).
   * @param {jspb.ByteSource} bytes The bytes to deserialize.
   * @return {!proto.ibc.lightclients.tendermint.v1.Fraction}
   */
  proto.ibc.lightclients.tendermint.v1.Fraction.deserializeBinary = function(bytes) {
    var reader = new jspb.BinaryReader(bytes);
    var msg = new proto.ibc.lightclients.tendermint.v1.Fraction;
    return proto.ibc.lightclients.tendermint.v1.Fraction.deserializeBinaryFromReader(msg, reader);
  };
  
  
  /**
   * Deserializes binary data (in protobuf wire format) from the
   * given reader into the given message object.
   * @param {!proto.ibc.lightclients.tendermint.v1.Fraction} msg The message object to deserialize into.
   * @param {!jspb.BinaryReader} reader The BinaryReader to use.
   * @return {!proto.ibc.lightclients.tendermint.v1.Fraction}
   */
  proto.ibc.lightclients.tendermint.v1.Fraction.deserializeBinaryFromReader = function(msg, reader) {
    while (reader.nextField()) {
      if (reader.isEndGroup()) {
        break;
      }
      var field = reader.getFieldNumber();
      switch (field) {
      case 1:
        var value = /** @type {number} */ (reader.readUint64());
        msg.setNumerator(value);
        break;
      case 2:
        var value = /** @type {number} */ (reader.readUint64());
        msg.setDenominator(value);
        break;
      default:
        reader.skipField();
        break;
      }
    }
    return msg;
  };
  
  
  /**
   * Serializes the message to binary data (in protobuf wire format).
   * @return {!Uint8Array}
   */
  proto.ibc.lightclients.tendermint.v1.Fraction.prototype.serializeBinary = function() {
    var writer = new jspb.BinaryWriter();
    proto.ibc.lightclients.tendermint.v1.Fraction.serializeBinaryToWriter(this, writer);
    return writer.getResultBuffer();
  };
  
  
  /**
   * Serializes the given message to binary data (in protobuf wire
   * format), writing to the given BinaryWriter.
   * @param {!proto.ibc.lightclients.tendermint.v1.Fraction} message
   * @param {!jspb.BinaryWriter} writer
   * @suppress {unusedLocalVariables} f is only used for nested messages
   */
  proto.ibc.lightclients.tendermint.v1.Fraction.serializeBinaryToWriter = function(message, writer) {
    var f = undefined;
    f = message.getNumerator();
    if (f !== 0) {
      writer.writeUint64(
        1,
        f
      );
    }
    f = message.getDenominator();
    if (f !== 0) {
      writer.writeUint64(
        2,
        f
      );
    }
  };
  
  
  /**
   * optional uint64 numerator = 1;
   * @return {number}
   */
  proto.ibc.lightclients.tendermint.v1.Fraction.prototype.getNumerator = function() {
    return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 1, 0));
  };
  
  
  /**
   * @param {number} value
   * @return {!proto.ibc.lightclients.tendermint.v1.Fraction} returns this
   */
  proto.ibc.lightclients.tendermint.v1.Fraction.prototype.setNumerator = function(value) {
    return jspb.Message.setProto3IntField(this, 1, value);
  };
  
  
  /**
   * optional uint64 denominator = 2;
   * @return {number}
   */
  proto.ibc.lightclients.tendermint.v1.Fraction.prototype.getDenominator = function() {
    return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 2, 0));
  };
  
  
  /**
   * @param {number} value
   * @return {!proto.ibc.lightclients.tendermint.v1.Fraction} returns this
   */
  proto.ibc.lightclients.tendermint.v1.Fraction.prototype.setDenominator = function(value) {
    return jspb.Message.setProto3IntField(this, 2, value);
  };
  
  
  goog.object.extend(exports, proto.ibc.lightclients.tendermint.v1);
  