{"version":3,"file":"static/chunks/41083-d3138662747a2ba7.js","sources":["webpack://_N_E/./src/LegacyApp/client/modules/app/strategyV3Service.js","webpack://_N_E/./src/modules/games/Game/constants/strategy.constants.ts","webpack://_N_E/./src/modules/games/Game/methods/checkCompatibleStrategy.ts","webpack://_N_E/./src/modules/games/Game/types/RollRule.ts"],"sourceRoot":"","sourcesContent":["import { getGamesList } from '@modules/games/Game/methods/getGamesList';\nimport { isTrueOrZero } from '@common/methods/isTrueOrZero';\nimport {\n\tcommands,\n\twhenNames,\n\twhenValueTypes,\n} from '@modules/games/Game/constants/strategy.constants';\nimport { checkCompatibleStrategy } from '@modules/games/Game/methods/checkCompatibleStrategy';\nimport { countPrecision } from '../../../methods/math/countPrecision';\nimport { config } from '../../config';\nimport { game_config } from '../../game_config';\nimport { validatePayout, validateWinChance } from './validateService';\nimport { validateBetAmount } from './gameService';\n\nexport const parseEasyConfigForAPI = (config) => {\n\treturn config\n\t\t.map((row) => {\n\t\t\tif (row.command[0].value) {\n\t\t\t\trow.command[0].value = parseFloat(row.command[0].value);\n\t\t\t}\n\t\t\tif (row.when[0].value) {\n\t\t\t\trow.when[0].value = parseFloat(row.when[0].value);\n\t\t\t}\n\t\t\treturn row;\n\t\t})\n\t\t.filter((row) => {\n\t\t\treturn !(\n\t\t\t\t(row.command[0].name === 'stop' &&\n\t\t\t\t\t(row.when[0].name === 'profit' || row.when[0].name === 'loss') &&\n\t\t\t\t\t!parseFloat(row.when[0].value)) ||\n\t\t\t\t(row.command[0].name === 'increaseAmountPercent' &&\n\t\t\t\t\trow.command[0].value !== undefined &&\n\t\t\t\t\t!parseFloat(row.command[0].value))\n\t\t\t);\n\t\t});\n};\n\nexport const parseStrategy = (config) => {\n\treturn {\n\t\t...config,\n\t\trolls: isTrueOrZero(config.rolls) ? config.rolls : 0,\n\t};\n};\n\nexport const getCommands = (data) => {\n\treturn data.map((el) => ({\n\t\tdata: el,\n\t\tparams: commands.find((command) => el.name === command.id),\n\t}));\n};\n\nexport const getConditions = (data) => {\n\treturn data.map((el) => ({\n\t\tdata: el,\n\t\tparams: whenNames.find((condition) => el.name === condition.id),\n\t}));\n};\n\nexport const getConditionValidationErrors = (data, game, rule) => {\n\tconst command = errorCommand(data.command, game, rule);\n\tconst condition = errorCondition(data.when, game);\n\tif (!Object.keys(command).length && !Object.keys(condition).length) {\n\t\treturn false;\n\t}\n\tconst errors = {};\n\tif (Object.keys(command).length) {\n\t\terrors.command = command;\n\t}\n\tif (Object.keys(condition).length) {\n\t\terrors.condition = condition;\n\t}\n\tconsole.log('validateCondition', {\n\t\tcommand,\n\t\tcondition,\n\t\terrors,\n\t\tdata,\n\t\tgame,\n\t});\n\treturn errors;\n};\n\nexport const updateStrategyWithValidation = (config, game, rule) => {\n\treturn config.map((conditionRow) => {\n\t\treturn {\n\t\t\t...conditionRow,\n\t\t\terrors: getConditionValidationErrors(conditionRow, game, rule),\n\t\t};\n\t});\n};\n\nexport const errorCommand = (data, game = 'dice', rule) => {\n\tconsole.log('validate COMMAND - 1', { data, game, rule });\n\tconst errors = {};\n\tdata.forEach((el, index) => {\n\t\tconst command = commands.find((comm) => comm.id === el.name);\n\t\tif (!command || !isCommandAvailable(command, game, rule)) {\n\t\t\terrors[index] = 'Invalid command';\n\t\t\treturn errors;\n\t\t}\n\t\tif (\n\t\t\t(!command.noValue && !isTrueOrZero(parseFloat(el.value))) ||\n\t\t\t(command.noValue && isTrueOrZero(parseFloat(el.value)))\n\t\t) {\n\t\t\terrors[index] = 'commandValue';\n\t\t}\n\t\tif (!command.noValue) {\n\t\t\tif (el.name.indexOf('Percent') > -1) {\n\t\t\t\tif (\n\t\t\t\t\tcountPrecision(el.value) >\n\t\t\t\t\tconfig.games.autobet.expertModePercentCommandDecimals\n\t\t\t\t) {\n\t\t\t\t\terrors[index] = {\n\t\t\t\t\t\tlabel: 'Maximum decimal places cannot exceed {{number}}',\n\t\t\t\t\t\toptions: {\n\t\t\t\t\t\t\tnumber: config.games.autobet.expertModePercentCommandDecimals,\n\t\t\t\t\t\t},\n\t\t\t\t\t};\n\t\t\t\t\treturn errors;\n\t\t\t\t}\n\t\t\t\tif (el.name.indexOf('increase') > -1 && parseFloat(el.value) <= -100) {\n\t\t\t\t\terrors[index] = 'commandIncreaseValue';\n\t\t\t\t\treturn errors;\n\t\t\t\t}\n\t\t\t\tif (el.name.indexOf('decrease') > -1 && parseFloat(el.value) >= 100) {\n\t\t\t\t\terrors[index] = 'commandDecreaseValue';\n\t\t\t\t\treturn errors;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (el.name.indexOf('WinChance') > -1) {\n\t\t\t\t\tconst decimal = game_config?.[game]?.winChanceDecimal\n\t\t\t\t\t\t? game_config[game].winChanceDecimal\n\t\t\t\t\t\t: config.decimals.winChance;\n\t\t\t\t\tif (countPrecision(el.value) > decimal) {\n\t\t\t\t\t\terrors[index] = {\n\t\t\t\t\t\t\tlabel: 'Maximum decimal places cannot exceed {{number}}',\n\t\t\t\t\t\t\toptions: {\n\t\t\t\t\t\t\t\tnumber: decimal,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t};\n\t\t\t\t\t\treturn errors;\n\t\t\t\t\t}\n\t\t\t\t\tconst exclude = [];\n\t\t\t\t\tif (\n\t\t\t\t\t\t['decreaseWinChanceValue', 'increaseWinChanceValue'].indexOf(\n\t\t\t\t\t\t\tel.name,\n\t\t\t\t\t\t) > -1\n\t\t\t\t\t) {\n\t\t\t\t\t\texclude.push('min');\n\t\t\t\t\t}\n\t\t\t\t\tconst validate = validateWinChance(el.value, game, exclude); // TODO: strategy per game\n\t\t\t\t\tif (validate.error) {\n\t\t\t\t\t\terrors[index] =\n\t\t\t\t\t\t\tvalidate.error === true ? 'commandValue' : validate.error;\n\t\t\t\t\t\treturn errors;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (el.name.indexOf('Multiplier') > -1) {\n\t\t\t\t\tconst decimal =\n\t\t\t\t\t\tgame_config[game] && game_config[game].payoutDecimal\n\t\t\t\t\t\t\t? game_config[game].payoutDecimal\n\t\t\t\t\t\t\t: config.decimals.payout;\n\t\t\t\t\tif (countPrecision(el.value) > decimal) {\n\t\t\t\t\t\terrors[index] = {\n\t\t\t\t\t\t\tlabel: 'Maximum decimal places cannot exceed {{number}}',\n\t\t\t\t\t\t\toptions: {\n\t\t\t\t\t\t\t\tnumber: decimal,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t};\n\t\t\t\t\t\treturn errors;\n\t\t\t\t\t}\n\t\t\t\t\tconst exclude = [];\n\t\t\t\t\tif (\n\t\t\t\t\t\t['decreaseMultiplierValue', 'increaseMultiplierValue'].indexOf(\n\t\t\t\t\t\t\tel.name,\n\t\t\t\t\t\t) > -1\n\t\t\t\t\t) {\n\t\t\t\t\t\texclude.push('min');\n\t\t\t\t\t}\n\t\t\t\t\tconst validate = validatePayout(el.value, game, exclude); // TODO: strategy per game\n\t\t\t\t\tif (validate.error) {\n\t\t\t\t\t\terrors[index] =\n\t\t\t\t\t\t\tvalidate.error === true ? 'commandValue' : validate.error;\n\t\t\t\t\t\treturn errors;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (el.name.indexOf('Amount') > -1) {\n\t\t\t\t\tconst decimal = config.decimals.bet;\n\t\t\t\t\tif (countPrecision(el.value) > decimal) {\n\t\t\t\t\t\terrors[index] = {\n\t\t\t\t\t\t\tlabel: 'Maximum decimal places cannot exceed {{number}}',\n\t\t\t\t\t\t\toptions: {\n\t\t\t\t\t\t\t\tnumber: decimal,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t};\n\t\t\t\t\t\treturn errors;\n\t\t\t\t\t}\n\t\t\t\t\tconst validate = validateBetAmount({ value: el.value, game });\n\t\t\t\t\t// console.log('validate COMMAND - 2', {data, game, el, validate});\n\t\t\t\t\tif (validate.error) {\n\t\t\t\t\t\terrors[index] =\n\t\t\t\t\t\t\tvalidate.error === true ? 'commandValue' : validate.error;\n\t\t\t\t\t\treturn errors;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (typeof el.value === 'string' && el.value) {\n\t\t\t\tif ([',', '.'].indexOf(el.value[el.value.length - 1]) > -1) {\n\t\t\t\t\terrors[index] = 'commandValue';\n\t\t\t\t\treturn errors;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t});\n\n\t// console.log('error', {\n\t//   data,\n\t//   errors,\n\t// });\n\treturn errors;\n};\n\nexport const errorCondition = (data) => {\n\t// console.log('validate CONDITION - 1', {data});\n\tconst errors = {};\n\tdata.forEach((el, index) => {\n\t\tconst whenName = whenNames.find((whenName) => whenName.id === el.name);\n\t\tconst whenValueType = whenValueTypes.find(\n\t\t\t(whenValueType) => whenValueType.id === el.type,\n\t\t);\n\n\t\tif (!whenName) {\n\t\t\terrors[index] = 'Invalid condition';\n\t\t\treturn errors;\n\t\t}\n\t\tif (\n\t\t\t(!whenName.noValue && !isTrueOrZero(parseFloat(el.value))) ||\n\t\t\t(whenName.noValue && parseFloat(el.value))\n\t\t) {\n\t\t\t// console.log('Invalid value noValue', el);\n\t\t\terrors[index] = 'whenValue';\n\t\t\treturn errors;\n\t\t}\n\t\t// console.log({\n\t\t// \twhenName, el,\n\t\t// });\n\t\tif (!whenName.noValue) {\n\t\t\tconst onlyNegativeValues = whenValueType?.rules?.negative?.includes(\n\t\t\t\twhenName.name,\n\t\t\t);\n\n\t\t\tif (\n\t\t\t\t(parseFloat(el.value) < 0 && !onlyNegativeValues) ||\n\t\t\t\t(onlyNegativeValues && parseFloat(el.value) >= 0)\n\t\t\t) {\n\t\t\t\t// console.log('Invalid value below zero', el);\n\t\t\t\terrors[index] = `whenValue${onlyNegativeValues ? 'Negative' : ''}`;\n\t\t\t\treturn errors;\n\t\t\t}\n\t\t\tif (typeof el.value === 'string' && el.value) {\n\t\t\t\tif ([',', '.'].indexOf(el.value[el.value.length - 1]) > -1) {\n\t\t\t\t\t// console.log('Invalid value string', el);\n\t\t\t\t\terrors[index] = 'whenValue';\n\t\t\t\t\treturn errors;\n\t\t\t\t}\n\t\t\t}\n\t\t\t// On easy mode it is valid settings\n\t\t\t// if (\n\t\t\t// \t(el.name === 'loss' || el.name === 'profit') &&\n\t\t\t// \tparseFloat(el.value) === 0\n\t\t\t// ) {\n\t\t\t// \terrors[index] = `when${capitalize(el.name)}Value`;\n\t\t\t// \treturn errors;\n\t\t\t// }\n\t\t}\n\t\tif (!whenName.noValue && whenName.dataType === 'bets') {\n\t\t\tconst value = parseFloat(el.value);\n\t\t\t// console.log(!value, value < 0, value % 1 > 0);\n\t\t\tif (!value || value < 0 || value % 1 > 0) {\n\t\t\t\t// console.log('Invalid bets value', el);\n\t\t\t\terrors[index] = 'whenValue';\n\t\t\t\treturn errors;\n\t\t\t}\n\t\t\t// if ([]) {\n\t\t\t//   errors[index] = `when${capitalize(el.name)}Value`;\n\t\t\t// }\n\t\t}\n\t});\n\t// console.log('error', {\n\t//   data,\n\t//   errors,\n\t// });\n\treturn errors;\n};\n\nexport const getStrategyGame = (strategy) => {\n\treturn getGamesList().find(\n\t\t(el) => checkCompatibleStrategy(el, strategy).valid,\n\t);\n};\n\nexport const getStrategyGames = (strategy) => {\n\tif (!strategy) {\n\t\treturn getGamesList();\n\t}\n\treturn getGamesList().filter(\n\t\t(game) => checkCompatibleStrategy(game, strategy).valid,\n\t);\n};\n\nexport const isCommandAvailable = (command, game, rule) => {\n\tconst matchGames = !command?.games?.length\n\t\t? true\n\t\t: command.games.some((commandGame) => commandGame === game);\n\tconst matchRules = !command?.rules?.length\n\t\t? true\n\t\t: command.rules.some((commandRule) => commandRule === rule);\n\treturn matchGames && matchRules;\n};\n","import { mathService } from '@legacyApp/client/modules/math/mathService';\nimport { config } from '@legacyApp/client/config';\nimport {\n\tgetMaxWinChance,\n\tgetMinWinChance,\n} from '@legacyApp/client/modules/app/validateService';\nimport { getPayout } from '@legacyApp/client/modules/app/gameService';\nimport { RollRule } from '../types/RollRule';\nimport { GameType } from './availableGames';\n\nexport const commands = [\n\t{\n\t\tid: 'stop',\n\t\tname: 'Stop',\n\t\tnoValue: true,\n\t},\n\t{\n\t\tid: 'resetAmount',\n\t\tname: 'Reset amount',\n\t\tnoValue: true,\n\t},\n\t{\n\t\tid: 'increaseAmountPercent',\n\t\tname: 'Increase amount by',\n\t\tdataType: 'percent',\n\t},\n\t{\n\t\tid: 'decreaseAmountPercent',\n\t\tname: 'Decrease amount by',\n\t\tdataType: 'percent',\n\t},\n\t{\n\t\tid: 'switch',\n\t\tname: 'Switch over/under',\n\t\tnoValue: true,\n\t\tgames: [GameType.DICE],\n\t\trules: [RollRule.OVER, RollRule.UNDER],\n\t},\n\t{\n\t\tid: 'increaseAmountValue',\n\t\tname: 'Add to amount',\n\t\tdataType: 'currency',\n\t},\n\t{\n\t\tid: 'decreaseAmountValue',\n\t\tname: 'Subtract from amount',\n\t\tdataType: 'currency',\n\t},\n\t{\n\t\tid: 'setAmount',\n\t\tname: 'Set amount',\n\t\tdataType: 'currency',\n\t},\n\t{\n\t\tid: 'resetWinChance',\n\t\tname: 'Reset win chance',\n\t\tnoValue: true,\n\t\tgames: [GameType.DICE],\n\t\trules: [RollRule.OVER, RollRule.UNDER],\n\t},\n\t{\n\t\tid: 'increaseWinChancePercent',\n\t\tname: 'Increase win chance by',\n\t\tdataType: 'percent',\n\t\tgames: [GameType.DICE],\n\t\trules: [RollRule.OVER, RollRule.UNDER],\n\t},\n\t{\n\t\tid: 'decreaseWinChancePercent',\n\t\tname: 'Decrease win chance by',\n\t\tdataType: 'percent',\n\t\tgames: [GameType.DICE],\n\t\trules: [RollRule.OVER, RollRule.UNDER],\n\t},\n\t{\n\t\tid: 'increaseWinChanceValue',\n\t\tname: 'Add to win chance',\n\t\tprecision: 2,\n\t\tgames: [GameType.DICE],\n\t\trules: [RollRule.OVER, RollRule.UNDER],\n\t},\n\t{\n\t\tid: 'decreaseWinChanceValue',\n\t\tname: 'Subtract from win chance',\n\t\tprecision: 2,\n\t\tgames: [GameType.DICE],\n\t\trules: [RollRule.OVER, RollRule.UNDER],\n\t},\n\t{\n\t\tid: 'setWinChance',\n\t\tname: 'Set win chance',\n\t\tprecision: 2,\n\t\tdefault: getMinWinChance,\n\t\tgames: [GameType.DICE],\n\t\trules: [RollRule.OVER, RollRule.UNDER],\n\t},\n\t{\n\t\tid: 'resetMultiplier',\n\t\tname: 'Reset payout',\n\t\tnoValue: true,\n\t\tgames: [GameType.LIMBO],\n\t},\n\t{\n\t\tid: 'increaseMultiplierPercent',\n\t\tname: 'Increase payout by',\n\t\tdataType: 'percent',\n\t\tgames: [GameType.LIMBO],\n\t},\n\t{\n\t\tid: 'decreaseMultiplierPercent',\n\t\tname: 'Decrease payout by',\n\t\tdataType: 'percent',\n\t\tgames: [GameType.LIMBO],\n\t},\n\t{\n\t\tid: 'increaseMultiplierValue',\n\t\tname: 'Add to payout',\n\t\tprecision: config.games.limbo.payoutDecimal,\n\t\tgames: [GameType.LIMBO],\n\t},\n\t{\n\t\tid: 'decreaseMultiplierValue',\n\t\tname: 'Subtract from payout',\n\t\tprecision: config.games.limbo.payoutDecimal,\n\t\tgames: [GameType.LIMBO],\n\t},\n\t{\n\t\tid: 'setMultiplier',\n\t\tname: 'Set payout',\n\t\tprecision: config.games.limbo.payoutDecimal,\n\t\tdefault: getPayout(getMaxWinChance(), GameType.LIMBO),\n\t\tgames: [GameType.LIMBO],\n\t},\n];\nexport const whenSeriesTypes = [\n\t{\n\t\tid: 'every',\n\t\tname: 'Every',\n\t},\n\t{\n\t\tid: 'streak',\n\t\tname: 'Every streak of',\n\t\tnames: ['win', 'lose'],\n\t},\n\t{\n\t\tid: 'streakFirst',\n\t\tname: 'First streak of',\n\t\tnames: ['win', 'lose'],\n\t},\n\t{\n\t\tid: 'streakGreater',\n\t\tname: 'Streak greater than',\n\t\tnames: ['win', 'lose'],\n\t},\n\t{\n\t\tid: 'streakLower',\n\t\tname: 'Streak lower than',\n\t\tnames: ['win', 'lose'],\n\t},\n];\nexport const whenValueTypes = [\n\t{\n\t\tid: 'gt',\n\t\tname: 'Greater than',\n\t\tdefault: mathService.getMinValueByPrecision(config.decimals.bet),\n\t},\n\t{\n\t\tid: 'gte',\n\t\tname: 'Greater than or equal',\n\t\tdefault: mathService.getMinValueByPrecision(config.decimals.bet),\n\t},\n\t{\n\t\tid: 'lt',\n\t\tname: 'Lower than',\n\t\tdefault: mathService.getMinValueByPrecision(config.decimals.bet),\n\t\trules: {\n\t\t\tnegative: ['profit', 'loss'],\n\t\t},\n\t},\n\t{\n\t\tid: 'lte',\n\t\tname: 'Lower than or equal',\n\t\tdefault: mathService.getMinValueByPrecision(config.decimals.bet),\n\t\trules: {\n\t\t\tnegative: ['profit', 'loss'],\n\t\t},\n\t},\n\t{\n\t\tid: 'before',\n\t\tname: 'Before',\n\t\tnames: ['loss'],\n\t\tdefault: mathService.getMinValueByPrecision(config.decimals.bet),\n\t},\n\t// {\n\t//   id: 'exact',\n\t//   name: 'Equals to',\n\t// },\n];\nexport const whenNames = [\n\t{\n\t\tid: 'bet',\n\t\tname: 'bet',\n\t\tdataType: 'bets',\n\t},\n\t{\n\t\tid: 'win',\n\t\tname: 'win',\n\t\tdataType: 'bets',\n\t},\n\t{\n\t\tid: 'lose',\n\t\tname: 'lose',\n\t\tdataType: 'bets',\n\t},\n\t{\n\t\tid: 'profit',\n\t\tname: 'profit',\n\t\tdataType: 'currency',\n\t\tdefault: mathService.getMinValueByPrecision(config.decimals.bet),\n\t},\n\t{\n\t\tid: 'loss',\n\t\tname: 'loss',\n\t\tdataType: 'currency',\n\t\tdefault: mathService.getMinValueByPrecision(config.decimals.bet),\n\t},\n\t{\n\t\tid: 'balance',\n\t\tname: 'balance',\n\t\tdataType: 'currency',\n\t\tdefault: mathService.getMinValueByPrecision(config.decimals.bet),\n\t},\n];\nexport const defaultConfig = {\n\tbets: {\n\t\tcommand: [\n\t\t\t{\n\t\t\t\tname: 'resetAmount',\n\t\t\t},\n\t\t],\n\t\twhen: [\n\t\t\t{\n\t\t\t\tname: 'win',\n\t\t\t\tvalue: 1,\n\t\t\t\ttype: 'every',\n\t\t\t},\n\t\t],\n\t},\n\tcurrency: {\n\t\tcommand: [\n\t\t\t{\n\t\t\t\tname: 'resetAmount',\n\t\t\t},\n\t\t],\n\t\twhen: [\n\t\t\t{\n\t\t\t\tname: 'profit',\n\t\t\t\tvalue: mathService.getMinValueByPrecision(config.decimals.balance),\n\t\t\t\ttype: 'gte',\n\t\t\t},\n\t\t],\n\t},\n};\nexport const defaultEasyConfig = [\n\t{\n\t\tcommand: [\n\t\t\t{\n\t\t\t\tname: 'resetAmount',\n\t\t\t},\n\t\t],\n\t\twhen: [\n\t\t\t{\n\t\t\t\tname: 'win',\n\t\t\t\tvalue: 1,\n\t\t\t\ttype: 'every',\n\t\t\t},\n\t\t],\n\t},\n\t{\n\t\tcommand: [\n\t\t\t{\n\t\t\t\tname: 'resetAmount',\n\t\t\t},\n\t\t],\n\t\twhen: [\n\t\t\t{\n\t\t\t\tname: 'lose',\n\t\t\t\tvalue: 1,\n\t\t\t\ttype: 'every',\n\t\t\t},\n\t\t],\n\t},\n\t{\n\t\tcommand: [\n\t\t\t{\n\t\t\t\tname: 'stop',\n\t\t\t},\n\t\t],\n\t\twhen: [\n\t\t\t{\n\t\t\t\tname: 'loss',\n\t\t\t\tvalue: 0,\n\t\t\t\ttype: 'before',\n\t\t\t},\n\t\t],\n\t},\n\t{\n\t\tcommand: [\n\t\t\t{\n\t\t\t\tname: 'stop',\n\t\t\t},\n\t\t],\n\t\twhen: [\n\t\t\t{\n\t\t\t\tname: 'profit',\n\t\t\t\tvalue: 0,\n\t\t\t\ttype: 'gte',\n\t\t\t},\n\t\t],\n\t},\n];\nexport const defaultExpertConfig = [\n\t{\n\t\tcommand: [\n\t\t\t{\n\t\t\t\tname: 'resetAmount',\n\t\t\t},\n\t\t],\n\t\twhen: [\n\t\t\t{\n\t\t\t\tname: 'win',\n\t\t\t\tvalue: 1,\n\t\t\t\ttype: 'every',\n\t\t\t},\n\t\t],\n\t},\n];\n","import { trans } from '@legacyApp/client/modules/translation/translate';\nimport { game_config } from '@legacyApp/client/game_config';\nimport { GameType } from '../constants/availableGames';\nimport { GameStrategy } from '../types/GameStrategy';\n\nexport const checkCompatibleStrategy = (\n\tgame: GameType,\n\tstrategy: GameStrategy,\n): {\n\terror?: any;\n\tvalid: boolean;\n} => {\n\tif (!game) {\n\t\treturn {\n\t\t\terror: true,\n\t\t\tvalid: false,\n\t\t};\n\t}\n\n\tif (!game_config[game]) {\n\t\treturn {\n\t\t\terror: trans({\n\t\t\t\tlabel: 'Game does not exist {{gameName}}',\n\t\t\t\toptions: {\n\t\t\t\t\tgameName: game.toUpperCase(),\n\t\t\t\t},\n\t\t\t}),\n\t\t\tvalid: false,\n\t\t};\n\t}\n\n\tif (!game_config[game].isAutobet) {\n\t\treturn {\n\t\t\terror: trans({\n\t\t\t\tlabel: 'Autobet is unavailable on {{gameName}}',\n\t\t\t\toptions: {\n\t\t\t\t\tgameName: game.toUpperCase(),\n\t\t\t\t},\n\t\t\t}),\n\t\t\tvalid: false,\n\t\t};\n\t}\n\n\tif (game === GameType.PLINKO) {\n\t\tif (!strategy.rows) {\n\t\t\treturn {\n\t\t\t\terror: `Rows not selected`,\n\t\t\t\tvalid: false,\n\t\t\t};\n\t\t}\n\t\tif (!strategy.risk) {\n\t\t\treturn {\n\t\t\t\terror: `Risk not selected`,\n\t\t\t\tvalid: false,\n\t\t\t};\n\t\t}\n\t}\n\n\tif (game !== GameType.PLINKO) {\n\t\tif (strategy.risk) {\n\t\t\treturn {\n\t\t\t\terror: `Risk is selected`,\n\t\t\t\tvalid: false,\n\t\t\t};\n\t\t}\n\t\tif (strategy.rows) {\n\t\t\treturn {\n\t\t\t\terror: `Rows is selected`,\n\t\t\t\tvalid: false,\n\t\t\t};\n\t\t}\n\t}\n\n\tif (game === 'limbo') {\n\t\tif (strategy.rollDirection && strategy.rollDirection !== 'over') {\n\t\t\treturn {\n\t\t\t\terror: `Selected \"roll ${strategy.rollDirection.replace(\n\t\t\t\t\t'_',\n\t\t\t\t\t' ',\n\t\t\t\t)} bet value\"`,\n\t\t\t\tvalid: false,\n\t\t\t};\n\t\t}\n\t\tif (\n\t\t\tstrategy.config &&\n\t\t\tstrategy.config.find((el) => el.command[0].name === 'switch')\n\t\t) {\n\t\t\treturn {\n\t\t\t\terror: '\"Switch over/under\" command in condition block',\n\t\t\t\tvalid: false,\n\t\t\t};\n\t\t}\n\t}\n\n\tif (\n\t\tstrategy.payoutValue &&\n\t\tstrategy.payoutValue > game_config[game].maxPayout\n\t) {\n\t\tif (!game_config[game].maxPayout) {\n\t\t\treturn {\n\t\t\t\terror: trans({\n\t\t\t\t\tlabel: 'Setting payout value is prohibited for {{gameName}}',\n\t\t\t\t\toptions: {\n\t\t\t\t\t\tgameName: game.toUpperCase(),\n\t\t\t\t\t},\n\t\t\t\t}),\n\t\t\t\tvalid: false,\n\t\t\t};\n\t\t}\n\t\treturn {\n\t\t\terror: trans({\n\t\t\t\tlabel: 'Initial payout exceeded maximum {{value}}x',\n\t\t\t\toptions: {\n\t\t\t\t\tvalue: game_config[game].maxPayout,\n\t\t\t\t},\n\t\t\t}),\n\t\t\tvalid: false,\n\t\t};\n\t}\n\n\tif (strategy.payoutValue < game_config[game].minPayout) {\n\t\treturn {\n\t\t\terror: trans({\n\t\t\t\tlabel: 'Initial payout is lower than minumum {{value}}x',\n\t\t\t\toptions: {\n\t\t\t\t\tvalue: game_config[game].minPayout,\n\t\t\t\t},\n\t\t\t}),\n\t\t\tvalid: false,\n\t\t};\n\t}\n\n\treturn {\n\t\tvalid: true,\n\t};\n};\n","export enum RollRule {\n\tDIRECT = 'direct',\n\tUNDER = 'under',\n\tOVER = 'over',\n\tBETWEEN = 'between',\n\tOUTSIDE = 'outside',\n\tTWO_RANGE = 'two_ranges',\n}\n"],"names":["parseEasyConfigForAPI","config","map","row","command","value","parseFloat","when","filter","name","undefined","parseStrategy","rolls","isTrueOrZero","getCommands","data","el","params","commands","id","getConditions","whenNames","condition","getConditionValidationErrors","game","rule","errorCommand","errorCondition","Object","keys","length","errors","updateStrategyWithValidation","conditionRow","forEach","index","comm","isCommandAvailable","noValue","indexOf","countPrecision","label","options","number","decimal","game_config","winChanceDecimal","exclude","push","validate","validateWinChance","error","payoutDecimal","validatePayout","validateBetAmount","whenName","whenValueType","whenValueTypes","type","onlyNegativeValues","rules","negative","includes","dataType","getStrategyGame","strategy","getGamesList","find","checkCompatibleStrategy","valid","getStrategyGames","matchGames","games","some","commandGame","matchRules","commandRule","GameType","RollRule","precision","default","getMinWinChance","getPayout","getMaxWinChance","whenSeriesTypes","names","mathService","defaultConfig","bets","currency","defaultEasyConfig","defaultExpertConfig","trans","gameName","toUpperCase","isAutobet","rows","risk","rollDirection","replace","payoutValue","maxPayout","minPayout"],"mappings":"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","debug_id":"28f1cf42-fefb-53a0-bd99-3fc011978309"}