Lightweight TypeScript client extracted from Stake Engine web-sdk for RGS (Remote Gaming Server) API communication. Contains only essential backend communication code without Svelte dependencies or slot game scripts.
npm install stake-engine-client
import { requestAuthenticate, requestBet } from 'stake-engine-client';
// Authenticate player
const auth = await requestAuthenticate({
sessionID: 'player-session-123',
rgsUrl: 'api.stakeengine.com',
language: 'en'
});
console.log('Player balance:', auth.balance?.amount);
console.log('Available bet levels:', auth.config?.betLevels);
// Place a bet
const bet = await requestBet({
sessionID: 'player-session-123',
currency: 'USD',
amount: 1.00, // $1.00 (automatically converted)
mode: 'base',
rgsUrl: 'api.stakeengine.com'
});
console.log('Round ID:', bet.round?.roundID);
console.log('Payout multiplier:', bet.round?.payoutMultiplier);
requestAuthenticate(options)
Authenticate a player session with the RGS.
const auth = await requestAuthenticate({
sessionID: string,
rgsUrl: string,
language: string
});
Returns: AuthenticateResponse
balance
- Player's current balanceconfig
- Game configuration including bet levelsround
- Active round information (if any)status
- Operation statusrequestBet(options)
Place a bet and start a new round.
const bet = await requestBet({
sessionID: string,
currency: string,
amount: number, // Dollar amount (e.g., 1.00 for $1)
mode: string, // Bet mode (e.g., 'base')
rgsUrl: string
});
Returns: PlayResponse
round
- Round details including payout and multiplierbalance
- Updated player balancestatus
- Operation statusrequestEndRound(options)
End the current betting round.
const result = await requestEndRound({
sessionID: string,
rgsUrl: string
});
requestBalance(options)
Get current player balance.
const balance = await requestBalance({
sessionID: string,
rgsUrl: string
});
requestEndEvent(options)
Track a game event for bet progress.
const result = await requestEndEvent({
sessionID: string,
eventIndex: number,
rgsUrl: string
});
requestForceResult(options)
Search for specific game results (useful for testing).
const results = await requestForceResult({
mode: string,
search: {
bookID?: number,
kind?: number,
symbol?: string,
hasWild?: boolean,
wildMult?: number,
gameType?: string
},
rgsUrl: string
});
import { StakeEngineClient } from 'stake-engine-client';
const client = new StakeEngineClient();
// Make custom API calls with full type safety
const response = await client.post({
url: '/wallet/authenticate',
rgsUrl: 'api.stakeengine.com',
variables: {
sessionID: 'player-123',
language: 'en'
}
});
import { fetcher } from 'stake-engine-client';
const response = await fetcher({
method: 'POST',
endpoint: 'https://api.stakeengine.com/wallet/play',
variables: { sessionID: 'abc123', amount: 1000000 }
});
const data = await response.json();
The client automatically handles amount conversion between different formats:
import { API_AMOUNT_MULTIPLIER, BOOK_AMOUNT_MULTIPLIER } from 'stake-engine-client';
// API format: 1,000,000 = $1.00
const apiAmount = 1.00 * API_AMOUNT_MULTIPLIER; // 1000000
// Book format: 100 = $1.00
const bookAmount = 1.00 * BOOK_AMOUNT_MULTIPLIER; // 100
The package includes comprehensive TypeScript definitions:
import type {
StatusCode,
BalanceObject,
RoundDetailObject,
ConfigObject,
AuthenticateResponse,
PlayResponse,
BetType,
BaseBetType
} from 'stake-engine-client';
The RGS API returns standard status codes:
SUCCESS
- Operation completed successfullyERR_IPB
- Insufficient player balanceERR_IS
- Invalid session token/timeoutERR_ATE
- Authentication failed/expiredERR_GLE
- Gambling limits exceededERR_BNF
- Bet not foundERR_UE
- Unknown server errorFor game-specific betting logic:
interface MyGameEvent {
symbol: string;
multiplier: number;
position: [number, number];
}
type MyGameBet = BetType<MyGameEvent>;
// Use in your game logic
const processBet = (bet: MyGameBet) => {
bet.state.forEach(event => {
console.log(`Symbol ${event.symbol} at ${event.position}`);
});
};
All methods return responses with status information:
const bet = await requestBet({
sessionID: 'player-123',
currency: 'USD',
amount: 1.00,
mode: 'base',
rgsUrl: 'api.stakeengine.com'
});
if (bet.status?.statusCode === 'SUCCESS') {
// Handle successful bet
console.log('Bet placed successfully!');
} else if (bet.status?.statusCode === 'ERR_IPB') {
// Handle insufficient balance
console.log('Insufficient balance');
} else {
// Handle other errors
console.log('Error:', bet.status?.statusMessage);
}
This package was extracted from the official Stake Engine web-sdk to provide:
ā Included:
ā Removed:
This makes the package much lighter and suitable for any JavaScript framework or backend usage.
MIT
This package is extracted from Stake Engine web-sdk. For updates to the core functionality, please refer to the original repository.
For issues specific to this extraction or TypeScript definitions, please file issues in this repository.