define("scarabFxManagerApi", ["componentmodelComponentApi", "displayEngineApi", "gameLayoutApi", "clientkernelEventbusApi"],
    function(componentmodelComponentApi, displayEngineApi, gameLayoutApi, 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 scarabFxManagerApi == 'undefined') {
            var scarabFxManagerApi = {};
        };
        scarabFxManagerApi.FxManagerDeclaration = function() {};
        scarabFxManagerApi.FxManagerDeclaration = ck_implements(scarabFxManagerApi.FxManagerDeclaration, componentmodelComponentApi.IComponentDeclaration);
        scarabFxManagerApi.FxManagerDeclaration.__interfaces__ = [componentmodelComponentApi.IComponentDeclaration];
        scarabFxManagerApi.FxManagerDeclaration.__name__ = ["scarabFxManagerApi", "FxManagerDeclaration"];
        scarabFxManagerApi.FxManagerDeclaration.prototype.getChildComponents = function() {
            return null;
        };
        scarabFxManagerApi.FxManagerDeclaration.prototype.getReferredComponents = function() {
            return null;
        };
        scarabFxManagerApi.FxManagerDeclaration.prototype.getImplementedPorts = function() {
            return [scarabFxManagerApi.IFxManagerImplementationPort];
        };
        scarabFxManagerApi.FxManagerDeclaration.prototype.getUsedPorts = function() {
            return [scarabFxManagerApi.IFxManagerPort, gameLayoutApi.IGameLayoutPort];
        };
        scarabFxManagerApi.FxManagerDeclaration.prototype.__class__ = scarabFxManagerApi.FxManagerDeclaration;

        scarabFxManagerApi.IFxManagerPort = function() {}
        scarabFxManagerApi.IFxManagerPort.prototype = {

            getShow: function() {
                return {
                    arguments: [],
                    returns: "*"
                };
            },
            getHide: function() {
                return {
                    arguments: [],
                    returns: "*"
                };
            },
            getCompleted: function() {
                return {
                    arguments: [],
                    returns: "*"
                };
            }
        };

        scarabFxManagerApi.IFxManagerImplementationPort = function() {}
        scarabFxManagerApi.IFxManagerImplementationPort.prototype = {

            getShow: function() {
                return {
                    arguments: [],
                    returns: "*"
                };
            },
            getHide: function() {
                return {
                    arguments: [],
                    returns: "*"
                };
            },
            getCompleted: function() {
                return {
                    arguments: [],
                    returns: "*"
                };
            }
        };
        scarabFxManagerApi.FxManagerPort = function(bus) {
            this.completed = new clientkernelEventbusApi.Topic("fxManager:completed");
            this.hide = new clientkernelEventbusApi.Topic("fxManager:hide");
            this.show = new clientkernelEventbusApi.Topic("fxManager:show");
            this.hide.connect(bus);
            this.show.connect(bus);
            this.completed.connect(bus);
        };
        scarabFxManagerApi.FxManagerPort = ck_implements(scarabFxManagerApi.FxManagerPort, scarabFxManagerApi.IFxManagerPort);
        scarabFxManagerApi.FxManagerPort = ck_implements(scarabFxManagerApi.FxManagerPort, scarabFxManagerApi.IFxManagerImplementationPort);
        scarabFxManagerApi.FxManagerPort.__interfaces__ = [scarabFxManagerApi.IFxManagerPort, scarabFxManagerApi.IFxManagerImplementationPort];
        scarabFxManagerApi.FxManagerPort.__name__ = ["scarabFxManagerApi", "FxManagerPort"];
        scarabFxManagerApi.FxManagerPort.prototype.show = null;
        scarabFxManagerApi.FxManagerPort.prototype.hide = null;
        scarabFxManagerApi.FxManagerPort.prototype.completed = null;
        scarabFxManagerApi.FxManagerPort.prototype.getShow = function() {
            return this.show;
        };
        scarabFxManagerApi.FxManagerPort.prototype.getHide = function() {
            return this.hide;
        };
        scarabFxManagerApi.FxManagerPort.prototype.getCompleted = function() {
            return this.completed;
        };
        scarabFxManagerApi.FxManagerPort.prototype.__class__ = scarabFxManagerApi.FxManagerPort;
        scarabFxManagerApi.FxManagerPortFactory = function() {};
        scarabFxManagerApi.FxManagerPortFactory = ck_implements(scarabFxManagerApi.FxManagerPortFactory, componentmodelComponentApi.IPortFactory);
        scarabFxManagerApi.FxManagerPortFactory.__interfaces__ = [componentmodelComponentApi.IPortFactory];
        scarabFxManagerApi.FxManagerPortFactory.__name__ = ["scarabFxManagerApi", "FxManagerPortFactory"];
        scarabFxManagerApi.FxManagerPortFactory.prototype.provide = function(channel) {
            return new scarabFxManagerApi.FxManagerPort(channel);
        };
        scarabFxManagerApi.FxManagerPortFactory.prototype["use"] = function(channel) {
            return new scarabFxManagerApi.FxManagerPort(channel);
        };
        scarabFxManagerApi.FxManagerPortFactory.prototype.__class__ = scarabFxManagerApi.FxManagerPortFactory;
        scarabFxManagerApi.FxManagerTypeEnum = {
            __ename__: ["scarabFxManagerApi", "FxManagerTypeEnum"],
            __constructs__: ["fx_basic", "fx_back"]
        };
        scarabFxManagerApi.FxManagerTypeEnum.fx_basic = ["fx_basic", 0];
        scarabFxManagerApi.FxManagerTypeEnum.fx_basic.toString = $estr;
        scarabFxManagerApi.FxManagerTypeEnum.fx_basic.__enum__ = scarabFxManagerApi.FxManagerTypeEnum;
        scarabFxManagerApi.FxManagerTypeEnum.fx_back = ["fx_back", 1];
        scarabFxManagerApi.FxManagerTypeEnum.fx_back.toString = $estr;
        scarabFxManagerApi.FxManagerTypeEnum.fx_back.__enum__ = scarabFxManagerApi.FxManagerTypeEnum;
        scarabFxManagerApi.ShowFxPayload = function(fxType, id, position) {
            this.fxType = fxType;
            this.id = id;
            this.position = position;
        };
        scarabFxManagerApi.ShowFxPayload.__name__ = ["scarabFxManagerApi", "ShowFxPayload"];
        scarabFxManagerApi.ShowFxPayload.prototype.fxType = null;
        scarabFxManagerApi.ShowFxPayload.prototype.id = null;
        scarabFxManagerApi.ShowFxPayload.prototype.position = null;
        scarabFxManagerApi.ShowFxPayload.prototype.__class__ = scarabFxManagerApi.ShowFxPayload;
        if (typeof haxe == 'undefined') {
            var haxe = {};
        };

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

        };
        return {
            exports: scarabFxManagerApi
        };
    });
//# sourceURL=scarabFxManagerApi.js