@omnitronix/bonnys-fortune-game-engine 1.3.0 → 1.3.1-beta.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.
Files changed (140) hide show
  1. package/README.md +15 -15
  2. package/dist/__tests__/bonnys-fortune-v1.game-engine.test.d.ts +1 -0
  3. package/dist/bonnys-fortune-v1.game-engine.d.ts +32 -0
  4. package/dist/bonnys-fortune-v1.game-engine.js +6 -13
  5. package/dist/bonnys-fortune-v1.game-engine.js.map +1 -1
  6. package/dist/config/game-logic-config/file-system.game-logic-config-loader.d.ts +4 -0
  7. package/dist/config/game-logic-config/game-logic-config-loader.d.ts +3 -0
  8. package/dist/config/game-logic-config/game-logic-config.d.ts +2 -0
  9. package/dist/config/reel-strips-config/file-system.reel-strips-config-loader.d.ts +4 -0
  10. package/dist/config/reel-strips-config/reel-strip-option.dto.d.ts +4 -0
  11. package/dist/config/reel-strips-config/reel-strips-config-loader.d.ts +3 -0
  12. package/dist/config/reel-strips-config/reel-strips-config.dto.d.ts +5 -0
  13. package/dist/config/reel-strips-config/reel.dto.d.ts +5 -0
  14. package/dist/domain/game-round.types.d.ts +9 -0
  15. package/dist/domain/mappers/reel-strips-config.mapper.d.ts +4 -0
  16. package/dist/domain/reel-strip-option.d.ts +7 -0
  17. package/dist/domain/reel-strips-config.d.ts +9 -0
  18. package/dist/domain/reel.d.ts +8 -0
  19. package/dist/domain/types/cheat-trigger-bonus-command.d.ts +5 -0
  20. package/dist/domain/types/{debug-trigger-bonus-command.js → cheat-trigger-bonus-command.js} +1 -1
  21. package/dist/domain/types/cheat-trigger-bonus-command.js.map +1 -0
  22. package/dist/domain/types/cheat-trigger-bonus-request.dto.d.ts +5 -0
  23. package/dist/domain/types/{debug-trigger-bonus-request.dto.js → cheat-trigger-bonus-request.dto.js} +1 -1
  24. package/dist/domain/types/cheat-trigger-bonus-request.dto.js.map +1 -0
  25. package/dist/domain/types/cheat-update-bonus-meter-progress-command.d.ts +5 -0
  26. package/dist/domain/types/{debug-update-bonus-meter-progress-command.js → cheat-update-bonus-meter-progress-command.js} +1 -1
  27. package/dist/domain/types/cheat-update-bonus-meter-progress-command.js.map +1 -0
  28. package/dist/domain/types/cheat-update-bonus-meter-progress-request.dto.d.ts +5 -0
  29. package/dist/domain/types/{debug-update-bonus-meter-progress-request.dto.js → cheat-update-bonus-meter-progress-request.dto.js} +1 -1
  30. package/dist/domain/types/cheat-update-bonus-meter-progress-request.dto.js.map +1 -0
  31. package/dist/domain/types/game-spin-command.d.ts +8 -0
  32. package/dist/domain/types/game-spin-input.dto.d.ts +8 -0
  33. package/dist/domain/types/game-spin-output.dto.d.ts +119 -0
  34. package/dist/domain/types/game-symbols.response.dto.d.ts +10 -0
  35. package/dist/domain/types/reel-strip-option.dto.d.ts +4 -0
  36. package/dist/domain/types/reel-strips-config.dto.d.ts +5 -0
  37. package/dist/domain/types/reel.dto.d.ts +5 -0
  38. package/dist/domain/types/start-bonus-round-command.d.ts +8 -0
  39. package/dist/domain/types/start-bonus-round-input.dto.d.ts +10 -0
  40. package/dist/game-engine.interface.d.ts +41 -0
  41. package/dist/helpers/generate-hash.d.ts +1 -0
  42. package/dist/helpers/number-helper.d.ts +23 -0
  43. package/dist/helpers/optional-boolean-mapper.d.ts +1 -0
  44. package/dist/helpers/uuid-helper.d.ts +3 -0
  45. package/dist/helpers/validation-helper.d.ts +14 -0
  46. package/dist/index.d.ts +2 -0
  47. package/dist/index.js.map +1 -1
  48. package/dist/logger/logger.d.ts +22 -0
  49. package/dist/logic/bonnys-fortune.game-logic.d.ts +32 -0
  50. package/dist/logic/bonnys-fortune.game-logic.js +15 -11
  51. package/dist/logic/bonnys-fortune.game-logic.js.map +1 -1
  52. package/dist/logic/bonnys-fortune.spin-generator.d.ts +19 -0
  53. package/dist/logic/bonnys-fortune.types.d.ts +170 -0
  54. package/dist/logic/bonnys-fortune.win-calculator.d.ts +10 -0
  55. package/dist/logic/game-logic-config.interface.d.ts +178 -0
  56. package/dist/logic/handlers/base-game.handler.d.ts +15 -0
  57. package/dist/logic/handlers/base-game.handler.js +5 -1
  58. package/dist/logic/handlers/base-game.handler.js.map +1 -1
  59. package/dist/logic/handlers/collect-feature-bonus.handler.d.ts +13 -0
  60. package/dist/logic/handlers/free-spins-bonus.handler.d.ts +11 -0
  61. package/dist/logic/handlers/steering-to-the-fortune-bonus.handler.d.ts +11 -0
  62. package/dist/logic/handlers/treasure-hunt-bonus.handler.d.ts +15 -0
  63. package/dist/rng/DummyRngClient.d.ts +18 -0
  64. package/dist/rng/DummyRngClient.js +1 -8
  65. package/dist/rng/DummyRngClient.js.map +1 -1
  66. package/dist/rng/rng-client.factory.d.ts +7 -0
  67. package/dist/rng/rng-client.factory.js.map +1 -1
  68. package/dist/rng/rng-client.interface.d.ts +16 -0
  69. package/dist/rng/rng-service.d.ts +26 -0
  70. package/dist/validation/abstract-game-logic-config.validator.d.ts +4 -0
  71. package/dist/validation/bonnys-fortune/bonnys-fortune-config.dto.d.ts +129 -0
  72. package/dist/validation/bonnys-fortune/bonnys-fortune-config.validator.d.ts +5 -0
  73. package/dist/validation/custom-decorators/IsNestedIntArray.d.ts +2 -0
  74. package/dist/validation/game-logic-config-validation.service.d.ts +8 -0
  75. package/dist/validation/reel-strips-config-validation.service.d.ts +5 -0
  76. package/package.json +4 -3
  77. package/src/__tests__/bonnys-fortune-v1.game-engine.test.ts +80 -0
  78. package/src/bonnys-fortune-v1.game-engine.ts +285 -0
  79. package/src/config/game-logic-config/file-system.game-logic-config-loader.ts +27 -0
  80. package/src/config/game-logic-config/game-logic-config-loader.ts +3 -0
  81. package/src/config/game-logic-config/game-logic-config.ts +380 -0
  82. package/src/config/reel-strips-config/file-system.reel-strips-config-loader.ts +43 -0
  83. package/src/config/reel-strips-config/reel-strip-option.dto.ts +13 -0
  84. package/src/config/reel-strips-config/reel-strips-config-loader.ts +9 -0
  85. package/src/config/reel-strips-config/reel-strips-config.dto.ts +16 -0
  86. package/src/config/reel-strips-config/reel.dto.ts +16 -0
  87. package/src/config/reel-strips-config/reels-BASE.csv +52 -0
  88. package/src/config/reel-strips-config/reels-BONUS.csv +52 -0
  89. package/src/domain/game-round.types.ts +10 -0
  90. package/src/domain/mappers/reel-strips-config.mapper.ts +16 -0
  91. package/src/domain/reel-strip-option.ts +15 -0
  92. package/src/domain/reel-strips-config.ts +21 -0
  93. package/src/domain/reel.ts +17 -0
  94. package/src/domain/types/cheat-trigger-bonus-command.ts +5 -0
  95. package/src/domain/types/cheat-trigger-bonus-request.dto.ts +5 -0
  96. package/src/domain/types/cheat-update-bonus-meter-progress-command.ts +6 -0
  97. package/src/domain/types/cheat-update-bonus-meter-progress-request.dto.ts +5 -0
  98. package/src/domain/types/game-spin-command.ts +8 -0
  99. package/src/domain/types/game-spin-input.dto.ts +8 -0
  100. package/src/domain/types/game-spin-output.dto.ts +142 -0
  101. package/src/domain/types/game-symbols.response.dto.ts +11 -0
  102. package/src/domain/types/reel-strip-option.dto.ts +13 -0
  103. package/src/domain/types/reel-strips-config.dto.ts +15 -0
  104. package/src/domain/types/reel.dto.ts +15 -0
  105. package/src/domain/types/start-bonus-round-command.ts +8 -0
  106. package/src/domain/types/start-bonus-round-input.dto.ts +10 -0
  107. package/src/game-engine.interface.ts +59 -0
  108. package/src/helpers/generate-hash.ts +5 -0
  109. package/src/helpers/number-helper.ts +41 -0
  110. package/src/helpers/optional-boolean-mapper.ts +5 -0
  111. package/src/helpers/uuid-helper.ts +7 -0
  112. package/src/helpers/validation-helper.ts +27 -0
  113. package/src/index.ts +3 -0
  114. package/src/logger/logger.ts +178 -0
  115. package/src/logic/bonnys-fortune.game-logic.ts +490 -0
  116. package/src/logic/bonnys-fortune.spin-generator.ts +277 -0
  117. package/src/logic/bonnys-fortune.types.ts +223 -0
  118. package/src/logic/bonnys-fortune.win-calculator.ts +210 -0
  119. package/src/logic/game-logic-config.interface.ts +174 -0
  120. package/src/logic/handlers/base-game.handler.ts +221 -0
  121. package/src/logic/handlers/collect-feature-bonus.handler.ts +301 -0
  122. package/src/logic/handlers/free-spins-bonus.handler.ts +119 -0
  123. package/src/logic/handlers/steering-to-the-fortune-bonus.handler.ts +118 -0
  124. package/src/logic/handlers/treasure-hunt-bonus.handler.ts +232 -0
  125. package/src/rng/DummyRngClient.ts +108 -0
  126. package/src/rng/rng-client.factory.ts +27 -0
  127. package/src/rng/rng-client.interface.ts +38 -0
  128. package/src/rng/rng-service.ts +130 -0
  129. package/src/validation/abstract-game-logic-config.validator.ts +20 -0
  130. package/src/validation/bonnys-fortune/bonnys-fortune-config.dto.ts +371 -0
  131. package/src/validation/bonnys-fortune/bonnys-fortune-config.validator.ts +8 -0
  132. package/src/validation/custom-decorators/IsNestedIntArray.ts +29 -0
  133. package/src/validation/game-logic-config-validation.service.ts +28 -0
  134. package/src/validation/reel-strips-config-validation.service.ts +29 -0
  135. package/dist/__tests__/comprehensive.test.js +0 -741
  136. package/dist/__tests__/comprehensive.test.js.map +0 -1
  137. package/dist/domain/types/debug-trigger-bonus-command.js.map +0 -1
  138. package/dist/domain/types/debug-trigger-bonus-request.dto.js.map +0 -1
  139. package/dist/domain/types/debug-update-bonus-meter-progress-command.js.map +0 -1
  140. package/dist/domain/types/debug-update-bonus-meter-progress-request.dto.js.map +0 -1
