shufflecom-calculations 3.1.2 → 3.2.1

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.
@@ -1,2 +1,3 @@
1
1
  /// <reference types="node" />
2
+ /// <reference types="node" />
2
3
  export declare function fisherYatesShuffle(array: number[], hash: Buffer): number[];
@@ -209,8 +209,8 @@ export declare enum Language {
209
209
  id = "id",
210
210
  ar = "ar",
211
211
  no = "no",
212
- sv = "sv",
213
- it = "it"
212
+ it = "it",
213
+ sv = "sv"
214
214
  }
215
215
  export declare enum SportsMatchPhaseWinner {
216
216
  HOME = "HOME",
@@ -155,8 +155,8 @@ var Language;
155
155
  Language["id"] = "id";
156
156
  Language["ar"] = "ar";
157
157
  Language["no"] = "no";
158
- Language["sv"] = "sv";
159
158
  Language["it"] = "it";
159
+ Language["sv"] = "sv";
160
160
  })(Language || (exports.Language = Language = {}));
161
161
  var SportsMatchPhaseWinner;
162
162
  (function (SportsMatchPhaseWinner) {
@@ -1 +1 @@
1
- {"version":3,"file":"sports.types.js","sourceRoot":"","sources":["../../src/utils/sports.types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sports.types.js","sourceRoot":"","sources":["../../src/utils/sports.types.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "shufflecom-calculations",
3
- "version": "3.1.2",
3
+ "version": "3.2.1",
4
4
  "description": "",
5
5
  "types": "lib/index.d.ts",
6
6
  "main": "lib/index.js",
@@ -14,5 +14,5 @@
14
14
  },
15
15
  "author": "",
16
16
  "license": "ISC",
17
- "gitHead": "9572d9b309261cc880bac2a9a83d396a193bd70a"
17
+ "gitHead": "c4fd3f12c7694800e30b2cf82062547adfa01221"
18
18
  }
@@ -431,13 +431,13 @@ describe('Baccarat', () => {
431
431
  expect(multiplier.toNumber()).toBe(26);
432
432
  });
433
433
 
434
- it('pays 200:1 when both hands have a perfect pair', () => {
434
+ it('pays 25:1 when both hands have a perfect pair', () => {
435
435
  const playerCard = ci('4', Suits.CLUBS);
436
436
  const bankerCard = ci('K', Suits.DIAMONDS);
437
437
  const result = mockResult([playerCard, playerCard], [bankerCard, bankerCard], 8, 0, BaccaratOutcome.PLAYER_WIN);
438
438
  const { payout, multiplier } = Baccarat.calcBetPayouts([bet(BaccaratBetType.PERFECT_PAIR, 10)], result);
439
- expect(payout.toNumber()).toBe(2010);
440
- expect(multiplier.toNumber()).toBe(201);
439
+ expect(payout.toNumber()).toBe(260);
440
+ expect(multiplier.toNumber()).toBe(26);
441
441
  });
442
442
 
443
443
  it('loses when player has a non-perfect pair and banker does not have a pair', () => {
@@ -684,8 +684,8 @@ describe('Baccarat', () => {
684
684
  [bet(BaccaratBetType.PLAYER_PAIR, 10), bet(BaccaratBetType.BANKER_PAIR, 10), bet(BaccaratBetType.PERFECT_PAIR, 10)],
685
685
  result,
686
686
  );
687
- expect(payout.toNumber()).toBe(2250);
688
- expect(multiplier.toNumber()).toBe(75);
687
+ expect(payout.toNumber()).toBe(500);
688
+ expect(multiplier.toNumber()).toBeCloseTo(16.67, 2);
689
689
  });
690
690
 
691
691
  it('player pair + banker pair + either pair + tie bet + player push on natural tie: pair and tie win, player pushes', () => {
@@ -793,6 +793,232 @@ describe('Baccarat', () => {
793
793
  });
794
794
  });
795
795
 
796
+ describe('getWinningBetTypes', () => {
797
+ describe('main bets', () => {
798
+ it('returns PLAYER on player win', () => {
799
+ const result = mockResult(
800
+ [ci('6', Suits.CLUBS), ci('3', Suits.CLUBS)],
801
+ [ci('2', Suits.CLUBS), ci('3', Suits.DIAMONDS)],
802
+ 9,
803
+ 5,
804
+ BaccaratOutcome.PLAYER_WIN,
805
+ );
806
+ expect(Baccarat.getWinningBetTypes(result)).toEqual(expect.arrayContaining([BaccaratBetType.PLAYER, BaccaratBetType.PLAYER_BONUS]));
807
+ });
808
+
809
+ it('returns BANKER on banker win', () => {
810
+ const result = mockResult(
811
+ [ci('3', Suits.CLUBS), ci('A', Suits.DIAMONDS)],
812
+ [ci('8', Suits.CLUBS), ci('Q', Suits.DIAMONDS)],
813
+ 4,
814
+ 8,
815
+ BaccaratOutcome.BANKER_WIN,
816
+ );
817
+ expect(Baccarat.getWinningBetTypes(result)).toEqual(expect.arrayContaining([BaccaratBetType.BANKER, BaccaratBetType.BANKER_BONUS]));
818
+ });
819
+
820
+ it('returns TIE on tie', () => {
821
+ const result = mockResult(
822
+ [ci('3', Suits.CLUBS), ci('3', Suits.DIAMONDS)],
823
+ [ci('2', Suits.CLUBS), ci('4', Suits.DIAMONDS)],
824
+ 6,
825
+ 6,
826
+ BaccaratOutcome.TIE,
827
+ );
828
+ expect(Baccarat.getWinningBetTypes(result)).toEqual(expect.arrayContaining([BaccaratBetType.TIE]));
829
+ });
830
+ });
831
+
832
+ describe('pair side bets', () => {
833
+ it('returns PLAYER_PAIR and EITHER_PAIR when player has a pair', () => {
834
+ const result = mockResult(
835
+ [ci('4', Suits.CLUBS), ci('4', Suits.HEARTS)],
836
+ [ci('3', Suits.CLUBS), ci('2', Suits.DIAMONDS)],
837
+ 8,
838
+ 5,
839
+ BaccaratOutcome.PLAYER_WIN,
840
+ );
841
+ expect(Baccarat.getWinningBetTypes(result)).toEqual(
842
+ expect.arrayContaining([BaccaratBetType.PLAYER, BaccaratBetType.PLAYER_PAIR, BaccaratBetType.EITHER_PAIR]),
843
+ );
844
+ });
845
+
846
+ it('returns BANKER_PAIR and EITHER_PAIR when banker has a pair', () => {
847
+ const result = mockResult(
848
+ [ci('3', Suits.CLUBS), ci('2', Suits.DIAMONDS)],
849
+ [ci('9', Suits.DIAMONDS), ci('9', Suits.HEARTS)],
850
+ 5,
851
+ 8,
852
+ BaccaratOutcome.BANKER_WIN,
853
+ );
854
+ expect(Baccarat.getWinningBetTypes(result)).toEqual(
855
+ expect.arrayContaining([BaccaratBetType.BANKER, BaccaratBetType.BANKER_PAIR, BaccaratBetType.EITHER_PAIR, BaccaratBetType.BANKER_BONUS]),
856
+ );
857
+ });
858
+
859
+ it('returns PLAYER_PAIR, BANKER_PAIR, and EITHER_PAIR when both have pairs', () => {
860
+ const result = mockResult(
861
+ [ci('4', Suits.CLUBS), ci('4', Suits.HEARTS)],
862
+ [ci('9', Suits.DIAMONDS), ci('9', Suits.HEARTS)],
863
+ 8,
864
+ 8,
865
+ BaccaratOutcome.TIE,
866
+ );
867
+ expect(Baccarat.getWinningBetTypes(result)).toEqual(
868
+ expect.arrayContaining([BaccaratBetType.TIE, BaccaratBetType.PLAYER_PAIR, BaccaratBetType.BANKER_PAIR, BaccaratBetType.EITHER_PAIR]),
869
+ );
870
+ });
871
+
872
+ it('returns no pair bets when neither hand has a pair', () => {
873
+ const result = mockResult(
874
+ [ci('4', Suits.CLUBS), ci('3', Suits.DIAMONDS)],
875
+ [ci('A', Suits.CLUBS), ci('2', Suits.DIAMONDS), ci('3', Suits.HEARTS)],
876
+ 7,
877
+ 6,
878
+ BaccaratOutcome.PLAYER_WIN,
879
+ );
880
+ // margin is 1, so PLAYER_BONUS does not win
881
+ expect(Baccarat.getWinningBetTypes(result)).toEqual(expect.arrayContaining([BaccaratBetType.PLAYER]));
882
+ });
883
+ });
884
+
885
+ describe('perfect pair side bet', () => {
886
+ it('returns PERFECT_PAIR when player has a perfect pair', () => {
887
+ const card = ci('4', Suits.CLUBS);
888
+ const result = mockResult([card, card], [ci('3', Suits.CLUBS), ci('2', Suits.DIAMONDS)], 8, 5, BaccaratOutcome.PLAYER_WIN);
889
+ expect(Baccarat.getWinningBetTypes(result)).toEqual(
890
+ expect.arrayContaining([BaccaratBetType.PLAYER, BaccaratBetType.PLAYER_PAIR, BaccaratBetType.EITHER_PAIR, BaccaratBetType.PERFECT_PAIR, BaccaratBetType.PLAYER_BONUS]),
891
+ );
892
+ });
893
+
894
+ it('returns PERFECT_PAIR when banker has a perfect pair', () => {
895
+ const card = ci('K', Suits.DIAMONDS);
896
+ const result = mockResult([ci('3', Suits.CLUBS), ci('2', Suits.DIAMONDS)], [card, card], 5, 0, BaccaratOutcome.PLAYER_WIN);
897
+ expect(Baccarat.getWinningBetTypes(result)).toEqual(
898
+ expect.arrayContaining([BaccaratBetType.PLAYER, BaccaratBetType.BANKER_PAIR, BaccaratBetType.EITHER_PAIR, BaccaratBetType.PERFECT_PAIR, BaccaratBetType.PLAYER_BONUS]),
899
+ );
900
+ });
901
+
902
+ it('does not return PERFECT_PAIR for a non-perfect pair', () => {
903
+ const result = mockResult(
904
+ [ci('4', Suits.CLUBS), ci('4', Suits.HEARTS)],
905
+ [ci('3', Suits.CLUBS), ci('2', Suits.DIAMONDS)],
906
+ 8,
907
+ 5,
908
+ BaccaratOutcome.PLAYER_WIN,
909
+ );
910
+ expect(Baccarat.getWinningBetTypes(result)).toEqual(
911
+ expect.arrayContaining([BaccaratBetType.PLAYER, BaccaratBetType.PLAYER_PAIR, BaccaratBetType.EITHER_PAIR, BaccaratBetType.PLAYER_BONUS]),
912
+ );
913
+ });
914
+ });
915
+
916
+ describe('bonus side bets', () => {
917
+ it('returns PLAYER_BONUS on natural player win', () => {
918
+ const result = mockResult(
919
+ [ci('8', Suits.CLUBS), ci('A', Suits.DIAMONDS)],
920
+ [ci('3', Suits.CLUBS), ci('2', Suits.DIAMONDS)],
921
+ 9,
922
+ 5,
923
+ BaccaratOutcome.PLAYER_WIN,
924
+ );
925
+ expect(Baccarat.getWinningBetTypes(result)).toEqual(expect.arrayContaining([BaccaratBetType.PLAYER, BaccaratBetType.PLAYER_BONUS]));
926
+ });
927
+
928
+ it('returns BANKER_BONUS on natural banker win', () => {
929
+ const result = mockResult(
930
+ [ci('3', Suits.CLUBS), ci('A', Suits.DIAMONDS)],
931
+ [ci('8', Suits.CLUBS), ci('A', Suits.CLUBS)],
932
+ 4,
933
+ 9,
934
+ BaccaratOutcome.BANKER_WIN,
935
+ );
936
+ expect(Baccarat.getWinningBetTypes(result)).toEqual(expect.arrayContaining([BaccaratBetType.BANKER, BaccaratBetType.BANKER_BONUS]));
937
+ });
938
+
939
+ it('returns PLAYER_BONUS on non-natural player win by 4', () => {
940
+ const result = mockResult(
941
+ [ci('4', Suits.CLUBS), ci('10', Suits.DIAMONDS), ci('Q', Suits.HEARTS)],
942
+ [ci('A', Suits.CLUBS), ci('2', Suits.DIAMONDS), ci('7', Suits.HEARTS)],
943
+ 4,
944
+ 0,
945
+ BaccaratOutcome.PLAYER_WIN,
946
+ );
947
+ expect(Baccarat.getWinningBetTypes(result)).toEqual(expect.arrayContaining([BaccaratBetType.PLAYER, BaccaratBetType.PLAYER_BONUS]));
948
+ });
949
+
950
+ it('does not return PLAYER_BONUS on non-natural win by fewer than 4 points', () => {
951
+ const result = mockResult(
952
+ [ci('4', Suits.CLUBS), ci('3', Suits.DIAMONDS)],
953
+ [ci('A', Suits.CLUBS), ci('2', Suits.DIAMONDS), ci('3', Suits.HEARTS)],
954
+ 7,
955
+ 6,
956
+ BaccaratOutcome.PLAYER_WIN,
957
+ );
958
+ expect(Baccarat.getWinningBetTypes(result)).toEqual(expect.arrayContaining([BaccaratBetType.PLAYER]));
959
+ });
960
+
961
+ it('does not return PLAYER_BONUS when player loses', () => {
962
+ const result = mockResult(
963
+ [ci('3', Suits.CLUBS), ci('10', Suits.DIAMONDS), ci('Q', Suits.HEARTS)],
964
+ [ci('3', Suits.CLUBS), ci('4', Suits.DIAMONDS)],
965
+ 3,
966
+ 7,
967
+ BaccaratOutcome.BANKER_WIN,
968
+ );
969
+ expect(Baccarat.getWinningBetTypes(result)).toEqual(expect.arrayContaining([BaccaratBetType.BANKER, BaccaratBetType.BANKER_BONUS]));
970
+ });
971
+
972
+ it('returns BANKER_BONUS on non-natural banker win by 5', () => {
973
+ const result = mockResult(
974
+ [ci('A', Suits.CLUBS), ci('2', Suits.DIAMONDS), ci('8', Suits.HEARTS)],
975
+ [ci('3', Suits.DIAMONDS), ci('3', Suits.HEARTS)],
976
+ 1,
977
+ 6,
978
+ BaccaratOutcome.BANKER_WIN,
979
+ );
980
+ expect(Baccarat.getWinningBetTypes(result)).toEqual(
981
+ expect.arrayContaining([BaccaratBetType.BANKER, BaccaratBetType.BANKER_PAIR, BaccaratBetType.EITHER_PAIR, BaccaratBetType.BANKER_BONUS]),
982
+ );
983
+ });
984
+
985
+ it('does not return BANKER_BONUS when banker loses', () => {
986
+ const result = mockResult(
987
+ [ci('4', Suits.CLUBS), ci('3', Suits.DIAMONDS)],
988
+ [ci('A', Suits.CLUBS), ci('A', Suits.DIAMONDS), ci('10', Suits.HEARTS)],
989
+ 7,
990
+ 2,
991
+ BaccaratOutcome.PLAYER_WIN,
992
+ );
993
+ expect(Baccarat.getWinningBetTypes(result)).toEqual(expect.arrayContaining([BaccaratBetType.PLAYER, BaccaratBetType.PLAYER_BONUS]));
994
+ });
995
+
996
+ it('returns no PLAYER_BONUS or BANKER_BONUS on natural tie (push)', () => {
997
+ const result = mockResult(
998
+ [ci('8', Suits.CLUBS), ci('Q', Suits.DIAMONDS)],
999
+ [ci('8', Suits.DIAMONDS), ci('Q', Suits.HEARTS)],
1000
+ 8,
1001
+ 8,
1002
+ BaccaratOutcome.TIE,
1003
+ );
1004
+ expect(Baccarat.getWinningBetTypes(result)).toEqual(
1005
+ expect.arrayContaining([BaccaratBetType.TIE]),
1006
+ );
1007
+ });
1008
+
1009
+ it('returns neither bonus on non-natural tie', () => {
1010
+ const result = mockResult(
1011
+ [ci('3', Suits.CLUBS), ci('3', Suits.DIAMONDS)],
1012
+ [ci('2', Suits.CLUBS), ci('4', Suits.DIAMONDS)],
1013
+ 6,
1014
+ 6,
1015
+ BaccaratOutcome.TIE,
1016
+ );
1017
+ expect(Baccarat.getWinningBetTypes(result)).toEqual(expect.arrayContaining([BaccaratBetType.TIE]));
1018
+ });
1019
+ });
1020
+ });
1021
+
796
1022
  describe('getGameOutcome', () => {
797
1023
  it('returns result, payout, and multiplier for a valid game', () => {
798
1024
  const hex = hexString(SEED1.serverSeed, SEED1.clientSeed, '2');
@@ -44,7 +44,6 @@ const TIE_MULTIPLIER = new BigNumber(9); // 8:1
44
44
  const PAIR_MULTIPLIER = new BigNumber(12); // 11:1
45
45
  const EITHER_PAIR_MULTIPLIER = new BigNumber(6); // 5:1
46
46
  const PERFECT_PAIR_ONE_HAND_MULTIPLIER = new BigNumber(26); // 25:1
47
- const PERFECT_PAIR_BOTH_HANDS_MULTIPLIER = new BigNumber(201); // 200:1
48
47
  const BONUS_NATURAL_WIN_MULTIPLIER = new BigNumber(2); // 1:1
49
48
  const BONUS_NATURAL_TIE_MULTIPLIER = new BigNumber(1); // push
50
49
 
@@ -188,6 +187,50 @@ export class Baccarat {
188
187
  return BONUS_NON_NATURAL_PAYOUT[margin] ?? new BigNumber(0);
189
188
  }
190
189
 
190
+ static getWinningBetTypes(result: BaccaratGameResult): BaccaratBetType[] {
191
+ const { outcome } = result;
192
+ const winning: BaccaratBetType[] = [];
193
+
194
+ if (outcome === BaccaratOutcome.PLAYER_WIN) {
195
+ winning.push(BaccaratBetType.PLAYER);
196
+ }
197
+ if (outcome === BaccaratOutcome.BANKER_WIN) {
198
+ winning.push(BaccaratBetType.BANKER);
199
+ }
200
+ if (outcome === BaccaratOutcome.TIE) {
201
+ winning.push(BaccaratBetType.TIE);
202
+ }
203
+
204
+ const playerHasPair = this.hasPair(result.playerCards);
205
+ const bankerHasPair = this.hasPair(result.bankerCards);
206
+
207
+ if (playerHasPair) {
208
+ winning.push(BaccaratBetType.PLAYER_PAIR);
209
+ }
210
+ if (bankerHasPair) {
211
+ winning.push(BaccaratBetType.BANKER_PAIR);
212
+ }
213
+ if (playerHasPair || bankerHasPair) {
214
+ winning.push(BaccaratBetType.EITHER_PAIR);
215
+ }
216
+ if (this.hasPerfectPair(result.playerCards) || this.hasPerfectPair(result.bankerCards)) {
217
+ winning.push(BaccaratBetType.PERFECT_PAIR);
218
+ }
219
+
220
+ const { playerCards, bankerCards, playerHandValue, bankerHandValue } = result;
221
+ const playerIsNatural = this.isNatural(playerHandValue, playerCards);
222
+ const bankerIsNatural = this.isNatural(bankerHandValue, bankerCards);
223
+
224
+ if (outcome === BaccaratOutcome.PLAYER_WIN && (playerIsNatural || (!playerIsNatural && playerHandValue - bankerHandValue >= 4))) {
225
+ winning.push(BaccaratBetType.PLAYER_BONUS);
226
+ }
227
+ if (outcome === BaccaratOutcome.BANKER_WIN && (bankerIsNatural || (!bankerIsNatural && bankerHandValue - playerHandValue >= 4))) {
228
+ winning.push(BaccaratBetType.BANKER_BONUS);
229
+ }
230
+
231
+ return winning;
232
+ }
233
+
191
234
  static calcBetPayouts(bets: BaccaratBet[], result: BaccaratGameResult): { payout: BigNumber; multiplier: BigNumber } {
192
235
  const { outcome } = result;
193
236
 
@@ -239,9 +282,7 @@ export class Baccarat {
239
282
  break;
240
283
 
241
284
  case BaccaratBetType.PERFECT_PAIR:
242
- if (playerHasPerfectPair && bankerHasPerfectPair) {
243
- betPayout = bet.amount.times(PERFECT_PAIR_BOTH_HANDS_MULTIPLIER);
244
- } else if (playerHasPerfectPair || bankerHasPerfectPair) {
285
+ if (playerHasPerfectPair || bankerHasPerfectPair) {
245
286
  betPayout = bet.amount.times(PERFECT_PAIR_ONE_HAND_MULTIPLIER);
246
287
  }
247
288
  break;
@@ -0,0 +1,119 @@
1
+ import { createHmac } from 'crypto';
2
+ import { Blitz } from './blitz';
3
+
4
+ const SERVER_SEED = 'ebd3ff712ee7ed3cabe3753146f95847b017f847758ed254c531ff0d45686cea';
5
+ const CLIENT_SEED = 'pf4jl5q97q';
6
+
7
+ const GAME_TABLE: [picks: number, probability: number, payout: number][] = [
8
+ [5, 0.8202837786, 1.194708497],
9
+ [6, 0.7414103383, 1.321805145],
10
+ [7, 0.6558629916, 1.494214512],
11
+ [8, 0.5675737427, 1.726647881],
12
+ [9, 0.4802547054, 2.040583859],
13
+ [10, 0.3971336987, 2.467682806],
14
+ [11, 0.3207618336, 3.055226331],
15
+ [12, 0.2529083688, 3.874921201],
16
+ [13, 0.194544899, 5.037397561],
17
+ [14, 0.1459086743, 6.716530082],
18
+ [15, 0.1066255697, 9.191041164],
19
+ [16, 0.0758681938, 12.917138933],
20
+ [17, 0.0525241342, 18.65808957],
21
+ [18, 0.0353527826, 27.720590219],
22
+ [19, 0.0231152809, 42.396196806],
23
+ [20, 0.0146693129, 66.8061283],
24
+ [21, 0.0090272695, 108.559958487],
25
+ [22, 0.0053816414, 182.100575526],
26
+ [23, 0.0031047931, 315.640997579],
27
+ [24, 0.0017315192, 565.976961176],
28
+ [25, 0.0009323565, 1051.100070756],
29
+ [26, 0.0004841082, 2024.340877012],
30
+ [27, 0.0002420541, 4048.681754024],
31
+ [28, 0.0001163722, 8421.25804837],
32
+ [29, 0.0000537102, 18246.059104802],
33
+ [30, 0.0000237564, 41251.959715205],
34
+ ];
35
+
36
+ function generateDigestHex(nonce: string, rounds: number): string[] {
37
+ return Array.from({ length: rounds }, (_, round) => {
38
+ const hmac = createHmac('sha256', SERVER_SEED);
39
+ hmac.update(`${CLIENT_SEED}:${nonce}:${round}`);
40
+ return hmac.digest('hex');
41
+ });
42
+ }
43
+
44
+ describe('Blitz.getGameSeedRounds', () => {
45
+ it('returns 1 round for picks 1–8', () => {
46
+ expect(Blitz.getGameSeedRounds(5)).toBe(1);
47
+ expect(Blitz.getGameSeedRounds(8)).toBe(1);
48
+ });
49
+
50
+ it('returns 2 rounds for picks 9–16', () => {
51
+ expect(Blitz.getGameSeedRounds(9)).toBe(2);
52
+ expect(Blitz.getGameSeedRounds(16)).toBe(2);
53
+ });
54
+
55
+ it('returns 4 rounds for 30 picks (max)', () => {
56
+ expect(Blitz.getGameSeedRounds(30)).toBe(4);
57
+ });
58
+ });
59
+
60
+ describe('Blitz.getGameOutcome', () => {
61
+ it('returns the correct number of cards', () => {
62
+ const hexStrings = generateDigestHex('1', Blitz.getGameSeedRounds(10));
63
+ const { cards } = Blitz.getGameOutcome(hexStrings, 10);
64
+ expect(cards).toHaveLength(10);
65
+
66
+ const hexStrings2 = generateDigestHex('2', Blitz.getGameSeedRounds(25));
67
+ const { cards: cards2 } = Blitz.getGameOutcome(hexStrings2, 25);
68
+ expect(cards2).toHaveLength(25);
69
+ });
70
+
71
+ it('maxCount is 1 when all cards are unique', () => {
72
+ // Force a known set of unique cards by checking the outcome
73
+ const hexStrings = generateDigestHex('1', Blitz.getGameSeedRounds(5));
74
+ const { maxRepeatedCount, cards } = Blitz.getGameOutcome(hexStrings, 5);
75
+ const uniqueCount = new Set(cards).size;
76
+ if (uniqueCount === 5) {
77
+ expect(maxRepeatedCount).toBe(1);
78
+ } else {
79
+ expect(maxRepeatedCount).toBeGreaterThan(1);
80
+ }
81
+ });
82
+
83
+ it('maxCount reflects the highest duplicate count', () => {
84
+ const hexStrings = generateDigestHex('5', Blitz.getGameSeedRounds(30));
85
+ const { maxRepeatedCount } = Blitz.getGameOutcome(hexStrings, 30);
86
+
87
+ expect(maxRepeatedCount).toBe(2);
88
+
89
+ const hexStrings2 = generateDigestHex('6', Blitz.getGameSeedRounds(30));
90
+ const { maxRepeatedCount: maxRepeatedCount2 } = Blitz.getGameOutcome(hexStrings2, 30);
91
+ expect(maxRepeatedCount2).toBe(3);
92
+ });
93
+ });
94
+
95
+ describe('Blitz.isCleanSweepWin', () => {
96
+ it('returns true when maxCount is 1 (all unique)', () => {
97
+ expect(Blitz.isCleanSweepWin(1)).toBe(true);
98
+ });
99
+
100
+ it('returns false when any card is duplicated', () => {
101
+ expect(Blitz.isCleanSweepWin(2)).toBe(false);
102
+ expect(Blitz.isCleanSweepWin(3)).toBe(false);
103
+ expect(Blitz.isCleanSweepWin(5)).toBe(false);
104
+ });
105
+ });
106
+
107
+ describe('Blitz.calculateWinChanceBN', () => {
108
+ it.each(GAME_TABLE)('N=%i matches expected probability', (picks, expected) => {
109
+ expect(Blitz.calculateWinChanceBN(picks).decimalPlaces(10).toNumber()).toBe(expected);
110
+ });
111
+ });
112
+
113
+ describe('Blitz.calculateMultiplierBN', () => {
114
+ const EDGE_BPS = 200;
115
+
116
+ it.each(GAME_TABLE)('N=%i payout matches expected multiplier', (picks, _probability, expectedPayout) => {
117
+ expect(Blitz.calculateMultiplierBN(picks, EDGE_BPS).decimalPlaces(9).toNumber()).toBe(expectedPayout);
118
+ });
119
+ });
@@ -0,0 +1,62 @@
1
+ import BigNumber from 'bignumber.js';
2
+ import { CardGames, CARDS_PER_DECK } from './cardGames';
3
+ import { calculateEdgeMultiplier } from '../utils/edge';
4
+
5
+ export const BLITZ_MIN_PICKS = 5;
6
+ export const BLITZ_MAX_PICKS = 30;
7
+
8
+ export interface BlitzResult {
9
+ maxRepeatedCount: number;
10
+ cards: number[];
11
+ }
12
+
13
+ export class Blitz {
14
+ static getGameSeedRounds(picks: number): number {
15
+ return Math.ceil(picks / 8);
16
+ }
17
+
18
+ private static drawCards(hexStrings: string[], picks: number): number[] {
19
+ const cards = CardGames.getResults(hexStrings);
20
+
21
+ if (cards.length < picks) {
22
+ throw new Error('Not enough cards drawn');
23
+ }
24
+
25
+ return cards.slice(0, picks);
26
+ }
27
+
28
+ static getGameOutcome(hexStrings: string[], picks: number): BlitzResult {
29
+ const cards = this.drawCards(hexStrings, picks);
30
+ const cardCounts: Record<number, number> = {};
31
+ let maxRepeatedCount = 0;
32
+
33
+ for (const card of cards) {
34
+ const count = (cardCounts[card] || 0) + 1;
35
+ cardCounts[card] = count;
36
+
37
+ if (count > maxRepeatedCount) maxRepeatedCount = count;
38
+ }
39
+
40
+ return { maxRepeatedCount, cards };
41
+ }
42
+
43
+ static calculateWinChanceBN(picks: number): BigNumber {
44
+ const deck = new BigNumber(CARDS_PER_DECK);
45
+ let result = new BigNumber(1);
46
+
47
+ for (let i = 0; i < picks; i++) {
48
+ result = result.multipliedBy(deck.minus(i)).dividedBy(deck);
49
+ }
50
+
51
+ return result;
52
+ }
53
+
54
+ static calculateMultiplierBN(picks: number, edgeBps: number): BigNumber {
55
+ const winChance = this.calculateWinChanceBN(picks);
56
+ return calculateEdgeMultiplier(edgeBps).div(winChance);
57
+ }
58
+
59
+ static isCleanSweepWin(maxRepeatedCount: number): boolean {
60
+ return maxRepeatedCount === 1;
61
+ }
62
+ }
@@ -2,6 +2,7 @@ import BigNumber from 'bignumber.js';
2
2
  import { hexToBytes } from '../utils/hex-to-bytes';
3
3
 
4
4
  const BYTE_TOTAL = new BigNumber(256);
5
+ export const CARDS_PER_DECK = 52;
5
6
 
6
7
  const CARD_MAP: Record<string, 'A' | 'J' | 'Q' | 'K'> = {
7
8
  '1': 'A',
@@ -53,7 +54,7 @@ export class CardGames {
53
54
  }
54
55
 
55
56
  static getCardDetailsArr(cardNums: readonly number[]): CardDetail[] {
56
- return cardNums.map((cardNum) => this.getCardDetails(cardNum));
57
+ return cardNums.map(cardNum => this.getCardDetails(cardNum));
57
58
  }
58
59
 
59
60
  static getResult(hexStr: string, cardNo: number): number {
package/src/index.ts CHANGED
@@ -35,3 +35,4 @@ export { Tower, TowerDifficulty, TOWER_DIFFICULTY_TO_CONFIG, TOWER_TOTAL_ROWS }
35
35
  export { Wheel, WheelRiskLevel, WheelSegments, WHEEL_MULTIPLIERS, WHEEL_SEGMENTS_TO_NUMBER } from './games/wheel';
36
36
  export { formatSelectionName } from './utils/sports-name';
37
37
  export { SportsContentWithFixturesInfo } from './utils/sports-content-fixture.types';
38
+ export { Blitz, BlitzResult, BLITZ_MIN_PICKS, BLITZ_MAX_PICKS } from './games/blitz';
@@ -17,5 +17,5 @@ export const TIMEZONE_OFFSET_REGEX = /^(?:Z|[+-](?:2[0-3]|[01][0-9]):[0-5][0-9])
17
17
  export const TXN_URL_REGEX = /^https:\/\/.*\{txId\}.*$/;
18
18
 
19
19
  export const ADDRESS_URL_REGEX = /^https:\/\/.*\{address\}.*$/;
20
- export const VALID_NAME_REGEX = /^[^0-9!@#$%^&*`~()+=[{\]};:"\\|<>\/?]*$/;
20
+ export const VALID_NAME_REGEX = /^[^0-9!@#$%^&*`~()+=[{\]};:"\\|<>\/?\u3164]*$/;
21
21
  export const US_PHONE_NUMBER_REGEX = /^\+1\d{10}$/;
@@ -139,6 +139,10 @@ describe('regex', () => {
139
139
  it('should allow for empty string', () => {
140
140
  expect(VALID_NAME_REGEX.test('')).toBe(true);
141
141
  });
142
+
143
+ it('should not allow for U+3164(Hangul Filler) unicode character', () => {
144
+ expect(VALID_NAME_REGEX.test('ㅤ')).toBe(false); // there is an invisible unicode character in here
145
+ });
142
146
  });
143
147
 
144
148
  describe('US_PHONE_NUMBER_REGEX', () => {
@@ -39,7 +39,7 @@ export enum SportsFixtureStatus {
39
39
  SCHEDULED = 'SCHEDULED',
40
40
  PREMATCH = 'PREMATCH',
41
41
  LIVE = 'LIVE',
42
- // suspended: the fixture is suspended and may come back later, user can still see the fixture but all markets will show as suspended and not bettable
42
+ // suspended: the fixture is suspended and may come back later, user can still see the fixture but all markets will show as suspended and not browseable
43
43
  // return suspended especially because Premium Cricket will often go suspended during InPlay and come back again
44
44
  SUSPENDED = 'SUSPENDED',
45
45
  ENDED = 'ENDED',
@@ -258,8 +258,9 @@ export enum Language {
258
258
  id = 'id',
259
259
  ar = 'ar',
260
260
  no = 'no',
261
- sv = 'sv',
262
261
  it = 'it',
262
+ // Deprecated
263
+ sv = 'sv',
263
264
  }
264
265
 
265
266
  export enum SportsMatchPhaseWinner {