Mines

Reveal safe tiles on a grid while avoiding hidden mines. Each safe reveal lifts your multiplier; cash out any time, or bust on a mine. Multi-action.

Slug: mines · Type: multi-action · TS types: @jackpot-studio/jps-proto/mines

A round is: start (debits wager, places mines) → one or more revealcashout (or bust). An instant variant plays a pre-chosen set of tiles in a single call.

Start

RequestQuery.start

Field Type Notes
amount string Wager, decimal string.
mineCount int Number of mines (1 – gridSize−1).
gridSize int 25 (5×5), 36, 49, or 64 (8×8).
{ "start": { "amount": "1.00", "mineCount": 3, "gridSize": 25 } }

The response carries metadata (with roundId), the opening state, and an empty start response. Keep the roundId for follow-up actions.

Reveal

RequestQuery.reveal

Field Type Notes
field int Tile index to reveal (0-based).
roundId string The open round.
{ "reveal": { "field": 7, "roundId": "9f1c…" } }
  • Safe tile: reveal.result is absent/empty; state.rounds gains an entry and the running multiplier updates. The round stays open.
  • Mine: the round ends. state.active becomes false, the full mines array is now revealed, and result carries the (zero) payout.

Cashout

RequestQuery.cashout: { "roundId": "9f1c…" }. Settles at the current multiplier, credits the payout, closes the round. cashout.result carries the final { payout, multiplier }.

Instant

RequestQuery.instant: { amount, mineCount, gridSize, fields: [int] } — reveals the listed fields in order in one call. instant.result carries the outcome.

State

GameState:

Field Type Notes
active bool Round still open.
mineCount int
gridSize int
mines int[] Mine positions — hidden while active, revealed on bust/cashout.
rounds Round[] Each revealed tile: { field, multiplier }.
cashedOut bool

Verify

VerifyRequest: { mineCount, gridSize }. Response returns the mine layout for those parameters.

// request message
{ "mineCount": 3, "gridSize": 25 }
// response message
{ "mines": [4, 11, 19] }