package/README.md CHANGED
@@ -241,19 +241,19 @@ The game engine supports 6 different command types:
241
241
 
242
242
  **Returns**: Updated state
243
243
 
244
- #### 5. DEBUG_TRIGGER_BONUS (Testing/Admin)
244
+ #### 5. CHEAT_TRIGGER_BONUS (Testing/Admin)
245
245
 
246
246
  **Purpose**: Force trigger specific bonus game
247
247
 
248
- **Payload**: `DebugTriggerBonusCommand`
248
+ **Payload**: `CheatTriggerBonusCommand`
249
249
 
250
250
  **Returns**: State with pending bonus
251
251
 
252
- #### 6. DEBUG_UPDATE_BONUS_METER_PROGRESS (Testing/Admin)
252
+ #### 6. CHEAT_UPDATE_BONUS_METER_PROGRESS (Testing/Admin)
253
253
 
254
254
  **Purpose**: Manually set bonus meter progress
255
255
 
256
- **Payload**: `DebugUpdateBonusMeterProgressCommand`
256
+ **Payload**: `CheatUpdateBonusMeterProgressCommand`
257
257
 
258
258
  **Returns**: Updated meter state
259
259
 
@@ -552,26 +552,26 @@ RNG_CLIENT_GRPC_URL=grpc://rng-prod.omnitronix.com:50051
552
552
  RNG_CLIENT_POOL_SIZE=5000
