@kalamba/sdk 0.19.0 → 0.23.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/index.cjs CHANGED
@@ -2,4 +2,4 @@
2
2
  * BSD 3-Clause License
3
3
  * Copyright (c) 2025, Kalamba Games Limited
4
4
  */
5
- "use strict";var A=m=>{throw TypeError(m)};var N=(m,i,t)=>i.has(m)||A("Cannot "+t);var r=(m,i,t)=>(N(m,i,"read from private field"),t?t.call(m):i.get(m)),e=(m,i,t)=>i.has(m)?A("Cannot add the same private member more than once"):i instanceof WeakSet?i.add(m):i.set(m,t),u=(m,i,t,n)=>(N(m,i,"write to private field"),n?n.call(m,t):i.set(m,t),t);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const D=require("./errors-BXO3dlhS.cjs"),O=require("./encoders-DVHzIpWT.cjs"),U=3e4;var F,S;class k{constructor(i){e(this,F);e(this,S,U);u(this,F,i)}buildHeaders(){const i={};return r(this,F).token&&(i.Authorization=`Bearer ${r(this,F).token}`),i}async request(i,t){const n=new URL(i,r(this,F).apiUrl??window.location.origin);return n.search=new URLSearchParams({...t}).toString(),await(await fetch(n,{signal:AbortSignal.timeout(r(this,S)),headers:this.buildHeaders()})).json()}async getRounds(i){return this.request("/rounds",i)}async getRound(i,t){return this.request(`/rounds/${i}`,t)}}F=new WeakMap,S=new WeakMap;const I=Symbol.for("constructDateFrom");function $(m,i){return typeof m=="function"?m(i):m&&typeof m=="object"&&I in m?m[I](i):m instanceof Date?new m.constructor(i):new Date(i)}function P(m,i){return $(m,m)}function K(m,i){const t=P(m);return t.setHours(0,0,0,0),t}function _(m,i){const t=P(m);return t.setHours(23,59,59,999),t}function q(m){return _(Date.now())}function X(m){return K(Date.now())}const b={limit:100,page:0};var s,x;class G{constructor({config:i}){e(this,s);e(this,x);u(this,s,i),u(this,x,new k({apiUrl:i.api.gameHistoryUrl}))}async getRound(i,{pagination:t=b}={}){return r(this,x).getRound(i,{gameCode:r(this,s).api.game,operatorCode:r(this,s).api.brand,username:r(this,s).api.user,...t})}async getLastRound(){return r(this,s).api.lastRoundId?this.getRound(r(this,s).api.lastRoundId):null}async getRounds({searchPeriod:i={fromDateTime:X(),toDateTime:q()},pagination:t=b}={}){const n=r(this,s).api.user.replace(/^user_/,"").replace(new RegExp(`_${r(this,s).api.integration}$`),"");return r(this,x).getRounds({gameCode:r(this,s).api.game,operatorCode:r(this,s).api.integration,username:n,fromDataTime:i.fromDateTime.toISOString(),toDateTime:i.toDateTime.toISOString(),...t})}}s=new WeakMap,x=new WeakMap;function V(m,i){return m*i/100}function M(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 w="XTS";var y=(m=>(m.Currency="Currency",m.Number="Number",m))(y||{}),f=(m=>(m.Coins="Coins",m.Money="Money",m))(f||{});const T={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},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},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 B(m){return m in T}function W(m){return B(m)?{...T[m],currency:w}:{currency:m}}function z(m,i,t){const n=i.format(+m);return B(t)?n.replace(w,T[t].displayAs??t):n}function j(m,i,t){const{maximumFractionDigits:n,minimumFractionDigits:o}=t.resolvedOptions();return M(m,i,{maximumFractionDigits:n,minimumFractionDigits:o})}function J(m,i,{as:t}={as:"Currency"}){const{canShowCurrency:n,currency:o}=m;return t==="Number"||!n?`${i}`:`${i} ${o}`}function v(m,i,{as:t,from:n}={as:"Currency",from:"Money"},o){if(!["string","number"].includes(typeof i))return"NaN";const{canShowCurrency:a=!0,coinValueInCents:g,currency:h,locales:R}=m;n==="Coins"&&(i=V(+i,g));try{const H=W(h),E=new Intl.NumberFormat(R,{...H,...o,currencyDisplay:"symbol",numberingSystem:"latn",style:"currency"});return t==="Number"||!a?j(m,i,E):z(i,E,h)}catch{return J(m,i,{as:t})}}var c;class L{constructor({config:i}){e(this,c);u(this,c,i)}formatNumber(i,t){const n={locales:[r(this,c).ui.language]};return M(n,i,t)}formatCurrency(i,t={as:y.Currency,from:f.Money},n){const o=r(this,c).ui.feature.showCurrency,a=r(this,c).api.coinValueInCents,g=r(this,c).api.currency||w,h=[r(this,c).ui.language];return v({canShowCurrency:o,coinValueInCents:a,currency:g,locales:h},i,t,n)}formatCoins(i,t){return this.formatCurrency(i,{as:y.Number,from:f.Coins},t)}formatCoinsWithCurrency(i,t){return this.formatCurrency(i,{as:y.Currency,from:f.Coins},t)}formatMoney(i,t){return this.formatCurrency(i,{as:y.Number,from:f.Money},t)}formatMoneyWithCurrency(i,t){return this.formatCurrency(i,{as:y.Currency,from:f.Money},t)}}c=new WeakMap;const Y=()=>{};var C,l,d,p;class Q{constructor({messagePort:i}){e(this,C);e(this,l);e(this,d);e(this,p);u(this,p,i),this.on("configured",t=>{u(this,C,t),u(this,d,new L({config:t})),u(this,l,new G({config:t}))}),this.on("playResponse",t=>{this.config.api.lastRoundId=t.contract.roundId})}get config(){if(!r(this,C))throw new Error("config is not initialized, you must open game first");return r(this,C)}get history(){if(!r(this,l))throw new Error("config is not initialized, you must open game first");return r(this,l)}get i18n(){if(!r(this,d))throw new Error("i18n is not initialized, you must open game first");return r(this,d)}request(i,...[t]){return new Promise(n=>{this.on(`${i}Response`,o=>n({type:"response",response:o}),{once:!0}),this.on(`${i}Error`,o=>n({type:"error",error:o}),{once:!0}),this.send(i,t)})}on(i,t,n){const o=function a(g){g.data.message===`kalamba:wrapper:${i}`&&(Y("on",g.data.message.replace(/^kalamba:/,""),g.data.payload),t(g.data.payload),n!=null&&n.once&&window.removeEventListener("message",a))};window.addEventListener("message",o)}send(i,...[t]){r(this,p).postMessage({message:`kalamba:sdk:${i}`,payload:t},"*")}configure(i){this.send("configure",i)}async openGame(){const i=new Promise(n=>this.on("configured",n,{once:!0})),t=await this.request("openGame");if(t.type==="response")return await i,t.response;throw t.error.type==="timeout"?new D.TimeoutError:new D.RgsError(t.error.data)}async play(i,t,n="SPIN"){const o={contract:i,extra:t,actionType:n},a=await this.request("play",o);if(a.type==="response")return a.response;throw a.error.type==="timeout"?new D.TimeoutError:new D.RgsError(a.error.data)}}C=new WeakMap,l=new WeakMap,d=new WeakMap,p=new WeakMap;exports.RgsError=D.RgsError;exports.RgsErrorCode=D.RgsErrorCode;exports.TimeoutError=D.TimeoutError;exports.decoders=O.decoders;exports.encoders=O.encoders;exports.History=G;exports.I18n=L;exports.KalambaSdk=Q;
5
+ "use strict";var E=m=>{throw TypeError(m)};var N=(m,i,t)=>i.has(m)||E("Cannot "+t);var r=(m,i,t)=>(N(m,i,"read from private field"),t?t.call(m):i.get(m)),u=(m,i,t)=>i.has(m)?E("Cannot add the same private member more than once"):i instanceof WeakSet?i.add(m):i.set(m,t),e=(m,i,t,n)=>(N(m,i,"write to private field"),n?n.call(m,t):i.set(m,t),t);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const D=require("./errors-BXO3dlhS.cjs"),O=require("./encoders-DVHzIpWT.cjs"),H=3e4;var F,S;class k{constructor(i){u(this,F);u(this,S,H);e(this,F,i)}buildHeaders(){const i={};return r(this,F).token&&(i.Authorization=`Bearer ${r(this,F).token}`),i}async request(i,t){const n=new URL(i,r(this,F).apiUrl??window.location.origin);return n.search=new URLSearchParams({...t}).toString(),await(await fetch(n,{signal:AbortSignal.timeout(r(this,S)),headers:this.buildHeaders()})).json()}async getRounds(i){return this.request("/rounds",i)}async getRound(i,t){return this.request(`/rounds/${i}`,t)}}F=new WeakMap,S=new WeakMap;const I=Symbol.for("constructDateFrom");function K(m,i){return typeof m=="function"?m(i):m&&typeof m=="object"&&I in m?m[I](i):m instanceof Date?new m.constructor(i):new Date(i)}function b(m,i){return K(m,m)}function $(m,i){const t=b(m);return t.setHours(0,0,0,0),t}function X(m,i){const t=b(m);return t.setHours(23,59,59,999),t}function _(m){return X(Date.now())}function q(m){return $(Date.now())}const G={limit:100,page:0};var a,x;class P{constructor({config:i}){u(this,a);u(this,x);e(this,a,i),e(this,x,new k({apiUrl:i.api.gameHistoryUrl}))}async getRound(i,{pagination:t=G}={}){return r(this,x).getRound(i,{gameCode:r(this,a).api.game,operatorCode:r(this,a).api.brand,username:r(this,a).api.user,...t})}async getLastRound(){return r(this,a).api.lastRoundId?this.getRound(r(this,a).api.lastRoundId):null}async getRounds({searchPeriod:i={fromDateTime:q(),toDateTime:_()},pagination:t=G}={}){const n=r(this,a).api.user.replace(/^user_/,"").replace(new RegExp(`_${r(this,a).api.integration}$`),"");return r(this,x).getRounds({gameCode:r(this,a).api.game,operatorCode:r(this,a).api.integration,username:n,fromDataTime:i.fromDateTime.toISOString(),toDateTime:i.toDateTime.toISOString(),...t})}}a=new WeakMap,x=new WeakMap;function V(m,i){return m*i/100}function L(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 T="XTS";var y=(m=>(m.Currency="Currency",m.Number="Number",m))(y||{}),C=(m=>(m.Coins="Coins",m.Money="Money",m))(C||{});const w={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},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 M(m){return m in w}function W(m){return M(m)?{...w[m],currency:T}:{currency:m}}function z(m,i,t){const n=i.format(+m);return M(t)?n.replace(T,w[t].displayAs??t):n}function j(m,i,t){const{maximumFractionDigits:n,minimumFractionDigits:s}=t.resolvedOptions();return L(m,i,{maximumFractionDigits:n,minimumFractionDigits:s})}function J(m,i,{as:t}={as:"Currency"}){const{canShowCurrency:n,currency:s}=m;return t==="Number"||!n?`${i}`:`${i} ${s}`}function v(m,i,{as:t,from:n}={as:"Currency",from:"Money"},s){if(!["string","number"].includes(typeof i))return"NaN";const{canShowCurrency:o=!0,coinValueInCents:g,currency:h,locales:A}=m;n==="Coins"&&(i=V(+i,g));try{const U=W(h),R=new Intl.NumberFormat(A,{...U,...s,currencyDisplay:"symbol",numberingSystem:"latn",style:"currency"});return t==="Number"||!o?j(m,i,R):z(i,R,h)}catch{return J(m,i,{as:t})}}var c;class B{constructor({config:i}){u(this,c);e(this,c,i)}formatNumber(i,t){const n={locales:[r(this,c).ui.language]};return L(n,i,t)}formatCurrency(i,t={as:y.Currency,from:C.Money},n){const s=r(this,c).ui.feature.showCurrency,o=r(this,c).api.coinValueInCents,g=r(this,c).api.currency||T,h=[r(this,c).ui.language];return v({canShowCurrency:s,coinValueInCents:o,currency:g,locales:h},i,t,n)}formatCoins(i,t){return this.formatCurrency(i,{as:y.Number,from:C.Coins},t)}formatCoinsWithCurrency(i,t){return this.formatCurrency(i,{as:y.Currency,from:C.Coins},t)}formatMoney(i,t){return this.formatCurrency(i,{as:y.Number,from:C.Money},t)}formatMoneyWithCurrency(i,t){return this.formatCurrency(i,{as:y.Currency,from:C.Money},t)}}c=new WeakMap;const Y=()=>{};var f,l,d,p;class Q{constructor({messagePort:i}){u(this,f);u(this,l);u(this,d);u(this,p);e(this,p,i),this.on("configured",t=>{e(this,f,t),e(this,d,new B({config:t})),e(this,l,new P({config:t}))}),this.on("playResponse",t=>{this.config.api.lastRoundId=t.contract.roundId})}get config(){if(!r(this,f))throw new Error("config is not initialized, you must open game first");return r(this,f)}get history(){if(!r(this,l))throw new Error("config is not initialized, you must open game first");return r(this,l)}get i18n(){if(!r(this,d))throw new Error("i18n is not initialized, you must open game first");return r(this,d)}request(i,...[t]){return new Promise(n=>{this.on(`${i}Response`,s=>n({type:"response",response:s}),{once:!0}),this.on(`${i}Error`,s=>n({type:"error",error:s}),{once:!0}),this.send(i,t)})}on(i,t,n){const s=function o(g){g.data.message===`kalamba:wrapper:${i}`&&(Y("on",g.data.message.replace(/^kalamba:/,""),g.data.payload),t(g.data.payload),n!=null&&n.once&&window.removeEventListener("message",o))};window.addEventListener("message",s)}send(i,...[t]){r(this,p).postMessage({message:`kalamba:sdk:${i}`,payload:t},"*")}configure(i){this.send("configure",i)}async openGame(){const i=new Promise(n=>this.on("configured",n,{once:!0})),t=await this.request("openGame");if(t.type==="response")return await i,t.response;throw t.error.type==="timeout"?new D.TimeoutError:new D.RgsError(t.error.data)}async play(i,t,n="SPIN"){const s={contract:i,extra:t,actionType:n},o=await this.request("play",s);if(o.type==="response")return o.response;throw o.error.type==="timeout"?new D.TimeoutError:new D.RgsError(o.error.data)}}f=new WeakMap,l=new WeakMap,d=new WeakMap,p=new WeakMap;exports.RgsError=D.RgsError;exports.RgsErrorCode=D.RgsErrorCode;exports.TimeoutError=D.TimeoutError;exports.decoders=O.decoders;exports.encoders=O.encoders;exports.History=P;exports.I18n=B;exports.KalambaSdk=Q;
package/dist/index.d.ts CHANGED
@@ -40,12 +40,13 @@ export declare type CasinoOnlyMessagePayloadMap = {
40
40
  };
41
41
  close: never;
42
42
  freeze: never;
43
- help: {
44
- show?: boolean;
43
+ getBalance: never;
44
+ help?: {
45
+ show: boolean;
45
46
  };
46
47
  history: History_3;
47
- paytable: {
48
- show?: boolean;
48
+ paytable?: {
49
+ show: boolean;
49
50
  };
50
51
  play: PlayRequest;
51
52
  resume: never;
@@ -195,7 +196,7 @@ export declare class KalambaSdk {
195
196
  get i18n(): I18n;
196
197
  protected request<M extends DomainMessage<'sdk'>>(message: M, ...[payload]: DomainMessagePayload<'sdk', M> extends never ? [] : [payload: DomainMessagePayload<'sdk', M>]): Promise<RgsResponse<M>>;
197
198
  on<M extends DomainMessage<'wrapper'> | ForwardToSdkMessage>(message: M, listener: (payload: M extends DomainMessage<'wrapper'> ? DomainMessagePayload<'wrapper', M> : M extends ForwardToSdkMessage ? ForwardToSdkMessagePayload<M> : never) => void, options?: AddEventListenerOptions_2): void;
198
- send<M extends DomainMessage<'sdk'>>(message: M, ...[payload]: DomainMessagePayload<'sdk', M> extends never ? [] : [DomainMessagePayload<'sdk', M>]): void;
199
+ send<M extends DomainMessage<'sdk'>>(message: M, ...[payload]: DomainMessagePayload<'sdk', M> extends never ? [] : undefined extends DomainMessagePayload<'sdk', M> ? [] | [DomainMessagePayload<'sdk', M>] : [DomainMessagePayload<'sdk', M>]): void;
199
200
  configure(payload: DomainMessagePayload<'sdk', 'configure'>): void;
200
201
  openGame(): Promise<OpenGameResponse_2>;
201
202
  play(contract: ContractPlayPayload, extra?: unknown, actionType?: string): Promise<PlayResponse_2>;
@@ -394,6 +395,9 @@ export declare type RgsOnlyMessagePayloadMap = {
394
395
  sumBetAmount: number;
395
396
  sumWinAmount: number;
396
397
  };
398
+ balance: {
399
+ balance: number;
400
+ };
397
401
  };
398
402
 
399
403
  export declare type RgsResponse<M extends DomainMessage<'sdk'>> = {
@@ -569,7 +573,7 @@ export declare type ToCasinoPluginsForwardedMessageMap = {
569
573
 
570
574
  export declare type ToRgsPluginsForwardedMessageMap = {
571
575
  sdk: Pick<SdkOnlyMessagePayloadMap, 'history' | 'openGame' | 'play'>;
572
- casino: Pick<CasinoOnlyMessagePayloadMap, 'play' | 'cashier' | 'close' | 'history'>;
576
+ casino: Pick<CasinoOnlyMessagePayloadMap, 'play' | 'cashier' | 'close' | 'history' | 'getBalance'>;
573
577
  rgs: undefined;
574
578
  telemetry: undefined;
575
579
  wrapper: undefined;
package/dist/index.js CHANGED
@@ -2,12 +2,12 @@
2
2
  * BSD 3-Clause License
3
3
  * Copyright (c) 2025, Kalamba Games Limited
4
4
  */
5
- var A = (m) => {
5
+ var R = (m) => {
6
6
  throw TypeError(m);
7
7
  };
8
- var E = (m, i, t) => i.has(m) || A("Cannot " + t);
9
- var r = (m, i, t) => (E(m, i, "read from private field"), t ? t.call(m) : i.get(m)), u = (m, i, t) => i.has(m) ? A("Cannot add the same private member more than once") : i instanceof WeakSet ? i.add(m) : i.set(m, t), e = (m, i, t, n) => (E(m, i, "write to private field"), n ? n.call(m, t) : i.set(m, t), t);
10
- import { T as N, R as I } from "./errors-NnLrKjTz.js";
8
+ var E = (m, i, t) => i.has(m) || R("Cannot " + t);
9
+ var r = (m, i, t) => (E(m, i, "read from private field"), t ? t.call(m) : i.get(m)), u = (m, i, t) => i.has(m) ? R("Cannot add the same private member more than once") : i instanceof WeakSet ? i.add(m) : i.set(m, t), e = (m, i, t, n) => (E(m, i, "write to private field"), n ? n.call(m, t) : i.set(m, t), t);
10
+ import { T as N, R as G } from "./errors-NnLrKjTz.js";
11
11
  import { a as ni } from "./errors-NnLrKjTz.js";
12
12
  import { d as ai, e as si } from "./encoders-BDr7fjKQ.js";
13
13
  const M = 3e4;
@@ -39,37 +39,37 @@ class U {
39
39
  }
40
40
  }
41
41
  D = new WeakMap(), h = new WeakMap();
42
- const O = Symbol.for("constructDateFrom");
42
+ const I = Symbol.for("constructDateFrom");
43
43
  function H(m, i) {
44
- return typeof m == "function" ? m(i) : m && typeof m == "object" && O in m ? m[O](i) : m instanceof Date ? new m.constructor(i) : new Date(i);
44
+ return typeof m == "function" ? m(i) : m && typeof m == "object" && I in m ? m[I](i) : m instanceof Date ? new m.constructor(i) : new Date(i);
45
45
  }
46
- function G(m, i) {
46
+ function b(m, i) {
47
47
  return H(m, m);
48
48
  }
49
49
  function k(m, i) {
50
- const t = G(m);
50
+ const t = b(m);
51
51
  return t.setHours(0, 0, 0, 0), t;
52
52
  }
53
- function $(m, i) {
54
- const t = G(m);
53
+ function K(m, i) {
54
+ const t = b(m);
55
55
  return t.setHours(23, 59, 59, 999), t;
56
56
  }
57
- function K(m) {
58
- return $(Date.now());
57
+ function $(m) {
58
+ return K(Date.now());
59
59
  }
60
- function _(m) {
60
+ function X(m) {
61
61
  return k(Date.now());
62
62
  }
63
- const b = { limit: 100, page: 0 };
64
- var s, f;
65
- class X {
63
+ const O = { limit: 100, page: 0 };
64
+ var s, C;
65
+ class _ {
66
66
  constructor({ config: i }) {
67
67
  u(this, s);
68
- u(this, f);
69
- e(this, s, i), e(this, f, new U({ apiUrl: i.api.gameHistoryUrl }));
68
+ u(this, C);
69
+ e(this, s, i), e(this, C, new U({ apiUrl: i.api.gameHistoryUrl }));
70
70
  }
71
- async getRound(i, { pagination: t = b } = {}) {
72
- return r(this, f).getRound(i, {
71
+ async getRound(i, { pagination: t = O } = {}) {
72
+ return r(this, C).getRound(i, {
73
73
  gameCode: r(this, s).api.game,
74
74
  operatorCode: r(this, s).api.brand,
75
75
  username: r(this, s).api.user,
@@ -80,11 +80,11 @@ class X {
80
80
  return r(this, s).api.lastRoundId ? this.getRound(r(this, s).api.lastRoundId) : null;
81
81
  }
82
82
  async getRounds({
83
- searchPeriod: i = { fromDateTime: _(), toDateTime: K() },
84
- pagination: t = b
83
+ searchPeriod: i = { fromDateTime: X(), toDateTime: $() },
84
+ pagination: t = O
85
85
  } = {}) {
86
86
  const n = r(this, s).api.user.replace(/^user_/, "").replace(new RegExp(`_${r(this, s).api.integration}$`), "");
87
- return r(this, f).getRounds({
87
+ return r(this, C).getRounds({
88
88
  gameCode: r(this, s).api.game,
89
89
  operatorCode: r(this, s).api.integration,
90
90
  username: n,
@@ -94,11 +94,11 @@ class X {
94
94
  });
95
95
  }
96
96
  }
97
- s = new WeakMap(), f = new WeakMap();
97
+ s = new WeakMap(), C = new WeakMap();
98
98
  function V(m, i) {
99
99
  return m * i / 100;
100
100
  }
101
- function P(m, i, t) {
101
+ function L(m, i, t) {
102
102
  if (!["string", "number"].includes(typeof i))
103
103
  return "NaN";
104
104
  const { locales: n } = m;
@@ -205,6 +205,8 @@ const w = {
205
205
  GCLC: { displayAs: "GC.", maximumFractionDigits: 2, minimumFractionDigits: 2 },
206
206
  SWPC: { displayAs: "SC", maximumFractionDigits: 2, minimumFractionDigits: 2 },
207
207
  LUKC: { displayAs: "LC", maximumFractionDigits: 2, minimumFractionDigits: 2 },
208
+ TTSC: { displayAs: "SC", maximumFractionDigits: 2, minimumFractionDigits: 2 },
209
+ TTGC: { displayAs: "GC", maximumFractionDigits: 2, minimumFractionDigits: 2 },
208
210
  // Silvercash
209
211
  SVC: { maximumFractionDigits: 2, minimumFractionDigits: 2 },
210
212
  // Polkadot
@@ -235,6 +237,9 @@ const w = {
235
237
  // Softswiss
236
238
  EEGP: { displayAs: "EP", maximumFractionDigits: 2, minimumFractionDigits: 2 },
237
239
  EPGP: { displayAs: "PP", maximumFractionDigits: 2, minimumFractionDigits: 2 },
240
+ LUCK: { displayAs: "LUCK", maximumFractionDigits: 2, minimumFractionDigits: 2 },
241
+ CXCO: { displayAs: "CC", maximumFractionDigits: 2, minimumFractionDigits: 2 },
242
+ GZCO: { displayAs: "GC", maximumFractionDigits: 2, minimumFractionDigits: 2 },
238
243
  // https://kalamba.atlassian.net/browse/FRAM-1829
239
244
  // Myanmar Kyat
240
245
  MMK: { maximumFractionDigits: 2, minimumFractionDigits: 2 },
@@ -272,11 +277,11 @@ const w = {
272
277
  IRR: { maximumFractionDigits: 2, minimumFractionDigits: 2 }
273
278
  /* eslint-enable sort-keys-fix/sort-keys-fix */
274
279
  };
275
- function B(m) {
280
+ function P(m) {
276
281
  return m in w;
277
282
  }
278
283
  function q(m) {
279
- return B(m) ? {
284
+ return P(m) ? {
280
285
  ...w[m],
281
286
  currency: S
282
287
  } : {
@@ -285,11 +290,11 @@ function q(m) {
285
290
  }
286
291
  function W(m, i, t) {
287
292
  const n = i.format(+m);
288
- return B(t) ? n.replace(S, w[t].displayAs ?? t) : n;
293
+ return P(t) ? n.replace(S, w[t].displayAs ?? t) : n;
289
294
  }
290
295
  function z(m, i, t) {
291
296
  const { maximumFractionDigits: n, minimumFractionDigits: a } = t.resolvedOptions();
292
- return P(m, i, { maximumFractionDigits: n, minimumFractionDigits: a });
297
+ return L(m, i, { maximumFractionDigits: n, minimumFractionDigits: a });
293
298
  }
294
299
  function J(m, i, { as: t } = {
295
300
  as: "Currency"
@@ -308,8 +313,8 @@ function j(m, i, { as: t, from: n } = {
308
313
  const { canShowCurrency: o = !0, coinValueInCents: g, currency: d, locales: T } = m;
309
314
  n === "Coins" && (i = V(+i, g));
310
315
  try {
311
- const L = q(d), R = new Intl.NumberFormat(T, {
312
- ...L,
316
+ const B = q(d), A = new Intl.NumberFormat(T, {
317
+ ...B,
313
318
  ...a,
314
319
  currencyDisplay: "symbol",
315
320
  // eslint-disable-next-line @typescript-eslint/ban-ts-comment
@@ -317,7 +322,7 @@ function j(m, i, { as: t, from: n } = {
317
322
  numberingSystem: "latn",
318
323
  style: "currency"
319
324
  });
320
- return t === "Number" || !o ? z(m, i, R) : W(i, R, d);
325
+ return t === "Number" || !o ? z(m, i, A) : W(i, A, d);
321
326
  } catch {
322
327
  return J(m, i, { as: t });
323
328
  }
@@ -330,7 +335,7 @@ class Y {
330
335
  }
331
336
  formatNumber(i, t) {
332
337
  const n = { locales: [r(this, c).ui.language] };
333
- return P(n, i, t);
338
+ return L(n, i, t);
334
339
  }
335
340
  formatCurrency(i, t = { as: F.Currency, from: y.Money }, n) {
336
341
  const a = r(this, c).ui.feature.showCurrency, o = r(this, c).api.coinValueInCents, g = r(this, c).api.currency || S, d = [r(this, c).ui.language];
@@ -357,15 +362,15 @@ class Y {
357
362
  c = new WeakMap();
358
363
  const v = () => {
359
364
  };
360
- var x, C, p, l;
365
+ var x, f, p, l;
361
366
  class ii {
362
367
  constructor({ messagePort: i }) {
363
368
  u(this, x);
364
- u(this, C);
369
+ u(this, f);
365
370
  u(this, p);
366
371
  u(this, l);
367
372
  e(this, l, i), this.on("configured", (t) => {
368
- e(this, x, t), e(this, p, new Y({ config: t })), e(this, C, new X({ config: t }));
373
+ e(this, x, t), e(this, p, new Y({ config: t })), e(this, f, new _({ config: t }));
369
374
  }), this.on("playResponse", (t) => {
370
375
  this.config.api.lastRoundId = t.contract.roundId;
371
376
  });
@@ -376,9 +381,9 @@ class ii {
376
381
  return r(this, x);
377
382
  }
378
383
  get history() {
379
- if (!r(this, C))
384
+ if (!r(this, f))
380
385
  throw new Error("config is not initialized, you must open game first");
381
- return r(this, C);
386
+ return r(this, f);
382
387
  }
383
388
  get i18n() {
384
389
  if (!r(this, p))
@@ -415,21 +420,21 @@ class ii {
415
420
  const i = new Promise((n) => this.on("configured", n, { once: !0 })), t = await this.request("openGame");
416
421
  if (t.type === "response")
417
422
  return await i, t.response;
418
- throw t.error.type === "timeout" ? new N() : new I(t.error.data);
423
+ throw t.error.type === "timeout" ? new N() : new G(t.error.data);
419
424
  }
420
425
  async play(i, t, n = "SPIN") {
421
426
  const a = { contract: i, extra: t, actionType: n }, o = await this.request("play", a);
422
427
  if (o.type === "response")
423
428
  return o.response;
424
- throw o.error.type === "timeout" ? new N() : new I(o.error.data);
429
+ throw o.error.type === "timeout" ? new N() : new G(o.error.data);
425
430
  }
426
431
  }
427
- x = new WeakMap(), C = new WeakMap(), p = new WeakMap(), l = new WeakMap();
432
+ x = new WeakMap(), f = new WeakMap(), p = new WeakMap(), l = new WeakMap();
428
433
  export {
429
- X as History,
434
+ _ as History,
430
435
  Y as I18n,
431
436
  ii as KalambaSdk,
432
- I as RgsError,
437
+ G as RgsError,
433
438
  ni as RgsErrorCode,
434
439
  N as TimeoutError,
435
440
  ai as decoders,