@ledinhhoankhai/bcr-algorithm
Version:
Clean & Optimized Algorithm Logic
79 lines (67 loc) • 1.79 kB
TypeScript
export interface BaccaratConstants {
MIN_BET: number;
MAX_BET: number;
RATE: number;
CHIP_VALUES: number[];
ACTION_TYPES: {
CHIPS: string;
UNDO: string;
X2: string;
DOUBLE: string;
REBET: string;
};
}
export interface BetRequest {
id: string;
args: {
action: {
name: string;
chips?: Record<string, number>;
};
};
}
export interface BetResponse {
undo?: boolean;
[betType: string]: number | boolean | undefined;
}
export interface DebugInfo {
serverBet: Record<string, number>;
userActions: number;
lastRoundBets: Record<string, number>;
userBetCalculated: Record<string, number>;
}
export default class Baccarat {
static CONSTANTS: BaccaratConstants;
// Configuration properties
min: number;
max: number;
rate: number;
chipValues: number[];
actionTypes: typeof Baccarat.CONSTANTS.ACTION_TYPES;
// Core state
serverBet: Record<string, number>;
userActions: Array<any>;
lastRoundBets: Record<string, number>;
// Legacy properties (deprecated)
history: Array<any>;
userBet: Record<string, number>;
historyCleared: Array<any>;
constructor();
/**
* Main entry point for processing bet requests
*/
onRequestBet(request: BetRequest): BetResponse | false;
/**
* Reset state for new round (keeps lastRoundBets for Rebet)
*/
resetForNewRound(): void;
/**
* Get current debug information
*/
getDebugInfo(): DebugInfo;
// Legacy methods (deprecated)
handleUserBet(): Record<string, number>;
calculateServerBetFromActions(): Record<string, number>;
handleCleanHistory(): Array<any>;
mergeBetToServerBet(bet: Record<string, number>): Record<string, number>;
}