553
553
  ```
554
554
 
555
- ### Example 4: Testing with Debug Commands
555
+ ### Example 4: Testing with Cheat Commands
556
556
 
557
557
  ```typescript
558
558
  async function testBonusGame() {
559
559
  const gameEngine = new BonnysFortuneV1GameEngine();
560
-
560
+
561
561
  // Initialize session
562
562
  const initResult = await gameEngine.processCommand({}, {}, {
563
563
  id: 'test-init',
564
564
  type: 'INIT_SESSION_STATE',
565
565
  payload: { betAmountThresholds: [10], defaultBetAmount: 10 }
566
566
  });
567
-
567
+
568
568
  // Force trigger treasure hunt bonus
569
- const debugResult = await gameEngine.processCommand(
569
+ const cheatResult = await gameEngine.processCommand(
570
570
  initResult.publicState,
571
571
  initResult.privateState,
572
572
  {
573
- id: 'test-debug',
574
- type: 'DEBUG_TRIGGER_BONUS',
573
+ id: 'test-cheat',
574
+ type: 'CHEAT_TRIGGER_BONUS',
575
575
  payload: {
576
576
  sessionId: 'test-session',
577
577
  bonusType: 'bonusGame1',
@@ -579,11 +579,11 @@ async function testBonusGame() {
579
579
  }
580
580
  }
581
581
  );
582
-
582
+
583
583
  // Now start the bonus
584
584
  const bonusResult = await gameEngine.processCommand(
585
- debugResult.publicState,
586
- debugResult.privateState,
585
+ cheatResult.publicState,
586
+ cheatResult.privateState,
587
587
  {
588
588
  id: 'test-bonus-start',
589
589
  type: 'START_BONUS_ROUND',
@@ -593,11 +593,11 @@ async function testBonusGame() {
593
593
  betAmount: 10,
594
594
  gameCode: 'bonnys-fortune',
595
595
  gameVersion: '1.0.0',
596
- bonusId: debugResult.privateState.pendingBonuses[0].bonusId
596
+ bonusId: cheatResult.privateState.pendingBonuses[0].bonusId
597
597
  }
598
598
  }
599
599
  );
600
-
600
+
601
601
  console.log('Bonus results:', bonusResult.outcome);
602
602
  }
603
603
  ```
@@ -0,0 +1,32 @@
1
+ import { BonnysFortunePrivateState, BonnysFortunePublicState } from './logic/bonnys-fortune.types';
2
+ import { CommandProcessingResult, GameActionCommand, GameEngine, GameEngineConfig, GameEngineInfo } from './game-engine.interface';
3
+ import { BonnysFortuneGameLogic } from './logic/bonnys-fortune.game-logic';
4
+ import { GameLogicConfigLoader } from './config/game-logic-config/game-logic-config-loader';
5
+ import { GameLogicConfigValidationService } from './validation/game-logic-config-validation.service';
6
+ import { Logger } from './logger/logger';
7
+ import { ReelStripsConfigLoader } from './config/reel-strips-config/reel-strips-config-loader';
8
+ import { ReelStripsConfigMapper } from './domain/mappers/reel-strips-config.mapper';
9
+ import { ReelStripsConfigValidationService } from './validation/reel-strips-config-validation.service';
10
+ import { RngService } from './rng/rng-service';
11
+ export declare class BonnysFortuneV1GameEngine implements GameEngine<BonnysFortunePublicState, BonnysFortunePrivateState, any> {
12
+ private readonly gameCode;
13
+ private readonly version;
14
+ private readonly rtp;
15
+ private readonly gameType;
16
+ private readonly gameName;
17
+ private readonly provider;
18
+ private config;
19
+ private reels;
20
+ readonly configOutPort: GameLogicConfigLoader;
21
+ readonly reelsOutPort: ReelStripsConfigLoader;
22
+ readonly configValidator: GameLogicConfigValidationService;
23
+ readonly reelsValidator: ReelStripsConfigValidationService;
24
+ readonly reelMapper: ReelStripsConfigMapper;
25
+ readonly gameLogic: BonnysFortuneGameLogic;
26
+ readonly rngService: RngService;
27
+ readonly logger: Logger;
28
+ constructor(config?: GameEngineConfig);
29
+ getGameEngineInfo(): GameEngineInfo;
30
+ private preload;
31
+ processCommand(publicState: BonnysFortunePublicState, privateState: BonnysFortunePrivateState, command: GameActionCommand): Promise<CommandProcessingResult<BonnysFortunePublicState, BonnysFortunePrivateState, any>>;
32
+ }
@@ -12,12 +12,10 @@ const reel_strips_config_mapper_1 = require("./domain/mappers/reel-strips-config
12
12
  const reel_strips_config_validation_service_1 = require("./validation/reel-strips-config-validation.service");
13
13
  const rng_client_factory_1 = require("./rng/rng-client.factory");
14
14
  const rng_service_1 = require("./rng/rng-service");
15
- // eslint-disable-next-line @typescript-eslint/no-var-requires
16
- const packageJson = require('../package.json');
17
15
  class BonnysFortuneV1GameEngine {
18
16
  constructor(config = {}) {
19
17
  this.gameCode = 'bonnys-fortune';
20
- this.version = packageJson.version;
18
+ this.version = '1.0.0';
21
19
  this.rtp = 96;
22
20
  this.gameType = 'slot';
23
21
  this.gameName = "Bonny's Fortune";
@@ -72,12 +70,7 @@ class BonnysFortuneV1GameEngine {
72
70
  if (!baseReels) {
73
71
  throw new Error('Base game reels not found');
74
72
  }
75
- // Ensure gameConfig has required fields with defaults
76
- const gameConfig = {
77
- betAmountThresholds: command.payload?.betAmountThresholds ?? [0.1, 0.2, 0.5, 1, 2, 5, 10, 20, 50, 100],
78
- defaultBetAmount: command.payload?.defaultBetAmount ?? command.payload?.betStake ?? 1,
79
- };
80
- const result = await this.gameLogic.initSessionState(this.config, baseReels, gameConfig, command.id);
73
+ const result = await this.gameLogic.initSessionState(this.config, baseReels, command.payload, command.id);
81
74
  const rngOutcome = this.rngService.getRngOutcomeForCommand(command.id);
82
75
  this.rngService.removeCommand(command.id);
83
76
  return {
@@ -128,9 +121,9 @@ class BonnysFortuneV1GameEngine {
128
121
  rngOutcome,
129
122
  };
130
123
  }
131
- case 'DEBUG_TRIGGER_BONUS': {
124
+ case 'CHEAT_TRIGGER_BONUS': {
132
125
  const params = command.payload;
133
- const result = await this.gameLogic.debugTriggerBonus(publicState, privateState, params);
126
+ const result = await this.gameLogic.cheatTriggerBonus(publicState, privateState, params);
134
127
  const rngOutcome = this.rngService.getRngOutcomeForCommand(command.id);
135
128
  this.rngService.removeCommand(command.id);
136
129
  return {
@@ -142,9 +135,9 @@ class BonnysFortuneV1GameEngine {
142
135
  rngOutcome,
143
136
  };
144
137
  }
145
- case 'DEBUG_UPDATE_BONUS_METER_PROGRESS': {
138
+ case 'CHEAT_UPDATE_BONUS_METER_PROGRESS': {
146
139
  const params = command.payload;
147
- const result = this.gameLogic.debugUpdateBonusMeterProgress(publicState, privateState, params, this.config);
140
+ const result = this.gameLogic.cheatUpdateBonusMeterProgress(publicState, privateState, params, this.config);
148
141
  const rngOutcome = this.rngService.getRngOutcomeForCommand(command.id);
149
142
  this.rngService.removeCommand(command.id);
150
143
  return {
@@ -1 +1 @@
1
- {"version":3,"file":"bonnys-fortune-v1.game-engine.js","sourceRoot":"","sources":["../src/bonnys-fortune-v1.game-engine.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"bonnys-fortune-v1.game-engine.js","sourceRoot":"","sources":["../src/bonnys-fortune-v1.game-engine.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import { GameLogicConfigLoader } from './game-logic-config-loader';
2
+ export declare class FileSystemGameLogicConfigLoader implements GameLogicConfigLoader {
3
+ loadConfig<T>(gameId: string, variantId: string): Promise<T | null>;
4
+ }
@@ -0,0 +1,3 @@
1
+ export interface GameLogicConfigLoader {
2
+ loadConfig<T>(gameId: string, variantId: string): Promise<T | null>;
3
+ }
@@ -0,0 +1,2 @@
1
+ import { BonnysFortuneGameLogicConfigInterface } from '../../logic/game-logic-config.interface';
2
+ export declare const gameLogicConfig: BonnysFortuneGameLogicConfigInterface;
@@ -0,0 +1,4 @@
1
+ import { ReelStripsConfigLoader } from './reel-strips-config-loader';
2
+ export declare class FileSystemReelStripsConfigLoader implements ReelStripsConfigLoader {
3
+ loadConfig(gameId: string, variantId: string, reelSetName: string, reelsCount: number, optionsCount: number): Promise<number[][][]>;
4
+ }
@@ -0,0 +1,4 @@
1
+ export declare class ReelStripOptionDto {
2
+ symbols: number[];
3
+ constructor(symbols: number[]);
4
+ }
@@ -0,0 +1,3 @@
1
+ export interface ReelStripsConfigLoader {
2
+ loadConfig(gameId: string, variantId: string, reelSetName: string, reelsCount: number, optionsCount: number): Promise<number[][][]>;
3
+ }
@@ -0,0 +1,5 @@
1
+ import { ReelDto } from './reel.dto';
2
+ export declare class ReelStripsConfigDto {
3
+ reels: ReelDto[];
4
+ constructor(reels: ReelDto[]);
5
+ }
@@ -0,0 +1,5 @@
1
+ import { ReelStripOptionDto } from './reel-strip-option.dto';
2
+ export declare class ReelDto {
3
+ options: ReelStripOptionDto[];
4
+ constructor(options: ReelStripOptionDto[]);
5
+ }
@@ -0,0 +1,9 @@
1
+ export declare enum GameRoundType {
2
+ BASE = "BASE",
3
+ BONUS = "BONUS"
4
+ }
5
+ export type BonusProgress = {
6
+ completed: number;
7
+ remaining: number;
8
+ total: number;
9
+ };
@@ -0,0 +1,4 @@
1
+ import { ReelStripsConfig } from '../reel-strips-config';
2
+ export declare class ReelStripsConfigMapper {
3
+ mapRawToDomain(rawReels: number[][][]): ReelStripsConfig;
4
+ }
@@ -0,0 +1,7 @@
1
+ export declare class ReelStripOption {
2
+ readonly symbols: number[];
3
+ constructor(symbols: number[]);
4
+ getSymbols(): number[];
5
+ get length(): number;
6
+ getSymbolAt(position: number): number;
7
+ }
@@ -0,0 +1,9 @@
1
+ import { Reel } from './reel';
2
+ export declare class ReelStripsConfig {
3
+ readonly reels: Reel[];
4
+ constructor(reels: Reel[]);
5
+ getReels(): Reel[];
6
+ getReel(index: number): Reel;
7
+ get reelsCount(): number;
8
+ get optionsCount(): number;
9
+ }
@@ -0,0 +1,8 @@
1
+ import { ReelStripOption } from './reel-strip-option';
2
+ export declare class Reel {
3
+ readonly options: ReelStripOption[];
4
+ constructor(options: ReelStripOption[]);
5
+ getOptions(): ReelStripOption[];
6
+ getOption(index: number): ReelStripOption;
7
+ get numberOfOptions(): number;
8
+ }
@@ -0,0 +1,5 @@
1
+ export type CheatTriggerBonusCommand = {
2
+ sessionId: string;
3
+ bonusType: string;
4
+ betAmount: number;
5
+ };
@@ -1,3 +1,3 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=debug-trigger-bonus-command.js.map
3
+ //# sourceMappingURL=cheat-trigger-bonus-command.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cheat-trigger-bonus-command.js","sourceRoot":"","sources":["../../../src/domain/types/cheat-trigger-bonus-command.ts"],"names":[],"mappings":""}
@@ -0,0 +1,5 @@
1
+ export interface CheatTriggerBonusRequestDto {
2
+ sessionId: string;
3
+ bonusType: string;
4
+ betAmount: number;
5
+ }
@@ -1,3 +1,3 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=debug-trigger-bonus-request.dto.js.map
3
+ //# sourceMappingURL=cheat-trigger-bonus-request.dto.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cheat-trigger-bonus-request.dto.js","sourceRoot":"","sources":["../../../src/domain/types/cheat-trigger-bonus-request.dto.ts"],"names":[],"mappings":""}
@@ -0,0 +1,5 @@
1
+ export type CheatUpdateBonusMeterProgressCommand = {
2
+ sessionId: string;
3
+ bonusType: string;
4
+ progress: number;
5
+ };
@@ -1,3 +1,3 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=debug-update-bonus-meter-progress-command.js.map
3
+ //# sourceMappingURL=cheat-update-bonus-meter-progress-command.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cheat-update-bonus-meter-progress-command.js","sourceRoot":"","sources":["../../../src/domain/types/cheat-update-bonus-meter-progress-command.ts"],"names":[],"mappings":""}
@@ -0,0 +1,5 @@
1
+ export interface CheatUpdateBonusMeterProgressRequestDto {
2
+ sessionId: string;
3
+ bonusType: string;
4
+ progress: number;
5
+ }
@@ -1,3 +1,3 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=debug-update-bonus-meter-progress-request.dto.js.map
3
+ //# sourceMappingURL=cheat-update-bonus-meter-progress-request.dto.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cheat-update-bonus-meter-progress-request.dto.js","sourceRoot":"","sources":["../../../src/domain/types/cheat-update-bonus-meter-progress-request.dto.ts"],"names":[],"mappings":""}
@@ -0,0 +1,8 @@
1
+ export type GameSpinCommand = {
2
+ sessionId: string;
3
+ betAmount: number;
4
+ gameCode: string;
5
+ gameVersion: string;
6
+ lines?: number;
7
+ creditsPerLine?: number;
8
+ };
@@ -0,0 +1,8 @@
1
+ export interface GameSpinInputDto {
2
+ sessionId: string;
3
+ betAmount: number;
4
+ gameCode: string;
5
+ gameVersion: string;
6
+ lines?: number;
7
+ creditsPerLine?: number;
8
+ }
@@ -0,0 +1,119 @@
1
+ export declare enum SpinType {
2
+ BASE_GAME_SPIN = "BASE_GAME_SPIN",
3
+ BONUS_GAME_1_SPIN = "BONUS_GAME_1_SPIN",
4
+ BONUS_GAME_2_SPIN = "BONUS_GAME_2_SPIN",
5
+ BONUS_GAME_3_SPIN = "BONUS_GAME_3_SPIN",
6
+ COLLECT_FEATURE_SPIN = "COLLECT_FEATURE_SPIN"
7
+ }
8
+ export declare enum PrizeType {
9
+ MULTIPLIER = "MULTIPLIER",
10
+ BONUS = "BONUS"
11
+ }
12
+ /** Triggered bonus */
13
+ export interface TriggeredBonusDto {
14
+ bonusId: string;
15
+ bonusType: string;
16
+ betAmount: number;
17
+ }
18
+ /** Winning line */
19
+ export interface WinningLineDto {
20
+ win: number;
21
+ ways: number;
22
+ symbol: number;
23
+ positions: number[][];
24
+ multiplier: number;
25
+ consecutiveReels: number;
26
+ }
27
+ /** Win result */
28
+ export interface WinResultDto {
29
+ totalWin: number;
30
+ winningLines: WinningLineDto[];
31
+ }
32
+ /** Bonus meter */
33
+ export interface BonusMeterDto {
34
+ progress: number;
35
+ symbolId: number;
36
+ threshold: number;
37
+ symbolName: string;
38
+ }
39
+ /** Public state */
40
+ export interface PublicStateDto {
41
+ bonusMeters: Record<string, BonusMeterDto>;
42
+ }
43
+ /** Base Game Spin */
44
+ export interface BaseGameSpinResultDto {
45
+ spinType: SpinType;
46
+ screen: number[][];
47
+ winResult: WinResultDto;
48
+ playerWinning: number;
49
+ nextSpinType: SpinType;
50
+ triggeredBonus?: TriggeredBonusDto;
51
+ }
52
+ /** Treasure Hunt (Bonus Game 1) */
53
+ export interface TreasureHuntSpinResultDto {
54
+ spinType: SpinType;
55
+ selection: string;
56
+ multiplier: number;
57
+ multiplierCounts: Record<string, number>;
58
+ winningMultiplier: number | null;
59
+ winningCount: number;
60
+ totalMultiplier: number;
61
+ }
62
+ /** Free Spin (Bonus Game 2) */
63
+ export interface FreeSpinResultDto {
64
+ spinType: SpinType;
65
+ screen: number[][];
66
+ playerWinning: number;
67
+ nextSpinType: SpinType;
68
+ multiplier: number;
69
+ }
70
+ /** Steering to the Fortune (Bonus Game 3) */
71
+ export interface SteeringToTheFortuneResultDto {
72
+ spinType: SpinType;
73
+ playerWinning: number;
74
+ nextSpinType: SpinType;
75
+ prizeType: PrizeType;
76
+ prizeValue?: number | string;
77
+ totalMultiplier: number;
78
+ triggeredBonus?: TriggeredBonusDto;
79
+ }
80
+ /** Collect Feature Spin */
81
+ export interface CollectFeatureSpinResultDto {
82
+ spinIndex?: number;
83
+ spinType: SpinType;
84
+ symbols?: string[];
85
+ slashed?: boolean[];
86
+ currentValues?: number;
87
+ currentMultipliers?: number;
88
+ totalValues?: number;
89
+ totalMultipliers?: number;
90
+ playerWinning: number;
91
+ totalWin?: number;
92
+ spinsLeft?: number;
93
+ nextSpinType: SpinType;
94
+ }
95
+ export interface BaseGameSpinResultWrapperDto {
96
+ result: BaseGameSpinResultDto;
97
+ }
98
+ export interface FreeSpinResultWrapperDto {
99
+ result: FreeSpinResultDto;
100
+ }
101
+ export interface TreasureHuntSpinResultWrapperDto {
102
+ result: TreasureHuntSpinResultDto;
103
+ }
104
+ export interface SteeringToTheFortuneResultWrapperDto {
105
+ result: SteeringToTheFortuneResultDto;
106
+ }
107
+ export interface CollectFeatureSpinResultWrapperDto {
108
+ result: CollectFeatureSpinResultDto;
109
+ }
110
+ /** Game Spin Output DTO */
111
+ export interface GameSpinOutputDto {
112
+ sessionId: string;
113
+ balance: number;
114
+ betAmount: number;
115
+ balanceBeforeSpin: number;
116
+ outcome: BaseGameSpinResultWrapperDto;
117
+ publicState: PublicStateDto;
118
+ lastSpin: BaseGameSpinResultWrapperDto | FreeSpinResultWrapperDto | TreasureHuntSpinResultWrapperDto | SteeringToTheFortuneResultWrapperDto | CollectFeatureSpinResultWrapperDto | null;
119
+ }
@@ -0,0 +1,10 @@
1
+ export interface GameSymbol {
2
+ symbolId: number;
3
+ name: string;
4
+ multipliers: Record<'x3' | 'x4' | 'x5', number>;
5
+ isWild: boolean;
6
+ isScatter: boolean;
7
+ }
8
+ export declare class GameSymbolsResponseDto {
9
+ symbols: GameSymbol[];
10
+ }
@@ -0,0 +1,4 @@
1
+ export declare class ReelStripOptionDto {
2
+ symbols: number[];
3
+ constructor(symbols: number[]);
4
+ }
@@ -0,0 +1,5 @@
1
+ import { ReelDto } from './reel.dto';
2
+ export declare class ReelStripsConfigDto {
3
+ reels: ReelDto[];
4
+ constructor(reels: ReelDto[]);
5
+ }
@@ -0,0 +1,5 @@
1
+ import { ReelStripOptionDto } from './reel-strip-option.dto';
2
+ export declare class ReelDto {
3
+ options: ReelStripOptionDto[];
4
+ constructor(options: ReelStripOptionDto[]);
5
+ }
@@ -0,0 +1,8 @@
1
+ export type StartBonusRoundCommand = {
2
+ sessionId: string;
3
+ bonusId: string;
4
+ bonusType: string;
5
+ betAmount: number;
6
+ gameCode: string;
7
+ gameVersion: string;
8
+ };
@@ -0,0 +1,10 @@
1
+ export interface StartBonusRoundInputDto {
2
+ sessionId: string;
3
+ bonusType: string;
4
+ betAmount: number;
5
+ gameCode: string;
6
+ gameVersion: string;
7
+ lines?: number;
8
+ creditsPerLine?: number;
9
+ bonusId: string;
10
+ }
@@ -0,0 +1,41 @@
1
+ import { RngClientConfig } from '@omnitronix/rng-client-core';
2
+ export type GameEngineMetricsHandlers = RngClientConfig['metrics']['handlers'];
3
+ export interface GameEngineConfig {
4
+ metrics?: {
5
+ handlers: GameEngineMetricsHandlers;
6
+ };
7
+ }
8
+ export interface GameEngineInfo {
9
+ gameCode: string;
10
+ version: string;
11
+ rtp: number;
12
+ gameType: string;
13
+ gameName: string;
14
+ provider: string;
15
+ }
16
+ export interface RngOutcomeRecord {
17
+ result: number;
18
+ seed: number;
19
+ min: number;
20
+ max: number;
21
+ }
22
+ export type RngOutcome = {
23
+ [actionId: string]: RngOutcomeRecord;
24
+ };
25
+ export interface CommandProcessingResult<TPublicState = any, TPrivateState = any, TOutcome = any> {
26
+ success: boolean;
27
+ publicState: TPublicState;
28
+ privateState: TPrivateState;
29
+ outcome?: TOutcome;
30
+ message?: string;
31
+ rngOutcome?: RngOutcome;
32
+ }
33
+ export interface GameActionCommand<TPayload = any> {
34
+ id: string;
35
+ type: string;
36
+ payload?: TPayload;
37
+ }
38
+ export interface GameEngine<TPublicState = any, TPrivateState = any, TOutcome = any> {
39
+ processCommand(publicState: TPublicState, privateState: TPrivateState, command: GameActionCommand): Promise<CommandProcessingResult<TPublicState, TPrivateState, TOutcome>>;
40
+ getGameEngineInfo(): GameEngineInfo;
41
+ }
@@ -0,0 +1 @@
1
+ export declare const generateHash: (input: string) => string;
@@ -0,0 +1,23 @@
1
+ export declare class NumberHelper {
2
+ /**
3
+ * Safely formats a number to the specified decimal places,
4
+ * minimizing floating-point issues.
5
+ */
6
+ static toFixedNumber(value: number, decimals: number): number;
7
+ /**
8
+ * Safely adds two numbers and formats result.
9
+ */
10
+ static safeSum(a: number, b: number, decimals: number): number;
11
+ /**
12
+ * Safely multiplies two numbers and formats result.
13
+ */
14
+ static safeMultiply(a: number, b: number, decimals: number): number;
15
+ /**
16
+ * Clamps a number between min and max.
17
+ */
18
+ static clamp(value: number, min: number, max: number): number;
19
+ /**
20
+ * Safely divides two numbers.
21
+ */
22
+ static safeDivide(a: number, b: number, decimals: number): number;
23
+ }
@@ -0,0 +1 @@
1
+ export declare const optionalBooleanMapper: Map<string, boolean>;
@@ -0,0 +1,3 @@
1
+ export declare class UuidHelper {
2
+ static generateUuid(): string;
3
+ }