var __extends = (this && this.__extends) || function (d, b) {
    for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
    function __() { this.constructor = d; }
    d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
};
/// <reference path="../../base/BaseClass.ts"/>
var econda;
(function (econda) {
    var recengine;
    (function (recengine) {
        var event;
        (function (event) {
            /**
             * Abstract base class for events.
             * @class econda.recengine.event.Event
             */
            var AbstractEvent = (function (_super) {
                __extends(AbstractEvent, _super);
                function AbstractEvent() {
                    _super.apply(this, arguments);
                    /**
                     * Sku of product if available
                     * @cfg {Date} timestamp
                     * @accessor
                     */
                    this._timestamp = new Date();
                }
                /**
                 * Get event type as string.
                 * @return {String}
                 */
                AbstractEvent.prototype.getType = function () {
                    return this.constructor['TYPE'];
                };
                AbstractEvent.prototype.getTimestamp = function () {
                    return this._timestamp;
                };
                AbstractEvent.prototype.setTimestamp = function (timestamp) {
                    this._timestamp = timestamp;
                };
                AbstractEvent.TYPE = null;
                return AbstractEvent;
            }(econda.base.BaseClass));
            event.AbstractEvent = AbstractEvent; // end of class
        })(event = recengine.event || (recengine.event = {}));
    })(recengine = econda.recengine || (econda.recengine = {}));
})(econda || (econda = {})); // end of module