// DO NOT EDIT.
// swift-format-ignore-file
//
// Generated by the Swift generator plugin for the protocol buffer compiler.
// Source: ixo/payments/payments.proto
//
// For information on using the generated types, please see the documentation:
//   https://github.com/apple/swift-protobuf/

import Foundation
import SwiftProtobuf

// If the compiler emits an error on this type, it is because this file
// was generated by a version of the `protoc` Swift plug-in that is
// incompatible with the version of SwiftProtobuf to which you are linking.
// Please ensure that you are building against the same version of the API
// that was used to generate this file.
fileprivate struct _GeneratedWithProtocGenSwiftVersion: SwiftProtobuf.ProtobufAPIVersionCheck {
  struct _2: SwiftProtobuf.ProtobufAPIVersion_2 {}
  typealias Version = _2
}

/// PaymentTemplate contains details about a payment, with no info about the payer or payee.
struct Payments_PaymentTemplate {
  // SwiftProtobuf.Message conformance is added in an extension below. See the
  // `Message` and `Message+*Additions` files in the SwiftProtobuf library for
  // methods supported on all messages.

  var id: String = String()

  var paymentAmount: [Cosmos_Base_V1beta1_Coin] = []

  var paymentMinimum: [Cosmos_Base_V1beta1_Coin] = []

  var paymentMaximum: [Cosmos_Base_V1beta1_Coin] = []

  var discounts: [Payments_Discount] = []

  var unknownFields = SwiftProtobuf.UnknownStorage()

  init() {}
}

/// Discount contains details about a discount which can be granted to payers.
struct Payments_Discount {
  // SwiftProtobuf.Message conformance is added in an extension below. See the
  // `Message` and `Message+*Additions` files in the SwiftProtobuf library for
  // methods supported on all messages.

  var id: String = String()

  var percent: String = String()

  var unknownFields = SwiftProtobuf.UnknownStorage()

  init() {}
}

/// DistributionShare specifies the share of a specific payment an address will receive.
struct Payments_DistributionShare {
  // SwiftProtobuf.Message conformance is added in an extension below. See the
  // `Message` and `Message+*Additions` files in the SwiftProtobuf library for
  // methods supported on all messages.

  var address: String = String()

  var percentage: String = String()

  var unknownFields = SwiftProtobuf.UnknownStorage()

  init() {}
}

/// PaymentContract specifies an agreement between a payer and payee/s which can be invoked
/// once or multiple times to effect payment/s.
struct Payments_PaymentContract {
  // SwiftProtobuf.Message conformance is added in an extension below. See the
  // `Message` and `Message+*Additions` files in the SwiftProtobuf library for
  // methods supported on all messages.

  var id: String = String()

  var paymentTemplateID: String = String()

  var creator: String = String()

  var payer: String = String()

  var recipients: [Payments_DistributionShare] = []

  var cumulativePay: [Cosmos_Base_V1beta1_Coin] = []

  var currentRemainder: [Cosmos_Base_V1beta1_Coin] = []

  var canDeauthorise: Bool = false

  var authorised: Bool = false

  var discountID: String = String()

  var unknownFields = SwiftProtobuf.UnknownStorage()

  init() {}
}

/// Subscription specifies details of a payment to be effected periodically.
struct Payments_Subscription {
  // SwiftProtobuf.Message conformance is added in an extension below. See the
  // `Message` and `Message+*Additions` files in the SwiftProtobuf library for
  // methods supported on all messages.

  var id: String = String()

  var paymentContractID: String = String()

  var periodsSoFar: String = String()

  var maxPeriods: String = String()

  var periodsAccumulated: String = String()

  var period: Google_Protobuf2_Any {
    get {return _period ?? Google_Protobuf2_Any()}
    set {_period = newValue}
  }
  /// Returns true if `period` has been explicitly set.
  var hasPeriod: Bool {return self._period != nil}
  /// Clears the value of `period`. Subsequent reads from it will return its default value.
  mutating func clearPeriod() {self._period = nil}

  var unknownFields = SwiftProtobuf.UnknownStorage()

  init() {}

  fileprivate var _period: Google_Protobuf2_Any? = nil
}

