@kalamba/sdk 0.30.0 → 0.35.0
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/encoders-BdN6uQHH.js +282 -0
- package/dist/encoders-C-jSxC0Z.cjs +5 -0
- package/dist/errors-BZBs3Z5K.cjs +5 -0
- package/dist/{errors-NnLrKjTz.js → errors-CyJnvnOm.js} +12 -16
- package/dist/index.cjs +2 -2
- package/dist/index.d.ts +10 -11
- package/dist/index.js +47 -323
- package/dist/plugins.cjs +19 -19
- package/dist/plugins.d.ts +75 -10
- package/dist/plugins.js +2270 -2144
- package/dist/v4-BCq6Wm4W.js +49 -0
- package/dist/v4-BIWLDecr.cjs +5 -0
- package/dist/wrapper.cjs +2 -2
- package/dist/wrapper.d.ts +60 -11
- package/dist/wrapper.js +1908 -1879
- package/package.json +5 -4
- package/dist/encoders-BDr7fjKQ.js +0 -13
- package/dist/encoders-DVHzIpWT.cjs +0 -5
- package/dist/errors-BXO3dlhS.cjs +0 -5
- package/dist/v4-85TkMtXc.js +0 -50
- package/dist/v4-Cj9BnqmU.cjs +0 -5
|
@@ -0,0 +1,282 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* BSD 3-Clause License
|
|
3
|
+
* Copyright (c) 2026, Kalamba Games Limited
|
|
4
|
+
*/
|
|
5
|
+
function l(m, i) {
|
|
6
|
+
return m * i / 100;
|
|
7
|
+
}
|
|
8
|
+
function C(m, i, t) {
|
|
9
|
+
if (!["string", "number"].includes(typeof i))
|
|
10
|
+
return "NaN";
|
|
11
|
+
const { locales: n } = m;
|
|
12
|
+
try {
|
|
13
|
+
return new Intl.NumberFormat(n, {
|
|
14
|
+
...t,
|
|
15
|
+
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
16
|
+
// @ts-ignore
|
|
17
|
+
numberingSystem: "latn",
|
|
18
|
+
style: "decimal"
|
|
19
|
+
}).format(+i);
|
|
20
|
+
} catch {
|
|
21
|
+
return `${i}`;
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
const D = "XTS";
|
|
25
|
+
var r = /* @__PURE__ */ ((m) => (m.Currency = "Currency", m.Number = "Number", m))(r || {}), s = /* @__PURE__ */ ((m) => (m.Coins = "Coins", m.Money = "Money", m))(s || {});
|
|
26
|
+
const F = {
|
|
27
|
+
/* eslint-disable sort-keys-fix/sort-keys-fix */
|
|
28
|
+
// ARSB is the internal currency relevant for invoicing purposes, players should see it as ARS
|
|
29
|
+
ARSB: { displayAs: "ARS", maximumFractionDigits: 2, minimumFractionDigits: 2 },
|
|
30
|
+
// Social Casino chips
|
|
31
|
+
CHIPS: { maximumFractionDigits: 0, minimumFractionDigits: 0 },
|
|
32
|
+
// Binance Coin
|
|
33
|
+
BNB: { maximumFractionDigits: 6, minimumFractionDigits: 6 },
|
|
34
|
+
// Binance USD
|
|
35
|
+
BUSD: { maximumFractionDigits: 4, minimumFractionDigits: 4 },
|
|
36
|
+
// Bitcoin
|
|
37
|
+
BTC: { maximumFractionDigits: 8, minimumFractionDigits: 2 },
|
|
38
|
+
mBTC: { maximumFractionDigits: 5, minimumFractionDigits: 2 },
|
|
39
|
+
uBTC: { maximumFractionDigits: 2, minimumFractionDigits: 2 },
|
|
40
|
+
// Bitcoin Cash
|
|
41
|
+
BCH: { maximumFractionDigits: 8, minimumFractionDigits: 2 },
|
|
42
|
+
mBCH: { maximumFractionDigits: 2, minimumFractionDigits: 2 },
|
|
43
|
+
// Ethereum
|
|
44
|
+
ETH: { maximumFractionDigits: 8, minimumFractionDigits: 2 },
|
|
45
|
+
mETH: { maximumFractionDigits: 5, minimumFractionDigits: 2 },
|
|
46
|
+
uETH: { maximumFractionDigits: 2, minimumFractionDigits: 2 },
|
|
47
|
+
// SocialCoin
|
|
48
|
+
SOC: { maximumFractionDigits: 8, minimumFractionDigits: 2 },
|
|
49
|
+
// Litecoins
|
|
50
|
+
LTC: { maximumFractionDigits: 8, minimumFractionDigits: 2 },
|
|
51
|
+
mLTC: { maximumFractionDigits: 5, minimumFractionDigits: 2 },
|
|
52
|
+
uLTC: { maximumFractionDigits: 2, minimumFractionDigits: 2 },
|
|
53
|
+
// Dogecoin
|
|
54
|
+
DOG: { maximumFractionDigits: 4, minimumFractionDigits: 2 },
|
|
55
|
+
// USD Coin
|
|
56
|
+
USDC: { maximumFractionDigits: 4, minimumFractionDigits: 4 },
|
|
57
|
+
// Tether
|
|
58
|
+
USDT: { maximumFractionDigits: 4, minimumFractionDigits: 2 },
|
|
59
|
+
// Tron
|
|
60
|
+
TRX: { maximumFractionDigits: 2, minimumFractionDigits: 2 },
|
|
61
|
+
// TrueUSD
|
|
62
|
+
TUSD: { maximumFractionDigits: 2, minimumFractionDigits: 2 },
|
|
63
|
+
// Dai
|
|
64
|
+
DAI: { maximumFractionDigits: 2, minimumFractionDigits: 2 },
|
|
65
|
+
// Monero
|
|
66
|
+
XMR: { maximumFractionDigits: 4, minimumFractionDigits: 4 },
|
|
67
|
+
// CBET
|
|
68
|
+
CBET: { maximumFractionDigits: 0, minimumFractionDigits: 0 },
|
|
69
|
+
kCBET: { maximumFractionDigits: 2, minimumFractionDigits: 2 },
|
|
70
|
+
// Shiba Inu
|
|
71
|
+
SHIB: { maximumFractionDigits: 0, minimumFractionDigits: 0 },
|
|
72
|
+
kSHIB: { maximumFractionDigits: 4, minimumFractionDigits: 2 },
|
|
73
|
+
// Neo
|
|
74
|
+
NEO: { maximumFractionDigits: 4, minimumFractionDigits: 4 },
|
|
75
|
+
// Bitcoin SV
|
|
76
|
+
BSV: { maximumFractionDigits: 4, minimumFractionDigits: 4 },
|
|
77
|
+
// EOS
|
|
78
|
+
EOS: { maximumFractionDigits: 4, minimumFractionDigits: 4 },
|
|
79
|
+
// Dash
|
|
80
|
+
DASH: { maximumFractionDigits: 4, minimumFractionDigits: 4 },
|
|
81
|
+
// Stellar
|
|
82
|
+
XLM: { maximumFractionDigits: 2, minimumFractionDigits: 2 },
|
|
83
|
+
// South Korean Won
|
|
84
|
+
// While the jeon (1/100th of Won) is no longer used for everyday transactions,
|
|
85
|
+
// we received complaint from operator that we should show 2 fraction digits though, so we override it here.
|
|
86
|
+
KRW: { maximumFractionDigits: 2, minimumFractionDigits: 2 },
|
|
87
|
+
// Vietnamese dong
|
|
88
|
+
kVND: { maximumFractionDigits: 4, minimumFractionDigits: 2 },
|
|
89
|
+
// Indonesian rupiah
|
|
90
|
+
kIDR: { maximumFractionDigits: 4, minimumFractionDigits: 2 },
|
|
91
|
+
// Serbian dinar
|
|
92
|
+
// There is a difference how browsers handle currency data:
|
|
93
|
+
// - Google Chrome uses CLDR, which defines 0 minor digits for RSD currency.
|
|
94
|
+
// - Firefox, Edge, Safari use ISO 4217, which defines 2 minor digits for RSD currency.
|
|
95
|
+
// We received complaint from operator that we should show 2 fraction digits though, so we override it here.
|
|
96
|
+
RSD: { maximumFractionDigits: 2, minimumFractionDigits: 2 },
|
|
97
|
+
// Social currency on Stake
|
|
98
|
+
STAKEGC: { displayAs: "GC", maximumFractionDigits: 0, minimumFractionDigits: 0 },
|
|
99
|
+
STAKESC: { displayAs: "SC", maximumFractionDigits: 2, minimumFractionDigits: 2 },
|
|
100
|
+
// Social currency on Relax
|
|
101
|
+
"BK.": { maximumFractionDigits: 2, minimumFractionDigits: 2 },
|
|
102
|
+
"BT.": { maximumFractionDigits: 2, minimumFractionDigits: 2 },
|
|
103
|
+
"FC.": { maximumFractionDigits: 2, minimumFractionDigits: 2 },
|
|
104
|
+
"GC.": { maximumFractionDigits: 2, minimumFractionDigits: 2 },
|
|
105
|
+
"SC.": { maximumFractionDigits: 2, minimumFractionDigits: 2 },
|
|
106
|
+
GC: { maximumFractionDigits: 2, minimumFractionDigits: 2 },
|
|
107
|
+
SC: { maximumFractionDigits: 2, minimumFractionDigits: 2 },
|
|
108
|
+
GLD: { displayAs: "GC.", maximumFractionDigits: 2, minimumFractionDigits: 2 },
|
|
109
|
+
SS1: { displayAs: "SC.", maximumFractionDigits: 2, minimumFractionDigits: 2 },
|
|
110
|
+
// Softswiss
|
|
111
|
+
SWEP: { displayAs: "SC.", maximumFractionDigits: 2, minimumFractionDigits: 2 },
|
|
112
|
+
GCLC: { displayAs: "GC.", maximumFractionDigits: 2, minimumFractionDigits: 2 },
|
|
113
|
+
SWPC: { displayAs: "SC", maximumFractionDigits: 2, minimumFractionDigits: 2 },
|
|
114
|
+
LUKC: { displayAs: "LC", maximumFractionDigits: 2, minimumFractionDigits: 2 },
|
|
115
|
+
TTSC: { displayAs: "SC", maximumFractionDigits: 2, minimumFractionDigits: 2 },
|
|
116
|
+
TTGC: { displayAs: "GC", maximumFractionDigits: 2, minimumFractionDigits: 2 },
|
|
117
|
+
// Silvercash
|
|
118
|
+
SVC: { maximumFractionDigits: 2, minimumFractionDigits: 2 },
|
|
119
|
+
// Polkadot
|
|
120
|
+
DOT: { maximumFractionDigits: 4, minimumFractionDigits: 4 },
|
|
121
|
+
// Solana
|
|
122
|
+
SOL: { maximumFractionDigits: 4, minimumFractionDigits: 4 },
|
|
123
|
+
// XRP
|
|
124
|
+
XRP: { maximumFractionDigits: 2, minimumFractionDigits: 2 },
|
|
125
|
+
// Cardano
|
|
126
|
+
ADA: { maximumFractionDigits: 2, minimumFractionDigits: 2 },
|
|
127
|
+
// Toncoin
|
|
128
|
+
TON: { maximumFractionDigits: 4, minimumFractionDigits: 4 },
|
|
129
|
+
// Fasttoken
|
|
130
|
+
FTN: { maximumFractionDigits: 4, minimumFractionDigits: 4 },
|
|
131
|
+
// Omani Rial
|
|
132
|
+
OMR: { maximumFractionDigits: 2, minimumFractionDigits: 2 },
|
|
133
|
+
// Jordanian Dinar
|
|
134
|
+
JOD: { maximumFractionDigits: 2, minimumFractionDigits: 2 },
|
|
135
|
+
// Bahraini Dinar
|
|
136
|
+
BHD: { maximumFractionDigits: 2, minimumFractionDigits: 2 },
|
|
137
|
+
// Kuwaiti Dinar
|
|
138
|
+
KWD: { maximumFractionDigits: 2, minimumFractionDigits: 2 },
|
|
139
|
+
// MicroGame
|
|
140
|
+
BNS: { maximumFractionDigits: 2, minimumFractionDigits: 2 },
|
|
141
|
+
// Quanta
|
|
142
|
+
GRSC: { displayAs: "SC", maximumFractionDigits: 2, minimumFractionDigits: 2 },
|
|
143
|
+
GRGC: { displayAs: "GC", maximumFractionDigits: 2, minimumFractionDigits: 2 },
|
|
144
|
+
// Softswiss
|
|
145
|
+
EEGP: { displayAs: "EP", maximumFractionDigits: 2, minimumFractionDigits: 2 },
|
|
146
|
+
EPGP: { displayAs: "PP", maximumFractionDigits: 2, minimumFractionDigits: 2 },
|
|
147
|
+
LUCK: { displayAs: "LUCK", maximumFractionDigits: 2, minimumFractionDigits: 2 },
|
|
148
|
+
CXCO: { displayAs: "CC", maximumFractionDigits: 2, minimumFractionDigits: 2 },
|
|
149
|
+
GZCO: { displayAs: "GC", maximumFractionDigits: 2, minimumFractionDigits: 2 },
|
|
150
|
+
// gametech
|
|
151
|
+
FC: { displayAs: "", maximumFractionDigits: 2, minimumFractionDigits: 2 },
|
|
152
|
+
RC: { maximumFractionDigits: 2, minimumFractionDigits: 2 },
|
|
153
|
+
MWSC: { displayAs: "MC", maximumFractionDigits: 2, minimumFractionDigits: 2 },
|
|
154
|
+
MWGC: { displayAs: "GC", maximumFractionDigits: 2, minimumFractionDigits: 2 },
|
|
155
|
+
// https://kalamba.atlassian.net/browse/FRAM-1829
|
|
156
|
+
// Myanmar Kyat
|
|
157
|
+
MMK: { maximumFractionDigits: 2, minimumFractionDigits: 2 },
|
|
158
|
+
// West African CFA franc
|
|
159
|
+
XOF: { maximumFractionDigits: 2, minimumFractionDigits: 2 },
|
|
160
|
+
// Vietnamese dong
|
|
161
|
+
VND: { maximumFractionDigits: 2, minimumFractionDigits: 2 },
|
|
162
|
+
// Burundian franc
|
|
163
|
+
BIF: { maximumFractionDigits: 2, minimumFractionDigits: 2 },
|
|
164
|
+
// Chilean peso
|
|
165
|
+
CLP: { maximumFractionDigits: 2, minimumFractionDigits: 2 },
|
|
166
|
+
// Guinean franc
|
|
167
|
+
GNF: { maximumFractionDigits: 2, minimumFractionDigits: 2 },
|
|
168
|
+
// Iraqi dinar
|
|
169
|
+
IQD: { maximumFractionDigits: 2, minimumFractionDigits: 2 },
|
|
170
|
+
// Icelandic króna
|
|
171
|
+
ISK: { maximumFractionDigits: 2, minimumFractionDigits: 2 },
|
|
172
|
+
// Paraguayan guaraní
|
|
173
|
+
PYG: { maximumFractionDigits: 2, minimumFractionDigits: 2 },
|
|
174
|
+
// Central African CFA franc
|
|
175
|
+
XAF: { maximumFractionDigits: 2, minimumFractionDigits: 2 },
|
|
176
|
+
// Lao kip
|
|
177
|
+
LAK: { maximumFractionDigits: 2, minimumFractionDigits: 2 },
|
|
178
|
+
// Lebanese pound
|
|
179
|
+
LBP: { maximumFractionDigits: 2, minimumFractionDigits: 2 },
|
|
180
|
+
// Malagasy ariary
|
|
181
|
+
MGA: { maximumFractionDigits: 2, minimumFractionDigits: 2 },
|
|
182
|
+
// Somali shilling
|
|
183
|
+
SOS: { maximumFractionDigits: 2, minimumFractionDigits: 2 },
|
|
184
|
+
// Ugandan shilling
|
|
185
|
+
UGX: { maximumFractionDigits: 2, minimumFractionDigits: 2 },
|
|
186
|
+
// Albanian lek
|
|
187
|
+
ALL: { maximumFractionDigits: 2, minimumFractionDigits: 2 },
|
|
188
|
+
// Iranian rial
|
|
189
|
+
IRR: { maximumFractionDigits: 2, minimumFractionDigits: 2 }
|
|
190
|
+
/* eslint-enable sort-keys-fix/sort-keys-fix */
|
|
191
|
+
};
|
|
192
|
+
function x(m) {
|
|
193
|
+
return m in F;
|
|
194
|
+
}
|
|
195
|
+
function S(m) {
|
|
196
|
+
return x(m) ? {
|
|
197
|
+
...F[m],
|
|
198
|
+
currency: D
|
|
199
|
+
} : {
|
|
200
|
+
currency: m
|
|
201
|
+
};
|
|
202
|
+
}
|
|
203
|
+
function f(m, i, t) {
|
|
204
|
+
const n = i.format(+m);
|
|
205
|
+
return x(t) ? n.replace(D, F[t].displayAs ?? t) : n;
|
|
206
|
+
}
|
|
207
|
+
function A(m, i, t) {
|
|
208
|
+
const { maximumFractionDigits: n, minimumFractionDigits: a } = t.resolvedOptions();
|
|
209
|
+
return C(m, i, { maximumFractionDigits: n, minimumFractionDigits: a });
|
|
210
|
+
}
|
|
211
|
+
function p(m, i, { as: t } = {
|
|
212
|
+
as: "Currency"
|
|
213
|
+
/* Currency */
|
|
214
|
+
}) {
|
|
215
|
+
const { canShowCurrency: n, currency: a } = m;
|
|
216
|
+
return t === "Number" || !n ? `${i}` : `${i} ${a}`;
|
|
217
|
+
}
|
|
218
|
+
function d(m, i, { as: t, from: n } = {
|
|
219
|
+
as: "Currency",
|
|
220
|
+
from: "Money"
|
|
221
|
+
/* Money */
|
|
222
|
+
}, a) {
|
|
223
|
+
if (!["string", "number"].includes(typeof i))
|
|
224
|
+
return "NaN";
|
|
225
|
+
const { canShowCurrency: u = !0, coinValueInCents: c, currency: o, locales: g } = m;
|
|
226
|
+
n === "Coins" && (i = l(+i, c));
|
|
227
|
+
try {
|
|
228
|
+
const y = S(o), e = new Intl.NumberFormat(g, {
|
|
229
|
+
...y,
|
|
230
|
+
...a,
|
|
231
|
+
currencyDisplay: "symbol",
|
|
232
|
+
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
233
|
+
// @ts-ignore
|
|
234
|
+
numberingSystem: "latn",
|
|
235
|
+
style: "currency"
|
|
236
|
+
});
|
|
237
|
+
return t === "Number" || !u ? A(m, i, e) : f(i, e, o);
|
|
238
|
+
} catch {
|
|
239
|
+
return p(m, i, { as: t });
|
|
240
|
+
}
|
|
241
|
+
}
|
|
242
|
+
class N {
|
|
243
|
+
#i;
|
|
244
|
+
constructor({ config: i }) {
|
|
245
|
+
this.#i = i;
|
|
246
|
+
}
|
|
247
|
+
formatNumber(i, t) {
|
|
248
|
+
const n = { locales: [this.#i.ui.language] };
|
|
249
|
+
return C(n, i, t);
|
|
250
|
+
}
|
|
251
|
+
formatCurrency(i, t = { as: r.Currency, from: s.Money }, n) {
|
|
252
|
+
const a = this.#i.ui.feature.showCurrency, u = this.#i.api.coinValueInCents, c = this.#i.api.currency || D, o = [this.#i.ui.language];
|
|
253
|
+
return d({
|
|
254
|
+
canShowCurrency: a,
|
|
255
|
+
coinValueInCents: u,
|
|
256
|
+
currency: c,
|
|
257
|
+
locales: o
|
|
258
|
+
}, i, t, n);
|
|
259
|
+
}
|
|
260
|
+
formatCoins(i, t) {
|
|
261
|
+
return this.formatCurrency(i, { as: r.Number, from: s.Coins }, t);
|
|
262
|
+
}
|
|
263
|
+
formatCoinsWithCurrency(i, t) {
|
|
264
|
+
return this.formatCurrency(i, { as: r.Currency, from: s.Coins }, t);
|
|
265
|
+
}
|
|
266
|
+
formatMoney(i, t) {
|
|
267
|
+
return this.formatCurrency(i, { as: r.Number, from: s.Money }, t);
|
|
268
|
+
}
|
|
269
|
+
formatMoneyWithCurrency(i, t) {
|
|
270
|
+
return this.formatCurrency(i, { as: r.Currency, from: s.Money }, t);
|
|
271
|
+
}
|
|
272
|
+
}
|
|
273
|
+
const T = {
|
|
274
|
+
json: JSON.parse
|
|
275
|
+
}, G = {
|
|
276
|
+
json: JSON.stringify
|
|
277
|
+
};
|
|
278
|
+
export {
|
|
279
|
+
N as I,
|
|
280
|
+
T as d,
|
|
281
|
+
G as e
|
|
282
|
+
};
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* BSD 3-Clause License
|
|
3
|
+
* Copyright (c) 2026, Kalamba Games Limited
|
|
4
|
+
*/
|
|
5
|
+
"use strict";function l(m,i){return m*i/100}function C(m,i,t){if(!["string","number"].includes(typeof i))return"NaN";const{locales:n}=m;try{return new Intl.NumberFormat(n,{...t,numberingSystem:"latn",style:"decimal"}).format(+i)}catch{return`${i}`}}const D="XTS";var r=(m=>(m.Currency="Currency",m.Number="Number",m))(r||{}),s=(m=>(m.Coins="Coins",m.Money="Money",m))(s||{});const F={ARSB:{displayAs:"ARS",maximumFractionDigits:2,minimumFractionDigits:2},CHIPS:{maximumFractionDigits:0,minimumFractionDigits:0},BNB:{maximumFractionDigits:6,minimumFractionDigits:6},BUSD:{maximumFractionDigits:4,minimumFractionDigits:4},BTC:{maximumFractionDigits:8,minimumFractionDigits:2},mBTC:{maximumFractionDigits:5,minimumFractionDigits:2},uBTC:{maximumFractionDigits:2,minimumFractionDigits:2},BCH:{maximumFractionDigits:8,minimumFractionDigits:2},mBCH:{maximumFractionDigits:2,minimumFractionDigits:2},ETH:{maximumFractionDigits:8,minimumFractionDigits:2},mETH:{maximumFractionDigits:5,minimumFractionDigits:2},uETH:{maximumFractionDigits:2,minimumFractionDigits:2},SOC:{maximumFractionDigits:8,minimumFractionDigits:2},LTC:{maximumFractionDigits:8,minimumFractionDigits:2},mLTC:{maximumFractionDigits:5,minimumFractionDigits:2},uLTC:{maximumFractionDigits:2,minimumFractionDigits:2},DOG:{maximumFractionDigits:4,minimumFractionDigits:2},USDC:{maximumFractionDigits:4,minimumFractionDigits:4},USDT:{maximumFractionDigits:4,minimumFractionDigits:2},TRX:{maximumFractionDigits:2,minimumFractionDigits:2},TUSD:{maximumFractionDigits:2,minimumFractionDigits:2},DAI:{maximumFractionDigits:2,minimumFractionDigits:2},XMR:{maximumFractionDigits:4,minimumFractionDigits:4},CBET:{maximumFractionDigits:0,minimumFractionDigits:0},kCBET:{maximumFractionDigits:2,minimumFractionDigits:2},SHIB:{maximumFractionDigits:0,minimumFractionDigits:0},kSHIB:{maximumFractionDigits:4,minimumFractionDigits:2},NEO:{maximumFractionDigits:4,minimumFractionDigits:4},BSV:{maximumFractionDigits:4,minimumFractionDigits:4},EOS:{maximumFractionDigits:4,minimumFractionDigits:4},DASH:{maximumFractionDigits:4,minimumFractionDigits:4},XLM:{maximumFractionDigits:2,minimumFractionDigits:2},KRW:{maximumFractionDigits:2,minimumFractionDigits:2},kVND:{maximumFractionDigits:4,minimumFractionDigits:2},kIDR:{maximumFractionDigits:4,minimumFractionDigits:2},RSD:{maximumFractionDigits:2,minimumFractionDigits:2},STAKEGC:{displayAs:"GC",maximumFractionDigits:0,minimumFractionDigits:0},STAKESC:{displayAs:"SC",maximumFractionDigits:2,minimumFractionDigits:2},"BK.":{maximumFractionDigits:2,minimumFractionDigits:2},"BT.":{maximumFractionDigits:2,minimumFractionDigits:2},"FC.":{maximumFractionDigits:2,minimumFractionDigits:2},"GC.":{maximumFractionDigits:2,minimumFractionDigits:2},"SC.":{maximumFractionDigits:2,minimumFractionDigits:2},GC:{maximumFractionDigits:2,minimumFractionDigits:2},SC:{maximumFractionDigits:2,minimumFractionDigits:2},GLD:{displayAs:"GC.",maximumFractionDigits:2,minimumFractionDigits:2},SS1:{displayAs:"SC.",maximumFractionDigits:2,minimumFractionDigits:2},SWEP:{displayAs:"SC.",maximumFractionDigits:2,minimumFractionDigits:2},GCLC:{displayAs:"GC.",maximumFractionDigits:2,minimumFractionDigits:2},SWPC:{displayAs:"SC",maximumFractionDigits:2,minimumFractionDigits:2},LUKC:{displayAs:"LC",maximumFractionDigits:2,minimumFractionDigits:2},TTSC:{displayAs:"SC",maximumFractionDigits:2,minimumFractionDigits:2},TTGC:{displayAs:"GC",maximumFractionDigits:2,minimumFractionDigits:2},SVC:{maximumFractionDigits:2,minimumFractionDigits:2},DOT:{maximumFractionDigits:4,minimumFractionDigits:4},SOL:{maximumFractionDigits:4,minimumFractionDigits:4},XRP:{maximumFractionDigits:2,minimumFractionDigits:2},ADA:{maximumFractionDigits:2,minimumFractionDigits:2},TON:{maximumFractionDigits:4,minimumFractionDigits:4},FTN:{maximumFractionDigits:4,minimumFractionDigits:4},OMR:{maximumFractionDigits:2,minimumFractionDigits:2},JOD:{maximumFractionDigits:2,minimumFractionDigits:2},BHD:{maximumFractionDigits:2,minimumFractionDigits:2},KWD:{maximumFractionDigits:2,minimumFractionDigits:2},BNS:{maximumFractionDigits:2,minimumFractionDigits:2},GRSC:{displayAs:"SC",maximumFractionDigits:2,minimumFractionDigits:2},GRGC:{displayAs:"GC",maximumFractionDigits:2,minimumFractionDigits:2},EEGP:{displayAs:"EP",maximumFractionDigits:2,minimumFractionDigits:2},EPGP:{displayAs:"PP",maximumFractionDigits:2,minimumFractionDigits:2},LUCK:{displayAs:"LUCK",maximumFractionDigits:2,minimumFractionDigits:2},CXCO:{displayAs:"CC",maximumFractionDigits:2,minimumFractionDigits:2},GZCO:{displayAs:"GC",maximumFractionDigits:2,minimumFractionDigits:2},FC:{displayAs:"",maximumFractionDigits:2,minimumFractionDigits:2},RC:{maximumFractionDigits:2,minimumFractionDigits:2},MWSC:{displayAs:"MC",maximumFractionDigits:2,minimumFractionDigits:2},MWGC:{displayAs:"GC",maximumFractionDigits:2,minimumFractionDigits:2},MMK:{maximumFractionDigits:2,minimumFractionDigits:2},XOF:{maximumFractionDigits:2,minimumFractionDigits:2},VND:{maximumFractionDigits:2,minimumFractionDigits:2},BIF:{maximumFractionDigits:2,minimumFractionDigits:2},CLP:{maximumFractionDigits:2,minimumFractionDigits:2},GNF:{maximumFractionDigits:2,minimumFractionDigits:2},IQD:{maximumFractionDigits:2,minimumFractionDigits:2},ISK:{maximumFractionDigits:2,minimumFractionDigits:2},PYG:{maximumFractionDigits:2,minimumFractionDigits:2},XAF:{maximumFractionDigits:2,minimumFractionDigits:2},LAK:{maximumFractionDigits:2,minimumFractionDigits:2},LBP:{maximumFractionDigits:2,minimumFractionDigits:2},MGA:{maximumFractionDigits:2,minimumFractionDigits:2},SOS:{maximumFractionDigits:2,minimumFractionDigits:2},UGX:{maximumFractionDigits:2,minimumFractionDigits:2},ALL:{maximumFractionDigits:2,minimumFractionDigits:2},IRR:{maximumFractionDigits:2,minimumFractionDigits:2}};function x(m){return m in F}function S(m){return x(m)?{...F[m],currency:D}:{currency:m}}function f(m,i,t){const n=i.format(+m);return x(t)?n.replace(D,F[t].displayAs??t):n}function A(m,i,t){const{maximumFractionDigits:n,minimumFractionDigits:a}=t.resolvedOptions();return C(m,i,{maximumFractionDigits:n,minimumFractionDigits:a})}function d(m,i,{as:t}={as:"Currency"}){const{canShowCurrency:n,currency:a}=m;return t==="Number"||!n?`${i}`:`${i} ${a}`}function p(m,i,{as:t,from:n}={as:"Currency",from:"Money"},a){if(!["string","number"].includes(typeof i))return"NaN";const{canShowCurrency:u=!0,coinValueInCents:c,currency:o,locales:g}=m;n==="Coins"&&(i=l(+i,c));try{const y=S(o),e=new Intl.NumberFormat(g,{...y,...a,currencyDisplay:"symbol",numberingSystem:"latn",style:"currency"});return t==="Number"||!u?A(m,i,e):f(i,e,o)}catch{return d(m,i,{as:t})}}class N{#i;constructor({config:i}){this.#i=i}formatNumber(i,t){const n={locales:[this.#i.ui.language]};return C(n,i,t)}formatCurrency(i,t={as:r.Currency,from:s.Money},n){const a=this.#i.ui.feature.showCurrency,u=this.#i.api.coinValueInCents,c=this.#i.api.currency||D,o=[this.#i.ui.language];return p({canShowCurrency:a,coinValueInCents:u,currency:c,locales:o},i,t,n)}formatCoins(i,t){return this.formatCurrency(i,{as:r.Number,from:s.Coins},t)}formatCoinsWithCurrency(i,t){return this.formatCurrency(i,{as:r.Currency,from:s.Coins},t)}formatMoney(i,t){return this.formatCurrency(i,{as:r.Number,from:s.Money},t)}formatMoneyWithCurrency(i,t){return this.formatCurrency(i,{as:r.Currency,from:s.Money},t)}}const T={json:JSON.parse},G={json:JSON.stringify};exports.I18n=N;exports.decoders=T;exports.encoders=G;
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* BSD 3-Clause License
|
|
3
|
+
* Copyright (c) 2026, Kalamba Games Limited
|
|
4
|
+
*/
|
|
5
|
+
"use strict";const O={CONNECTION_ERROR:"CONNECTION_ERROR",INVALID_BET_CURRENCY:"INVALID_BET_CURRENCY",INVALID_BET:"INVALID_BET",INVALID_CAGE_CODE:"INVALID_CAGE_CODE",INVALID_CLIENT_TYPE:"INVALID_CLIENT_TYPE",INVALID_MESSAGE_FORMAT:"INVALID_MESSAGE_FORMAT",INVALID_SESSION:"INVALID_SESSION",TOO_HIGH_BET_FREQUENCY:"TOO_HIGH_BET_FREQUENCY",TOO_HIGH_ACTION_FREQUENCY:"TOO_HIGH_ACTION_FREQUENCY",USER_LOCK_INVALID_PARAMS:"USER_LOCK_INVALID_PARAMS",USER_ALREADY_LOCKED:"USER_ALREADY_LOCKED",GAME_SERVER_ERROR:"GAME_SERVER_ERROR",SESSION_MANAGEMENT_ERROR:"SESSION_MANAGEMENT_ERROR",MESSAGE_SENDER_ERROR:"MESSAGE_SENDER_ERROR",FREE_ROUNDS_PROCESSING_ERROR:"FREE_ROUNDS_PROCESSING_ERROR",WEB_SESSION_NOT_OPEN:"WEB_SESSION_NOT_OPEN",GAMING_LIMITS_REACHED:"GAMING_LIMITS_REACHED",OUT_OF_MONEY:"OUT_OF_MONEY",UNFINISHED_ROUND_IN_PROGRESS:"UNFINISHED_ROUND_IN_PROGRESS",ACCESS_DENIED:"ACCESS_DENIED",CREDENTIALS_NOT_FOUND:"CREDENTIALS_NOT_FOUND",ALREADY_LOGGED_IN:"ALREADY_LOGGED_IN",GAME_UNAVAILABLE:"GAME_UNAVAILABLE",BONUS_RESTRICTION:"BONUS_RESTRICTION",TOO_MANY_OPEN_GAMES:"TOO_MANY_OPEN_GAMES",GAME_FROZEN:"GAME_FROZEN",WALLET_PROCESSING_ERROR:"WALLET_PROCESSING_ERROR",FORCED_OUTCOMES_NOT_ALLOWED:"FORCED_OUTCOMES_NOT_ALLOWED",MISSING_GAME_STATE:"MISSING_GAME_STATE",DATA_ACCESS_ERROR:"DATA_ACCESS_ERROR",UNKNOWN:"UNKNOWN"},R={CONNECTION_ERROR:"RELOAD",INVALID_BET_CURRENCY:"CLOSE",INVALID_BET:"CONTINUE",INVALID_CAGE_CODE:"CLOSE",INVALID_CLIENT_TYPE:"CLOSE",INVALID_MESSAGE_FORMAT:"CLOSE",INVALID_SESSION:"CLOSE",TOO_HIGH_BET_FREQUENCY:"CONTINUE",TOO_HIGH_ACTION_FREQUENCY:"CONTINUE",USER_LOCK_INVALID_PARAMS:"CLOSE",USER_ALREADY_LOCKED:"CLOSE",GAME_SERVER_ERROR:"RELOAD",SESSION_MANAGEMENT_ERROR:"RELOAD",MESSAGE_SENDER_ERROR:"RELOAD",FREE_ROUNDS_PROCESSING_ERROR:"RELOAD",WEB_SESSION_NOT_OPEN:"RELOAD",GAMING_LIMITS_REACHED:"CLOSE",OUT_OF_MONEY:"CONTINUE",UNFINISHED_ROUND_IN_PROGRESS:"CLOSE",ACCESS_DENIED:"CLOSE",CREDENTIALS_NOT_FOUND:"CLOSE",ALREADY_LOGGED_IN:"CLOSE",GAME_UNAVAILABLE:"CLOSE",BONUS_RESTRICTION:"CLOSE",TOO_MANY_OPEN_GAMES:"CLOSE",GAME_FROZEN:"CLOSE",WALLET_PROCESSING_ERROR:"CLOSE",FORCED_OUTCOMES_NOT_ALLOWED:"CONTINUE",MISSING_GAME_STATE:"RELOAD",DATA_ACCESS_ERROR:"RELOAD",UNKNOWN:"CLOSE"};class N extends Error{data;constructor(_){super(),this.name="RgsError",this.data=_}}class S extends Error{constructor(){super(),this.name="TimeoutError"}}exports.RgsError=N;exports.RgsErrorAction=R;exports.RgsErrorCode=O;exports.TimeoutError=S;
|
|
@@ -1,11 +1,8 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* BSD 3-Clause License
|
|
3
|
-
* Copyright (c)
|
|
3
|
+
* Copyright (c) 2026, Kalamba Games Limited
|
|
4
4
|
*/
|
|
5
|
-
|
|
6
|
-
var S = (_, E, O) => E in _ ? R(_, E, { enumerable: !0, configurable: !0, writable: !0, value: O }) : _[E] = O;
|
|
7
|
-
var N = (_, E, O) => S(_, typeof E != "symbol" ? E + "" : E, O);
|
|
8
|
-
const I = {
|
|
5
|
+
const O = {
|
|
9
6
|
CONNECTION_ERROR: "CONNECTION_ERROR",
|
|
10
7
|
INVALID_BET_CURRENCY: "INVALID_BET_CURRENCY",
|
|
11
8
|
INVALID_BET: "INVALID_BET",
|
|
@@ -37,7 +34,7 @@ const I = {
|
|
|
37
34
|
MISSING_GAME_STATE: "MISSING_GAME_STATE",
|
|
38
35
|
DATA_ACCESS_ERROR: "DATA_ACCESS_ERROR",
|
|
39
36
|
UNKNOWN: "UNKNOWN"
|
|
40
|
-
},
|
|
37
|
+
}, N = {
|
|
41
38
|
CONNECTION_ERROR: "RELOAD",
|
|
42
39
|
INVALID_BET_CURRENCY: "CLOSE",
|
|
43
40
|
INVALID_BET: "CONTINUE",
|
|
@@ -70,21 +67,20 @@ const I = {
|
|
|
70
67
|
DATA_ACCESS_ERROR: "RELOAD",
|
|
71
68
|
UNKNOWN: "CLOSE"
|
|
72
69
|
};
|
|
73
|
-
class
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
this.name = "RgsError", this.data = O;
|
|
70
|
+
class R extends Error {
|
|
71
|
+
data;
|
|
72
|
+
constructor(_) {
|
|
73
|
+
super(), this.name = "RgsError", this.data = _;
|
|
78
74
|
}
|
|
79
75
|
}
|
|
80
|
-
class
|
|
76
|
+
class S extends Error {
|
|
81
77
|
constructor() {
|
|
82
78
|
super(), this.name = "TimeoutError";
|
|
83
79
|
}
|
|
84
80
|
}
|
|
85
81
|
export {
|
|
86
|
-
|
|
87
|
-
T,
|
|
88
|
-
|
|
89
|
-
|
|
82
|
+
R,
|
|
83
|
+
S as T,
|
|
84
|
+
O as a,
|
|
85
|
+
N as b
|
|
90
86
|
};
|
package/dist/index.cjs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* BSD 3-Clause License
|
|
3
|
-
* Copyright (c)
|
|
3
|
+
* Copyright (c) 2026, Kalamba Games Limited
|
|
4
4
|
*/
|
|
5
|
-
"use strict";
|
|
5
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const t=require("./errors-BZBs3Z5K.cjs"),i=require("./encoders-C-jSxC0Z.cjs"),d=()=>{};class u{#e;#r;#o;constructor({messagePort:e}){this.#o=e,this.on("configured",r=>{this.#e=r,this.#r=new i.I18n({config:r})})}get config(){if(!this.#e)throw new Error("config is not initialized, you must open game first");return this.#e}get i18n(){if(!this.#r)throw new Error("i18n is not initialized, you must open game first");return this.#r}request(e,...[r]){return new Promise(s=>{this.on(`${e}Response`,o=>s({type:"response",response:o}),{once:!0}),this.on(`${e}Error`,o=>s({type:"error",error:o}),{once:!0}),this.send(e,r)})}on(e,r,s){const o=function a(n){n.data.message===`kalamba:wrapper:${e}`&&(d("on",n.data.message.replace(/^kalamba:/,""),n.data.payload),r(n.data.payload),s?.once&&window.removeEventListener("message",a))};window.addEventListener("message",o)}send(e,...[r]){this.#o.postMessage({message:`kalamba:sdk:${e}`,payload:r},"*")}configure(e){this.send("configure",e)}async openGame(){const e=new Promise(s=>this.on("configured",s,{once:!0})),r=await this.request("openGame");if(r.type==="response")return await e,r.response;throw r.error.type==="timeout"?new t.TimeoutError:new t.RgsError(r.error.data)}async play(e,r){const s={contract:e,extra:r},o=await this.request("play",s);if(o.type==="response")return o.response;throw o.error.type==="timeout"?new t.TimeoutError:new t.RgsError(o.error.data)}}exports.RgsError=t.RgsError;exports.RgsErrorCode=t.RgsErrorCode;exports.TimeoutError=t.TimeoutError;exports.I18n=i.I18n;exports.decoders=i.decoders;exports.encoders=i.encoders;exports.KalambaSdk=u;
|
package/dist/index.d.ts
CHANGED
|
@@ -53,6 +53,7 @@ export declare type CasinoOnlyMessagePayloadMap = {
|
|
|
53
53
|
settings: Settings;
|
|
54
54
|
suspend: never;
|
|
55
55
|
unfreeze: never;
|
|
56
|
+
translations: NestedRecord<string, string>;
|
|
56
57
|
};
|
|
57
58
|
|
|
58
59
|
export declare type ContractPlayPayload = {
|
|
@@ -107,7 +108,7 @@ export declare const encoders: {
|
|
|
107
108
|
|
|
108
109
|
export { FormatCurrencyOptions }
|
|
109
110
|
|
|
110
|
-
export declare type ForwardToPluginsMessage<P extends PluginDomain> = keyof ForwardToPluginsMessageMap<'sdk'>[P] | keyof ForwardToPluginsMessageMap<'rgs'>[P] | keyof ForwardToPluginsMessageMap<'casino'>[P] | keyof ForwardToPluginsMessageMap<'telemetry'>[P];
|
|
111
|
+
export declare type ForwardToPluginsMessage<P extends PluginDomain> = keyof ForwardToPluginsMessageMap<'sdk'>[P] | keyof ForwardToPluginsMessageMap<'rgs'>[P] | keyof ForwardToPluginsMessageMap<'casino'>[P] | keyof ForwardToPluginsMessageMap<'telemetry'>[P] | keyof ForwardToPluginsMessageMap<'wrapper'>[P];
|
|
111
112
|
|
|
112
113
|
export declare interface ForwardToPluginsMessageMap<SourceDomain extends DomainPrefix> {
|
|
113
114
|
casino: ToCasinoPluginsForwardedMessageMap[SourceDomain];
|
|
@@ -115,7 +116,7 @@ export declare interface ForwardToPluginsMessageMap<SourceDomain extends DomainP
|
|
|
115
116
|
telemetry: ToTelemetryPluginsForwardedMessageMap[SourceDomain];
|
|
116
117
|
}
|
|
117
118
|
|
|
118
|
-
export declare type ForwardToPluginsMessagePayload<P extends PluginDomain, M extends ForwardToPluginsMessage<P>> = ForwardToPluginsMessageMap<'sdk'>[P][M] & ForwardToPluginsMessageMap<'rgs'>[P][M] & ForwardToPluginsMessageMap<'casino'>[P][M] & ForwardToPluginsMessageMap<'telemetry'>[P][M];
|
|
119
|
+
export declare type ForwardToPluginsMessagePayload<P extends PluginDomain, M extends ForwardToPluginsMessage<P>> = ForwardToPluginsMessageMap<'sdk'>[P][M] & ForwardToPluginsMessageMap<'rgs'>[P][M] & ForwardToPluginsMessageMap<'casino'>[P][M] & ForwardToPluginsMessageMap<'telemetry'>[P][M] & ForwardToPluginsMessageMap<'wrapper'>[P][M];
|
|
119
120
|
|
|
120
121
|
export declare type ForwardToSdkMessage = keyof ToSdkForwardedMessageMap;
|
|
121
122
|
|
|
@@ -287,7 +288,7 @@ export declare type PlayResponse = {
|
|
|
287
288
|
|
|
288
289
|
export declare type PluginDomain = keyof ForwardToPluginsMessageMap<any>;
|
|
289
290
|
|
|
290
|
-
export declare type PrefixedForwardToPluginsMessage<P extends PluginDomain> = PrefixTypes<keyof ForwardToPluginsMessageMap<'sdk'>[P], 'sdk'> | PrefixTypes<keyof ForwardToPluginsMessageMap<'rgs'>[P], 'rgs'> | PrefixTypes<keyof ForwardToPluginsMessageMap<'casino'>[P], 'casino'> | PrefixTypes<keyof ForwardToPluginsMessageMap<'telemetry'>[P], 'telemetry'>;
|
|
291
|
+
export declare type PrefixedForwardToPluginsMessage<P extends PluginDomain> = PrefixTypes<keyof ForwardToPluginsMessageMap<'sdk'>[P], 'sdk'> | PrefixTypes<keyof ForwardToPluginsMessageMap<'rgs'>[P], 'rgs'> | PrefixTypes<keyof ForwardToPluginsMessageMap<'casino'>[P], 'casino'> | PrefixTypes<keyof ForwardToPluginsMessageMap<'telemetry'>[P], 'telemetry'> | PrefixTypes<keyof ForwardToPluginsMessageMap<'wrapper'>[P], 'wrapper'>;
|
|
291
292
|
|
|
292
293
|
export declare type PrefixedMessage = keyof PrefixedMessageMap;
|
|
293
294
|
|
|
@@ -479,9 +480,6 @@ export declare type SdkOnlyMessagePayloadMap = {
|
|
|
479
480
|
autoplay: {
|
|
480
481
|
action: 'start' | 'stop' | 'pause' | 'resume';
|
|
481
482
|
};
|
|
482
|
-
balance: {
|
|
483
|
-
balance: number;
|
|
484
|
-
};
|
|
485
483
|
bet: Bet;
|
|
486
484
|
cashier: Cashier;
|
|
487
485
|
choice: {
|
|
@@ -545,9 +543,9 @@ export declare class TimeoutError extends Error {
|
|
|
545
543
|
}
|
|
546
544
|
|
|
547
545
|
export declare type ToCasinoPluginsForwardedMessageMap = {
|
|
548
|
-
sdk: Pick<SdkOnlyMessagePayloadMap, 'autoplay' | '
|
|
546
|
+
sdk: Pick<SdkOnlyMessagePayloadMap, 'autoplay' | 'bet' | 'cashier' | 'choice' | 'close' | 'configure' | 'error' | 'history' | 'loadEnd' | 'loadProgress' | 'loadStart' | 'openGame' | 'play' | 'playCycleEnd' | 'playCycleStart' | 'playEnd' | 'playReady' | 'playStart' | 'settings' | 'fullscreen'>;
|
|
549
547
|
casino: undefined;
|
|
550
|
-
rgs: Pick<RgsOnlyMessagePayloadMap, 'playResponse' | 'playError' | 'openGameResponse'>;
|
|
548
|
+
rgs: Pick<RgsOnlyMessagePayloadMap, 'balance' | 'playResponse' | 'playError' | 'openGameResponse'>;
|
|
551
549
|
telemetry: undefined;
|
|
552
550
|
wrapper: undefined;
|
|
553
551
|
};
|
|
@@ -560,7 +558,7 @@ export declare type ToRgsPluginsForwardedMessageMap = {
|
|
|
560
558
|
wrapper: undefined;
|
|
561
559
|
};
|
|
562
560
|
|
|
563
|
-
export declare type ToSdkForwardedMessageMap = Pick<CasinoOnlyMessagePayloadMap, 'balance' | 'bet' | 'choice' | 'freeze' | 'help' | 'paytable' | 'resume' | 'settings' | 'suspend' | 'unfreeze'> & Pick<RgsOnlyMessagePayloadMap, 'realityCheck' | 'openGameError' | 'openGameResponse' | 'playError' | 'playResponse'>;
|
|
561
|
+
export declare type ToSdkForwardedMessageMap = Pick<CasinoOnlyMessagePayloadMap, 'balance' | 'bet' | 'choice' | 'freeze' | 'help' | 'paytable' | 'resume' | 'settings' | 'suspend' | 'unfreeze'> & Pick<RgsOnlyMessagePayloadMap, 'balance' | 'realityCheck' | 'openGameError' | 'openGameResponse' | 'playError' | 'playResponse'>;
|
|
564
562
|
|
|
565
563
|
export declare type ToTelemetryPluginsForwardedMessageMap = {
|
|
566
564
|
sdk: Pick<SdkOnlyMessagePayloadMap, 'autoplay' | 'error' | 'loadStart' | 'loadProgress' | 'loadEnd' | 'playCycleStart' | 'playCycleEnd' | 'settings' | 'telemetry.click' | 'telemetry.orientationChange'>;
|
|
@@ -586,6 +584,7 @@ export declare type WrapperConfig = {
|
|
|
586
584
|
|
|
587
585
|
export declare type WrapperOnlyMessagePayloadMap = {
|
|
588
586
|
bet: Bet;
|
|
587
|
+
cashier: Cashier;
|
|
589
588
|
close: never;
|
|
590
589
|
configured: SdkConfig;
|
|
591
590
|
error: SdkError;
|
|
@@ -608,8 +607,8 @@ export declare type WrapperState = {
|
|
|
608
607
|
isSdkConfigured: boolean;
|
|
609
608
|
balance: number;
|
|
610
609
|
bet: Bet;
|
|
611
|
-
openGameResponse?: OpenGameResponse;
|
|
612
|
-
lastPlayResponse?: PlayResponse;
|
|
610
|
+
openGameResponse?: OpenGameResponse['contract'];
|
|
611
|
+
lastPlayResponse?: PlayResponse['contract'];
|
|
613
612
|
freeRoundId?: string;
|
|
614
613
|
};
|
|
615
614
|
|