@smartico/public-api 0.0.380 → 0.0.382

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 (178) hide show
  1. package/CLAUDE.md +103 -0
  2. package/README.md +32 -10
  3. package/dist/Base/ClassId.d.ts +2 -0
  4. package/dist/Jackpots/JackpotDetails.d.ts +14 -15
  5. package/dist/Jackpots/JackpotPot.d.ts +10 -6
  6. package/dist/MiniGames/SAWGameType.d.ts +3 -1
  7. package/dist/MiniGames/SAWTemplateUI.d.ts +7 -0
  8. package/dist/Raffle/GetRaffleWonPrizesRequest.d.ts +9 -0
  9. package/dist/Raffle/GetRaffleWonPrizesResponse.d.ts +52 -0
  10. package/dist/Raffle/index.d.ts +2 -0
  11. package/dist/SmarticoAPI.d.ts +6 -1
  12. package/dist/SmarticoLib/index.d.ts +5 -1
  13. package/dist/WSAPI/WSAPIAvatars.d.ts +267 -49
  14. package/dist/WSAPI/WSAPIBonuses.d.ts +224 -10
  15. package/dist/WSAPI/WSAPIGamePick.d.ts +538 -253
  16. package/dist/WSAPI/WSAPIGeneral.d.ts +156 -14
  17. package/dist/WSAPI/WSAPIInbox.d.ts +547 -58
  18. package/dist/WSAPI/WSAPIJackpots.d.ts +292 -57
  19. package/dist/WSAPI/WSAPILeaderBoard.d.ts +127 -13
  20. package/dist/WSAPI/WSAPIMiniGames.d.ts +465 -49
  21. package/dist/WSAPI/WSAPIRaffles.d.ts +576 -52
  22. package/dist/WSAPI/WSAPITournaments.d.ts +3 -3
  23. package/dist/WSAPI/WSAPITypes.d.ts +243 -132
  24. package/dist/WSAPI/WSAPIUser.d.ts +193 -43
  25. package/dist/index.js +3412 -616
  26. package/dist/index.js.map +1 -1
  27. package/dist/index.modern.mjs +3395 -609
  28. package/dist/index.modern.mjs.map +1 -1
  29. package/docs/Callbacks.md +162 -0
  30. package/docs/SmarticoObject.md +445 -0
  31. package/docs/Transforms.md +99 -0
  32. package/docs/api/README.md +26 -0
  33. package/docs/api/classes/WSAPIAvatars.md +282 -54
  34. package/docs/api/classes/WSAPIBonuses.md +233 -12
  35. package/docs/api/classes/WSAPIClans.md +380 -10
  36. package/docs/api/classes/WSAPIGamePick.md +555 -26
  37. package/docs/api/classes/WSAPIGeneral.md +165 -16
  38. package/docs/api/classes/WSAPIInbox.md +588 -64
  39. package/docs/api/classes/WSAPIJackpots.md +320 -66
  40. package/docs/api/classes/WSAPILeaderBoard.md +133 -15
  41. package/docs/api/classes/WSAPIMiniGames.md +501 -64
  42. package/docs/api/classes/WSAPIMissions.md +58 -79
  43. package/docs/api/classes/WSAPIRaffles.md +647 -69
  44. package/docs/api/classes/WSAPIStore.md +83 -108
  45. package/docs/api/classes/WSAPITournaments.md +495 -28
  46. package/docs/api/classes/WSAPIUser.md +520 -83
  47. package/docs/api/documents/Callbacks.md +162 -0
  48. package/docs/api/documents/SmarticoObject.md +445 -0
  49. package/docs/api/documents/Transforms.md +99 -0
  50. package/docs/api/enumerations/BonusStatus-1.md +11 -6
  51. package/docs/api/enumerations/JoinClanErrorCode.md +81 -0
  52. package/docs/api/enumerations/TournamentRegistrationError.md +12 -0
  53. package/docs/api/functions/clanTournamentPlayersTransform.md +13 -0
  54. package/docs/api/interfaces/AvatarCustomized.md +25 -0
  55. package/docs/api/interfaces/AvatarDefinition.md +94 -0
  56. package/docs/api/interfaces/AvatarPrompt.md +45 -0
  57. package/docs/api/interfaces/BonusMetaMap-1.md +4 -1
  58. package/docs/api/interfaces/BonusTemplateMetaMap-1.md +9 -4
  59. package/docs/api/interfaces/Clan.md +4 -0
  60. package/docs/api/interfaces/ClanInfo.md +109 -0
  61. package/docs/api/interfaces/ClanMember.md +53 -0
  62. package/docs/api/interfaces/ClanTournamentPlayerRaw.md +67 -0
  63. package/docs/api/interfaces/GemsDiamondsLog.md +43 -0
  64. package/docs/api/interfaces/GetClanInfoResponse.md +61 -0
  65. package/docs/api/interfaces/GetClanTournamentPlayersResponse.md +81 -0
  66. package/docs/api/interfaces/GetRaffleWonPrizesRequest.md +59 -0
  67. package/docs/api/interfaces/GetRaffleWonPrizesResponse.md +95 -0
  68. package/docs/api/interfaces/InboxMarkMessageAction.md +10 -2
  69. package/docs/api/interfaces/JackpotDetails.md +14 -15
  70. package/docs/api/interfaces/JackpotPot.md +9 -6
  71. package/docs/api/interfaces/LeaderBoardDetailsT.md +14 -8
  72. package/docs/api/interfaces/LeaderBoardUserT.md +8 -5
  73. package/docs/api/interfaces/LeaderBoardsRewardsT.md +7 -0
  74. package/docs/api/interfaces/PointsLog.md +43 -0
  75. package/docs/api/interfaces/RaffleWonPrize.md +59 -0
  76. package/docs/api/interfaces/RaffleWonPrizePublicMeta.md +27 -0
  77. package/docs/api/interfaces/RaffleWonPrizeUser.md +43 -0
  78. package/docs/api/interfaces/TAchCategory.md +2 -7
  79. package/docs/api/interfaces/TAvatarCustomized.md +4 -4
  80. package/docs/api/interfaces/TAvatarDefinition.md +13 -14
  81. package/docs/api/interfaces/TAvatarPrompt.md +6 -6
  82. package/docs/api/interfaces/TBonus.md +16 -8
  83. package/docs/api/interfaces/TBuyStoreItemResult.md +4 -29
  84. package/docs/api/interfaces/TClaimBonusResult.md +5 -5
  85. package/docs/api/interfaces/TClan.md +8 -4
  86. package/docs/api/interfaces/TClanInfo.md +47 -0
  87. package/docs/api/interfaces/TClanJoinResult.md +11 -1
  88. package/docs/api/interfaces/TClanTournamentPlayer.md +55 -0
  89. package/docs/api/interfaces/TClanTournamentPlayersResult.md +27 -0
  90. package/docs/api/interfaces/TClans.md +3 -1
  91. package/docs/api/interfaces/TGetTranslations.md +4 -0
  92. package/docs/api/interfaces/TInboxMessage.md +14 -6
  93. package/docs/api/interfaces/TInboxMessageBody.md +18 -12
  94. package/docs/api/interfaces/TLevel.md +17 -20
  95. package/docs/api/interfaces/TLevelCurrent.md +19 -18
  96. package/docs/api/interfaces/TMiniGamePlayBatchResult.md +14 -6
  97. package/docs/api/interfaces/TMiniGamePlayResult.md +9 -4
  98. package/docs/api/interfaces/TMissionClaimRewardResult.md +1 -9
  99. package/docs/api/interfaces/TMissionOptInResult.md +1 -5
  100. package/docs/api/interfaces/TMissionOrBadge.md +4 -7
  101. package/docs/api/interfaces/TRaffleOptinResponse.md +4 -2
  102. package/docs/api/interfaces/TSegmentCheckResult.md +10 -0
  103. package/docs/api/interfaces/TSetAvatarResult.md +3 -3
  104. package/docs/api/interfaces/TStoreItem.md +3 -13
  105. package/docs/api/interfaces/TTournament.md +1 -1
  106. package/docs/api/interfaces/TTournamentDetailed.md +1 -1
  107. package/docs/api/interfaces/TTournamentRegistrationResult.md +4 -2
  108. package/docs/api/interfaces/TUICustomSection.md +23 -19
  109. package/docs/api/interfaces/TUserProfile.md +18 -16
  110. package/docs/api/interfaces/TransformedRaffleClaimPrizeResponse.md +6 -2
  111. package/docs/api/interfaces/UserLevelExtraCountersT.md +9 -2
  112. package/docs/api/type-aliases/ActivityLogEntry.md +3 -0
  113. package/docs/native/ADDING_METHODS.md +7 -2
  114. package/docs/native/PROTOCOL.md +337 -0
  115. package/docs/ui/avatars/UIGuide_getAvatarPrompts.md +100 -0
  116. package/docs/ui/avatars/UIGuide_getAvatarsCustomized.md +90 -0
  117. package/docs/ui/avatars/UIGuide_getAvatarsList.md +105 -0
  118. package/docs/ui/avatars/UIGuide_setAvatar.md +118 -0
  119. package/docs/ui/bonuses/UIGuide_claimBonus.md +144 -0
  120. package/docs/ui/bonuses/UIGuide_getBonuses.md +176 -0
  121. package/docs/ui/gamepick/UIGuide_gamePickGetActiveRound.md +99 -0
  122. package/docs/ui/gamepick/UIGuide_gamePickGetActiveRounds.md +76 -0
  123. package/docs/ui/gamepick/UIGuide_gamePickGetBoard.md +81 -0
  124. package/docs/ui/gamepick/UIGuide_gamePickGetGameInfo.md +78 -0
  125. package/docs/ui/gamepick/UIGuide_gamePickGetHistory.md +55 -0
  126. package/docs/ui/gamepick/UIGuide_gamePickGetRoundInfoForUser.md +71 -0
  127. package/docs/ui/gamepick/UIGuide_gamePickGetUserInfo.md +64 -0
  128. package/docs/ui/gamepick/UIGuide_gamePickSubmitSelection.md +103 -0
  129. package/docs/ui/gamepick/UIGuide_gamePickSubmitSelectionQuiz.md +67 -0
  130. package/docs/ui/general/UIGuide_getCustomSections.md +137 -0
  131. package/docs/ui/general/UIGuide_getRelatedItemsForGame.md +140 -0
  132. package/docs/ui/inbox/UIGuide_deleteInboxMessage.md +135 -0
  133. package/docs/ui/inbox/UIGuide_getInboxMessageBody.md +133 -0
  134. package/docs/ui/inbox/UIGuide_getInboxMessages.md +186 -0
  135. package/docs/ui/inbox/UIGuide_markInboxMessageAsRead.md +122 -0
  136. package/docs/ui/inbox/UIGuide_markUnmarkInboxMessageAsFavorite.md +84 -0
  137. package/docs/ui/jackpots/UIGuide_getJackpotEligibleGames.md +73 -0
  138. package/docs/ui/jackpots/UIGuide_getJackpotWinners.md +83 -0
  139. package/docs/ui/jackpots/UIGuide_jackpotGet.md +138 -0
  140. package/docs/ui/jackpots/UIGuide_jackpotOptIn.md +85 -0
  141. package/docs/ui/jackpots/UIGuide_jackpotOptOut.md +65 -0
  142. package/docs/ui/leaderboard/UIGuide_getLeaderBoard.md +166 -0
  143. package/docs/ui/minigames/UIGuide_getMiniGames.md +153 -0
  144. package/docs/ui/minigames/UIGuide_getMiniGamesHistory.md +90 -0
  145. package/docs/ui/minigames/UIGuide_playMiniGame.md +150 -0
  146. package/docs/ui/minigames/UIGuide_playMiniGameBatch.md +128 -0
  147. package/docs/ui/raffles/UIGuide_claimRafflePrize.md +99 -0
  148. package/docs/ui/raffles/UIGuide_getRaffleDrawRun.md +117 -0
  149. package/docs/ui/raffles/UIGuide_getRaffleDrawRunsHistory.md +92 -0
  150. package/docs/ui/raffles/UIGuide_getRaffleWonPrizes.md +120 -0
  151. package/docs/ui/raffles/UIGuide_getRaffles.md +175 -0
  152. package/docs/ui/raffles/UIGuide_requestRaffleOptin.md +114 -0
  153. package/docs/ui/user/UIGuide_getActivityLog.md +130 -0
  154. package/docs/ui/user/UIGuide_getLevels.md +47 -42
  155. package/package.json +1 -1
  156. package/src/Base/ClassId.ts +2 -0
  157. package/src/Jackpots/JackpotDetails.ts +14 -15
  158. package/src/Jackpots/JackpotPot.ts +10 -6
  159. package/src/MiniGames/SAWGameType.ts +3 -0
  160. package/src/MiniGames/SAWTemplateUI.ts +10 -0
  161. package/src/Raffle/GetRaffleWonPrizesRequest.ts +12 -0
  162. package/src/Raffle/GetRaffleWonPrizesResponse.ts +56 -0
  163. package/src/Raffle/index.ts +3 -1
  164. package/src/SmarticoAPI.ts +14 -1
  165. package/src/SmarticoLib/index.ts +4 -0
  166. package/src/WSAPI/WSAPIAvatars.ts +267 -49
  167. package/src/WSAPI/WSAPIBonuses.ts +224 -10
  168. package/src/WSAPI/WSAPIGamePick.ts +538 -253
  169. package/src/WSAPI/WSAPIGeneral.ts +156 -14
  170. package/src/WSAPI/WSAPIInbox.ts +545 -56
  171. package/src/WSAPI/WSAPIJackpots.ts +297 -61
  172. package/src/WSAPI/WSAPILeaderBoard.ts +127 -13
  173. package/src/WSAPI/WSAPIMiniGames.ts +465 -49
  174. package/src/WSAPI/WSAPIRaffles.ts +592 -64
  175. package/src/WSAPI/WSAPITournaments.ts +3 -3
  176. package/src/WSAPI/WSAPITypes.ts +243 -132
  177. package/src/WSAPI/WSAPIUser.ts +193 -43
  178. package/tsconfig.json +9 -1