/// BlockPeriod implements the Period interface and specifies a period in terms of number
/// of blocks.
struct Payments_BlockPeriod {
  // SwiftProtobuf.Message conformance is added in an extension below. See the
  // `Message` and `Message+*Additions` files in the SwiftProtobuf library for
  // methods supported on all messages.

  var periodLength: Int64 = 0

  var periodStartBlock: Int64 = 0

  var unknownFields = SwiftProtobuf.UnknownStorage()

  init() {}
}

/// TimePeriod implements the Period interface and specifies a period in terms of time.
struct Payments_TimePeriod {
  // SwiftProtobuf.Message conformance is added in an extension below. See the
  // `Message` and `Message+*Additions` files in the SwiftProtobuf library for
  // methods supported on all messages.

  var periodDurationNs: SwiftProtobuf.Google_Protobuf_Duration {
    get {return _periodDurationNs ?? SwiftProtobuf.Google_Protobuf_Duration()}
    set {_periodDurationNs = newValue}
  }
  /// Returns true if `periodDurationNs` has been explicitly set.
  var hasPeriodDurationNs: Bool {return self._periodDurationNs != nil}
  /// Clears the value of `periodDurationNs`. Subsequent reads from it will return its default value.
  mutating func clearPeriodDurationNs() {self._periodDurationNs = nil}

  var periodStartTime: SwiftProtobuf.Google_Protobuf_Timestamp {
    get {return _periodStartTime ?? SwiftProtobuf.Google_Protobuf_Timestamp()}
    set {_periodStartTime = newValue}
  }
  /// Returns true if `periodStartTime` has been explicitly set.
  var hasPeriodStartTime: Bool {return self._periodStartTime != nil}
  /// Clears the value of `periodStartTime`. Subsequent reads from it will return its default value.
  mutating func clearPeriodStartTime() {self._periodStartTime = nil}

  var unknownFields = SwiftProtobuf.UnknownStorage()

  init() {}

  fileprivate var _periodDurationNs: SwiftProtobuf.Google_Protobuf_Duration? = nil
  fileprivate var _periodStartTime: SwiftProtobuf.Google_Protobuf_Timestamp? = nil
}

/// TestPeriod implements the Period interface and is identical to BlockPeriod, except it
/// ignores the context in periodEnded() and periodStarted().
struct Payments_TestPeriod {
  // SwiftProtobuf.Message conformance is added in an extension below. See the
  // `Message` and `Message+*Additions` files in the SwiftProtobuf library for
  // methods supported on all messages.

  var periodLength: Int64 = 0

  var periodStartBlock: Int64 = 0

  var unknownFields = SwiftProtobuf.UnknownStorage()

  init() {}
}

// MARK: - Code below here is support for the SwiftProtobuf runtime.

fileprivate let _protobuf_package = "payments"

extension Payments_PaymentTemplate: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding {
  static let protoMessageName: String = _protobuf_package + ".PaymentTemplate"
  static let _protobuf_nameMap: SwiftProtobuf._NameMap = [
    1: .same(proto: "id"),
    2: .standard(proto: "payment_amount"),
    3: .standard(proto: "payment_minimum"),
    4: .standard(proto: "payment_maximum"),
    5: .same(proto: "discounts"),
  ]

  mutating func decodeMessage<D: SwiftProtobuf.Decoder>(decoder: inout D) throws {
    while let fieldNumber = try decoder.nextFieldNumber() {
      // The use of inline closures is to circumvent an issue where the compiler
      // allocates stack space for every case branch when no optimizations are
      // enabled. https://github.com/apple/swift-protobuf/issues/1034
      switch fieldNumber {
      case 1: try { try decoder.decodeSingularStringField(value: &self.id) }()
      case 2: try { try decoder.decodeRepeatedMessageField(value: &self.paymentAmount) }()
      case 3: try { try decoder.decodeRepeatedMessageField(value: &self.paymentMinimum) }()
      case 4: try { try decoder.decodeRepeatedMessageField(value: &self.paymentMaximum) }()
      case 5: try { try decoder.decodeRepeatedMessageField(value: &self.discounts) }()
      default: break
      }
    }
  }

