overtime-utils 0.0.1 → 0.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/index.ts CHANGED
@@ -1,3 +1,6 @@
1
+ // types
2
+ export * from './src/types/sgp';
3
+
1
4
  // constants
2
5
  export * from './src/constants/marketTypes';
3
6
 
package/main.js CHANGED
@@ -1 +1 @@
1
- !function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.overtimeUtils=t():e.overtimeUtils=t()}(self,(()=>(()=>{"use strict";var e,t={d:(e,o)=>{for(var r in o)t.o(o,r)&&!t.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:o[r]})},o:(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r:e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})}},o={};t.r(o),t.d(o,{MarketType:()=>e,WINNER_MARKET_TYPES:()=>r,isWinnerMarket:()=>n}),function(e){e[e.EMPTY=-1]="EMPTY",e[e.WINNER=0]="WINNER"}(e||(e={}));const r=[e.WINNER],n=e=>r.includes(e);return o})()));
1
+ !function(_,E){"object"==typeof exports&&"object"==typeof module?module.exports=E():"function"==typeof define&&define.amd?define([],E):"object"==typeof exports?exports.overtimeUtils=E():_.overtimeUtils=E()}(self,(()=>(()=>{"use strict";var _,E={d:(_,R)=>{for(var O in R)E.o(R,O)&&!E.o(_,O)&&Object.defineProperty(_,O,{enumerable:!0,get:R[O]})},o:(_,E)=>Object.prototype.hasOwnProperty.call(_,E),r:_=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(_,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(_,"__esModule",{value:!0})}},R={};E.r(R),E.d(R,{AWAY_TEAM_TOTAL_MARKET_TYPES:()=>S,BOTH_TEAMS_TO_SCORE_MARKET_TYPES:()=>Y,COMBINED_POSITIONS_MARKET_TYPES:()=>L,CORRECT_SCORE_MARKET_TYPES:()=>e,HOME_TEAM_TOTAL_MARKET_TYPES:()=>P,MarketType:()=>_,ONE_SIDE_PLAYER_PROPS_MARKET_TYPES:()=>H,OTHER_YES_NO_MARKET_TYPES:()=>M,PLAYER_PROPS_MARKET_TYPES:()=>N,SGP_NOT_SUPPORTED_MARKET_TYPES:()=>o,SPREAD_MARKET_TYPES:()=>D,TOTAL_EXACT_MARKET_TYPES:()=>I,TOTAL_MARKET_TYPES:()=>T,TOTAL_ODD_EVEN_MARKET_TYPES:()=>A,UFC_ENDING_METHOD_MARKET_TYPES:()=>U,UFC_METHOD_OF_VICTORY_MARKET_TYPES:()=>t,UFC_SPECIFIC_MARKET_TYPES:()=>F,UFC_WINNING_ROUND_MARKET_TYPES:()=>W,WINNER_MARKET_TYPES:()=>O,YES_NO_PLAYER_PROPS_MARKET_TYPES:()=>C,getSgpMarketsCombinationAllowed:()=>v,isAwayTeamTotalMarket:()=>s,isBothTeamsToScoreMarket:()=>a,isCombinedPositionsMarket:()=>c,isCorrectScoreMarket:()=>u,isEndingUfcMarket:()=>X,isHomeTeamTotalMarket:()=>i,isMarketNotSupportedForSgp:()=>m,isOneSidePlayerPropsMarket:()=>d,isOtherYesNoMarket:()=>K,isPlayerPropsMarket:()=>l,isSpreadMarket:()=>n,isTotalExactMarket:()=>V,isTotalMarket:()=>r,isTotalOddEvenMarket:()=>B,isTotalOrSpreadWithWholeLine:()=>g,isUfcSpecificMarket:()=>y,isUfcVictoryMarket:()=>k,isUfcWinningMarket:()=>f,isWinnerMarket:()=>G,isYesNoPlayerPropsMarket:()=>p}),function(_){_[_.EMPTY=-1]="EMPTY",_[_.WINNER=0]="WINNER",_[_.DRAW_NO_BET=10010]="DRAW_NO_BET",_[_.WINNER2=10011]="WINNER2",_[_.WINNER3=10012]="WINNER3",_[_.FIRST_SCORE=10019]="FIRST_SCORE",_[_.LAST_SCORE=10020]="LAST_SCORE",_[_.CLEAN_SHEET_HOME_TEAM=10141]="CLEAN_SHEET_HOME_TEAM",_[_.CLEAN_SHEET_AWAY_TEAM=10142]="CLEAN_SHEET_AWAY_TEAM",_[_.FIRST_PERIOD_WINNER=10021]="FIRST_PERIOD_WINNER",_[_.SECOND_PERIOD_WINNER=10022]="SECOND_PERIOD_WINNER",_[_.THIRD_PERIOD_WINNER=10023]="THIRD_PERIOD_WINNER",_[_.FOURTH_PERIOD_WINNER=10024]="FOURTH_PERIOD_WINNER",_[_.FIFTH_PERIOD_WINNER=10025]="FIFTH_PERIOD_WINNER",_[_.SIXTH_PERIOD_WINNER=10026]="SIXTH_PERIOD_WINNER",_[_.SEVENTH_PERIOD_WINNER=10027]="SEVENTH_PERIOD_WINNER",_[_.EIGHTH_PERIOD_WINNER=10028]="EIGHTH_PERIOD_WINNER",_[_.NINTH_PERIOD_WINNER=10029]="NINTH_PERIOD_WINNER",_[_.FIRST_PERIOD_WINNER2=10051]="FIRST_PERIOD_WINNER2",_[_.SECOND_PERIOD_WINNER2=10052]="SECOND_PERIOD_WINNER2",_[_.THIRD_PERIOD_WINNER2=10053]="THIRD_PERIOD_WINNER2",_[_.FOURTH_PERIOD_WINNER2=10054]="FOURTH_PERIOD_WINNER2",_[_.FIFTH_PERIOD_WINNER2=10055]="FIFTH_PERIOD_WINNER2",_[_.SIXTH_PERIOD_WINNER2=10056]="SIXTH_PERIOD_WINNER2",_[_.SEVENTH_PERIOD_WINNER2=10057]="SEVENTH_PERIOD_WINNER2",_[_.EIGHTH_PERIOD_WINNER2=10058]="EIGHTH_PERIOD_WINNER2",_[_.NINTH_PERIOD_WINNER2=10059]="NINTH_PERIOD_WINNER2",_[_.FIRST_PERIOD_DRAW_NO_BET=10121]="FIRST_PERIOD_DRAW_NO_BET",_[_.SECOND_PERIOD_DRAW_NO_BET=10122]="SECOND_PERIOD_DRAW_NO_BET",_[_.THIRD_PERIOD_DRAW_NO_BET=10123]="THIRD_PERIOD_DRAW_NO_BET",_[_.FOURTH_PERIOD_DRAW_NO_BET=10124]="FOURTH_PERIOD_DRAW_NO_BET",_[_.SPREAD=10001]="SPREAD",_[_.SPREAD2=10013]="SPREAD2",_[_.FIRST_PERIOD_SPREAD=10041]="FIRST_PERIOD_SPREAD",_[_.SECOND_PERIOD_SPREAD=10042]="SECOND_PERIOD_SPREAD",_[_.THIRD_PERIOD_SPREAD=10043]="THIRD_PERIOD_SPREAD",_[_.FOURTH_PERIOD_SPREAD=10044]="FOURTH_PERIOD_SPREAD",_[_.FIFTH_PERIOD_SPREAD=10045]="FIFTH_PERIOD_SPREAD",_[_.SIXTH_PERIOD_SPREAD=10046]="SIXTH_PERIOD_SPREAD",_[_.SEVENTH_PERIOD_SPREAD=10047]="SEVENTH_PERIOD_SPREAD",_[_.EIGHTH_PERIOD_SPREAD=10048]="EIGHTH_PERIOD_SPREAD",_[_.NINTH_PERIOD_SPREAD=10049]="NINTH_PERIOD_SPREAD",_[_.FIRST_PERIOD_SPREAD2=10071]="FIRST_PERIOD_SPREAD2",_[_.SECOND_PERIOD_SPREAD2=10072]="SECOND_PERIOD_SPREAD2",_[_.THIRD_PERIOD_SPREAD2=10073]="THIRD_PERIOD_SPREAD2",_[_.FOURTH_PERIOD_SPREAD2=10074]="FOURTH_PERIOD_SPREAD2",_[_.FIFTH_PERIOD_SPREAD2=10075]="FIFTH_PERIOD_SPREAD2",_[_.SIXTH_PERIOD_SPREAD2=10076]="SIXTH_PERIOD_SPREAD2",_[_.SEVENTH_PERIOD_SPREAD2=10077]="SEVENTH_PERIOD_SPREAD2",_[_.EIGHTH_PERIOD_SPREAD2=10078]="EIGHTH_PERIOD_SPREAD2",_[_.NINTH_PERIOD_SPREAD2=10079]="NINTH_PERIOD_SPREAD2",_[_.TOTAL=10002]="TOTAL",_[_.TOTAL2=10014]="TOTAL2",_[_.FIRST_PERIOD_TOTAL=10031]="FIRST_PERIOD_TOTAL",_[_.SECOND_PERIOD_TOTAL=10032]="SECOND_PERIOD_TOTAL",_[_.THIRD_PERIOD_TOTAL=10033]="THIRD_PERIOD_TOTAL",_[_.FOURTH_PERIOD_TOTAL=10034]="FOURTH_PERIOD_TOTAL",_[_.FIFTH_PERIOD_TOTAL=10035]="FIFTH_PERIOD_TOTAL",_[_.SIXTH_PERIOD_TOTAL=10036]="SIXTH_PERIOD_TOTAL",_[_.SEVENTH_PERIOD_TOTAL=10037]="SEVENTH_PERIOD_TOTAL",_[_.EIGHTH_PERIOD_TOTAL=10038]="EIGHTH_PERIOD_TOTAL",_[_.NINTH_PERIOD_TOTAL=10039]="NINTH_PERIOD_TOTAL",_[_.FIRST_PERIOD_TOTAL2=10061]="FIRST_PERIOD_TOTAL2",_[_.SECOND_PERIOD_TOTAL2=10062]="SECOND_PERIOD_TOTAL2",_[_.THIRD_PERIOD_TOTAL2=10063]="THIRD_PERIOD_TOTAL2",_[_.FOURTH_PERIOD_TOTAL2=10064]="FOURTH_PERIOD_TOTAL2",_[_.FIFTH_PERIOD_TOTAL2=10065]="FIFTH_PERIOD_TOTAL2",_[_.SIXTH_PERIOD_TOTAL2=10066]="SIXTH_PERIOD_TOTAL2",_[_.SEVENTH_PERIOD_TOTAL2=10067]="SEVENTH_PERIOD_TOTAL2",_[_.EIGHTH_PERIOD_TOTAL2=10068]="EIGHTH_PERIOD_TOTAL2",_[_.NINTH_PERIOD_TOTAL2=10069]="NINTH_PERIOD_TOTAL2",_[_.TOTAL_HOME_TEAM=10017]="TOTAL_HOME_TEAM",_[_.TOTAL_AWAY_TEAM=10018]="TOTAL_AWAY_TEAM",_[_.FIRST_PERIOD_TOTAL_HOME_TEAM=10111]="FIRST_PERIOD_TOTAL_HOME_TEAM",_[_.FIRST_PERIOD_TOTAL_AWAY_TEAM=10112]="FIRST_PERIOD_TOTAL_AWAY_TEAM",_[_.SECOND_PERIOD_TOTAL_HOME_TEAM=10211]="SECOND_PERIOD_TOTAL_HOME_TEAM",_[_.SECOND_PERIOD_TOTAL_AWAY_TEAM=10212]="SECOND_PERIOD_TOTAL_AWAY_TEAM",_[_.FIRST_PERIOD_TOTAL2_HOME_TEAM=10118]="FIRST_PERIOD_TOTAL2_HOME_TEAM",_[_.FIRST_PERIOD_TOTAL2_AWAY_TEAM=10119]="FIRST_PERIOD_TOTAL2_AWAY_TEAM",_[_.SECOND_PERIOD_TOTAL2_HOME_TEAM=10218]="SECOND_PERIOD_TOTAL2_HOME_TEAM",_[_.SECOND_PERIOD_TOTAL2_AWAY_TEAM=10219]="SECOND_PERIOD_TOTAL2_AWAY_TEAM",_[_.TOTAL_ODD_EVEN=10005]="TOTAL_ODD_EVEN",_[_.FIRST_PERIOD_TOTAL_ODD_EVEN=10081]="FIRST_PERIOD_TOTAL_ODD_EVEN",_[_.SECOND_PERIOD_TOTAL_ODD_EVEN=10082]="SECOND_PERIOD_TOTAL_ODD_EVEN",_[_.THIRD_PERIOD_TOTAL_ODD_EVEN=10083]="THIRD_PERIOD_TOTAL_ODD_EVEN",_[_.FOURTH_PERIOD_TOTAL_ODD_EVEN=10084]="FOURTH_PERIOD_TOTAL_ODD_EVEN",_[_.FIFTH_PERIOD_TOTAL_ODD_EVEN=10085]="FIFTH_PERIOD_TOTAL_ODD_EVEN",_[_.SIXTH_PERIOD_TOTAL_ODD_EVEN=10086]="SIXTH_PERIOD_TOTAL_ODD_EVEN",_[_.SEVENTH_PERIOD_TOTAL_ODD_EVEN=10087]="SEVENTH_PERIOD_TOTAL_ODD_EVEN",_[_.EIGHTH_PERIOD_TOTAL_ODD_EVEN=10088]="EIGHTH_PERIOD_TOTAL_ODD_EVEN",_[_.NINTH_PERIOD_TOTAL_ODD_EVEN=10089]="NINTH_PERIOD_TOTAL_ODD_EVEN",_[_.FIRST_PERIOD_TOTAL2_ODD_EVEN=10091]="FIRST_PERIOD_TOTAL2_ODD_EVEN",_[_.SECOND_PERIOD_TOTAL2_ODD_EVEN=10092]="SECOND_PERIOD_TOTAL2_ODD_EVEN",_[_.THIRD_PERIOD_TOTAL2_ODD_EVEN=10093]="THIRD_PERIOD_TOTAL2_ODD_EVEN",_[_.FOURTH_PERIOD_TOTAL2_ODD_EVEN=10094]="FOURTH_PERIOD_TOTAL2_ODD_EVEN",_[_.FIFTH_PERIOD_TOTAL2_ODD_EVEN=10095]="FIFTH_PERIOD_TOTAL2_ODD_EVEN",_[_.SIXTH_PERIOD_TOTAL2_ODD_EVEN=10096]="SIXTH_PERIOD_TOTAL2_ODD_EVEN",_[_.SEVENTH_PERIOD_TOTAL2_ODD_EVEN=10097]="SEVENTH_PERIOD_TOTAL2_ODD_EVEN",_[_.EIGHTH_PERIOD_TOTAL2_ODD_EVEN=10098]="EIGHTH_PERIOD_TOTAL2_ODD_EVEN",_[_.NINTH_PERIOD_TOTAL2_ODD_EVEN=10099]="NINTH_PERIOD_TOTAL2_ODD_EVEN",_[_.DOUBLE_CHANCE=10003]="DOUBLE_CHANCE",_[_.FIRST_PERIOD_DOUBLE_CHANCE=10015]="FIRST_PERIOD_DOUBLE_CHANCE",_[_.SECOND_PERIOD_DOUBLE_CHANCE=10016]="SECOND_PERIOD_DOUBLE_CHANCE",_[_.BOTH_TEAMS_TO_SCORE=10009]="BOTH_TEAMS_TO_SCORE",_[_.FIRST_PERIOD_BOTH_TEAMS_TO_SCORE=10101]="FIRST_PERIOD_BOTH_TEAMS_TO_SCORE",_[_.SECOND_PERIOD_BOTH_TEAMS_TO_SCORE=10102]="SECOND_PERIOD_BOTH_TEAMS_TO_SCORE",_[_.THIRD_PERIOD_BOTH_TEAMS_TO_SCORE=10103]="THIRD_PERIOD_BOTH_TEAMS_TO_SCORE",_[_.FOURTH_PERIOD_BOTH_TEAMS_TO_SCORE=10104]="FOURTH_PERIOD_BOTH_TEAMS_TO_SCORE",_[_.FIFTH_PERIOD_BOTH_TEAMS_TO_SCORE=10105]="FIFTH_PERIOD_BOTH_TEAMS_TO_SCORE",_[_.SIXTH_PERIOD_BOTH_TEAMS_TO_SCORE=10106]="SIXTH_PERIOD_BOTH_TEAMS_TO_SCORE",_[_.SEVENTH_PERIOD_BOTH_TEAMS_TO_SCORE=10107]="SEVENTH_PERIOD_BOTH_TEAMS_TO_SCORE",_[_.EIGHTH_PERIOD_BOTH_TEAMS_TO_SCORE=10108]="EIGHTH_PERIOD_BOTH_TEAMS_TO_SCORE",_[_.NINTH_PERIOD_BOTH_TEAMS_TO_SCORE=10109]="NINTH_PERIOD_BOTH_TEAMS_TO_SCORE",_[_.WINNER_TOTAL=10004]="WINNER_TOTAL",_[_.HALFTIME_FULLTIME=10006]="HALFTIME_FULLTIME",_[_.GOALS=10007]="GOALS",_[_.HALFTIME_FULLTIME_GOALS=10008]="HALFTIME_FULLTIME_GOALS",_[_.WHO_WILL_QUALIFY=10130]="WHO_WILL_QUALIFY",_[_.WILL_THERE_BE_OVERTIME=10131]="WILL_THERE_BE_OVERTIME",_[_.FIRST_INNING_NO_RUNS=10132]="FIRST_INNING_NO_RUNS",_[_.PLAYER_PROPS_HOMERUNS=11010]="PLAYER_PROPS_HOMERUNS",_[_.PLAYER_PROPS_BASES=11011]="PLAYER_PROPS_BASES",_[_.PLAYER_PROPS_STRIKEOUTS=11019]="PLAYER_PROPS_STRIKEOUTS",_[_.PLAYER_PROPS_PASSING_YARDS=11051]="PLAYER_PROPS_PASSING_YARDS",_[_.PLAYER_PROPS_PASSING_TOUCHDOWNS=11052]="PLAYER_PROPS_PASSING_TOUCHDOWNS",_[_.PLAYER_PROPS_RUSHING_YARDS=11053]="PLAYER_PROPS_RUSHING_YARDS",_[_.PLAYER_PROPS_RECEIVING_YARDS=11057]="PLAYER_PROPS_RECEIVING_YARDS",_[_.PLAYER_PROPS_TOUCHDOWNS_SCORER=11055]="PLAYER_PROPS_TOUCHDOWNS_SCORER",_[_.PLAYER_PROPS_FIELD_GOALS_MADE=11060]="PLAYER_PROPS_FIELD_GOALS_MADE",_[_.PLAYER_PROPS_PITCHER_HITS_ALLOWED=11047]="PLAYER_PROPS_PITCHER_HITS_ALLOWED",_[_.PLAYER_PROPS_POINTS=11029]="PLAYER_PROPS_POINTS",_[_.PLAYER_PROPS_SHOTS=11097]="PLAYER_PROPS_SHOTS",_[_.PLAYER_PROPS_GOALS=11086]="PLAYER_PROPS_GOALS",_[_.PLAYER_PROPS_HITS_RECORDED=11012]="PLAYER_PROPS_HITS_RECORDED",_[_.PLAYER_PROPS_REBOUNDS=11035]="PLAYER_PROPS_REBOUNDS",_[_.PLAYER_PROPS_ASSISTS=11039]="PLAYER_PROPS_ASSISTS",_[_.PLAYER_PROPS_DOUBLE_DOUBLE=11087]="PLAYER_PROPS_DOUBLE_DOUBLE",_[_.PLAYER_PROPS_TRIPLE_DOUBLE=11088]="PLAYER_PROPS_TRIPLE_DOUBLE",_[_.PLAYER_PROPS_RECEPTIONS=11058]="PLAYER_PROPS_RECEPTIONS",_[_.PLAYER_PROPS_FIRST_TOUCHDOWN=11049]="PLAYER_PROPS_FIRST_TOUCHDOWN",_[_.PLAYER_PROPS_LAST_TOUCHDOWN=11056]="PLAYER_PROPS_LAST_TOUCHDOWN",_[_.PLAYER_PROPS_3PTS_MADE=11038]="PLAYER_PROPS_3PTS_MADE",_[_.PLAYER_PROPS_BLOCKS=11098]="PLAYER_PROPS_BLOCKS",_[_.PLAYER_PROPS_OVER_GOALS=11100]="PLAYER_PROPS_OVER_GOALS",_[_.PLAYER_PROPS_INTERCEPTIONS=11202]="PLAYER_PROPS_INTERCEPTIONS",_[_.PLAYER_PROPS_KICKING_POINTS=11203]="PLAYER_PROPS_KICKING_POINTS",_[_.PLAYER_PROPS_PASSING_ATTEMPTS=11204]="PLAYER_PROPS_PASSING_ATTEMPTS",_[_.PLAYER_PROPS_PASSING_COMPLETIONS=11205]="PLAYER_PROPS_PASSING_COMPLETIONS",_[_.PLAYER_PROPS_TOUCHDOWNS=11206]="PLAYER_PROPS_TOUCHDOWNS",_[_.PLAYER_PROPS_SACKS=11207]="PLAYER_PROPS_SACKS",_[_.PLAYER_PROPS_PASSING_RUSHING=11208]="PLAYER_PROPS_PASSING_RUSHING",_[_.PLAYER_PROPS_RUSHING_RECEIVING=11209]="PLAYER_PROPS_RUSHING_RECEIVING",_[_.PLAYER_PROPS_LONGEST_RECEPTION=11210]="PLAYER_PROPS_LONGEST_RECEPTION",_[_.PLAYER_PROPS_EXTRA_POINTS=11211]="PLAYER_PROPS_EXTRA_POINTS",_[_.PLAYER_PROPS_TACKLES=11212]="PLAYER_PROPS_TACKLES",_[_.PLAYER_PROPS_OUTS=11213]="PLAYER_PROPS_OUTS",_[_.PLAYER_PROPS_RBIS=11214]="PLAYER_PROPS_RBIS",_[_.PLAYER_PROPS_HITS_RUNS_RBIS=11215]="PLAYER_PROPS_HITS_RUNS_RBIS",_[_.PLAYER_PROPS_EARNED_RUNS=11216]="PLAYER_PROPS_EARNED_RUNS",_[_.PLAYER_PROPS_DOUBLES=11217]="PLAYER_PROPS_DOUBLES",_[_.PLAYER_PROPS_BATTING_WALKS=11218]="PLAYER_PROPS_BATTING_WALKS",_[_.PLAYER_PROPS_BATTING_STRIKEOUTS=11219]="PLAYER_PROPS_BATTING_STRIKEOUTS",_[_.PLAYER_PROPS_SINGLES=11220]="PLAYER_PROPS_SINGLES",_[_.PLAYER_PROPS_STOLEN_BASES=11221]="PLAYER_PROPS_STOLEN_BASES",_[_.PLAYER_PROPS_RUNS=11222]="PLAYER_PROPS_RUNS",_[_.PLAYER_PROPS_WALKS=11223]="PLAYER_PROPS_WALKS",_[_.PLAYER_PROPS_POINTS_ASSISTS=11225]="PLAYER_PROPS_POINTS_ASSISTS",_[_.PLAYER_PROPS_POINTS_REBOUNDS=11226]="PLAYER_PROPS_POINTS_REBOUNDS",_[_.PLAYER_PROPS_POINTS_REBOUNDS_ASSISTS=11227]="PLAYER_PROPS_POINTS_REBOUNDS_ASSISTS",_[_.PLAYER_PROPS_REBOUNDS_ASSISTS=11228]="PLAYER_PROPS_REBOUNDS_ASSISTS",_[_.PLAYER_PROPS_STEALS=11229]="PLAYER_PROPS_STEALS",_[_.PLAYER_PROPS_STEALS_BLOCKS=11230]="PLAYER_PROPS_STEALS_BLOCKS",_[_.PLAYER_PROPS_LONGEST_RUSH=11241]="PLAYER_PROPS_LONGEST_RUSH",_[_.PLAYER_PROPS_CARD_RECEIVER=11234]="PLAYER_PROPS_CARD_RECEIVER",_[_.PLAYER_PROPS_RED_CARD_RECEIVER=11235]="PLAYER_PROPS_RED_CARD_RECEIVER",_[_.PLAYER_PROPS_FIRST_SCORER=11236]="PLAYER_PROPS_FIRST_SCORER",_[_.PLAYER_PROPS_LAST_SCORER=11237]="PLAYER_PROPS_LAST_SCORER",_[_.PLAYER_PROPS_SHOTS_ON_TARGET=11238]="PLAYER_PROPS_SHOTS_ON_TARGET",_[_.PLAYER_PROPS_TOTAL_SHOTS=11239]="PLAYER_PROPS_TOTAL_SHOTS",_[_.PLAYER_PROPS_ACES=11231]="PLAYER_PROPS_ACES",_[_.PLAYER_PROPS_BREAK_POINTS_WON=11232]="PLAYER_PROPS_BREAK_POINTS_WON",_[_.PLAYER_PROPS_DOUBLE_FAULTS=11240]="PLAYER_PROPS_DOUBLE_FAULTS",_[_.WINNING_ROUND=10151]="WINNING_ROUND",_[_.GO_THE_DISTANCE=10154]="GO_THE_DISTANCE",_[_.WILL_FIGHT_END_IN_FIRST_MINUTE=10155]="WILL_FIGHT_END_IN_FIRST_MINUTE",_[_.WILL_POINT_BE_DEDUCTED=10156]="WILL_POINT_BE_DEDUCTED",_[_.ENDING_METHOD=10157]="ENDING_METHOD",_[_.METHOD_OF_VICTORY=10158]="METHOD_OF_VICTORY",_[_.PLAYER_PROPS_UFC_TAKEDOWNS_LANDED=11200]="PLAYER_PROPS_UFC_TAKEDOWNS_LANDED",_[_.PLAYER_PROPS_UFC_SIGNIFICANT_STRIKES_LANDED=11201]="PLAYER_PROPS_UFC_SIGNIFICANT_STRIKES_LANDED",_[_.US_ELECTION_POPULAR_VOTE_WINNER=10900]="US_ELECTION_POPULAR_VOTE_WINNER",_[_.US_ELECTION_WINNING_PARTY=10901]="US_ELECTION_WINNING_PARTY",_[_.US_ELECTION_WINNING_PARTY_ARIZONA=10902]="US_ELECTION_WINNING_PARTY_ARIZONA",_[_.US_ELECTION_WINNING_PARTY_GEORGIA=10903]="US_ELECTION_WINNING_PARTY_GEORGIA",_[_.US_ELECTION_WINNING_PARTY_MICHIGAN=10904]="US_ELECTION_WINNING_PARTY_MICHIGAN",_[_.US_ELECTION_WINNING_PARTY_NEVADA=10905]="US_ELECTION_WINNING_PARTY_NEVADA",_[_.US_ELECTION_WINNING_PARTY_PENNSYLVANIA=10906]="US_ELECTION_WINNING_PARTY_PENNSYLVANIA",_[_.US_ELECTION_WINNING_PARTY_WINSCONSIN=10907]="US_ELECTION_WINNING_PARTY_WINSCONSIN",_[_.US_ELECTION_WINNING_PARTY_NORTH_CAROLINA=10908]="US_ELECTION_WINNING_PARTY_NORTH_CAROLINA",_[_.CORRECT_SCORE=10100]="CORRECT_SCORE",_[_.TOTAL_EXACT_HOME_TEAM=10143]="TOTAL_EXACT_HOME_TEAM",_[_.TOTAL_EXACT_AWAY_TEAM=10144]="TOTAL_EXACT_AWAY_TEAM",_[_.FIRST_PERIOD_TOTAL_EXACT_HOME_TEAM=10145]="FIRST_PERIOD_TOTAL_EXACT_HOME_TEAM",_[_.FIRST_PERIOD_TOTAL_EXACT_AWAY_TEAM=10146]="FIRST_PERIOD_TOTAL_EXACT_AWAY_TEAM",_[_.SECOND_PERIOD_TOTAL_EXACT_HOME_TEAM=10147]="SECOND_PERIOD_TOTAL_EXACT_HOME_TEAM",_[_.SECOND_PERIOD_TOTAL_EXACT_AWAY_TEAM=10148]="SECOND_PERIOD_TOTAL_EXACT_AWAY_TEAM",_[_.LEAGUE_WINNER=13001]="LEAGUE_WINNER",_[_.MVP=13002]="MVP",_[_.CUP_WINNER=13003]="CUP_WINNER",_[_.TO_MAKE_FINAL_FOUR=13005]="TO_MAKE_FINAL_FOUR",_[_.SPREAD_CORNERS=10221]="SPREAD_CORNERS",_[_.TOTAL_CORNERS=10222]="TOTAL_CORNERS",_[_.TOTAL_CORNERS_HOME_TEAM=10223]="TOTAL_CORNERS_HOME_TEAM",_[_.TOTAL_CORNERS_AWAY_TEAM=10224]="TOTAL_CORNERS_AWAY_TEAM",_[_.TOTAL_CORNERS_ODD_EVEN=10225]="TOTAL_CORNERS_ODD_EVEN",_[_.FIRST_PERIOD_TOTAL_CORNERS=10226]="FIRST_PERIOD_TOTAL_CORNERS",_[_.SECOND_PERIOD_TOTAL_CORNERS=10227]="SECOND_PERIOD_TOTAL_CORNERS",_[_.FIRST_PERIOD_TOTAL_CORNERS_HOME_TEAM=10228]="FIRST_PERIOD_TOTAL_CORNERS_HOME_TEAM",_[_.FIRST_PERIOD_TOTAL_CORNERS_AWAY_TEAM=10229]="FIRST_PERIOD_TOTAL_CORNERS_AWAY_TEAM",_[_.SECOND_PERIOD_TOTAL_CORNERS_HOME_TEAM=10230]="SECOND_PERIOD_TOTAL_CORNERS_HOME_TEAM",_[_.SECOND_PERIOD_TOTAL_CORNERS_AWAY_TEAM=10231]="SECOND_PERIOD_TOTAL_CORNERS_AWAY_TEAM",_[_.FIRST_PERIOD_SPREAD_CORNERS=10232]="FIRST_PERIOD_SPREAD_CORNERS",_[_.SECOND_PERIOD_SPREAD_CORNERS=10233]="SECOND_PERIOD_SPREAD_CORNERS",_[_.MOST_CORNERS=10234]="MOST_CORNERS",_[_.FIRST_PERIOD_MOST_CORNERS=10235]="FIRST_PERIOD_MOST_CORNERS",_[_.SECOND_PERIOD_MOST_CORNERS=10236]="SECOND_PERIOD_MOST_CORNERS",_[_.SPREAD_CARDS=10241]="SPREAD_CARDS",_[_.TOTAL_CARDS=10242]="TOTAL_CARDS",_[_.TOTAL_CARDS_HOME_TEAM=10243]="TOTAL_CARDS_HOME_TEAM",_[_.TOTAL_CARDS_AWAY_TEAM=10244]="TOTAL_CARDS_AWAY_TEAM",_[_.TOTA_RED_CARDS=10245]="TOTA_RED_CARDS",_[_.MOST_CARDS=10246]="MOST_CARDS",_[_.FIRST_CARD=10247]="FIRST_CARD",_[_.LAST_CARD=10248]="LAST_CARD"}(_||(_={}));const O=[_.WINNER,_.DRAW_NO_BET,_.WINNER2,_.WINNER3,_.FIRST_PERIOD_WINNER,_.SECOND_PERIOD_WINNER,_.THIRD_PERIOD_WINNER,_.FOURTH_PERIOD_WINNER,_.FIFTH_PERIOD_WINNER,_.SIXTH_PERIOD_WINNER,_.SEVENTH_PERIOD_WINNER,_.EIGHTH_PERIOD_WINNER,_.NINTH_PERIOD_WINNER,_.FIRST_PERIOD_WINNER2,_.SECOND_PERIOD_WINNER2,_.THIRD_PERIOD_WINNER2,_.FOURTH_PERIOD_WINNER2,_.FIFTH_PERIOD_WINNER2,_.SIXTH_PERIOD_WINNER2,_.SEVENTH_PERIOD_WINNER2,_.EIGHTH_PERIOD_WINNER2,_.NINTH_PERIOD_WINNER2,_.FIRST_PERIOD_DRAW_NO_BET,_.SECOND_PERIOD_DRAW_NO_BET,_.THIRD_PERIOD_DRAW_NO_BET,_.FOURTH_PERIOD_DRAW_NO_BET,_.WHO_WILL_QUALIFY,_.MOST_CORNERS,_.FIRST_PERIOD_MOST_CORNERS,_.SECOND_PERIOD_MOST_CORNERS,_.MOST_CARDS],T=[_.TOTAL,_.TOTAL2,_.TOTAL_HOME_TEAM,_.TOTAL_AWAY_TEAM,_.FIRST_PERIOD_TOTAL,_.SECOND_PERIOD_TOTAL,_.THIRD_PERIOD_TOTAL,_.FOURTH_PERIOD_TOTAL,_.FIFTH_PERIOD_TOTAL,_.SIXTH_PERIOD_TOTAL,_.SEVENTH_PERIOD_TOTAL,_.EIGHTH_PERIOD_TOTAL,_.NINTH_PERIOD_TOTAL,_.FIRST_PERIOD_TOTAL2,_.SECOND_PERIOD_TOTAL2,_.THIRD_PERIOD_TOTAL2,_.FOURTH_PERIOD_TOTAL2,_.FIFTH_PERIOD_TOTAL2,_.SIXTH_PERIOD_TOTAL2,_.SEVENTH_PERIOD_TOTAL2,_.EIGHTH_PERIOD_TOTAL2,_.NINTH_PERIOD_TOTAL2,_.FIRST_PERIOD_TOTAL_HOME_TEAM,_.FIRST_PERIOD_TOTAL_AWAY_TEAM,_.SECOND_PERIOD_TOTAL_HOME_TEAM,_.SECOND_PERIOD_TOTAL_AWAY_TEAM,_.FIRST_PERIOD_TOTAL2_HOME_TEAM,_.FIRST_PERIOD_TOTAL2_AWAY_TEAM,_.SECOND_PERIOD_TOTAL2_HOME_TEAM,_.SECOND_PERIOD_TOTAL2_AWAY_TEAM,_.TOTAL_CORNERS,_.TOTAL_CORNERS_HOME_TEAM,_.TOTAL_CORNERS_AWAY_TEAM,_.FIRST_PERIOD_TOTAL_CORNERS,_.SECOND_PERIOD_TOTAL_CORNERS,_.FIRST_PERIOD_TOTAL_CORNERS_HOME_TEAM,_.FIRST_PERIOD_TOTAL_CORNERS_AWAY_TEAM,_.SECOND_PERIOD_TOTAL_CORNERS_HOME_TEAM,_.SECOND_PERIOD_TOTAL_CORNERS_AWAY_TEAM,_.TOTAL_CARDS,_.TOTAL_CARDS_HOME_TEAM,_.TOTAL_CARDS_AWAY_TEAM,_.TOTA_RED_CARDS],P=[_.TOTAL_HOME_TEAM,_.FIRST_PERIOD_TOTAL_HOME_TEAM,_.SECOND_PERIOD_TOTAL_HOME_TEAM,_.FIRST_PERIOD_TOTAL2_HOME_TEAM,_.SECOND_PERIOD_TOTAL2_HOME_TEAM,_.TOTAL_CORNERS_HOME_TEAM,_.FIRST_PERIOD_TOTAL_CORNERS_HOME_TEAM,_.SECOND_PERIOD_TOTAL_CORNERS_HOME_TEAM,_.TOTAL_CARDS_HOME_TEAM],S=[_.TOTAL_AWAY_TEAM,_.FIRST_PERIOD_TOTAL_AWAY_TEAM,_.SECOND_PERIOD_TOTAL_AWAY_TEAM,_.FIRST_PERIOD_TOTAL2_AWAY_TEAM,_.SECOND_PERIOD_TOTAL2_AWAY_TEAM,_.TOTAL_CORNERS_AWAY_TEAM,_.FIRST_PERIOD_TOTAL_CORNERS_AWAY_TEAM,_.SECOND_PERIOD_TOTAL_CORNERS_AWAY_TEAM,_.TOTAL_CARDS_AWAY_TEAM],A=[_.TOTAL_ODD_EVEN,_.FIRST_PERIOD_TOTAL_ODD_EVEN,_.SECOND_PERIOD_TOTAL_ODD_EVEN,_.THIRD_PERIOD_TOTAL_ODD_EVEN,_.FOURTH_PERIOD_TOTAL_ODD_EVEN,_.FIFTH_PERIOD_TOTAL_ODD_EVEN,_.SIXTH_PERIOD_TOTAL_ODD_EVEN,_.SEVENTH_PERIOD_TOTAL_ODD_EVEN,_.EIGHTH_PERIOD_TOTAL_ODD_EVEN,_.NINTH_PERIOD_TOTAL_ODD_EVEN,_.FIRST_PERIOD_TOTAL2_ODD_EVEN,_.SECOND_PERIOD_TOTAL2_ODD_EVEN,_.THIRD_PERIOD_TOTAL2_ODD_EVEN,_.FOURTH_PERIOD_TOTAL2_ODD_EVEN,_.FIFTH_PERIOD_TOTAL2_ODD_EVEN,_.SIXTH_PERIOD_TOTAL2_ODD_EVEN,_.SEVENTH_PERIOD_TOTAL2_ODD_EVEN,_.EIGHTH_PERIOD_TOTAL2_ODD_EVEN,_.NINTH_PERIOD_TOTAL2_ODD_EVEN,_.TOTAL_CORNERS_ODD_EVEN],I=[_.TOTAL_EXACT_HOME_TEAM,_.TOTAL_EXACT_AWAY_TEAM,_.FIRST_PERIOD_TOTAL_EXACT_HOME_TEAM,_.FIRST_PERIOD_TOTAL_EXACT_AWAY_TEAM,_.SECOND_PERIOD_TOTAL_EXACT_HOME_TEAM,_.SECOND_PERIOD_TOTAL_EXACT_AWAY_TEAM],D=[_.SPREAD,_.SPREAD2,_.FIRST_PERIOD_SPREAD,_.SECOND_PERIOD_SPREAD,_.THIRD_PERIOD_SPREAD,_.FOURTH_PERIOD_SPREAD,_.FIFTH_PERIOD_SPREAD,_.SIXTH_PERIOD_SPREAD,_.SEVENTH_PERIOD_SPREAD,_.EIGHTH_PERIOD_SPREAD,_.NINTH_PERIOD_SPREAD,_.FIRST_PERIOD_SPREAD2,_.SECOND_PERIOD_SPREAD2,_.THIRD_PERIOD_SPREAD2,_.FOURTH_PERIOD_SPREAD2,_.FIFTH_PERIOD_SPREAD2,_.SIXTH_PERIOD_SPREAD2,_.SEVENTH_PERIOD_SPREAD2,_.EIGHTH_PERIOD_SPREAD2,_.NINTH_PERIOD_SPREAD2,_.SPREAD_CORNERS,_.FIRST_PERIOD_SPREAD_CORNERS,_.SECOND_PERIOD_SPREAD_CORNERS,_.SPREAD_CARDS],N=[_.PLAYER_PROPS_HOMERUNS,_.PLAYER_PROPS_BASES,_.PLAYER_PROPS_STRIKEOUTS,_.PLAYER_PROPS_PASSING_YARDS,_.PLAYER_PROPS_PASSING_TOUCHDOWNS,_.PLAYER_PROPS_RUSHING_YARDS,_.PLAYER_PROPS_RECEIVING_YARDS,_.PLAYER_PROPS_TOUCHDOWNS_SCORER,_.PLAYER_PROPS_FIELD_GOALS_MADE,_.PLAYER_PROPS_PITCHER_HITS_ALLOWED,_.PLAYER_PROPS_POINTS,_.PLAYER_PROPS_SHOTS,_.PLAYER_PROPS_GOALS,_.PLAYER_PROPS_HITS_RECORDED,_.PLAYER_PROPS_REBOUNDS,_.PLAYER_PROPS_ASSISTS,_.PLAYER_PROPS_DOUBLE_DOUBLE,_.PLAYER_PROPS_TRIPLE_DOUBLE,_.PLAYER_PROPS_RECEPTIONS,_.PLAYER_PROPS_FIRST_TOUCHDOWN,_.PLAYER_PROPS_LAST_TOUCHDOWN,_.PLAYER_PROPS_3PTS_MADE,_.PLAYER_PROPS_BLOCKS,_.PLAYER_PROPS_OVER_GOALS,_.PLAYER_PROPS_UFC_TAKEDOWNS_LANDED,_.PLAYER_PROPS_UFC_SIGNIFICANT_STRIKES_LANDED,_.PLAYER_PROPS_INTERCEPTIONS,_.PLAYER_PROPS_KICKING_POINTS,_.PLAYER_PROPS_PASSING_ATTEMPTS,_.PLAYER_PROPS_PASSING_COMPLETIONS,_.PLAYER_PROPS_TOUCHDOWNS,_.PLAYER_PROPS_SACKS,_.PLAYER_PROPS_RUSHING_RECEIVING,_.PLAYER_PROPS_PASSING_RUSHING,_.PLAYER_PROPS_LONGEST_RECEPTION,_.PLAYER_PROPS_EXTRA_POINTS,_.PLAYER_PROPS_TACKLES,_.PLAYER_PROPS_OUTS,_.PLAYER_PROPS_RBIS,_.PLAYER_PROPS_HITS_RUNS_RBIS,_.PLAYER_PROPS_EARNED_RUNS,_.PLAYER_PROPS_DOUBLES,_.PLAYER_PROPS_BATTING_WALKS,_.PLAYER_PROPS_BATTING_STRIKEOUTS,_.PLAYER_PROPS_SINGLES,_.PLAYER_PROPS_STOLEN_BASES,_.PLAYER_PROPS_RUNS,_.PLAYER_PROPS_WALKS,_.PLAYER_PROPS_POINTS_ASSISTS,_.PLAYER_PROPS_POINTS_REBOUNDS,_.PLAYER_PROPS_POINTS_REBOUNDS_ASSISTS,_.PLAYER_PROPS_REBOUNDS_ASSISTS,_.PLAYER_PROPS_STEALS,_.PLAYER_PROPS_STEALS_BLOCKS,_.PLAYER_PROPS_LONGEST_RUSH,_.PLAYER_PROPS_CARD_RECEIVER,_.PLAYER_PROPS_RED_CARD_RECEIVER,_.PLAYER_PROPS_FIRST_SCORER,_.PLAYER_PROPS_LAST_SCORER,_.PLAYER_PROPS_SHOTS_ON_TARGET,_.PLAYER_PROPS_TOTAL_SHOTS,_.PLAYER_PROPS_ACES,_.PLAYER_PROPS_BREAK_POINTS_WON,_.PLAYER_PROPS_DOUBLE_FAULTS],L=[_.WINNER_TOTAL,_.HALFTIME_FULLTIME,_.GOALS,_.HALFTIME_FULLTIME_GOALS],H=[_.PLAYER_PROPS_TOUCHDOWNS_SCORER,_.PLAYER_PROPS_GOALS,_.PLAYER_PROPS_FIRST_TOUCHDOWN,_.PLAYER_PROPS_LAST_TOUCHDOWN,_.PLAYER_PROPS_CARD_RECEIVER,_.PLAYER_PROPS_RED_CARD_RECEIVER,_.PLAYER_PROPS_FIRST_SCORER,_.PLAYER_PROPS_LAST_SCORER],C=[_.PLAYER_PROPS_DOUBLE_DOUBLE,_.PLAYER_PROPS_TRIPLE_DOUBLE],Y=[_.BOTH_TEAMS_TO_SCORE,_.FIRST_PERIOD_BOTH_TEAMS_TO_SCORE,_.SECOND_PERIOD_BOTH_TEAMS_TO_SCORE,_.THIRD_PERIOD_BOTH_TEAMS_TO_SCORE,_.FOURTH_PERIOD_BOTH_TEAMS_TO_SCORE,_.FIFTH_PERIOD_BOTH_TEAMS_TO_SCORE,_.SIXTH_PERIOD_BOTH_TEAMS_TO_SCORE,_.SEVENTH_PERIOD_BOTH_TEAMS_TO_SCORE,_.EIGHTH_PERIOD_BOTH_TEAMS_TO_SCORE,_.NINTH_PERIOD_BOTH_TEAMS_TO_SCORE],M=[_.CLEAN_SHEET_HOME_TEAM,_.CLEAN_SHEET_AWAY_TEAM,_.WILL_THERE_BE_OVERTIME,_.FIRST_INNING_NO_RUNS,_.GO_THE_DISTANCE,_.WILL_FIGHT_END_IN_FIRST_MINUTE,_.WILL_POINT_BE_DEDUCTED,_.TO_MAKE_FINAL_FOUR],e=[_.CORRECT_SCORE],F=[_.WINNING_ROUND,_.ENDING_METHOD,_.METHOD_OF_VICTORY],W=[_.WINNING_ROUND],U=[_.ENDING_METHOD],t=[_.METHOD_OF_VICTORY],o=[_.WINNER_TOTAL],G=_=>O.includes(_),r=_=>T.includes(_),i=_=>P.includes(_),s=_=>S.includes(_),B=_=>A.includes(_),V=_=>I.includes(_),n=_=>D.includes(_),l=_=>N.includes(_),c=_=>L.includes(_),d=_=>H.includes(_),p=_=>C.includes(_),a=_=>Y.includes(_),K=_=>M.includes(_),u=_=>e.includes(_),y=_=>F.includes(_),f=_=>W.includes(_),X=_=>U.includes(_),k=_=>t.includes(_),g=(_,E)=>(r(_)||n(_))&&E%1==0,m=_=>o.includes(_),b=(_,E)=>_.filter((_=>_.blockerGroup===E)),h=(_,E,R)=>_.find((_=>_.blockerGroup===E&&_.blockerNumber===R)),v=(_,E)=>{const R=E.length&&(((_,E)=>{let R="";if(b(E,0).length){const O=0;for(let T=0;T<_.length;T++){const P=_[T],S=P.typeId,A=P.playerId,I=P.position;if(_.filter(((_,E)=>E!==T)).some((_=>_.typeId===S&&_.playerId===A&&_.position===I))){R=h(E,0,O)?.message||`Blocker group 0, #${O}`;break}}}return R})(_,E)||((_,E)=>{const R=b(E,1);let O="";for(let E=0;E<R.length;E++){const T=h(R,1,E);if(T){const R=_.some((_=>T.blockerTypeIds.includes(_.typeId))),P=_.some((_=>T.combineWithTypeIds.includes(_.typeId)));if(R&&P){O=T?.message||`Blocker group 1, #${E}`;break}}}return O})(_,E)||((_,E)=>{const R=b(E,2);let O="";for(let E=0;E<R.length;E++){const T=h(R,2,E);if(T)for(let R=0;R<_.length;R++){const P=_[R],S=_.filter(((_,E)=>E!==R));if(T.blockerTypeIds.includes(P.typeId)&&S.some((_=>(!T.combineWithTypeIds.length||T.combineWithTypeIds.includes(_.typeId))&&_.playerId>0&&_.playerId===P.playerId))){O=T?.message||`Blocker group 2, #${E}`;break}}}return O})(_,E)||((_,E)=>{const R=b(E,3);let O="";for(let E=0;E<R.length;E++){const T=h(R,3,E);if(T)for(let R=0;R<_.length;R++){const P=_[R],S=_.filter(((_,E)=>E!==R));if(T.blockerTypeIds.includes(P.typeId)&&S.some((_=>T.combineWithTypeIds.length&&T.combineWithTypeIds.includes(_.typeId)&&0===_.playerId&&_.position===P.position))){O=T?.message||`Blocker group 3, #${E}`;break}}}return O})(_,E)||((_,E)=>{const R=b(E,4);let O="";for(let E=0;E<R.length;E++){const T=h(R,4,E);if(T)for(let R=0;R<_.length;R++){const P=_[R],S=_.filter(((_,E)=>E!==R));if(T.blockerTypeIds.includes(P.typeId)&&S.some((_=>T.combineWithTypeIds.length&&T.combineWithTypeIds.every((E=>E===_.typeId))&&0===_.playerId&&_.position===P.position))){O=T?.message||`Blocker group 4, #${E}`;break}}}return O})(_,E)||((_,E)=>{const R=b(E,5);let O="";for(let E=0;E<R.length;E++){const T=h(R,5,E);if(T)for(let R=0;R<_.length;R++){const P=_[R],S=_.filter(((_,E)=>E!==R));if(T.blockerTypeIds.includes(P.typeId)&&S.some((_=>T.combineWithTypeIds.length&&T.combineWithTypeIds.every((E=>E===_.typeId))&&0===_.playerId))){O=T?.message||`Blocker group 5, #${E}`;break}}}return O})(_,E))||"";return{isAllowed:!R,message:R}};return R})()));
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "overtime-utils",
3
- "version": "0.0.1",
3
+ "version": "0.0.2",
4
4
  "description": "",
