@block52/poker-vm-sdk 1.2.9 → 1.2.12

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.
package/dist/index.d.ts CHANGED
@@ -46420,6 +46420,16 @@ declare class SigningCosmosClient extends CosmosClient {
46420
46420
  * Leave a poker game
46421
46421
  */
46422
46422
  leaveGame(gameId: string): Promise<string>;
46423
+ /**
46424
+ * Record a hand-end game-state snapshot on the chain (pokerchain#239).
46425
+ *
46426
+ * Signed and broadcast directly by the player who finished the position
46427
+ * being recorded (e.g. the 4th-place finisher pushes the state that records
46428
+ * 4th place), so a finished SNG's results reach the chain and the prize pool
46429
+ * becomes claimable. `gameState` is the hand-end TexasHoldemStateDTO,
46430
+ * JSON-encoded (the canonical shape the chain stores in GameStates).
46431
+ */
46432
+ recordHandEnd(gameId: string, gameState: string): Promise<string>;
46423
46433
  /**
46424
46434
  * Delete a poker game
46425
46435
  * Only the game creator can delete a game, and the game must have no active players
package/dist/index.esm.js CHANGED
@@ -3324,6 +3324,89 @@ const MsgLeaveGame = {
3324
3324
  return message;
3325
3325
  },
3326
3326
  };
3327
+ function createBaseMsgRecordHandEnd() {
3328
+ return { creator: "", gameId: "", gameState: "" };
3329
+ }
3330
+ const MsgRecordHandEnd = {
3331
+ encode(message, writer = new BinaryWriter()) {
3332
+ if (message.creator !== "") {
3333
+ writer.uint32(10).string(message.creator);
3334
+ }
3335
+ if (message.gameId !== "") {
3336
+ writer.uint32(18).string(message.gameId);
3337
+ }
3338
+ if (message.gameState !== "") {
3339
+ writer.uint32(26).string(message.gameState);
3340
+ }
3341
+ return writer;
3342
+ },
3343
+ decode(input, length) {
3344
+ const reader = input instanceof BinaryReader ? input : new BinaryReader(input);
3345
+ const end = length === undefined ? reader.len : reader.pos + length;
3346
+ const message = createBaseMsgRecordHandEnd();
3347
+ while (reader.pos < end) {
3348
+ const tag = reader.uint32();
3349
+ switch (tag >>> 3) {
3350
+ case 1: {
3351
+ if (tag !== 10) {
3352
+ break;
3353
+ }
3354
+ message.creator = reader.string();
3355
+ continue;
3356
+ }
3357
+ case 2: {
3358
+ if (tag !== 18) {
3359
+ break;
3360
+ }
3361
+ message.gameId = reader.string();
3362
+ continue;
3363
+ }
3364
+ case 3: {
3365
+ if (tag !== 26) {
3366
+ break;
3367
+ }
3368
+ message.gameState = reader.string();
3369
+ continue;
3370
+ }
3371
+ }
3372
+ if ((tag & 7) === 4 || tag === 0) {
3373
+ break;
3374
+ }
3375
+ reader.skip(tag & 7);
3376
+ }
3377
+ return message;
3378
+ },
3379
+ fromJSON(object) {
3380
+ return {
3381
+ creator: isSet$2b(object.creator) ? globalThis.String(object.creator) : "",
3382
+ gameId: isSet$2b(object.gameId) ? globalThis.String(object.gameId) : "",
3383
+ gameState: isSet$2b(object.gameState) ? globalThis.String(object.gameState) : "",
3384
+ };
3385
+ },
3386
+ toJSON(message) {
3387
+ const obj = {};
3388
+ if (message.creator !== "") {
3389
+ obj.creator = message.creator;
3390
+ }
3391
+ if (message.gameId !== "") {
3392
+ obj.gameId = message.gameId;
3393
+ }
3394
+ if (message.gameState !== "") {
3395
+ obj.gameState = message.gameState;
3396
+ }
3397
+ return obj;
3398
+ },
3399
+ create(base) {
3400
+ return MsgRecordHandEnd.fromPartial(base ?? {});
3401
+ },
3402
+ fromPartial(object) {
3403
+ const message = createBaseMsgRecordHandEnd();
3404
+ message.creator = object.creator ?? "";
3405
+ message.gameId = object.gameId ?? "";
3406
+ message.gameState = object.gameState ?? "";
3407
+ return message;
3408
+ },
3409
+ };
3327
3410
  function createBaseMsgDealCards() {
3328
3411
  return { creator: "", gameId: "" };
3329
3412
  }
@@ -4376,6 +4459,7 @@ const msgTypes$u = [
4376
4459
  ["/pokerchain.poker.v1.MsgCreateGame", MsgCreateGame],
4377
4460
  ["/pokerchain.poker.v1.MsgJoinGame", MsgJoinGame],
4378
4461
  ["/pokerchain.poker.v1.MsgLeaveGame", MsgLeaveGame],
4462
+ ["/pokerchain.poker.v1.MsgRecordHandEnd", MsgRecordHandEnd],
4379
4463
  ["/pokerchain.poker.v1.MsgDealCards", MsgDealCards],
4380
4464
  ["/pokerchain.poker.v1.MsgPerformAction", MsgPerformAction],
4381
4465
  ["/pokerchain.poker.v1.MsgMint", MsgMint],
@@ -60986,6 +61070,37 @@ class SigningCosmosClient extends CosmosClient {
60986
61070
  throw error;
60987
61071
  }
60988
61072
  }
61073
+ /**
61074
+ * Record a hand-end game-state snapshot on the chain (pokerchain#239).
61075
+ *
61076
+ * Signed and broadcast directly by the player who finished the position
61077
+ * being recorded (e.g. the 4th-place finisher pushes the state that records
61078
+ * 4th place), so a finished SNG's results reach the chain and the prize pool
61079
+ * becomes claimable. `gameState` is the hand-end TexasHoldemStateDTO,
61080
+ * JSON-encoded (the canonical shape the chain stores in GameStates).
61081
+ */
61082
+ async recordHandEnd(gameId, gameState) {
61083
+ await this.initializeSigningClient();
61084
+ if (!this.signingClient || !this.wallet) {
61085
+ throw new Error("Signing client not initialized");
61086
+ }
61087
+ const [account] = await this.wallet.getAccounts();
61088
+ const creator = account.address;
61089
+ const msg = {
61090
+ typeUrl: "/pokerchain.poker.v1.MsgRecordHandEnd",
61091
+ value: { creator, gameId, gameState }
61092
+ };
61093
+ const fee = gaslessFee();
61094
+ const memo = "Record hand end via SDK";
61095
+ try {
61096
+ const result = await this.signingClient.signAndBroadcast(creator, [msg], fee, memo);
61097
+ return result.transactionHash;
61098
+ }
61099
+ catch (error) {
61100
+ console.error("❌ Record hand end failed:", error);
61101
+ throw error;
61102
+ }
61103
+ }
60989
61104
  /**
60990
61105
  * Delete a poker game
60991
61106
  * Only the game creator can delete a game, and the game must have no active players