  func traverse<V: SwiftProtobuf.Visitor>(visitor: inout V) throws {
    if !self.id.isEmpty {
      try visitor.visitSingularStringField(value: self.id, fieldNumber: 1)
    }
    if !self.paymentAmount.isEmpty {
      try visitor.visitRepeatedMessageField(value: self.paymentAmount, fieldNumber: 2)
    }
    if !self.paymentMinimum.isEmpty {
      try visitor.visitRepeatedMessageField(value: self.paymentMinimum, fieldNumber: 3)
    }
    if !self.paymentMaximum.isEmpty {
      try visitor.visitRepeatedMessageField(value: self.paymentMaximum, fieldNumber: 4)
    }
    if !self.discounts.isEmpty {
      try visitor.visitRepeatedMessageField(value: self.discounts, fieldNumber: 5)
    }
    try unknownFields.traverse(visitor: &visitor)
  }

  static func ==(lhs: Payments_PaymentTemplate, rhs: Payments_PaymentTemplate) -> Bool {
    if lhs.id != rhs.id {return false}
    if lhs.paymentAmount != rhs.paymentAmount {return false}
    if lhs.paymentMinimum != rhs.paymentMinimum {return false}
    if lhs.paymentMaximum != rhs.paymentMaximum {return false}
    if lhs.discounts != rhs.discounts {return false}
    if lhs.unknownFields != rhs.unknownFields {return false}
    return true
  }
}

extension Payments_Discount: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding {
  static let protoMessageName: String = _protobuf_package + ".Discount"
  static let _protobuf_nameMap: SwiftProtobuf._NameMap = [
    1: .same(proto: "id"),
    2: .same(proto: "percent"),
  ]

  mutating func decodeMessage<D: SwiftProtobuf.Decoder>(decoder: inout D) throws {
    while let fieldNumber = try decoder.nextFieldNumber() {
      // The use of inline closures is to circumvent an issue where the compiler
      // allocates stack space for every case branch when no optimizations are
      // enabled. https://github.com/apple/swift-protobuf/issues/1034
      switch fieldNumber {
      case 1: try { try decoder.decodeSingularStringField(value: &self.id) }()
      case 2: try { try decoder.decodeSingularStringField(value: &self.percent) }()
      default: break
      }
    }
  }

  func traverse<V: SwiftProtobuf.Visitor>(visitor: inout V) throws {
    if !self.id.isEmpty {
      try visitor.visitSingularStringField(value: self.id, fieldNumber: 1)
    }
    if !self.percent.isEmpty {
      try visitor.visitSingularStringField(value: self.percent, fieldNumber: 2)
    }
    try unknownFields.traverse(visitor: &visitor)
  }

  static func ==(lhs: Payments_Discount, rhs: Payments_Discount) -> Bool {
    if lhs.id != rhs.id {return false}
    if lhs.percent != rhs.percent {return false}
    if lhs.unknownFields != rhs.unknownFields {return false}
    return true
  }
}

extension Payments_DistributionShare: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding {
  static let protoMessageName: String = _protobuf_package + ".DistributionShare"
  static let _protobuf_nameMap: SwiftProtobuf._NameMap = [
    1: .same(proto: "address"),
    2: .same(proto: "percentage"),
  ]

  mutating func decodeMessage<D: SwiftProtobuf.Decoder>(decoder: inout D) throws {
    while let fieldNumber = try decoder.nextFieldNumber() {
      // The use of inline closures is to circumvent an issue where the compiler
      // allocates stack space for every case branch when no optimizations are
      // enabled. https://github.com/apple/swift-protobuf/issues/1034
      switch fieldNumber {
      case 1: try { try decoder.decodeSingularStringField(value: &self.address) }()
      case 2: try { try decoder.decodeSingularStringField(value: &self.percentage) }()
      default: break
      }
    }
  }

  func traverse<V: SwiftProtobuf.Visitor>(visitor: inout V) throws {
    if !self.address.isEmpty {
      try visitor.visitSingularStringField(value: self.address, fieldNumber: 1)
    }
    if !self.percentage.isEmpty {
      try visitor.visitSingularStringField(value: self.percentage, fieldNumber: 2)
    }
    try unknownFields.traverse(visitor: &visitor)
  }

