define("clientkernelLoaderApiPlugins", ["clientkernelLoaderApi", "clientkernelEventbusApi", "clientkernelModulesApi"],
    function(clientkernelLoaderApi, clientkernelEventbusApi, clientkernelModulesApi) {
        "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 clientkernelLoaderApiPlugins == 'undefined') {
            var clientkernelLoaderApiPlugins = {};
        };

        clientkernelLoaderApiPlugins.IAssetAccess = function() {}
        clientkernelLoaderApiPlugins.IAssetAccess.prototype = {

            setContent: function(content) {
                return {
                    arguments: ["*"],
                    returns: "void"
                };
            },
            setProgress: function(loadedBytes, ofSize) {
                return {
                    arguments: ["number", "number"],
                    returns: "void"
                };
            },
            add: function(id, url, type, onrequest, items) {
                return {
                    arguments: [{
                        type: "*",
                        opt: true
                    }, "string", "string", "*", {
                        type: "*",
                        opt: true
                    }],
                    returns: "*"
                };
            }
        };

        clientkernelLoaderApiPlugins.IAssetLoader = function() {}
        clientkernelLoaderApiPlugins.IAssetLoader.prototype = {

            setup: function(lc, id, type, url, config, onrequest) {
                return {
                    arguments: ["*", "string", "string", "string", "*", "*"],
                    returns: "void"
                };
            },
            load: function(onfinish) {
                return {
                    arguments: ["*"],
                    returns: "void"
                };
            },
            unload: function() {
                return {
                    arguments: [],
                    returns: "void"
                };
            }
        };

        clientkernelLoaderApiPlugins.IAssetPlugin = function() {}
        clientkernelLoaderApiPlugins.IAssetPlugin.prototype = {

            getAssetTypes: function() {
                return {
                    arguments: [],
                    returns: "array"
                };
            },
            createLoader: function() {
                return {
                    arguments: [],
                    returns: "*"
                };
            }
        };

        clientkernelLoaderApiPlugins.IAssetRegistryAccess = function() {}
        clientkernelLoaderApiPlugins.IAssetRegistryAccess.prototype = {

            add: function(id, url, type, onrequest, items) {
                return {
                    arguments: [{
                        type: "*",
                        opt: true
                    }, "string", "string", "*", {
                        type: "*",
                        opt: true
                    }],
                    returns: "*"
                };
            },
            remove: function(id) {
                return {
                    arguments: ["string"],
                    returns: "void"
                };
            }
        };

        clientkernelLoaderApiPlugins.IConfigurationPlugin = function() {}
        clientkernelLoaderApiPlugins.IConfigurationPlugin.prototype = {

            getSection: function() {
                return {
                    arguments: [],
                    returns: "string"
                };
            },
            resolve: function(lc, config) {
                return {
                    arguments: ["*", "*"],
                    returns: "void"
                };
            }
        };

        clientkernelLoaderApiPlugins.ILoader = function() {}
        clientkernelLoaderApiPlugins.ILoader.prototype = {

            addQueue: function(id, config, baseUrl, onFinished) {
                return {
                    arguments: ["string", "*", "string", "*"],
                    returns: "void"
                };
            }
        };

        clientkernelLoaderApiPlugins.ILoaderContext = function() {}
        clientkernelLoaderApiPlugins.ILoaderContext.prototype = {

            getVars: function() {
                return {
                    arguments: [],
                    returns: "*"
                };
            },
            getAssets: function() {
                return {
                    arguments: [],
                    returns: "*"
                };
            },
            getLoader: function() {
                return {
                    arguments: [],
                    returns: "*"
                };
            },
            getModuleContext: function() {
                return {
                    arguments: [],
                    returns: "*"
                };
            }
        };

        clientkernelLoaderApiPlugins.IVariables = function() {}
        clientkernelLoaderApiPlugins.IVariables.prototype = {

            get: function(name, defaultValue) {
                return {
                    arguments: ["string", {
                        type: "*",
                        opt: true
                    }],
                    returns: "string"
                };
            },
            set: function(name, value) {
                return {
                    arguments: ["string", "string"],
                    returns: "void"
                };
            },
            expand: function(value) {
                return {
                    arguments: ["string"],
                    returns: "string"
                };
            }
        };
        if (typeof haxe == 'undefined') {
            var haxe = {};
        };

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

        };
        return {
            exports: clientkernelLoaderApiPlugins
        };
    });