(function(root, factory) {
  if (typeof define === 'function' && define.amd) {
    // AMD. Register as an anonymous module.
    define(['ApiClient'], factory);
  } else if (typeof module === 'object' && module.exports) {
    // CommonJS-like environments that support module.exports, like Node.
    module.exports = factory(require('../ApiClient'));
  } else {
    // Browser globals (root is window)
    if (!root.OrbipayPaymentsapiClient) {
      root.OrbipayPaymentsapiClient = {};
    }
    root.OrbipayPaymentsapiClient.PaymentNetworkResponseVo = factory(root.OrbipayPaymentsapiClient.ApiClient);
  }
}(this, function(ApiClient) {
  'use strict';




  /**
   * The PaymentNetworkResponseVo model module.
   * @module models/PaymentNetworkResponseVo
   */

  /**
   * <h3 style="color:red"> This class subject to change without prior notice, Please dont use this class directly. </h3>

   * Constructs a new <code>PaymentNetworkResponseVo</code>.
   * The response received from either the ACH or Card network.
   * @alias module:models/PaymentNetworkResponseVo
   * @class
   */
  var exports = function() {
    var _this = this;




  };

  /**
   * Constructs a <code>PaymentNetworkResponseVo</code> from a plain JavaScript object, optionally creating a new instance.
   * Copies all relevant properties from <code>data</code> to <code>obj</code> if supplied or a new instance if not.
   * @param {Object} data The plain JavaScript object bearing properties of interest.
   * @param {module:models/PaymentNetworkResponseVo} obj Optional instance to populate.
   * @return {module:models/PaymentNetworkResponseVo} The populated <code>PaymentNetworkResponseVo</code> instance.
   */
  exports.constructFromObject = function(data, obj) {
    if (data) {
      obj = obj || new exports();

      if (data.hasOwnProperty('payment_auth_code')) {
        obj['payment_auth_code'] = ApiClient.convertToType(data['payment_auth_code'], 'String');
      }
      if (data.hasOwnProperty('payment_response_code')) {
        obj['payment_response_code'] = ApiClient.convertToType(data['payment_response_code'], 'String');
      }
      if (data.hasOwnProperty('payment_response_msg')) {
        obj['payment_response_msg'] = ApiClient.convertToType(data['payment_response_msg'], 'String');
      }
    }
    return obj;
  };

  /**
   * The Auth Code returned by the card gateway. This is relevant only for card payments.
   * @member {String} payment_auth_code
   */
  exports.prototype['payment_auth_code'] = undefined;
  /**
   * This is the ACH return code in the case of a returned payment over the NACHA ACH network. In the case of declined card payment, it's the decline code received from the card issuer or the card processor. In the case of a card chargeback, it's the chargeback code received from the card network.
   * @member {String} payment_response_code
   */
  exports.prototype['payment_response_code'] = undefined;
  /**
   * The text describing the appropriate code captured in the payment_response_code as received from the corresponding payment network.
   * @member {String} payment_response_msg
   */
  exports.prototype['payment_response_msg'] = undefined;



  return exports;
}));