  static func ==(lhs: Payments_DistributionShare, rhs: Payments_DistributionShare) -> Bool {
    if lhs.address != rhs.address {return false}
    if lhs.percentage != rhs.percentage {return false}
    if lhs.unknownFields != rhs.unknownFields {return false}
    return true
  }
}

extension Payments_PaymentContract: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding {
  static let protoMessageName: String = _protobuf_package + ".PaymentContract"
  static let _protobuf_nameMap: SwiftProtobuf._NameMap = [
    1: .same(proto: "id"),
    2: .standard(proto: "payment_template_id"),
    3: .same(proto: "creator"),
    4: .same(proto: "payer"),
    5: .same(proto: "recipients"),
    6: .standard(proto: "cumulative_pay"),
    7: .standard(proto: "current_remainder"),
    8: .standard(proto: "can_deauthorise"),
    9: .same(proto: "authorised"),
    10: .standard(proto: "discount_id"),
  ]

  mutating func decodeMessage<D: SwiftProtobuf.Decoder>(decoder: inout D) throws {
    while let fieldNumber = try decoder.nextFieldNumber() {
      // The use of inline closures is to circumvent an issue where the compiler
      // allocates stack space for every case branch when no optimizations are
      // enabled. https://github.com/apple/swift-protobuf/issues/1034
      switch fieldNumber {
      case 1: try { try decoder.decodeSingularStringField(value: &self.id) }()
      case 2: try { try decoder.decodeSingularStringField(value: &self.paymentTemplateID) }()
      case 3: try { try decoder.decodeSingularStringField(value: &self.creator) }()
      case 4: try { try decoder.decodeSingularStringField(value: &self.payer) }()
      case 5: try { try decoder.decodeRepeatedMessageField(value: &self.recipients) }()
      case 6: try { try decoder.decodeRepeatedMessageField(value: &self.cumulativePay) }()
      case 7: try { try decoder.decodeRepeatedMessageField(value: &self.currentRemainder) }()
      case 8: try { try decoder.decodeSingularBoolField(value: &self.canDeauthorise) }()
      case 9: try { try decoder.decodeSingularBoolField(value: &self.authorised) }()
      case 10: try { try decoder.decodeSingularStringField(value: &self.discountID) }()
      default: break
      }
    }
  }

  func traverse<V: SwiftProtobuf.Visitor>(visitor: inout V) throws {
    if !self.id.isEmpty {
      try visitor.visitSingularStringField(value: self.id, fieldNumber: 1)
    }
    if !self.paymentTemplateID.isEmpty {
      try visitor.visitSingularStringField(value: self.paymentTemplateID, fieldNumber: 2)
    }
    if !self.creator.isEmpty {
      try visitor.visitSingularStringField(value: self.creator, fieldNumber: 3)
    }
    if !self.payer.isEmpty {
      try visitor.visitSingularStringField(value: self.payer, fieldNumber: 4)
    }
    if !self.recipients.isEmpty {
      try visitor.visitRepeatedMessageField(value: self.recipients, fieldNumber: 5)
    }
    if !self.cumulativePay.isEmpty {
      try visitor.visitRepeatedMessageField(value: self.cumulativePay, fieldNumber: 6)
    }
    if !self.currentRemainder.isEmpty {
      try visitor.visitRepeatedMessageField(value: self.currentRemainder, fieldNumber: 7)
    }
    if self.canDeauthorise != false {
      try visitor.visitSingularBoolField(value: self.canDeauthorise, fieldNumber: 8)
    }
    if self.authorised != false {
      try visitor.visitSingularBoolField(value: self.authorised, fieldNumber: 9)
    }
    if !self.discountID.isEmpty {
      try visitor.visitSingularStringField(value: self.discountID, fieldNumber: 10)
    }
    try unknownFields.traverse(visitor: &visitor)
  }

  static func ==(lhs: Payments_PaymentContract, rhs: Payments_PaymentContract) -> Bool {
    if lhs.id != rhs.id {return false}
    if lhs.paymentTemplateID != rhs.paymentTemplateID {return false}
    if lhs.creator != rhs.creator {return false}
    if lhs.payer != rhs.payer {return false}
    if lhs.recipients != rhs.recipients {return false}
    if lhs.cumulativePay != rhs.cumulativePay {return false}
    if lhs.currentRemainder != rhs.currentRemainder {return false}
    if lhs.canDeauthorise != rhs.canDeauthorise {return false}
    if lhs.authorised != rhs.authorised {return false}
    if lhs.discountID != rhs.discountID {return false}
    if lhs.unknownFields != rhs.unknownFields {return false}
    return true
  }
}

