{"version":3,"file":"static/chunks/26795.0fc11597d42071ba.js","sources":["webpack://_N_E/./src/common/components/layout/MainPageOfferButton/MainPageOfferButton.styled.ts","webpack://_N_E/./src/common/components/games/Inhouse/DiceGameButton.tsx","webpack://_N_E/./src/common/components/games/Inhouse/HiloGameButton.tsx","webpack://_N_E/./src/common/components/games/Inhouse/LimboGameButton.tsx","webpack://_N_E/./src/common/components/games/Inhouse/KenoGameButton.tsx","webpack://_N_E/./src/common/components/games/Inhouse/PlinkoGameButton.tsx","webpack://_N_E/./src/common/components/layout/MainPageOfferButton/MainPageOfferButton.tsx","webpack://_N_E/./src/common/constants/events/index.ts","webpack://_N_E/./src/common/controllers/subjectController.ts","webpack://_N_E/./src/common/hooks/useCustomEventListener.ts","webpack://_N_E/./src/modules/balance/store/thunks/getChangedBalance.thunk.ts","webpack://_N_E/./src/modules/games/DiceGame/components/BetValue/betValue.constants.ts","webpack://_N_E/./src/modules/games/Game/methods/checkExpertConfig.ts","webpack://_N_E/./src/modules/games/Game/methods/checkEasyConfig.ts","webpack://_N_E/./src/modules/games/Game/methods/checkIsDoubleValue.ts","webpack://_N_E/./src/modules/games/Game/methods/checkIsQuadrupleValue.ts","webpack://_N_E/./src/modules/games/Game/methods/checkIsSingleValue.ts","webpack://_N_E/./src/modules/games/Game/methods/checkIsWinChanceDisabled.ts","webpack://_N_E/./src/modules/games/Game/methods/createPlacedBet.ts","webpack://_N_E/./src/modules/games/Game/methods/getBetValueMaxMin.ts","webpack://_N_E/./src/modules/games/Game/methods/getRuleBetValuesBetConfig.ts","webpack://_N_E/./src/modules/games/Game/methods/getStrategyFromState.ts","webpack://_N_E/./src/modules/games/Game/methods/getWinChanceFromBetValues.ts","webpack://_N_E/./src/modules/games/Game/store/dice/dice.actions.ts","webpack://_N_E/./src/modules/games/Game/store/dice/diceInitialState.ts","webpack://_N_E/./src/modules/games/Game/store/dice/slices/betValue.slice.ts","webpack://_N_E/./src/modules/games/Game/store/dice/slices/isResultVisible.slice.ts","webpack://_N_E/./src/modules/games/Game/store/dice/slices/result.slice.ts","webpack://_N_E/./src/modules/games/Game/store/dice/slices/rule.slice.ts","webpack://_N_E/./src/modules/games/Game/store/flash/flash.constants.ts","webpack://_N_E/./src/LegacyApp/client/modules/app/createBetResult.ts","webpack://_N_E/./src/modules/games/Game/store/game/thunks/gameTriggerAnimationBetResultThunk.ts","webpack://_N_E/./src/modules/games/Game/store/game/methods/parseGameName.ts","webpack://_N_E/./src/modules/balance/store/thunks/changeBalance.thunk.ts","webpack://_N_E/./src/modules/games/Game/store/game/thunks/sendBet.thunk.ts","webpack://_N_E/./src/modules/games/Game/store/game/game.epic.ts","webpack://_N_E/./src/modules/games/Game/store/game/thunks/placeBet.thunk.ts","webpack://_N_E/./src/modules/games/Game/store/game/methods/getGamesWithResultAnimated.ts","webpack://_N_E/./src/modules/games/Game/store/game/methods/checkIsStrategyFromBetPayload.ts","webpack://_N_E/./src/modules/games/Game/store/game/methods/createPlaceBetBody.thunk.ts","webpack://_N_E/./src/modules/games/Game/store/game/methods/createPlaceBetUrl.ts","webpack://_N_E/./src/modules/games/Game/store/game/methods/parseResponseBet.ts","webpack://_N_E/./src/modules/games/Game/store/game/thunks/gameResolvePendingAnimatedBets.thunk.ts","webpack://_N_E/./src/modules/games/Game/store/game/thunks/handleAnimatedBet.thunk.ts","webpack://_N_E/./src/modules/games/Game/store/flash/flash.actions.ts","webpack://_N_E/./src/modules/games/Game/store/game/thunks/handleBetResponse.thunk.ts","webpack://_N_E/./src/modules/games/Game/store/gameAutobet/thunks/handleAutobetError.thunk.ts","webpack://_N_E/./src/modules/games/Game/store/gameAutobet/thunks/handleAutobetPlayResponse.thunk.ts","webpack://_N_E/./src/modules/games/Game/store/gameAutobet/thunks/openAutobetSummary.thunk.ts"],"sourceRoot":"","sourcesContent":["import styled, { css } from 'styled-components';\nimport { boxNoHeight } from '@legacyApp/client/modules/style/defaults';\nimport { calcStyle } from '@legacyApp/client/modules/style/methods/calcStyle';\nimport { GameType } from '@modules/games/Game/constants/availableGames';\nimport { LinkTo } from '../../default/LinkTo/LinkTo';\nimport { Image } from '../../default/Image/Image';\n\nconst SCALE = (236 / 416) * 100;\n\nconst OFFER_ELEMENT_STYLES = {\n\t[GameType.DICE]: {\n\t\tdefault: css`\n\t\t\twidth: 60% !important;\n\t\t`,\n\t\thover: css`\n\t\t\ttransform: scale(1.1) rotate(-10deg);\n\t\t`,\n\t},\n\t[GameType.LIMBO]: {\n\t\tdefault: css`\n\t\t\twidth: 85% !important;\n\t\t`,\n\t\thover: css`\n\t\t\ttransform: scale(1.05);\n\t\t`,\n\t},\n\t[GameType.HILO]: {\n\t\tdefault: css`\n\t\t\twidth: 65% !important;\n\t\t`,\n\t\thover: css`\n\t\t\ttransform: scale(1.05);\n\t\t`,\n\t},\n\t[GameType.SPORTS]: {\n\t\tdefault: css`\n\t\t\tpadding-top: 5% !important;\n\t\t\twidth: 80% !important;\n\t\t`,\n\t\thover: css`\n\t\t\ttransform: scale(1.05) translateY(-5%);\n\t\t`,\n\t},\n\t[GameType.SLOTS]: {\n\t\tdefault: css`\n\t\t\twidth: 65% !important;\n\t\t`,\n\t\thover: css`\n\t\t\ttransform: scale(1.06);\n\t\t`,\n\t},\n};\n\nexport const StyledImageElementWrapper = styled.div`\n\talign-items: center;\n\tdisplay: flex !important;\n\theight: 100%;\n\tjustify-content: center;\n\tleft: 0;\n\toverflow: visible !important;\n\tposition: absolute;\n\ttop: 0;\n\twidth: 100%;\n`;\n\nexport const OfferBackgroundStyled = styled(Image)`\n\tborder-radius: 12px;\n\tleft: 0;\n\tposition: absolute;\n\ttop: 0;\n`;\n\nexport const StyledOfferButton = styled(LinkTo)`\n\t${boxNoHeight};\n\theight: auto;\n\toverflow: hidden;\n\tpadding-bottom: ${SCALE}%;\n\tposition: relative;\n\ttext-transform: capitalize;\n\n\t${OfferBackgroundStyled} {\n\t\twidth: 100%;\n\t}\n\n\timg {\n\t\ttransition: ${(props) =>\n\t\t\tcalcStyle({\n\t\t\t\ta: 2,\n\t\t\t\tb: props.theme.layout.transition,\n\t\t\t\tmode: '*',\n\t\t\t\tsuffix: 'ms',\n\t\t\t})};\n\t}\n\n\t&:hover {\n\t\t${OfferBackgroundStyled} {\n\t\t\topacity: 0.85;\n\t\t\ttransform: scale(0.99);\n\t\t}\n\t}\n`;\nexport const StyledMainPageOfferButton = styled(StyledOfferButton)<{\n\t$offerName: GameType;\n}>`\n\tspan {\n\t\tbottom: 0;\n\t\tfont-family: ${(props) => props.theme.text.fonts.Regular};\n\t\tleft: 0;\n\t\tpadding: 15px;\n\t\tposition: absolute;\n\t}\n\n\t.offer-element {\n\t\tposition: relative;\n\t\t${(props) => OFFER_ELEMENT_STYLES[props.$offerName]?.default}\n\t}\n\n\t&:hover {\n\t\topacity: 1;\n\n\t\t.offer-element {\n\t\t\t${(props) => OFFER_ELEMENT_STYLES[props.$offerName]?.hover}\n\t\t}\n\t}\n\n\t@media (max-width: ${(props) => props.theme.media.maxWidthTablet}) {\n\t\tspan {\n\t\t\ttext-shadow: 1px 1px 1px black;\n\t\t}\n\t}\n`;\n","import { FC } from 'react';\nimport styled from 'styled-components';\n\nimport { getUrl } from '@common/components/layout/MainPageOfferButton/MainPageOfferButton';\nimport routingService from '@legacyApp/client/modules/app/routingService';\nimport { GameType } from '@modules/games/Game/constants/availableGames';\n\nimport { Image } from '@common/components/default/Image/Image';\nimport {\n\tOfferBackgroundStyled,\n\tStyledOfferButton,\n} from '@common/components/layout/MainPageOfferButton/MainPageOfferButton.styled';\n\nconst name = GameType.DICE;\n\nexport const DiceGameButton: FC<{\n\tcallback: () => void;\n}> = ({ callback }) => {\n\treturn (\n\t\t<Wrapper href={routingService.to(getUrl(name), true)} onClick={callback}>\n\t\t\t<>\n\t\t\t\t<BackgroundImage />\n\n\t\t\t\t<LeftDiceImage />\n\n\t\t\t\t<RightDiceImage />\n\n\t\t\t\t<NameImage />\n\t\t\t</>\n\t\t</Wrapper>\n\t);\n};\n\nexport const LeftDiceImage = styled(Image).attrs({\n\tsrc: '/img/games/inhouse/dice/leftDice.png',\n\talt: 'Left dice',\n})`\n\tposition: absolute;\n\ttop: 17%;\n\theight: 39%;\n\tleft: 30%;\n`;\n\nexport const RightDiceImage = styled(Image).attrs({\n\tsrc: '/img/games/inhouse/dice/rightDice.png',\n\talt: 'Right dice',\n})`\n\tposition: absolute;\n\ttop: 3%;\n\theight: 47%;\n\tright: 29%;\n`;\n\nexport const NameImage = styled(Image).attrs({\n\tsrc: '/img/games/inhouse/dice/name.svg',\n\talt: 'DICE',\n})`\n\tposition: absolute;\n\tleft: 49.6%;\n\ttransform: translateX(-50%);\n\theight: 22%;\n\tbottom: 17%;\n`;\n\nexport const BackgroundImage = styled(OfferBackgroundStyled).attrs({\n\tsrc: '/img/games/inhouse/dice/bg.png',\n\talt: 'background',\n})``;\n\nexport const Wrapper = styled(StyledOfferButton)`\n\toverflow: hidden;\n\n\t&:hover {\n\t\t${LeftDiceImage} {\n\t\t\ttransform: rotate(-10deg) translate(-15%, -1%);\n\t\t}\n\n\t\t${RightDiceImage} {\n\t\t\ttransform: translate(12%, -15%) rotate(22deg);\n\t\t}\n\t}\n`;\n","import { FC } from 'react';\nimport styled from 'styled-components';\n\nimport { getUrl } from '@common/components/layout/MainPageOfferButton/MainPageOfferButton';\nimport { GameType } from '@modules/games/Game/constants/availableGames';\nimport routingService from '@legacyApp/client/modules/app/routingService';\n\nimport { Image } from '@common/components/default/Image/Image';\nimport {\n\tOfferBackgroundStyled,\n\tStyledOfferButton,\n} from '@common/components/layout/MainPageOfferButton/MainPageOfferButton.styled';\n\nconst name = GameType.HILO;\n\nexport const HiloGameButton: FC<{\n\tcallback: () => void;\n}> = ({ callback }) => {\n\treturn (\n\t\t<Wrapper href={routingService.to(getUrl(name), true)} onClick={callback}>\n\t\t\t<>\n\t\t\t\t<BackgroundImage />\n\n\t\t\t\t<CenterCardImage />\n\n\t\t\t\t<LeftCardImage />\n\n\t\t\t\t<RightCardImage />\n\n\t\t\t\t<NameImage />\n\t\t\t</>\n\t\t</Wrapper>\n\t);\n};\n\nexport const CenterCardImage = styled(Image).attrs({\n\tsrc: '/img/games/inhouse/hilo/front.png',\n\talt: 'Front card',\n})`\n\tposition: absolute;\n\tz-index: 2;\n\tleft: 50%;\n\ttransform: translateX(-50%);\n\ttop: 2%;\n\theight: 70%;\n`;\n\nexport const LeftCardImage = styled(Image).attrs({\n\tsrc: '/img/games/inhouse/hilo/back.png',\n\talt: 'Left card',\n})`\n\tposition: absolute;\n\ttop: 7%;\n\theight: 65%;\n\tleft: 30%;\n\ttransform: rotate(-2deg);\n`;\n\nexport const RightCardImage = styled(Image).attrs({\n\tsrc: '/img/games/inhouse/hilo/back.png',\n\talt: 'Right card',\n})`\n\tposition: absolute;\n\ttop: 2%;\n\theight: 65%;\n\tright: 30%;\n\ttransform: rotate(11deg);\n`;\n\nexport const NameImage = styled(Image).attrs({\n\tsrc: '/img/games/inhouse/hilo/name.svg',\n\talt: 'HILO',\n})`\n\tposition: absolute;\n\tleft: 49.6%;\n\ttransform: translateX(-50%);\n\theight: 26%;\n\tbottom: 11%;\n`;\n\nexport const BackgroundImage = styled(OfferBackgroundStyled).attrs({\n\tsrc: '/img/games/inhouse/hilo/bg.png',\n\talt: 'background',\n})``;\n\nexport const Wrapper = styled(StyledOfferButton)`\n\toverflow: hidden;\n\n\t&:hover {\n\t\t${LeftCardImage} {\n\t\t\ttransform: rotate(-5deg) translate(-10%);\n\t\t}\n\n\t\t${RightCardImage} {\n\t\t\ttransform: translate(12%) rotate(15deg);\n\t\t}\n\t}\n`;\n","import { FC } from 'react';\nimport styled from 'styled-components';\n\nimport { getUrl } from '@common/components/layout/MainPageOfferButton/MainPageOfferButton';\nimport routingService from '@legacyApp/client/modules/app/routingService';\nimport { GameType } from '@modules/games/Game/constants/availableGames';\n\nimport { Image } from '@common/components/default/Image/Image';\nimport {\n\tOfferBackgroundStyled,\n\tStyledOfferButton,\n} from '@common/components/layout/MainPageOfferButton/MainPageOfferButton.styled';\n\nconst name = GameType.LIMBO;\n\nexport const LimboGameButton: FC<{\n\tcallback: () => void;\n}> = ({ callback }) => {\n\treturn (\n\t\t<Wrapper href={routingService.to(getUrl(name), true)} onClick={callback}>\n\t\t\t<>\n\t\t\t\t<BackgroundImage />\n\n\t\t\t\t<NumbersImage />\n\n\t\t\t\t<NameImage />\n\t\t\t</>\n\t\t</Wrapper>\n\t);\n};\n\nexport const NumbersImage = styled(Image).attrs({\n\tsrc: '/img/games/inhouse/limbo/numbers.png',\n\talt: 'numbers',\n})`\n\tposition: absolute;\n\ttop: 8%;\n\theight: 40%;\n\tleft: 50%;\n\ttransform: translateX(-50%);\n`;\n\nexport const NameImage = styled(Image).attrs({\n\tsrc: '/img/games/inhouse/limbo/name.svg',\n\talt: 'LIMBO',\n})`\n\tposition: absolute;\n\tleft: 49.6%;\n\ttransform: translateX(-50%);\n\theight: 24%;\n\tbottom: 19%;\n`;\n\nexport const BackgroundImage = styled(OfferBackgroundStyled).attrs({\n\tsrc: '/img/games/inhouse/limbo/bg.png',\n\talt: 'background',\n})``;\n\nexport const Wrapper = styled(StyledOfferButton)`\n\toverflow: hidden;\n\n\t&:hover {\n\t\t${NumbersImage} {\n\t\t\ttransform: translateX(-50%) scale(1.1);\n\t\t}\n\t}\n`;\n","import { FC } from 'react';\nimport styled from 'styled-components';\n\nimport { getUrl } from '@common/components/layout/MainPageOfferButton/MainPageOfferButton';\nimport routingService from '@legacyApp/client/modules/app/routingService';\nimport { GameType } from '@modules/games/Game/constants/availableGames';\n\nimport { Image } from '@common/components/default/Image/Image';\nimport {\n\tOfferBackgroundStyled,\n\tStyledOfferButton,\n} from '@common/components/layout/MainPageOfferButton/MainPageOfferButton.styled';\n\nconst name = GameType.KENO;\n\nexport const KenoGameButton: FC<{\n\tcallback: () => void;\n}> = ({ callback }) => {\n\treturn (\n\t\t<Wrapper href={routingService.to(getUrl(name), true)} onClick={callback}>\n\t\t\t<>\n\t\t\t\t<BackgroundImage />\n\n\t\t\t\t<BoardImage />\n\n\t\t\t\t<GreenDiamondImage />\n\n\t\t\t\t<PurpleDiamondImage />\n\n\t\t\t\t<YellowDiamondImage />\n\n\t\t\t\t<NameImage />\n\t\t\t</>\n\t\t</Wrapper>\n\t);\n};\n\nexport const BoardImage = styled(Image).attrs({\n\tsrc: '/img/games/inhouse/keno/board.png',\n\talt: 'el',\n})`\n\tposition: absolute;\n\ttop: 42%;\n\theight: 60%;\n\tleft: 48%;\n\ttransform: translate(-50%, -50%);\n`;\n\nexport const GreenDiamondImage = styled(Image).attrs({\n\tsrc: '/img/games/inhouse/keno/greenDiamond.png',\n\talt: 'el',\n})`\n\tposition: absolute;\n\ttop: 61%;\n\theight: 35%;\n\tleft: 37%;\n\ttransform: translate(-50%, -50%);\n\tz-index: 2;\n`;\n\nexport const PurpleDiamondImage = styled(Image).attrs({\n\tsrc: '/img/games/inhouse/keno/purpleDiamond.png',\n\talt: 'el',\n})`\n\tposition: absolute;\n\ttop: 55%;\n\theight: 32%;\n\tleft: 50%;\n\ttransform: translate(-50%, -50%);\n\tz-index: 1;\n`;\n\nexport const YellowDiamondImage = styled(Image).attrs({\n\tsrc: '/img/games/inhouse/keno/yellowDiamond.png',\n\talt: 'el',\n})`\n\tposition: absolute;\n\ttop: 59%;\n\theight: 40%;\n\tleft: 65%;\n\ttransform: translate(-50%, -50%);\n\tz-index: 0;\n`;\n\nexport const NameImage = styled(Image).attrs({\n\tsrc: '/img/games/inhouse/keno/name.svg',\n\talt: 'KENO',\n})`\n\tposition: absolute;\n\tleft: 50%;\n\ttransform: translateX(-50%);\n\theight: 35%;\n\tbottom: 5%;\n\tz-index: 10;\n`;\n\nexport const BackgroundImage = styled(OfferBackgroundStyled).attrs({\n\tsrc: '/img/games/inhouse/keno/bg.png',\n\talt: 'background',\n})``;\n\nexport const Wrapper = styled(StyledOfferButton)`\n\tborder-radius: 13px;\n\toverflow: hidden;\n\n\t&:hover {\n\t\t${GreenDiamondImage} {\n\t\t\ttransform: translate(-60%, -60%);\n\t\t}\n\n\t\t${PurpleDiamondImage} {\n\t\t\ttransform: translate(-50%, -60%);\n\t\t}\n\n\t\t${YellowDiamondImage} {\n\t\t\ttransform: translate(-40%, -60%);\n\t\t}\n\n\t\t${BoardImage} {\n\t\t\ttransform: translate(-53%, -65%);\n\t\t}\n\t}\n`;\n","import { FC } from 'react';\nimport styled from 'styled-components';\n\nimport { getUrl } from '@common/components/layout/MainPageOfferButton/MainPageOfferButton';\nimport routingService from '@legacyApp/client/modules/app/routingService';\nimport { GameType } from '@modules/games/Game/constants/availableGames';\n\nimport { Image } from '@common/components/default/Image/Image';\nimport {\n\tOfferBackgroundStyled,\n\tStyledOfferButton,\n} from '@common/components/layout/MainPageOfferButton/MainPageOfferButton.styled';\n\nconst name = GameType.PLINKO;\n\nexport const PlinkoGameButton: FC<{\n\tcallback: () => void;\n}> = ({ callback }) => {\n\treturn (\n\t\t<Wrapper href={routingService.to(getUrl(name), true)} onClick={callback}>\n\t\t\t<>\n\t\t\t\t<BackgroundImage />\n\n\t\t\t\t<ElImage />\n\n\t\t\t\t<NameImage />\n\t\t\t</>\n\t\t</Wrapper>\n\t);\n};\n\nexport const ElImage = styled(Image).attrs({\n\tsrc: '/img/games/inhouse/plinko/pins.png',\n\talt: 'el',\n})`\n\tposition: absolute;\n\ttop: 48%;\n\tleft: 50%;\n\ttransform: translate(-50%, -50%);\n`;\n\nexport const NameImage = styled(Image).attrs({\n\tsrc: '/img/games/inhouse/plinko/name.svg',\n\talt: 'PLINKO',\n})`\n\tposition: absolute;\n\tleft: 50%;\n\ttransform: translateX(-50%);\n\theight: 100%;\n\tbottom: -20%;\n\twidth: 60%;\n`;\n\nexport const BackgroundImage = styled(OfferBackgroundStyled).attrs({\n\tsrc: '/img/games/inhouse/plinko/bg.png',\n\talt: 'background',\n})``;\n\nexport const Wrapper = styled(StyledOfferButton)`\n\tbackground-color: #0b3c2a;\n\tborder-radius: 13px;\n\toverflow: hidden;\n\n\t&:hover {\n\t\t${ElImage} {\n\t\t\ttransform: translate(-50%, -50%) scale(1.4);\n\t\t}\n\t}\n`;\n","import { FC } from 'react';\n\nimport { FEATURES_TYPE } from '@legacyApp/client/config';\nimport { isFeatureAvailable } from '@legacyApp/client/modules/app/featureService';\nimport routingService from '@legacyApp/client/modules/app/routingService';\nimport { GameType } from '@modules/games/Game/constants/availableGames';\nimport { SPORTSBOOK_PAGE_ID } from '@modules/sportsbook/constants/sportsbook.page.config';\n\nimport { Image } from '@common/components/default/Image/Image';\nimport { DiceGameButton } from '@common/components/games/Inhouse/DiceGameButton';\nimport { HiloGameButton } from '@common/components/games/Inhouse/HiloGameButton';\nimport { LimboGameButton } from '@common/components/games/Inhouse/LimboGameButton';\nimport { KenoGameButton } from '@common/components/games/Inhouse/KenoGameButton';\nimport { PlinkoGameButton } from '@common/components/games/Inhouse/PlinkoGameButton';\nimport {\n\tOfferBackgroundStyled,\n\tStyledImageElementWrapper,\n\tStyledMainPageOfferButton,\n} from '@common/components/layout/MainPageOfferButton/MainPageOfferButton.styled';\n\nexport const AVAILABLE_OFFER: Array<GameType> = [\n\tGameType.DICE,\n\tGameType.LIMBO,\n\t...(isFeatureAvailable(FEATURES_TYPE.KENO) ? [GameType.KENO] : []),\n\t...(isFeatureAvailable(FEATURES_TYPE.PLINKO) ? [GameType.PLINKO] : []),\n\tGameType.HILO,\n];\n\nexport const ASSETS = {\n\t[GameType.DICE]: {\n\t\turi: 'casino/dice',\n\t},\n\t[GameType.LIMBO]: {\n\t\turi: 'casino/limbo',\n\t},\n\t[GameType.KENO]: {\n\t\turi: 'casino/keno',\n\t},\n\t[GameType.PLINKO]: {\n\t\turi: 'casino/plinko',\n\t},\n\t[GameType.HILO]: {\n\t\turi: 'casino/hilo',\n\t},\n\t[GameType.SPORTS]: {\n\t\turi: SPORTSBOOK_PAGE_ID.INDEX,\n\t},\n};\n\ntype OfferNameType = GameType;\n\nexport const getUrl = (offerName: OfferNameType) => {\n\treturn ASSETS[offerName]?.uri || `${offerName}?`;\n};\n\nexport const MainPageOfferButton: FC<{\n\tofferName: string;\n\tcallback?: (offerName: OfferNameType) => void;\n}> = ({ offerName, callback }) => {\n\tconst onClick = (): void => {\n\t\tif (callback) {\n\t\t\tcallback(offerName as GameType);\n\t\t}\n\t};\n\n\tif (offerName === GameType.DICE) {\n\t\treturn <DiceGameButton callback={onClick} />;\n\t}\n\n\tif (offerName === GameType.LIMBO) {\n\t\treturn <LimboGameButton callback={onClick} />;\n\t}\n\n\tif (offerName === GameType.KENO) {\n\t\treturn <KenoGameButton callback={onClick} />;\n\t}\n\n\tif (offerName === GameType.PLINKO) {\n\t\treturn <PlinkoGameButton callback={onClick} />;\n\t}\n\n\tif (offerName === GameType.HILO) {\n\t\treturn <HiloGameButton callback={onClick} />;\n\t}\n\n\treturn (\n\t\t<StyledMainPageOfferButton\n\t\t\t$offerName={offerName as GameType}\n\t\t\thref={routingService.to(getUrl(offerName as GameType), true)}\n\t\t\tonClick={onClick}\n\t\t>\n\t\t\t<>\n\t\t\t\t<OfferBackgroundStyled\n\t\t\t\t\tsrc={`/img/homepage/offer/${offerName}/bg.svg`}\n\t\t\t\t\talt={offerName}\n\t\t\t\t/>\n\n\t\t\t\t<StyledImageElementWrapper>\n\t\t\t\t\t<Image\n\t\t\t\t\t\tclassName={'offer-element'}\n\t\t\t\t\t\tsrc={`/img/homepage/offer/${offerName}/el.svg`}\n\t\t\t\t\t\talt={offerName}\n\t\t\t\t\t/>\n\t\t\t\t</StyledImageElementWrapper>\n\n\t\t\t\t<span>{offerName}</span>\n\t\t\t</>\n\t\t</StyledMainPageOfferButton>\n\t);\n};\n","import { GameType } from '@modules/games/Game/constants/availableGames';\n\nexport const EVENTS = {\n\tGAME_LOADED: 'game:event:loaded',\n\tGAME_RESULT: (game: GameType) => `${game}:event:result`,\n\tGAME_BET_ERROR: (game: GameType) => `${game}:event:bet-error`,\n\tPLINKO_PIN_COLLISION: `${GameType.PLINKO}:event:pin-collision`,\n\tKENO_INIT_SUMMARY: `${GameType.KENO}:event:init-summary`,\n\tKENO_INIT_TILE_ANIMATION: (tileNumber: number) =>\n\t\t`${GameType.KENO}:event:init-tile-animation:${tileNumber}`,\n\tKENO_SHOW_BET_RESULT: `${GameType.KENO}:event:show-bet-result`,\n} as const;\n\ntype Events = keyof typeof EVENTS;\nexport type EventsType = (typeof EVENTS)[Events];\n","import { Subject } from 'rxjs';\n\nclass SubjectControllerClass {\n\tprivate subjects: Record<string, Subject<any>> = {};\n\n\tconstructor() {\n\t\t// this.subject = new Subject();\n\t}\n\n\tpublic subscribe(id, callback) {\n\t\tif (!this.subjects[id]) {\n\t\t\tthis.subjects[id] = new Subject();\n\t\t}\n\n\t\treturn this.subjects[id].subscribe(callback);\n\t}\n\n\tpublic emit(id, message) {\n\t\tthis.subjects[id]?.next(message);\n\t}\n}\n\nexport const SubjectController = new SubjectControllerClass();\n","import { useCallback, useEffect, useRef } from 'react';\nimport { SubjectController } from '@common/controllers/subjectController';\nimport { Subscription } from 'rxjs';\n\nexport const emitCustomEvent = <T>(eventName: string, details?: T) => {\n\t// console.log('emitCustomEvent', eventName, details);\n\tSubjectController.emit(eventName, details);\n};\n\nexport const useCustomEventListener = <T>(\n\teventName: string,\n\thandler: (details: T) => void,\n) => {\n\tconst handlerRef = useRef<Subscription>(null);\n\n\tconst handler_ = useCallback(\n\t\t(details: T) => {\n\t\t\t// console.log('useCustomEventListener - handler', eventName, details);\n\t\t\thandler(details);\n\t\t},\n\t\t[handler],\n\t);\n\n\tuseEffect(() => {\n\t\tif (!eventName) {\n\t\t\treturn;\n\t\t}\n\t\thandlerRef.current = SubjectController.subscribe(eventName, handler_);\n\n\t\treturn () => {\n\t\t\thandlerRef.current.unsubscribe();\n\t\t};\n\t}, [eventName, handler_]);\n};\n","import { AppThunk } from '@legacyApp/types/store/ThunkAction';\nimport { getBalance } from '@legacyApp/client/modules/app/balanceService';\nimport { config } from '@legacyApp/client/config';\nimport { BalanceElement } from '@legacyApp/types/balance/BalancesArray';\nimport { roundNumber } from '@common/methods/roundNumber/roundNumber';\nimport { UserBalance } from '../UserBalance.type';\n\nexport const getChangedBalanceThunk = (data: {\n\tcurrency: UserBalance['currency'];\n\tamount: UserBalance['amount'];\n}): AppThunk<BalanceElement> => {\n\treturn (dispatch, getState) => {\n\t\tconst state = getState();\n\t\tconst { currency, amount } = data;\n\t\tconst balanceElement = getBalance(state.balance.balancesArray, currency);\n\t\tconst newBalance = roundNumber(\n\t\t\tNumber(balanceElement.amount) + Number(amount),\n\t\t\tconfig.decimals.balance,\n\t\t);\n\t\tconst newBalanceUsd = roundNumber(\n\t\t\tNumber(balanceElement.amount_usd) +\n\t\t\t\troundNumber(\n\t\t\t\t\tNumber(amount) * state.stats.price[currency],\n\t\t\t\t\tconfig.decimals.balance,\n\t\t\t\t),\n\t\t\tconfig.decimals.balance,\n\t\t);\n\t\treturn {\n\t\t\tcurrency,\n\t\t\tamount_usd: newBalanceUsd,\n\t\t\tamount: newBalance,\n\t\t};\n\t};\n};\n","import { config } from '@legacyApp/client/config';\nimport { roundNumber } from '@common/methods/roundNumber/roundNumber';\nimport { GameType } from '../../../Game/constants/availableGames';\n\nexport const GAME = GameType.DICE;\nexport const ID = `${GAME}-value`;\nexport const roundBetValue = (value: number): number => {\n\treturn roundNumber(value, config.decimals.betValue);\n};\n","import { GameStrategy } from '../types/GameStrategy';\nimport { checkEasyConfig } from './checkEasyConfig';\n\nexport const checkExpertConfig = (config: GameStrategy['config']): boolean => {\n\t// console.log('isExpert - 1', { config });\n\tif (!config) {\n\t\treturn false;\n\t}\n\t// console.log('isExpert - 2', {length: config.length, config});\n\tif (config?.length) {\n\t\tconst isEasyTemplate = config.every(\n\t\t\t(el) => !el?.command || (el.command.length === 1 && el.when.length === 1),\n\t\t);\n\t\t// console.log('isExpert - 3', {isEasyTemplate});\n\t\tif (config?.length <= 4 && isEasyTemplate) {\n\t\t\t// console.log('isExpert', {isEasy: isEasyConfig(config), config: JSON.stringify(config)});\n\t\t\treturn !checkEasyConfig(config);\n\t\t}\n\t\treturn true;\n\t}\n\treturn false;\n};\n","import { BetState } from '@modules/games/Game/store/game/@types/PlaceBetResponse';\nimport { GameStrategy } from '../types/GameStrategy';\n\nexport const checkEasyConfig = (config: GameStrategy['config']): boolean => {\n\tif (\n\t\tconfig.filter((el) => {\n\t\t\treturn (\n\t\t\t\t['resetAmount', 'increaseAmountPercent'].indexOf(el.command[0].name) >\n\t\t\t\t-1\n\t\t\t);\n\t\t}).length !== 2\n\t) {\n\t\treturn false;\n\t}\n\treturn config.every((el) => {\n\t\tif (el.command[0].name === 'stop') {\n\t\t\tif (el.when[0].name === 'profit' && el.when[0].type === 'gte') {\n\t\t\t\t// console.log('isEasyConfig - stopAction', jsonToString(el));\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\tif (el.when[0].name === 'loss' && el.when[0].type === 'before') {\n\t\t\t\t// console.log('isEasyConfig - stopAction', jsonToString(el));\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\tif (\n\t\t\t['resetAmount', 'increaseAmountPercent'].indexOf(el.command[0].name) > -1\n\t\t) {\n\t\t\tif ([BetState.WIN, BetState.LOSE].indexOf(el.when[0].name) > -1) {\n\t\t\t\tif (el.when[0].type === 'every') {\n\t\t\t\t\tif (parseFloat(el.when[0].value) === 1) {\n\t\t\t\t\t\t// console.log('isEasyConfig - amountAction', jsonToString(el));\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t});\n};\n","import { RollRule } from '../types/RollRule';\n\nexport const checkIsDoubleValue = (rule: RollRule): boolean => {\n\treturn [RollRule.BETWEEN, RollRule.OUTSIDE].indexOf(rule) > -1;\n};\n","import { RollRule } from '../types/RollRule';\n\nexport const checkIsQuadrupleValue = (rule: RollRule): boolean => {\n\treturn [RollRule.TWO_RANGE].indexOf(rule) > -1;\n};\n","import { RollRule } from '../types/RollRule';\n\nexport const checkIsSingleValue = (rule: RollRule): boolean => {\n\tif (!rule) {\n\t\treturn true;\n\t}\n\treturn [RollRule.UNDER, RollRule.OVER, RollRule.DIRECT].indexOf(rule) > -1;\n};\n","import { RollRule } from '../types/RollRule';\nimport { GameType } from '../constants/availableGames';\nimport { checkIsSingleValue } from './checkIsSingleValue';\n\nexport const checkIsWinChanceDisabled = (rule: RollRule, game: GameType) => {\n\tif (game !== GameType.DICE) {\n\t\treturn false;\n\t}\n\treturn !checkIsSingleValue(rule) || rule === RollRule.DIRECT;\n};\n","import { isFunction } from '@common/methods/isFunction';\nimport { jsonToString } from '@common/methods/jsonToString';\nimport { stringToJson } from '@common/methods/stringToJson';\nimport { Bet } from '../store/game/@types/PlaceBetResponse';\n\nexport const createPlacedBet = (bet: Bet): string => {\n\treturn `${bet.hash}||${bet.position}||${\n\t\tisFunction(bet?.path?.join) ? bet.path.join('') : '_'\n\t}||${bet.result_value}||${jsonToString(bet)}`;\n};\n\nexport type PlacedBet = {\n\thash: string | null;\n\tposition: number | null;\n\tpath: number[] | null;\n\tresult: string;\n\tbet: Bet;\n};\n\nexport const parsePlacedBet = (position: string): PlacedBet => {\n\tif (!position) {\n\t\treturn {\n\t\t\thash: null,\n\t\t\tposition: null,\n\t\t\tpath: null,\n\t\t\tresult: null,\n\t\t\tbet: null,\n\t\t};\n\t}\n\tif (!isFunction(position?.split)) {\n\t\treturn {\n\t\t\thash: null,\n\t\t\tposition: Number(position),\n\t\t\tpath: null,\n\t\t\tresult: null,\n\t\t\tbet: null,\n\t\t};\n\t}\n\tconst [hash, pos, path, result_value, betString] = position.split('||');\n\treturn {\n\t\thash,\n\t\tresult: result_value,\n\t\tposition: Number(pos),\n\t\tpath: path?.split('').map(Number),\n\t\tbet: stringToJson(betString),\n\t};\n};\n","import { config } from '@legacyApp/client/config';\nimport { mathService } from '@legacyApp/client/modules/math/mathService';\nimport {\n\tgetMaxWinChance,\n\tgetMinWinChance,\n} from '@legacyApp/client/modules/app/validateService';\nimport { isTrueOrZero } from '@common/methods/isTrueOrZero';\nimport { roundBetValue } from '@modules/games/DiceGame/components/BetValue/betValue.constants';\nimport {\n\tGetBetValueMaxMin,\n\tGetBetValueMaxMinProps,\n\tGetBetValueMaxMinResult,\n} from '../types/GetBetValueMaxMin';\nimport { RollRule } from '../types/RollRule';\nimport { GameType } from '../constants/availableGames';\nimport { checkIsSingleValue } from './checkIsSingleValue';\n\nexport const MAX_WIN_CHANCE = getMaxWinChance();\nexport const MIN_WIN_CHANCE = getMinWinChance(GameType.DICE);\n\nexport const MAX_BET_RESULT = config.games.dice.maxBetResult;\nexport const MIN_BET_RESULT = config.games.dice.minBetResult;\nexport const MIN_BET_VALUE_UNIT = mathService.getMinValueByPrecision(\n\tconfig.decimals.betValue,\n);\nexport const GUARANTEED_LOST_VALUES_WIN_CHANCE = roundBetValue(\n\tMAX_BET_RESULT - config.games.maxWinChance,\n);\nexport const MAX_RANGE_VALUE = roundBetValue(\n\tMAX_BET_RESULT + MIN_BET_VALUE_UNIT,\n);\n\nexport const getPrevAndNextBetValue = (props: GetBetValueMaxMinProps) => {\n\tif (!isTrueOrZero(props.index)) {\n\t\treturn {};\n\t}\n\tconst prevBetValue = props.betValues?.[props.index - 1];\n\tconst nextBetValue = props.betValues?.[props.index + 1];\n\treturn {\n\t\tprevBetValue,\n\t\tnextBetValue,\n\t};\n};\n\nexport const getSingleBetValueMaxMin = (\n\tprops: GetBetValueMaxMinProps,\n): GetBetValueMaxMinResult => {\n\tif (props.rule === RollRule.DIRECT) {\n\t\treturn {\n\t\t\tmin: roundBetValue(MIN_BET_RESULT),\n\t\t\tmax: roundBetValue(MAX_BET_RESULT),\n\t\t};\n\t}\n\tif (props.rule === RollRule.OVER) {\n\t\treturn {\n\t\t\tmin: roundBetValue(MIN_BET_RESULT + GUARANTEED_LOST_VALUES_WIN_CHANCE),\n\t\t\tmax: roundBetValue(MAX_BET_RESULT - MIN_BET_VALUE_UNIT),\n\t\t};\n\t}\n\treturn {\n\t\tmin: roundBetValue(MIN_BET_RESULT + MIN_BET_VALUE_UNIT),\n\t\tmax: roundBetValue(MAX_BET_RESULT - GUARANTEED_LOST_VALUES_WIN_CHANCE),\n\t};\n};\n\nexport const getBetweenBetValueMaxMin = (\n\tprops: GetBetValueMaxMinProps,\n): GetBetValueMaxMinResult => {\n\tconst { prevBetValue, nextBetValue } = getPrevAndNextBetValue(props);\n\n\tlet min = MIN_BET_RESULT;\n\tlet max = MAX_RANGE_VALUE;\n\n\tif (isTrueOrZero(nextBetValue)) {\n\t\tmin = nextBetValue - (MAX_WIN_CHANCE + MIN_BET_VALUE_UNIT);\n\t\tmax = nextBetValue - (MIN_WIN_CHANCE + MIN_BET_VALUE_UNIT);\n\t}\n\n\tif (isTrueOrZero(prevBetValue)) {\n\t\tmin = MIN_WIN_CHANCE + (prevBetValue + MIN_BET_VALUE_UNIT);\n\t\tmax = MAX_WIN_CHANCE + (prevBetValue + MIN_BET_VALUE_UNIT);\n\t}\n\n\treturn {\n\t\tmin: roundBetValue(min < MIN_BET_RESULT ? MIN_BET_RESULT : min),\n\t\tmax: roundBetValue(max > MAX_RANGE_VALUE ? MAX_RANGE_VALUE : max),\n\t};\n};\n\nexport const getOutsideBetValueMaxMin = (\n\tprops: GetBetValueMaxMinProps,\n): GetBetValueMaxMinResult => {\n\tconst { prevBetValue, nextBetValue } = getPrevAndNextBetValue(props);\n\n\tlet min = MIN_BET_RESULT;\n\tlet max = MAX_BET_RESULT;\n\n\tif (isTrueOrZero(nextBetValue)) {\n\t\tmin = nextBetValue + MIN_WIN_CHANCE - MAX_BET_RESULT;\n\t\tmax = nextBetValue + MAX_WIN_CHANCE - MAX_BET_RESULT;\n\t}\n\n\tif (isTrueOrZero(prevBetValue)) {\n\t\tmin = prevBetValue - MAX_WIN_CHANCE + MAX_BET_RESULT;\n\t\tmax = prevBetValue - MIN_WIN_CHANCE + MAX_BET_RESULT;\n\t}\n\n\treturn {\n\t\tmin: roundBetValue(min < MIN_BET_RESULT ? MIN_BET_RESULT : min),\n\t\tmax: roundBetValue(max > MAX_BET_RESULT ? MAX_BET_RESULT : max),\n\t};\n};\n\nexport const getTwoRangeBetValueMaxMin = (\n\tprops: GetBetValueMaxMinProps,\n): GetBetValueMaxMinResult => {\n\tconst { index, betValues } = props;\n\n\tconst minResult = isTrueOrZero(betValues?.[index - 1])\n\t\t? betValues?.[index - 1] < MIN_BET_RESULT\n\t\t\t? MIN_BET_RESULT\n\t\t\t: betValues?.[index - 1] +\n\t\t\t (index % 2 === 1 ? 2 * MIN_BET_VALUE_UNIT : MIN_BET_VALUE_UNIT)\n\t\t: MIN_BET_RESULT;\n\tconst maxResult = isTrueOrZero(betValues?.[index + 1])\n\t\t? betValues?.[index + 1] > MAX_RANGE_VALUE\n\t\t\t? MAX_RANGE_VALUE\n\t\t\t: betValues?.[index + 1] -\n\t\t\t (index % 2 === 1 ? MIN_BET_VALUE_UNIT : 2 * MIN_BET_VALUE_UNIT)\n\t\t: MAX_RANGE_VALUE;\n\n\tlet min = minResult;\n\tlet max = maxResult;\n\n\tconst MIN_WIN_CHANCE_ = MIN_WIN_CHANCE + MIN_BET_VALUE_UNIT;\n\n\tif (index === 0) {\n\t\tmin =\n\t\t\tbetValues[3] +\n\t\t\tbetValues[1] -\n\t\t\tbetValues[2] -\n\t\t\t(MAX_WIN_CHANCE + 2 * MIN_BET_VALUE_UNIT);\n\t\tmax =\n\t\t\tbetValues[3] +\n\t\t\tbetValues[1] -\n\t\t\tbetValues[2] -\n\t\t\t(MIN_WIN_CHANCE_ + 2 * MIN_BET_VALUE_UNIT);\n\t}\n\n\tif (index === 1) {\n\t\tmin =\n\t\t\tMIN_WIN_CHANCE_ +\n\t\t\t2 * MIN_BET_VALUE_UNIT -\n\t\t\tbetValues[3] +\n\t\t\tbetValues[2] +\n\t\t\tbetValues[0];\n\t\tmax =\n\t\t\tMAX_WIN_CHANCE +\n\t\t\t2 * MIN_BET_VALUE_UNIT -\n\t\t\tbetValues[3] +\n\t\t\tbetValues[2] +\n\t\t\tbetValues[0];\n\t}\n\n\tif (index === 2) {\n\t\tmin =\n\t\t\tbetValues[3] +\n\t\t\tbetValues[1] -\n\t\t\tbetValues[0] -\n\t\t\t(MAX_WIN_CHANCE + 2 * MIN_BET_VALUE_UNIT);\n\t\tmax =\n\t\t\tbetValues[3] +\n\t\t\tbetValues[1] -\n\t\t\tbetValues[0] -\n\t\t\t(MIN_WIN_CHANCE_ + 2 * MIN_BET_VALUE_UNIT);\n\t}\n\n\tif (index === 3) {\n\t\tmin =\n\t\t\tMIN_WIN_CHANCE_ +\n\t\t\t2 * MIN_BET_VALUE_UNIT -\n\t\t\tbetValues[1] +\n\t\t\tbetValues[2] +\n\t\t\tbetValues[0];\n\t\tmax =\n\t\t\tMAX_WIN_CHANCE +\n\t\t\t2 * MIN_BET_VALUE_UNIT -\n\t\t\tbetValues[1] +\n\t\t\tbetValues[2] +\n\t\t\tbetValues[0];\n\t}\n\n\treturn {\n\t\tmin: roundBetValue(min < minResult ? minResult : min),\n\t\tmax: roundBetValue(max > maxResult ? maxResult : max),\n\t};\n};\n\nexport const getBetValueMaxMin: GetBetValueMaxMin = (props) => {\n\tif (checkIsSingleValue(props.rule)) {\n\t\treturn getSingleBetValueMaxMin(props);\n\t}\n\n\tif (props.rule === RollRule.BETWEEN) {\n\t\treturn getBetweenBetValueMaxMin(props);\n\t}\n\n\tif (props.rule === RollRule.OUTSIDE) {\n\t\treturn getOutsideBetValueMaxMin(props);\n\t}\n\n\tif (props.rule === RollRule.TWO_RANGE) {\n\t\treturn getTwoRangeBetValueMaxMin(props);\n\t}\n\n\treturn {\n\t\tmin: null,\n\t\tmax: null,\n\t};\n};\n","import { RootState } from '@legacyApp/client/store/configure.store';\nimport { scientificToDecimal } from '@legacyApp/methods/math/scientificToDecimal';\nimport { roundNumber } from '@common/methods/roundNumber/roundNumber';\nimport { RollRule } from '../types/RollRule';\nimport { checkIsSingleValue } from './checkIsSingleValue';\nimport { getWinChangeFromSingleBetValue } from './getWinChanceFromBetValues';\nimport { checkIsDoubleValue } from './checkIsDoubleValue';\nimport { checkIsQuadrupleValue } from './checkIsQuadrupleValue';\nimport { BetValuesDTO } from './mapBetValuesDTO';\n\nconst parseValue = (value: number): string => {\n\treturn scientificToDecimal(roundNumber(value, 2)).toString();\n};\n\ninterface BetValuesBetConfig extends BetValuesDTO {\n\trule?: RollRule;\n}\n\nexport const getRuleBetValuesBetConfig = (\n\trule: RollRule,\n\tbetValue: RootState['dice']['betValue'],\n): BetValuesBetConfig => {\n\tif (rule === RollRule.DIRECT) {\n\t\treturn {\n\t\t\tbet_value: parseValue(betValue.singleUnder),\n\t\t};\n\t}\n\tif (checkIsSingleValue(rule)) {\n\t\treturn {\n\t\t\tbet_value: parseValue(\n\t\t\t\tgetWinChangeFromSingleBetValue(betValue.singleUnder, rule),\n\t\t\t),\n\t\t};\n\t}\n\tif (checkIsDoubleValue(rule)) {\n\t\treturn {\n\t\t\tbet_value_first: parseValue(betValue.double[0]),\n\t\t\tbet_value_second: parseValue(betValue.double[1]),\n\t\t};\n\t}\n\tif (checkIsQuadrupleValue(rule)) {\n\t\treturn {\n\t\t\tbet_value_first: parseValue(betValue.quadruple[0]),\n\t\t\tbet_value_second: parseValue(betValue.quadruple[1]),\n\t\t\tbet_value_third: parseValue(betValue.quadruple[2]),\n\t\t\tbet_value_fourth: parseValue(betValue.quadruple[3]),\n\t\t};\n\t}\n\treturn null;\n};\n","import {\n\tgetGameFromUrl,\n\tgetPayout,\n} from '@legacyApp/client/modules/app/gameService';\nimport { RootState } from '@legacyApp/client/store/configure.store';\nimport { GameType } from '../constants/availableGames';\nimport { GameStrategy } from '../types/GameStrategy';\nimport { RollRule } from '../types/RollRule';\nimport { getRuleBetValuesBetConfig } from './getRuleBetValuesBetConfig';\n\nconst getDiceConfig = (state: RootState) => {\n\tconst rule = state.dice.rollDirection;\n\tconst betValues =\n\t\trule === RollRule.OVER\n\t\t\t? null\n\t\t\t: getRuleBetValuesBetConfig(\n\t\t\t\t\tstate.dice.rollDirection,\n\t\t\t\t\tstate.dice.betValue,\n\t\t\t );\n\treturn {\n\t\trollDirection: rule,\n\t\t...(!!betValues && { betValues }),\n\t};\n};\n\nconst getKenoConfig = (state: RootState) => {\n\treturn {\n\t\tselected: state.keno.selectedNumbers,\n\t};\n};\n\nexport const getStrategyFromState = (\n\tstate: RootState,\n\tgame: GameType,\n\tisDefault?: boolean,\n): GameStrategy => {\n\tif (!game) {\n\t\tgame = state.game?.activeGame || getGameFromUrl();\n\t}\n\treturn {\n\t\t...(game === GameType.DICE && getDiceConfig(state)),\n\t\t...(game === GameType.KENO && getKenoConfig(state)),\n\t\tgame,\n\t\tcurrency:\n\t\t\tisDefault &&\n\t\t\tstate.gameAutobet?.currency &&\n\t\t\tstate.gameAutobet?.currency[game]\n\t\t\t\t? state.gameAutobet?.currency[game]\n\t\t\t\t: state.user.activeCurrency,\n\t\tconfig:\n\t\t\tstate.gameAutobet?.mode === 'easy'\n\t\t\t\t? state.gameAutobet?.configEasy[game]\n\t\t\t\t: state.gameAutobet?.config[game],\n\t\tpayoutValue:\n\t\t\tNumber(\n\t\t\t\tisDefault\n\t\t\t\t\t? game === 'limbo'\n\t\t\t\t\t\t? state?.limbo?.defaultPayout\n\t\t\t\t\t\t: getPayout(state.game?.defaultWinChanceValue[game], game)\n\t\t\t\t\t: state.game?.payoutValue[game],\n\t\t\t) || null,\n\t\trolls: Number(state.gameAutobet?.rolls) || null,\n\t\t...(state[game]?.risk && { risk: state[game].risk }),\n\t\t...(state[game]?.lines && { rows: state[game].lines }),\n\t\tbetAmount:\n\t\t\tNumber(\n\t\t\t\tisDefault\n\t\t\t\t\t? state.game?.defaultBetAmount[game]\n\t\t\t\t\t: state.game?.betAmount[game],\n\t\t\t) || null,\n\t};\n};\n","import { getWinChanceDecimal } from '@legacyApp/client/modules/app/gameService';\nimport { isTrueOrZero } from '@common/methods/isTrueOrZero';\nimport { roundNumber } from '@common/methods/roundNumber/roundNumber';\nimport { GameType } from '../constants/availableGames';\nimport { RollRule } from '../types/RollRule';\nimport { MAX_BET_RESULT, MIN_BET_VALUE_UNIT } from './getBetValueMaxMin';\n\nexport const parseSingleBetValue = (betValue: number, rule: RollRule) => {\n\tif (rule === RollRule.DIRECT) {\n\t\treturn betValue;\n\t}\n\n\treturn getWinChangeFromSingleBetValue(betValue, rule);\n};\n\nexport const getWinChangeFromSingleBetValue = (\n\tbetValue: number,\n\trule: RollRule,\n): number => {\n\tif (!isTrueOrZero(betValue)) {\n\t\treturn null;\n\t}\n\tif (rule === RollRule.OVER) {\n\t\treturn roundNumber(\n\t\t\tMAX_BET_RESULT - betValue,\n\t\t\tgetWinChanceDecimal(GameType.DICE),\n\t\t);\n\t}\n\tif (rule === RollRule.DIRECT) {\n\t\treturn roundNumber(MIN_BET_VALUE_UNIT, getWinChanceDecimal(GameType.DICE));\n\t}\n\treturn betValue;\n};\n\nexport const getWinChanceFromMultipleBetValues = (\n\tbetValue: ReadonlyArray<number>,\n\trule: RollRule,\n): number => {\n\tif (!betValue?.length) {\n\t\treturn null;\n\t}\n\tif (rule === RollRule.OUTSIDE) {\n\t\treturn roundNumber(\n\t\t\tMAX_BET_RESULT - roundNumber(betValue[1] - betValue[0]),\n\t\t\tgetWinChanceDecimal(GameType.DICE),\n\t\t);\n\t}\n\tif (rule === RollRule.BETWEEN) {\n\t\treturn roundNumber(\n\t\t\troundNumber(betValue[1] - (betValue[0] + MIN_BET_VALUE_UNIT)),\n\t\t\tgetWinChanceDecimal(GameType.DICE),\n\t\t);\n\t}\n\tif (rule === RollRule.TWO_RANGE) {\n\t\treturn roundNumber(\n\t\t\troundNumber(betValue[1] - (betValue[0] + MIN_BET_VALUE_UNIT)) +\n\t\t\t\troundNumber(betValue[3] - (betValue[2] + MIN_BET_VALUE_UNIT)),\n\t\t\tgetWinChanceDecimal(GameType.DICE),\n\t\t);\n\t}\n\treturn null;\n};\n","import { betValueSlice } from './slices/betValue.slice';\nimport { resultSlice } from './slices/result.slice';\nimport { ruleDefaultSlice, ruleSlice } from './slices/rule.slice';\nimport { isResultVisibleSlice } from './slices/isResultVisible.slice';\n\nexport const diceActions = {\n\t...betValueSlice.actions,\n\t...resultSlice.actions,\n\t...ruleDefaultSlice.actions,\n\t...ruleSlice.actions,\n\t...isResultVisibleSlice.actions,\n};\n","import { reducerInitialStateMethods } from '@common/methods/reducerInitialStateMethods';\n\nexport const diceInitialState = reducerInitialStateMethods('dice');\n","import ReduxToolkit, { createSlice } from '@reduxjs/toolkit';\nimport { config } from '@legacyApp/client/config';\nimport { diceInitialState } from '../diceInitialState';\n\nconst defaultBetValue = config.games.dice.betValue;\n\nconst NAME = 'betValue';\n\nexport type ValueType = {\n\tsingleUnder: number; // source of truth for default rule \"under\"\n\tdouble: [number, number];\n\tquadruple: [number, number, number, number];\n};\n\nconst initialState: ValueType = diceInitialState.getInitialState(NAME) || {\n\tsingleUnder: defaultBetValue,\n\tdouble: [25, 75],\n\tquadruple: [15, 40, 60, 85],\n};\n\nconst setAction: ReduxToolkit.CaseReducer<\n\tValueType,\n\tReduxToolkit.PayloadAction<ValueType>\n> = (state, action) => {\n\tdiceInitialState.setInitialState(NAME, action.payload);\n\treturn action.payload;\n};\n\nconst singleValueUpdate: ReduxToolkit.CaseReducer<\n\tValueType,\n\tReduxToolkit.PayloadAction<ValueType['singleUnder']>\n> = (state, action) => {\n\tstate.singleUnder = action.payload;\n\tdiceInitialState.setInitialState(NAME, state);\n\treturn state;\n};\n\nconst doubleValueUpdate: ReduxToolkit.CaseReducer<\n\tValueType,\n\tReduxToolkit.PayloadAction<ValueType['double']>\n> = (state, action) => {\n\tstate.double = action.payload;\n\tdiceInitialState.setInitialState(NAME, state);\n\treturn state;\n};\n\nconst quadrupleValueUpdate: ReduxToolkit.CaseReducer<\n\tValueType,\n\tReduxToolkit.PayloadAction<ValueType['quadruple']>\n> = (state, action) => {\n\tstate.quadruple = action.payload;\n\tdiceInitialState.setInitialState(NAME, state);\n\treturn state;\n};\n\nconst betValueIndexUpdate: ReduxToolkit.CaseReducer<\n\tValueType,\n\tReduxToolkit.PayloadAction<{\n\t\tindex: number;\n\t\tvalue: number;\n\t}>\n> = (state, action) => {\n\tstate[action.payload.index] = action.payload.value;\n\tdiceInitialState.setInitialState(NAME, state);\n\treturn state;\n};\n\nexport const betValueSlice = createSlice({\n\tname: NAME,\n\tinitialState,\n\treducers: {\n\t\tsingleValueUpdate,\n\t\tdoubleValueUpdate,\n\t\tquadrupleValueUpdate,\n\t\tbetValueUpdate: setAction,\n\t\tbetValueIndexUpdate,\n\t},\n});\n","import ReduxToolkit, { createSlice } from '@reduxjs/toolkit';\n\nexport type ValueType = number;\n\nconst NAME = 'isResultVisible';\n\nconst initialState = 0;\n\nconst resultShow: ReduxToolkit.CaseReducer<\n\tValueType,\n\tReduxToolkit.PayloadAction<ValueType>\n> = (state) => {\n\treturn (state += 1);\n};\n\nconst resultHide: ReduxToolkit.CaseReducer<\n\tValueType,\n\tReduxToolkit.PayloadAction<ValueType>\n> = (state) => {\n\treturn (state -= 1);\n};\n\nexport const isResultVisibleSlice = createSlice({\n\tname: NAME,\n\tinitialState,\n\treducers: {\n\t\tresultShow,\n\t\tresultHide,\n\t},\n});\n","import ReduxToolkit, { createSlice } from '@reduxjs/toolkit';\n\nconst NAME = 'result';\n\nexport interface ResultType {\n\tresult: boolean | number;\n\tresultValue: boolean | number;\n}\n\nconst initialState: ResultType = {\n\tresult: false,\n\tresultValue: false,\n};\n\nconst setAction: ReduxToolkit.CaseReducer<\n\tResultType,\n\tReduxToolkit.PayloadAction<ResultType>\n> = (state, action) => {\n\treturn action.payload;\n};\n\nexport const resultSlice = createSlice({\n\tname: NAME,\n\tinitialState,\n\treducers: {\n\t\tresultUpdate: setAction,\n\t},\n});\n","import ReduxToolkit, { createSlice } from '@reduxjs/toolkit';\nimport { RollRule } from '../../../types/RollRule';\nimport { diceInitialState } from '../diceInitialState';\n\nconst NAME = 'rule';\nconst NAME_DEFAULT = `${NAME}Default`;\n\nexport type ValueType = RollRule;\n\nconst initialState = diceInitialState.getInitialState(NAME) || RollRule.UNDER;\n\nconst initialDefaultState =\n\tdiceInitialState.getInitialState(NAME_DEFAULT) || RollRule.UNDER;\n\nconst setAction: ReduxToolkit.CaseReducer<\n\tValueType,\n\tReduxToolkit.PayloadAction<ValueType>\n> = (state, action) => {\n\tdiceInitialState.setInitialState(NAME, action.payload);\n\treturn action.payload;\n};\n\nexport const ruleSlice = createSlice({\n\tname: NAME,\n\tinitialState,\n\treducers: {\n\t\truleUpdate: setAction,\n\t},\n});\n\nexport const ruleDefaultSlice = createSlice({\n\tname: NAME_DEFAULT,\n\tinitialState: initialDefaultState,\n\treducers: {\n\t\tdefaultRuleUpdate: setAction,\n\t},\n});\n","export const FLASHBET_RESULT = 'FLASHBET_RESULT';\n","import { Bet } from '@modules/games/Game/store/game/@types/PlaceBetResponse';\nimport { BetResult } from '../../components/lastBets/types';\nimport { mapGameBetResult } from './gameService';\n\nexport const createBetResult = (data: Bet): BetResult => {\n\treturn {\n\t\thash: data.hash,\n\t\tresult_value: mapGameBetResult(data.game.name, data),\n\t\tstate: data.state,\n\t\tpublished_at: data.published_at,\n\t\tnonce: data.nonce,\n\t};\n};\n","import { isTrueOrZero } from '@common/methods/isTrueOrZero';\nimport { game_config } from '@legacyApp/client/game_config';\nimport { AppThunk } from '@legacyApp/types/store/ThunkAction';\nimport { createPlacedBet } from '@modules/games/Game/methods/createPlacedBet';\nimport { gamePlacedBet } from '@modules/games/Game/store/game/game.actions';\nimport { Bet } from '@modules/games/Game/store/game/@types/PlaceBetResponse';\n\nexport const gameTriggerAnimationBetResultThunk = (bet: Bet): AppThunk => {\n\treturn (dispatch, getState) => {\n\t\tconst { game } = getState();\n\n\t\tif (\n\t\t\t!game_config[game.activeGame].resultAnimation ||\n\t\t\t!(isTrueOrZero(Number(bet?.result_value)) && bet?.state)\n\t\t) {\n\t\t\treturn dispatch(\n\t\t\t\tgamePlacedBet({\n\t\t\t\t\tgame: game.activeGame,\n\t\t\t\t\tvalue: null,\n\t\t\t\t}),\n\t\t\t);\n\t\t}\n\n\t\tdispatch(\n\t\t\tgamePlacedBet({\n\t\t\t\tgame: game.activeGame,\n\t\t\t\tvalue: createPlacedBet(bet),\n\t\t\t}),\n\t\t);\n\t};\n};\n","import { GameType } from '@modules/games/Game/constants/availableGames';\n\nexport const parseGameName = (\n\tgameName: GameType | { name: GameType },\n): GameType => {\n\tif (typeof gameName === 'string') {\n\t\treturn gameName;\n\t}\n\treturn gameName?.name;\n};\n","import { AppThunk } from '@legacyApp/types/store/ThunkAction';\nimport { UserBalance } from '../UserBalance.type';\nimport { updateBalance } from '../balance.actions';\nimport { getChangedBalanceThunk } from './getChangedBalance.thunk';\n\nexport const changeBalanceThunk = (\n\tdata: {\n\t\tcurrency: UserBalance['currency'];\n\t\tamount: UserBalance['amount'];\n\t},\n\tsource: string,\n): AppThunk => {\n\treturn (dispatch) => {\n\t\tconst payload = dispatch(getChangedBalanceThunk(data));\n\t\tdispatch(updateBalance(payload, `changeBalanceThunk_${source}`));\n\t};\n};\n","import { LOADING_IDS } from '@common/constants/fetch/loading.ids';\nimport { validBetData } from '@legacyApp/client/modules/app/gameService';\nimport { sentryError } from '@legacyApp/client/modules/app/sentryService';\nimport { trans } from '@legacyApp/client/modules/translation/translate';\nimport { fetchApi } from '@legacyApp/client/store/fetch/fetch.thunk';\nimport { AppThunk } from '@legacyApp/types/store/ThunkAction';\nimport { getStrategyFromState } from '@modules/games/Game/methods/getStrategyFromState';\nimport { createPlaceBetUrl } from '@modules/games/Game/store/game/methods/createPlaceBetUrl';\nimport { createPlaceBetBodyThunk } from '@modules/games/Game/store/game/methods/createPlaceBetBody.thunk';\nimport { checkIsStrategyFromBetPayload } from '@modules/games/Game/store/game/methods/checkIsStrategyFromBetPayload';\nimport { BetConfig } from '@modules/games/Game/store/game/@types/BetConfig';\nimport { openAutobetSummaryThunk } from '@modules/games/Game/store/gameAutobet/thunks/openAutobetSummary.thunk';\nimport { PlaceBetResponse } from '@modules/games/Game/store/game/@types/PlaceBetResponse';\nimport { apiConfig } from '@server/config/api.config';\n\nexport const sendBetThunk = (\n\tpayload: BetConfig,\n\tsource: string,\n): AppThunk<Promise<PlaceBetResponse>> => {\n\treturn async (dispatch, getState) => {\n\t\tconst state = getState();\n\n\t\tconst { game, auto, flash } = payload;\n\n\t\tconst isStrategy = checkIsStrategyFromBetPayload(payload);\n\n\t\tif (!validBetData(payload) && isStrategy) {\n\t\t\tsentryError(\n\t\t\t\tnew Error(`Invalid bet data from - ${source}`),\n\t\t\t\t{\n\t\t\t\t\tpayload: payload,\n\t\t\t\t},\n\t\t\t\tstate,\n\t\t\t);\n\n\t\t\tdispatch(\n\t\t\t\topenAutobetSummaryThunk({\n\t\t\t\t\tdata: {\n\t\t\t\t\t\tstop_reason: trans({\n\t\t\t\t\t\t\tlabel:\n\t\t\t\t\t\t\t\t'We are sorry, invalid bet data. Report has been sent to our developers.',\n\t\t\t\t\t\t}),\n\t\t\t\t\t\tstrategy: getStrategyFromState(state, game, true),\n\t\t\t\t\t},\n\t\t\t\t\tgame,\n\t\t\t\t\ttype: 'error',\n\t\t\t\t\tid: null,\n\t\t\t\t}),\n\t\t\t);\n\n\t\t\treturn null;\n\t\t}\n\n\t\tconst props = {\n\t\t\turl: {\n\t\t\t\tapiUrl: isStrategy ? apiConfig.autobetUrl : apiConfig.diceUrl,\n\t\t\t\turi: createPlaceBetUrl(payload),\n\t\t\t},\n\t\t\tparameters: {\n\t\t\t\tAuthorization: true,\n\t\t\t\tbody: dispatch(createPlaceBetBodyThunk(payload)),\n\t\t\t},\n\t\t\tmethod: 'POST',\n\t\t\tloaderId: flash ? LOADING_IDS.FLASH_BET : LOADING_IDS.PLACE_BET,\n\t\t\tlockByModal: true,\n\t\t\tdisableErrorHandler: auto,\n\t\t};\n\n\t\treturn await dispatch(fetchApi(props));\n\t};\n};\n","import { combineEpics } from 'redux-observable';\nimport { delay, map } from 'rxjs/operators';\nimport { from, of } from 'rxjs';\nimport { LOCATION_CHANGE } from 'connected-next-router';\nimport { updateBalance } from '@modules/balance/store/balance.actions';\nimport { UPDATE_BALANCE } from '@modules/balance/store/balance.constants';\nimport { SET_CURRENCY } from '@legacyApp/client/store/user/user.constants';\nimport { newResult } from '@legacyApp/client/store/transactions/transactions.actions';\nimport {\n\tgetBetProfit,\n\tgetGameFromUrl,\n\tgetMinBetAmount,\n\tisGameSessionActive,\n} from '@legacyApp/client/modules/app/gameService';\nimport { trans } from '@legacyApp/client/modules/translation/translate';\nimport { capitalize } from '@legacyApp/client/modules/app/appService';\nimport { showAlert } from '@legacyApp/client/store/alerts/alerts.actions';\nimport { epic, epicOldState } from '@legacyApp/client/modules/app/epicService';\nimport { getStrategyGames } from '@legacyApp/client/modules/app/strategyV3Service';\nimport { OPEN_MODAL } from '@modules/modals/store/modal.constants';\nimport { resetModal } from '@modules/modals/store/modal.actions';\nimport { MODAL_ID } from '@common/constants/modal/ids.modal.constants';\nimport { scientificToDecimal } from '@legacyApp/methods/math/scientificToDecimal';\nimport {\n\tOPTIONS,\n\tOPTIONS_DISABLE,\n\tOptionsType,\n} from '@legacyApp/client/store/options/options.constants';\nimport { REGISTRY_GAME_PACKAGE } from '@legacyApp/client/store/registry/registry.constants';\nimport { newMyBetThunk } from '@legacyApp/client/store/user/thunks/newMyBet.thunk';\nimport { Sounds } from '@common/constants/config/sounds';\nimport { getRealBalanceNative } from '@legacyApp/client/modules/app/balanceService';\nimport { createBetResult } from '@legacyApp/client/modules/app/createBetResult';\nimport { RootState } from '@legacyApp/client/store/configure.store';\nimport { BalanceElement } from '@legacyApp/types/balance/BalancesArray';\nimport { SET_VISIBLE } from '@legacyApp/client/store/app/app.constants';\n\nimport { AVAILABLE_OFFER } from '@common/components/layout/MainPageOfferButton/MainPageOfferButton';\nimport { gameTriggerAnimationBetResultThunk } from '@modules/games/Game/store/game/thunks/gameTriggerAnimationBetResultThunk';\nimport { game_config } from '@legacyApp/client/game_config';\nimport { getGamesWithResultAnimated } from '@modules/games/Game/store/game/methods/getGamesWithResultAnimated';\nimport { parseGameName } from '@modules/games/Game/store/game/methods/parseGameName';\nimport {\n\tbetLost,\n\tbetWon,\n\tresetAutoSession,\n} from '@modules/games/Game/store/gameSession/gameSession.actions';\nimport {\n\tBetResponseAnimationProps,\n\tbetUpdateAnimated,\n\tBetUpdateAnimatedProps,\n\tgameUpdateAmount,\n\tgameUpdateBetAnimatedLastBalance,\n\tgameUpdatePayout,\n\tgameUpdateProfit,\n\tsetGame,\n} from '@modules/games/Game/store/game/game.actions';\nimport {\n\tBET,\n\tBET_RESPONSE_ANIMATION,\n\tBET_RESULT,\n\tBET_UPDATE_ANIMATED,\n\tGAME_BET_RESULT,\n\tSET_GAME,\n} from '@modules/games/Game/store/game/game.constants';\nimport { placeBetThunk } from '@modules/games/Game/store/game/thunks/placeBet.thunk';\nimport { Bet } from '@modules/games/Game/store/game/@types/PlaceBetResponse';\nimport { gameResolvePendingAnimatedBetsThunk } from '@modules/games/Game/store/game/thunks/gameResolvePendingAnimatedBets.thunk';\nimport { GameType } from '@modules/games/Game/constants/availableGames';\nimport { isTrueOrZero } from '@common/methods/isTrueOrZero';\nimport { autoBetRolling } from '../gameAutobet/gameAutobet.actions';\nimport { AUTOBET_ROLLING } from '../gameAutobet/gameAutobet.constants';\nimport audioService from '../../../../../LegacyApp/client/modules/app/audioService';\nimport routingService from '../../../../../LegacyApp/client/modules/app/routingService';\nimport { diceActions } from '../dice/dice.actions';\n\nconst betEpic = epic('betEpic', {\n\tactions: (ofType) => ofType(BET),\n\tcallback: ({ action }) => {\n\t\treturn of(placeBetThunk(action.payload, action.source));\n\t},\n});\n\nconst betResponseAnimationEpic = epic('betResponseAnimationEpic', {\n\tactions: (ofType) => ofType(BET_RESPONSE_ANIMATION),\n\tcallback: ({ action }: { action: BetResponseAnimationProps }) => {\n\t\treturn of(\n\t\t\tgameUpdateBetAnimatedLastBalance({\n\t\t\t\tgame: action.payload.game,\n\t\t\t\tvalue: action.data.userBalance,\n\t\t\t}),\n\t\t\tbetUpdateAnimated({\n\t\t\t\tvalue: {\n\t\t\t\t\tid: action.data.bet.hash,\n\t\t\t\t\tdata: {\n\t\t\t\t\t\tpayload: action.payload,\n\t\t\t\t\t\tdata: action.data,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tgame: action.payload.game,\n\t\t\t}),\n\t\t);\n\t},\n});\n\nconst betInitEpic = epic('betInitEpic', {\n\tactions: (ofType) => ofType(BET_UPDATE_ANIMATED),\n\tcallback: ({\n\t\taction,\n\t}: {\n\t\taction: {\n\t\t\tpayload: BetUpdateAnimatedProps;\n\t\t};\n\t}) => {\n\t\tif (\n\t\t\t!game_config[action.payload.game].resultAnimation ||\n\t\t\t!action.payload?.value?.data\n\t\t) {\n\t\t\treturn of([]);\n\t\t}\n\t\tconst { data } = action.payload.value;\n\t\treturn of([gameTriggerAnimationBetResultThunk(data.data.bet)]);\n\t},\n});\n\nconst disableAnimationEpic = epic('disableAnimationEpic', {\n\tactions: (ofType) => ofType(OPTIONS_DISABLE),\n\tcallback: ({\n\t\taction,\n\t\tstore$,\n\t}: {\n\t\taction: {\n\t\t\tpayload: OptionsType;\n\t\t};\n\t\tstore$: {\n\t\t\tvalue: RootState;\n\t\t};\n\t}) => {\n\t\tif (action.payload !== OPTIONS.ANIMATION) {\n\t\t\treturn of();\n\t\t}\n\n\t\tconst result = getGamesWithResultAnimated()\n\t\t\t.filter((game) => store$.value.gameAutobet.active[game])\n\t\t\t.map((game) => gameResolvePendingAnimatedBetsThunk(game));\n\n\t\treturn of(result);\n\t},\n});\n\nconst showResultEpic = epic('showResultEpic', {\n\tactions: (ofType) => ofType(diceActions.resultUpdate().type),\n\tcallback: () => {\n\t\treturn of([diceActions.resultShow()]);\n\t},\n});\n\nconst hideResultEpic = epic('hideResultEpic', {\n\tactions: (ofType) => ofType(diceActions.resultShow().type),\n\tcallback: () => {\n\t\treturn of([diceActions.resultHide()]).pipe(delay(5000));\n\t},\n});\n\nconst changeCurrencyEpic = epic('changeCurrencyEpic', {\n\tactions: (ofType) => ofType(UPDATE_BALANCE, SET_CURRENCY),\n\tcallback: ({ store$ }) => {\n\t\tif (\n\t\t\t!Object.keys(store$.value.balance.balances).length ||\n\t\t\t!store$.value.app.initialized\n\t\t) {\n\t\t\treturn of();\n\t\t}\n\t\tconst balance = getRealBalanceNative(\n\t\t\tstore$.value.balance.balances,\n\t\t\tstore$.value.user.activeCurrency,\n\t\t);\n\t\tconst result = [];\n\t\tif (balance === 0) {\n\t\t\tstore$.value.game.gamesList.forEach((game) => {\n\t\t\t\tif (isGameSessionActive(store$.value, game)) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tresult.push(\n\t\t\t\t\tgameUpdateAmount({\n\t\t\t\t\t\tgame,\n\t\t\t\t\t\tvalue: '0.00000000',\n\t\t\t\t\t}),\n\t\t\t\t);\n\t\t\t});\n\t\t} else {\n\t\t\tstore$.value.game.gamesList.forEach((game) => {\n\t\t\t\tif (!store$.value.gameAutobet.active[game]) {\n\t\t\t\t\tconst amount = parseFloat(store$.value.game.betAmount[game]);\n\t\t\t\t\tconst min = getMinBetAmount({\n\t\t\t\t\t\tcurrency: store$.value.user.activeCurrency,\n\t\t\t\t\t\tgame,\n\t\t\t\t\t});\n\t\t\t\t\tconst value = amount < min ? min : amount;\n\t\t\t\t\tif (Number(value) !== Number(store$.value.game.betAmount[game])) {\n\t\t\t\t\t\tresult.push(\n\t\t\t\t\t\t\tgameUpdateAmount({\n\t\t\t\t\t\t\t\tgame,\n\t\t\t\t\t\t\t\tvalue,\n\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t\treturn of(result);\n\t},\n});\n\nconst autobetRollingEpic = epicOldState('autobetRollingEpic', {\n\tactions: (ofType) => ofType(AUTOBET_ROLLING),\n\tcallback: ({ action, newState, oldState }) => {\n\t\tconst result = [];\n\t\tconst isVisible = newState.app.visible;\n\t\tconst isGame = newState.game.activeGame !== action.payload.game;\n\t\t// TODO: chat store usage\n\t\tconst isMobileChat = newState.app.mobile && newState?.chat?.visible;\n\t\tconst isSummaryDisabled = !newState.options[OPTIONS.AUTOBET_SUMMARY];\n\t\tconst isTurnedOff =\n\t\t\t!action.payload.value &&\n\t\t\toldState.gameAutobet.autoBetRolling[action.payload.game];\n\t\t// console.log(AUTOBET_ROLLING, {\n\t\t// isVisible,\n\t\t// isGame,\n\t\t// isMobileChat,\n\t\t// isSummaryDisabled,\n\t\t// isTurnedOff,\n\t\t// });\n\t\tif (\n\t\t\t(!isVisible || ((isGame || isMobileChat) && isSummaryDisabled)) &&\n\t\t\tisTurnedOff\n\t\t) {\n\t\t\taudioService.play(Sounds.stop, false, 1);\n\t\t\tresult.push(\n\t\t\t\tshowAlert(\n\t\t\t\t\t'info',\n\t\t\t\t\ttrans({\n\t\t\t\t\t\tlabel: `{{game}} ${\n\t\t\t\t\t\t\tnewState.gameAutobet.active[action.payload.game] === 'flash'\n\t\t\t\t\t\t\t\t? 'flash'\n\t\t\t\t\t\t\t\t: 'auto'\n\t\t\t\t\t\t}bet stopped`,\n\t\t\t\t\t\toptions: {\n\t\t\t\t\t\t\tgame: capitalize(action.payload.game.toLowerCase()),\n\t\t\t\t\t\t},\n\t\t\t\t\t}),\n\t\t\t\t),\n\t\t\t);\n\t\t}\n\t\tif (action.payload.value) {\n\t\t\tresult.push(resetAutoSession(action.payload.game));\n\t\t}\n\t\treturn result;\n\t},\n});\n\nconst betLoadingEpic = epic('betLoadingEpic', {\n\tactions: (ofType) => ofType(BET),\n\tcallback: ({ action, store$ }) => {\n\t\tconst result = [];\n\t\tif (\n\t\t\tstore$.value.gameAutobet.active[action.payload.game] &&\n\t\t\t!store$.value.gameAutobet.autoBetRolling[action.payload.game]\n\t\t) {\n\t\t\tresult.push(\n\t\t\t\tautoBetRolling({\n\t\t\t\t\tvalue: true,\n\t\t\t\t\tgame: action.payload.game,\n\t\t\t\t}),\n\t\t\t);\n\t\t}\n\t\treturn of(result);\n\t},\n});\n\nconst gameChangeEpic = epicOldState('gameChangeEpic', {\n\tactions: (ofType) => ofType(SET_GAME),\n\tcallback: ({ oldState, newState }) => {\n\t\tif (newState.game.activeGame === oldState.game.activeGame) {\n\t\t\treturn [];\n\t\t}\n\t\t// TODO: NEW GAME FLAG\n\t\tconst result = [];\n\t\tif (newState.game.activeGame === GameType.HILO) {\n\t\t\tresult.push(\n\t\t\t\tgameUpdatePayout({\n\t\t\t\t\tvalue: 1,\n\t\t\t\t\tgame: newState.game.activeGame,\n\t\t\t\t}),\n\t\t\t\tgameUpdateProfit({\n\t\t\t\t\tvalue: 0,\n\t\t\t\t\tgame: newState.game.activeGame,\n\t\t\t\t}),\n\t\t\t);\n\t\t}\n\t\treturn result;\n\t},\n});\n\nconst betResultEpic = epic('betResultEpic', {\n\tactions: (ofType) => ofType(BET_RESULT),\n\tcallback: ({\n\t\taction,\n\t\tstore$,\n\t}: {\n\t\taction: {\n\t\t\tpayload: {\n\t\t\t\tauto: boolean;\n\t\t\t\tdata: {\n\t\t\t\t\tbet: Bet;\n\t\t\t\t\tuserBalance: BalanceElement;\n\t\t\t\t};\n\t\t\t\tlastBet: Bet;\n\t\t\t};\n\t\t};\n\t\tstore$: {\n\t\t\tvalue: RootState;\n\t\t};\n\t}) => {\n\t\tconst data = action.payload.data;\n\n\t\tconst result = [];\n\t\tif (data.bet) {\n\t\t\tconst lastBet = action.payload.lastBet;\n\t\t\tconst isWin = data.bet.state === 'win';\n\t\t\tconst game = parseGameName(data.bet.game) || parseGameName(lastBet.game);\n\t\t\tconst bet: Bet = {\n\t\t\t\t...data.bet,\n\t\t\t\tgame: {\n\t\t\t\t\tname: game,\n\t\t\t\t},\n\t\t\t\tcurrency: data.bet.currency || lastBet.currency,\n\t\t\t\tamount: data.bet.amount || lastBet.amount,\n\t\t\t\trule: data.bet.rule || lastBet.rule,\n\t\t\t\tmultiplier: data.bet.multiplier || lastBet.multiplier,\n\t\t\t\tbet_value: data.bet.bet_value || lastBet.bet_value,\n\t\t\t\tuser: data.bet.user || {\n\t\t\t\t\tlogin: store$.value.user.name,\n\t\t\t\t\tuuid: store$.value.user.id,\n\t\t\t\t},\n\t\t\t};\n\t\t\tresult.push({\n\t\t\t\t...action,\n\t\t\t\ttype: GAME_BET_RESULT(game),\n\t\t\t});\n\t\t\tconsole.log('betResultEpic', { bet, data, state: store$.value });\n\t\t\tif (\n\t\t\t\tgame_config?.[game]?.resultAnimation &&\n\t\t\t\t!!bet &&\n\t\t\t\t!store$.value.options[OPTIONS.ANIMATION] &&\n\t\t\t\t!store$.value.gameAutobet.active[game]\n\t\t\t) {\n\t\t\t\tresult.push(gameTriggerAnimationBetResultThunk(bet));\n\t\t\t}\n\t\t\tif (!bet.profit) {\n\t\t\t\tbet.profit = scientificToDecimal(\n\t\t\t\t\tgetBetProfit(bet.state, bet.amount, bet.multiplier),\n\t\t\t\t);\n\t\t\t}\n\t\t\tif (isTrueOrZero(bet.result_value)) {\n\t\t\t\tresult.push(\n\t\t\t\t\tnewResult({\n\t\t\t\t\t\tdata: createBetResult(bet),\n\t\t\t\t\t\tgame,\n\t\t\t\t\t}),\n\t\t\t\t);\n\t\t\t}\n\t\t\tisWin\n\t\t\t\t? result.push(\n\t\t\t\t\t\tbetWon({\n\t\t\t\t\t\t\t...bet,\n\t\t\t\t\t\t\tauto: !!store$.value.gameAutobet.autoBetRolling[game],\n\t\t\t\t\t\t}),\n\t\t\t\t )\n\t\t\t\t: result.push(\n\t\t\t\t\t\tbetLost({\n\t\t\t\t\t\t\t...bet,\n\t\t\t\t\t\t\tauto: !!store$.value.gameAutobet.autoBetRolling[game],\n\t\t\t\t\t\t}),\n\t\t\t\t );\n\t\t\t// if (store$.value.transactions.update[TABLE_ID.myBets]) {\n\t\t\tresult.push(\n\t\t\t\tnewMyBetThunk(bet, {\n\t\t\t\t\tisAutobet: !!action.payload.auto,\n\t\t\t\t}),\n\t\t\t);\n\t\t\t// }\n\t\t}\n\t\tif (data.userBalance) {\n\t\t\tresult.push(updateBalance(data.userBalance, 'placeBet'));\n\t\t}\n\t\treturn of(result);\n\t},\n});\n\nconst compatibleGamesEpic = epic('compatibleGamesEpic', {\n\tactions: (ofType) => ofType(OPEN_MODAL),\n\tcallback: ({ action }) => {\n\t\tif (\n\t\t\taction.props &&\n\t\t\taction.props.strategy &&\n\t\t\taction.name === MODAL_ID.COMPATIBLE_GAMES\n\t\t) {\n\t\t\tconst games = getStrategyGames(action.props.strategy);\n\t\t\t// console.log('compatibleGamesEpic', { games, action });\n\t\t\tif (games.length === 1) {\n\t\t\t\treturn from(\n\t\t\t\t\troutingService.dynamicRedirect(\n\t\t\t\t\t\t`casino/${games[0]}?modal=autobet`,\n\t\t\t\t\t\ttrue,\n\t\t\t\t\t),\n\t\t\t\t).pipe(\n\t\t\t\t\tmap(() => {\n\t\t\t\t\t\taction.props.callback(games[0]);\n\t\t\t\t\t\treturn [];\n\t\t\t\t\t}),\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t\treturn of();\n\t},\n});\n\nconst compatibleGamesCloseModalEpic = epic('compatibleGamesCloseModalEpic', {\n\tactions: (ofType) => ofType(OPEN_MODAL),\n\tcallback: ({ action }) => {\n\t\tif (\n\t\t\taction.props &&\n\t\t\taction.props.strategy &&\n\t\t\taction.name === MODAL_ID.COMPATIBLE_GAMES\n\t\t) {\n\t\t\tconst games = getStrategyGames(action.props.strategy);\n\t\t\tif (games.length === 1) {\n\t\t\t\treturn of(resetModal(false, OPEN_MODAL));\n\t\t\t}\n\t\t}\n\t\treturn of();\n\t},\n});\n\nconst setGamePathEpic = epic('setGamePathEpic', {\n\tactions: (ofType) => ofType(LOCATION_CHANGE, REGISTRY_GAME_PACKAGE),\n\tcallback: ({ store$ }) => {\n\t\tconst game = getGameFromUrl();\n\t\tif (game !== store$.value.game?.activeGame) {\n\t\t\treturn of(setGame(game, { id: 'setGamePathEpic' }));\n\t\t}\n\t\treturn of();\n\t},\n});\n\nconst resolveAnimatingBetsOnVisibilityChangeEpic = epic(\n\t'resolveAnimatingBetsOnVisibilityChangeEpic',\n\t{\n\t\tactions: (ofType) => ofType(SET_VISIBLE),\n\t\tcallback: ({ action }) => {\n\t\t\tif (action.bool) {\n\t\t\t\treturn of();\n\t\t\t}\n\n\t\t\tconst actions: Array<any> = [\n\t\t\t\tAVAILABLE_OFFER.map((game) =>\n\t\t\t\t\tgameResolvePendingAnimatedBetsThunk(game),\n\t\t\t\t),\n\t\t\t];\n\t\t\treturn of(actions);\n\t\t},\n\t},\n);\n\nconst gameEpic = combineEpics(\n\tbetInitEpic,\n\tdisableAnimationEpic,\n\tsetGamePathEpic,\n\tbetResponseAnimationEpic,\n\tcompatibleGamesEpic,\n\tcompatibleGamesCloseModalEpic,\n\tbetEpic,\n\tgameChangeEpic,\n\tbetLoadingEpic,\n\tshowResultEpic,\n\thideResultEpic,\n\tchangeCurrencyEpic,\n\tautobetRollingEpic,\n\tbetResultEpic,\n\tresolveAnimatingBetsOnVisibilityChangeEpic,\n);\n\nexport default gameEpic;\n","import { emitCustomEvent } from '@common/hooks/useCustomEventListener';\nimport { roundNumber } from '@common/methods/roundNumber/roundNumber';\nimport { config } from '@legacyApp/client/config';\nimport { game_config } from '@legacyApp/client/game_config';\nimport { sentryError } from '@legacyApp/client/modules/app/sentryService';\nimport { OPTIONS } from '@legacyApp/client/store/options/options.constants';\nimport { AppThunk } from '@legacyApp/types/store/ThunkAction';\nimport { changeBalanceThunk } from '@modules/balance/store/thunks/changeBalance.thunk';\nimport { getStrategyFromState } from '@modules/games/Game/methods/getStrategyFromState';\nimport { betResponseAnimation } from '@modules/games/Game/store/game/game.actions';\nimport { createPlaceBetUrl } from '@modules/games/Game/store/game/methods/createPlaceBetUrl';\nimport { parseResponseBet } from '@modules/games/Game/store/game/methods/parseResponseBet';\nimport { BetConfig } from '@modules/games/Game/store/game/@types/BetConfig';\nimport { PlaceBetResponse } from '@modules/games/Game/store/game/@types/PlaceBetResponse';\nimport { handleBetResponseThunk } from '@modules/games/Game/store/game/thunks/handleBetResponse.thunk';\nimport { sendBetThunk } from '@modules/games/Game/store/game/thunks/sendBet.thunk';\nimport { autobetSummaryConnectionError } from '@modules/games/Game/store/gameAutobet/gameAutobet.actions';\nimport { EVENTS } from '@common/constants/events';\n\nexport const placeBetThunk = (payload: BetConfig, source: string): AppThunk => {\n\treturn async (dispatch, getState) => {\n\t\tconst game = payload.game;\n\n\t\tconst data: PlaceBetResponse = await dispatch(\n\t\t\tsendBetThunk(payload, source),\n\t\t).catch((error) => {\n\t\t\tconst { gameAutobet, game: gameState } = getState();\n\n\t\t\tif (payload.auto) {\n\t\t\t\tconst url = createPlaceBetUrl(payload);\n\n\t\t\t\tsentryError(\n\t\t\t\t\tnew Error(\n\t\t\t\t\t\t`${url} - Error on starting ${state.gameAutobet.active[game]}bet session`,\n\t\t\t\t\t),\n\t\t\t\t\t{\n\t\t\t\t\t\tgameAutobet,\n\t\t\t\t\t\tgameState,\n\t\t\t\t\t\tpayload,\n\t\t\t\t\t\tsource,\n\t\t\t\t\t\terror,\n\t\t\t\t\t\tsessions: gameAutobet.id,\n\t\t\t\t\t\tstrategy: getStrategyFromState(state, game, true),\n\t\t\t\t\t},\n\t\t\t\t\tstate,\n\t\t\t\t);\n\n\t\t\t\tdispatch(\n\t\t\t\t\tautobetSummaryConnectionError(payload, {\n\t\t\t\t\t\tmessage: `Connection error on starting ${state.gameAutobet.active[game]}bet session, try again in 10min`,\n\t\t\t\t\t}),\n\t\t\t\t);\n\n\t\t\t\treturn null;\n\t\t\t}\n\t\t\t// console.log('BET_ERROR', {\n\t\t\t// \tpayload,\n\t\t\t// \tsource,\n\t\t\t// \terror,\n\t\t\t// });\n\t\t});\n\n\t\tconst state = getState();\n\n\t\tif (data.error && game_config[game].resultAnimation) {\n\t\t\temitCustomEvent(EVENTS.GAME_BET_ERROR(game), data);\n\t\t}\n\n\t\tif (data?.bet && game) {\n\t\t\tdata.bet = parseResponseBet(game, data.bet);\n\t\t}\n\n\t\tif (\n\t\t\tstate.app.visible &&\n\t\t\tdata.bet &&\n\t\t\tgame_config[game].resultAnimation &&\n\t\t\t(state.gameAutobet.active[game] || state.options[OPTIONS.ANIMATION])\n\t\t) {\n\t\t\tdispatch(\n\t\t\t\tchangeBalanceThunk(\n\t\t\t\t\t{\n\t\t\t\t\t\tamount: roundNumber(\n\t\t\t\t\t\t\tNumber(data.bet.amount) * -1,\n\t\t\t\t\t\t\tconfig.decimals.bet,\n\t\t\t\t\t\t),\n\t\t\t\t\t\tcurrency: data.bet.currency,\n\t\t\t\t\t},\n\t\t\t\t\t'placeBetThunk',\n\t\t\t\t),\n\t\t\t);\n\n\t\t\treturn dispatch(betResponseAnimation({ payload, data }));\n\t\t}\n\n\t\tawait dispatch(\n\t\t\thandleBetResponseThunk({\n\t\t\t\tdata,\n\t\t\t\tpayload,\n\t\t\t\tsource,\n\t\t\t}),\n\t\t);\n\t};\n};\n","import { game_config } from '@legacyApp/client/game_config';\nimport { GameType } from '@modules/games/Game/constants/availableGames';\n\nexport const getGamesWithResultAnimated = (): GameType[] => {\n\treturn Object.keys(game_config).filter(\n\t\t(game: GameType) => game_config[game].resultAnimation,\n\t) as GameType[];\n};\n","import { BetConfig } from '../@types/BetConfig';\n\nexport const checkIsStrategyFromBetPayload = (payload: BetConfig) => {\n\treturn payload.auto || payload.flash;\n};\n","import { AppThunk } from '@legacyApp/types/store/ThunkAction';\nimport { parseEasyConfigForAPI } from '@legacyApp/client/modules/app/strategyV3Service';\nimport { getStrategyFromState } from '../../../methods/getStrategyFromState';\nimport { checkExpertConfig } from '../../../methods/checkExpertConfig';\nimport { PlaceBetBody } from '../@types/PlaceBetBody';\nimport { BetConfig } from '../@types/BetConfig';\nimport { checkIsStrategyFromBetPayload } from './checkIsStrategyFromBetPayload';\n\nexport const createPlaceBetBodyThunk = (\n\tpayload: BetConfig,\n): AppThunk<PlaceBetBody> => {\n\treturn (dispatch, getState) => {\n\t\tconst { game } = payload;\n\t\tconst state = getState();\n\t\tconst isStrategy = checkIsStrategyFromBetPayload(payload);\n\t\tconst body: PlaceBetBody = {\n\t\t\t...payload,\n\t\t};\n\t\tconst strategy = isStrategy\n\t\t\t? getStrategyFromState(state, game, true)\n\t\t\t: false;\n\t\tif (strategy) {\n\t\t\tif (strategy.config && strategy.config.length) {\n\t\t\t\tbody.config = !checkExpertConfig(strategy.config)\n\t\t\t\t\t? parseEasyConfigForAPI(strategy.config)\n\t\t\t\t\t: strategy.config;\n\t\t\t}\n\t\t\tif (strategy.rolls) {\n\t\t\t\tbody.rolls = strategy.rolls;\n\t\t\t}\n\t\t}\n\n\t\tif (payload.auto && body.auto !== undefined) {\n\t\t\tdelete body.auto;\n\t\t}\n\n\t\tif (!payload.auto) {\n\t\t\tbody.auto = 1;\n\t\t}\n\n\t\treturn body;\n\t};\n};\n","import { checkIsWinChanceDisabled } from '../../../methods/checkIsWinChanceDisabled';\nimport { GameType } from '../../../constants/availableGames';\nimport { BetConfig } from '../@types/BetConfig';\n\nexport const createPlaceBetUrl = (payload: BetConfig) => {\n\tconst { game, rule, auto, flash } = payload;\n\tconst gameLabel =\n\t\trule && checkIsWinChanceDisabled(rule, game) ? `range-${game}` : game;\n\treturn `/${\n\t\t!auto && !flash && gameLabel === GameType.DICE ? 'v1' : 'v2'\n\t}/${gameLabel}/${flash ? 'flash' : auto ? 'auto' : 'manual'}/${\n\t\tauto ? 'start' : 'play'\n\t}`;\n};\n","import { GameType } from '@modules/games/Game/constants/availableGames';\nimport { Bet } from '@modules/games/Game/store/game/@types/PlaceBetResponse';\nimport sortService, {\n\tDIRECTION,\n} from '@legacyApp/client/modules/app/sortService';\n\nexport const parseResponseBet = (game: GameType, bet: Bet): Bet => {\n\tif (game === GameType.KENO && Array.isArray(bet?.result_value)) {\n\t\treturn {\n\t\t\t...bet,\n\t\t\thits: bet.result_value\n\t\t\t\t.map(Number)\n\t\t\t\t.sort((a, b) => sortService.sort(DIRECTION.ASC, a, b)),\n\t\t\tresult_value: Number(bet.multiplier),\n\t\t};\n\t}\n\n\treturn bet;\n};\n","import { AppThunk } from '@legacyApp/types/store/ThunkAction';\nimport { GameType } from '../../../constants/availableGames';\nimport { gameUpdateBetInAnimation } from '../game.actions';\nimport { handleAnimatedBetThunk } from './handleAnimatedBet.thunk';\n\nexport const gameResolvePendingAnimatedBetsThunk = (\n\tgame: GameType,\n): AppThunk => {\n\treturn async (dispatch, getState) => {\n\t\tconst { game: gameState } = getState();\n\t\tconst betHashesInAnimation = gameState?.betsInAnimation?.[game]\n\t\t\t? Object.keys(gameState.betsInAnimation[game])\n\t\t\t: [];\n\t\tbetHashesInAnimation.forEach((betHash) => {\n\t\t\tdispatch(\n\t\t\t\tgameUpdateBetInAnimation({\n\t\t\t\t\tgame,\n\t\t\t\t\tvalue: {\n\t\t\t\t\t\tid: betHash,\n\t\t\t\t\t\tactive: false,\n\t\t\t\t\t},\n\t\t\t\t}),\n\t\t\t);\n\t\t});\n\t\tconst betHashes = gameState?.betsAnimated?.[game]\n\t\t\t? Object.keys(gameState.betsAnimated[game])\n\t\t\t: [];\n\t\tbetHashes.forEach((betHash) => {\n\t\t\tdispatch(handleAnimatedBetThunk(game, betHash));\n\t\t});\n\t};\n};\n","import { getChangedBalanceThunk } from '@modules/balance/store/thunks/getChangedBalance.thunk';\nimport { config } from '@legacyApp/client/config';\nimport { AppThunk } from '@legacyApp/types/store/ThunkAction';\nimport { BalanceElement } from '@legacyApp/types/balance/BalancesArray';\nimport { roundNumber } from '@common/methods/roundNumber/roundNumber';\nimport { GameType } from '../../../constants/availableGames';\nimport {\n\tBetResponseAnimationProps,\n\tbetUpdateAnimated,\n\tgameUpdateBetAnimatedLastBalance,\n} from '../game.actions';\nimport { handleAutobetPlayResponseThunk } from '../../gameAutobet/thunks/handleAutobetPlayResponse.thunk';\nimport { BetResponseProps } from '../@types/BetResponseProps';\nimport { AutobetResponseProps } from '../../gameAutobet/@types/AutobetResponseProps';\nimport { handleBetResponseThunk } from './handleBetResponse.thunk';\n\nexport const handleAnimatedBetThunk =\n\t(game: GameType, hash: string): AppThunk =>\n\t(dispatch, getState) => {\n\t\tconst state = getState();\n\t\tconst props: BetResponseAnimationProps =\n\t\t\tstate.game.betsAnimated[game][hash];\n\t\tif (!props) {\n\t\t\treturn;\n\t\t}\n\t\tconst currency = props.data.userBalance.currency;\n\t\tconst betsAnimatedQueueCount = Object.keys(\n\t\t\tstate.game.betsAnimated[game],\n\t\t).length;\n\t\tconst isLastBetAnimatedBalance =\n\t\t\tbetsAnimatedQueueCount === 1 &&\n\t\t\t!!state.game.betsAnimatedLastBalance[game][currency];\n\t\tconst userBalance: BalanceElement = isLastBetAnimatedBalance\n\t\t\t? state.game.betsAnimatedLastBalance[game][currency]\n\t\t\t: dispatch(\n\t\t\t\t\tgetChangedBalanceThunk({\n\t\t\t\t\t\tcurrency,\n\t\t\t\t\t\tamount: roundNumber(\n\t\t\t\t\t\t\tNumber(props.data.bet.amount) + Number(props.data.bet.profit),\n\t\t\t\t\t\t\tconfig.decimals.balance,\n\t\t\t\t\t\t),\n\t\t\t\t\t}),\n\t\t\t );\n\t\tconst payload: BetResponseProps | AutobetResponseProps = {\n\t\t\t...props,\n\t\t\tdata: {\n\t\t\t\t...props.data,\n\t\t\t\tuserBalance,\n\t\t\t},\n\t\t\tsource: 'handleAnimatedBetThunk',\n\t\t};\n\t\tif (props.data.nextBet || props.data.stopReason) {\n\t\t\tdispatch(handleAutobetPlayResponseThunk(payload));\n\t\t} else {\n\t\t\tdispatch(\n\t\t\t\t// @ts-expect-error invalid type\n\t\t\t\thandleBetResponseThunk(payload),\n\t\t\t);\n\t\t}\n\t\tif (isLastBetAnimatedBalance) {\n\t\t\tdispatch(\n\t\t\t\tgameUpdateBetAnimatedLastBalance({\n\t\t\t\t\tgame,\n\t\t\t\t\tvalue: {\n\t\t\t\t\t\tcurrency,\n\t\t\t\t\t\tamount: null,\n\t\t\t\t\t\tamount_usd: null,\n\t\t\t\t\t},\n\t\t\t\t}),\n\t\t\t);\n\t\t}\n\t\tdispatch(\n\t\t\tbetUpdateAnimated({\n\t\t\t\tgame,\n\t\t\t\tvalue: {\n\t\t\t\t\tid: hash,\n\t\t\t\t},\n\t\t\t}),\n\t\t);\n\t\t// console.log('handleAnimatedBetThunk', {\n\t\t// \tisLastBetAnimatedBalance,\n\t\t// \tgame,\n\t\t// \thash,\n\t\t// \tprops,\n\t\t// \tpayload,\n\t\t// \tlastBalance: state.game.betsAnimatedLastBalance[game][currency],\n\t\t// \tuserBalance,\n\t\t// \tcurrency,\n\t\t// \tbetsAnimatedQueueCount,\n\t\t// });\n\t};\n","import { actionSimple } from '../../../../../LegacyApp/client/modules/app/actionService';\nimport { FLASHBET_RESULT } from './flash.constants';\n\nexport const flashbetResult = actionSimple(FLASHBET_RESULT);\n","import { AppThunk } from '@legacyApp/types/store/ThunkAction';\nimport { flashbetResult } from '@modules/games/Game/store/flash/flash.actions';\nimport {\n\tautobetPlay,\n\tautobetSetId,\n\tautobetSetRollsCounter,\n\tautobetSummaryConnectionError,\n} from '../../gameAutobet/gameAutobet.actions';\nimport { betResult } from '../game.actions';\nimport { checkIsStrategyFromBetPayload } from '../methods/checkIsStrategyFromBetPayload';\nimport { createPlaceBetBodyThunk } from '../methods/createPlaceBetBody.thunk';\nimport { BetResponseProps } from '../@types/BetResponseProps';\nimport { handleAutobetErrorThunk } from '../../gameAutobet/thunks/handleAutobetError.thunk';\n\nexport const handleBetResponseThunk = (props: BetResponseProps): AppThunk => {\n\treturn (dispatch, getState) => {\n\t\tconst state = getState();\n\t\tconst { data, payload } = props;\n\t\tconst { game } = payload;\n\t\tconst isStrategy = checkIsStrategyFromBetPayload(payload);\n\t\tif (!data || data.status === 404 || data.status >= 500 || data.text) {\n\t\t\tif (state.gameAutobet.active[game]) {\n\t\t\t\treturn dispatch(handleAutobetErrorThunk(props));\n\t\t\t}\n\t\t\treturn dispatch(\n\t\t\t\tbetResult({\n\t\t\t\t\tdata,\n\t\t\t\t\tlastBet: payload,\n\t\t\t\t\tauto: isStrategy,\n\t\t\t\t}),\n\t\t\t);\n\t\t}\n\t\tif (payload.auto) {\n\t\t\tif (data.autoBet && data.autoBet.uuid) {\n\t\t\t\tconst body = dispatch(createPlaceBetBodyThunk(payload));\n\t\t\t\tdispatch(\n\t\t\t\t\tautobetSetRollsCounter({\n\t\t\t\t\t\tvalue: body.rolls || 0,\n\t\t\t\t\t\tgame,\n\t\t\t\t\t}),\n\t\t\t\t);\n\t\t\t\tdispatch(autobetSetId(game, data.autoBet.uuid));\n\t\t\t\tdispatch(\n\t\t\t\t\tautobetPlay({\n\t\t\t\t\t\tgame: game,\n\t\t\t\t\t\tcurrency: payload.currency,\n\t\t\t\t\t\trule: payload.rule,\n\t\t\t\t\t}),\n\t\t\t\t);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\treturn dispatch(autobetSummaryConnectionError(payload, data));\n\t\t}\n\t\tdispatch(\n\t\t\tbetResult({\n\t\t\t\tdata,\n\t\t\t\tlastBet: payload,\n\t\t\t\tauto: isStrategy,\n\t\t\t}),\n\t\t);\n\t\tif (payload.flash) {\n\t\t\tdispatch(\n\t\t\t\tflashbetResult({\n\t\t\t\t\tresult: data,\n\t\t\t\t\tdata: payload,\n\t\t\t\t}),\n\t\t\t);\n\t\t}\n\t};\n};\n","import { AppThunk } from '@legacyApp/types/store/ThunkAction';\nimport { sentryError } from '@legacyApp/client/modules/app/sentryService';\nimport { jsonToString } from '@common/methods/jsonToString';\nimport { createPlaceBetUrl } from '../../game/methods/createPlaceBetUrl';\nimport { getStrategyFromState } from '../../../methods/getStrategyFromState';\nimport {\n\tautoBetRolling,\n\tautobetSummaryConnectionError,\n} from '../gameAutobet.actions';\nimport { BetResponseProps } from '../../game/@types/BetResponseProps';\n\nexport const handleAutobetErrorThunk = (props: BetResponseProps): AppThunk => {\n\treturn async (dispatch, getState) => {\n\t\tconst state = getState();\n\t\tconst { data, payload, source } = props;\n\t\tconst { game } = payload;\n\t\tif (\n\t\t\tdata.status &&\n\t\t\tdata.status < 500 &&\n\t\t\t[\n\t\t\t\t403, // Game in progress\n\t\t\t\t429, // Rate exceeded\n\t\t\t].indexOf(data.status) === -1\n\t\t) {\n\t\t\tconst url = createPlaceBetUrl(payload);\n\t\t\tsentryError(\n\t\t\t\tnew Error(\n\t\t\t\t\t`${data.status} | ${url} - Cannot start ${state.gameAutobet.active[game]}bet session`,\n\t\t\t\t),\n\t\t\t\t{\n\t\t\t\t\tgameAutobet: state.gameAutobet,\n\t\t\t\t\tgame: state.game,\n\t\t\t\t\tdata,\n\t\t\t\t\tpayload: jsonToString(payload),\n\t\t\t\t\tsource,\n\t\t\t\t\tsessions: state.gameAutobet.id,\n\t\t\t\t\tstrategy: getStrategyFromState(state, game, true),\n\t\t\t\t},\n\t\t\t\tstate,\n\t\t\t);\n\t\t}\n\t\tdispatch(\n\t\t\tautoBetRolling({\n\t\t\t\tgame,\n\t\t\t\tvalue: false,\n\t\t\t}),\n\t\t);\n\t\tdispatch(\n\t\t\tautobetSummaryConnectionError(payload, {\n\t\t\t\tmessage: `Cannot start ${state.gameAutobet.active[game]}bet session, try again in 10min`,\n\t\t\t}),\n\t\t);\n\t};\n};\n","import { AppThunk } from '@legacyApp/types/store/ThunkAction';\nimport { betResult } from '../../game/game.actions';\nimport { autobet } from '../gameAutobet.actions';\nimport { AutobetResponseProps } from '../@types/AutobetResponseProps';\n\nexport const handleAutobetPlayResponseThunk = (\n\tprops: AutobetResponseProps,\n): AppThunk => {\n\treturn (dispatch) => {\n\t\tconst { data, payload, lastBetTimestamp } = props;\n\t\tdispatch(\n\t\t\tbetResult({\n\t\t\t\tdata: {\n\t\t\t\t\tbet: data.bet,\n\t\t\t\t\tuserBalance: data.userBalance,\n\t\t\t\t},\n\t\t\t\tlastBet: data.bet,\n\t\t\t\tauto: true,\n\t\t\t}),\n\t\t);\n\t\tdispatch(\n\t\t\tautobet({\n\t\t\t\t...payload,\n\t\t\t\tbet: data.bet,\n\t\t\t\tuserBalance: data.userBalance,\n\t\t\t\tnextBet: data.nextBet\n\t\t\t\t\t? {\n\t\t\t\t\t\t\t...data.nextBet,\n\t\t\t\t\t\t\tcounter: data.nextBet.rolls,\n\t\t\t\t\t }\n\t\t\t\t\t: {},\n\t\t\t\tstopped: data.stopReason, // stopped with reason\n\t\t\t\tlastBetTimestamp,\n\t\t\t}),\n\t\t);\n\t};\n};\n","import { openModal } from '@modules/modals/store/modal.actions';\nimport { MODAL_ID } from '@common/constants/modal/ids.modal.constants';\nimport { AppThunk } from '@legacyApp/types/store/ThunkAction';\nimport { CurrencyType } from '@legacyApp/types/wallet/CurrencyType';\nimport { UserType } from '@legacyApp/types/user/UserType';\nimport { GameType } from '../../../constants/availableGames';\nimport { GameStrategy } from '../../../types/GameStrategy';\n\nexport const openAutobetSummaryThunk = ({\n\tgame,\n\ttype,\n\tdata,\n\tid,\n}: {\n\tgame: GameType;\n\ttype: string;\n\tid?: string;\n\tdata: {\n\t\tstop_reason: any;\n\t\tstrategy: GameStrategy;\n\t\tcurrency?: CurrencyType;\n\t\tgame?: {\n\t\t\tname: GameType;\n\t\t};\n\t\tlost?: number;\n\t\tprofit?: number;\n\t\tprofit_chart?: Array<number>;\n\t\tpublished_at?: number;\n\t\tuser?: UserType;\n\t\twagered?: number;\n\t\twon?: number;\n\t};\n}): AppThunk => {\n\treturn (dispatch, getState) => {\n\t\tconst { balances } = getState().balance;\n\t\tconst startAgain =\n\t\t\tNumber(balances[data.currency]) >= Number(data.strategy.betAmount);\n\t\tdispatch(\n\t\t\topenModal(MODAL_ID.SESSION, 'openAutobetSummaryThunk', {\n\t\t\t\tdata,\n\t\t\t\ttype,\n\t\t\t\tstartAgain,\n\t\t\t\tgame,\n\t\t\t\tid,\n\t\t\t}),\n\t\t);\n\t};\n};\n"],"names":["OFFER_ELEMENT_STYLES","GameType","default","css","hover","StyledImageElementWrapper","styled","OfferBackgroundStyled","Image","StyledOfferButton","LinkTo","boxNoHeight","props","calcStyle","a","b","theme","layout","transition","mode","suffix","StyledMainPageOfferButton","text","fonts","Regular","$offerName","media","maxWidthTablet","name","DiceGameButton","callback","Wrapper","href","routingService","getUrl","onClick","BackgroundImage","LeftDiceImage","RightDiceImage","NameImage","attrs","src","alt","HiloGameButton","CenterCardImage","LeftCardImage","RightCardImage","LimboGameButton","NumbersImage","KenoGameButton","BoardImage","GreenDiamondImage","PurpleDiamondImage","YellowDiamondImage","PlinkoGameButton","ElImage","AVAILABLE_OFFER","isFeatureAvailable","FEATURES_TYPE","ASSETS","uri","SPORTSBOOK_PAGE_ID","offerName","MainPageOfferButton","className","EVENTS","GAME_LOADED","GAME_RESULT","game","GAME_BET_ERROR","PLINKO_PIN_COLLISION","KENO_INIT_SUMMARY","KENO_INIT_TILE_ANIMATION","tileNumber","KENO_SHOW_BET_RESULT","SubjectController","SubjectControllerClass","id","this","subjects","Subject","subscribe","message","next","emitCustomEvent","eventName","details","emit","useCustomEventListener","handler","handlerRef","useRef","handler_","useCallback","useEffect","current","unsubscribe","getChangedBalanceThunk","data","dispatch","getState","state","currency","amount","balanceElement","getBalance","balance","balancesArray","newBalance","roundNumber","Number","config","amount_usd","stats","price","GAME","ID","roundBetValue","value","checkExpertConfig","length","isEasyTemplate","every","el","command","when","filter","indexOf","type","BetState","parseFloat","checkEasyConfig","checkIsDoubleValue","rule","RollRule","checkIsQuadrupleValue","checkIsSingleValue","checkIsWinChanceDisabled","createPlacedBet","bet","hash","position","isFunction","path","join","result_value","jsonToString","parsePlacedBet","result","split","pos","betString","map","stringToJson","MAX_WIN_CHANCE","getMaxWinChance","MIN_WIN_CHANCE","getMinWinChance","MAX_BET_RESULT","MIN_BET_RESULT","MIN_BET_VALUE_UNIT","mathService","GUARANTEED_LOST_VALUES_WIN_CHANCE","MAX_RANGE_VALUE","getPrevAndNextBetValue","isTrueOrZero","index","prevBetValue","betValues","nextBetValue","getBetValueMaxMin","min","max","getSingleBetValueMaxMin","getBetweenBetValueMaxMin","getOutsideBetValueMaxMin","minResult","maxResult","MIN_WIN_CHANCE_","getTwoRangeBetValueMaxMin","parseValue","scientificToDecimal","toString","getRuleBetValuesBetConfig","betValue","bet_value","singleUnder","getWinChangeFromSingleBetValue","bet_value_first","bet_value_second","quadruple","bet_value_third","bet_value_fourth","getStrategyFromState","isDefault","activeGame","getGameFromUrl","dice","rollDirection","getDiceConfig","selected","keno","selectedNumbers","getKenoConfig","gameAutobet","user","activeCurrency","configEasy","payoutValue","limbo","defaultPayout","getPayout","defaultWinChanceValue","rolls","risk","lines","rows","betAmount","defaultBetAmount","parseSingleBetValue","getWinChanceDecimal","getWinChanceFromMultipleBetValues","diceActions","betValueSlice","resultSlice","ruleDefaultSlice","ruleSlice","isResultVisibleSlice","diceInitialState","reducerInitialStateMethods","defaultBetValue","NAME","initialState","double","createSlice","reducers","singleValueUpdate","action","payload","doubleValueUpdate","quadrupleValueUpdate","betValueUpdate","betValueIndexUpdate","resultShow","resultHide","resultValue","resultUpdate","NAME_DEFAULT","initialDefaultState","setAction","ruleUpdate","defaultRuleUpdate","FLASHBET_RESULT","createBetResult","mapGameBetResult","published_at","nonce","gameTriggerAnimationBetResultThunk","game_config","resultAnimation","gamePlacedBet","parseGameName","gameName","changeBalanceThunk","source","updateBalance","sendBetThunk","auto","flash","isStrategy","checkIsStrategyFromBetPayload","validBetData","sentryError","Error","openAutobetSummaryThunk","stop_reason","trans","label","strategy","url","apiUrl","apiConfig","createPlaceBetUrl","parameters","Authorization","body","createPlaceBetBodyThunk","method","loaderId","LOADING_IDS","lockByModal","disableErrorHandler","fetchApi","betEpic","epic","actions","ofType","BET","of","error","gameState","active","sessions","autobetSummaryConnectionError","parseResponseBet","app","visible","options","OPTIONS","betResponseAnimation","handleBetResponseThunk","betResponseAnimationEpic","BET_RESPONSE_ANIMATION","gameUpdateBetAnimatedLastBalance","userBalance","betUpdateAnimated","betInitEpic","BET_UPDATE_ANIMATED","disableAnimationEpic","OPTIONS_DISABLE","store$","Object","keys","gameResolvePendingAnimatedBetsThunk","showResultEpic","hideResultEpic","pipe","delay","changeCurrencyEpic","UPDATE_BALANCE","SET_CURRENCY","balances","initialized","getRealBalanceNative","gamesList","forEach","isGameSessionActive","push","gameUpdateAmount","getMinBetAmount","autobetRollingEpic","epicOldState","AUTOBET_ROLLING","newState","oldState","isVisible","isGame","isMobileChat","mobile","chat","isSummaryDisabled","isTurnedOff","autoBetRolling","audioService","Sounds","showAlert","capitalize","toLowerCase","resetAutoSession","betLoadingEpic","gameChangeEpic","SET_GAME","gameUpdatePayout","gameUpdateProfit","betResultEpic","BET_RESULT","lastBet","isWin","multiplier","login","uuid","GAME_BET_RESULT","profit","getBetProfit","newResult","betWon","betLost","newMyBetThunk","isAutobet","compatibleGamesEpic","OPEN_MODAL","MODAL_ID","games","getStrategyGames","from","compatibleGamesCloseModalEpic","resetModal","setGamePathEpic","LOCATION_CHANGE","REGISTRY_GAME_PACKAGE","setGame","resolveAnimatingBetsOnVisibilityChangeEpic","SET_VISIBLE","bool","combineEpics","parseEasyConfigForAPI","undefined","gameLabel","Array","isArray","hits","sort","sortService","DIRECTION","betsInAnimation","betHash","gameUpdateBetInAnimation","betsAnimated","handleAnimatedBetThunk","isLastBetAnimatedBalance","betsAnimatedLastBalance","nextBet","stopReason","handleAutobetPlayResponseThunk","flashbetResult","actionSimple","status","handleAutobetErrorThunk","betResult","autoBet","autobetSetRollsCounter","autobetSetId","autobetPlay","lastBetTimestamp","autobet","counter","stopped","startAgain","openModal"],"mappings":"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","debug_id":"d2132cbd-0900-5b94-a928-81674333e6fc"}