/// <reference path="./IPlugin.ts" />
/// <reference path="./PluginManager.ts" />
/// <reference path="../debug.ts" />
var econda;
(function (econda) {
    var tracking;
    (function (tracking) {
        var TrackingPluginManager = econda.tracking.PluginManager;
        /**
         * Writes all tracking requests to browser console
         *
         * @class econda.tracking.DebugLogger
         */
        var DebugLogger = (function () {
            function DebugLogger() {
            }
            /**
             * Get singleton instance of tracking listener.
             * @static
             */
            DebugLogger.getInstance = function () {
                if (DebugLogger._instance === null) {
                    DebugLogger._instance = new DebugLogger();
                }
                return DebugLogger._instance;
            };
            /**
             * Called on each tracking request
             */
            DebugLogger.prototype.onRequest = function (emosProperties, cfg) {
                econda.debug.log('Tracking request', emosProperties, cfg);
            };
            /**
             * Register instance of debug logger at tracking plug-in manager
             * @static
             */
            DebugLogger.enable = function () {
                TrackingPluginManager.registerPlugin(DebugLogger.getInstance());
            };
            /**
             * Unregister debug logger at tracking plug-in manager
             * @static
             */
            DebugLogger.disable = function () {
                TrackingPluginManager.unregisterPlugin(DebugLogger.getInstance());
            };
            DebugLogger._instance = null;
            return DebugLogger;
        }());
        tracking.DebugLogger = DebugLogger;
        // auto enable tracking for events
        if ((typeof econdaConfig.trackingLogRequests !== 'undefined' && econdaConfig.trackingLogRequests == true)
            || (typeof econdaConfig.trackingLogRequests === 'undefined' && econdaConfig.debug == true)) {
            DebugLogger.enable();
        }
    })(tracking = econda.tracking || (econda.tracking = {}));
})(econda || (econda = {}));