package/CLAUDE.md ADDED
@@ -0,0 +1,103 @@
1
+ # public-api (`@smartico/public-api`)
2
+
3
+ Smartico's public WebSocket SDK. This code is compiled (by the `tracker`
4
+ repo's Rollup) straight into the browser bundles served from CloudFront —
5
+ **every line here ships to end users' browsers.**
6
+
7
+ ## Conventions / footguns
8
+
9
+ - **Keep code compact — it's bundle size.** This SDK is shipped to the
10
+ browser, so added code is added download weight for every end user. Prefer
11
+ the smallest implementation that does the job:
12
+ - **Don't write a transform that is ~1:1 with the wire shape.** If a
13
+ protocol response is already the shape consumers need, expose the
14
+ `…Response` protocol type directly instead of defining a parallel `T…`
15
+ interface plus a `…Transform()` mapper. Reserve transforms for cases
16
+ that genuinely reshape, flatten, rename, or compute (e.g.
17
+ `raffleTransform`, `drawRunTransform`).
18
+ - Don't add parallel type hierarchies, defensive copies, or wrapper layers
19
+ that don't earn their bytes.
20
+ - Favor reusing existing helpers/types over introducing near-duplicates.
21
+ - TSDoc/comments are stripped from the bundle — document generously; it's
22
+ only runtime code that counts against size.
23
+
24
+ ## Documentation (`docs/`)
25
+
26
+ The SDK ships a documentation set under `docs/`. It mixes **TypeDoc-generated
27
+ reference** with **hand-authored concept/guide docs**. Build wiring lives in
28
+ `package.json` (the `doc` script) and `tsconfig.json` (`typedocOptions`).
29
+
30
+ ### Layout — what is generated vs hand-authored
31
+
32
+ | Path | Created by | What it is |
33
+ |---|---|---|
34
+ | `docs/api/` | **Generated** by `typedoc` | The API reference — one page per WSAPI class / interface / enum / type / function, built from the TSDoc in `src/`. Subfolders: `classes/`, `interfaces/`, `enumerations/`, `type-aliases/`, `functions/`, `variables/`, `documents/`. Wiped and rebuilt on every `npm run doc` (`cleanOutputDir: true`). **Never hand-edit — changes are overwritten.** To add a page, add the source `.ts` to `typedocOptions.entryPoints` in `tsconfig.json`; never hand-create the `.md`. |
35
+ | `docs/ui/<domain>/UIGuide_<method>.md` | Hand-authored | Per-method UI guidance (rendering patterns, polling cadence, CTA gating). Method TSDoc links here via a relative `[UI Guide](../../docs/ui/...)` reference instead of inlining long UI prose. One folder per domain (`raffles`, `store`, `missions`, …). |
36
+ | `docs/SmarticoObject.md` | Hand-authored | Reference for the global `_smartico` object's **core** methods (`init`, identify, deep links, widget embedding, push). Sourced from the tracker repo's `../tracker/src/tracker/Smartico.ts` — these methods live in the tracker, not here. |
37
+ | `docs/Callbacks.md` | Hand-authored | The `_smartico.on(...)` lifecycle/engagement event catalogue. Sourced from the tracker's external-callback enum + its `triggerExternalCallBack` sites. |
38
+ | `docs/Transforms.md` | Hand-authored | Concept doc for the raw-protocol → friendly-`T`-type transform layer (the `T`-type / `*Transform` fn / `*T` method convention described above). |
39
+ | `docs/native/PROTOCOL.md`, `docs/native/ADDING_METHODS.md` | Hand-authored | Raw WebSocket protocol spec for native (Kotlin/Swift) clients, which speak the wire directly and do **not** get the JS transforms. Documents raw request/response shapes + `ClassId`s — the one place `ClassId` values are allowed in docs. |
40
+
41
+ The three concept docs (`SmarticoObject.md`, `Callbacks.md`, `Transforms.md`)
42
+ are wired into TypeDoc via `typedocOptions.projectDocuments`, so they render
43
+ inside the generated `docs/api` site alongside the reference.
44
+
45
+ ### Build
46
+
47
+ - `npm run doc` = `typedoc && node scripts/postdoc-cleanup.js`.
48
+ - `typedoc` is driven entirely by `typedocOptions` in `tsconfig.json`:
49
+ `entryPoints` (the `src/**` files whose exports become reference pages —
50
+ **add new public types/classes here or they won't appear in `docs/api`**),
51
+ `out: docs/api`, `projectDocuments`, the markdown + merge-modules plugins, and
52
+ flags (`excludePrivate`, `excludeProtected`, `disableSources`,
53
+ `cleanOutputDir`, …).
54
+ - `scripts/postdoc-cleanup.js` post-processes what TypeDoc can't configure away:
55
+ strips inheritance-chain "Extends / Extended by" blocks, strips methods
56
+ duplicated onto every subclass by the prototype chain, and rewrites the
57
+ `_media/`-copied UI-guide links back to `docs/ui/` (single source of truth).
58
+ - **`npm run doc` is human-triggered after a batch of approved doc edits — do
59
+ not run it as part of a code change, and never edit `docs/api/**` by hand.**
60
+
61
+ ### Authoring rules (from the `api-tsdoc` / `api-tsdoc-final` skills)
62
+
63
+ These docs are the **public SDK contract** read by 3rd-party integrators, so all
64
+ TSDoc and concept-doc content is strictly consumer-facing:
65
+
66
+ - **No internal references** in `/** */` blocks or concept docs: no DB
67
+ schemas/tables, server class/file refs, `ClassId` values (except in
68
+ `PROTOCOL.md`, the raw spec), internal enum/status numbers, cache/infra names,
69
+ Jira refs, or BO admin paths. Describe *behavior*, not implementation. Call
70
+ the in-tracker reference UI **"the default Smartico UI."**
71
+ - **Type docs vs method docs split.** `WSAPITypes.ts` field comments are terse
72
+ one-line definitions ("what is this field"); the `WSAPI<Domain>.ts` method
73
+ TSDoc carries narrative usage prose ("what you do with it" — preconditions,
74
+ error tables, refresh/cache semantics, idempotency, visitor mode). Don't
75
+ duplicate a field-by-field reference into the method TSDoc.
76
+ - **Wrapper result types** (`err_code` / `err_message`) get a one-line pointer
77
+ to the owning method's TSDoc, not a duplicated error table.
78
+ - `@example` blocks use `console.log` / `console.error` with descriptive
79
+ messages stating what the consumer's UI should do — never pseudo-handlers
80
+ (`toast`, `showError`) or internal types.
81
+ - `/api-tsdoc <method>` enriches one method (+ its UI guide); `/api-tsdoc-final`
82
+ runs the whole release doc batch (callbacks, `_smartico` object, native
83
+ protocol, transforms, method TSDocs) and stops at a prepared commit message.
84
+ Both **never commit and never run `npm run doc`.**
85
+
86
+ ### Relationship to the `tracker` repo (`../tracker`)
87
+
88
+ This package is published to npm as `@smartico/public-api` and **consumed** by
89
+ the sibling `../tracker` repo, which is what actually ships to browsers. In
90
+ `../tracker/src/tracker/Smartico.ts` the tracker constructs a `SmarticoAPI` and
91
+ exposes its `getWSCalls()` result as `_smartico.api` (the `WSAPI` surface these
92
+ docs document), plus a visitor-mode `_smartico.vapi`. Consequences:
93
+
94
+ - The `docs/api` reference documents exactly the `_smartico.api.*` methods the
95
+ tracker re-exports. A method added here (e.g. `getRaffleWonPrizes`) reaches
96
+ `_smartico.api` only once the tracker bumps its dependency
97
+ (`npm run bump-tracker`, i.e. `npm install @smartico/public-api@latest` in
98
+ `../tracker`) and re-bundles.
99
+ - `docs/SmarticoObject.md` documents the *other* half — the core `_smartico.*`
100
+ methods that live in the tracker's `Smartico.ts`, not in this repo. Keeping it
101
+ current means reading that tracker file (the `api-tsdoc-final` batch diffs it).
102
+ - `docs/Callbacks.md` likewise tracks the tracker's external-callback enum and
103
+ emit sites.
package/README.md CHANGED
@@ -38,29 +38,51 @@ _smartico.api.getMiniGames( { onUpdate: miniGamesUpdates} ).then( games => {
38
38
 
39
39
  ```
40
40
 
41
+ ## The `_smartico` object
42
+
43
+ Beyond `_smartico.api.*`, the global `_smartico` object exposes core methods for initialization, user identity, language, deep links, embedding widgets, and push — `_smartico.init(...)`, `_smartico.online(...)`, `_smartico.dp(...)`, `_smartico.showWidget(...)`, etc.
44
+
45
+ See the [**`_smartico` object reference**](docs/SmarticoObject.md) for the most important core methods, their arguments, and usage notes.
46
+
47
+ ## Event callbacks
48
+
49
+ Beyond the `_smartico.api.*` request/response methods, the SDK emits lifecycle and engagement events (user identified, balance changed, gamification widget opened, mini-game won, jackpot hit, …). Subscribe with `_smartico.on('<event>', handler)`:
50
+
51
+ ```javascript
52
+
53
+ _smartico.on('props_change', (props) => {
54
+ console.log('User properties changed', props);
55
+ });
56
+
57
+ ```
58
+
59
+ See the [**Event callbacks reference**](docs/Callbacks.md) for the full list of events, when each fires, and the handler arguments.
60
+
41
61
  ## API reference
42
62
 
43
63
  The SDK surface is split across one class per feature area, joined by an internal inheritance chain. Consumers always call `_smartico.api.<methodName>(...)` — the chain is an implementation detail; never import the domain classes directly.
44
64
 
45
65
  | Domain | Reference | Methods | UI Guides |
46
66
  |---|---|---|---|
47
- | **User / Profile / Levels** | [`WSAPIUser`](docs/api/classes/WSAPIUser.md) | `getUserProfile`, `checkSegmentMatch`, `checkSegmentListMatch`, `getLevels`, `getCurrentLevel`, `getUserLevelExtraCounters`, `getActivityLog` | [`getUserProfile`](docs/ui/user/UIGuide_getUserProfile.md) · [`getLevels`](docs/ui/user/UIGuide_getLevels.md) |
48
- | **General / Utility** | [`WSAPIGeneral`](docs/api/classes/WSAPIGeneral.md) | `getCustomSections`, `getTranslations`, `getRelatedItemsForGame` | — |
67
+ | **User / Profile / Levels** | [`WSAPIUser`](docs/api/classes/WSAPIUser.md) | `getUserProfile`, `checkSegmentMatch`, `checkSegmentListMatch`, `getLevels`, `getCurrentLevel`, `getUserLevelExtraCounters`, `getActivityLog` | [`getUserProfile`](docs/ui/user/UIGuide_getUserProfile.md) · [`getLevels`](docs/ui/user/UIGuide_getLevels.md) · [`getActivityLog`](docs/ui/user/UIGuide_getActivityLog.md) |
68
+ | **General / Utility** | [`WSAPIGeneral`](docs/api/classes/WSAPIGeneral.md) | `getCustomSections`, `getTranslations`, `getRelatedItemsForGame` | [`getCustomSections`](docs/ui/general/UIGuide_getCustomSections.md) · [`getRelatedItemsForGame`](docs/ui/general/UIGuide_getRelatedItemsForGame.md) |
49
69
  | **Missions & Badges** | [`WSAPIMissions`](docs/api/classes/WSAPIMissions.md) | `getMissions`, `getBadges`, `getAchCategories`, `requestMissionOptIn`, `requestMissionClaimReward` | [`getMissions`](docs/ui/missions/UIGuide_getMissions.md) · [`getBadges`](docs/ui/missions/UIGuide_getBadges.md) · [`getAchCategories`](docs/ui/missions/UIGuide_getAchCategories.md) · [`requestMissionOptIn`](docs/ui/missions/UIGuide_requestMissionOptIn.md) · [`requestMissionClaimReward`](docs/ui/missions/UIGuide_requestMissionClaimReward.md) |
50
- | **Bonuses** | [`WSAPIBonuses`](docs/api/classes/WSAPIBonuses.md) | `getBonuses`, `claimBonus` | — |
70
+ | **Bonuses** | [`WSAPIBonuses`](docs/api/classes/WSAPIBonuses.md) | `getBonuses`, `claimBonus` | [`getBonuses`](docs/ui/bonuses/UIGuide_getBonuses.md) · [`claimBonus`](docs/ui/bonuses/UIGuide_claimBonus.md) |
51
71
  | **Store / Shop** | [`WSAPIStore`](docs/api/classes/WSAPIStore.md) | `getStoreItems`, `buyStoreItem`, `getStoreCategories`, `getStorePurchasedItems` | [`getStoreItems`](docs/ui/store/UIGuide_getStoreItems.md) · [`buyStoreItem`](docs/ui/store/UIGuide_buyStoreItem.md) · [`getStoreCategories`](docs/ui/store/UIGuide_getStoreCategories.md) · [`getStorePurchasedItems`](docs/ui/store/UIGuide_getStorePurchasedItems.md) |
52
72
  | **Tournaments** | [`WSAPITournaments`](docs/api/classes/WSAPITournaments.md) | `getTournamentsList`, `getTournamentInstanceInfo`, `registerInTournament`, `getClanTournamentPlayers` | [`getTournamentsList`](docs/ui/tournaments/UIGuide_getTournamentsList.md) · [`getTournamentInstanceInfo`](docs/ui/tournaments/UIGuide_getTournamentInstanceInfo.md) · [`registerInTournament`](docs/ui/tournaments/UIGuide_registerInTournament.md) · [`getClanTournamentPlayers`](docs/ui/tournaments/UIGuide_getClanTournamentPlayers.md) |
53
73
  | **Clans** | [`WSAPIClans`](docs/api/classes/WSAPIClans.md) | `getClans`, `getClanInfo`, `joinClan` | [`getClans`](docs/ui/clans/UIGuide_getClans.md) · [`getClanInfo`](docs/ui/clans/UIGuide_getClanInfo.md) · [`joinClan`](docs/ui/clans/UIGuide_joinClan.md) |
54
- | **Jackpots** | [`WSAPIJackpots`](docs/api/classes/WSAPIJackpots.md) | `jackpotGet`, `jackpotOptIn`, `jackpotOptOut`, `getJackpotWinners`, `getJackpotEligibleGames` | — |
55
- | **Raffles / Draws** | [`WSAPIRaffles`](docs/api/classes/WSAPIRaffles.md) | `getRaffles`, `getRaffleDrawRun`, `getRaffleDrawRunsHistory`, `claimRafflePrize`, `requestRaffleOptin` | — |
56
- | **MiniGames / SAW** | [`WSAPIMiniGames`](docs/api/classes/WSAPIMiniGames.md) | `getMiniGames`, `getMiniGamesHistory`, `playMiniGame`, `miniGameWinAcknowledgeRequest`, `playMiniGameBatch` | — |
57
- | **Avatars** | [`WSAPIAvatars`](docs/api/classes/WSAPIAvatars.md) | `getAvatarsList`, `getAvatarsCustomized`, `getAvatarPrompts`, `setAvatar` | — |
58
- | **Game Pick (sports / quiz)** | [`WSAPIGamePick`](docs/api/classes/WSAPIGamePick.md) | `gamePickGet*`, `gamePickSubmit*` (9 methods) | — |
59
- | **Leaderboard** | [`WSAPILeaderBoard`](docs/api/classes/WSAPILeaderBoard.md) | `getLeaderBoard` | — |
60
- | **Inbox / Messages / Engagement** | [`WSAPIInbox`](docs/api/classes/WSAPIInbox.md) | `getInboxMessages`, `getInboxUnreadCount`, `getInboxMessageBody`, `markInboxMessageAsRead`, `markAllInboxMessagesAsRead`, `markUnmarkInboxMessageAsFavorite`, `deleteInboxMessage`, `deleteAllInboxMessages`, `reportImpressionEvent`, `reportClickEvent` | — |
74
+ | **Jackpots** | [`WSAPIJackpots`](docs/api/classes/WSAPIJackpots.md) | `jackpotGet`, `jackpotOptIn`, `jackpotOptOut`, `getJackpotWinners`, `getJackpotEligibleGames` | [`jackpotGet`](docs/ui/jackpots/UIGuide_jackpotGet.md) · [`jackpotOptIn`](docs/ui/jackpots/UIGuide_jackpotOptIn.md) · [`jackpotOptOut`](docs/ui/jackpots/UIGuide_jackpotOptOut.md) · [`getJackpotWinners`](docs/ui/jackpots/UIGuide_getJackpotWinners.md) · [`getJackpotEligibleGames`](docs/ui/jackpots/UIGuide_getJackpotEligibleGames.md) |
75
+ | **Raffles / Draws** | [`WSAPIRaffles`](docs/api/classes/WSAPIRaffles.md) | `getRaffles`, `getRaffleDrawRun`, `getRaffleDrawRunsHistory`, `claimRafflePrize`, `requestRaffleOptin`, `getRaffleWonPrizes` | [`getRaffles`](docs/ui/raffles/UIGuide_getRaffles.md) · [`getRaffleDrawRun`](docs/ui/raffles/UIGuide_getRaffleDrawRun.md) · [`getRaffleDrawRunsHistory`](docs/ui/raffles/UIGuide_getRaffleDrawRunsHistory.md) · [`claimRafflePrize`](docs/ui/raffles/UIGuide_claimRafflePrize.md) · [`requestRaffleOptin`](docs/ui/raffles/UIGuide_requestRaffleOptin.md) · [`getRaffleWonPrizes`](docs/ui/raffles/UIGuide_getRaffleWonPrizes.md) |
76
+ | **MiniGames / SAW** | [`WSAPIMiniGames`](docs/api/classes/WSAPIMiniGames.md) | `getMiniGames`, `getMiniGamesHistory`, `playMiniGame`, `miniGameWinAcknowledgeRequest`, `playMiniGameBatch` | [`getMiniGames`](docs/ui/minigames/UIGuide_getMiniGames.md) · [`getMiniGamesHistory`](docs/ui/minigames/UIGuide_getMiniGamesHistory.md) · [`playMiniGame`](docs/ui/minigames/UIGuide_playMiniGame.md) · [`playMiniGameBatch`](docs/ui/minigames/UIGuide_playMiniGameBatch.md) |
77
+ | **Avatars** | [`WSAPIAvatars`](docs/api/classes/WSAPIAvatars.md) | `getAvatarsList`, `getAvatarsCustomized`, `getAvatarPrompts`, `setAvatar` | [`getAvatarsList`](docs/ui/avatars/UIGuide_getAvatarsList.md) · [`getAvatarsCustomized`](docs/ui/avatars/UIGuide_getAvatarsCustomized.md) · [`getAvatarPrompts`](docs/ui/avatars/UIGuide_getAvatarPrompts.md) · [`setAvatar`](docs/ui/avatars/UIGuide_setAvatar.md) |
78
+ | **Game Pick (sports / quiz)** | [`WSAPIGamePick`](docs/api/classes/WSAPIGamePick.md) | `gamePickGet*`, `gamePickSubmit*` (9 methods) | [`gamePickGetActiveRounds`](docs/ui/gamepick/UIGuide_gamePickGetActiveRounds.md) · [`gamePickGetActiveRound`](docs/ui/gamepick/UIGuide_gamePickGetActiveRound.md) · [`gamePickGetHistory`](docs/ui/gamepick/UIGuide_gamePickGetHistory.md) · [`gamePickGetBoard`](docs/ui/gamepick/UIGuide_gamePickGetBoard.md) · [`gamePickSubmitSelection`](docs/ui/gamepick/UIGuide_gamePickSubmitSelection.md) · [`gamePickSubmitSelectionQuiz`](docs/ui/gamepick/UIGuide_gamePickSubmitSelectionQuiz.md) · [`gamePickGetUserInfo`](docs/ui/gamepick/UIGuide_gamePickGetUserInfo.md) · [`gamePickGetGameInfo`](docs/ui/gamepick/UIGuide_gamePickGetGameInfo.md) · [`gamePickGetRoundInfoForUser`](docs/ui/gamepick/UIGuide_gamePickGetRoundInfoForUser.md) |
79
+ | **Leaderboard** | [`WSAPILeaderBoard`](docs/api/classes/WSAPILeaderBoard.md) | `getLeaderBoard` | [`getLeaderBoard`](docs/ui/leaderboard/UIGuide_getLeaderBoard.md) |
80
+ | **Inbox / Messages / Engagement** | [`WSAPIInbox`](docs/api/classes/WSAPIInbox.md) | `getInboxMessages`, `getInboxUnreadCount`, `getInboxMessageBody`, `markInboxMessageAsRead`, `markAllInboxMessagesAsRead`, `markUnmarkInboxMessageAsFavorite`, `deleteInboxMessage`, `deleteAllInboxMessages`, `reportImpressionEvent`, `reportClickEvent` | [`getInboxMessages`](docs/ui/inbox/UIGuide_getInboxMessages.md) · [`getInboxMessageBody`](docs/ui/inbox/UIGuide_getInboxMessageBody.md) · [`markInboxMessageAsRead`](docs/ui/inbox/UIGuide_markInboxMessageAsRead.md) · [`markUnmarkInboxMessageAsFavorite`](docs/ui/inbox/UIGuide_markUnmarkInboxMessageAsFavorite.md) · [`deleteInboxMessage`](docs/ui/inbox/UIGuide_deleteInboxMessage.md) |
61
81
 
62
82
  The shared return / param types live in [`WSAPITypes`](docs/api/classes/WSAPITypes.md). For the full type / enum / interface listing, see [`docs/api/globals.md`](docs/api/globals.md).
63
83
 
84
+ These friendly `T`-prefixed types (`TStoreItem`, `TAvatarDefinition`, …) are produced by the SDK's **transform functions**, which normalize the raw WebSocket protocol shapes into a cleaner form. See [**Transform functions**](docs/Transforms.md) for the concept and naming conventions (`T`-types, `*Transform` functions, `*T` methods).
85
+
64
86
  ### Where to look for working examples
65
87
 
66
88
  The class reference pages above describe **API behavior** — preconditions, error codes, refresh semantics, cache, idempotency, side effects, visitor mode. They do not include long-form UI prescriptions.
@@ -129,6 +129,8 @@ export declare enum ClassId {
129
129
  RAF_CLAIM_PRIZE_RESPONSE = 909,
130
130
  RAF_OPTIN_REQUEST = 916,
131
131
  RAF_OPTIN_RESPONSE = 917,
132
+ RAF_GET_WON_PRIZES_REQUEST = 920,
133
+ RAF_GET_WON_PRIZES_RESPONSE = 921,
132
134
  BNR_GET_BANNER_PLACEMENTS_REQUEST = 950,
133
135
  BNR_GET_BANNER_PLACEMENTS_RESPONSE = 951,
134
136
  BNR_GET_BANNER_CONTENT_REQUEST = 952,
@@ -3,34 +3,33 @@ import { JackpotPot } from './JackpotPot';
3
3
  import { JackpotPublicMeta } from './JackpotPublicMeta';
4
4
  import { JackpotType } from './JackpotType';
5
5
  /**
6
- * JackpotDetails the information about Jackpot template
7
- * It also includes JackpotPot object that holds the current value of the jackpot
8
- * Flag is_opted_in indicates if the current user is opted in to the jackpot
6
+ * One jackpot template the user is eligible for, with its live pot snapshot.
7
+ * Returned by `jackpotGet()`.
9
8
  */
10
9
  interface JackpotDetails {
11
- /** ID of the jackpot template */
10
+ /** Stable numeric ID of the template; pass to opt-in / opt-out / winners / eligible-games methods. */
12
11
  jp_template_id: number;
13
- /** Type of jackpot logic */
12
+ /** Whether the jackpot has a shared pot or one independent per user; see {@link JackpotType}. */
14
13
  jp_type_id: JackpotType;
15
- /** UI information of jackpot, like name, description, etc. */
14
+ /** Display data: name, description, image_url, winner / not-winner HTML templates, custom_data (JSON-parsed). */
16
15
  jp_public_meta: JackpotPublicMeta;
17
- /** Base currency of the jackpot */
16
+ /** Native jackpot currency (ISO 4217). Used for winner-history amounts. */
18
17
  jp_currency: string;
19
- /** Wallet currency of currently logged in user */
18
+ /** Current user's wallet currency. Used to display the pot via `pot.current_pot_amount_user_currency`. */
20
19
  user_currency: string;
21
- /** Type of the user contribution to the jackpot */
20
+ /** Whether the contribution is a fixed amount or a percentage of the bet; see {@link JackpotContributionType}. */
22
21
  contribution_type: JackpotContributionType;
23
- /** Value of the user contribution. Fixed amount or percentage of bet depending on the contribution type */
22
+ /** Amount of contribution per qualifying bet — fixed value or percentage depending on `contribution_type`. */
24
23
  contribution_value: number;
25
- /** Information of current value of the jackpot */
24
+ /** Live pot snapshot (amount, temperature, last explosion timestamp). */
26
25
  pot: JackpotPot;
27
- /** Indication if the current user is opted in to the jackpot */
26
+ /** `true` when the current user is currently opted in. */
28
27
  is_opted_in: boolean;
29
- /** Indicates whether all games are eligible for the jackpot */
28
+ /** `true` when every game in the operator catalog contributes; if `true`, skip `getJackpotEligibleGames`. */
30
29
  ach_related_game_allow_all: boolean;
31
- /** The number of users who have opted in to participate in the jackpot */
30
+ /** Number of users currently opted in; always `1` for `JackpotType.Personal`. */
32
31
  registration_count: number;
33
- /** Show winners in widget and over API */
32
+ /** Operator flag: whether the winners list should be displayed. Enforced client-side only — gate `getJackpotWinners` calls on this. */
34
33
  expose_winners_over_api: boolean;
35
34
  }
36
35
  export { JackpotDetails };
@@ -8,18 +8,22 @@ declare enum JackPotTemparature {
8
8
  /** burning, current pot > min amount + 0.5 * (max amount - min amount). E.g. mid of allowed explosion range */
9
9
  BURNING = 3
10
10
  }
11
+ /**
12
+ * Live snapshot of one jackpot pot's value and temperature.
13
+ * Embedded on `JackpotDetails.pot`; refreshed at the 1 s SDK cache TTL.
14
+ */
11
15
  interface JackpotPot {
12
- /** ID of the jackpot template */
16
+ /** Template ID this pot belongs to. */
13
17
  jp_template_id: number;
14
- /** ID of the jackpot pot */
18
+ /** Stable numeric ID of the current pot instance (rotates when the pot explodes). */
15
19
  jp_pot_id: number;
16
- /** currency of the jackpot pot in the Jackput base currency */
20
+ /** Current pot amount in the jackpot's native currency (`jp_currency`). */
17
21
  current_pot_amount: number;
18
- /** currency of the jackpot pot in the user wallet currency */
22
+ /** Current pot amount converted to the user's wallet currency (`user_currency`). */
19
23
  current_pot_amount_user_currency: number;
20
- /** the date/time when this pot exploded */
24
+ /** Unix ms timestamp of when this pot last exploded; `0` if it has never exploded. */
21
25
  explode_date_ts: number;
22
- /** current pot temperature */
26
+ /** Heat band of the pot relative to its explosion range; see {@link JackPotTemparature}. */
23
27
  current_pot_temperature: JackPotTemparature;
24
28
  }
25
29
  export { JackpotPot, JackPotTemparature };
@@ -10,7 +10,8 @@ export declare enum SAWGameType {
10
10
  TreasureHunt = 9,
11
11
  Voyager = 10,
12
12
  Plinko = 11,
13
- CoinFlip = 12
13
+ CoinFlip = 12,
14
+ CustomMinigame = 13
14
15
  }
15
16
  export declare enum SAWGameTypeName {
16
17
  SpinAWheel = "wheel",
@@ -25,6 +26,7 @@ export declare enum SAWGameTypeName {
25
26
  Voyager = "voyager",
26
27
  Plinko = "plinko",
27
28
  CoinFlip = "coin_flip",
29
+ CustomMinigame = "custom_minigame",
28
30
  Unknown = "unknown"
29
31
  }
30
32
  /** @hidden */
@@ -363,6 +363,13 @@ export interface SAWTemplateUI {
363
363
  * | `SAWGameDifficultyType.HARD = 3` | Hard |
364
364
  */
365
365
  game_difficulty?: SAWGameDifficultyType;
366
+ /**
367
+ * URL of the operator-hosted custom mini-game, loaded inside an iframe by
368
+ * the widget for `SAWGameType.CustomMinigame`. The operator is trusted, so
369
+ * the iframe is rendered without a sandbox.
370
+ * Back-Office label: _"Game URL"_.
371
+ */
372
+ custom_game_url?: string;
366
373
  /**
367
374
  * Minutes for the Voyager seed window.
368
375
  * The seed window is the range of seeds that can be used to generate the map.
@@ -0,0 +1,9 @@
1
+ import { ProtocolMessage } from "../Base/ProtocolMessage";
2
+ export interface GetRaffleWonPrizesRequest extends ProtocolMessage {
3
+ /** ID of the raffle to fetch the current user's won prizes for. */
4
+ raffle_id: number;
5
+ /** Zero-based index of the first won-prize row to return (pagination). */
6
+ offset: number;
7
+ /** Maximum number of won-prize rows to return (pagination). */
8
+ limit: number;
9
+ }
@@ -0,0 +1,52 @@
1
+ import { ProtocolResponse } from '../Base/ProtocolResponse';
2
+ /** Presentation meta for a won prize. */
3
+ export interface RaffleWonPrizePublicMeta {
4
+ /** Name of the prize, e.g. '1 $'. */
5
+ name: string;
6
+ /** Indicates whether the chance to win should be hidden in the UI. */
7
+ hide_chance_to_win: boolean;
8
+ /** URL of the image that represents the prize. */
9
+ image_url: string;
10
+ }
11
+ /** A single prize the user won within the raffle. */
12
+ export interface RaffleWonPrize {
13
+ /** Unique ID of the winning row (pass to `claimRafflePrize` when `requires_claim` is `true`). */
14
+ raf_won_id: number;
15
+ /** ID of the prize definition. */
16
+ prize_id: number;
17
+ /** Run-instance ID of the draw that awarded this prize. */
18
+ raffle_run_id: number;
19
+ /** Schedule ID of the draw that awarded this prize. */
20
+ draw_id: number;
21
+ /** Presentation meta (name / image). */
22
+ public_meta: RaffleWonPrizePublicMeta;
23
+ /** Whether this prize requires a claim action from the user. */
24
+ requires_claim: boolean;
25
+ /** Epoch ms when the prize was claimed; `null` when not yet claimed. */
26
+ claimed_date: number | null;
27
+ }
28
+ /** The user the won-prizes list belongs to. */
29
+ export interface RaffleWonPrizeUser {
30
+ /** Internal user ID. */
31
+ user_id: number;
32
+ /** Avatar image: a full URL for a system avatar, otherwise an avatar token to resolve against the widget's avatar domain. */
33
+ avatar_id: string;
34
+ /** Numeric ID of the user's selected avatar definition. */
35
+ avatar_real_id: number;
36
+ /** Public username; server-masked for other users (e.g. `"32:r*****"`). */
37
+ public_username?: string;
38
+ /** Always `null` on the wire — use `avatar_id`. */
39
+ avatar_url?: string | null;
40
+ }
41
+ export interface GetRaffleWonPrizesResponse extends ProtocolResponse {
42
+ /** The user the won prizes belong to; `null` when `won_prizes` is empty. */
43
+ user: RaffleWonPrizeUser | null;
44
+ /** Page of won prizes for the requested raffle, newest-first. */
45
+ won_prizes: RaffleWonPrize[];
46
+ /** Total number of won prizes for this user/raffle across all draws (for pagination). */
47
+ total: number;
48
+ /** Zero-based offset of this page (echoes the resolved request). */
49
+ offset: number;
50
+ /** Page size (echoes the resolved request). */
51
+ limit: number;
52
+ }
@@ -15,3 +15,5 @@ export * from './RaffleClaimPrizeResponse';
15
15
  export * from './RaffleDrawPublicMeta';
16
16
  export * from './RaffleOptinRequest';
17
17
  export * from './RaffleOptinResponse';
18
+ export * from './GetRaffleWonPrizesRequest';
19
+ export * from './GetRaffleWonPrizesResponse';
@@ -23,7 +23,7 @@ import { GetRafflesResponse } from './Raffle/GetRafflesResponse';
23
23
  import { GetActivityLogResponse } from './ActivityLog';
24
24
  import { GetClanListResponse, GetClanInfoResponse } from './Clans';
25
25
  import { InboxCategories } from './Inbox/InboxCategories';
26
- import { GetDrawRunResponse, GetRaffleDrawRunsHistoryResponse, RaffleClaimPrizeResponse, RaffleOptinResponse } from './Raffle';
26
+ import { GetDrawRunResponse, GetRaffleDrawRunsHistoryResponse, RaffleClaimPrizeResponse, RaffleOptinResponse, GetRaffleWonPrizesResponse } from './Raffle';
27
27
  import { GetAvatarsListResponse } from './Avatars/GetAvatarsListResponse';
28
28
  import { GetAvatarsCustomizedResponse } from './Avatars/GetAvatarsCustomizedResponse';
29
29
  import { GetAvatarPromptsResponse } from './Avatars/GetAvatarPromptsResponse';
@@ -214,6 +214,11 @@ declare class SmarticoAPI {
214
214
  draw_id: number;
215
215
  raffle_run_id: number;
216
216
  }): Promise<RaffleOptinResponse>;
217
+ getRaffleWonPrizes(user_ext_id: string, props: {
218
+ raffle_id: number;
219
+ offset: number;
220
+ limit: number;
221
+ }): Promise<GetRaffleWonPrizesResponse>;
217
222
  getActivityLog(user_ext_id: string, startTimeSeconds: number, endTimeSeconds: number, limit: number, offset: number): Promise<GetActivityLogResponse>;
218
223
  getActivityLogT(user_ext_id: string, startTimeSeconds: number, endTimeSeconds: number, from?: number, to?: number): Promise<TActivityLog[]>;
219
224
  }
@@ -2105,10 +2105,12 @@ declare enum EWidgetType {
2105
2105
  }
2106
2106
  declare enum EXTERNAL_CALLBACK_KEY {
2107
2107
  INIT = "init",
2108
+ LABEL_INIT_COMPLETED = "label_init_completed",
2108
2109
  IDENTIFY = "identify",
2109
2110
  LOGIN = "login",
2110
2111
  LOGOUT = "logout",
2111
2112
  USER_PROPS_CHANGE = "props_change",
2113
+ PAGE_NAVIGATION = "page_navigation",
2112
2114
  SESSION_BASED_DP_DETECTED = "session_based_dp_detected",
2113
2115
  GF_CLOSING = "gf_closing",
2114
2116
  GF_STARTING = "gf_starting",
@@ -2117,7 +2119,9 @@ declare enum EXTERNAL_CALLBACK_KEY {
2117
2119
  INBOX_STARTING = "inbox_starting",
2118
2120
  PROTOCOL_ERROR = "protocol_error",
2119
2121
  MNIGAME_WIN = "mini_game_win",
2120
- ACH_GAME_OPENING = "ach_game_opening"
2122
+ ACH_GAME_OPENING = "ach_game_opening",
2123
+ JACKPOT_WIN = "jackpot_win",
2124
+ GF_UX = "gf_ux"
2121
2125
  }
2122
2126
  declare enum DpType {
2123
2127
  AskPushPermissions = "ask_push_permissions",