extension Payments_Subscription: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding {
  static let protoMessageName: String = _protobuf_package + ".Subscription"
  static let _protobuf_nameMap: SwiftProtobuf._NameMap = [
    1: .same(proto: "id"),
    2: .standard(proto: "payment_contract_id"),
    3: .standard(proto: "periods_so_far"),
    4: .standard(proto: "max_periods"),
    5: .standard(proto: "periods_accumulated"),
    6: .same(proto: "period"),
  ]

  mutating func decodeMessage<D: SwiftProtobuf.Decoder>(decoder: inout D) throws {
    while let fieldNumber = try decoder.nextFieldNumber() {
      // The use of inline closures is to circumvent an issue where the compiler
      // allocates stack space for every case branch when no optimizations are
      // enabled. https://github.com/apple/swift-protobuf/issues/1034
      switch fieldNumber {
      case 1: try { try decoder.decodeSingularStringField(value: &self.id) }()
      case 2: try { try decoder.decodeSingularStringField(value: &self.paymentContractID) }()
      case 3: try { try decoder.decodeSingularStringField(value: &self.periodsSoFar) }()
      case 4: try { try decoder.decodeSingularStringField(value: &self.maxPeriods) }()
      case 5: try { try decoder.decodeSingularStringField(value: &self.periodsAccumulated) }()
      case 6: try { try decoder.decodeSingularMessageField(value: &self._period) }()
      default: break
      }
    }
  }

  func traverse<V: SwiftProtobuf.Visitor>(visitor: inout V) throws {
    if !self.id.isEmpty {
      try visitor.visitSingularStringField(value: self.id, fieldNumber: 1)
    }
    if !self.paymentContractID.isEmpty {
      try visitor.visitSingularStringField(value: self.paymentContractID, fieldNumber: 2)
    }
    if !self.periodsSoFar.isEmpty {
      try visitor.visitSingularStringField(value: self.periodsSoFar, fieldNumber: 3)
    }
    if !self.maxPeriods.isEmpty {
      try visitor.visitSingularStringField(value: self.maxPeriods, fieldNumber: 4)
    }
    if !self.periodsAccumulated.isEmpty {
      try visitor.visitSingularStringField(value: self.periodsAccumulated, fieldNumber: 5)
    }
    if let v = self._period {
      try visitor.visitSingularMessageField(value: v, fieldNumber: 6)
    }
    try unknownFields.traverse(visitor: &visitor)
  }

  static func ==(lhs: Payments_Subscription, rhs: Payments_Subscription) -> Bool {
    if lhs.id != rhs.id {return false}
    if lhs.paymentContractID != rhs.paymentContractID {return false}
    if lhs.periodsSoFar != rhs.periodsSoFar {return false}
    if lhs.maxPeriods != rhs.maxPeriods {return false}
    if lhs.periodsAccumulated != rhs.periodsAccumulated {return false}
    if lhs._period != rhs._period {return false}
    if lhs.unknownFields != rhs.unknownFields {return false}
    return true
  }
}

extension Payments_BlockPeriod: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding {
  static let protoMessageName: String = _protobuf_package + ".BlockPeriod"
  static let _protobuf_nameMap: SwiftProtobuf._NameMap = [
    1: .standard(proto: "period_length"),
    2: .standard(proto: "period_start_block"),
  ]

  mutating func decodeMessage<D: SwiftProtobuf.Decoder>(decoder: inout D) throws {
    while let fieldNumber = try decoder.nextFieldNumber() {
      // The use of inline closures is to circumvent an issue where the compiler
      // allocates stack space for every case branch when no optimizations are
      // enabled. https://github.com/apple/swift-protobuf/issues/1034
      switch fieldNumber {
      case 1: try { try decoder.decodeSingularInt64Field(value: &self.periodLength) }()
      case 2: try { try decoder.decodeSingularInt64Field(value: &self.periodStartBlock) }()
      default: break
      }
    }
  }

