define("clientkernelLoaderApi", ["clientkernelEventbusApi"],
    function(clientkernelEventbusApi) {
        "use strict";

        function $iterator(o) {
            if (o instanceof Array) return function() {
                return {
                    cur: 0,
                    arr: o,
                    hasNext: function() {
                        return this.cur < this.arr.length;
                    },
                    next: function() {
                        return this.arr[this.cur++];
                    }
                };
            };
            return typeof(o.iterator) == 'function' ? $bind(o, o.iterator) : o.iterator;
        };;
        var $fid = 0;

        function $bind(o, m) {
            if (m == null) return null;
            if (m.__id__ == null) m.__id__ = $fid++;
            var f;
            if (o.hx__closures__ == null) o.hx__closures__ = {};
            else f = o.hx__closures__[m.__id__];
            if (f == null) {
                f = function() {
                    return f.method.apply(f.scope, arguments);
                };
                f.scope = o;
                f.method = m;
                o.hx__closures__[m.__id__] = f;
            }
            return f;
        };
        var $_;
        var $estr = function() {
            return _hcmn_.js_Boot.__string_rec(this, '');
        };
        if (typeof clientkernelLoaderApi == 'undefined') {
            var clientkernelLoaderApi = {};
        };

        clientkernelLoaderApi.IAsset = function() {}
        clientkernelLoaderApi.IAsset.prototype = {

            getId: function() {
                return {
                    arguments: [],
                    returns: "string"
                };
            },
            getType: function() {
                return {
                    arguments: [],
                    returns: "string"
                };
            },
            getUrl: function() {
                return {
                    arguments: [],
                    returns: "string"
                };
            },
            isLoaded: function() {
                return {
                    arguments: [],
                    returns: "boolean"
                };
            },
            getContent: function() {
                return {
                    arguments: [],
                    returns: "*"
                };
            },
            getChildAsset: function(id) {
                return {
                    arguments: ["string"],
                    returns: "*"
                };
            },
            getAllContent: function() {
                return {
                    arguments: [],
                    returns: "*"
                };
            }
        };

        clientkernelLoaderApi.IAssetRegistry = function() {}
        clientkernelLoaderApi.IAssetRegistry.prototype = {

            getAsset: function(id) {
                return {
                    arguments: ["string"],
                    returns: "*"
                };
            },
            getAssetsContent: function(ids) {
                return {
                    arguments: ["array"],
                    returns: "*"
                };
            },
            assetLoaded: function() {
                return {
                    arguments: [],
                    returns: "*"
                };
            },
            progress: function() {
                return {
                    arguments: [],
                    returns: "*"
                };
            }
        };

        clientkernelLoaderApi.ILoadProgress = function() {}
        clientkernelLoaderApi.ILoadProgress.prototype = {

            getId: function() {
                return {
                    arguments: [],
                    returns: "string"
                };
            },
            getItems: function() {
                return {
                    arguments: [],
                    returns: "number"
                };
            },
            getCurrent: function() {
                return {
                    arguments: [],
                    returns: "number"
                };
            },
            getComplete: function() {
                return {
                    arguments: [],
                    returns: "boolean"
                };
            }
        };

        clientkernelLoaderApi.ILoadingProgress = function() {}
        clientkernelLoaderApi.ILoadingProgress.prototype = {

            getFiles: function() {
                return {
                    arguments: [],
                    returns: "number"
                };
            },
            getFilesLoaded: function() {
                return {
                    arguments: [],
                    returns: "number"
                };
            },
            getFilesSize: function() {
                return {
                    arguments: [],
                    returns: "number"
                };
            },
            getFilesSizeLoaded: function() {
                return {
                    arguments: [],
                    returns: "number"
                };
            }
        };

        clientkernelLoaderApi.IVariableRegistry = function() {}
        clientkernelLoaderApi.IVariableRegistry.prototype = {

            get: function(name, defaultValue) {
                return {
                    arguments: ["string", {
                        type: "*",
                        opt: true
                    }],
                    returns: "string"
                };
            }
        };
        clientkernelLoaderApi.AssetLoadedTopic = function() {
            clientkernelEventbusApi.Topic.call(this, "assetLoaded");
        };
        clientkernelLoaderApi.AssetLoadedTopic.__name__ = ["clientkernelLoaderApi", "AssetLoadedTopic"];
        clientkernelLoaderApi.AssetLoadedTopic.__super__ = clientkernelEventbusApi.Topic;
        for (var k in clientkernelEventbusApi.Topic.prototype) clientkernelLoaderApi.AssetLoadedTopic.prototype[k] = clientkernelEventbusApi.Topic.prototype[k];
        clientkernelLoaderApi.AssetLoadedTopic.prototype.__class__ = clientkernelLoaderApi.AssetLoadedTopic;
        clientkernelLoaderApi.HideDefaultPreloaderTopic = function() {
            clientkernelEventbusApi.Topic.call(this, "hideDefaultPreloader");
        };
        clientkernelLoaderApi.HideDefaultPreloaderTopic.__name__ = ["clientkernelLoaderApi", "HideDefaultPreloaderTopic"];
        clientkernelLoaderApi.HideDefaultPreloaderTopic.__super__ = clientkernelEventbusApi.Topic;
        for (var k in clientkernelEventbusApi.Topic.prototype) clientkernelLoaderApi.HideDefaultPreloaderTopic.prototype[k] = clientkernelEventbusApi.Topic.prototype[k];
        clientkernelLoaderApi.HideDefaultPreloaderTopic.prototype.__class__ = clientkernelLoaderApi.HideDefaultPreloaderTopic;
        clientkernelLoaderApi.LoadProgressTopic = function() {
            clientkernelEventbusApi.Topic.call(this, "LoadProgress");
        };
        clientkernelLoaderApi.LoadProgressTopic.__name__ = ["clientkernelLoaderApi", "LoadProgressTopic"];
        clientkernelLoaderApi.LoadProgressTopic.__super__ = clientkernelEventbusApi.Topic;
        for (var k in clientkernelEventbusApi.Topic.prototype) clientkernelLoaderApi.LoadProgressTopic.prototype[k] = clientkernelEventbusApi.Topic.prototype[k];
        clientkernelLoaderApi.LoadProgressTopic.prototype.__class__ = clientkernelLoaderApi.LoadProgressTopic;
        if (typeof haxe == 'undefined') {
            var haxe = {};
        };

        haxe.IMap = function() {}
        haxe.IMap.prototype = {

        };
        return {
            exports: clientkernelLoaderApi
        };
    });