5
5
  "main": "main.js",
6
6
  "scripts": {
@@ -1,3 +1,290 @@
1
1
  import { MarketType } from '../enums/marketTypes';
2
2
 
3
- export const WINNER_MARKET_TYPES = [MarketType.WINNER];
3
+ export const WINNER_MARKET_TYPES = [
4
+ MarketType.WINNER,
5
+ MarketType.DRAW_NO_BET,
6
+ MarketType.WINNER2,
7
+ MarketType.WINNER3,
8
+ MarketType.FIRST_PERIOD_WINNER,
9
+ MarketType.SECOND_PERIOD_WINNER,
10
+ MarketType.THIRD_PERIOD_WINNER,
11
+ MarketType.FOURTH_PERIOD_WINNER,
12
+ MarketType.FIFTH_PERIOD_WINNER,
13
+ MarketType.SIXTH_PERIOD_WINNER,
14
+ MarketType.SEVENTH_PERIOD_WINNER,
15
+ MarketType.EIGHTH_PERIOD_WINNER,
16
+ MarketType.NINTH_PERIOD_WINNER,
17
+ MarketType.FIRST_PERIOD_WINNER2,
18
+ MarketType.SECOND_PERIOD_WINNER2,
19
+ MarketType.THIRD_PERIOD_WINNER2,
20
+ MarketType.FOURTH_PERIOD_WINNER2,
21
+ MarketType.FIFTH_PERIOD_WINNER2,
22
+ MarketType.SIXTH_PERIOD_WINNER2,
23
+ MarketType.SEVENTH_PERIOD_WINNER2,
24
+ MarketType.EIGHTH_PERIOD_WINNER2,
25
+ MarketType.NINTH_PERIOD_WINNER2,
26
+ MarketType.FIRST_PERIOD_DRAW_NO_BET,
27
+ MarketType.SECOND_PERIOD_DRAW_NO_BET,
28
+ MarketType.THIRD_PERIOD_DRAW_NO_BET,
29
+ MarketType.FOURTH_PERIOD_DRAW_NO_BET,
30
+ MarketType.WHO_WILL_QUALIFY,
31
+ MarketType.MOST_CORNERS,
32
+ MarketType.FIRST_PERIOD_MOST_CORNERS,
33
+ MarketType.SECOND_PERIOD_MOST_CORNERS,
34
+ MarketType.MOST_CARDS,
35
+ ];
36
+
37
+ export const TOTAL_MARKET_TYPES = [
38
+ MarketType.TOTAL,
39
+ MarketType.TOTAL2,
40
+ MarketType.TOTAL_HOME_TEAM,
41
+ MarketType.TOTAL_AWAY_TEAM,
42
+ MarketType.FIRST_PERIOD_TOTAL,
43
+ MarketType.SECOND_PERIOD_TOTAL,
44
+ MarketType.THIRD_PERIOD_TOTAL,
45
+ MarketType.FOURTH_PERIOD_TOTAL,
46
+ MarketType.FIFTH_PERIOD_TOTAL,
47
+ MarketType.SIXTH_PERIOD_TOTAL,
48
+ MarketType.SEVENTH_PERIOD_TOTAL,
49
+ MarketType.EIGHTH_PERIOD_TOTAL,
50
+ MarketType.NINTH_PERIOD_TOTAL,
51
+ MarketType.FIRST_PERIOD_TOTAL2,
52
+ MarketType.SECOND_PERIOD_TOTAL2,
53
+ MarketType.THIRD_PERIOD_TOTAL2,
54
+ MarketType.FOURTH_PERIOD_TOTAL2,
55
+ MarketType.FIFTH_PERIOD_TOTAL2,
56
+ MarketType.SIXTH_PERIOD_TOTAL2,
57
+ MarketType.SEVENTH_PERIOD_TOTAL2,
58
+ MarketType.EIGHTH_PERIOD_TOTAL2,
59
+ MarketType.NINTH_PERIOD_TOTAL2,
60
+ MarketType.FIRST_PERIOD_TOTAL_HOME_TEAM,
61
+ MarketType.FIRST_PERIOD_TOTAL_AWAY_TEAM,
62
+ MarketType.SECOND_PERIOD_TOTAL_HOME_TEAM,
63
+ MarketType.SECOND_PERIOD_TOTAL_AWAY_TEAM,
64
+ MarketType.FIRST_PERIOD_TOTAL2_HOME_TEAM,
65
+ MarketType.FIRST_PERIOD_TOTAL2_AWAY_TEAM,
66
+ MarketType.SECOND_PERIOD_TOTAL2_HOME_TEAM,
67
+ MarketType.SECOND_PERIOD_TOTAL2_AWAY_TEAM,
68
+ MarketType.TOTAL_CORNERS,
69
+ MarketType.TOTAL_CORNERS_HOME_TEAM,
70
+ MarketType.TOTAL_CORNERS_AWAY_TEAM,
71
+ MarketType.FIRST_PERIOD_TOTAL_CORNERS,
72
+ MarketType.SECOND_PERIOD_TOTAL_CORNERS,
73
+ MarketType.FIRST_PERIOD_TOTAL_CORNERS_HOME_TEAM,
74
+ MarketType.FIRST_PERIOD_TOTAL_CORNERS_AWAY_TEAM,
75
+ MarketType.SECOND_PERIOD_TOTAL_CORNERS_HOME_TEAM,
76
+ MarketType.SECOND_PERIOD_TOTAL_CORNERS_AWAY_TEAM,
77
+ MarketType.TOTAL_CARDS,
78
+ MarketType.TOTAL_CARDS_HOME_TEAM,
79
+ MarketType.TOTAL_CARDS_AWAY_TEAM,
80
+ MarketType.TOTA_RED_CARDS,
81
+ ];
82
+
83
+ export const HOME_TEAM_TOTAL_MARKET_TYPES = [
84
+ MarketType.TOTAL_HOME_TEAM,
85
+ MarketType.FIRST_PERIOD_TOTAL_HOME_TEAM,
86
+ MarketType.SECOND_PERIOD_TOTAL_HOME_TEAM,
87
+ MarketType.FIRST_PERIOD_TOTAL2_HOME_TEAM,
88
+ MarketType.SECOND_PERIOD_TOTAL2_HOME_TEAM,
89
+ MarketType.TOTAL_CORNERS_HOME_TEAM,
90
+ MarketType.FIRST_PERIOD_TOTAL_CORNERS_HOME_TEAM,
91
+ MarketType.SECOND_PERIOD_TOTAL_CORNERS_HOME_TEAM,
92
+ MarketType.TOTAL_CARDS_HOME_TEAM,
93
+ ];
94
+ export const AWAY_TEAM_TOTAL_MARKET_TYPES = [
95
+ MarketType.TOTAL_AWAY_TEAM,
96
+ MarketType.FIRST_PERIOD_TOTAL_AWAY_TEAM,
97
+ MarketType.SECOND_PERIOD_TOTAL_AWAY_TEAM,
98
+ MarketType.FIRST_PERIOD_TOTAL2_AWAY_TEAM,
99
+ MarketType.SECOND_PERIOD_TOTAL2_AWAY_TEAM,
100
+ MarketType.TOTAL_CORNERS_AWAY_TEAM,
101
+ MarketType.FIRST_PERIOD_TOTAL_CORNERS_AWAY_TEAM,
102
+ MarketType.SECOND_PERIOD_TOTAL_CORNERS_AWAY_TEAM,
103
+ MarketType.TOTAL_CARDS_AWAY_TEAM,
104
+ ];
105
+
106
+ export const TOTAL_ODD_EVEN_MARKET_TYPES = [
107
+ MarketType.TOTAL_ODD_EVEN,
108
+ MarketType.FIRST_PERIOD_TOTAL_ODD_EVEN,
109
+ MarketType.SECOND_PERIOD_TOTAL_ODD_EVEN,
110
+ MarketType.THIRD_PERIOD_TOTAL_ODD_EVEN,
111
+ MarketType.FOURTH_PERIOD_TOTAL_ODD_EVEN,
112
+ MarketType.FIFTH_PERIOD_TOTAL_ODD_EVEN,
113
+ MarketType.SIXTH_PERIOD_TOTAL_ODD_EVEN,
114
+ MarketType.SEVENTH_PERIOD_TOTAL_ODD_EVEN,
115
+ MarketType.EIGHTH_PERIOD_TOTAL_ODD_EVEN,
116
+ MarketType.NINTH_PERIOD_TOTAL_ODD_EVEN,
117
+ MarketType.FIRST_PERIOD_TOTAL2_ODD_EVEN,
118
+ MarketType.SECOND_PERIOD_TOTAL2_ODD_EVEN,
119
+ MarketType.THIRD_PERIOD_TOTAL2_ODD_EVEN,
120
+ MarketType.FOURTH_PERIOD_TOTAL2_ODD_EVEN,
121
+ MarketType.FIFTH_PERIOD_TOTAL2_ODD_EVEN,
122
+ MarketType.SIXTH_PERIOD_TOTAL2_ODD_EVEN,
123
+ MarketType.SEVENTH_PERIOD_TOTAL2_ODD_EVEN,
124
+ MarketType.EIGHTH_PERIOD_TOTAL2_ODD_EVEN,
125
+ MarketType.NINTH_PERIOD_TOTAL2_ODD_EVEN,
126
+ MarketType.TOTAL_CORNERS_ODD_EVEN,
127
+ ];
128
+
129
+ export const TOTAL_EXACT_MARKET_TYPES = [
130
+ MarketType.TOTAL_EXACT_HOME_TEAM,
131
+ MarketType.TOTAL_EXACT_AWAY_TEAM,
132
+ MarketType.FIRST_PERIOD_TOTAL_EXACT_HOME_TEAM,
133
+ MarketType.FIRST_PERIOD_TOTAL_EXACT_AWAY_TEAM,
134
+ MarketType.SECOND_PERIOD_TOTAL_EXACT_HOME_TEAM,
135
+ MarketType.SECOND_PERIOD_TOTAL_EXACT_AWAY_TEAM,
136
+ ];
137
+
138
+ export const SPREAD_MARKET_TYPES = [
139
+ MarketType.SPREAD,
140
+ MarketType.SPREAD2,
141
+ MarketType.FIRST_PERIOD_SPREAD,
142
+ MarketType.SECOND_PERIOD_SPREAD,
143
+ MarketType.THIRD_PERIOD_SPREAD,
144
+ MarketType.FOURTH_PERIOD_SPREAD,
145
+ MarketType.FIFTH_PERIOD_SPREAD,
146
+ MarketType.SIXTH_PERIOD_SPREAD,
147
+ MarketType.SEVENTH_PERIOD_SPREAD,
148
+ MarketType.EIGHTH_PERIOD_SPREAD,
149
+ MarketType.NINTH_PERIOD_SPREAD,
150
+ MarketType.FIRST_PERIOD_SPREAD2,
151
+ MarketType.SECOND_PERIOD_SPREAD2,
152
+ MarketType.THIRD_PERIOD_SPREAD2,
153
+ MarketType.FOURTH_PERIOD_SPREAD2,
154
+ MarketType.FIFTH_PERIOD_SPREAD2,
155
+ MarketType.SIXTH_PERIOD_SPREAD2,
156
+ MarketType.SEVENTH_PERIOD_SPREAD2,
157
+ MarketType.EIGHTH_PERIOD_SPREAD2,
158
+ MarketType.NINTH_PERIOD_SPREAD2,
159
+ MarketType.SPREAD_CORNERS,
160
+ MarketType.FIRST_PERIOD_SPREAD_CORNERS,
161
+ MarketType.SECOND_PERIOD_SPREAD_CORNERS,
162
+ MarketType.SPREAD_CARDS,
163
+ ];
164
+
165
+ export const PLAYER_PROPS_MARKET_TYPES = [
166
+ MarketType.PLAYER_PROPS_HOMERUNS,
167
+ MarketType.PLAYER_PROPS_BASES,
168
+ MarketType.PLAYER_PROPS_STRIKEOUTS,
169
+ MarketType.PLAYER_PROPS_PASSING_YARDS,
170
+ MarketType.PLAYER_PROPS_PASSING_TOUCHDOWNS,
171
+ MarketType.PLAYER_PROPS_RUSHING_YARDS,
172
+ MarketType.PLAYER_PROPS_RECEIVING_YARDS,
173
+ MarketType.PLAYER_PROPS_TOUCHDOWNS_SCORER,
174
+ MarketType.PLAYER_PROPS_FIELD_GOALS_MADE,
175
+ MarketType.PLAYER_PROPS_PITCHER_HITS_ALLOWED,
176
+ MarketType.PLAYER_PROPS_POINTS,
177
+ MarketType.PLAYER_PROPS_SHOTS,
178
+ MarketType.PLAYER_PROPS_GOALS,
179
+ MarketType.PLAYER_PROPS_HITS_RECORDED,
180
+ MarketType.PLAYER_PROPS_REBOUNDS,
181
+ MarketType.PLAYER_PROPS_ASSISTS,
182
+ MarketType.PLAYER_PROPS_DOUBLE_DOUBLE,
183
+ MarketType.PLAYER_PROPS_TRIPLE_DOUBLE,
184
+ MarketType.PLAYER_PROPS_RECEPTIONS,
185
+ MarketType.PLAYER_PROPS_FIRST_TOUCHDOWN,
186
+ MarketType.PLAYER_PROPS_LAST_TOUCHDOWN,
187
+ MarketType.PLAYER_PROPS_3PTS_MADE,
188
+ MarketType.PLAYER_PROPS_BLOCKS,
189
+ MarketType.PLAYER_PROPS_OVER_GOALS,
190
+ MarketType.PLAYER_PROPS_UFC_TAKEDOWNS_LANDED,
191
+ MarketType.PLAYER_PROPS_UFC_SIGNIFICANT_STRIKES_LANDED,
192
+ MarketType.PLAYER_PROPS_INTERCEPTIONS,
193
+ MarketType.PLAYER_PROPS_KICKING_POINTS,
194
+ MarketType.PLAYER_PROPS_PASSING_ATTEMPTS,
195
+ MarketType.PLAYER_PROPS_PASSING_COMPLETIONS,
196
+ MarketType.PLAYER_PROPS_TOUCHDOWNS,
197
+ MarketType.PLAYER_PROPS_SACKS,
198
+ MarketType.PLAYER_PROPS_RUSHING_RECEIVING,
199
+ MarketType.PLAYER_PROPS_PASSING_RUSHING,
200
+ MarketType.PLAYER_PROPS_LONGEST_RECEPTION,
201
+ MarketType.PLAYER_PROPS_EXTRA_POINTS,
202
+ MarketType.PLAYER_PROPS_TACKLES,
203
+ MarketType.PLAYER_PROPS_OUTS,
204
+ MarketType.PLAYER_PROPS_RBIS,
205
+ MarketType.PLAYER_PROPS_HITS_RUNS_RBIS,
206
+ MarketType.PLAYER_PROPS_EARNED_RUNS,
207
+ MarketType.PLAYER_PROPS_DOUBLES,
208
+ MarketType.PLAYER_PROPS_BATTING_WALKS,
209
+ MarketType.PLAYER_PROPS_BATTING_STRIKEOUTS,
210
+ MarketType.PLAYER_PROPS_SINGLES,
211
+ MarketType.PLAYER_PROPS_STOLEN_BASES,
212
+ MarketType.PLAYER_PROPS_RUNS,
213
+ MarketType.PLAYER_PROPS_WALKS,
214
+ MarketType.PLAYER_PROPS_POINTS_ASSISTS,
215
+ MarketType.PLAYER_PROPS_POINTS_REBOUNDS,
216
+ MarketType.PLAYER_PROPS_POINTS_REBOUNDS_ASSISTS,
217
+ MarketType.PLAYER_PROPS_REBOUNDS_ASSISTS,
218
+ MarketType.PLAYER_PROPS_STEALS,
219
+ MarketType.PLAYER_PROPS_STEALS_BLOCKS,
220
+ MarketType.PLAYER_PROPS_LONGEST_RUSH,
221
+ MarketType.PLAYER_PROPS_CARD_RECEIVER,
222
+ MarketType.PLAYER_PROPS_RED_CARD_RECEIVER,
223
+ MarketType.PLAYER_PROPS_FIRST_SCORER,
224
+ MarketType.PLAYER_PROPS_LAST_SCORER,
225
+ MarketType.PLAYER_PROPS_SHOTS_ON_TARGET,
226
+ MarketType.PLAYER_PROPS_TOTAL_SHOTS,
227
+ MarketType.PLAYER_PROPS_ACES,
228
+ MarketType.PLAYER_PROPS_BREAK_POINTS_WON,
229
+ MarketType.PLAYER_PROPS_DOUBLE_FAULTS,
230
+ ];
231
+
232
+ export const COMBINED_POSITIONS_MARKET_TYPES = [
233
+ MarketType.WINNER_TOTAL,
234
+ MarketType.HALFTIME_FULLTIME,
235
+ MarketType.GOALS,
236
+ MarketType.HALFTIME_FULLTIME_GOALS,
237
+ ];
238
+
239
+ export const ONE_SIDE_PLAYER_PROPS_MARKET_TYPES = [
240
+ MarketType.PLAYER_PROPS_TOUCHDOWNS_SCORER,
241
+ MarketType.PLAYER_PROPS_GOALS,
242
+ MarketType.PLAYER_PROPS_FIRST_TOUCHDOWN,
243
+ MarketType.PLAYER_PROPS_LAST_TOUCHDOWN,
244
+ MarketType.PLAYER_PROPS_CARD_RECEIVER,
245
+ MarketType.PLAYER_PROPS_RED_CARD_RECEIVER,
246
+ MarketType.PLAYER_PROPS_FIRST_SCORER,
247
+ MarketType.PLAYER_PROPS_LAST_SCORER,
248
+ ];
249
+
250
+ export const YES_NO_PLAYER_PROPS_MARKET_TYPES = [
251
+ MarketType.PLAYER_PROPS_DOUBLE_DOUBLE,
252
+ MarketType.PLAYER_PROPS_TRIPLE_DOUBLE,
253
+ ];
254
+
255
+ export const BOTH_TEAMS_TO_SCORE_MARKET_TYPES = [
256
+ MarketType.BOTH_TEAMS_TO_SCORE,
257
+ MarketType.FIRST_PERIOD_BOTH_TEAMS_TO_SCORE,
258
+ MarketType.SECOND_PERIOD_BOTH_TEAMS_TO_SCORE,
259
+ MarketType.THIRD_PERIOD_BOTH_TEAMS_TO_SCORE,
260
+ MarketType.FOURTH_PERIOD_BOTH_TEAMS_TO_SCORE,
261
+ MarketType.FIFTH_PERIOD_BOTH_TEAMS_TO_SCORE,
262
+ MarketType.SIXTH_PERIOD_BOTH_TEAMS_TO_SCORE,
263
+ MarketType.SEVENTH_PERIOD_BOTH_TEAMS_TO_SCORE,
264
+ MarketType.EIGHTH_PERIOD_BOTH_TEAMS_TO_SCORE,
265
+ MarketType.NINTH_PERIOD_BOTH_TEAMS_TO_SCORE,
266
+ ];
267
+
268
+ export const OTHER_YES_NO_MARKET_TYPES = [
269
+ MarketType.CLEAN_SHEET_HOME_TEAM,
270
+ MarketType.CLEAN_SHEET_AWAY_TEAM,
271
+ MarketType.WILL_THERE_BE_OVERTIME,
272
+ MarketType.FIRST_INNING_NO_RUNS,
273
+ MarketType.GO_THE_DISTANCE,
274
+ MarketType.WILL_FIGHT_END_IN_FIRST_MINUTE,
275
+ MarketType.WILL_POINT_BE_DEDUCTED,
276
+ MarketType.TO_MAKE_FINAL_FOUR,
277
+ ];
278
+
279
+ export const CORRECT_SCORE_MARKET_TYPES = [MarketType.CORRECT_SCORE];
280
+
281
+ export const UFC_SPECIFIC_MARKET_TYPES = [
282
+ MarketType.WINNING_ROUND,
283
+ MarketType.ENDING_METHOD,
284
+ MarketType.METHOD_OF_VICTORY,
285
+ ];
286
+ export const UFC_WINNING_ROUND_MARKET_TYPES = [MarketType.WINNING_ROUND];
287
+ export const UFC_ENDING_METHOD_MARKET_TYPES = [MarketType.ENDING_METHOD];
288
+ export const UFC_METHOD_OF_VICTORY_MARKET_TYPES = [MarketType.METHOD_OF_VICTORY];
289
+
290
+ export const SGP_NOT_SUPPORTED_MARKET_TYPES = [MarketType.WINNER_TOTAL];
@@ -2,4 +2,311 @@ export enum MarketType {
2
2
  EMPTY = -1,
3
3
  // Winner
4
4
  WINNER = 0,
5
+ // Winner without draw
6
+ DRAW_NO_BET = 10010,
7
+ // Winner with draw - for hockey
8
+ WINNER2 = 10011,
9
+ // Winner (placeholder)
10
+ WINNER3 = 10012,
11
+ // Who will score first
12
+ FIRST_SCORE = 10019,
13
+ // Who will score last
14
+ LAST_SCORE = 10020,
15
+ // Clean sheet per team
16
+ CLEAN_SHEET_HOME_TEAM = 10141,
17
+ CLEAN_SHEET_AWAY_TEAM = 10142,
18
+ // Winner period - half for soccer, quarter for basketball
19
+ FIRST_PERIOD_WINNER = 10021,
20
+ SECOND_PERIOD_WINNER = 10022,
21
+ THIRD_PERIOD_WINNER = 10023,
22
+ FOURTH_PERIOD_WINNER = 10024,
23
+ FIFTH_PERIOD_WINNER = 10025,
24
+ SIXTH_PERIOD_WINNER = 10026,
25
+ SEVENTH_PERIOD_WINNER = 10027,
26
+ EIGHTH_PERIOD_WINNER = 10028,
27
+ NINTH_PERIOD_WINNER = 10029,
28
+ // Winner period - half for basketball
29
+ FIRST_PERIOD_WINNER2 = 10051,
30
+ SECOND_PERIOD_WINNER2 = 10052,
31
+ THIRD_PERIOD_WINNER2 = 10053,
32
+ FOURTH_PERIOD_WINNER2 = 10054,
33
+ FIFTH_PERIOD_WINNER2 = 10055,
34
+ SIXTH_PERIOD_WINNER2 = 10056,
35
+ SEVENTH_PERIOD_WINNER2 = 10057,
36
+ EIGHTH_PERIOD_WINNER2 = 10058,
37
+ NINTH_PERIOD_WINNER2 = 10059,
38
+ // Winner without draw period - half for soccer, quarter for basketball
39
+ FIRST_PERIOD_DRAW_NO_BET = 10121,
40
+ SECOND_PERIOD_DRAW_NO_BET = 10122,
41
+ THIRD_PERIOD_DRAW_NO_BET = 10123,
42
+ FOURTH_PERIOD_DRAW_NO_BET = 10124,
43
+
44
+ // Spread (handicap)
45
+ SPREAD = 10001,
46
+ // Spread (handicap) - sets for tennis
47
+ SPREAD2 = 10013,
48
+ // Spread period - half for soccer, quarter for basketball
49
+ FIRST_PERIOD_SPREAD = 10041,
50
+ SECOND_PERIOD_SPREAD = 10042,
51
+ THIRD_PERIOD_SPREAD = 10043,
52
+ FOURTH_PERIOD_SPREAD = 10044,
53
+ FIFTH_PERIOD_SPREAD = 10045,
54
+ SIXTH_PERIOD_SPREAD = 10046,
55
+ SEVENTH_PERIOD_SPREAD = 10047,
56
+ EIGHTH_PERIOD_SPREAD = 10048,
57
+ NINTH_PERIOD_SPREAD = 10049,
58
+ // Spread period - half for basketball
59
+ FIRST_PERIOD_SPREAD2 = 10071,
60
+ SECOND_PERIOD_SPREAD2 = 10072,
61
+ THIRD_PERIOD_SPREAD2 = 10073,
62
+ FOURTH_PERIOD_SPREAD2 = 10074,
63
+ FIFTH_PERIOD_SPREAD2 = 10075,
64
+ SIXTH_PERIOD_SPREAD2 = 10076,
65
+ SEVENTH_PERIOD_SPREAD2 = 10077,
66
+ EIGHTH_PERIOD_SPREAD2 = 10078,
67
+ NINTH_PERIOD_SPREAD2 = 10079,
68
+
69
+ // Total
70
+ TOTAL = 10002,
71
+ // Total - sets for tennis
72
+ TOTAL2 = 10014,
73
+ // Total period - half for soccer, quarter for basketball
74
+ FIRST_PERIOD_TOTAL = 10031,
75
+ SECOND_PERIOD_TOTAL = 10032,
76
+ THIRD_PERIOD_TOTAL = 10033,
77
+ FOURTH_PERIOD_TOTAL = 10034,
78
+ FIFTH_PERIOD_TOTAL = 10035,
79
+ SIXTH_PERIOD_TOTAL = 10036,
80
+ SEVENTH_PERIOD_TOTAL = 10037,
81
+ EIGHTH_PERIOD_TOTAL = 10038,
82
+ NINTH_PERIOD_TOTAL = 10039,
83
+ // Total period - half for basketball
84
+ FIRST_PERIOD_TOTAL2 = 10061,
85
+ SECOND_PERIOD_TOTAL2 = 10062,
86
+ THIRD_PERIOD_TOTAL2 = 10063,
87
+ FOURTH_PERIOD_TOTAL2 = 10064,
88
+ FIFTH_PERIOD_TOTAL2 = 10065,
89
+ SIXTH_PERIOD_TOTAL2 = 10066,
90
+ SEVENTH_PERIOD_TOTAL2 = 10067,
91
+ EIGHTH_PERIOD_TOTAL2 = 10068,
92
+ NINTH_PERIOD_TOTAL2 = 10069,
93
+ // Total per team
94
+ TOTAL_HOME_TEAM = 10017,
95
+ TOTAL_AWAY_TEAM = 10018,
96
+ // Total per team period - half for soccer
97
+ FIRST_PERIOD_TOTAL_HOME_TEAM = 10111,
98
+ FIRST_PERIOD_TOTAL_AWAY_TEAM = 10112,
99
+ SECOND_PERIOD_TOTAL_HOME_TEAM = 10211,
100
+ SECOND_PERIOD_TOTAL_AWAY_TEAM = 10212,
101
+ // Total per team period - half for basketball
102
+ FIRST_PERIOD_TOTAL2_HOME_TEAM = 10118,
103
+ FIRST_PERIOD_TOTAL2_AWAY_TEAM = 10119,
104
+ SECOND_PERIOD_TOTAL2_HOME_TEAM = 10218,
105
+ SECOND_PERIOD_TOTAL2_AWAY_TEAM = 10219,
106
+
107
+ // Total odd/even
108
+ TOTAL_ODD_EVEN = 10005,
109
+ // Total odd/even period - half for soccer, quarter for basketball
110
+ FIRST_PERIOD_TOTAL_ODD_EVEN = 10081,
111
+ SECOND_PERIOD_TOTAL_ODD_EVEN = 10082,
112
+ THIRD_PERIOD_TOTAL_ODD_EVEN = 10083,
113
+ FOURTH_PERIOD_TOTAL_ODD_EVEN = 10084,
114
+ FIFTH_PERIOD_TOTAL_ODD_EVEN = 10085,
115
+ SIXTH_PERIOD_TOTAL_ODD_EVEN = 10086,
116
+ SEVENTH_PERIOD_TOTAL_ODD_EVEN = 10087,
117
+ EIGHTH_PERIOD_TOTAL_ODD_EVEN = 10088,
118
+ NINTH_PERIOD_TOTAL_ODD_EVEN = 10089,
119
+ // Total odd/even period - half for basketball
120
+ FIRST_PERIOD_TOTAL2_ODD_EVEN = 10091,
121
+ SECOND_PERIOD_TOTAL2_ODD_EVEN = 10092,
122
+ THIRD_PERIOD_TOTAL2_ODD_EVEN = 10093,
123
+ FOURTH_PERIOD_TOTAL2_ODD_EVEN = 10094,
124
+ FIFTH_PERIOD_TOTAL2_ODD_EVEN = 10095,
125
+ SIXTH_PERIOD_TOTAL2_ODD_EVEN = 10096,
126
+ SEVENTH_PERIOD_TOTAL2_ODD_EVEN = 10097,
127
+ EIGHTH_PERIOD_TOTAL2_ODD_EVEN = 10098,
128
+ NINTH_PERIOD_TOTAL2_ODD_EVEN = 10099,
129
+
130
+ // Double chance
131
+ DOUBLE_CHANCE = 10003,
132
+ // Double chance period - half for soccer
133
+ FIRST_PERIOD_DOUBLE_CHANCE = 10015,
134
+ SECOND_PERIOD_DOUBLE_CHANCE = 10016,
135
+
136
+ // Both teams to score
137
+ BOTH_TEAMS_TO_SCORE = 10009,
138
+ // Both teams to score period - half for soccer
139
+ FIRST_PERIOD_BOTH_TEAMS_TO_SCORE = 10101,
140
+ SECOND_PERIOD_BOTH_TEAMS_TO_SCORE = 10102,
141
+ THIRD_PERIOD_BOTH_TEAMS_TO_SCORE = 10103,
142
+ FOURTH_PERIOD_BOTH_TEAMS_TO_SCORE = 10104,
143
+ FIFTH_PERIOD_BOTH_TEAMS_TO_SCORE = 10105,
144
+ SIXTH_PERIOD_BOTH_TEAMS_TO_SCORE = 10106,
145
+ SEVENTH_PERIOD_BOTH_TEAMS_TO_SCORE = 10107,
146
+ EIGHTH_PERIOD_BOTH_TEAMS_TO_SCORE = 10108,
147
+ NINTH_PERIOD_BOTH_TEAMS_TO_SCORE = 10109,
148
+
149
+ // Combined positions
150
+ WINNER_TOTAL = 10004,
151
+ HALFTIME_FULLTIME = 10006,
152
+ GOALS = 10007,
153
+ HALFTIME_FULLTIME_GOALS = 10008,
154
+
155
+ // Who will qualify for the next round
156
+ WHO_WILL_QUALIFY = 10130,
157
+ // Will there be overtime in the game
158
+ WILL_THERE_BE_OVERTIME = 10131,
159
+ // No runs in the first inning
160
+ FIRST_INNING_NO_RUNS = 10132,
161
+
162
+ // Player props
163
+ PLAYER_PROPS_HOMERUNS = 11010,
164
+ PLAYER_PROPS_BASES = 11011,
165
+ PLAYER_PROPS_STRIKEOUTS = 11019,
166
+ PLAYER_PROPS_PASSING_YARDS = 11051,
167
+ PLAYER_PROPS_PASSING_TOUCHDOWNS = 11052,
168
+ PLAYER_PROPS_RUSHING_YARDS = 11053,
169
+ PLAYER_PROPS_RECEIVING_YARDS = 11057,
170
+ PLAYER_PROPS_TOUCHDOWNS_SCORER = 11055,
171
+ PLAYER_PROPS_FIELD_GOALS_MADE = 11060,
172
+ PLAYER_PROPS_PITCHER_HITS_ALLOWED = 11047,
173
+ PLAYER_PROPS_POINTS = 11029,
174
+ PLAYER_PROPS_SHOTS = 11097,
175
+ PLAYER_PROPS_GOALS = 11086,
176
+ PLAYER_PROPS_HITS_RECORDED = 11012,
177
+ PLAYER_PROPS_REBOUNDS = 11035,
178
+ PLAYER_PROPS_ASSISTS = 11039,
179
+ PLAYER_PROPS_DOUBLE_DOUBLE = 11087,
180
+ PLAYER_PROPS_TRIPLE_DOUBLE = 11088,
181
+ PLAYER_PROPS_RECEPTIONS = 11058,
182
+ PLAYER_PROPS_FIRST_TOUCHDOWN = 11049,
183
+ PLAYER_PROPS_LAST_TOUCHDOWN = 11056,
184
+ PLAYER_PROPS_3PTS_MADE = 11038,
185
+ PLAYER_PROPS_BLOCKS = 11098,
186
+ PLAYER_PROPS_OVER_GOALS = 11100,
187
+
188
+ PLAYER_PROPS_INTERCEPTIONS = 11202,
189
+ PLAYER_PROPS_KICKING_POINTS = 11203,
190
+ PLAYER_PROPS_PASSING_ATTEMPTS = 11204,
191
+ PLAYER_PROPS_PASSING_COMPLETIONS = 11205,
192
+ PLAYER_PROPS_TOUCHDOWNS = 11206,
193
+
194
+ PLAYER_PROPS_SACKS = 11207,
195
+ PLAYER_PROPS_PASSING_RUSHING = 11208,
196
+ PLAYER_PROPS_RUSHING_RECEIVING = 11209,
197
+ PLAYER_PROPS_LONGEST_RECEPTION = 11210,
198
+ PLAYER_PROPS_EXTRA_POINTS = 11211,
199
+ PLAYER_PROPS_TACKLES = 11212,
200
+
201
+ PLAYER_PROPS_OUTS = 11213,
202
+ PLAYER_PROPS_RBIS = 11214,
203
+ PLAYER_PROPS_HITS_RUNS_RBIS = 11215,
204
+ PLAYER_PROPS_EARNED_RUNS = 11216,
205
+ PLAYER_PROPS_DOUBLES = 11217,
206
+ PLAYER_PROPS_BATTING_WALKS = 11218,
207
+ PLAYER_PROPS_BATTING_STRIKEOUTS = 11219,
208
+ PLAYER_PROPS_SINGLES = 11220,
209
+ PLAYER_PROPS_STOLEN_BASES = 11221,
210
+ PLAYER_PROPS_RUNS = 11222,
211
+ PLAYER_PROPS_WALKS = 11223,
212
+ PLAYER_PROPS_POINTS_ASSISTS = 11225,
213
+ PLAYER_PROPS_POINTS_REBOUNDS = 11226,
214
+ PLAYER_PROPS_POINTS_REBOUNDS_ASSISTS = 11227,
215
+ PLAYER_PROPS_REBOUNDS_ASSISTS = 11228,
216
+ PLAYER_PROPS_STEALS = 11229,
217
+ PLAYER_PROPS_STEALS_BLOCKS = 11230,
218
+ PLAYER_PROPS_LONGEST_RUSH = 11241,
219
+
220
+ PLAYER_PROPS_CARD_RECEIVER = 11234,
221
+ PLAYER_PROPS_RED_CARD_RECEIVER = 11235,
222
+ PLAYER_PROPS_FIRST_SCORER = 11236,
223
+ PLAYER_PROPS_LAST_SCORER = 11237,
224
+ PLAYER_PROPS_SHOTS_ON_TARGET = 11238,
225
+ PLAYER_PROPS_TOTAL_SHOTS = 11239,
226
+
227
+ // Tennis player props market types
228
+ PLAYER_PROPS_ACES = 11231,
229
+ PLAYER_PROPS_BREAK_POINTS_WON = 11232,
230
+ PLAYER_PROPS_DOUBLE_FAULTS = 11240,
231
+
232
+ // UFC market types
233
+ WINNING_ROUND = 10151,
234
+ GO_THE_DISTANCE = 10154,
235
+ WILL_FIGHT_END_IN_FIRST_MINUTE = 10155,
236
+ WILL_POINT_BE_DEDUCTED = 10156,
237
+ ENDING_METHOD = 10157,
238
+ METHOD_OF_VICTORY = 10158,
239
+ // UFC player props market types
240
+ PLAYER_PROPS_UFC_TAKEDOWNS_LANDED = 11200,
241
+ PLAYER_PROPS_UFC_SIGNIFICANT_STRIKES_LANDED = 11201,
242
+
243
+ // US election market types
244
+ US_ELECTION_POPULAR_VOTE_WINNER = 10900,
245
+ US_ELECTION_WINNING_PARTY = 10901,
246
+ US_ELECTION_WINNING_PARTY_ARIZONA = 10902,
247
+ US_ELECTION_WINNING_PARTY_GEORGIA = 10903,
248
+ US_ELECTION_WINNING_PARTY_MICHIGAN = 10904,
249
+ US_ELECTION_WINNING_PARTY_NEVADA = 10905,
250
+ US_ELECTION_WINNING_PARTY_PENNSYLVANIA = 10906,
251
+ US_ELECTION_WINNING_PARTY_WINSCONSIN = 10907,
252
+ US_ELECTION_WINNING_PARTY_NORTH_CAROLINA = 10908,
253
+
254
+ // Correct score
255
+ CORRECT_SCORE = 10100,
256
+
257
+ // Total exact per team
258
+ TOTAL_EXACT_HOME_TEAM = 10143,
259
+ TOTAL_EXACT_AWAY_TEAM = 10144,
260
+ // Total exact per team - half for soccer
261
+ FIRST_PERIOD_TOTAL_EXACT_HOME_TEAM = 10145,
262
+ FIRST_PERIOD_TOTAL_EXACT_AWAY_TEAM = 10146,
263
+ SECOND_PERIOD_TOTAL_EXACT_HOME_TEAM = 10147,
264
+ SECOND_PERIOD_TOTAL_EXACT_AWAY_TEAM = 10148,
265
+
266
+ // Futures
267
+ LEAGUE_WINNER = 13001,
268
+ MVP = 13002,
269
+ CUP_WINNER = 13003,
270
+ TO_MAKE_FINAL_FOUR = 13005,
271
+
272
+ // Spread (handicap) corners
273
+ SPREAD_CORNERS = 10221,
274
+ // Total corners
275
+ TOTAL_CORNERS = 10222,
276
+ // Total corners per team
277
+ TOTAL_CORNERS_HOME_TEAM = 10223,
278
+ TOTAL_CORNERS_AWAY_TEAM = 10224,
279
+ // Total corners odd/even
280
+ TOTAL_CORNERS_ODD_EVEN = 10225,
281
+ // Total corners period - half for soccer
282
+ FIRST_PERIOD_TOTAL_CORNERS = 10226,
283
+ SECOND_PERIOD_TOTAL_CORNERS = 10227,
284
+ // Total corners per team period - half for soccer
285
+ FIRST_PERIOD_TOTAL_CORNERS_HOME_TEAM = 10228,
286
+ FIRST_PERIOD_TOTAL_CORNERS_AWAY_TEAM = 10229,
287
+ SECOND_PERIOD_TOTAL_CORNERS_HOME_TEAM = 10230,
288
+ SECOND_PERIOD_TOTAL_CORNERS_AWAY_TEAM = 10231,
289
+ // Spread corners period - half for soccer
290
+ FIRST_PERIOD_SPREAD_CORNERS = 10232,
291
+ SECOND_PERIOD_SPREAD_CORNERS = 10233,
292
+ // Most corners
293
+ MOST_CORNERS = 10234,
294
+ // Most corners period - half for soccer
295
+ FIRST_PERIOD_MOST_CORNERS = 10235,
296
+ SECOND_PERIOD_MOST_CORNERS = 10236,
297
+
298
+ // Spread (handicap) cards
299
+ SPREAD_CARDS = 10241,
300
+ // Total cards
301
+ TOTAL_CARDS = 10242,
302
+ // Total cards per team
303
+ TOTAL_CARDS_HOME_TEAM = 10243,
304
+ TOTAL_CARDS_AWAY_TEAM = 10244,
305
+ // Total red cards
306
+ TOTA_RED_CARDS = 10245,
307
+ // Most cards
308
+ MOST_CARDS = 10246,
309
+ //First/last card
310
+ FIRST_CARD = 10247,
311
+ LAST_CARD = 10248,
5
312
  }
@@ -0,0 +1,14 @@
1
+ export type SgpBlocker = {
2
+ blockerGroup: number;
3
+ blockerNumber: number;
4
+ blockerTypeIds: number[];
5
+ combineWithTypeIds: number[];
6
+ message: string;
7
+ };
8
+
9
+ export type SgpBlockerMarket = {
10
+ typeId: number;
11
+ playerId: number;
12
+ line: number;
13
+ position: number;
14
+ };
@@ -1,4 +1,320 @@
1
- import { WINNER_MARKET_TYPES } from '../constants/marketTypes';
1
+ import {
2
+ AWAY_TEAM_TOTAL_MARKET_TYPES,
3
+ BOTH_TEAMS_TO_SCORE_MARKET_TYPES,
4
+ COMBINED_POSITIONS_MARKET_TYPES,
5
+ CORRECT_SCORE_MARKET_TYPES,
6
+ HOME_TEAM_TOTAL_MARKET_TYPES,
7
+ ONE_SIDE_PLAYER_PROPS_MARKET_TYPES,
8
+ OTHER_YES_NO_MARKET_TYPES,
9
+ PLAYER_PROPS_MARKET_TYPES,
10
+ SGP_NOT_SUPPORTED_MARKET_TYPES,
11
+ SPREAD_MARKET_TYPES,
12
+ TOTAL_EXACT_MARKET_TYPES,
13
+ TOTAL_MARKET_TYPES,
14
+ TOTAL_ODD_EVEN_MARKET_TYPES,
15
+ UFC_ENDING_METHOD_MARKET_TYPES,
16
+ UFC_METHOD_OF_VICTORY_MARKET_TYPES,
17
+ UFC_SPECIFIC_MARKET_TYPES,
18
+ UFC_WINNING_ROUND_MARKET_TYPES,
19
+ WINNER_MARKET_TYPES,
20
+ YES_NO_PLAYER_PROPS_MARKET_TYPES,
21
+ } from '../constants/marketTypes';
2
22
  import { MarketType } from '../enums/marketTypes';
23
+ import { SgpBlocker, SgpBlockerMarket } from '../types/sgp';
3
24
 
4
25
  export const isWinnerMarket = (marketType: MarketType) => WINNER_MARKET_TYPES.includes(marketType);
26
+
27
+ export const isTotalMarket = (marketType: MarketType) => TOTAL_MARKET_TYPES.includes(marketType);
28
+ export const isHomeTeamTotalMarket = (marketType: MarketType) => HOME_TEAM_TOTAL_MARKET_TYPES.includes(marketType);
29
+ export const isAwayTeamTotalMarket = (marketType: MarketType) => AWAY_TEAM_TOTAL_MARKET_TYPES.includes(marketType);
30
+ export const isTotalOddEvenMarket = (marketType: MarketType) => TOTAL_ODD_EVEN_MARKET_TYPES.includes(marketType);
31
+ export const isTotalExactMarket = (marketType: MarketType) => TOTAL_EXACT_MARKET_TYPES.includes(marketType);
32
+
33
+ export const isSpreadMarket = (marketType: MarketType) => SPREAD_MARKET_TYPES.includes(marketType);
34
+
35
+ export const isPlayerPropsMarket = (marketType: MarketType) => PLAYER_PROPS_MARKET_TYPES.includes(marketType);
36
+
37
+ export const isCombinedPositionsMarket = (marketType: MarketType) =>
38
+ COMBINED_POSITIONS_MARKET_TYPES.includes(marketType);
39
+
40
+ export const isOneSidePlayerPropsMarket = (marketType: MarketType) =>
41
+ ONE_SIDE_PLAYER_PROPS_MARKET_TYPES.includes(marketType);
42
+
43
+ export const isYesNoPlayerPropsMarket = (marketType: MarketType) =>
44
+ YES_NO_PLAYER_PROPS_MARKET_TYPES.includes(marketType);
45
+
46
+ export const isBothTeamsToScoreMarket = (marketType: MarketType) =>
47
+ BOTH_TEAMS_TO_SCORE_MARKET_TYPES.includes(marketType);
48
+
49
+ export const isOtherYesNoMarket = (marketType: MarketType) => OTHER_YES_NO_MARKET_TYPES.includes(marketType);
50
+
51
+ export const isCorrectScoreMarket = (marketType: MarketType) => CORRECT_SCORE_MARKET_TYPES.includes(marketType);
52
+
53
+ export const isUfcSpecificMarket = (marketType: MarketType) => UFC_SPECIFIC_MARKET_TYPES.includes(marketType);
54
+ export const isUfcWinningMarket = (marketType: MarketType) => UFC_WINNING_ROUND_MARKET_TYPES.includes(marketType);
55
+ export const isEndingUfcMarket = (marketType: MarketType) => UFC_ENDING_METHOD_MARKET_TYPES.includes(marketType);
56
+ export const isUfcVictoryMarket = (marketType: MarketType) => UFC_METHOD_OF_VICTORY_MARKET_TYPES.includes(marketType);
57
+
58
+ export const isTotalOrSpreadWithWholeLine = (marketType: MarketType, line: number) =>
59
+ (isTotalMarket(marketType) || isSpreadMarket(marketType)) && line % 1 === 0;
60
+
61
+ export const isMarketNotSupportedForSgp = (marketType: MarketType) =>
62
+ SGP_NOT_SUPPORTED_MARKET_TYPES.includes(marketType);
63
+
64
+ /*
65
+ Blocking rules for SGP markets combination:
66
+
67
+ 0. Block if markets have same type id and player id, block two markets on the SGP in same direction (both over or both under)
68
+ 1. Block halftime-fulltime combining with moneyline
69
+ 2. Block same playerId and same typeId for points and PR or PRA combinations
70
+ Block DD and Triple Double on a player with any other prop on that player
71
+ Disalowed props combos (for same playerID > 0):
72
+ - Triple double not allowed with any other prop
73
+ - Double double not allowed with any other prop
74
+ - PRA not allowed with PR, PA and points, rebounds or assist props
75
+ - PR not allowed with points or rebounds
76
+ - PA not allowed with points or assists
77
+ 3. Block moneyline and spread on the same team
78
+ Disalowed props for same position (player ID is 0):
79
+ - Moneyline and Spread full time
80
+ - Moneyline and Spread first period
81
+ - Moneyline and Spread second period
82
+ - Moneyline and Spread secondary first period ...
83
+ - Both teams to score on football and over goals per team
84
+ 4. Block moneyline with betting on each period individually on the same team
85
+ (e.g. betting on a team to win each period and win moneyline, the first implied the other)
86
+ 5. Block over points on each period and over on the whole game
87
+ */
88
+
89
+ const getBlockers = (sgpBlockers: SgpBlocker[], blockerGroup: number) =>
90
+ sgpBlockers.filter((data) => data.blockerGroup === blockerGroup);
91
+
92
+ const getBlocker = (sgpBlockers: SgpBlocker[], blockerGroup: number, blockerNumber: number) =>
93
+ sgpBlockers.find((data) => data.blockerGroup === blockerGroup && data.blockerNumber === blockerNumber);
94
+
95
+ // Rule #0
96
+ const validateMarketsWithSameDirection = (markets: SgpBlockerMarket[], sgpBlockers: SgpBlocker[]) => {
97
+ const BLOCKER_GROUP = 0;
98
+
99
+ const blockers = getBlockers(sgpBlockers, BLOCKER_GROUP);
100
+
101
+ let message = '';
102
+
103
+ if (blockers.length) {
104
+ const blockerNumber = 0;
105
+
106
+ for (let index = 0; index < markets.length; index++) {
107
+ const market = markets[index];
108
+
109
+ const typeId = market.typeId;
110
+ const playerId = market.playerId;
111
+ const position = market.position;
112
+
113
+ const otherMarkets = markets.filter((_, i) => i !== index);
114
+ const isSameMarketDirection = otherMarkets.some(
115
+ (otherMarket) =>
116
+ otherMarket.typeId === typeId &&
117
+ otherMarket.playerId === playerId &&
118
+ otherMarket.position === position
119
+ );
120
+
121
+ if (isSameMarketDirection) {
122
+ message =
123
+ getBlocker(sgpBlockers, BLOCKER_GROUP, blockerNumber)?.message ||
124
+ `Blocker group ${BLOCKER_GROUP}, #${blockerNumber}`;
125
+ break;
126
+ }
127
+ }
128
+ }
129
+
130
+ return message;
131
+ };
132
+
133
+ // Rule #1
134
+ const validateMoneylineWithHalfOrFullTimeMarkets = (markets: SgpBlockerMarket[], sgpBlockers: SgpBlocker[]) => {
135
+ const BLOCKER_GROUP = 1;
136
+
137
+ const blockers = getBlockers(sgpBlockers, BLOCKER_GROUP);
138
+
139
+ let message = '';
140
+
141
+ for (let blockerIndex = 0; blockerIndex < blockers.length; blockerIndex++) {
142
+ const blocker = getBlocker(blockers, BLOCKER_GROUP, blockerIndex);
143
+
144
+ if (blocker) {
145
+ const hasMoneyline = markets.some((market) => blocker.blockerTypeIds.includes(market.typeId));
146
+ const hasHalfFullTime = markets.some((market) => blocker.combineWithTypeIds.includes(market.typeId));
147
+
148
+ if (hasMoneyline && hasHalfFullTime) {
149
+ message = blocker?.message || `Blocker group ${BLOCKER_GROUP}, #${blockerIndex}`;
150
+ break;
151
+ }
152
+ }
153
+ }
154
+
155
+ return message;
156
+ };
157
+
158
+ // Rule #2
159
+ const validatePlayerPropsCombinations = (markets: SgpBlockerMarket[], sgpBlockers: SgpBlocker[]) => {
160
+ const BLOCKER_GROUP = 2;
161
+
162
+ const blockers = getBlockers(sgpBlockers, BLOCKER_GROUP);
163
+
164
+ let message = '';
165
+
166
+ for (let blockerIndex = 0; blockerIndex < blockers.length; blockerIndex++) {
167
+ const blocker = getBlocker(blockers, BLOCKER_GROUP, blockerIndex);
168
+
169
+ if (blocker) {
170
+ for (let marketIndex = 0; marketIndex < markets.length; marketIndex++) {
171
+ const market = markets[marketIndex];
172
+ const otherMarkets = markets.filter((_, i) => i !== marketIndex);
173
+
174
+ const hasBlockerTypeId = blocker.blockerTypeIds.includes(market.typeId);
175
+ if (hasBlockerTypeId) {
176
+ const hasCombineWithTypeIds = otherMarkets.some(
177
+ (otherMarket) =>
178
+ (!blocker.combineWithTypeIds.length ||
179
+ blocker.combineWithTypeIds.includes(otherMarket.typeId)) &&
180
+ otherMarket.playerId > 0 &&
181
+ otherMarket.playerId === market.playerId
182
+ );
183
+ if (hasCombineWithTypeIds) {
184
+ message = blocker?.message || `Blocker group ${BLOCKER_GROUP}, #${blockerIndex}`;
185
+ break;
186
+ }
187
+ }
188
+ }
189
+ }
190
+ }
191
+
192
+ return message;
193
+ };
194
+
195
+ // Rule #3
196
+ const validateMoneylineWithSpread = (markets: SgpBlockerMarket[], sgpBlockers: SgpBlocker[]) => {
197
+ const BLOCKER_GROUP = 3;
198
+
199
+ const blockers = getBlockers(sgpBlockers, BLOCKER_GROUP);
200
+
201
+ let message = '';
202
+
203
+ for (let blockerIndex = 0; blockerIndex < blockers.length; blockerIndex++) {
204
+ const blocker = getBlocker(blockers, BLOCKER_GROUP, blockerIndex);
205
+
206
+ if (blocker) {
207
+ for (let marketIndex = 0; marketIndex < markets.length; marketIndex++) {
208
+ const market = markets[marketIndex];
209
+ const otherMarkets = markets.filter((_, i) => i !== marketIndex);
210
+
211
+ const hasBlockerTypeId = blocker.blockerTypeIds.includes(market.typeId);
212
+ if (hasBlockerTypeId) {
213
+ const hasCombineWithTypeIds = otherMarkets.some(
214
+ (otherMarket) =>
215
+ blocker.combineWithTypeIds.length &&
216
+ blocker.combineWithTypeIds.includes(otherMarket.typeId) &&
217
+ otherMarket.playerId === 0 &&
218
+ otherMarket.position === market.position
219
+ );
220
+ if (hasCombineWithTypeIds) {
221
+ message = blocker?.message || `Blocker group ${BLOCKER_GROUP}, #${blockerIndex}`;
222
+ break;
223
+ }
224
+ }
225
+ }
226
+ }
227
+ }
228
+
229
+ return message;
230
+ };
231
+
232
+ // Rule #4
233
+ const validateMoneylineWithEachPeriod = (markets: SgpBlockerMarket[], sgpBlockers: SgpBlocker[]) => {
234
+ const BLOCKER_GROUP = 4;
235
+
236
+ const blockers = getBlockers(sgpBlockers, BLOCKER_GROUP);
237
+
238
+ let message = '';
239
+
240
+ for (let blockerIndex = 0; blockerIndex < blockers.length; blockerIndex++) {
241
+ const blocker = getBlocker(blockers, BLOCKER_GROUP, blockerIndex);
242
+
243
+ if (blocker) {
244
+ for (let marketIndex = 0; marketIndex < markets.length; marketIndex++) {
245
+ const market = markets[marketIndex];
246
+ const otherMarkets = markets.filter((_, i) => i !== marketIndex);
247
+
248
+ const hasBlockerTypeId = blocker.blockerTypeIds.includes(market.typeId);
249
+ if (hasBlockerTypeId) {
250
+ const hasCombineWithTypeIds = otherMarkets.some(
251
+ (otherMarket) =>
252
+ blocker.combineWithTypeIds.length &&
253
+ blocker.combineWithTypeIds.every((combineTypeId) => combineTypeId === otherMarket.typeId) &&
254
+ otherMarket.playerId === 0 &&
255
+ otherMarket.position === market.position
256
+ );
257
+ if (hasCombineWithTypeIds) {
258
+ message = blocker?.message || `Blocker group ${BLOCKER_GROUP}, #${blockerIndex}`;
259
+ break;
260
+ }
261
+ }
262
+ }
263
+ }
264
+ }
265
+
266
+ return message;
267
+ };
268
+
269
+ // Rule #5
270
+ const validateTotalWithEachPeriod = (markets: SgpBlockerMarket[], sgpBlockers: SgpBlocker[]) => {
271
+ const BLOCKER_GROUP = 5;
272
+
273
+ const blockers = getBlockers(sgpBlockers, BLOCKER_GROUP);
274
+
275
+ let message = '';
276
+
277
+ for (let blockerIndex = 0; blockerIndex < blockers.length; blockerIndex++) {
278
+ const blocker = getBlocker(blockers, BLOCKER_GROUP, blockerIndex);
279
+
280
+ if (blocker) {
281
+ for (let marketIndex = 0; marketIndex < markets.length; marketIndex++) {
282
+ const market = markets[marketIndex];
283
+ const otherMarkets = markets.filter((_, i) => i !== marketIndex);
284
+
285
+ const hasBlockerTypeId = blocker.blockerTypeIds.includes(market.typeId);
286
+ if (hasBlockerTypeId) {
287
+ const hasCombineWithTypeIds = otherMarkets.some(
288
+ (otherMarket) =>
289
+ blocker.combineWithTypeIds.length &&
290
+ blocker.combineWithTypeIds.every((combineTypeId) => combineTypeId === otherMarket.typeId) &&
291
+ otherMarket.playerId === 0
292
+ );
293
+ if (hasCombineWithTypeIds) {
294
+ message = blocker?.message || `Blocker group ${BLOCKER_GROUP}, #${blockerIndex}`;
295
+ break;
296
+ }
297
+ }
298
+ }
299
+ }
300
+ }
301
+
302
+ return message;
303
+ };
304
+
305
+ export const getSgpMarketsCombinationAllowed = (markets: SgpBlockerMarket[], sgpBlockers: SgpBlocker[]) => {
306
+ const message = sgpBlockers.length
307
+ ? validateMarketsWithSameDirection(markets, sgpBlockers) ||
308
+ validateMoneylineWithHalfOrFullTimeMarkets(markets, sgpBlockers) ||
309
+ validatePlayerPropsCombinations(markets, sgpBlockers) ||
310
+ validateMoneylineWithSpread(markets, sgpBlockers) ||
311
+ validateMoneylineWithEachPeriod(markets, sgpBlockers) ||
312
+ validateTotalWithEachPeriod(markets, sgpBlockers) ||
313
+ ''
314
+ : '';
315
+
316
+ return {
317
+ isAllowed: !message,
318
+ message,
319
+ };
320
+ };