  func traverse<V: SwiftProtobuf.Visitor>(visitor: inout V) throws {
    if self.periodLength != 0 {
      try visitor.visitSingularInt64Field(value: self.periodLength, fieldNumber: 1)
    }
    if self.periodStartBlock != 0 {
      try visitor.visitSingularInt64Field(value: self.periodStartBlock, fieldNumber: 2)
    }
    try unknownFields.traverse(visitor: &visitor)
  }

  static func ==(lhs: Payments_BlockPeriod, rhs: Payments_BlockPeriod) -> Bool {
    if lhs.periodLength != rhs.periodLength {return false}
    if lhs.periodStartBlock != rhs.periodStartBlock {return false}
    if lhs.unknownFields != rhs.unknownFields {return false}
    return true
  }
}

extension Payments_TimePeriod: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding {
  static let protoMessageName: String = _protobuf_package + ".TimePeriod"
  static let _protobuf_nameMap: SwiftProtobuf._NameMap = [
    1: .standard(proto: "period_duration_ns"),
    2: .standard(proto: "period_start_time"),
  ]

  mutating func decodeMessage<D: SwiftProtobuf.Decoder>(decoder: inout D) throws {
    while let fieldNumber = try decoder.nextFieldNumber() {
      // The use of inline closures is to circumvent an issue where the compiler
      // allocates stack space for every case branch when no optimizations are
      // enabled. https://github.com/apple/swift-protobuf/issues/1034
      switch fieldNumber {
      case 1: try { try decoder.decodeSingularMessageField(value: &self._periodDurationNs) }()
      case 2: try { try decoder.decodeSingularMessageField(value: &self._periodStartTime) }()
      default: break
      }
    }
  }

  func traverse<V: SwiftProtobuf.Visitor>(visitor: inout V) throws {
    if let v = self._periodDurationNs {
      try visitor.visitSingularMessageField(value: v, fieldNumber: 1)
    }
    if let v = self._periodStartTime {
      try visitor.visitSingularMessageField(value: v, fieldNumber: 2)
    }
    try unknownFields.traverse(visitor: &visitor)
  }

  static func ==(lhs: Payments_TimePeriod, rhs: Payments_TimePeriod) -> Bool {
    if lhs._periodDurationNs != rhs._periodDurationNs {return false}
    if lhs._periodStartTime != rhs._periodStartTime {return false}
    if lhs.unknownFields != rhs.unknownFields {return false}
    return true
  }
}

extension Payments_TestPeriod: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding {
  static let protoMessageName: String = _protobuf_package + ".TestPeriod"
  static let _protobuf_nameMap: SwiftProtobuf._NameMap = [
    1: .standard(proto: "period_length"),
    2: .standard(proto: "period_start_block"),
  ]

  mutating func decodeMessage<D: SwiftProtobuf.Decoder>(decoder: inout D) throws {
    while let fieldNumber = try decoder.nextFieldNumber() {
      // The use of inline closures is to circumvent an issue where the compiler
      // allocates stack space for every case branch when no optimizations are
      // enabled. https://github.com/apple/swift-protobuf/issues/1034
      switch fieldNumber {
      case 1: try { try decoder.decodeSingularInt64Field(value: &self.periodLength) }()
      case 2: try { try decoder.decodeSingularInt64Field(value: &self.periodStartBlock) }()
      default: break
      }
    }
  }

  func traverse<V: SwiftProtobuf.Visitor>(visitor: inout V) throws {
    if self.periodLength != 0 {
      try visitor.visitSingularInt64Field(value: self.periodLength, fieldNumber: 1)
    }
    if self.periodStartBlock != 0 {
      try visitor.visitSingularInt64Field(value: self.periodStartBlock, fieldNumber: 2)
    }
    try unknownFields.traverse(visitor: &visitor)
  }

  static func ==(lhs: Payments_TestPeriod, rhs: Payments_TestPeriod) -> Bool {
    if lhs.periodLength != rhs.periodLength {return false}
    if lhs.periodStartBlock != rhs.periodStartBlock {return false}
    if lhs.unknownFields != rhs.unknownFields {return false}
    return true
  }
}
