(function(root, factory) {

if (typeof module === 'object' && module.exports) {
    // CommonJS-like environments that support module.exports, like Node.
    module.exports = factory(require('../ApiClient'), require('./InvocationContext'), require('../CommonUtil'), require('../ResponseWrapper'), require('./Base'), require('../OrbipayApiError'));
  }
}(this, function(ApiClient, InvocationContext, CommonUtil, ResponseWrapper, Base, OrbipayApiError) {
  'use strict';

    /**
    * The ResourceAudit wrapper module.
    * @module wrappers/ResourceAudit
    */
  var exports = function() {

  };
  exports.constructFromObject = function (data, obj) {
        if (data) {
            obj = obj || new exports();
            if (data.hasOwnProperty('channel')) {
                obj['channel'] = data['channel'];
            }
            if (data.hasOwnProperty('requestor_type')) {
                obj['requestor_type'] = data['requestor_type'];
            }
            if (data.hasOwnProperty('requestor')) {
                obj['requestor'] = data['requestor'];
            }
            if (data.hasOwnProperty('timestamp')) {
                obj['timestamp'] = data['timestamp'];
            }
        }
        return obj;
  };


  exports.prototype = Object.create(Base.prototype);
  exports.prototype.constructor = exports;

    /**
    * The channel through which the API is invoked. Please contact <a href = \"mailto: support@billerpayments.com\">support@billerpayments.com</a> to configure channels.
    * @member {String} channel
    */
  exports.prototype['channel'] = undefined;
    /**
    * If an API is being requested from an application that is being used directly by a customer, like the customer portal and IVR, the requestor_type should be set to \"customer\".</br> If an API is being requested from an application that is being used by third party agents/brokers servicing a customer on behalf of a biller/client, then the requestor_type should be set to \"external_user\". It should be noted that these users would not have logins for the EBPP Portal or Payment Center.
    * @member {String} requestor_type
    */
  exports.prototype['requestor_type'] = undefined;
    /**
    * The identifier for the requestor of the API, in EBPP. The value to be passed in the requestor field would depend on the requestor_type.</br> If the requestor_type is \"customer\", the requestor should be the EBPP generated customer id. In the case of self registration, where there is no EBPP generated customer id yet, the requestor should be set to 'guest'.</br> If the requestor_type is \"external_user\", the requestor can be any unique identifier that the client may have for the external agent. If the requestor_type is <b>system</b>, requestor is optional. 
    * @member {String} requestor
    */
  exports.prototype['requestor'] = undefined;
    /**
    * The UTC timestamp, in ISO8601 format, for the moment when the resource got created or modified in EBPP. For e.g., 2019-08-13T09:21:34.359+0000
    * @member {String} timestamp
    */
  exports.prototype['timestamp'] = undefined;




  return exports;

}));