@kalamba/sdk 0.19.0 → 0.26.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 G=(m,i,t)=>i.has(m)||E("Cannot "+t);var r=(m,i,t)=>(G(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)=>(G(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 N=Symbol.for("constructDateFrom");function K(m,i){return typeof m=="function"?m(i):m&&typeof m=="object"&&N in m?m[N](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 I={limit:100,page:0};var a,x;class M{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=I}={}){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=I}={}){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 W(m,i){return m*i/100}function P(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},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 L(m){return m in w}function V(m){return L(m)?{...w[m],currency:T}:{currency:m}}function z(m,i,t){const n=i.format(+m);return L(t)?n.replace(T,w[t].displayAs??t):n}function j(m,i,t){const{maximumFractionDigits:n,minimumFractionDigits:s}=t.resolvedOptions();return P(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=W(+i,g));try{const U=V(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 P(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 l,d,f,p;class Q{constructor({messagePort:i}){u(this,l);u(this,d);u(this,f);u(this,p);e(this,p,i),this.on("configured",t=>{e(this,l,t),e(this,f,new B({config:t})),e(this,d,new M({config:t}))}),this.on("playResponse",t=>{this.config.api.lastRoundId=t.contract.roundId})}get config(){if(!r(this,l))throw new Error("config is not initialized, you must open game first");return r(this,l)}get history(){if(!r(this,d))throw new Error("config is not initialized, you must open game first");return r(this,d)}get i18n(){if(!r(this,f))throw new Error("i18n is not initialized, you must open game first");return r(this,f)}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)}}l=new WeakMap,d=new WeakMap,f=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=M;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;
@@ -143,11 +144,20 @@ export declare type FreeRoundsAction = {
143
144
  id: string;
144
145
  };
145
146
 
147
+ export declare type FreeRoundsRequest = {
148
+ id: string;
149
+ action: 'ACCEPT' | 'DECLINE' | 'SKIP';
150
+ };
151
+
146
152
  export declare type FreeRoundsResponse = {
147
153
  action: 'ACCEPT' | 'DECLINE' | 'SKIP';
148
154
  id: string;
149
155
  };
150
156
 
157
+ export declare type GetBalanceResponse = {
158
+ balance: number;
159
+ };
160
+
151
161
  export declare interface GetRoundOptions {
152
162
  pagination?: Pagination;
153
163
  }
@@ -195,7 +205,7 @@ export declare class KalambaSdk {
195
205
  get i18n(): I18n;
196
206
  protected request<M extends DomainMessage<'sdk'>>(message: M, ...[payload]: DomainMessagePayload<'sdk', M> extends never ? [] : [payload: DomainMessagePayload<'sdk', M>]): Promise<RgsResponse<M>>;
197
207
  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;
208
+ 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
209
  configure(payload: DomainMessagePayload<'sdk', 'configure'>): void;
200
210
  openGame(): Promise<OpenGameResponse_2>;
201
211
  play(contract: ContractPlayPayload, extra?: unknown, actionType?: string): Promise<PlayResponse_2>;
@@ -271,6 +281,10 @@ export declare type PlayRequest = {
271
281
  actionType: string;
272
282
  };
273
283
 
284
+ export declare type PlayRequestEnhanced = PlayRequest & {
285
+ payloadToInject?: Record<string, unknown>;
286
+ };
287
+
274
288
  export declare type PlayResponse = {
275
289
  contract: {
276
290
  bet: {
@@ -394,6 +408,9 @@ export declare type RgsOnlyMessagePayloadMap = {
394
408
  sumBetAmount: number;
395
409
  sumWinAmount: number;
396
410
  };
411
+ balance: {
412
+ balance: number;
413
+ };
397
414
  };
398
415
 
399
416
  export declare type RgsResponse<M extends DomainMessage<'sdk'>> = {
@@ -471,6 +488,7 @@ export declare interface SdkConfig {
471
488
  realityCheck: RealityCheckConfig;
472
489
  skipInsufficientFundsCheck: boolean;
473
490
  skipSplash: boolean;
491
+ cheatPanel: boolean;
474
492
  };
475
493
  }
476
494
 
@@ -569,7 +587,7 @@ export declare type ToCasinoPluginsForwardedMessageMap = {
569
587
 
570
588
  export declare type ToRgsPluginsForwardedMessageMap = {
571
589
  sdk: Pick<SdkOnlyMessagePayloadMap, 'history' | 'openGame' | 'play'>;
572
- casino: Pick<CasinoOnlyMessagePayloadMap, 'play' | 'cashier' | 'close' | 'history'>;
590
+ casino: Pick<CasinoOnlyMessagePayloadMap, 'play' | 'cashier' | 'close' | 'history' | 'getBalance'>;
573
591
  rgs: undefined;
574
592
  telemetry: undefined;
575
593
  wrapper: undefined;
@@ -592,6 +610,7 @@ export declare type WrapperConfig = {
592
610
  gameVersion: string;
593
611
  gameHistoryUrl?: string;
594
612
  showFreeRounds: boolean;
613
+ showPromoPanel: boolean;
595
614
  showRealityCheck: boolean;
596
615
  showErrors: boolean;
597
616
  showBars: boolean;
@@ -610,9 +629,7 @@ export declare type WrapperOnlyMessagePayloadMap = {
610
629
  suspend: never;
611
630
  unfreeze: never;
612
631
  legalBets: Record<number, number[]>;
613
- play: PlayRequest & {
614
- payloadToInject?: Record<string, unknown>;
615
- };
632
+ play: PlayRequestEnhanced;
616
633
  freeRounds: FreeRoundsAction;
617
634
  freeRoundsOffer: FreeRound;
618
635
  freeRoundsInfo: FreeRound;
package/dist/index.js CHANGED
@@ -2,21 +2,21 @@
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), c = (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 G, R as N } 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
- const M = 3e4;
13
+ const B = 3e4;
14
14
  var D, h;
15
15
  class U {
16
16
  constructor(i) {
17
17
  u(this, D);
18
- u(this, h, M);
19
- e(this, D, i);
18
+ u(this, h, B);
19
+ c(this, D, i);
20
20
  }
21
21
  buildHeaders() {
22
22
  const i = {};
@@ -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 M(m, i) {
47
47
  return H(m, m);
48
48
  }
49
49
  function k(m, i) {
50
- const t = G(m);
50
+ const t = M(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 = M(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
+ c(this, s, i), c(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();
98
- function V(m, i) {
97
+ s = new WeakMap(), C = new WeakMap();
98
+ function W(m, i) {
99
99
  return m * i / 100;
100
100
  }
101
- function P(m, i, t) {
101
+ function b(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,14 @@ 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 },
243
+ // gametech
244
+ FC: { displayAs: "", maximumFractionDigits: 2, minimumFractionDigits: 2 },
245
+ RC: { maximumFractionDigits: 2, minimumFractionDigits: 2 },
246
+ MWSC: { displayAs: "MC", maximumFractionDigits: 2, minimumFractionDigits: 2 },
247
+ MWGC: { displayAs: "GC", maximumFractionDigits: 2, minimumFractionDigits: 2 },
238
248
  // https://kalamba.atlassian.net/browse/FRAM-1829
239
249
  // Myanmar Kyat
240
250
  MMK: { maximumFractionDigits: 2, minimumFractionDigits: 2 },
@@ -272,24 +282,24 @@ const w = {
272
282
  IRR: { maximumFractionDigits: 2, minimumFractionDigits: 2 }
273
283
  /* eslint-enable sort-keys-fix/sort-keys-fix */
274
284
  };
275
- function B(m) {
285
+ function L(m) {
276
286
  return m in w;
277
287
  }
278
- function q(m) {
279
- return B(m) ? {
288
+ function V(m) {
289
+ return L(m) ? {
280
290
  ...w[m],
281
291
  currency: S
282
292
  } : {
283
293
  currency: m
284
294
  };
285
295
  }
286
- function W(m, i, t) {
296
+ function q(m, i, t) {
287
297
  const n = i.format(+m);
288
- return B(t) ? n.replace(S, w[t].displayAs ?? t) : n;
298
+ return L(t) ? n.replace(S, w[t].displayAs ?? t) : n;
289
299
  }
290
300
  function z(m, i, t) {
291
301
  const { maximumFractionDigits: n, minimumFractionDigits: a } = t.resolvedOptions();
292
- return P(m, i, { maximumFractionDigits: n, minimumFractionDigits: a });
302
+ return b(m, i, { maximumFractionDigits: n, minimumFractionDigits: a });
293
303
  }
294
304
  function J(m, i, { as: t } = {
295
305
  as: "Currency"
@@ -305,11 +315,11 @@ function j(m, i, { as: t, from: n } = {
305
315
  }, a) {
306
316
  if (!["string", "number"].includes(typeof i))
307
317
  return "NaN";
308
- const { canShowCurrency: o = !0, coinValueInCents: g, currency: d, locales: T } = m;
309
- n === "Coins" && (i = V(+i, g));
318
+ const { canShowCurrency: o = !0, coinValueInCents: g, currency: d, locales: A } = m;
319
+ n === "Coins" && (i = W(+i, g));
310
320
  try {
311
- const L = q(d), R = new Intl.NumberFormat(T, {
312
- ...L,
321
+ const P = V(d), T = new Intl.NumberFormat(A, {
322
+ ...P,
313
323
  ...a,
314
324
  currencyDisplay: "symbol",
315
325
  // eslint-disable-next-line @typescript-eslint/ban-ts-comment
@@ -317,23 +327,23 @@ function j(m, i, { as: t, from: n } = {
317
327
  numberingSystem: "latn",
318
328
  style: "currency"
319
329
  });
320
- return t === "Number" || !o ? z(m, i, R) : W(i, R, d);
330
+ return t === "Number" || !o ? z(m, i, T) : q(i, T, d);
321
331
  } catch {
322
332
  return J(m, i, { as: t });
323
333
  }
324
334
  }
325
- var c;
335
+ var e;
326
336
  class Y {
327
337
  constructor({ config: i }) {
328
- u(this, c);
329
- e(this, c, i);
338
+ u(this, e);
339
+ c(this, e, i);
330
340
  }
331
341
  formatNumber(i, t) {
332
- const n = { locales: [r(this, c).ui.language] };
333
- return P(n, i, t);
342
+ const n = { locales: [r(this, e).ui.language] };
343
+ return b(n, i, t);
334
344
  }
335
345
  formatCurrency(i, t = { as: F.Currency, from: y.Money }, n) {
336
- 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];
346
+ const a = r(this, e).ui.feature.showCurrency, o = r(this, e).api.coinValueInCents, g = r(this, e).api.currency || S, d = [r(this, e).ui.language];
337
347
  return j({
338
348
  canShowCurrency: a,
339
349
  coinValueInCents: o,
@@ -354,18 +364,18 @@ class Y {
354
364
  return this.formatCurrency(i, { as: F.Currency, from: y.Money }, t);
355
365
  }
356
366
  }
357
- c = new WeakMap();
367
+ e = new WeakMap();
358
368
  const v = () => {
359
369
  };
360
- var x, C, p, l;
370
+ var x, f, p, l;
361
371
  class ii {
362
372
  constructor({ messagePort: i }) {
363
373
  u(this, x);
364
- u(this, C);
374
+ u(this, f);
365
375
  u(this, p);
366
376
  u(this, l);
367
- 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 }));
377
+ c(this, l, i), this.on("configured", (t) => {
378
+ c(this, x, t), c(this, p, new Y({ config: t })), c(this, f, new _({ config: t }));
369
379
  }), this.on("playResponse", (t) => {
370
380
  this.config.api.lastRoundId = t.contract.roundId;
371
381
  });
@@ -376,9 +386,9 @@ class ii {
376
386
  return r(this, x);
377
387
  }
378
388
  get history() {
379
- if (!r(this, C))
389
+ if (!r(this, f))
380
390
  throw new Error("config is not initialized, you must open game first");
381
- return r(this, C);
391
+ return r(this, f);
382
392
  }
383
393
  get i18n() {
384
394
  if (!r(this, p))
@@ -415,23 +425,23 @@ class ii {
415
425
  const i = new Promise((n) => this.on("configured", n, { once: !0 })), t = await this.request("openGame");
416
426
  if (t.type === "response")
417
427
  return await i, t.response;
418
- throw t.error.type === "timeout" ? new N() : new I(t.error.data);
428
+ throw t.error.type === "timeout" ? new G() : new N(t.error.data);
419
429
  }
420
430
  async play(i, t, n = "SPIN") {
421
431
  const a = { contract: i, extra: t, actionType: n }, o = await this.request("play", a);
422
432
  if (o.type === "response")
423
433
  return o.response;
424
- throw o.error.type === "timeout" ? new N() : new I(o.error.data);
434
+ throw o.error.type === "timeout" ? new G() : new N(o.error.data);
425
435
  }
426
436
  }
427
- x = new WeakMap(), C = new WeakMap(), p = new WeakMap(), l = new WeakMap();
437
+ x = new WeakMap(), f = new WeakMap(), p = new WeakMap(), l = new WeakMap();
428
438
  export {
429
- X as History,
439
+ _ as History,
430
440
  Y as I18n,
431
441
  ii as KalambaSdk,
432
- I as RgsError,
442
+ N as RgsError,
433
443
  ni as RgsErrorCode,
434
- N as TimeoutError,
444
+ G as TimeoutError,
435
445
  ai as decoders,
436
446
  si as encoders
437
447
  };