define("slotmodelGamePluginApi", ["slotModelApi", "money"],
    function(slotModelApi, money) {
        "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 haxe == 'undefined') {
            var haxe = {};
        };

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

        };
        if (typeof slotmodelGamePluginApi == 'undefined') {
            var slotmodelGamePluginApi = {};
        };
        slotmodelGamePluginApi.EPluginFeature = function(value) {
            this.value = "";
            this.value = value;
        };
        slotmodelGamePluginApi.EPluginFeature.__name__ = ["slotmodelGamePluginApi", "EPluginFeature"];
        slotmodelGamePluginApi.EPluginFeature.prototype.value = null;
        slotmodelGamePluginApi.EPluginFeature.prototype.toString = function() {
            return this.value;
        };
        slotmodelGamePluginApi.EPluginFeature.prototype.equals = function(feature) {
            if (this.value == feature.value) return true;
            return false;
        };
        slotmodelGamePluginApi.EPluginFeature.all = function() {
            return [slotmodelGamePluginApi.EPluginFeature.ADD_LINE_OUTCOMES, slotmodelGamePluginApi.EPluginFeature.SCATTER_OUTCOMES, slotmodelGamePluginApi.EPluginFeature.BONUS_OUTCOMES, slotmodelGamePluginApi.EPluginFeature.RESUME_PER_STAKE, slotmodelGamePluginApi.EPluginFeature.CUSTOM_BIG_WIN, slotmodelGamePluginApi.EPluginFeature.STRIPE_LAYER_FOR_SYNCHRONIZED_REELS, slotmodelGamePluginApi.EPluginFeature.STRIPE_LAYER_PER_BET, slotmodelGamePluginApi.EPluginFeature.PROGRESS_METER, slotmodelGamePluginApi.EPluginFeature.CUSTOM_FIELD, slotmodelGamePluginApi.EPluginFeature.CUSTOM_DATA];
        };
        slotmodelGamePluginApi.EPluginFeature.prototype.__class__ = slotmodelGamePluginApi.EPluginFeature;

        slotmodelGamePluginApi.IGamePlugin = function() {}
        slotmodelGamePluginApi.IGamePlugin.prototype = {

            getImplementedFeatures: function() {
                return {
                    arguments: [],
                    returns: "array"
                };
            },
            getScatterWins: function(platformResponse, stage, slotDefinition) {
                return {
                    arguments: ["*", "string", "*"],
                    returns: "array"
                };
            },
            getBonusWins: function(platformResponse, stage, slotDefinition) {
                return {
                    arguments: ["*", "string", "*"],
                    returns: "array"
                };
            },
            getAdditionalLineWins: function(platformResponse, stage, slotDefinition) {
                return {
                    arguments: ["*", "string", "*"],
                    returns: "array"
                };
            },
            getResumePerStake: function(platformResponse, slotDefinition) {
                return {
                    arguments: ["*", "*"],
                    returns: "*"
                };
            },
            getCustomBigWin: function(totalStakeCredit, totalWinCredit) {
                return {
                    arguments: ["number", "number"],
                    returns: Map
                };
            },
            getNextSpinStripeLayersForSynchronizedReels: function(platformResponse, slotDefinition) {
                return {
                    arguments: ["*", "*"],
                    returns: "*"
                };
            },
            getNextSpinStripeLayersPerBet: function(platformResponse, slotDefinition) {
                return {
                    arguments: ["*", "*"],
                    returns: "*"
                };
            },
            getProgressMeter: function(platformResponse, slotDefinition) {
                return {
                    arguments: ["*", "*"],
                    returns: "number"
                };
            },
            parseCustomField: function(platformResponse) {
                return {
                    arguments: ["*"],
                    returns: "*"
                };
            },
            parseCustomData: function(platformResponse) {
                return {
                    arguments: ["*"],
                    returns: "*"
                };
            }
        };

        slotmodelGamePluginApi.IWin = function() {}
        slotmodelGamePluginApi.IWin.prototype = {

            getType: function() {
                return {
                    arguments: [],
                    returns: "string"
                };
            },
            getId: function() {
                return {
                    arguments: [],
                    returns: "string"
                };
            },
            getName: function() {
                return {
                    arguments: [],
                    returns: "string"
                };
            },
            getLineId: function() {
                return {
                    arguments: [],
                    returns: "number"
                };
            },
            getStakePerLineCredit: function() {
                return {
                    arguments: [],
                    returns: "number"
                };
            },
            getPrice: function() {
                return {
                    arguments: [],
                    returns: "*"
                };
            },
            getMultiplier: function() {
                return {
                    arguments: [],
                    returns: "number"
                };
            },
            getPayoutCredit: function() {
                return {
                    arguments: [],
                    returns: "number"
                };
            },
            getWinPath: function() {
                return {
                    arguments: [],
                    returns: "*"
                };
            },
            getWinningSymbol: function() {
                return {
                    arguments: [],
                    returns: "string"
                };
            },
            getPosition: function() {
                return {
                    arguments: [],
                    returns: "number"
                };
            },
            getSymbolCount: function() {
                return {
                    arguments: [],
                    returns: "number"
                };
            }
        };

        slotmodelGamePluginApi.IBonusWin = function() {}
        slotmodelGamePluginApi.IBonusWin.prototype = {

        };

        slotmodelGamePluginApi.ILineWin = function() {}
        slotmodelGamePluginApi.ILineWin.prototype = {

        };

        slotmodelGamePluginApi.INextSpinStripeLayers = function() {}
        slotmodelGamePluginApi.INextSpinStripeLayers.prototype = {

            getStripeLayersForSynchronizedReels: function(stage, lineCount, betPerLineCredit) {
                return {
                    arguments: ["string", "number", "number"],
                    returns: "array"
                };
            },
            getStripeLayersPerBet: function(slotDefinition, stage, stakeItems) {
                return {
                    arguments: ["*", "string", "*"],
                    returns: "array"
                };
            }
        };

        slotmodelGamePluginApi.IOutcome = function() {}
        slotmodelGamePluginApi.IOutcome.prototype = {

            getStage: function() {
                return {
                    arguments: [],
                    returns: "string"
                };
            },
            getReelStop: function() {
                return {
                    arguments: [],
                    returns: "*"
                };
            },
            getReelStopAdditional: function() {
                return {
                    arguments: [],
                    returns: "*"
                };
            },
            getLineWins: function() {
                return {
                    arguments: [],
                    returns: "array"
                };
            },
            getScatterWins: function() {
                return {
                    arguments: [],
                    returns: "array"
                };
            },
            getBonusWins: function() {
                return {
                    arguments: [],
                    returns: "array"
                };
            },
            getPickerWins: function() {
                return {
                    arguments: [],
                    returns: "array"
                };
            },
            getCustomField: function() {
                return {
                    arguments: [],
                    returns: "string"
                };
            }
        };

        slotmodelGamePluginApi.IPickerWin = function() {}
        slotmodelGamePluginApi.IPickerWin.prototype = {

        };

        slotmodelGamePluginApi.IResumePerStake = function() {}
        slotmodelGamePluginApi.IResumePerStake.prototype = {

            getResumeOutcome: function(stage, lineCount, betPerLineCredit) {
                return {
                    arguments: ["string", "number", "number"],
                    returns: "*"
                };
            }
        };

        slotmodelGamePluginApi.IScatterWin = function() {}
        slotmodelGamePluginApi.IScatterWin.prototype = {

        };
        slotmodelGamePluginApi.EPluginFeature.ADD_LINE_OUTCOMES = new slotmodelGamePluginApi.EPluginFeature("AditionalLineOutcomes");;
        slotmodelGamePluginApi.EPluginFeature.SCATTER_OUTCOMES = new slotmodelGamePluginApi.EPluginFeature("ScatterOutcomes");;
        slotmodelGamePluginApi.EPluginFeature.BONUS_OUTCOMES = new slotmodelGamePluginApi.EPluginFeature("BonusOutcomes");;
        slotmodelGamePluginApi.EPluginFeature.RESUME_PER_STAKE = new slotmodelGamePluginApi.EPluginFeature("ResumePerStake");;
        slotmodelGamePluginApi.EPluginFeature.CUSTOM_BIG_WIN = new slotmodelGamePluginApi.EPluginFeature("CustomBigWin");;
        slotmodelGamePluginApi.EPluginFeature.STRIPE_LAYER_FOR_SYNCHRONIZED_REELS = new slotmodelGamePluginApi.EPluginFeature("StripeLayerForSynchronizedReels");;
        slotmodelGamePluginApi.EPluginFeature.STRIPE_LAYER_PER_BET = new slotmodelGamePluginApi.EPluginFeature("StripeLayerPerBet");;
        slotmodelGamePluginApi.EPluginFeature.PROGRESS_METER = new slotmodelGamePluginApi.EPluginFeature("ProgressMeter");;
        slotmodelGamePluginApi.EPluginFeature.CUSTOM_FIELD = new slotmodelGamePluginApi.EPluginFeature("CustomField");;
        slotmodelGamePluginApi.EPluginFeature.CUSTOM_DATA = new slotmodelGamePluginApi.EPluginFeature("CustomData");;
        return {
            exports: slotmodelGamePluginApi
        };
    });
//# sourceURL=slotModelGamePluginApi.js