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




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

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

   * Constructs a new <code>CustomersResponse</code>.
   * @alias module:models/CustomersResponse
   * @class
   */
  var exports = function() {
    var _this = this;








  };

  /**
   * Constructs a <code>CustomersResponse</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/CustomersResponse} obj Optional instance to populate.
   * @return {module:models/CustomersResponse} The populated <code>CustomersResponse</code> instance.
   */
  exports.constructFromObject = function(data, obj) {
    if (data) {
      obj = obj || new exports();

      if (data.hasOwnProperty('list')) {
        obj['list'] = ApiClient.convertToType(data['list'], [CustomerResponse]);
      }
      if (data.hasOwnProperty('total_results_count')) {
        obj['total_results_count'] = ApiClient.convertToType(data['total_results_count'], 'String');
      }
      if (data.hasOwnProperty('has_more_results')) {
        obj['has_more_results'] = ApiClient.convertToType(data['has_more_results'], 'String');
      }
      if (data.hasOwnProperty('url')) {
        obj['url'] = ApiClient.convertToType(data['url'], 'String');
      }
      if (data.hasOwnProperty('from_index')) {
        obj['from_index'] = ApiClient.convertToType(data['from_index'], 'String');
      }
      if (data.hasOwnProperty('to_index')) {
        obj['to_index'] = ApiClient.convertToType(data['to_index'], 'String');
      }
      if (data.hasOwnProperty('query_id')) {
        obj['query_id'] = ApiClient.convertToType(data['query_id'], 'String');
      }
    }
    return obj;
  };

  /**
   * @member {Array.<module:models/CustomerResponse>} list
   */
  exports.prototype['list'] = undefined;
  /**
   * The total number of customers available matching the search criteria.
   * @member {String} total_results_count
   */
  exports.prototype['total_results_count'] = undefined;
  /**
   * true if there are more results or pages
   * @member {module:models/CustomersResponse.HasMoreResultsEnum} has_more_results
   */
  exports.prototype['has_more_results'] = undefined;
  /**
   * This URL fetches the next or previous set of payments, based on the presence of after_object or before_object parameter.
   * @member {String} url
   */
  exports.prototype['url'] = undefined;
  /**
   * The id of the object before which the previous set of objects are to be retrieved.
   * @member {String} from_index
   */
  exports.prototype['from_index'] = undefined;
  /**
   * The id of the object after which the next set of objects are to be retrieved.
   * @member {String} to_index
   */
  exports.prototype['to_index'] = undefined;
  /**
   * The query id of the object.
   * @member {String} query_id
   */
  exports.prototype['query_id'] = undefined;


  /**
   * Allowed values for the <code>has_more_results</code> property.
   * @enum {String}
   * @readonly
   */
  exports.HasMoreResultsEnum = {
    /**
     * value: "true"
     * @const
     */
    "true": "true",
    /**
     * value: "false"
     * @const
     */
    "false": "false"  };


  return exports;
}));