@idosgames/wallet 0.6.2 → 0.6.3
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/{bridge-C5z9TgKG.d.cts → bridge-BAyA43hM.d.cts} +1 -1
- package/dist/{bridge-BPZNXQuQ.d.ts → bridge-BsVqE7-T.d.ts} +1 -1
- package/dist/chunk-B4KT5CVC.js +1 -0
- package/dist/chunk-DOWG5IDM.js +1 -0
- package/dist/chunk-NU3WMVH2.js +2 -0
- package/dist/chunk-ZOWZE7MU.js +1 -0
- package/dist/index.cjs +2 -2
- package/dist/index.d.cts +2 -2
- package/dist/index.d.ts +2 -2
- package/dist/index.js +1 -1
- package/dist/{platformWalletLogin-Ysdf-Tt8.d.cts → platformWalletLogin-BBBBN68y.d.cts} +1 -1
- package/dist/{platformWalletLogin-DNC2Ajle.d.ts → platformWalletLogin-BxAoMCd9.d.ts} +1 -1
- package/dist/react/index.cjs +2 -2
- package/dist/react/index.d.cts +8 -1
- package/dist/react/index.d.ts +8 -1
- package/dist/react/index.js +1 -1
- package/dist/react/lazyIndex.cjs +2 -2
- package/dist/react/lazyIndex.d.cts +9 -2
- package/dist/react/lazyIndex.d.ts +9 -2
- package/dist/react/lazyIndex.js +1 -1
- package/dist/react/solanaIndex.cjs +2 -2
- package/dist/react/solanaIndex.d.cts +9 -3
- package/dist/react/solanaIndex.d.ts +9 -3
- package/dist/react/solanaIndex.js +1 -1
- package/dist/topUp-CCNQcHcH.d.cts +18 -0
- package/dist/topUp-CCNQcHcH.d.ts +18 -0
- package/package.json +2 -2
- package/dist/chunk-D2ZPJ33L.js +0 -1
- package/dist/chunk-XJV2C5QX.js +0 -1
|
@@ -35,7 +35,7 @@ interface SolanaProgramAdapter {
|
|
|
35
35
|
* from the instruction arguments and compares it byte-for-byte. So pass them all through, in
|
|
36
36
|
* declaration order, and change nothing:
|
|
37
37
|
*
|
|
38
|
-
* `withdraw_spl(amount, burn_amount, nonce, expires_at, splits, user_id, title_id, category)`
|
|
38
|
+
* `withdraw_spl(amount, burn_amount, nonce, expires_at, splits, user_id, title_id, category, title_hash)`
|
|
39
39
|
* — and `withdraw_spl_dev` when `Domain === "SPL_DEV"`; the two are
|
|
40
40
|
* deliberately not interchangeable.
|
|
41
41
|
*
|
|
@@ -35,7 +35,7 @@ interface SolanaProgramAdapter {
|
|
|
35
35
|
* from the instruction arguments and compares it byte-for-byte. So pass them all through, in
|
|
36
36
|
* declaration order, and change nothing:
|
|
37
37
|
*
|
|
38
|
-
* `withdraw_spl(amount, burn_amount, nonce, expires_at, splits, user_id, title_id, category)`
|
|
38
|
+
* `withdraw_spl(amount, burn_amount, nonce, expires_at, splits, user_id, title_id, category, title_hash)`
|
|
39
39
|
* — and `withdraw_spl_dev` when `Domain === "SPL_DEV"`; the two are
|
|
40
40
|
* deliberately not interchangeable.
|
|
41
41
|
*
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import {c}from'./chunk-K3THMWU2.js';import {PLATFORM_BRIDGE_ACK,PLATFORM_PAGE_UNAVAILABLE,askPlatformPage}from'@idosgames/core';var n={addressRequest:"IDOS_PLATFORM_WALLET_ADDRESS_REQUEST",addressResponse:"IDOS_PLATFORM_WALLET_ADDRESS_RESPONSE",signRequest:"IDOS_PLATFORM_WALLET_SIGN_REQUEST",signResponse:"IDOS_PLATFORM_WALLET_SIGN_RESPONSE",ack:PLATFORM_BRIDGE_ACK,openRequest:"IDOS_PLATFORM_WALLET_OPEN_REQUEST",openResponse:"IDOS_PLATFORM_WALLET_OPEN_RESPONSE"},A=PLATFORM_PAGE_UNAVAILABLE;async function d(r,s,a){let t=await askPlatformPage(r,s,a),{address:e,signature:o}=t.data;return {ok:t.ok,error:t.error,address:typeof e=="string"?e:void 0,signature:typeof o=="string"?o:void 0}}async function k(){return (await d(n.openRequest,n.openResponse,{})).ok}async function E(r){let{client:s,networkID:a}=r;return P(r,async t=>{let e=await s.auth.requestWalletChallenge(t,a);return e.ok?{ok:true,message:e.data.Message}:{ok:false,error:e.error}},(t,e)=>s.auth.loginWithWallet(t,a,e))}async function S(r){let{client:s,networkID:a}=r;return P(r,async t=>{let e=await s.auth.linkWallet(t,a);return e.ok?e.data.Challenge?{ok:true,message:e.data.Challenge}:{ok:false,error:"No challenge was issued."}:{ok:false,error:e.error}},(t,e)=>s.auth.linkWallet(t,a,e))}async function P(r,s,a){let{client:t,family:e}=r,o=t.titleID,l=await d(n.addressRequest,n.addressResponse,{titleID:o,family:e});if(!l.ok||!l.address)return c("challenge",l.error??"NO_WALLET");let u=l.address,c$1=await s(u);if(!c$1.ok)return c("challenge",c$1.error);let g=await d(n.signRequest,n.signResponse,{titleID:o,family:e,address:u,message:c$1.message});if(!g.ok||!g.signature)return c("sign",g.error??"SIGN_FAILED");let L=await a(u,g.signature);return L.ok?{ok:true,data:L.data}:c("login",L.error)}export{n as a,A as b,k as c,E as d,S as e};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import {f,g}from'./chunk-K3THMWU2.js';import {useState,useEffect}from'react';function D(n){let[a,l]=useState(null);return useEffect(()=>{if(f()||g())return;let e=null;return n.checkout.setTopUpHandler(t=>new Promise(m=>{e?.(false);let r=false,o=p=>{r||(r=true,e===o&&(e=null),l(s=>s?.onDone===o?null:s),m(p));};e=o,l({currencyID:t.currencyID,amount:t.missingAmount??String(t.missing),onDone:o});})),()=>{n.checkout.setTopUpHandler(null),e?.(false);}},[n]),a}export{D as a};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import {a,b,d,e,h,g,f,c}from'./chunk-ZOWZE7MU.js';import {b as b$1}from'./chunk-K3THMWU2.js';import {useReducer,useState,useEffect,useMemo}from'react';import {jsxs,jsx,Fragment}from'react/jsx-runtime';var ue=null;function Ke(n){ue=n;}function _e(){return ue}var Ie=/^(Not enough confirmations|Transaction not found on chain)/,Te=8,Be=5e3;function Pe(n,r){let a=Math.max(0,Math.floor(r||0)),[d="0",s=""]=n.split(".");if(s.length<=a)return n;let u=s.slice(0,a),C=BigInt(d+u)+(/^0*$/.test(s.slice(a))?BigInt(0):BigInt(1));if(a===0)return C.toString();let w=C.toString().padStart(a+1,"0");return `${w.slice(0,-a)}.${w.slice(-a)}`.replace(/\.?0+$/,"")}function Z(n,r=6){let a=Number(n);return Number.isFinite(a)?a.toLocaleString("en-US",{maximumFractionDigits:Math.max(0,r)}).replace(/,/g," "):String(n)}var ye=n=>n.length>14?`${n.slice(0,6)}\u2026${n.slice(-4)}`:n,ge=n=>/^\d+(\.\d+)?$/.test(n)&&Number(n)>0;function Ye({client:n,engine:r,onClose:a$1,style:d$1,topUp:s}){let[,u]=useReducer(o=>o+1,0),[C,w]=useState(false),[v,B]=useState({}),[D,F]=useState({}),[P,be]=useState("deposit"),[m,ee]=useState(""),[y,te]=useState(""),[z,E]=useState(""),[O,ne]=useState(false),[V,j]=useState(null),[me,oe]=useState(false);useEffect(()=>{let o=true;return (async()=>{let[p]=await Promise.all([n.blockchain.getDefinitions(),n.cache.ensureState(["InventoryV2","Blockchain"])]);if(!o||(w(true),!p.ok))return;let c={};for(let[h,N]of Object.entries(p.data.Blockchain?.Networks??{}))N.Type===r.networkType&&(c[h]=N);B(c);let I=p.data.CryptoCurrencies??{};F(I);let W=s?I[s.currencyID]?.Networks?.find(h=>!!h.NetworkID&&!!c[h.NetworkID]&&!!h.ContractAddress&&h.DepositsEnabled!==false&&c[h.NetworkID]?.DepositsEnabled!==false)?.NetworkID:null;ee(W??Object.keys(c)[0]??"");})(),()=>{o=false;}},[n,r.networkType]),useEffect(()=>n.on("user:anyUpdated",u),[n]);let R=useMemo(()=>Object.entries(D).filter(([,o])=>o.Networks?.some(p=>p.NetworkID===m&&!!p.ContractAddress)),[D,m]);useEffect(()=>{let o=R[0]?.[0]??"";te(p=>s?s.currencyID:R.some(([c])=>c===p)?p:o);},[R,s]);let S=m?v[m]:void 0,A=y?D[y]:void 0,k=A?.Networks?.find(o=>o.NetworkID===m),K=y?n.data.user.getCryptoCurrencyAmount(y):"0",_=A?.DisplayName??y,H=y?A?.UnbackedRewardCurrencyID||`${y}_IOU`:"",he=H&&Number(n.data.user.state?.InventoryV2?.VirtualCurrencies?.[H]?.Amount??0)||0,we=!!H&&n.data.user.state?.InventoryV2?.VirtualCurrencies?.[H]!=null,ie=A?.DisplayDecimals??6,M=!!r.address,se=!!s&&!!k?.ContractAddress&&y===s.currencyID,L=s&&k?Pe(s.amount,k.Decimals??18):"",q=s?D[s.currencyID]?.DisplayName??s.currencyID:"",re=Number(k?.MinWithdraw??0);async function G(o,p){ne(true),j(null);try{let c=await p();return j({tab:o,res:c}),c.ok&&E(""),c}finally{ne(false);}}async function ae(o){let p=await le();if(!p)return b$1("approve",h("noNetworks"));let c=await r.deposit({...o,network:p});if(c.ok||c.stage!=="report"||!c.onChainTxHash)return c;let I=c.onChainTxHash,W=c.error;oe(true);try{for(let h=1;h<=Te&&Ie.test(W);h++){await new Promise(Ne=>setTimeout(Ne,Be));let N=await n.blockchain.depositToken(m,I);if(N.ok)return {ok:!0,onChainTxHash:I,data:N.data};if(/^Transaction hash already used/.test(N.error))return await n.cache.ensureState(["InventoryV2"],{force:!0}),{ok:!0,onChainTxHash:I,data:null};W=N.error;}}finally{oe(false);}return {...c,error:W}}async function le(){let o=await n.blockchain.getDefinitions({forceRefresh:true});return o.ok?o.data.Blockchain?.Networks?.[m]??null:null}async function ke(){let o=await le();return o?r.withdraw({network:o,networkID:m,currencyID:y,amount:z}):b$1("request",h("noNetworks"))}let U=me?h("confirming"):P==="withdraw"&&!s?h("withdrawing"):h("depositing"),xe=M?jsxs("div",{style:{...d,display:"flex",alignItems:"center",gap:10,padding:"8px 8px 8px 12px"},children:[jsx("span",{style:We,"aria-hidden":true}),jsxs("div",{style:{display:"grid",flex:1,minWidth:0},children:[jsx("span",{style:{...b,fontSize:15,fontFamily:"ui-monospace, Consolas, monospace"},children:ye(r.address)}),S?jsx("span",{style:{...g,fontSize:12},children:S.DisplayName??m}):null]}),jsx("button",{type:"button",className:"idos-press",style:$e,onClick:r.disconnect,children:h("disconnect")})]}):jsxs("div",{style:{display:"grid",gap:8},children:[jsx("span",{style:g,children:h("connectHint")}),r.connectChoices.length===0?jsx("div",{style:{...d,padding:"10px 12px",...g},children:h("notConfigured")}):r.connectChoices.length===1?jsx("button",{type:"button",className:"idos-press",style:{...e("blue",false,"lg"),width:"100%"},onClick:r.connectChoices[0].connect,children:h("connect")}):r.connectChoices.map(o=>jsxs("button",{type:"button",className:"idos-press",style:Ee,onClick:o.connect,children:[jsx("span",{style:{flex:1,textAlign:"left"},children:o.label}),jsx("span",{"aria-hidden":true,style:{color:a.textDim},children:"\u203A"})]},o.key))]}),de=y?jsx(Oe,{icon:jsx(Fe,{assets:A?.AssetPaths,name:_}),name:_,backed:Number(K)||0,unbacked:he,hasIou:we,decimals:ie}):null,Ce=jsxs(Fragment,{children:[Object.keys(v).length>1?jsx(fe,{caption:h("network"),value:m,onChange:ee,options:Object.entries(v).map(([o,p])=>[o,p.DisplayName??o])}):null,R.length===0?jsx("div",{style:{...d,padding:"10px 12px",...g},children:h("noTokens")}):R.length>1?jsx(fe,{caption:h("token"),value:y,onChange:te,options:R.map(([o,p])=>[o,p.DisplayName??o])}):null]}),ve=jsxs(Fragment,{children:[jsx(Ve,{value:P,onChange:o=>{be(o),j(null),E("");}}),Ce,jsxs("div",{style:{display:"grid",gap:6},children:[jsx("span",{style:g,children:h("amount")}),jsxs("div",{style:{...d,display:"flex",alignItems:"center",gap:8,padding:"4px 6px 4px 14px"},children:[jsx("input",{style:Me,inputMode:"decimal",placeholder:"0.0",value:z,onChange:o=>E(o.target.value.replace(",","."))}),jsx("span",{style:{...g,fontSize:14},children:_}),P==="withdraw"&&Number(K)>0?jsx("button",{type:"button",className:"idos-press",style:e("gold",false,"sm"),onClick:()=>E(String(K)),children:h("max")}):null]}),P==="withdraw"&&re>0?jsx("span",{style:{...g,fontSize:12},children:h("minWithdraw",{n:Z(re,ie)})}):null]}),P==="deposit"?jsx(X,{tone:"green",busy:O,busyText:U,disabled:!M||!k?.ContractAddress||!ge(z),onClick:()=>{!S||!k||G("deposit",()=>ae({network:S,binding:k,currencyID:y,amount:z}));},children:h("deposit")}):jsx(X,{tone:"blue",busy:O,busyText:U,disabled:!M||!y||!ge(z),onClick:()=>{S&&G("withdraw",()=>ke());},children:h("withdraw")})]}),Se=s?jsxs(Fragment,{children:[jsx("div",{style:{...f("gold"),padding:"12px 14px",display:"grid",gap:4},children:se?jsxs(Fragment,{children:[jsx("span",{style:{...b,color:"inherit",fontSize:13,opacity:.9},children:h("topUpNeed")}),jsxs("span",{style:{...b,color:"inherit",fontSize:24,lineHeight:1.1},children:[L," ",q," ",h("topUpMore")]}),jsx("span",{style:{fontSize:13,fontWeight:600,opacity:.95},children:h("topUpHint")})]}):jsx("span",{style:{...b,color:"inherit",fontSize:15},children:C?h("topUpCannot",{name:q}):h("loading")})}),de,jsx(X,{tone:"green",busy:O,busyText:U,disabled:!M||!se,onClick:()=>{!S||!k||G("deposit",()=>ae({network:S,binding:k,currencyID:y,amount:L})).then(o=>{o.ok&&s.onDone(true);});},children:h("depositAmount",{amount:L,name:q})})]}):null,ce=!!a$1;return jsxs("div",{style:{...Ae,...ce?{...c,padding:16,width:360,maxWidth:"100%",maxHeight:"80vh",overflow:"auto"}:{},...d$1},children:[jsx("style",{children:ze}),ce?jsxs("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between"},children:[jsx("span",{style:{...b,fontSize:20},children:s?h("topUpTitle"):h("title")}),jsx("button",{type:"button",className:"idos-press",style:He,onClick:a$1,"aria-label":"\u2715",children:"\u2715"})]}):null,xe,C?Object.keys(v).length===0?jsx("div",{style:{...d,padding:"12px 14px",...g},children:h("noNetworks")}):s?Se:jsxs(Fragment,{children:[de,ve]}):jsx("div",{style:{...g,textAlign:"center",padding:12},children:h("loading")}),V?jsx(je,{tab:V.tab,result:V.res}):null]})}var ze="@keyframes idosw-spin { to { transform: rotate(360deg) } }",Ae={pointerEvents:"auto",color:a.text,fontFamily:a.font,display:"flex",flexDirection:"column",gap:12,boxSizing:"border-box",width:"100%",minWidth:0,maxWidth:"100%"},We={width:10,height:10,borderRadius:"50%",background:a.green,boxShadow:`0 0 0 3px color-mix(in srgb, ${a.green} 30%, transparent)`,flex:"none"},$e={...b,fontFamily:a.font,fontSize:13,color:a.textDim,background:"transparent",border:`2px solid ${a.line}`,borderRadius:10,padding:"5px 10px",cursor:"pointer"},Ee={...d,...b,fontFamily:a.font,fontSize:15,display:"flex",alignItems:"center",gap:10,padding:"10px 12px",cursor:"pointer",width:"100%"},He={...e("red",false,"sm"),width:36,minHeight:36,padding:0,borderRadius:"50%"},Me={...b,fontFamily:a.font,fontSize:22,flex:1,minWidth:0,background:"transparent",border:"none",outline:"none",padding:"6px 0"};function Fe({assets:n,name:r}){let a$1=n?.Default||n?.Icon||"",d={width:40,height:40,borderRadius:"50%",flex:"none",display:"grid",placeItems:"center",background:`linear-gradient(180deg, ${a.gold}, ${a.goldDeep})`,boxShadow:`0 3px 0 ${a.edge}`,overflow:"hidden",fontSize:22};return /^(https?:)?\/\/|^\//.test(a$1)?jsx("span",{style:d,children:jsx("img",{src:a$1,alt:"",style:{width:"100%",height:"100%",objectFit:"cover"}})}):jsx("span",{style:{...d,...b,fontSize:20},"aria-hidden":true,children:(r.trim()[0]??"?").toUpperCase()})}function Oe({icon:n,name:r,backed:a$1,unbacked:d$1,hasIou:s,decimals:u}){let[C,w]=useState(false),v=(B,D,F=false)=>jsxs("div",{style:{display:"flex",justifyContent:"space-between",gap:16},children:[jsx("span",{style:{...g,fontSize:13},children:B}),jsx("span",{style:{...b,fontSize:14,color:F?a.textDim:a.text},children:Z(D,u)})]});return jsxs("div",{style:{position:"relative"},onMouseEnter:()=>w(true),onMouseLeave:()=>w(false),children:[jsxs("button",{type:"button","aria-expanded":C,onClick:()=>w(B=>!B),onBlur:()=>w(false),style:{...d,display:"flex",alignItems:"center",gap:12,padding:"10px 14px",width:"100%",cursor:"pointer",font:"inherit",textAlign:"left"},children:[n,jsxs("span",{style:{display:"grid",minWidth:0,flex:1},children:[jsx("span",{style:{...g,fontSize:12},children:h("balance")}),jsxs("span",{style:{...b,fontSize:22,lineHeight:1.1},children:[Z(a$1+d$1,u)," ",jsx("span",{style:{fontSize:15,color:a.textDim},children:r})]})]}),jsx("span",{"aria-hidden":true,style:{...g,fontSize:16},children:"\u24D8"})]}),C?jsxs("div",{role:"tooltip",style:{...c,position:"absolute",left:0,right:0,top:"calc(100% + 6px)",zIndex:5,padding:"10px 12px",display:"grid",gap:6},children:[v(h("backed"),a$1),s?v(h("unbacked"),d$1,d$1===0):null,jsx("div",{style:{height:1,background:a.line}}),v(h("total"),a$1+d$1),jsx("span",{style:{fontSize:12,color:a.textDim,lineHeight:1.35},children:s?h("iouHint"):h("backedHint")})]}):null]})}function Ve({value:n,onChange:r}){let a$1=[["deposit",h("deposit")],["withdraw",h("withdraw")]];return jsx("div",{role:"tablist",style:{display:"flex",gap:6,padding:4,borderRadius:16,background:a.wellSoft},children:a$1.map(([d,s])=>{let u=d===n;return jsx("button",{role:"tab","aria-selected":u,type:"button",className:"idos-press",onClick:()=>!u&&r(d),style:{...b,fontFamily:a.font,fontSize:15,flex:1,border:"none",borderRadius:12,padding:"9px 14px",cursor:"pointer",color:u?a.onBlue:a.textDim,background:u?`linear-gradient(180deg, ${a.blue}, ${a.blueDeep})`:"transparent",boxShadow:u?`0 3px 0 ${a.edge}, inset 0 2px 0 rgba(255,255,255,.3)`:"none",transition:`background ${a.fast} ease`},children:s},d)})})}function fe({caption:n,value:r,onChange:a$1,options:d$1}){return jsxs("label",{style:{display:"grid",gap:6},children:[jsx("span",{style:g,children:n}),jsxs("span",{style:{position:"relative",display:"block"},children:[jsx("select",{value:r,onChange:s=>a$1(s.target.value),style:{...d,...b,fontFamily:a.font,fontSize:15,width:"100%",padding:"10px 36px 10px 12px",appearance:"none",WebkitAppearance:"none",cursor:"pointer",outline:"none"},children:d$1.map(([s,u])=>jsx("option",{value:s,style:{color:"#111"},children:u},s))}),jsx("span",{"aria-hidden":true,style:{position:"absolute",right:14,top:"50%",transform:"translateY(-50%)",color:a.textDim,pointerEvents:"none"},children:"\u25BE"})]})]})}function X({tone:n,busy:r,busyText:a,disabled:d,onClick:s,children:u}){return jsx("button",{type:"button",className:"idos-press",disabled:d||r,onClick:s,style:{...e(n,d&&!r,"lg"),width:"100%"},children:r?jsxs(Fragment,{children:[jsx("span",{"aria-hidden":true,style:{width:18,height:18,borderRadius:"50%",border:"3px solid rgba(255,255,255,.35)",borderTopColor:"#fff",animation:"idosw-spin .8s linear infinite"}}),a]}):u})}function je({tab:n,result:r}){let a$1=r.ok,d={borderRadius:14,padding:"10px 12px",display:"grid",gap:4,background:`color-mix(in srgb, ${a$1?a.green:a.red} 22%, transparent)`,border:`2px solid color-mix(in srgb, ${a$1?a.green:a.red} 60%, transparent)`,wordBreak:"break-word"};return a$1?jsxs("div",{style:d,role:"status",children:[jsxs("span",{style:{...b,fontSize:15},children:["\u2713 ",n==="withdraw"?h("doneWithdraw"):h("doneDeposit")]}),jsxs("span",{style:{...g,fontSize:12},children:[h("tx"),": ",ye(r.onChainTxHash)]})]}):jsxs("div",{style:d,role:"alert",children:[jsxs("span",{style:{...b,fontSize:15},children:["\u2715 ",h("failed")]}),jsx("span",{style:{fontSize:13,color:a.text,opacity:.9},children:r.error}),r.titleTransactionID?jsx("span",{style:{...g,fontSize:12},children:h("debited")}):null]})}
|
|
2
|
+
export{Ke as a,_e as b,Ye as c};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var e=(r,n)=>`var(--idos-ui-${r}, ${n})`,t={panel:e("panel","#2c3480"),panelDeep:e("panel-deep","#1d2360"),panelEdge:e("panel-edge","#4f5bc9"),text:e("text","#ffffff"),textDim:e("text-dim","#aeb6f0"),gold:e("gold","#ffd24a"),goldDeep:e("gold-deep","#e89a12"),green:e("green","#59d35b"),greenDeep:e("green-deep","#2b9936"),blue:e("blue","#4fb1ff"),blueDeep:e("blue-deep","#2276d6"),red:e("red","#ff5a5a"),redDeep:e("red-deep","#b83232"),onGreen:e("on-green","#ffffff"),onBlue:e("on-blue","#ffffff"),onGold:e("on-gold","#ffffff"),textOutline:e("text-outline","0 2px 0 rgba(0,0,0,.45), 0 0 1px rgba(0,0,0,.6)"),well:e("well","rgba(8, 10, 40, 0.6)"),wellSoft:e("well-soft","rgba(0, 0, 0, 0.3)"),wellShadow:e("well-shadow","inset 0 2px 4px rgba(0, 0, 0, 0.4)"),edge:e("edge","rgba(0, 0, 0, 0.35)"),line:e("line","rgba(255, 255, 255, 0.2)"),panelShadow:e("panel-shadow","0 6px 0 rgba(4, 6, 30, 0.55), inset 0 2px 0 rgba(255, 255, 255, 0.12)"),radius:e("radius","18px"),buttonRadius:e("button-radius","14px"),font:e("font","'Baloo 2', 'Nunito', 'Trebuchet MS', system-ui, sans-serif"),fast:e("fast","120ms")},p={green:[t.green,t.greenDeep,t.onGreen],blue:[t.blue,t.blueDeep,t.onBlue],gold:[t.gold,t.goldDeep,t.onGold],red:[t.red,t.redDeep,"#ffffff"]},l={color:t.text,fontWeight:800,textShadow:t.textOutline,letterSpacing:.2},u={boxSizing:"border-box",background:`linear-gradient(180deg, ${t.panel} 0%, ${t.panelDeep} 100%)`,border:`2px solid ${t.panelEdge}`,borderRadius:t.radius,boxShadow:t.panelShadow},b={boxSizing:"border-box",background:t.well,border:`2px solid ${t.panelEdge}`,boxShadow:t.wellShadow,borderRadius:14};function w(r,n=false,o="md"){let[i,a,s]=n?["#8e95b8","#5b6187","#ffffff"]:p[r];return {...l,color:s,boxSizing:"border-box",fontFamily:t.font,fontSize:o==="sm"?13:o==="lg"?18:16,border:"none",borderRadius:t.buttonRadius,padding:o==="sm"?"6px 12px":o==="lg"?"13px 22px":"10px 18px",minHeight:o==="sm"?34:o==="lg"?52:44,cursor:n?"default":"pointer",background:`linear-gradient(180deg, ${i} 0%, ${a} 100%)`,boxShadow:`0 4px 0 ${t.edge}, inset 0 2px 0 rgba(255,255,255,.35)`,opacity:n?.75:1,display:"inline-flex",alignItems:"center",justifyContent:"center",gap:8}}function x(r){let[n,o,i]=p[r];return {background:`linear-gradient(180deg, ${n} 0%, ${o} 100%)`,color:i,borderRadius:16,boxShadow:`0 4px 0 ${t.edge}, inset 0 2px 0 rgba(255,255,255,.3)`}}var h={...l,fontSize:13,color:t.textDim},g=["ru","kk","uk","be","ky","uz","tg"];function c(){if(typeof navigator>"u")return false;let r=(navigator.language||"").toLowerCase();return g.some(n=>r.startsWith(n))}var d={title:"Wallet",topUpTitle:"Top up to buy",connectHint:"Connect a wallet to deposit and withdraw",connect:"Connect wallet",notConfigured:"Wallet connection is not set up for this app.",disconnect:"Disconnect",balance:"In-game balance",deposit:"Deposit",withdraw:"Withdraw",network:"Network",token:"Token",amount:"Amount",max:"MAX",minWithdraw:"Minimum to withdraw: {n}",noNetworks:"Crypto is not set up for this app yet.",noTokens:"No tokens on this network.",depositing:"Confirm in your wallet\u2026",withdrawing:"Withdrawing\u2026",confirming:"Waiting for the network to confirm\u2026",loading:"Loading\u2026",doneDeposit:"Deposited \u2014 the balance is updated.",doneWithdraw:"Sent to your wallet.",topUpNeed:"This purchase needs",topUpMore:"more",topUpHint:"Deposit it from your wallet \u2014 the purchase completes by itself once it is credited.",topUpCannot:"{name} cannot be deposited here.",depositAmount:"Deposit {amount} {name}",failed:"Did not go through",debited:"The amount is already debited \u2014 retry this withdrawal, do not request a new one.",tx:"Transaction",backed:"Crypto (withdrawable)",unbacked:"IOU (not backed yet)",total:"Total",iouHint:"IOUs spend in the app like crypto, but you can withdraw only the backed part; the developer backs IOUs later.",backedHint:"All of it is real crypto and can be withdrawn."},f={title:"\u041A\u043E\u0448\u0435\u043B\u0451\u043A",topUpTitle:"\u041F\u043E\u043F\u043E\u043B\u043D\u0435\u043D\u0438\u0435 \u0434\u043B\u044F \u043F\u043E\u043A\u0443\u043F\u043A\u0438",connectHint:"\u041F\u043E\u0434\u043A\u043B\u044E\u0447\u0438\u0442\u0435 \u043A\u043E\u0448\u0435\u043B\u0451\u043A, \u0447\u0442\u043E\u0431\u044B \u043F\u043E\u043F\u043E\u043B\u043D\u044F\u0442\u044C \u0438 \u0432\u044B\u0432\u043E\u0434\u0438\u0442\u044C",connect:"\u041F\u043E\u0434\u043A\u043B\u044E\u0447\u0438\u0442\u044C \u043A\u043E\u0448\u0435\u043B\u0451\u043A",notConfigured:"\u041F\u043E\u0434\u043A\u043B\u044E\u0447\u0435\u043D\u0438\u0435 \u043A\u043E\u0448\u0435\u043B\u044C\u043A\u0430 \u0434\u043B\u044F \u044D\u0442\u043E\u0433\u043E \u043F\u0440\u0438\u043B\u043E\u0436\u0435\u043D\u0438\u044F \u043D\u0435 \u043D\u0430\u0441\u0442\u0440\u043E\u0435\u043D\u043E.",disconnect:"\u041E\u0442\u043A\u043B\u044E\u0447\u0438\u0442\u044C",balance:"\u0411\u0430\u043B\u0430\u043D\u0441 \u0432 \u043F\u0440\u0438\u043B\u043E\u0436\u0435\u043D\u0438\u0438",deposit:"\u041F\u043E\u043F\u043E\u043B\u043D\u0438\u0442\u044C",withdraw:"\u0412\u044B\u0432\u0435\u0441\u0442\u0438",network:"\u0421\u0435\u0442\u044C",token:"\u0422\u043E\u043A\u0435\u043D",amount:"\u0421\u0443\u043C\u043C\u0430",max:"\u0412\u0421\u0401",minWithdraw:"\u041C\u0438\u043D\u0438\u043C\u0443\u043C \u0434\u043B\u044F \u0432\u044B\u0432\u043E\u0434\u0430: {n}",noNetworks:"\u041A\u0440\u0438\u043F\u0442\u0430 \u0434\u043B\u044F \u044D\u0442\u043E\u0433\u043E \u043F\u0440\u0438\u043B\u043E\u0436\u0435\u043D\u0438\u044F \u0435\u0449\u0451 \u043D\u0435 \u043D\u0430\u0441\u0442\u0440\u043E\u0435\u043D\u0430.",noTokens:"\u0412 \u044D\u0442\u043E\u0439 \u0441\u0435\u0442\u0438 \u043D\u0435\u0442 \u0442\u043E\u043A\u0435\u043D\u043E\u0432.",depositing:"\u041F\u043E\u0434\u0442\u0432\u0435\u0440\u0434\u0438\u0442\u0435 \u0432 \u043A\u043E\u0448\u0435\u043B\u044C\u043A\u0435\u2026",withdrawing:"\u0412\u044B\u0432\u043E\u0434\u0438\u043C\u2026",confirming:"\u0416\u0434\u0451\u043C \u043F\u043E\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043D\u0438\u044F \u0441\u0435\u0442\u0438\u2026",loading:"\u0417\u0430\u0433\u0440\u0443\u0437\u043A\u0430\u2026",doneDeposit:"\u041F\u043E\u043F\u043E\u043B\u043D\u0435\u043D\u043E \u2014 \u0431\u0430\u043B\u0430\u043D\u0441 \u043E\u0431\u043D\u043E\u0432\u043B\u0451\u043D.",doneWithdraw:"\u041E\u0442\u043F\u0440\u0430\u0432\u043B\u0435\u043D\u043E \u043D\u0430 \u0432\u0430\u0448 \u043A\u043E\u0448\u0435\u043B\u0451\u043A.",topUpNeed:"\u0414\u043B\u044F \u043F\u043E\u043A\u0443\u043F\u043A\u0438 \u043D\u0435 \u0445\u0432\u0430\u0442\u0430\u0435\u0442",topUpMore:"",topUpHint:"\u041F\u043E\u043F\u043E\u043B\u043D\u0438\u0442\u0435 \u0441 \u043A\u043E\u0448\u0435\u043B\u044C\u043A\u0430 \u2014 \u043F\u043E\u043A\u0443\u043F\u043A\u0430 \u0437\u0430\u0432\u0435\u0440\u0448\u0438\u0442\u0441\u044F \u0441\u0430\u043C\u0430, \u043A\u0430\u043A \u0442\u043E\u043B\u044C\u043A\u043E \u043F\u043E\u043F\u043E\u043B\u043D\u0435\u043D\u0438\u0435 \u0437\u0430\u0447\u0438\u0441\u043B\u0438\u0442\u0441\u044F.",topUpCannot:"{name} \u0437\u0434\u0435\u0441\u044C \u043F\u043E\u043F\u043E\u043B\u043D\u0438\u0442\u044C \u043D\u0435\u043B\u044C\u0437\u044F.",depositAmount:"\u041F\u043E\u043F\u043E\u043B\u043D\u0438\u0442\u044C \u043D\u0430 {amount} {name}",failed:"\u041D\u0435 \u043F\u0440\u043E\u0448\u043B\u043E",debited:"\u0421\u0443\u043C\u043C\u0430 \u0443\u0436\u0435 \u0441\u043F\u0438\u0441\u0430\u043D\u0430 \u2014 \u043F\u043E\u0432\u0442\u043E\u0440\u0438\u0442\u0435 \u044D\u0442\u043E\u0442 \u0432\u044B\u0432\u043E\u0434, \u043D\u043E\u0432\u044B\u0439 \u043D\u0435 \u0437\u0430\u043F\u0440\u0430\u0448\u0438\u0432\u0430\u0439\u0442\u0435.",tx:"\u0422\u0440\u0430\u043D\u0437\u0430\u043A\u0446\u0438\u044F",backed:"\u041A\u0440\u0438\u043F\u0442\u0430 (\u043C\u043E\u0436\u043D\u043E \u0432\u044B\u0432\u0435\u0441\u0442\u0438)",unbacked:"\u0420\u0430\u0441\u043F\u0438\u0441\u043A\u0438 (\u043F\u043E\u043A\u0430 \u043D\u0435 \u043E\u0431\u0435\u0441\u043F\u0435\u0447\u0435\u043D\u044B)",total:"\u0412\u0441\u0435\u0433\u043E",iouHint:"\u0420\u0430\u0441\u043F\u0438\u0441\u043A\u0438 \u0442\u0440\u0430\u0442\u044F\u0442\u0441\u044F \u0432 \u043F\u0440\u0438\u043B\u043E\u0436\u0435\u043D\u0438\u0438 \u043A\u0430\u043A \u043A\u0440\u0438\u043F\u0442\u0430, \u043D\u043E \u0432\u044B\u0432\u0435\u0441\u0442\u0438 \u043C\u043E\u0436\u043D\u043E \u0442\u043E\u043B\u044C\u043A\u043E \u043E\u0431\u0435\u0441\u043F\u0435\u0447\u0435\u043D\u043D\u0443\u044E \u0447\u0430\u0441\u0442\u044C; \u0440\u0430\u0437\u0440\u0430\u0431\u043E\u0442\u0447\u0438\u043A \u043E\u0431\u0435\u0441\u043F\u0435\u0447\u0438\u0442 \u0440\u0430\u0441\u043F\u0438\u0441\u043A\u0438 \u043F\u043E\u0437\u0436\u0435.",backedHint:"\u042D\u0442\u043E \u043D\u0430\u0441\u0442\u043E\u044F\u0449\u0430\u044F \u043A\u0440\u0438\u043F\u0442\u0430, \u0435\u0451 \u043C\u043E\u0436\u043D\u043E \u0432\u044B\u0432\u0435\u0441\u0442\u0438 \u0446\u0435\u043B\u0438\u043A\u043E\u043C."};function m(r,n){let o=(c()?f:d)[r]??d[r];for(let[i,a]of Object.entries(n??{}))o=o.replace(`{${i}}`,String(a));return o}export{t as a,l as b,u as c,b as d,w as e,x as f,h as g,m as h};
|
package/dist/index.cjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
'use strict';var viem=require('viem'),core=require('@idosgames/core');function f(t){return t instanceof viem.BaseError?t.shortMessage:t instanceof Error?t.message:String(t)}function s(t,e,n){return {ok:false,stage:t,error:e,...n}}function g(t,e){return {ok:false,stage:t,error:e}}var C="WALLET_USE_SITE_PANEL",$=/^[a-z0-9]{8}-preview\.idos\.games$/;function B(t=typeof window>"u"?"":window.location.hostname){let e=t.toLowerCase();return $.test(e)?true:e!=="localhost"&&e!=="127.0.0.1"?false:globalThis.__IDOS_PREVIEW__!=null}function y(){if(typeof window>"u"||B())return false;try{return window.self!==window.top}catch{return true}}function Y(){if(typeof window>"u")return false;try{return window.parent!==window.top}catch{return true}}function w(t){return s(t,C)}function A(t){return g(t,C)}var z=core.PLATFORM_ORIGINS;function Z(t){if(typeof window>"u")return ()=>{};let e=n=>{z.includes(n.origin)&&n.data?.type==="IDOS_WALLET_BALANCE_CHANGED"&&t();};return window.addEventListener("message",e),()=>window.removeEventListener("message",e)}var E={addressRequest:"IDOS_PLATFORM_WALLET_ADDRESS_REQUEST",addressResponse:"IDOS_PLATFORM_WALLET_ADDRESS_RESPONSE",signRequest:"IDOS_PLATFORM_WALLET_SIGN_REQUEST",signResponse:"IDOS_PLATFORM_WALLET_SIGN_RESPONSE",ack:"IDOS_PLATFORM_WALLET_ACK",openRequest:"IDOS_PLATFORM_WALLET_OPEN_REQUEST",openResponse:"IDOS_PLATFORM_WALLET_OPEN_RESPONSE"},T="PLATFORM_WALLET_UNAVAILABLE",J=5e3,j=18e4;function X(){let t=[...core.PLATFORM_ORIGINS],e=window.location.ancestorOrigins?.[0];return e&&!t.includes(e)&&core.isPlatformParentOrigin(e)&&t.push(e),t}function ee(){return `wallet-${Date.now().toString(36)}-${Math.random().toString(36).slice(2,10)}`}function D(t,e,n){if(typeof window>"u"||window.self===window.top)return Promise.resolve({ok:false,error:T});let r=window.parent;if(!r)return Promise.resolve({ok:false,error:T});let o=ee();return new Promise(i=>{let p=false,l,a=d=>{p||(p=true,window.removeEventListener("message",u),clearTimeout(l),i(d));},u=d=>{if(!core.isPlatformParentOrigin(d.origin))return;let c=d.data;if(!(!c||c.requestId!==o)){if(c.type===E.ack){clearTimeout(l),l=setTimeout(()=>a({ok:false,error:"TIMEOUT"}),j);return}c.type===e&&a({ok:c.ok===true,error:typeof c.error=="string"?c.error:void 0,address:typeof c.address=="string"?c.address:void 0,signature:typeof c.signature=="string"?c.signature:void 0});}};l=setTimeout(()=>a({ok:false,error:T}),J),window.addEventListener("message",u);for(let d of X())try{r.postMessage({type:t,requestId:o,...n},d);}catch{}})}async function te(){return (await D(E.openRequest,E.openResponse,{})).ok}async function ne(t){let{client:e,networkID:n}=t;return M(t,async r=>{let o=await e.auth.requestWalletChallenge(r,n);return o.ok?{ok:true,message:o.data.Message}:{ok:false,error:o.error}},(r,o)=>e.auth.loginWithWallet(r,n,o))}async function ae(t){let{client:e,networkID:n}=t;return M(t,async r=>{let o=await e.auth.linkWallet(r,n);return o.ok?o.data.Challenge?{ok:true,message:o.data.Challenge}:{ok:false,error:"No challenge was issued."}:{ok:false,error:o.error}},(r,o)=>e.auth.linkWallet(r,n,o))}async function M(t,e,n){let{client:r,family:o}=t,i=r.titleID,p=await D(E.addressRequest,E.addressResponse,{titleID:i,family:o});if(!p.ok||!p.address)return g("challenge",p.error??"NO_WALLET");let l=p.address,a=await e(l);if(!a.ok)return g("challenge",a.error);let u=await D(E.signRequest,E.signResponse,{titleID:i,family:o,address:l,message:a.message});if(!u.ok||!u.signature)return g("sign",u.error??"SIGN_FAILED");let d=await n(l,u.signature);return d.ok?{ok:true,data:d.data}:g("login",d.error)}var re={id:1,name:"Ethereum",nativeCurrency:{name:"Ether",symbol:"ETH",decimals:18},rpcUrls:{default:{http:["https://eth.llamarpc.com"]}},blockExplorers:{default:{name:"Etherscan",url:"https://etherscan.io"}}},oe={id:56,name:"BNB Smart Chain",nativeCurrency:{name:"BNB",symbol:"BNB",decimals:18},rpcUrls:{default:{http:["https://bsc-dataseed.binance.org"]}},blockExplorers:{default:{name:"BscScan",url:"https://bscscan.com"}}},ie={id:137,name:"Polygon",nativeCurrency:{name:"POL",symbol:"POL",decimals:18},rpcUrls:{default:{http:["https://polygon-rpc.com"]}},blockExplorers:{default:{name:"PolygonScan",url:"https://polygonscan.com"}}},se={id:8453,name:"Base",nativeCurrency:{name:"Ether",symbol:"ETH",decimals:18},rpcUrls:{default:{http:["https://mainnet.base.org"]}},blockExplorers:{default:{name:"BaseScan",url:"https://basescan.org"}}},le={id:42161,name:"Arbitrum One",nativeCurrency:{name:"Ether",symbol:"ETH",decimals:18},rpcUrls:{default:{http:["https://arb1.arbitrum.io/rpc"]}},blockExplorers:{default:{name:"Arbiscan",url:"https://arbiscan.io"}}},de={id:10,name:"OP Mainnet",nativeCurrency:{name:"Ether",symbol:"ETH",decimals:18},rpcUrls:{default:{http:["https://mainnet.optimism.io"]}},blockExplorers:{default:{name:"Optimistic Etherscan",url:"https://optimistic.etherscan.io"}}},ce={id:11155111,name:"Sepolia",testnet:true,nativeCurrency:{name:"Sepolia Ether",symbol:"ETH",decimals:18},rpcUrls:{default:{http:["https://rpc.sepolia.org"]}},blockExplorers:{default:{name:"Etherscan",url:"https://sepolia.etherscan.io"}}},pe={id:80002,name:"Polygon Amoy",testnet:true,nativeCurrency:{name:"POL",symbol:"POL",decimals:18},rpcUrls:{default:{http:["https://rpc-amoy.polygon.technology"]}},blockExplorers:{default:{name:"PolygonScan",url:"https://amoy.polygonscan.com"}}},ue={mainnet:re,bsc:oe,polygon:ie,base:se,arbitrum:le,optimism:de,sepolia:ce,polygonAmoy:pe};function Oe(t){return Object.values(ue).find(e=>e.id===t)}function He(t){return {...t,chainNamespace:"eip155",caipNetworkId:`eip155:${t.id}`}}var Ge={id:"5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp",name:"Solana",network:"solana-mainnet",nativeCurrency:{name:"Solana",symbol:"SOL",decimals:9},rpcUrls:{default:{http:["https://api.mainnet-beta.solana.com"]}},blockExplorers:{default:{name:"Solscan",url:"https://solscan.io"}},testnet:false,chainNamespace:"solana",caipNetworkId:"solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp"},qe={id:"EtWTRABZaYq6iMfeYKouRu166VU2xqa1",name:"Solana Devnet",network:"solana-devnet",nativeCurrency:{name:"Solana",symbol:"SOL",decimals:9},rpcUrls:{default:{http:["https://api.devnet.solana.com"]}},blockExplorers:{default:{name:"Solscan",url:"https://solscan.io"}},testnet:true,chainNamespace:"solana",caipNetworkId:"solana:EtWTRABZaYq6iMfeYKouRu166VU2xqa1"};var b=[{type:"function",name:"depositERC20",stateMutability:"nonpayable",inputs:[{name:"token",type:"address"},{name:"amount",type:"uint256"},{name:"userID",type:"string"},{name:"titleID",type:"string"},{name:"category",type:"string"}],outputs:[{name:"",type:"bool"}]},{type:"function",name:"withdrawERC20",stateMutability:"nonpayable",inputs:[{name:"token",type:"address"},{name:"to",type:"address"},{name:"amount",type:"uint256"},{name:"burnAmount",type:"uint256"},{name:"splits",type:"tuple[]",components:[{name:"to",type:"address"},{name:"amount",type:"uint256"}]},{name:"nonce",type:"uint256"},{name:"signature",type:"bytes"},{name:"userID",type:"string"},{name:"titleID",type:"string"},{name:"category",type:"string"},{name:"deadline",type:"uint256"}],outputs:[]},{type:"function",name:"withdrawERC1155",stateMutability:"nonpayable",inputs:[{name:"token",type:"address"},{name:"to",type:"address"},{name:"id",type:"uint256"},{name:"amount",type:"uint256"},{name:"splits",type:"tuple[]",components:[{name:"to",type:"address"},{name:"amount",type:"uint256"}]},{name:"nonce",type:"uint256"},{name:"signature",type:"bytes"},{name:"userID",type:"string"},{name:"titleID",type:"string"},{name:"category",type:"string"},{name:"deadline",type:"uint256"}],outputs:[]},{type:"function",name:"withdrawERC721",stateMutability:"nonpayable",inputs:[{name:"token",type:"address"},{name:"to",type:"address"},{name:"tokenId",type:"uint256"},{name:"nonce",type:"uint256"},{name:"signature",type:"bytes"},{name:"userID",type:"string"},{name:"titleID",type:"string"},{name:"category",type:"string"},{name:"deadline",type:"uint256"}],outputs:[]}],P=[{type:"function",name:"withdrawERC1155Mint",stateMutability:"nonpayable",inputs:[{name:"collection",type:"address"},{name:"to",type:"address"},{name:"id",type:"uint256"},{name:"amount",type:"uint256"},{name:"splits",type:"tuple[]",components:[{name:"to",type:"address"},{name:"amount",type:"uint256"}]},{name:"nonce",type:"uint256"},{name:"signature",type:"bytes"},{name:"userID",type:"string"},{name:"titleID",type:"string"},{name:"category",type:"string"},{name:"deadline",type:"uint256"}],outputs:[]},{type:"function",name:"withdrawERC721Mint",stateMutability:"nonpayable",inputs:[{name:"collection",type:"address"},{name:"to",type:"address"},{name:"tokenId",type:"uint256"},{name:"nonce",type:"uint256"},{name:"signature",type:"bytes"},{name:"userID",type:"string"},{name:"titleID",type:"string"},{name:"category",type:"string"},{name:"deadline",type:"uint256"}],outputs:[]}],x=[{type:"function",name:"approve",stateMutability:"nonpayable",inputs:[{name:"spender",type:"address"},{name:"amount",type:"uint256"}],outputs:[{name:"",type:"bool"}]},{type:"function",name:"allowance",stateMutability:"view",inputs:[{name:"owner",type:"address"},{name:"spender",type:"address"}],outputs:[{name:"",type:"uint256"}]},{type:"function",name:"decimals",stateMutability:"view",inputs:[],outputs:[{name:"",type:"uint8"}]},{type:"function",name:"balanceOf",stateMutability:"view",inputs:[{name:"account",type:"address"}],outputs:[{name:"",type:"uint256"}]}],v=[{type:"function",name:"safeTransferFrom",stateMutability:"nonpayable",inputs:[{name:"from",type:"address"},{name:"to",type:"address"},{name:"id",type:"uint256"},{name:"amount",type:"uint256"},{name:"data",type:"bytes"}],outputs:[]},{type:"function",name:"isApprovedForAll",stateMutability:"view",inputs:[{name:"account",type:"address"},{name:"operator",type:"address"}],outputs:[{name:"",type:"bool"}]},{type:"function",name:"setApprovalForAll",stateMutability:"nonpayable",inputs:[{name:"operator",type:"address"},{name:"approved",type:"bool"}],outputs:[]},{type:"function",name:"balanceOf",stateMutability:"view",inputs:[{name:"account",type:"address"},{name:"id",type:"uint256"}],outputs:[{name:"",type:"uint256"}]}],S=[{type:"function",name:"safeTransferFrom",stateMutability:"nonpayable",inputs:[{name:"from",type:"address"},{name:"to",type:"address"},{name:"tokenId",type:"uint256"},{name:"data",type:"bytes"}],outputs:[]}];function I(t,e,n){return viem.encodeAbiParameters([{type:"string"},{type:"string"},{type:"string"}],[t,e,core.normalizeBlockchainCategory(n)])}async function k(t,e){let{walletClient:n,publicClient:r,account:o}=t,i=await n.writeContract({address:e.address,abi:e.abi,functionName:e.functionName,args:e.args,account:o,chain:n.chain,value:e.value});if((await r.waitForTransactionReceipt({hash:i})).status==="reverted")throw new Error(`On-chain transaction reverted (${i}).`);return i}function R(t){let e=t.RewardPoolAddress;return e||null}async function L(t,e,n,r){return await t.publicClient.readContract({address:e,abi:x,functionName:"allowance",args:[t.account,n]})>=r?null:k(t,{address:e,abi:x,functionName:"approve",args:[n,r]})}async function N(t){let{client:e,clients:n,network:r,tokenAddress:o,amount:i,titleID:p,category:l}=t;if(y())return w("approve");let a=e.auth.context?.userID;if(!a)return s("approve","Not logged in.");let u=R(r);if(!u)return s("approve","Network has no RewardPoolAddress.");if(i<=0n)return s("approve","Amount must be positive.");try{await L(n,o,u,i);}catch(m){return s("approve",f(m))}let d;try{d=await k(n,{address:u,abi:b,functionName:"depositERC20",args:[o,i,a,p,l??""]});}catch(m){return s("deposit-onchain",f(m))}let c=await e.blockchain.depositToken(r.NetworkID??"",d);return c.ok?{ok:true,onChainTxHash:d,data:c.data}:s("report",c.error,{onChainTxHash:d})}async function fe(t){let{clients:e,poolAddress:n,tokenAddress:r,amount:o,userID:i,titleID:p,category:l}=t;if(y())return w("approve");if(!i)return s("approve","userID is required.");if(o<=0n)return s("approve","Amount must be positive.");try{await L(e,r,n,o);}catch(a){return s("approve",f(a))}try{let a=await k(e,{address:n,abi:b,functionName:"depositERC20",args:[r,o,i,p,l??""]});return {ok:!0,onChainTxHash:a,data:{txHash:a}}}catch(a){return s("deposit-onchain",f(a))}}async function ye(t){let{client:e,clients:n,network:r,nftContractAddress:o,tokenId:i,amount:p,titleID:l,category:a}=t;if(y())return w("deposit-onchain");let u=e.auth.context?.userID;if(!u)return s("deposit-onchain","Not logged in.");let d=R(r);if(!d)return s("deposit-onchain","Network has no RewardPoolAddress.");if(p<=0n)return s("deposit-onchain","Amount must be positive.");let c=I(u,l,a),m;try{m=await k(n,{address:o,abi:v,functionName:"safeTransferFrom",args:[n.account,d,i,p,c]});}catch(W){return s("deposit-onchain",f(W))}let h=await e.blockchain.depositNFT(r.NetworkID??"",m);return h.ok?{ok:true,onChainTxHash:m,data:h.data}:s("report",h.error,{onChainTxHash:m})}async function he(t){let{client:e,clients:n,network:r,nftContractAddress:o,tokenId:i,titleID:p,category:l}=t;if(y())return w("deposit-onchain");let a=e.auth.context?.userID;if(!a)return s("deposit-onchain","Not logged in.");let u=R(r);if(!u)return s("deposit-onchain","Network has no RewardPoolAddress.");let d=I(a,p,l),c;try{c=await k(n,{address:o,abi:S,functionName:"safeTransferFrom",args:[n.account,u,i,d]});}catch(h){return s("deposit-onchain",f(h))}let m=await e.blockchain.depositNFT(r.NetworkID??"",c);return m.ok?{ok:true,onChainTxHash:c,data:m.data}:s("report",m.error,{onChainTxHash:c})}function _(t){return (t.Splits??[]).map(e=>({to:e.To,amount:BigInt(e.Amount??"0")}))}async function O(t,e){return k(t,{address:e.ContractAddress,abi:b,functionName:"withdrawERC20",args:[e.TokenAddress,e.WalletAddress,BigInt(e.Amount??"0"),BigInt(e.BurnAmount??"0"),_(e),BigInt(e.Nonce??"0"),e.Signature??"0x",e.UserID??"",e.TitleID??"",e.Category??"",BigInt(e.Deadline??"0")]})}async function H(t,e){return k(t,{address:e.ContractAddress,abi:P,functionName:"withdrawERC1155Mint",args:[e.TokenAddress,e.WalletAddress,BigInt(e.TokenId??"0"),BigInt(e.Amount??"0"),_(e),BigInt(e.Nonce??"0"),e.Signature??"0x",e.UserID??"",e.TitleID??"",e.Category??"",BigInt(e.Deadline??"0")]})}async function we(t,e){return k(t,{address:e.ContractAddress,abi:P,functionName:"withdrawERC721Mint",args:[e.TokenAddress,e.WalletAddress,BigInt(e.TokenId??"0"),BigInt(e.Nonce??"0"),e.Signature??"0x",e.UserID??"",e.TitleID??"",e.Category??"",BigInt(e.Deadline??"0")]})}async function ke(t){let{client:e,clients:n,currencyID:r,networkID:o,walletAddress:i,amount:p,category:l}=t;if(y())return w("request");let a=await e.blockchain.requestTokenWithdrawal(r,o,i,p,l);if(!a.ok)return s("request",a.error);let u=a.data.EvmSignature,d=a.data.TitleTransactionID??void 0;if(!u)return s("request","Withdrawal response carried no EVM signature.",{titleTransactionID:d});let c;try{c=await O(n,u);}catch(h){return s("withdraw-onchain",f(h),{titleTransactionID:d})}let m=await G(e,d,c);return m.ok?{ok:true,onChainTxHash:c,data:a.data}:m}async function Ee(t){let{client:e,clients:n,itemID:r,networkID:o,walletAddress:i,amount:p,category:l}=t;if(y())return w("request");let a=await e.blockchain.requestNFTWithdrawal(r,o,i,p,l);if(!a.ok)return s("request",a.error);let u=a.data.EvmSignature,d=a.data.TitleTransactionID??void 0;if(!u)return s("request","Withdrawal response carried no EVM signature.",{titleTransactionID:d});let c;try{c=await H(n,u);}catch(h){return s("withdraw-onchain",f(h),{titleTransactionID:d})}let m=await G(e,d,c);return m.ok?{ok:true,onChainTxHash:c,data:a.data}:m}async function G(t,e,n){if(!e)return s("confirm","Missing TitleTransactionID.",{onChainTxHash:n});let r=await t.blockchain.confirmWithdrawal(e,n);return r.ok?{ok:true,onChainTxHash:n,data:r.data}:s("confirm",r.error,{onChainTxHash:n,titleTransactionID:e})}async function Ae(t){let{client:e,clients:n,networkID:r}=t;if(y())return A("challenge");let o=t.walletAddress??n.account,i=await e.auth.requestWalletChallenge(o,r);if(!i.ok)return g("challenge",i.error);let p;try{p=await n.walletClient.signMessage({account:n.account,message:i.data.Message});}catch(a){return g("sign",f(a))}let l=await e.auth.loginWithWallet(o,r,p);return l.ok?{ok:true,data:l.data}:g("login",l.error)}async function be(t){let{client:e,clients:n,networkID:r}=t;if(y())return A("challenge");let o=t.walletAddress??n.account,i=await e.auth.linkWallet(o,r);if(!i.ok)return g("challenge",i.error);if(!i.data.Challenge)return g("challenge","No challenge was issued.");let p;try{p=await n.walletClient.signMessage({account:n.account,message:i.data.Challenge});}catch(a){return g("sign",f(a))}let l=await e.auth.linkWallet(o,r,p);return l.ok?{ok:true,data:l.data}:g("login",l.error)}async function Te(t){let{client:e,clients:n,network:r,tokenAddress:o,decimals:i,titleID:p,shortfall:l,completePurchase:a,bufferRatio:u=0,category:d}=t;if(y())return w("approve");if(l.missing<=0)return s("approve","Nothing to deposit.");let c=l.missing*(1+Math.max(0,u)),m;try{m=viem.parseUnits(xe(c,i),i);}catch(U){return s("approve",f(U))}let h=await N({client:e,clients:n,network:r,tokenAddress:o,amount:m,titleID:p,category:d});if(!h.ok)return h;let W=await a();return W.ok?{ok:true,onChainTxHash:h.onChainTxHash,data:W.data}:s("report",W.error,{onChainTxHash:h.onChainTxHash})}function xe(t,e){return t.toFixed(Math.min(e,18)).replace(/0+$/,"").replace(/\.$/,"")||"0"}async function Ce(t){let{client:e,adapter:n,network:r,mint:o,amountRaw:i,titleID:p,category:l}=t;if(y())return w("deposit-onchain");let a=e.auth.context?.userID;if(!a)return s("deposit-onchain","Not logged in.");if(i<=0n)return s("deposit-onchain","Amount must be positive.");let u;try{u=await n.depositSpl({mint:o,amountRaw:i,userID:a,titleID:p,category:core.normalizeBlockchainCategory(l)});}catch(c){return s("deposit-onchain",f(c))}let d=await e.blockchain.depositToken(r.NetworkID??"",u);return d.ok?{ok:true,onChainTxHash:u,data:d.data}:s("report",d.error,{onChainTxHash:u})}async function De(t){let{client:e,adapter:n,currencyID:r,networkID:o,walletAddress:i,amount:p,category:l}=t;if(y())return w("request");let a=await e.blockchain.requestTokenWithdrawal(r,o,i,p,l);if(!a.ok)return s("request",a.error);let u=a.data.SolanaSignature,d=a.data.TitleTransactionID??void 0;if(!u)return s("request","Withdrawal response carried no Solana signature.",{titleTransactionID:d});let c;try{c=await n.submitWithdrawal(u);}catch(h){return s("withdraw-onchain",f(h),{titleTransactionID:d})}if(!d)return s("confirm","Missing TitleTransactionID.",{onChainTxHash:c});let m=await e.blockchain.confirmWithdrawal(d,c);return m.ok?{ok:true,onChainTxHash:c,data:a.data}:s("confirm",m.error,{onChainTxHash:c,titleTransactionID:d})}async function Pe(t){let{client:e,networkID:n,walletAddress:r,signMessage:o}=t;if(y())return A("challenge");let i=await e.auth.requestWalletChallenge(r,n);if(!i.ok)return g("challenge",i.error);let p;try{let a=await o(new TextEncoder().encode(i.data.Message));p=q(a);}catch(a){return g("sign",f(a))}let l=await e.auth.loginWithWallet(r,n,p);return l.ok?{ok:true,data:l.data}:g("login",l.error)}async function ve(t){let{client:e,networkID:n,walletAddress:r,signMessage:o}=t;if(y())return A("challenge");let i=await e.auth.linkWallet(r,n);if(!i.ok)return g("challenge",i.error);if(!i.data.Challenge)return g("challenge","No challenge was issued.");let p;try{let a=await o(new TextEncoder().encode(i.data.Challenge));p=q(a);}catch(a){return g("sign",f(a))}let l=await e.auth.linkWallet(r,n,p);return l.ok?{ok:true,data:l.data}:g("login",l.error)}function q(t){let e="0x";for(let n of t)e+=n.toString(16).padStart(2,"0");return e}
|
|
2
|
-
exports.PLATFORM_WALLET_MESSAGES=E;exports.PLATFORM_WALLET_UNAVAILABLE=
|
|
1
|
+
'use strict';var viem=require('viem'),core=require('@idosgames/core');function f(t){return t instanceof viem.BaseError?t.shortMessage:t instanceof Error?t.message:String(t)}function s(t,e,n){return {ok:false,stage:t,error:e,...n}}function g(t,e){return {ok:false,stage:t,error:e}}var I="WALLET_USE_SITE_PANEL",V=/^[a-z0-9]{8}-preview\.idos\.games$/;function N(t=typeof window>"u"?"":window.location.hostname){let e=t.toLowerCase();return V.test(e)?true:e!=="localhost"&&e!=="127.0.0.1"?false:globalThis.__IDOS_PREVIEW__!=null}function y(){if(typeof window>"u"||N())return false;try{return window.self!==window.top}catch{return true}}function K(){if(typeof window>"u")return false;try{return window.parent!==window.top}catch{return true}}function w(t){return s(t,I)}function A(t){return g(t,I)}var $=core.PLATFORM_ORIGINS;function Y(t){if(typeof window>"u")return ()=>{};let e=n=>{$.includes(n.origin)&&n.data?.type==="IDOS_WALLET_BALANCE_CHANGED"&&t();};return window.addEventListener("message",e),()=>window.removeEventListener("message",e)}var E={addressRequest:"IDOS_PLATFORM_WALLET_ADDRESS_REQUEST",addressResponse:"IDOS_PLATFORM_WALLET_ADDRESS_RESPONSE",signRequest:"IDOS_PLATFORM_WALLET_SIGN_REQUEST",signResponse:"IDOS_PLATFORM_WALLET_SIGN_RESPONSE",ack:core.PLATFORM_BRIDGE_ACK,openRequest:"IDOS_PLATFORM_WALLET_OPEN_REQUEST",openResponse:"IDOS_PLATFORM_WALLET_OPEN_RESPONSE"},J=core.PLATFORM_PAGE_UNAVAILABLE;async function C(t,e,n){let a=await core.askPlatformPage(t,e,n),{address:o,signature:i}=a.data;return {ok:a.ok,error:a.error,address:typeof o=="string"?o:void 0,signature:typeof i=="string"?i:void 0}}async function j(){return (await C(E.openRequest,E.openResponse,{})).ok}async function X(t){let{client:e,networkID:n}=t;return B(t,async a=>{let o=await e.auth.requestWalletChallenge(a,n);return o.ok?{ok:true,message:o.data.Message}:{ok:false,error:o.error}},(a,o)=>e.auth.loginWithWallet(a,n,o))}async function ee(t){let{client:e,networkID:n}=t;return B(t,async a=>{let o=await e.auth.linkWallet(a,n);return o.ok?o.data.Challenge?{ok:true,message:o.data.Challenge}:{ok:false,error:"No challenge was issued."}:{ok:false,error:o.error}},(a,o)=>e.auth.linkWallet(a,n,o))}async function B(t,e,n){let{client:a,family:o}=t,i=a.titleID,d=await C(E.addressRequest,E.addressResponse,{titleID:i,family:o});if(!d.ok||!d.address)return g("challenge",d.error??"NO_WALLET");let l=d.address,r=await e(l);if(!r.ok)return g("challenge",r.error);let p=await C(E.signRequest,E.signResponse,{titleID:i,family:o,address:l,message:r.message});if(!p.ok||!p.signature)return g("sign",p.error??"SIGN_FAILED");let c=await n(l,p.signature);return c.ok?{ok:true,data:c.data}:g("login",c.error)}var te={id:1,name:"Ethereum",nativeCurrency:{name:"Ether",symbol:"ETH",decimals:18},rpcUrls:{default:{http:["https://eth.llamarpc.com"]}},blockExplorers:{default:{name:"Etherscan",url:"https://etherscan.io"}}},ne={id:56,name:"BNB Smart Chain",nativeCurrency:{name:"BNB",symbol:"BNB",decimals:18},rpcUrls:{default:{http:["https://bsc-dataseed.binance.org"]}},blockExplorers:{default:{name:"BscScan",url:"https://bscscan.com"}}},ae={id:137,name:"Polygon",nativeCurrency:{name:"POL",symbol:"POL",decimals:18},rpcUrls:{default:{http:["https://polygon-rpc.com"]}},blockExplorers:{default:{name:"PolygonScan",url:"https://polygonscan.com"}}},re={id:8453,name:"Base",nativeCurrency:{name:"Ether",symbol:"ETH",decimals:18},rpcUrls:{default:{http:["https://mainnet.base.org"]}},blockExplorers:{default:{name:"BaseScan",url:"https://basescan.org"}}},oe={id:42161,name:"Arbitrum One",nativeCurrency:{name:"Ether",symbol:"ETH",decimals:18},rpcUrls:{default:{http:["https://arb1.arbitrum.io/rpc"]}},blockExplorers:{default:{name:"Arbiscan",url:"https://arbiscan.io"}}},ie={id:10,name:"OP Mainnet",nativeCurrency:{name:"Ether",symbol:"ETH",decimals:18},rpcUrls:{default:{http:["https://mainnet.optimism.io"]}},blockExplorers:{default:{name:"Optimistic Etherscan",url:"https://optimistic.etherscan.io"}}},se={id:11155111,name:"Sepolia",testnet:true,nativeCurrency:{name:"Sepolia Ether",symbol:"ETH",decimals:18},rpcUrls:{default:{http:["https://rpc.sepolia.org"]}},blockExplorers:{default:{name:"Etherscan",url:"https://sepolia.etherscan.io"}}},le={id:80002,name:"Polygon Amoy",testnet:true,nativeCurrency:{name:"POL",symbol:"POL",decimals:18},rpcUrls:{default:{http:["https://rpc-amoy.polygon.technology"]}},blockExplorers:{default:{name:"PolygonScan",url:"https://amoy.polygonscan.com"}}},de={mainnet:te,bsc:ne,polygon:ae,base:re,arbitrum:oe,optimism:ie,sepolia:se,polygonAmoy:le};function Fe(t){return Object.values(de).find(e=>e.id===t)}function Me(t){return {...t,chainNamespace:"eip155",caipNetworkId:`eip155:${t.id}`}}var _e={id:"5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp",name:"Solana",network:"solana-mainnet",nativeCurrency:{name:"Solana",symbol:"SOL",decimals:9},rpcUrls:{default:{http:["https://api.mainnet-beta.solana.com"]}},blockExplorers:{default:{name:"Solscan",url:"https://solscan.io"}},testnet:false,chainNamespace:"solana",caipNetworkId:"solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp"},He={id:"EtWTRABZaYq6iMfeYKouRu166VU2xqa1",name:"Solana Devnet",network:"solana-devnet",nativeCurrency:{name:"Solana",symbol:"SOL",decimals:9},rpcUrls:{default:{http:["https://api.devnet.solana.com"]}},blockExplorers:{default:{name:"Solscan",url:"https://solscan.io"}},testnet:true,chainNamespace:"solana",caipNetworkId:"solana:EtWTRABZaYq6iMfeYKouRu166VU2xqa1"};var b=[{type:"function",name:"depositERC20",stateMutability:"nonpayable",inputs:[{name:"token",type:"address"},{name:"amount",type:"uint256"},{name:"userID",type:"string"},{name:"titleID",type:"string"},{name:"category",type:"string"}],outputs:[{name:"",type:"bool"}]},{type:"function",name:"withdrawERC20",stateMutability:"nonpayable",inputs:[{name:"token",type:"address"},{name:"to",type:"address"},{name:"amount",type:"uint256"},{name:"burnAmount",type:"uint256"},{name:"splits",type:"tuple[]",components:[{name:"to",type:"address"},{name:"amount",type:"uint256"}]},{name:"nonce",type:"uint256"},{name:"signature",type:"bytes"},{name:"userID",type:"string"},{name:"titleID",type:"string"},{name:"category",type:"string"},{name:"deadline",type:"uint256"}],outputs:[]},{type:"function",name:"withdrawERC1155",stateMutability:"nonpayable",inputs:[{name:"token",type:"address"},{name:"to",type:"address"},{name:"id",type:"uint256"},{name:"amount",type:"uint256"},{name:"splits",type:"tuple[]",components:[{name:"to",type:"address"},{name:"amount",type:"uint256"}]},{name:"nonce",type:"uint256"},{name:"signature",type:"bytes"},{name:"userID",type:"string"},{name:"titleID",type:"string"},{name:"category",type:"string"},{name:"deadline",type:"uint256"}],outputs:[]},{type:"function",name:"withdrawERC721",stateMutability:"nonpayable",inputs:[{name:"token",type:"address"},{name:"to",type:"address"},{name:"tokenId",type:"uint256"},{name:"nonce",type:"uint256"},{name:"signature",type:"bytes"},{name:"userID",type:"string"},{name:"titleID",type:"string"},{name:"category",type:"string"},{name:"deadline",type:"uint256"}],outputs:[]}],D=[{type:"function",name:"withdrawERC1155Mint",stateMutability:"nonpayable",inputs:[{name:"collection",type:"address"},{name:"to",type:"address"},{name:"id",type:"uint256"},{name:"amount",type:"uint256"},{name:"splits",type:"tuple[]",components:[{name:"to",type:"address"},{name:"amount",type:"uint256"}]},{name:"nonce",type:"uint256"},{name:"signature",type:"bytes"},{name:"userID",type:"string"},{name:"titleID",type:"string"},{name:"category",type:"string"},{name:"deadline",type:"uint256"}],outputs:[]},{type:"function",name:"withdrawERC721Mint",stateMutability:"nonpayable",inputs:[{name:"collection",type:"address"},{name:"to",type:"address"},{name:"tokenId",type:"uint256"},{name:"nonce",type:"uint256"},{name:"signature",type:"bytes"},{name:"userID",type:"string"},{name:"titleID",type:"string"},{name:"category",type:"string"},{name:"deadline",type:"uint256"}],outputs:[]}],x=[{type:"function",name:"approve",stateMutability:"nonpayable",inputs:[{name:"spender",type:"address"},{name:"amount",type:"uint256"}],outputs:[{name:"",type:"bool"}]},{type:"function",name:"allowance",stateMutability:"view",inputs:[{name:"owner",type:"address"},{name:"spender",type:"address"}],outputs:[{name:"",type:"uint256"}]},{type:"function",name:"decimals",stateMutability:"view",inputs:[],outputs:[{name:"",type:"uint8"}]},{type:"function",name:"balanceOf",stateMutability:"view",inputs:[{name:"account",type:"address"}],outputs:[{name:"",type:"uint256"}]}],P=[{type:"function",name:"safeTransferFrom",stateMutability:"nonpayable",inputs:[{name:"from",type:"address"},{name:"to",type:"address"},{name:"id",type:"uint256"},{name:"amount",type:"uint256"},{name:"data",type:"bytes"}],outputs:[]},{type:"function",name:"isApprovedForAll",stateMutability:"view",inputs:[{name:"account",type:"address"},{name:"operator",type:"address"}],outputs:[{name:"",type:"bool"}]},{type:"function",name:"setApprovalForAll",stateMutability:"nonpayable",inputs:[{name:"operator",type:"address"},{name:"approved",type:"bool"}],outputs:[]},{type:"function",name:"balanceOf",stateMutability:"view",inputs:[{name:"account",type:"address"},{name:"id",type:"uint256"}],outputs:[{name:"",type:"uint256"}]}],v=[{type:"function",name:"safeTransferFrom",stateMutability:"nonpayable",inputs:[{name:"from",type:"address"},{name:"to",type:"address"},{name:"tokenId",type:"uint256"},{name:"data",type:"bytes"}],outputs:[]}];function T(t,e,n){return viem.encodeAbiParameters([{type:"string"},{type:"string"},{type:"string"}],[t,e,core.normalizeBlockchainCategory(n)])}async function k(t,e){let{walletClient:n,publicClient:a,account:o}=t,i=await n.writeContract({address:e.address,abi:e.abi,functionName:e.functionName,args:e.args,account:o,chain:n.chain,value:e.value});if((await a.waitForTransactionReceipt({hash:i})).status==="reverted")throw new Error(`On-chain transaction reverted (${i}).`);return i}function S(t){let e=t.RewardPoolAddress;return e||null}async function R(t,e,n,a){return await t.publicClient.readContract({address:e,abi:x,functionName:"allowance",args:[t.account,n]})>=a?null:k(t,{address:e,abi:x,functionName:"approve",args:[n,a]})}async function L(t){let{client:e,clients:n,network:a,tokenAddress:o,amount:i,titleID:d,category:l}=t;if(y())return w("approve");let r=e.auth.context?.userID;if(!r)return s("approve","Not logged in.");let p=S(a);if(!p)return s("approve","Network has no RewardPoolAddress.");if(i<=0n)return s("approve","Amount must be positive.");try{await R(n,o,p,i);}catch(m){return s("approve",f(m))}let c;try{c=await k(n,{address:p,abi:b,functionName:"depositERC20",args:[o,i,r,d,l??""]});}catch(m){return s("deposit-onchain",f(m))}let u=await e.blockchain.depositToken(a.NetworkID??"",c);return u.ok?{ok:true,onChainTxHash:c,data:u.data}:s("report",u.error,{onChainTxHash:c})}async function ue(t){let{clients:e,poolAddress:n,tokenAddress:a,amount:o,userID:i,titleID:d,category:l}=t;if(y())return w("approve");if(!i)return s("approve","userID is required.");if(o<=0n)return s("approve","Amount must be positive.");try{await R(e,a,n,o);}catch(r){return s("approve",f(r))}try{let r=await k(e,{address:n,abi:b,functionName:"depositERC20",args:[a,o,i,d,l??""]});return {ok:!0,onChainTxHash:r,data:{txHash:r}}}catch(r){return s("deposit-onchain",f(r))}}async function me(t){let{client:e,clients:n,network:a,nftContractAddress:o,tokenId:i,amount:d,titleID:l,category:r}=t;if(y())return w("deposit-onchain");let p=e.auth.context?.userID;if(!p)return s("deposit-onchain","Not logged in.");let c=S(a);if(!c)return s("deposit-onchain","Network has no RewardPoolAddress.");if(d<=0n)return s("deposit-onchain","Amount must be positive.");let u=T(p,l,r),m;try{m=await k(n,{address:o,abi:P,functionName:"safeTransferFrom",args:[n.account,c,i,d,u]});}catch(W){return s("deposit-onchain",f(W))}let h=await e.blockchain.depositNFT(a.NetworkID??"",m);return h.ok?{ok:true,onChainTxHash:m,data:h.data}:s("report",h.error,{onChainTxHash:m})}async function ge(t){let{client:e,clients:n,network:a,nftContractAddress:o,tokenId:i,titleID:d,category:l}=t;if(y())return w("deposit-onchain");let r=e.auth.context?.userID;if(!r)return s("deposit-onchain","Not logged in.");let p=S(a);if(!p)return s("deposit-onchain","Network has no RewardPoolAddress.");let c=T(r,d,l),u;try{u=await k(n,{address:o,abi:v,functionName:"safeTransferFrom",args:[n.account,p,i,c]});}catch(h){return s("deposit-onchain",f(h))}let m=await e.blockchain.depositNFT(a.NetworkID??"",u);return m.ok?{ok:true,onChainTxHash:u,data:m.data}:s("report",m.error,{onChainTxHash:u})}function F(t){return (t.Splits??[]).map(e=>({to:e.To,amount:BigInt(e.Amount??"0")}))}async function M(t,e){return k(t,{address:e.ContractAddress,abi:b,functionName:"withdrawERC20",args:[e.TokenAddress,e.WalletAddress,BigInt(e.Amount??"0"),BigInt(e.BurnAmount??"0"),F(e),BigInt(e.Nonce??"0"),e.Signature??"0x",e.UserID??"",e.TitleID??"",e.Category??"",BigInt(e.Deadline??"0")]})}async function _(t,e){return k(t,{address:e.ContractAddress,abi:D,functionName:"withdrawERC1155Mint",args:[e.TokenAddress,e.WalletAddress,BigInt(e.TokenId??"0"),BigInt(e.Amount??"0"),F(e),BigInt(e.Nonce??"0"),e.Signature??"0x",e.UserID??"",e.TitleID??"",e.Category??"",BigInt(e.Deadline??"0")]})}async function fe(t,e){return k(t,{address:e.ContractAddress,abi:D,functionName:"withdrawERC721Mint",args:[e.TokenAddress,e.WalletAddress,BigInt(e.TokenId??"0"),BigInt(e.Nonce??"0"),e.Signature??"0x",e.UserID??"",e.TitleID??"",e.Category??"",BigInt(e.Deadline??"0")]})}async function ye(t){let{client:e,clients:n,currencyID:a,networkID:o,walletAddress:i,amount:d,category:l}=t;if(y())return w("request");let r=await e.blockchain.requestTokenWithdrawal(a,o,i,d,l);if(!r.ok)return s("request",r.error);let p=r.data.EvmSignature,c=r.data.TitleTransactionID??void 0;if(!p)return s("request","Withdrawal response carried no EVM signature.",{titleTransactionID:c});let u;try{u=await M(n,p);}catch(h){return s("withdraw-onchain",f(h),{titleTransactionID:c})}let m=await H(e,c,u);return m.ok?{ok:true,onChainTxHash:u,data:r.data}:m}async function he(t){let{client:e,clients:n,itemID:a,networkID:o,walletAddress:i,amount:d,category:l}=t;if(y())return w("request");let r=await e.blockchain.requestNFTWithdrawal(a,o,i,d,l);if(!r.ok)return s("request",r.error);let p=r.data.EvmSignature,c=r.data.TitleTransactionID??void 0;if(!p)return s("request","Withdrawal response carried no EVM signature.",{titleTransactionID:c});let u;try{u=await _(n,p);}catch(h){return s("withdraw-onchain",f(h),{titleTransactionID:c})}let m=await H(e,c,u);return m.ok?{ok:true,onChainTxHash:u,data:r.data}:m}async function H(t,e,n){if(!e)return s("confirm","Missing TitleTransactionID.",{onChainTxHash:n});let a=await t.blockchain.confirmWithdrawal(e,n);return a.ok?{ok:true,onChainTxHash:n,data:a.data}:s("confirm",a.error,{onChainTxHash:n,titleTransactionID:e})}async function we(t){let{client:e,clients:n,networkID:a}=t;if(y())return A("challenge");let o=t.walletAddress??n.account,i=await e.auth.requestWalletChallenge(o,a);if(!i.ok)return g("challenge",i.error);let d;try{d=await n.walletClient.signMessage({account:n.account,message:i.data.Message});}catch(r){return g("sign",f(r))}let l=await e.auth.loginWithWallet(o,a,d);return l.ok?{ok:true,data:l.data}:g("login",l.error)}async function ke(t){let{client:e,clients:n,networkID:a}=t;if(y())return A("challenge");let o=t.walletAddress??n.account,i=await e.auth.linkWallet(o,a);if(!i.ok)return g("challenge",i.error);if(!i.data.Challenge)return g("challenge","No challenge was issued.");let d;try{d=await n.walletClient.signMessage({account:n.account,message:i.data.Challenge});}catch(r){return g("sign",f(r))}let l=await e.auth.linkWallet(o,a,d);return l.ok?{ok:true,data:l.data}:g("login",l.error)}async function Ae(t){let{client:e,clients:n,network:a,tokenAddress:o,decimals:i,titleID:d,shortfall:l,completePurchase:r,bufferRatio:p=0,category:c}=t;if(y())return w("approve");if(l.missing<=0)return s("approve","Nothing to deposit.");let u=l.missing*(1+Math.max(0,p)),m;try{m=viem.parseUnits(be(u,i),i);}catch(G){return s("approve",f(G))}let h=await L({client:e,clients:n,network:a,tokenAddress:o,amount:m,titleID:d,category:c});if(!h.ok)return h;let W=await r();return W.ok?{ok:true,onChainTxHash:h.onChainTxHash,data:W.data}:s("report",W.error,{onChainTxHash:h.onChainTxHash})}function be(t,e){return t.toFixed(Math.min(e,18)).replace(/0+$/,"").replace(/\.$/,"")||"0"}async function xe(t){let{client:e,adapter:n,network:a,mint:o,amountRaw:i,titleID:d,category:l}=t;if(y())return w("deposit-onchain");let r=e.auth.context?.userID;if(!r)return s("deposit-onchain","Not logged in.");if(i<=0n)return s("deposit-onchain","Amount must be positive.");let p;try{p=await n.depositSpl({mint:o,amountRaw:i,userID:r,titleID:d,category:core.normalizeBlockchainCategory(l)});}catch(u){return s("deposit-onchain",f(u))}let c=await e.blockchain.depositToken(a.NetworkID??"",p);return c.ok?{ok:true,onChainTxHash:p,data:c.data}:s("report",c.error,{onChainTxHash:p})}async function Te(t){let{client:e,adapter:n,currencyID:a,networkID:o,walletAddress:i,amount:d,category:l}=t;if(y())return w("request");let r=await e.blockchain.requestTokenWithdrawal(a,o,i,d,l);if(!r.ok)return s("request",r.error);let p=r.data.SolanaSignature,c=r.data.TitleTransactionID??void 0;if(!p)return s("request","Withdrawal response carried no Solana signature.",{titleTransactionID:c});let u;try{u=await n.submitWithdrawal(p);}catch(h){return s("withdraw-onchain",f(h),{titleTransactionID:c})}if(!c)return s("confirm","Missing TitleTransactionID.",{onChainTxHash:u});let m=await e.blockchain.confirmWithdrawal(c,u);return m.ok?{ok:true,onChainTxHash:u,data:r.data}:s("confirm",m.error,{onChainTxHash:u,titleTransactionID:c})}async function Ie(t){let{client:e,networkID:n,walletAddress:a,signMessage:o}=t;if(y())return A("challenge");let i=await e.auth.requestWalletChallenge(a,n);if(!i.ok)return g("challenge",i.error);let d;try{let r=await o(new TextEncoder().encode(i.data.Message));d=O(r);}catch(r){return g("sign",f(r))}let l=await e.auth.loginWithWallet(a,n,d);return l.ok?{ok:true,data:l.data}:g("login",l.error)}async function Ce(t){let{client:e,networkID:n,walletAddress:a,signMessage:o}=t;if(y())return A("challenge");let i=await e.auth.linkWallet(a,n);if(!i.ok)return g("challenge",i.error);if(!i.data.Challenge)return g("challenge","No challenge was issued.");let d;try{let r=await o(new TextEncoder().encode(i.data.Challenge));d=O(r);}catch(r){return g("sign",f(r))}let l=await e.auth.linkWallet(a,n,d);return l.ok?{ok:true,data:l.data}:g("login",l.error)}function O(t){let e="0x";for(let n of t)e+=n.toString(16).padStart(2,"0");return e}
|
|
2
|
+
exports.PLATFORM_WALLET_MESSAGES=E;exports.PLATFORM_WALLET_UNAVAILABLE=J;exports.WALLET_USE_SITE_PANEL=I;exports.arbitrum=oe;exports.base=re;exports.bridgeFail=s;exports.bsc=ne;exports.chainById=Fe;exports.depositNftEvm=me;exports.depositNftEvm721=ge;exports.depositTokenEvm=L;exports.depositTokenOnChainEvm=ue;exports.depositTokenSolana=xe;exports.encodeNftDepositData=T;exports.ensureErc20Allowance=R;exports.erc1155Abi=P;exports.erc20Abi=x;exports.erc721Abi=v;exports.idosChains=de;exports.isAiCoderPreview=N;exports.isEmbeddedInPlatform=y;exports.isEmbeddedOnForeignSite=K;exports.linkWalletEvm=ke;exports.linkWalletSolana=Ce;exports.linkWalletViaPlatform=ee;exports.loginWithWalletEvm=we;exports.loginWithWalletSolana=Ie;exports.loginWithWalletViaPlatform=X;exports.mainnet=te;exports.onWalletBalanceChanged=Y;exports.openPlatformWalletPanel=j;exports.optimism=ie;exports.payWithWalletEvm=Ae;exports.polygon=ae;exports.polygonAmoy=le;exports.rewardPoolAbi=b;exports.sepolia=se;exports.solanaDevnet=He;exports.solanaMainnet=_e;exports.submitEvmNftWithdrawal=_;exports.submitEvmNftWithdrawal721=fe;exports.submitEvmTokenWithdrawal=M;exports.toAppKitNetwork=Me;exports.toErrorMessage=f;exports.walletLoginFail=g;exports.withdrawNftEvm=he;exports.withdrawTokenEvm=ye;exports.withdrawTokenSolana=Te;exports.writeAndWait=k;
|
package/dist/index.d.cts
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { W as WalletLoginResult, B as BridgeResult } from './chains-B2jQ-L0B.cjs';
|
|
2
2
|
export { A as AppKitEvmNetwork, a as AppKitSolanaNetwork, b as BridgeFailure, c as BridgeStage, d as BridgeSuccess, e as WalletLoginFailure, f as WalletLoginStage, g as WalletLoginSuccess, h as arbitrum, i as base, j as bridgeFail, k as bsc, l as chainById, m as idosChains, n as mainnet, o as optimism, p as polygon, q as polygonAmoy, s as sepolia, r as solanaDevnet, t as solanaMainnet, u as toAppKitNetwork, v as toErrorMessage, w as walletLoginFail } from './chains-B2jQ-L0B.cjs';
|
|
3
|
-
export { L as LoginWithWalletViaPlatformParams, P as PLATFORM_WALLET_MESSAGES, a as PLATFORM_WALLET_UNAVAILABLE, b as PlatformWalletFamily, W as WALLET_USE_SITE_PANEL, i as isAiCoderPreview, c as isEmbeddedInPlatform, d as isEmbeddedOnForeignSite, l as linkWalletViaPlatform, e as loginWithWalletViaPlatform, o as onWalletBalanceChanged, f as openPlatformWalletPanel } from './platformWalletLogin-
|
|
3
|
+
export { L as LoginWithWalletViaPlatformParams, P as PLATFORM_WALLET_MESSAGES, a as PLATFORM_WALLET_UNAVAILABLE, b as PlatformWalletFamily, W as WALLET_USE_SITE_PANEL, i as isAiCoderPreview, c as isEmbeddedInPlatform, d as isEmbeddedOnForeignSite, l as linkWalletViaPlatform, e as loginWithWalletViaPlatform, o as onWalletBalanceChanged, f as openPlatformWalletPanel } from './platformWalletLogin-BBBBN68y.cjs';
|
|
4
4
|
import { Hex, Address } from 'viem';
|
|
5
5
|
import { E as EvmBridgeClients } from './withdraw-DttqktSS.cjs';
|
|
6
6
|
export { D as DepositNft721EvmParams, a as DepositNftEvmParams, b as DepositTokenEvmParams, c as DepositTokenOnChainParams, W as WithdrawNftEvmParams, d as WithdrawTokenEvmParams, e as depositNftEvm, f as depositNftEvm721, g as depositTokenEvm, h as depositTokenOnChainEvm, i as ensureErc20Allowance, s as submitEvmNftWithdrawal, j as submitEvmNftWithdrawal721, k as submitEvmTokenWithdrawal, w as withdrawNftEvm, l as withdrawTokenEvm, m as writeAndWait } from './withdraw-DttqktSS.cjs';
|
|
7
7
|
import { IDosGamesClient, WalletLinkResponse, ClientState, BlockchainNetworkDefinition, CryptoShortfall, OperationResult } from '@idosgames/core';
|
|
8
|
-
export { D as DepositTokenSolanaParams, S as SolanaProgramAdapter, W as WithdrawTokenSolanaParams, d as depositTokenSolana, w as withdrawTokenSolana } from './bridge-
|
|
8
|
+
export { D as DepositTokenSolanaParams, S as SolanaProgramAdapter, W as WithdrawTokenSolanaParams, d as depositTokenSolana, w as withdrawTokenSolana } from './bridge-BAyA43hM.cjs';
|
|
9
9
|
|
|
10
10
|
declare const rewardPoolAbi: readonly [{
|
|
11
11
|
readonly type: "function";
|
package/dist/index.d.ts
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { W as WalletLoginResult, B as BridgeResult } from './chains-B2jQ-L0B.js';
|
|
2
2
|
export { A as AppKitEvmNetwork, a as AppKitSolanaNetwork, b as BridgeFailure, c as BridgeStage, d as BridgeSuccess, e as WalletLoginFailure, f as WalletLoginStage, g as WalletLoginSuccess, h as arbitrum, i as base, j as bridgeFail, k as bsc, l as chainById, m as idosChains, n as mainnet, o as optimism, p as polygon, q as polygonAmoy, s as sepolia, r as solanaDevnet, t as solanaMainnet, u as toAppKitNetwork, v as toErrorMessage, w as walletLoginFail } from './chains-B2jQ-L0B.js';
|
|
3
|
-
export { L as LoginWithWalletViaPlatformParams, P as PLATFORM_WALLET_MESSAGES, a as PLATFORM_WALLET_UNAVAILABLE, b as PlatformWalletFamily, W as WALLET_USE_SITE_PANEL, i as isAiCoderPreview, c as isEmbeddedInPlatform, d as isEmbeddedOnForeignSite, l as linkWalletViaPlatform, e as loginWithWalletViaPlatform, o as onWalletBalanceChanged, f as openPlatformWalletPanel } from './platformWalletLogin-
|
|
3
|
+
export { L as LoginWithWalletViaPlatformParams, P as PLATFORM_WALLET_MESSAGES, a as PLATFORM_WALLET_UNAVAILABLE, b as PlatformWalletFamily, W as WALLET_USE_SITE_PANEL, i as isAiCoderPreview, c as isEmbeddedInPlatform, d as isEmbeddedOnForeignSite, l as linkWalletViaPlatform, e as loginWithWalletViaPlatform, o as onWalletBalanceChanged, f as openPlatformWalletPanel } from './platformWalletLogin-BxAoMCd9.js';
|
|
4
4
|
import { Hex, Address } from 'viem';
|
|
5
5
|
import { E as EvmBridgeClients } from './withdraw-BPbJQVNt.js';
|
|
6
6
|
export { D as DepositNft721EvmParams, a as DepositNftEvmParams, b as DepositTokenEvmParams, c as DepositTokenOnChainParams, W as WithdrawNftEvmParams, d as WithdrawTokenEvmParams, e as depositNftEvm, f as depositNftEvm721, g as depositTokenEvm, h as depositTokenOnChainEvm, i as ensureErc20Allowance, s as submitEvmNftWithdrawal, j as submitEvmNftWithdrawal721, k as submitEvmTokenWithdrawal, w as withdrawNftEvm, l as withdrawTokenEvm, m as writeAndWait } from './withdraw-BPbJQVNt.js';
|
|
7
7
|
import { IDosGamesClient, WalletLinkResponse, ClientState, BlockchainNetworkDefinition, CryptoShortfall, OperationResult } from '@idosgames/core';
|
|
8
|
-
export { D as DepositTokenSolanaParams, S as SolanaProgramAdapter, W as WithdrawTokenSolanaParams, d as depositTokenSolana, w as withdrawTokenSolana } from './bridge-
|
|
8
|
+
export { D as DepositTokenSolanaParams, S as SolanaProgramAdapter, W as WithdrawTokenSolanaParams, d as depositTokenSolana, w as withdrawTokenSolana } from './bridge-BsVqE7-T.js';
|
|
9
9
|
|
|
10
10
|
declare const rewardPoolAbi: readonly [{
|
|
11
11
|
readonly type: "function";
|
package/dist/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export{j as depositNftEvm,k as depositNftEvm721,h as depositTokenEvm,i as depositTokenOnChainEvm,e as encodeNftDepositData,g as ensureErc20Allowance,c as erc1155Abi,b as erc20Abi,d as erc721Abi,r as linkWalletEvm,q as loginWithWalletEvm,s as payWithWalletEvm,a as rewardPoolAbi,m as submitEvmNftWithdrawal,n as submitEvmNftWithdrawal721,l as submitEvmTokenWithdrawal,p as withdrawNftEvm,o as withdrawTokenEvm,f as writeAndWait}from'./chunk-YTTVLBAW.js';export{a as PLATFORM_WALLET_MESSAGES,b as PLATFORM_WALLET_UNAVAILABLE,e as linkWalletViaPlatform,d as loginWithWalletViaPlatform,c as openPlatformWalletPanel}from'./chunk-
|
|
1
|
+
export{j as depositNftEvm,k as depositNftEvm721,h as depositTokenEvm,i as depositTokenOnChainEvm,e as encodeNftDepositData,g as ensureErc20Allowance,c as erc1155Abi,b as erc20Abi,d as erc721Abi,r as linkWalletEvm,q as loginWithWalletEvm,s as payWithWalletEvm,a as rewardPoolAbi,m as submitEvmNftWithdrawal,n as submitEvmNftWithdrawal721,l as submitEvmTokenWithdrawal,p as withdrawNftEvm,o as withdrawTokenEvm,f as writeAndWait}from'./chunk-YTTVLBAW.js';export{a as PLATFORM_WALLET_MESSAGES,b as PLATFORM_WALLET_UNAVAILABLE,e as linkWalletViaPlatform,d as loginWithWalletViaPlatform,c as openPlatformWalletPanel}from'./chunk-B4KT5CVC.js';export{a as depositTokenSolana,d as linkWalletSolana,c as loginWithWalletSolana,b as withdrawTokenSolana}from'./chunk-MLIXKTS6.js';export{d as WALLET_USE_SITE_PANEL,o as arbitrum,n as base,b as bridgeFail,l as bsc,t as chainById,s as idosChains,e as isAiCoderPreview,f as isEmbeddedInPlatform,g as isEmbeddedOnForeignSite,k as mainnet,j as onWalletBalanceChanged,p as optimism,m as polygon,r as polygonAmoy,q as sepolia,w as solanaDevnet,v as solanaMainnet,u as toAppKitNetwork,a as toErrorMessage,c as walletLoginFail}from'./chunk-K3THMWU2.js';
|
|
@@ -47,7 +47,7 @@ declare function isEmbeddedOnForeignSite(): boolean;
|
|
|
47
47
|
* embedded (see the module docblock above). After it completes an operation it posts
|
|
48
48
|
* `{type: "IDOS_WALLET_BALANCE_CHANGED"}` to this page — a game that wants its on-screen balance
|
|
49
49
|
* to update without the player reloading should call this once (e.g. in its HUD/wallet-display
|
|
50
|
-
* setup) and refresh
|
|
50
|
+
* setup) and refresh by revision — `client.cache.ensureState(["InventoryV2"], { force: true })` — when it fires. A no-op when not
|
|
51
51
|
* embedded (the site panel doesn't exist there to send it) or outside the browser.
|
|
52
52
|
*
|
|
53
53
|
* Returns an unsubscribe function.
|
|
@@ -47,7 +47,7 @@ declare function isEmbeddedOnForeignSite(): boolean;
|
|
|
47
47
|
* embedded (see the module docblock above). After it completes an operation it posts
|
|
48
48
|
* `{type: "IDOS_WALLET_BALANCE_CHANGED"}` to this page — a game that wants its on-screen balance
|
|
49
49
|
* to update without the player reloading should call this once (e.g. in its HUD/wallet-display
|
|
50
|
-
* setup) and refresh
|
|
50
|
+
* setup) and refresh by revision — `client.cache.ensureState(["InventoryV2"], { force: true })` — when it fires. A no-op when not
|
|
51
51
|
* embedded (the site panel doesn't exist there to send it) or outside the browser.
|
|
52
52
|
*
|
|
53
53
|
* Returns an unsubscribe function.
|
package/dist/react/index.cjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
'use strict';var wagmi=require('wagmi'),connectors=require('wagmi/connectors'),appkitAdapterWagmi=require('@reown/appkit-adapter-wagmi'),react=require('@reown/appkit/react'),reactQuery=require('@tanstack/react-query'),react$1=require('react'),jsxRuntime=require('react/jsx-runtime'),viem=require('viem'),core=require('@idosgames/core'),actions=require('wagmi/actions');var q={id:1,name:"Ethereum",nativeCurrency:{name:"Ether",symbol:"ETH",decimals:18},rpcUrls:{default:{http:["https://eth.llamarpc.com"]}},blockExplorers:{default:{name:"Etherscan",url:"https://etherscan.io"}}},j={id:56,name:"BNB Smart Chain",nativeCurrency:{name:"BNB",symbol:"BNB",decimals:18},rpcUrls:{default:{http:["https://bsc-dataseed.binance.org"]}},blockExplorers:{default:{name:"BscScan",url:"https://bscscan.com"}}},V={id:137,name:"Polygon",nativeCurrency:{name:"POL",symbol:"POL",decimals:18},rpcUrls:{default:{http:["https://polygon-rpc.com"]}},blockExplorers:{default:{name:"PolygonScan",url:"https://polygonscan.com"}}},z={id:8453,name:"Base",nativeCurrency:{name:"Ether",symbol:"ETH",decimals:18},rpcUrls:{default:{http:["https://mainnet.base.org"]}},blockExplorers:{default:{name:"BaseScan",url:"https://basescan.org"}}},Y={id:42161,name:"Arbitrum One",nativeCurrency:{name:"Ether",symbol:"ETH",decimals:18},rpcUrls:{default:{http:["https://arb1.arbitrum.io/rpc"]}},blockExplorers:{default:{name:"Arbiscan",url:"https://arbiscan.io"}}},$={id:10,name:"OP Mainnet",nativeCurrency:{name:"Ether",symbol:"ETH",decimals:18},rpcUrls:{default:{http:["https://mainnet.optimism.io"]}},blockExplorers:{default:{name:"Optimistic Etherscan",url:"https://optimistic.etherscan.io"}}},Q={id:11155111,name:"Sepolia",testnet:true,nativeCurrency:{name:"Sepolia Ether",symbol:"ETH",decimals:18},rpcUrls:{default:{http:["https://rpc.sepolia.org"]}},blockExplorers:{default:{name:"Etherscan",url:"https://sepolia.etherscan.io"}}},Z={id:80002,name:"Polygon Amoy",testnet:true,nativeCurrency:{name:"POL",symbol:"POL",decimals:18},rpcUrls:{default:{http:["https://rpc-amoy.polygon.technology"]}},blockExplorers:{default:{name:"PolygonScan",url:"https://amoy.polygonscan.com"}}},ve={mainnet:q,bsc:j,polygon:V,base:z,arbitrum:Y,optimism:$,sepolia:Q,polygonAmoy:Z};function qe(t){return Object.values(ve).find(e=>e.id===t)}function ke(t){return {...t,chainNamespace:"eip155",caipNetworkId:`eip155:${t.id}`}}var Ee=null;function Ae(t){Ee=t;}function ne(){return Ee}var Pe=[q,j,V,z,Y,$,Q,Z],re=new Map;function oe(t){let{chains:e=Pe,walletConnectProjectId:n,appName:r,appUrl:i,appIcon:o,transports:f,connectors:a}=t,s=n??"__extension_only__";if(!a){let w=re.get(s);if(w)return w}let u={};for(let w of e)u[w.id]=f?.[w.id]??wagmi.http();let c=i??(typeof window<"u"?window.location.origin:""),d={name:r??"iDosGames",description:r??"iDosGames game",url:c,icons:o?[o]:[]};if(n&&!a){let w=e.map(ke),b=new appkitAdapterWagmi.WagmiAdapter({networks:w,projectId:n,transports:u});return Ae(react.createAppKit({adapters:[b],networks:w,projectId:n,metadata:d,features:{analytics:false,email:false,socials:false}})),re.set(s,b.wagmiConfig),b.wagmiConfig}let g=a??[connectors.injected(),connectors.coinbaseWallet({appName:r??"iDosGames"})],m=wagmi.createConfig({chains:e,connectors:g,transports:u});return a||re.set(s,m),m}function O(t){let{wagmiConfig:e,queryClient:n,children:r}=t,[i]=react$1.useState(()=>n??new reactQuery.QueryClient);return jsxRuntime.jsx(wagmi.WagmiProvider,{config:e,children:jsxRuntime.jsx(reactQuery.QueryClientProvider,{client:i,children:r})})}var J=[{type:"function",name:"depositERC20",stateMutability:"nonpayable",inputs:[{name:"token",type:"address"},{name:"amount",type:"uint256"},{name:"userID",type:"string"},{name:"titleID",type:"string"},{name:"category",type:"string"}],outputs:[{name:"",type:"bool"}]},{type:"function",name:"withdrawERC20",stateMutability:"nonpayable",inputs:[{name:"token",type:"address"},{name:"to",type:"address"},{name:"amount",type:"uint256"},{name:"burnAmount",type:"uint256"},{name:"splits",type:"tuple[]",components:[{name:"to",type:"address"},{name:"amount",type:"uint256"}]},{name:"nonce",type:"uint256"},{name:"signature",type:"bytes"},{name:"userID",type:"string"},{name:"titleID",type:"string"},{name:"category",type:"string"},{name:"deadline",type:"uint256"}],outputs:[]},{type:"function",name:"withdrawERC1155",stateMutability:"nonpayable",inputs:[{name:"token",type:"address"},{name:"to",type:"address"},{name:"id",type:"uint256"},{name:"amount",type:"uint256"},{name:"splits",type:"tuple[]",components:[{name:"to",type:"address"},{name:"amount",type:"uint256"}]},{name:"nonce",type:"uint256"},{name:"signature",type:"bytes"},{name:"userID",type:"string"},{name:"titleID",type:"string"},{name:"category",type:"string"},{name:"deadline",type:"uint256"}],outputs:[]},{type:"function",name:"withdrawERC721",stateMutability:"nonpayable",inputs:[{name:"token",type:"address"},{name:"to",type:"address"},{name:"tokenId",type:"uint256"},{name:"nonce",type:"uint256"},{name:"signature",type:"bytes"},{name:"userID",type:"string"},{name:"titleID",type:"string"},{name:"category",type:"string"},{name:"deadline",type:"uint256"}],outputs:[]}],We=[{type:"function",name:"withdrawERC1155Mint",stateMutability:"nonpayable",inputs:[{name:"collection",type:"address"},{name:"to",type:"address"},{name:"id",type:"uint256"},{name:"amount",type:"uint256"},{name:"splits",type:"tuple[]",components:[{name:"to",type:"address"},{name:"amount",type:"uint256"}]},{name:"nonce",type:"uint256"},{name:"signature",type:"bytes"},{name:"userID",type:"string"},{name:"titleID",type:"string"},{name:"category",type:"string"},{name:"deadline",type:"uint256"}],outputs:[]},{type:"function",name:"withdrawERC721Mint",stateMutability:"nonpayable",inputs:[{name:"collection",type:"address"},{name:"to",type:"address"},{name:"tokenId",type:"uint256"},{name:"nonce",type:"uint256"},{name:"signature",type:"bytes"},{name:"userID",type:"string"},{name:"titleID",type:"string"},{name:"category",type:"string"},{name:"deadline",type:"uint256"}],outputs:[]}],ie=[{type:"function",name:"approve",stateMutability:"nonpayable",inputs:[{name:"spender",type:"address"},{name:"amount",type:"uint256"}],outputs:[{name:"",type:"bool"}]},{type:"function",name:"allowance",stateMutability:"view",inputs:[{name:"owner",type:"address"},{name:"spender",type:"address"}],outputs:[{name:"",type:"uint256"}]},{type:"function",name:"decimals",stateMutability:"view",inputs:[],outputs:[{name:"",type:"uint8"}]},{type:"function",name:"balanceOf",stateMutability:"view",inputs:[{name:"account",type:"address"}],outputs:[{name:"",type:"uint256"}]}],De=[{type:"function",name:"safeTransferFrom",stateMutability:"nonpayable",inputs:[{name:"from",type:"address"},{name:"to",type:"address"},{name:"id",type:"uint256"},{name:"amount",type:"uint256"},{name:"data",type:"bytes"}],outputs:[]},{type:"function",name:"isApprovedForAll",stateMutability:"view",inputs:[{name:"account",type:"address"},{name:"operator",type:"address"}],outputs:[{name:"",type:"bool"}]},{type:"function",name:"setApprovalForAll",stateMutability:"nonpayable",inputs:[{name:"operator",type:"address"},{name:"approved",type:"bool"}],outputs:[]},{type:"function",name:"balanceOf",stateMutability:"view",inputs:[{name:"account",type:"address"},{name:"id",type:"uint256"}],outputs:[{name:"",type:"uint256"}]}];function Te(t,e,n){return viem.encodeAbiParameters([{type:"string"},{type:"string"},{type:"string"}],[t,e,core.normalizeBlockchainCategory(n)])}async function N(t,e){let{walletClient:n,publicClient:r,account:i}=t,o=await n.writeContract({address:e.address,abi:e.abi,functionName:e.functionName,args:e.args,account:i,chain:n.chain,value:e.value});if((await r.waitForTransactionReceipt({hash:o})).status==="reverted")throw new Error(`On-chain transaction reverted (${o}).`);return o}function x(t){return t instanceof viem.BaseError?t.shortMessage:t instanceof Error?t.message:String(t)}function l(t,e,n){return {ok:false,stage:t,error:e,...n}}function E(t,e){return {ok:false,stage:t,error:e}}var Ie="WALLET_USE_SITE_PANEL",ot=/^[a-z0-9]{8}-preview\.idos\.games$/;function it(t=typeof window>"u"?"":window.location.hostname){let e=t.toLowerCase();return ot.test(e)?true:e!=="localhost"&&e!=="127.0.0.1"?false:globalThis.__IDOS_PREVIEW__!=null}function W(){if(typeof window>"u"||it())return false;try{return window.self!==window.top}catch{return true}}function L(t){return l(t,Ie)}function ae(t){return E(t,Ie)}function Ne(t){let e=t.RewardPoolAddress;return e||null}async function Se(t,e,n,r){return await t.publicClient.readContract({address:e,abi:ie,functionName:"allowance",args:[t.account,n]})>=r?null:N(t,{address:e,abi:ie,functionName:"approve",args:[n,r]})}async function se(t){let{client:e,clients:n,network:r,tokenAddress:i,amount:o,titleID:f,category:a}=t;if(W())return L("approve");let s=e.auth.context?.userID;if(!s)return l("approve","Not logged in.");let u=Ne(r);if(!u)return l("approve","Network has no RewardPoolAddress.");if(o<=0n)return l("approve","Amount must be positive.");try{await Se(n,i,u,o);}catch(g){return l("approve",x(g))}let c;try{c=await N(n,{address:u,abi:J,functionName:"depositERC20",args:[i,o,s,f,a??""]});}catch(g){return l("deposit-onchain",x(g))}let d=await e.blockchain.depositToken(r.NetworkID??"",c);return d.ok?{ok:true,onChainTxHash:c,data:d.data}:l("report",d.error,{onChainTxHash:c})}async function le(t){let{client:e,clients:n,network:r,nftContractAddress:i,tokenId:o,amount:f,titleID:a,category:s}=t;if(W())return L("deposit-onchain");let u=e.auth.context?.userID;if(!u)return l("deposit-onchain","Not logged in.");let c=Ne(r);if(!c)return l("deposit-onchain","Network has no RewardPoolAddress.");if(f<=0n)return l("deposit-onchain","Amount must be positive.");let d=Te(u,a,s),g;try{g=await N(n,{address:i,abi:De,functionName:"safeTransferFrom",args:[n.account,c,o,f,d]});}catch(w){return l("deposit-onchain",x(w))}let m=await e.blockchain.depositNFT(r.NetworkID??"",g);return m.ok?{ok:true,onChainTxHash:g,data:m.data}:l("report",m.error,{onChainTxHash:g})}function Be(t){return (t.Splits??[]).map(e=>({to:e.To,amount:BigInt(e.Amount??"0")}))}async function Re(t,e){return N(t,{address:e.ContractAddress,abi:J,functionName:"withdrawERC20",args:[e.TokenAddress,e.WalletAddress,BigInt(e.Amount??"0"),BigInt(e.BurnAmount??"0"),Be(e),BigInt(e.Nonce??"0"),e.Signature??"0x",e.UserID??"",e.TitleID??"",e.Category??"",BigInt(e.Deadline??"0")]})}async function Le(t,e){return N(t,{address:e.ContractAddress,abi:We,functionName:"withdrawERC1155Mint",args:[e.TokenAddress,e.WalletAddress,BigInt(e.TokenId??"0"),BigInt(e.Amount??"0"),Be(e),BigInt(e.Nonce??"0"),e.Signature??"0x",e.UserID??"",e.TitleID??"",e.Category??"",BigInt(e.Deadline??"0")]})}async function ce(t){let{client:e,clients:n,currencyID:r,networkID:i,walletAddress:o,amount:f,category:a}=t;if(W())return L("request");let s=await e.blockchain.requestTokenWithdrawal(r,i,o,f,a);if(!s.ok)return l("request",s.error);let u=s.data.EvmSignature,c=s.data.TitleTransactionID??void 0;if(!u)return l("request","Withdrawal response carried no EVM signature.",{titleTransactionID:c});let d;try{d=await Re(n,u);}catch(m){return l("withdraw-onchain",x(m),{titleTransactionID:c})}let g=await Fe(e,c,d);return g.ok?{ok:true,onChainTxHash:d,data:s.data}:g}async function de(t){let{client:e,clients:n,itemID:r,networkID:i,walletAddress:o,amount:f,category:a}=t;if(W())return L("request");let s=await e.blockchain.requestNFTWithdrawal(r,i,o,f,a);if(!s.ok)return l("request",s.error);let u=s.data.EvmSignature,c=s.data.TitleTransactionID??void 0;if(!u)return l("request","Withdrawal response carried no EVM signature.",{titleTransactionID:c});let d;try{d=await Le(n,u);}catch(m){return l("withdraw-onchain",x(m),{titleTransactionID:c})}let g=await Fe(e,c,d);return g.ok?{ok:true,onChainTxHash:d,data:s.data}:g}async function Fe(t,e,n){if(!e)return l("confirm","Missing TitleTransactionID.",{onChainTxHash:n});let r=await t.blockchain.confirmWithdrawal(e,n);return r.ok?{ok:true,onChainTxHash:n,data:r.data}:l("confirm",r.error,{onChainTxHash:n,titleTransactionID:e})}async function H(t){let{client:e,clients:n,networkID:r}=t;if(W())return ae("challenge");let i=t.walletAddress??n.account,o=await e.auth.requestWalletChallenge(i,r);if(!o.ok)return E("challenge",o.error);let f;try{f=await n.walletClient.signMessage({account:n.account,message:o.data.Message});}catch(s){return E("sign",x(s))}let a=await e.auth.loginWithWallet(i,r,f);return a.ok?{ok:true,data:a.data}:E("login",a.error)}async function pe(t){let{client:e,clients:n,networkID:r}=t;if(W())return ae("challenge");let i=t.walletAddress??n.account,o=await e.auth.linkWallet(i,r);if(!o.ok)return E("challenge",o.error);if(!o.data.Challenge)return E("challenge","No challenge was issued.");let f;try{f=await n.walletClient.signMessage({account:n.account,message:o.data.Challenge});}catch(s){return E("sign",x(s))}let a=await e.auth.linkWallet(i,r,f);return a.ok?{ok:true,data:a.data}:E("login",a.error)}function X(){let{address:t}=wagmi.useAccount(),e=wagmi.usePublicClient(),{data:n}=wagmi.useWalletClient();return !t||!e||!n?null:{account:t,publicClient:e,walletClient:n}}var M="Wallet not connected.";function ue(t,e){let n=X();return {connected:!!n,account:n?.account??null,loginWithWallet:(r,i)=>n?H({client:t,clients:n,networkID:r,walletAddress:i}):Promise.resolve(E("challenge",M)),depositToken:r=>n?se({client:t,clients:n,titleID:e,...r}):Promise.resolve(l("approve",M)),depositNft:r=>n?le({client:t,clients:n,titleID:e,...r}):Promise.resolve(l("deposit-onchain",M)),withdrawToken:r=>n?ce({client:t,clients:n,...r}):Promise.resolve(l("withdraw-onchain",M)),withdrawNft:r=>n?de({client:t,clients:n,...r}):Promise.resolve(l("withdraw-onchain",M))}}function me(t,e){switch(t){case null:case void 0:case "":return e;case "PLAY_ACCESS_WALLET_USED_BY_ANOTHER_ACCOUNT":return "This wallet already plays with another account.";case "WALLET_UNLINK_COOLDOWN":return "This wallet was unlinked from another account less than 7 days ago. Try again after the 7 days.";case "WALLET_CHANGES_TOO_FREQUENT":return "Too many wallets were changed this week. Try again in a few days.";case "PLAY_ACCESS_WALLET_LOGIN_ONLY":return "This game is played with a wallet login only.";case "INVALID_WALLET_SIGNATURE":return "The signature does not match the wallet. Please try again.";case "WALLET_CHALLENGE_EXPIRED":return "The request expired. Please try again.";default:return t}}function gt(t){let{wagmiConfig:e,...n}=t;return jsxRuntime.jsx(O,{wagmiConfig:e,children:jsxRuntime.jsx(Ue,{...n})})}function yt(t){return t instanceof Error&&(t.name==="ConnectorAlreadyConnectedError"||t.message.includes("already connected"))}function wt(t){let e="Wallet sign-in failed. Please try again.";return t instanceof Error?t.name==="ProviderNotFoundError"||/provider not found/i.test(t.message)?"No crypto wallet found in this browser. Install a wallet extension (e.g. MetaMask) or open this page in your wallet's browser, then try again.":t.name==="UserRejectedRequestError"||/user (rejected|denied|cancelled|canceled)/i.test(t.message)?"Request declined in the wallet.":/timed? ?out/i.test(t.message)?"The wallet did not respond. Open your wallet and try again.":e:e}async function Oe(t){let e=await actions.getWalletClient(t).catch(()=>null);if(!e)return null;let n=actions.getPublicClient(t);return n?{account:e.account.address,publicClient:n,walletClient:e}:null}function ht(t,e=18e4){return actions.getAccount(t).isConnected?Promise.resolve(true):new Promise(n=>{let r=false,i=a=>{r||(r=true,o(),clearTimeout(f),n(a));},o=actions.watchAccount(t,{onChange:a=>{a.isConnected&&i(true);}}),f=setTimeout(()=>i(false),e);})}function Ct(t,e=8e3){let n=r=>r==="reconnecting"||r==="connecting";return n(actions.getAccount(t).status)?new Promise(r=>{let i=false,o=()=>{i||(i=true,f(),clearTimeout(a),r());},f=actions.watchAccount(t,{onChange:s=>{n(s.status)||o();}}),a=setTimeout(o,e);}):Promise.resolve()}function bt(t){let e=i=>t.find(o=>o.id===i||o.type===i),n=e("injected"),r=typeof window<"u"&&window.ethereum!=null;return n&&r?n:e("walletConnect")??n??t[0]}var He=9e4;async function vt(t){try{let r=(await actions.getAccount(t).connector?.getProvider?.())?.session?.peer?.metadata?.redirect,i=r?.native||r?.universal;return !i||typeof window>"u"?!1:(window.location.href=i,!0)}catch{return false}}function Me(t,e){return new Promise((n,r)=>{let i=setTimeout(()=>r(new Error("The wallet request timed out.")),e);t.then(o=>{clearTimeout(i),n(o);},o=>{clearTimeout(i),r(o instanceof Error?o:new Error(String(o)));});})}function Ue(t){let{client:e,networkID:n,onAuthenticated:r,disabled:i,label:o,style:f,autoStart:a,mode:s="login",onLinked:u}=t,c=wagmi.useConfig(),{isConnected:d}=wagmi.useAccount(),{connectAsync:g,connectors:m}=wagmi.useConnect(),w=X(),[b,A]=react$1.useState(false),[F,P]=react$1.useState(null),[D,I]=react$1.useState(false),B=react$1.useRef(0),U=react$1.useRef(false),R=async()=>{let p=++B.current,y=()=>B.current===p;A(true),P(null);try{if(await Ct(c),!y())return;if(!actions.getAccount(c).isConnected){let k=ne();if(k){if(await k.open(),!await ht(c)){P("No wallet was connected.");return}}else {let Ce=bt(m);if(!Ce){P("No wallet connector is configured.");return}try{await g({connector:Ce});}catch(be){if(!yt(be))throw be}}}let v=w??await Oe(c);if(!v&&actions.getAccount(c).isConnected&&(await new Promise(k=>setTimeout(k,300)),v=await Oe(c),!y()))return;if(!v){P("Wallet client is not available.");return}if(I(!0),s==="link"){let k=await Me(pe({client:e,clients:v,networkID:n}),He);if(!y())return;if(k.ok){u?.(k.data.PlayAccess??null);return}P(k.stage==="sign"?"Signature declined.":me(k.error,"Could not link the wallet."));return}let _=await Me(H({client:e,clients:v,networkID:n}),He);if(!y())return;if(_.ok){r();return}P(_.stage==="sign"?"Signature declined.":me(_.error,"Wallet sign-in failed."));}catch(v){if(!y())return;console.error("[idosgames/wallet] wallet sign-in failed:",v),P(wt(v));}finally{y()&&(A(false),I(false));}};react$1.useEffect(()=>{!a||U.current||(U.current=true,R());},[a]);let K=async()=>{await vt(c)||await ne()?.open();};return jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[jsxRuntime.jsx("button",{type:"button",onClick:()=>{D?K():R();},disabled:i,style:{...kt,...i?{opacity:.6,cursor:"default"}:null,...f},children:D?"Waiting for signature \u2014 tap to open wallet":b?"Check your wallet\u2026":d?o??(s==="link"?"Link wallet":"Sign in with wallet"):"Connect wallet"}),F&&jsxRuntime.jsx("span",{role:"alert",style:Et,children:F})]})}var kt={padding:"11px 16px",borderRadius:"8px",border:"none",background:"#4c3fa8",color:"#fff",font:"inherit",fontWeight:600,cursor:"pointer"},Et={display:"block",marginTop:"6px",color:"#ff9b9b",fontSize:"13px",textAlign:"center"};var Dt={pointerEvents:"auto",background:"#04276bf5",border:"1px solid #1e59c8",borderRadius:12,padding:16,color:"#fff",width:320,boxSizing:"border-box",fontFamily:"system-ui, sans-serif",display:"flex",flexDirection:"column",gap:10,maxHeight:"80vh",overflow:"auto"},Tt={fontWeight:700,fontSize:16},T={fontSize:12,opacity:.7},ye={background:"#052e7e",border:"1px solid #1e59c8",borderRadius:8,color:"#fff",padding:"8px 10px",width:"100%",boxSizing:"border-box"},It={background:"#0d66fe",color:"#fff",border:"none",borderRadius:8,padding:"9px 14px",fontWeight:700,cursor:"pointer"},te={background:"#1e59c8",color:"#fff",border:"none",borderRadius:8,padding:"7px 12px",fontWeight:600,cursor:"pointer"},we={display:"flex",gap:8};function Ke({client:t,engine:e,onClose:n,style:r}){let[,i]=react$1.useReducer(p=>p+1,0),[o,f]=react$1.useState({}),[a,s]=react$1.useState({}),[u,c]=react$1.useState(""),[d,g]=react$1.useState(""),[m,w]=react$1.useState(""),[b,A]=react$1.useState(false),[F,P]=react$1.useState(null);react$1.useEffect(()=>{let p=true;return (async()=>{let y=await t.blockchain.getDefinitions();if(await t.blockchain.getUserState(),!p||!y.ok)return;let v={};for(let[_,k]of Object.entries(y.data.Blockchain?.Networks??{}))k.Type===e.networkType&&(v[_]=k);f(v),s(y.data.CryptoCurrencies??{}),c(Object.keys(v)[0]??"");})(),()=>{p=false;}},[t,e.networkType]),react$1.useEffect(()=>t.on("user:anyUpdated",i),[t]);let D=react$1.useMemo(()=>Object.entries(a).filter(([,p])=>p.Networks?.some(y=>y.NetworkID===u&&!!y.ContractAddress)),[a,u]);react$1.useEffect(()=>{let p=D[0]?.[0]??"";g(y=>D.some(([v])=>v===y)?y:p);},[D]);let I=u?o[u]:void 0,B=d?a[d]?.Networks?.find(p=>p.NetworkID===u):void 0,U=d?t.data.user.getCryptoCurrencyAmount(d):"0",R=!!e.address;async function K(p){A(true),P(null);try{let y=await p();P(y),y.ok&&await t.blockchain.getUserState();}finally{A(false);}}return jsxRuntime.jsxs("div",{style:{...Dt,...r},children:[jsxRuntime.jsxs("div",{style:{...we,justifyContent:"space-between"},children:[jsxRuntime.jsx("span",{style:Tt,children:"Crypto wallet"}),n&&jsxRuntime.jsx("button",{type:"button",style:te,onClick:n,children:"\u2715"})]}),R?jsxRuntime.jsxs("div",{style:we,children:[jsxRuntime.jsxs("span",{style:{...T,flex:1,alignSelf:"center"},children:[e.address.slice(0,6),"\u2026",e.address.slice(-4)]}),jsxRuntime.jsx("button",{type:"button",style:te,onClick:e.disconnect,children:"Disconnect"})]}):jsxRuntime.jsxs("div",{style:{display:"flex",flexDirection:"column",gap:6},children:[jsxRuntime.jsx("span",{style:T,children:"Connect a browser or mobile wallet"}),e.connectChoices.length===0?jsxRuntime.jsx("span",{style:T,children:"Wallet connection is not configured for this title."}):e.connectChoices.map(p=>jsxRuntime.jsx("button",{type:"button",style:te,onClick:p.connect,children:p.label},p.key))]}),Object.keys(o).length===0?jsxRuntime.jsxs("span",{style:T,children:["No ",e.networkType," networks configured for this title."]}):jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[jsxRuntime.jsxs("div",{children:[jsxRuntime.jsx("div",{style:T,children:"Network"}),jsxRuntime.jsx("select",{style:ye,value:u,onChange:p=>c(p.target.value),children:Object.entries(o).map(([p,y])=>jsxRuntime.jsx("option",{value:p,children:y.DisplayName??p},p))})]}),jsxRuntime.jsxs("div",{children:[jsxRuntime.jsx("div",{style:T,children:"Token"}),jsxRuntime.jsxs("select",{style:ye,value:d,onChange:p=>g(p.target.value),children:[D.length===0&&jsxRuntime.jsx("option",{value:"",children:"\u2014 no depositable tokens \u2014"}),D.map(([p,y])=>jsxRuntime.jsx("option",{value:p,children:y.DisplayName??p},p))]})]}),jsxRuntime.jsxs("div",{style:T,children:["In-game balance: ",jsxRuntime.jsx("b",{children:U})," ",d]}),jsxRuntime.jsxs("div",{children:[jsxRuntime.jsx("div",{style:T,children:"Amount"}),jsxRuntime.jsx("input",{style:ye,inputMode:"decimal",placeholder:"0.0",value:m,onChange:p=>w(p.target.value)})]}),jsxRuntime.jsxs("div",{style:we,children:[jsxRuntime.jsx("button",{type:"button",style:{...It,flex:1,opacity:b?.6:1},disabled:b||!R||!B?.ContractAddress,onClick:()=>{!I||!B||K(()=>e.deposit({network:I,binding:B,currencyID:d,amount:m||"0"}));},children:"Deposit"}),jsxRuntime.jsx("button",{type:"button",style:{...te,flex:1,opacity:b?.6:1},disabled:b||!R||!d,onClick:()=>{I&&K(()=>e.withdraw({network:I,networkID:u,currencyID:d,amount:m||"0"}));},children:"Withdraw"})]})]}),F&&jsxRuntime.jsx(Nt,{result:F})]})}function Nt({result:t}){let e={fontSize:12,borderRadius:8,padding:"8px 10px",background:t.ok?"#1e3a2a":"#3a1e28",color:t.ok?"#8ef0b0":"#f2a0b4",wordBreak:"break-all"};return t.ok?jsxRuntime.jsxs("div",{style:e,children:["\u2713 Done \xB7 tx ",t.onChainTxHash]}):jsxRuntime.jsxs("div",{style:e,children:["\u2715 [",t.stage,"] ",t.error,t.titleTransactionID?` \xB7 already debited (tx ${t.titleTransactionID}) \u2014 retry/confirm, don't re-request`:""]})}function Gt(t){let{client:e,walletConnectProjectId:n,appName:r,onClose:i,style:o}=t,[f,a]=react$1.useState(n??"");react$1.useEffect(()=>{if(n)return;let u=true;return (async()=>{let c=await e.blockchain.getDefinitions();if(!u||!c.ok)return;let d=c.data.Blockchain?.WalletLogin?.WalletConnectProjectId;d&&a(d);})(),()=>{u=false;}},[e,n]);let s=react$1.useMemo(()=>oe({walletConnectProjectId:f||void 0,appName:r}),[f,r]);return jsxRuntime.jsx(O,{wagmiConfig:s,children:jsxRuntime.jsx(Ut,{client:e,onClose:i,style:o})})}function Ut({client:t,onClose:e,style:n}){let r=ue(t,t.titleID),{address:i,isConnected:o,chainId:f}=wagmi.useAccount(),{connect:a,connectors:s}=wagmi.useConnect(),{disconnect:u}=wagmi.useDisconnect(),{switchChainAsync:c}=wagmi.useSwitchChain();async function d(m){if(!m||f===m)return true;try{return await c({chainId:m}),!0}catch{return false}}let g={networkType:"EVM",address:o&&i?i:null,connectChoices:s.map(m=>({key:m.uid,label:m.name,connect:()=>a({connector:m})})),disconnect:()=>u(),deposit:async({network:m,binding:w,amount:b})=>{if(!w.ContractAddress)return l("approve","This token cannot be deposited.");if(!await d(m.ChainID))return l("approve",`Switch your wallet to chain ${m.ChainID} to continue.`);let A;try{A=viem.parseUnits(b,w.Decimals??18);}catch{return l("approve","Invalid amount.")}return r.depositToken({network:m,tokenAddress:w.ContractAddress,amount:A})},withdraw:async({network:m,networkID:w,currencyID:b,amount:A})=>r.account?await d(m.ChainID)?r.withdrawToken({currencyID:b,networkID:w,walletAddress:r.account,amount:A}):l("request",`Switch your wallet to chain ${m.ChainID} to continue.`):l("request","Wallet not connected.")};return jsxRuntime.jsx(Ke,{client:t,engine:g,onClose:e,style:n})}
|
|
2
|
-
exports.DEFAULT_EVM_CHAINS=
|
|
1
|
+
'use strict';var wagmi=require('wagmi'),connectors=require('wagmi/connectors'),appkitAdapterWagmi=require('@reown/appkit-adapter-wagmi'),react=require('@reown/appkit/react'),reactQuery=require('@tanstack/react-query'),react$1=require('react'),jsxRuntime=require('react/jsx-runtime'),viem=require('viem'),core=require('@idosgames/core'),actions=require('wagmi/actions');var se={id:1,name:"Ethereum",nativeCurrency:{name:"Ether",symbol:"ETH",decimals:18},rpcUrls:{default:{http:["https://eth.llamarpc.com"]}},blockExplorers:{default:{name:"Etherscan",url:"https://etherscan.io"}}},le={id:56,name:"BNB Smart Chain",nativeCurrency:{name:"BNB",symbol:"BNB",decimals:18},rpcUrls:{default:{http:["https://bsc-dataseed.binance.org"]}},blockExplorers:{default:{name:"BscScan",url:"https://bscscan.com"}}},ce={id:137,name:"Polygon",nativeCurrency:{name:"POL",symbol:"POL",decimals:18},rpcUrls:{default:{http:["https://polygon-rpc.com"]}},blockExplorers:{default:{name:"PolygonScan",url:"https://polygonscan.com"}}},de={id:8453,name:"Base",nativeCurrency:{name:"Ether",symbol:"ETH",decimals:18},rpcUrls:{default:{http:["https://mainnet.base.org"]}},blockExplorers:{default:{name:"BaseScan",url:"https://basescan.org"}}},pe={id:42161,name:"Arbitrum One",nativeCurrency:{name:"Ether",symbol:"ETH",decimals:18},rpcUrls:{default:{http:["https://arb1.arbitrum.io/rpc"]}},blockExplorers:{default:{name:"Arbiscan",url:"https://arbiscan.io"}}},ue={id:10,name:"OP Mainnet",nativeCurrency:{name:"Ether",symbol:"ETH",decimals:18},rpcUrls:{default:{http:["https://mainnet.optimism.io"]}},blockExplorers:{default:{name:"Optimistic Etherscan",url:"https://optimistic.etherscan.io"}}},me={id:11155111,name:"Sepolia",testnet:true,nativeCurrency:{name:"Sepolia Ether",symbol:"ETH",decimals:18},rpcUrls:{default:{http:["https://rpc.sepolia.org"]}},blockExplorers:{default:{name:"Etherscan",url:"https://sepolia.etherscan.io"}}},fe={id:80002,name:"Polygon Amoy",testnet:true,nativeCurrency:{name:"POL",symbol:"POL",decimals:18},rpcUrls:{default:{http:["https://rpc-amoy.polygon.technology"]}},blockExplorers:{default:{name:"PolygonScan",url:"https://amoy.polygonscan.com"}}},je={mainnet:se,bsc:le,polygon:ce,base:de,arbitrum:pe,optimism:ue,sepolia:me,polygonAmoy:fe};function St(t){return Object.values(je).find(e=>e.id===t)}function Ve(t){return {...t,chainNamespace:"eip155",caipNetworkId:`eip155:${t.id}`}}var Ye=null;function Qe(t){Ye=t;}function ve(){return Ye}var Ze=[se,le,ce,de,pe,ue,me,fe],De=new Map;function Ee(t){let{chains:e=Ze,walletConnectProjectId:n,appName:o,appUrl:r,appIcon:i,transports:p,connectors:l}=t,c=n??"__extension_only__";if(!l){let u=De.get(c);if(u)return u}let y={};for(let u of e)y[u.id]=p?.[u.id]??wagmi.http();let m=r??(typeof window<"u"?window.location.origin:""),k={name:o??"iDosGames",description:o??"iDosGames game",url:m,icons:i?[i]:[]};if(n&&!l){let u=e.map(Ve),A=new appkitAdapterWagmi.WagmiAdapter({networks:u,projectId:n,transports:y});return Qe(react.createAppKit({adapters:[A],networks:u,projectId:n,metadata:k,features:{analytics:false,email:false,socials:false}})),De.set(c,A.wagmiConfig),A.wagmiConfig}let w=l??[connectors.injected(),connectors.coinbaseWallet({appName:o??"iDosGames"})],T=wagmi.createConfig({chains:e,connectors:w,transports:y});return l||De.set(c,T),T}function X(t){let{wagmiConfig:e,queryClient:n,children:o}=t,[r]=react$1.useState(()=>n??new reactQuery.QueryClient);return jsxRuntime.jsx(wagmi.WagmiProvider,{config:e,children:jsxRuntime.jsx(reactQuery.QueryClientProvider,{client:r,children:o})})}var ge=[{type:"function",name:"depositERC20",stateMutability:"nonpayable",inputs:[{name:"token",type:"address"},{name:"amount",type:"uint256"},{name:"userID",type:"string"},{name:"titleID",type:"string"},{name:"category",type:"string"}],outputs:[{name:"",type:"bool"}]},{type:"function",name:"withdrawERC20",stateMutability:"nonpayable",inputs:[{name:"token",type:"address"},{name:"to",type:"address"},{name:"amount",type:"uint256"},{name:"burnAmount",type:"uint256"},{name:"splits",type:"tuple[]",components:[{name:"to",type:"address"},{name:"amount",type:"uint256"}]},{name:"nonce",type:"uint256"},{name:"signature",type:"bytes"},{name:"userID",type:"string"},{name:"titleID",type:"string"},{name:"category",type:"string"},{name:"deadline",type:"uint256"}],outputs:[]},{type:"function",name:"withdrawERC1155",stateMutability:"nonpayable",inputs:[{name:"token",type:"address"},{name:"to",type:"address"},{name:"id",type:"uint256"},{name:"amount",type:"uint256"},{name:"splits",type:"tuple[]",components:[{name:"to",type:"address"},{name:"amount",type:"uint256"}]},{name:"nonce",type:"uint256"},{name:"signature",type:"bytes"},{name:"userID",type:"string"},{name:"titleID",type:"string"},{name:"category",type:"string"},{name:"deadline",type:"uint256"}],outputs:[]},{type:"function",name:"withdrawERC721",stateMutability:"nonpayable",inputs:[{name:"token",type:"address"},{name:"to",type:"address"},{name:"tokenId",type:"uint256"},{name:"nonce",type:"uint256"},{name:"signature",type:"bytes"},{name:"userID",type:"string"},{name:"titleID",type:"string"},{name:"category",type:"string"},{name:"deadline",type:"uint256"}],outputs:[]}],Xe=[{type:"function",name:"withdrawERC1155Mint",stateMutability:"nonpayable",inputs:[{name:"collection",type:"address"},{name:"to",type:"address"},{name:"id",type:"uint256"},{name:"amount",type:"uint256"},{name:"splits",type:"tuple[]",components:[{name:"to",type:"address"},{name:"amount",type:"uint256"}]},{name:"nonce",type:"uint256"},{name:"signature",type:"bytes"},{name:"userID",type:"string"},{name:"titleID",type:"string"},{name:"category",type:"string"},{name:"deadline",type:"uint256"}],outputs:[]},{type:"function",name:"withdrawERC721Mint",stateMutability:"nonpayable",inputs:[{name:"collection",type:"address"},{name:"to",type:"address"},{name:"tokenId",type:"uint256"},{name:"nonce",type:"uint256"},{name:"signature",type:"bytes"},{name:"userID",type:"string"},{name:"titleID",type:"string"},{name:"category",type:"string"},{name:"deadline",type:"uint256"}],outputs:[]}],Te=[{type:"function",name:"approve",stateMutability:"nonpayable",inputs:[{name:"spender",type:"address"},{name:"amount",type:"uint256"}],outputs:[{name:"",type:"bool"}]},{type:"function",name:"allowance",stateMutability:"view",inputs:[{name:"owner",type:"address"},{name:"spender",type:"address"}],outputs:[{name:"",type:"uint256"}]},{type:"function",name:"decimals",stateMutability:"view",inputs:[],outputs:[{name:"",type:"uint8"}]},{type:"function",name:"balanceOf",stateMutability:"view",inputs:[{name:"account",type:"address"}],outputs:[{name:"",type:"uint256"}]}],et=[{type:"function",name:"safeTransferFrom",stateMutability:"nonpayable",inputs:[{name:"from",type:"address"},{name:"to",type:"address"},{name:"id",type:"uint256"},{name:"amount",type:"uint256"},{name:"data",type:"bytes"}],outputs:[]},{type:"function",name:"isApprovedForAll",stateMutability:"view",inputs:[{name:"account",type:"address"},{name:"operator",type:"address"}],outputs:[{name:"",type:"bool"}]},{type:"function",name:"setApprovalForAll",stateMutability:"nonpayable",inputs:[{name:"operator",type:"address"},{name:"approved",type:"bool"}],outputs:[]},{type:"function",name:"balanceOf",stateMutability:"view",inputs:[{name:"account",type:"address"},{name:"id",type:"uint256"}],outputs:[{name:"",type:"uint256"}]}];function tt(t,e,n){return viem.encodeAbiParameters([{type:"string"},{type:"string"},{type:"string"}],[t,e,core.normalizeBlockchainCategory(n)])}async function _(t,e){let{walletClient:n,publicClient:o,account:r}=t,i=await n.writeContract({address:e.address,abi:e.abi,functionName:e.functionName,args:e.args,account:r,chain:n.chain,value:e.value});if((await o.waitForTransactionReceipt({hash:i})).status==="reverted")throw new Error(`On-chain transaction reverted (${i}).`);return i}function H(t){return t instanceof viem.BaseError?t.shortMessage:t instanceof Error?t.message:String(t)}function f(t,e,n){return {ok:false,stage:t,error:e,...n}}function S(t,e){return {ok:false,stage:t,error:e}}var nt="WALLET_USE_SITE_PANEL",Kt=/^[a-z0-9]{8}-preview\.idos\.games$/;function jt(t=typeof window>"u"?"":window.location.hostname){let e=t.toLowerCase();return Kt.test(e)?true:e!=="localhost"&&e!=="127.0.0.1"?false:globalThis.__IDOS_PREVIEW__!=null}function R(){if(typeof window>"u"||jt())return false;try{return window.self!==window.top}catch{return true}}function ot(){if(typeof window>"u")return false;try{return window.parent!==window.top}catch{return true}}function Y(t){return f(t,nt)}function Ie(t){return S(t,nt)}function rt(t){let e=t.RewardPoolAddress;return e||null}async function it(t,e,n,o){return await t.publicClient.readContract({address:e,abi:Te,functionName:"allowance",args:[t.account,n]})>=o?null:_(t,{address:e,abi:Te,functionName:"approve",args:[n,o]})}async function Ne(t){let{client:e,clients:n,network:o,tokenAddress:r,amount:i,titleID:p,category:l}=t;if(R())return Y("approve");let c=e.auth.context?.userID;if(!c)return f("approve","Not logged in.");let y=rt(o);if(!y)return f("approve","Network has no RewardPoolAddress.");if(i<=0n)return f("approve","Amount must be positive.");try{await it(n,r,y,i);}catch(w){return f("approve",H(w))}let m;try{m=await _(n,{address:y,abi:ge,functionName:"depositERC20",args:[r,i,c,p,l??""]});}catch(w){return f("deposit-onchain",H(w))}let k=await e.blockchain.depositToken(o.NetworkID??"",m);return k.ok?{ok:true,onChainTxHash:m,data:k.data}:f("report",k.error,{onChainTxHash:m})}async function Ae(t){let{client:e,clients:n,network:o,nftContractAddress:r,tokenId:i,amount:p,titleID:l,category:c}=t;if(R())return Y("deposit-onchain");let y=e.auth.context?.userID;if(!y)return f("deposit-onchain","Not logged in.");let m=rt(o);if(!m)return f("deposit-onchain","Network has no RewardPoolAddress.");if(p<=0n)return f("deposit-onchain","Amount must be positive.");let k=tt(y,l,c),w;try{w=await _(n,{address:r,abi:et,functionName:"safeTransferFrom",args:[n.account,m,i,p,k]});}catch(u){return f("deposit-onchain",H(u))}let T=await e.blockchain.depositNFT(o.NetworkID??"",w);return T.ok?{ok:true,onChainTxHash:w,data:T.data}:f("report",T.error,{onChainTxHash:w})}function at(t){return (t.Splits??[]).map(e=>({to:e.To,amount:BigInt(e.Amount??"0")}))}async function st(t,e){return _(t,{address:e.ContractAddress,abi:ge,functionName:"withdrawERC20",args:[e.TokenAddress,e.WalletAddress,BigInt(e.Amount??"0"),BigInt(e.BurnAmount??"0"),at(e),BigInt(e.Nonce??"0"),e.Signature??"0x",e.UserID??"",e.TitleID??"",e.Category??"",BigInt(e.Deadline??"0")]})}async function lt(t,e){return _(t,{address:e.ContractAddress,abi:Xe,functionName:"withdrawERC1155Mint",args:[e.TokenAddress,e.WalletAddress,BigInt(e.TokenId??"0"),BigInt(e.Amount??"0"),at(e),BigInt(e.Nonce??"0"),e.Signature??"0x",e.UserID??"",e.TitleID??"",e.Category??"",BigInt(e.Deadline??"0")]})}async function Pe(t){let{client:e,clients:n,currencyID:o,networkID:r,walletAddress:i,amount:p,category:l}=t;if(R())return Y("request");let c=await e.blockchain.requestTokenWithdrawal(o,r,i,p,l);if(!c.ok)return f("request",c.error);let y=c.data.EvmSignature,m=c.data.TitleTransactionID??void 0;if(!y)return f("request","Withdrawal response carried no EVM signature.",{titleTransactionID:m});let k;try{k=await st(n,y);}catch(T){return f("withdraw-onchain",H(T),{titleTransactionID:m})}let w=await ct(e,m,k);return w.ok?{ok:true,onChainTxHash:k,data:c.data}:w}async function We(t){let{client:e,clients:n,itemID:o,networkID:r,walletAddress:i,amount:p,category:l}=t;if(R())return Y("request");let c=await e.blockchain.requestNFTWithdrawal(o,r,i,p,l);if(!c.ok)return f("request",c.error);let y=c.data.EvmSignature,m=c.data.TitleTransactionID??void 0;if(!y)return f("request","Withdrawal response carried no EVM signature.",{titleTransactionID:m});let k;try{k=await lt(n,y);}catch(T){return f("withdraw-onchain",H(T),{titleTransactionID:m})}let w=await ct(e,m,k);return w.ok?{ok:true,onChainTxHash:k,data:c.data}:w}async function ct(t,e,n){if(!e)return f("confirm","Missing TitleTransactionID.",{onChainTxHash:n});let o=await t.blockchain.confirmWithdrawal(e,n);return o.ok?{ok:true,onChainTxHash:n,data:o.data}:f("confirm",o.error,{onChainTxHash:n,titleTransactionID:e})}async function ee(t){let{client:e,clients:n,networkID:o}=t;if(R())return Ie("challenge");let r=t.walletAddress??n.account,i=await e.auth.requestWalletChallenge(r,o);if(!i.ok)return S("challenge",i.error);let p;try{p=await n.walletClient.signMessage({account:n.account,message:i.data.Message});}catch(c){return S("sign",H(c))}let l=await e.auth.loginWithWallet(r,o,p);return l.ok?{ok:true,data:l.data}:S("login",l.error)}async function Se(t){let{client:e,clients:n,networkID:o}=t;if(R())return Ie("challenge");let r=t.walletAddress??n.account,i=await e.auth.linkWallet(r,o);if(!i.ok)return S("challenge",i.error);if(!i.data.Challenge)return S("challenge","No challenge was issued.");let p;try{p=await n.walletClient.signMessage({account:n.account,message:i.data.Challenge});}catch(c){return S("sign",H(c))}let l=await e.auth.linkWallet(r,o,p);return l.ok?{ok:true,data:l.data}:S("login",l.error)}function ye(){let{address:t}=wagmi.useAccount(),e=wagmi.usePublicClient(),{data:n}=wagmi.useWalletClient();return !t||!e||!n?null:{account:t,publicClient:e,walletClient:n}}var te="Wallet not connected.";function Re(t,e){let n=ye();return {connected:!!n,account:n?.account??null,loginWithWallet:(o,r)=>n?ee({client:t,clients:n,networkID:o,walletAddress:r}):Promise.resolve(S("challenge",te)),depositToken:o=>n?Ne({client:t,clients:n,titleID:e,...o}):Promise.resolve(f("approve",te)),depositNft:o=>n?Ae({client:t,clients:n,titleID:e,...o}):Promise.resolve(f("deposit-onchain",te)),withdrawToken:o=>n?Pe({client:t,clients:n,...o}):Promise.resolve(f("withdraw-onchain",te)),withdrawNft:o=>n?We({client:t,clients:n,...o}):Promise.resolve(f("withdraw-onchain",te))}}function on(t){let{wagmiConfig:e,...n}=t;return jsxRuntime.jsx(X,{wagmiConfig:e,children:jsxRuntime.jsx(yt,{...n})})}function rn(t){return t instanceof Error&&(t.name==="ConnectorAlreadyConnectedError"||t.message.includes("already connected"))}function an(t){let e="Wallet sign-in failed. Please try again.";return t instanceof Error?t.name==="ProviderNotFoundError"||/provider not found/i.test(t.message)?"No crypto wallet found in this browser. Install a wallet extension (e.g. MetaMask) or open this page in your wallet's browser, then try again.":t.name==="UserRejectedRequestError"||/user (rejected|denied|cancelled|canceled)/i.test(t.message)?"Request declined in the wallet.":/timed? ?out/i.test(t.message)?"The wallet did not respond. Open your wallet and try again.":e:e}async function ut(t){let e=await actions.getWalletClient(t).catch(()=>null);if(!e)return null;let n=actions.getPublicClient(t);return n?{account:e.account.address,publicClient:n,walletClient:e}:null}function sn(t,e=18e4){return actions.getAccount(t).isConnected?Promise.resolve(true):new Promise(n=>{let o=false,r=l=>{o||(o=true,i(),clearTimeout(p),n(l));},i=actions.watchAccount(t,{onChange:l=>{l.isConnected&&r(true);}}),p=setTimeout(()=>r(false),e);})}function ln(t,e=8e3){let n=o=>o==="reconnecting"||o==="connecting";return n(actions.getAccount(t).status)?new Promise(o=>{let r=false,i=()=>{r||(r=true,p(),clearTimeout(l),o());},p=actions.watchAccount(t,{onChange:c=>{n(c.status)||i();}}),l=setTimeout(i,e);}):Promise.resolve()}function cn(t){let e=r=>t.find(i=>i.id===r||i.type===r),n=e("injected"),o=typeof window<"u"&&window.ethereum!=null;return n&&o?n:e("walletConnect")??n??t[0]}var mt=9e4;async function dn(t){try{let o=(await actions.getAccount(t).connector?.getProvider?.())?.session?.peer?.metadata?.redirect,r=o?.native||o?.universal;return !r||typeof window>"u"?!1:(window.location.href=r,!0)}catch{return false}}function ft(t,e){return new Promise((n,o)=>{let r=setTimeout(()=>o(new Error("The wallet request timed out.")),e);t.then(i=>{clearTimeout(r),n(i);},i=>{clearTimeout(r),o(i instanceof Error?i:new Error(String(i)));});})}function yt(t){let{client:e,networkID:n,onAuthenticated:o,disabled:r,label:i,style:p,autoStart:l,mode:c="login",onLinked:y}=t,m=wagmi.useConfig(),{isConnected:k}=wagmi.useAccount(),{connectAsync:w,connectors:T}=wagmi.useConnect(),u=ye(),[A,C]=react$1.useState(false),[F,P]=react$1.useState(null),[O,$]=react$1.useState(false),Z=react$1.useRef(0),q=react$1.useRef(false),z=async()=>{let re=++Z.current,W=()=>Z.current===re;C(true),P(null);try{if(await ln(m),!W())return;if(!actions.getAccount(m).isConnected){let x=ve();if(x){if(await x.open(),!await sn(m)){P("No wallet was connected.");return}}else {let K=cn(T);if(!K){P("No wallet connector is configured.");return}try{await w({connector:K});}catch(j){if(!rn(j))throw j}}}let I=u??await ut(m);if(!I&&actions.getAccount(m).isConnected&&(await new Promise(x=>setTimeout(x,300)),I=await ut(m),!W()))return;if(!I){P("Wallet client is not available.");return}if($(!0),c==="link"){let x=await ft(Se({client:e,clients:I,networkID:n}),mt);if(!W())return;if(x.ok){y?.(x.data.PlayAccess??null);return}P(x.stage==="sign"?"Signature declined.":core.authErrorText(x.error,"Could not link the wallet."));return}let M=await ft(ee({client:e,clients:I,networkID:n}),mt);if(!W())return;if(M.ok){o();return}P(M.stage==="sign"?"Signature declined.":core.authErrorText(M.error,"Wallet sign-in failed."));}catch(I){if(!W())return;console.error("[idosgames/wallet] wallet sign-in failed:",I),P(an(I));}finally{W()&&(C(false),$(false));}};react$1.useEffect(()=>{!l||q.current||(q.current=true,z());},[l]);let he=async()=>{await dn(m)||await ve()?.open();};return jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[jsxRuntime.jsx("button",{type:"button",onClick:()=>{O?he():z();},disabled:r,style:{...pn,...r?{opacity:.6,cursor:"default"}:null,...p},children:O?"Waiting for signature \u2014 tap to open wallet":A?"Check your wallet\u2026":k?i??(c==="link"?"Link wallet":"Sign in with wallet"):"Connect wallet"}),F&&jsxRuntime.jsx("span",{role:"alert",style:un,children:F})]})}var pn={padding:"11px 16px",borderRadius:"8px",border:"none",background:"#4c3fa8",color:"#fff",font:"inherit",fontWeight:600,cursor:"pointer"},un={display:"block",marginTop:"6px",color:"#ff9b9b",fontSize:"13px",textAlign:"center"};var b=(t,e)=>`var(--idos-ui-${t}, ${e})`,a={panel:b("panel","#2c3480"),panelDeep:b("panel-deep","#1d2360"),panelEdge:b("panel-edge","#4f5bc9"),text:b("text","#ffffff"),textDim:b("text-dim","#aeb6f0"),gold:b("gold","#ffd24a"),goldDeep:b("gold-deep","#e89a12"),green:b("green","#59d35b"),greenDeep:b("green-deep","#2b9936"),blue:b("blue","#4fb1ff"),blueDeep:b("blue-deep","#2276d6"),red:b("red","#ff5a5a"),redDeep:b("red-deep","#b83232"),onGreen:b("on-green","#ffffff"),onBlue:b("on-blue","#ffffff"),onGold:b("on-gold","#ffffff"),textOutline:b("text-outline","0 2px 0 rgba(0,0,0,.45), 0 0 1px rgba(0,0,0,.6)"),well:b("well","rgba(8, 10, 40, 0.6)"),wellSoft:b("well-soft","rgba(0, 0, 0, 0.3)"),wellShadow:b("well-shadow","inset 0 2px 4px rgba(0, 0, 0, 0.4)"),edge:b("edge","rgba(0, 0, 0, 0.35)"),line:b("line","rgba(255, 255, 255, 0.2)"),panelShadow:b("panel-shadow","0 6px 0 rgba(4, 6, 30, 0.55), inset 0 2px 0 rgba(255, 255, 255, 0.12)"),radius:b("radius","18px"),buttonRadius:b("button-radius","14px"),font:b("font","'Baloo 2', 'Nunito', 'Trebuchet MS', system-ui, sans-serif"),fast:b("fast","120ms")},ht={green:[a.green,a.greenDeep,a.onGreen],blue:[a.blue,a.blueDeep,a.onBlue],gold:[a.gold,a.goldDeep,a.onGold],red:[a.red,a.redDeep,"#ffffff"]},E={color:a.text,fontWeight:800,textShadow:a.textOutline,letterSpacing:.2},Fe={boxSizing:"border-box",background:`linear-gradient(180deg, ${a.panel} 0%, ${a.panelDeep} 100%)`,border:`2px solid ${a.panelEdge}`,borderRadius:a.radius,boxShadow:a.panelShadow},U={boxSizing:"border-box",background:a.well,border:`2px solid ${a.panelEdge}`,boxShadow:a.wellShadow,borderRadius:14};function oe(t,e=false,n="md"){let[o,r,i]=e?["#8e95b8","#5b6187","#ffffff"]:ht[t];return {...E,color:i,boxSizing:"border-box",fontFamily:a.font,fontSize:n==="sm"?13:n==="lg"?18:16,border:"none",borderRadius:a.buttonRadius,padding:n==="sm"?"6px 12px":n==="lg"?"13px 22px":"10px 18px",minHeight:n==="sm"?34:n==="lg"?52:44,cursor:e?"default":"pointer",background:`linear-gradient(180deg, ${o} 0%, ${r} 100%)`,boxShadow:`0 4px 0 ${a.edge}, inset 0 2px 0 rgba(255,255,255,.35)`,opacity:e?.75:1,display:"inline-flex",alignItems:"center",justifyContent:"center",gap:8}}function bt(t){let[e,n,o]=ht[t];return {background:`linear-gradient(180deg, ${e} 0%, ${n} 100%)`,color:o,borderRadius:16,boxShadow:`0 4px 0 ${a.edge}, inset 0 2px 0 rgba(255,255,255,.3)`}}var N={...E,fontSize:13,color:a.textDim},gn=["ru","kk","uk","be","ky","uz","tg"];function yn(){if(typeof navigator>"u")return false;let t=(navigator.language||"").toLowerCase();return gn.some(e=>t.startsWith(e))}var wt={title:"Wallet",topUpTitle:"Top up to buy",connectHint:"Connect a wallet to deposit and withdraw",connect:"Connect wallet",notConfigured:"Wallet connection is not set up for this app.",disconnect:"Disconnect",balance:"In-game balance",deposit:"Deposit",withdraw:"Withdraw",network:"Network",token:"Token",amount:"Amount",max:"MAX",minWithdraw:"Minimum to withdraw: {n}",noNetworks:"Crypto is not set up for this app yet.",noTokens:"No tokens on this network.",depositing:"Confirm in your wallet\u2026",withdrawing:"Withdrawing\u2026",confirming:"Waiting for the network to confirm\u2026",loading:"Loading\u2026",doneDeposit:"Deposited \u2014 the balance is updated.",doneWithdraw:"Sent to your wallet.",topUpNeed:"This purchase needs",topUpMore:"more",topUpHint:"Deposit it from your wallet \u2014 the purchase completes by itself once it is credited.",topUpCannot:"{name} cannot be deposited here.",depositAmount:"Deposit {amount} {name}",failed:"Did not go through",debited:"The amount is already debited \u2014 retry this withdrawal, do not request a new one.",tx:"Transaction",backed:"Crypto (withdrawable)",unbacked:"IOU (not backed yet)",total:"Total",iouHint:"IOUs spend in the app like crypto, but you can withdraw only the backed part; the developer backs IOUs later.",backedHint:"All of it is real crypto and can be withdrawn."},wn={title:"\u041A\u043E\u0448\u0435\u043B\u0451\u043A",topUpTitle:"\u041F\u043E\u043F\u043E\u043B\u043D\u0435\u043D\u0438\u0435 \u0434\u043B\u044F \u043F\u043E\u043A\u0443\u043F\u043A\u0438",connectHint:"\u041F\u043E\u0434\u043A\u043B\u044E\u0447\u0438\u0442\u0435 \u043A\u043E\u0448\u0435\u043B\u0451\u043A, \u0447\u0442\u043E\u0431\u044B \u043F\u043E\u043F\u043E\u043B\u043D\u044F\u0442\u044C \u0438 \u0432\u044B\u0432\u043E\u0434\u0438\u0442\u044C",connect:"\u041F\u043E\u0434\u043A\u043B\u044E\u0447\u0438\u0442\u044C \u043A\u043E\u0448\u0435\u043B\u0451\u043A",notConfigured:"\u041F\u043E\u0434\u043A\u043B\u044E\u0447\u0435\u043D\u0438\u0435 \u043A\u043E\u0448\u0435\u043B\u044C\u043A\u0430 \u0434\u043B\u044F \u044D\u0442\u043E\u0433\u043E \u043F\u0440\u0438\u043B\u043E\u0436\u0435\u043D\u0438\u044F \u043D\u0435 \u043D\u0430\u0441\u0442\u0440\u043E\u0435\u043D\u043E.",disconnect:"\u041E\u0442\u043A\u043B\u044E\u0447\u0438\u0442\u044C",balance:"\u0411\u0430\u043B\u0430\u043D\u0441 \u0432 \u043F\u0440\u0438\u043B\u043E\u0436\u0435\u043D\u0438\u0438",deposit:"\u041F\u043E\u043F\u043E\u043B\u043D\u0438\u0442\u044C",withdraw:"\u0412\u044B\u0432\u0435\u0441\u0442\u0438",network:"\u0421\u0435\u0442\u044C",token:"\u0422\u043E\u043A\u0435\u043D",amount:"\u0421\u0443\u043C\u043C\u0430",max:"\u0412\u0421\u0401",minWithdraw:"\u041C\u0438\u043D\u0438\u043C\u0443\u043C \u0434\u043B\u044F \u0432\u044B\u0432\u043E\u0434\u0430: {n}",noNetworks:"\u041A\u0440\u0438\u043F\u0442\u0430 \u0434\u043B\u044F \u044D\u0442\u043E\u0433\u043E \u043F\u0440\u0438\u043B\u043E\u0436\u0435\u043D\u0438\u044F \u0435\u0449\u0451 \u043D\u0435 \u043D\u0430\u0441\u0442\u0440\u043E\u0435\u043D\u0430.",noTokens:"\u0412 \u044D\u0442\u043E\u0439 \u0441\u0435\u0442\u0438 \u043D\u0435\u0442 \u0442\u043E\u043A\u0435\u043D\u043E\u0432.",depositing:"\u041F\u043E\u0434\u0442\u0432\u0435\u0440\u0434\u0438\u0442\u0435 \u0432 \u043A\u043E\u0448\u0435\u043B\u044C\u043A\u0435\u2026",withdrawing:"\u0412\u044B\u0432\u043E\u0434\u0438\u043C\u2026",confirming:"\u0416\u0434\u0451\u043C \u043F\u043E\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043D\u0438\u044F \u0441\u0435\u0442\u0438\u2026",loading:"\u0417\u0430\u0433\u0440\u0443\u0437\u043A\u0430\u2026",doneDeposit:"\u041F\u043E\u043F\u043E\u043B\u043D\u0435\u043D\u043E \u2014 \u0431\u0430\u043B\u0430\u043D\u0441 \u043E\u0431\u043D\u043E\u0432\u043B\u0451\u043D.",doneWithdraw:"\u041E\u0442\u043F\u0440\u0430\u0432\u043B\u0435\u043D\u043E \u043D\u0430 \u0432\u0430\u0448 \u043A\u043E\u0448\u0435\u043B\u0451\u043A.",topUpNeed:"\u0414\u043B\u044F \u043F\u043E\u043A\u0443\u043F\u043A\u0438 \u043D\u0435 \u0445\u0432\u0430\u0442\u0430\u0435\u0442",topUpMore:"",topUpHint:"\u041F\u043E\u043F\u043E\u043B\u043D\u0438\u0442\u0435 \u0441 \u043A\u043E\u0448\u0435\u043B\u044C\u043A\u0430 \u2014 \u043F\u043E\u043A\u0443\u043F\u043A\u0430 \u0437\u0430\u0432\u0435\u0440\u0448\u0438\u0442\u0441\u044F \u0441\u0430\u043C\u0430, \u043A\u0430\u043A \u0442\u043E\u043B\u044C\u043A\u043E \u043F\u043E\u043F\u043E\u043B\u043D\u0435\u043D\u0438\u0435 \u0437\u0430\u0447\u0438\u0441\u043B\u0438\u0442\u0441\u044F.",topUpCannot:"{name} \u0437\u0434\u0435\u0441\u044C \u043F\u043E\u043F\u043E\u043B\u043D\u0438\u0442\u044C \u043D\u0435\u043B\u044C\u0437\u044F.",depositAmount:"\u041F\u043E\u043F\u043E\u043B\u043D\u0438\u0442\u044C \u043D\u0430 {amount} {name}",failed:"\u041D\u0435 \u043F\u0440\u043E\u0448\u043B\u043E",debited:"\u0421\u0443\u043C\u043C\u0430 \u0443\u0436\u0435 \u0441\u043F\u0438\u0441\u0430\u043D\u0430 \u2014 \u043F\u043E\u0432\u0442\u043E\u0440\u0438\u0442\u0435 \u044D\u0442\u043E\u0442 \u0432\u044B\u0432\u043E\u0434, \u043D\u043E\u0432\u044B\u0439 \u043D\u0435 \u0437\u0430\u043F\u0440\u0430\u0448\u0438\u0432\u0430\u0439\u0442\u0435.",tx:"\u0422\u0440\u0430\u043D\u0437\u0430\u043A\u0446\u0438\u044F",backed:"\u041A\u0440\u0438\u043F\u0442\u0430 (\u043C\u043E\u0436\u043D\u043E \u0432\u044B\u0432\u0435\u0441\u0442\u0438)",unbacked:"\u0420\u0430\u0441\u043F\u0438\u0441\u043A\u0438 (\u043F\u043E\u043A\u0430 \u043D\u0435 \u043E\u0431\u0435\u0441\u043F\u0435\u0447\u0435\u043D\u044B)",total:"\u0412\u0441\u0435\u0433\u043E",iouHint:"\u0420\u0430\u0441\u043F\u0438\u0441\u043A\u0438 \u0442\u0440\u0430\u0442\u044F\u0442\u0441\u044F \u0432 \u043F\u0440\u0438\u043B\u043E\u0436\u0435\u043D\u0438\u0438 \u043A\u0430\u043A \u043A\u0440\u0438\u043F\u0442\u0430, \u043D\u043E \u0432\u044B\u0432\u0435\u0441\u0442\u0438 \u043C\u043E\u0436\u043D\u043E \u0442\u043E\u043B\u044C\u043A\u043E \u043E\u0431\u0435\u0441\u043F\u0435\u0447\u0435\u043D\u043D\u0443\u044E \u0447\u0430\u0441\u0442\u044C; \u0440\u0430\u0437\u0440\u0430\u0431\u043E\u0442\u0447\u0438\u043A \u043E\u0431\u0435\u0441\u043F\u0435\u0447\u0438\u0442 \u0440\u0430\u0441\u043F\u0438\u0441\u043A\u0438 \u043F\u043E\u0437\u0436\u0435.",backedHint:"\u042D\u0442\u043E \u043D\u0430\u0441\u0442\u043E\u044F\u0449\u0430\u044F \u043A\u0440\u0438\u043F\u0442\u0430, \u0435\u0451 \u043C\u043E\u0436\u043D\u043E \u0432\u044B\u0432\u0435\u0441\u0442\u0438 \u0446\u0435\u043B\u0438\u043A\u043E\u043C."};function d(t,e){let n=(yn()?wn:wt)[t]??wt[t];for(let[o,r]of Object.entries(e??{}))n=n.replace(`{${o}}`,String(r));return n}var kn=/^(Not enough confirmations|Transaction not found on chain)/,Cn=8,xn=5e3;function vn(t,e){let n=Math.max(0,Math.floor(e||0)),[o="0",r=""]=t.split(".");if(r.length<=n)return t;let i=r.slice(0,n),p=BigInt(o+i)+(/^0*$/.test(r.slice(n))?BigInt(0):BigInt(1));if(n===0)return p.toString();let l=p.toString().padStart(n+1,"0");return `${l.slice(0,-n)}.${l.slice(-n)}`.replace(/\.?0+$/,"")}function Me(t,e=6){let n=Number(t);return Number.isFinite(n)?n.toLocaleString("en-US",{maximumFractionDigits:Math.max(0,e)}).replace(/,/g," "):String(t)}var xt=t=>t.length>14?`${t.slice(0,6)}\u2026${t.slice(-4)}`:t,kt=t=>/^\d+(\.\d+)?$/.test(t)&&Number(t)>0;function vt({client:t,engine:e,onClose:n,style:o,topUp:r}){let[,i]=react$1.useReducer(g=>g+1,0),[p,l]=react$1.useState(false),[c,y]=react$1.useState({}),[m,k]=react$1.useState({}),[w,T]=react$1.useState("deposit"),[u,A]=react$1.useState(""),[C,F]=react$1.useState(""),[P,O]=react$1.useState(""),[$,Z]=react$1.useState(false),[q,z]=react$1.useState(null),[he,re]=react$1.useState(false);react$1.useEffect(()=>{let g=true;return (async()=>{let[D]=await Promise.all([t.blockchain.getDefinitions(),t.cache.ensureState(["InventoryV2","Blockchain"])]);if(!g||(l(true),!D.ok))return;let v={};for(let[L,G]of Object.entries(D.data.Blockchain?.Networks??{}))G.Type===e.networkType&&(v[L]=G);y(v);let V=D.data.CryptoCurrencies??{};k(V);let J=r?V[r.currencyID]?.Networks?.find(L=>!!L.NetworkID&&!!v[L.NetworkID]&&!!L.ContractAddress&&L.DepositsEnabled!==false&&v[L.NetworkID]?.DepositsEnabled!==false)?.NetworkID:null;A(J??Object.keys(v)[0]??"");})(),()=>{g=false;}},[t,e.networkType]),react$1.useEffect(()=>t.on("user:anyUpdated",i),[t]);let W=react$1.useMemo(()=>Object.entries(m).filter(([,g])=>g.Networks?.some(D=>D.NetworkID===u&&!!D.ContractAddress)),[m,u]);react$1.useEffect(()=>{let g=W[0]?.[0]??"";F(D=>r?r.currencyID:W.some(([v])=>v===D)?D:g);},[W,r]);let I=u?c[u]:void 0,M=C?m[C]:void 0,x=M?.Networks?.find(g=>g.NetworkID===u),K=C?t.data.user.getCryptoCurrencyAmount(C):"0",j=M?.DisplayName??C,ie=C?M?.UnbackedRewardCurrencyID||`${C}_IOU`:"",Dt=ie&&Number(t.data.user.state?.InventoryV2?.VirtualCurrencies?.[ie]?.Amount??0)||0,Et=!!ie&&t.data.user.state?.InventoryV2?.VirtualCurrencies?.[ie]!=null,Oe=M?.DisplayDecimals??6,ae=!!e.address,Ge=!!r&&!!x?.ContractAddress&&C===r.currencyID,be=r&&x?vn(r.amount,x.Decimals??18):"",ke=r?m[r.currencyID]?.DisplayName??r.currencyID:"",_e=Number(x?.MinWithdraw??0);async function Ce(g,D){Z(true),z(null);try{let v=await D();return z({tab:g,res:v}),v.ok&&O(""),v}finally{Z(false);}}async function $e(g){let D=await qe();if(!D)return f("approve",d("noNetworks"));let v=await e.deposit({...g,network:D});if(v.ok||v.stage!=="report"||!v.onChainTxHash)return v;let V=v.onChainTxHash,J=v.error;re(true);try{for(let L=1;L<=Cn&&kn.test(J);L++){await new Promise(Wt=>setTimeout(Wt,xn));let G=await t.blockchain.depositToken(u,V);if(G.ok)return {ok:!0,onChainTxHash:V,data:G.data};if(/^Transaction hash already used/.test(G.error))return await t.cache.ensureState(["InventoryV2"],{force:!0}),{ok:!0,onChainTxHash:V,data:null};J=G.error;}}finally{re(false);}return {...v,error:J}}async function qe(){let g=await t.blockchain.getDefinitions({forceRefresh:true});return g.ok?g.data.Blockchain?.Networks?.[u]??null:null}async function Tt(){let g=await qe();return g?e.withdraw({network:g,networkID:u,currencyID:C,amount:P}):f("request",d("noNetworks"))}let xe=he?d("confirming"):w==="withdraw"&&!r?d("withdrawing"):d("depositing"),It=ae?jsxRuntime.jsxs("div",{style:{...U,display:"flex",alignItems:"center",gap:10,padding:"8px 8px 8px 12px"},children:[jsxRuntime.jsx("span",{style:Tn,"aria-hidden":true}),jsxRuntime.jsxs("div",{style:{display:"grid",flex:1,minWidth:0},children:[jsxRuntime.jsx("span",{style:{...E,fontSize:15,fontFamily:"ui-monospace, Consolas, monospace"},children:xt(e.address)}),I?jsxRuntime.jsx("span",{style:{...N,fontSize:12},children:I.DisplayName??u}):null]}),jsxRuntime.jsx("button",{type:"button",className:"idos-press",style:In,onClick:e.disconnect,children:d("disconnect")})]}):jsxRuntime.jsxs("div",{style:{display:"grid",gap:8},children:[jsxRuntime.jsx("span",{style:N,children:d("connectHint")}),e.connectChoices.length===0?jsxRuntime.jsx("div",{style:{...U,padding:"10px 12px",...N},children:d("notConfigured")}):e.connectChoices.length===1?jsxRuntime.jsx("button",{type:"button",className:"idos-press",style:{...oe("blue",false,"lg"),width:"100%"},onClick:e.connectChoices[0].connect,children:d("connect")}):e.connectChoices.map(g=>jsxRuntime.jsxs("button",{type:"button",className:"idos-press",style:Nn,onClick:g.connect,children:[jsxRuntime.jsx("span",{style:{flex:1,textAlign:"left"},children:g.label}),jsxRuntime.jsx("span",{"aria-hidden":true,style:{color:a.textDim},children:"\u203A"})]},g.key))]}),ze=C?jsxRuntime.jsx(Sn,{icon:jsxRuntime.jsx(Wn,{assets:M?.AssetPaths,name:j}),name:j,backed:Number(K)||0,unbacked:Dt,hasIou:Et,decimals:Oe}):null,Nt=jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[Object.keys(c).length>1?jsxRuntime.jsx(Ct,{caption:d("network"),value:u,onChange:A,options:Object.entries(c).map(([g,D])=>[g,D.DisplayName??g])}):null,W.length===0?jsxRuntime.jsx("div",{style:{...U,padding:"10px 12px",...N},children:d("noTokens")}):W.length>1?jsxRuntime.jsx(Ct,{caption:d("token"),value:C,onChange:F,options:W.map(([g,D])=>[g,D.DisplayName??g])}):null]}),At=jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[jsxRuntime.jsx(Rn,{value:w,onChange:g=>{T(g),z(null),O("");}}),Nt,jsxRuntime.jsxs("div",{style:{display:"grid",gap:6},children:[jsxRuntime.jsx("span",{style:N,children:d("amount")}),jsxRuntime.jsxs("div",{style:{...U,display:"flex",alignItems:"center",gap:8,padding:"4px 6px 4px 14px"},children:[jsxRuntime.jsx("input",{style:Pn,inputMode:"decimal",placeholder:"0.0",value:P,onChange:g=>O(g.target.value.replace(",","."))}),jsxRuntime.jsx("span",{style:{...N,fontSize:14},children:j}),w==="withdraw"&&Number(K)>0?jsxRuntime.jsx("button",{type:"button",className:"idos-press",style:oe("gold",false,"sm"),onClick:()=>O(String(K)),children:d("max")}):null]}),w==="withdraw"&&_e>0?jsxRuntime.jsx("span",{style:{...N,fontSize:12},children:d("minWithdraw",{n:Me(_e,Oe)})}):null]}),w==="deposit"?jsxRuntime.jsx(He,{tone:"green",busy:$,busyText:xe,disabled:!ae||!x?.ContractAddress||!kt(P),onClick:()=>{!I||!x||Ce("deposit",()=>$e({network:I,binding:x,currencyID:C,amount:P}));},children:d("deposit")}):jsxRuntime.jsx(He,{tone:"blue",busy:$,busyText:xe,disabled:!ae||!C||!kt(P),onClick:()=>{I&&Ce("withdraw",()=>Tt());},children:d("withdraw")})]}),Pt=r?jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[jsxRuntime.jsx("div",{style:{...bt("gold"),padding:"12px 14px",display:"grid",gap:4},children:Ge?jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[jsxRuntime.jsx("span",{style:{...E,color:"inherit",fontSize:13,opacity:.9},children:d("topUpNeed")}),jsxRuntime.jsxs("span",{style:{...E,color:"inherit",fontSize:24,lineHeight:1.1},children:[be," ",ke," ",d("topUpMore")]}),jsxRuntime.jsx("span",{style:{fontSize:13,fontWeight:600,opacity:.95},children:d("topUpHint")})]}):jsxRuntime.jsx("span",{style:{...E,color:"inherit",fontSize:15},children:p?d("topUpCannot",{name:ke}):d("loading")})}),ze,jsxRuntime.jsx(He,{tone:"green",busy:$,busyText:xe,disabled:!ae||!Ge,onClick:()=>{!I||!x||Ce("deposit",()=>$e({network:I,binding:x,currencyID:C,amount:be})).then(g=>{g.ok&&r.onDone(true);});},children:d("depositAmount",{amount:be,name:ke})})]}):null,Ke=!!n;return jsxRuntime.jsxs("div",{style:{...En,...Ke?{...Fe,padding:16,width:360,maxWidth:"100%",maxHeight:"80vh",overflow:"auto"}:{},...o},children:[jsxRuntime.jsx("style",{children:Dn}),Ke?jsxRuntime.jsxs("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between"},children:[jsxRuntime.jsx("span",{style:{...E,fontSize:20},children:r?d("topUpTitle"):d("title")}),jsxRuntime.jsx("button",{type:"button",className:"idos-press",style:An,onClick:n,"aria-label":"\u2715",children:"\u2715"})]}):null,It,p?Object.keys(c).length===0?jsxRuntime.jsx("div",{style:{...U,padding:"12px 14px",...N},children:d("noNetworks")}):r?Pt:jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[ze,At]}):jsxRuntime.jsx("div",{style:{...N,textAlign:"center",padding:12},children:d("loading")}),q?jsxRuntime.jsx(Bn,{tab:q.tab,result:q.res}):null]})}var Dn="@keyframes idosw-spin { to { transform: rotate(360deg) } }",En={pointerEvents:"auto",color:a.text,fontFamily:a.font,display:"flex",flexDirection:"column",gap:12,boxSizing:"border-box",width:"100%",minWidth:0,maxWidth:"100%"},Tn={width:10,height:10,borderRadius:"50%",background:a.green,boxShadow:`0 0 0 3px color-mix(in srgb, ${a.green} 30%, transparent)`,flex:"none"},In={...E,fontFamily:a.font,fontSize:13,color:a.textDim,background:"transparent",border:`2px solid ${a.line}`,borderRadius:10,padding:"5px 10px",cursor:"pointer"},Nn={...U,...E,fontFamily:a.font,fontSize:15,display:"flex",alignItems:"center",gap:10,padding:"10px 12px",cursor:"pointer",width:"100%"},An={...oe("red",false,"sm"),width:36,minHeight:36,padding:0,borderRadius:"50%"},Pn={...E,fontFamily:a.font,fontSize:22,flex:1,minWidth:0,background:"transparent",border:"none",outline:"none",padding:"6px 0"};function Wn({assets:t,name:e}){let n=t?.Default||t?.Icon||"",o={width:40,height:40,borderRadius:"50%",flex:"none",display:"grid",placeItems:"center",background:`linear-gradient(180deg, ${a.gold}, ${a.goldDeep})`,boxShadow:`0 3px 0 ${a.edge}`,overflow:"hidden",fontSize:22};return /^(https?:)?\/\/|^\//.test(n)?jsxRuntime.jsx("span",{style:o,children:jsxRuntime.jsx("img",{src:n,alt:"",style:{width:"100%",height:"100%",objectFit:"cover"}})}):jsxRuntime.jsx("span",{style:{...o,...E,fontSize:20},"aria-hidden":true,children:(e.trim()[0]??"?").toUpperCase()})}function Sn({icon:t,name:e,backed:n,unbacked:o,hasIou:r,decimals:i}){let[p,l]=react$1.useState(false),c=(y,m,k=false)=>jsxRuntime.jsxs("div",{style:{display:"flex",justifyContent:"space-between",gap:16},children:[jsxRuntime.jsx("span",{style:{...N,fontSize:13},children:y}),jsxRuntime.jsx("span",{style:{...E,fontSize:14,color:k?a.textDim:a.text},children:Me(m,i)})]});return jsxRuntime.jsxs("div",{style:{position:"relative"},onMouseEnter:()=>l(true),onMouseLeave:()=>l(false),children:[jsxRuntime.jsxs("button",{type:"button","aria-expanded":p,onClick:()=>l(y=>!y),onBlur:()=>l(false),style:{...U,display:"flex",alignItems:"center",gap:12,padding:"10px 14px",width:"100%",cursor:"pointer",font:"inherit",textAlign:"left"},children:[t,jsxRuntime.jsxs("span",{style:{display:"grid",minWidth:0,flex:1},children:[jsxRuntime.jsx("span",{style:{...N,fontSize:12},children:d("balance")}),jsxRuntime.jsxs("span",{style:{...E,fontSize:22,lineHeight:1.1},children:[Me(n+o,i)," ",jsxRuntime.jsx("span",{style:{fontSize:15,color:a.textDim},children:e})]})]}),jsxRuntime.jsx("span",{"aria-hidden":true,style:{...N,fontSize:16},children:"\u24D8"})]}),p?jsxRuntime.jsxs("div",{role:"tooltip",style:{...Fe,position:"absolute",left:0,right:0,top:"calc(100% + 6px)",zIndex:5,padding:"10px 12px",display:"grid",gap:6},children:[c(d("backed"),n),r?c(d("unbacked"),o,o===0):null,jsxRuntime.jsx("div",{style:{height:1,background:a.line}}),c(d("total"),n+o),jsxRuntime.jsx("span",{style:{fontSize:12,color:a.textDim,lineHeight:1.35},children:r?d("iouHint"):d("backedHint")})]}):null]})}function Rn({value:t,onChange:e}){let n=[["deposit",d("deposit")],["withdraw",d("withdraw")]];return jsxRuntime.jsx("div",{role:"tablist",style:{display:"flex",gap:6,padding:4,borderRadius:16,background:a.wellSoft},children:n.map(([o,r])=>{let i=o===t;return jsxRuntime.jsx("button",{role:"tab","aria-selected":i,type:"button",className:"idos-press",onClick:()=>!i&&e(o),style:{...E,fontFamily:a.font,fontSize:15,flex:1,border:"none",borderRadius:12,padding:"9px 14px",cursor:"pointer",color:i?a.onBlue:a.textDim,background:i?`linear-gradient(180deg, ${a.blue}, ${a.blueDeep})`:"transparent",boxShadow:i?`0 3px 0 ${a.edge}, inset 0 2px 0 rgba(255,255,255,.3)`:"none",transition:`background ${a.fast} ease`},children:r},o)})})}function Ct({caption:t,value:e,onChange:n,options:o}){return jsxRuntime.jsxs("label",{style:{display:"grid",gap:6},children:[jsxRuntime.jsx("span",{style:N,children:t}),jsxRuntime.jsxs("span",{style:{position:"relative",display:"block"},children:[jsxRuntime.jsx("select",{value:e,onChange:r=>n(r.target.value),style:{...U,...E,fontFamily:a.font,fontSize:15,width:"100%",padding:"10px 36px 10px 12px",appearance:"none",WebkitAppearance:"none",cursor:"pointer",outline:"none"},children:o.map(([r,i])=>jsxRuntime.jsx("option",{value:r,style:{color:"#111"},children:i},r))}),jsxRuntime.jsx("span",{"aria-hidden":true,style:{position:"absolute",right:14,top:"50%",transform:"translateY(-50%)",color:a.textDim,pointerEvents:"none"},children:"\u25BE"})]})]})}function He({tone:t,busy:e,busyText:n,disabled:o,onClick:r,children:i}){return jsxRuntime.jsx("button",{type:"button",className:"idos-press",disabled:o||e,onClick:r,style:{...oe(t,o&&!e,"lg"),width:"100%"},children:e?jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[jsxRuntime.jsx("span",{"aria-hidden":true,style:{width:18,height:18,borderRadius:"50%",border:"3px solid rgba(255,255,255,.35)",borderTopColor:"#fff",animation:"idosw-spin .8s linear infinite"}}),n]}):i})}function Bn({tab:t,result:e}){let n=e.ok,o={borderRadius:14,padding:"10px 12px",display:"grid",gap:4,background:`color-mix(in srgb, ${n?a.green:a.red} 22%, transparent)`,border:`2px solid color-mix(in srgb, ${n?a.green:a.red} 60%, transparent)`,wordBreak:"break-word"};return n?jsxRuntime.jsxs("div",{style:o,role:"status",children:[jsxRuntime.jsxs("span",{style:{...E,fontSize:15},children:["\u2713 ",t==="withdraw"?d("doneWithdraw"):d("doneDeposit")]}),jsxRuntime.jsxs("span",{style:{...N,fontSize:12},children:[d("tx"),": ",xt(e.onChainTxHash)]})]}):jsxRuntime.jsxs("div",{style:o,role:"alert",children:[jsxRuntime.jsxs("span",{style:{...E,fontSize:15},children:["\u2715 ",d("failed")]}),jsxRuntime.jsx("span",{style:{fontSize:13,color:a.text,opacity:.9},children:e.error}),e.titleTransactionID?jsxRuntime.jsx("span",{style:{...N,fontSize:12},children:d("debited")}):null]})}function $n(t){let{client:e,walletConnectProjectId:n,appName:o,onClose:r,style:i,topUp:p}=t,[l,c]=react$1.useState(n??"");react$1.useEffect(()=>{if(n)return;let m=true;return (async()=>{let k=await e.blockchain.getDefinitions();if(!m||!k.ok)return;let w=k.data.Blockchain?.WalletLogin?.WalletConnectProjectId;w&&c(w);})(),()=>{m=false;}},[e,n]);let y=react$1.useMemo(()=>Ee({walletConnectProjectId:l||void 0,appName:o}),[l,o]);return jsxRuntime.jsx(X,{wagmiConfig:y,children:jsxRuntime.jsx(qn,{client:e,onClose:r,style:i,topUp:p})})}function qn({client:t,onClose:e,style:n,topUp:o}){let r=Re(t,t.titleID),{address:i,isConnected:p,chainId:l}=wagmi.useAccount(),{connect:c,connectors:y}=wagmi.useConnect(),{disconnect:m}=wagmi.useDisconnect(),{switchChainAsync:k}=wagmi.useSwitchChain();async function w(u){if(!u||l===u)return true;try{return await k({chainId:u}),!0}catch{return false}}let T={networkType:"EVM",address:p&&i?i:null,connectChoices:y.map(u=>({key:u.uid,label:u.name,connect:()=>c({connector:u})})),disconnect:()=>m(),deposit:async({network:u,binding:A,amount:C})=>{if(!A.ContractAddress)return f("approve","This token cannot be deposited.");if(!await w(u.ChainID))return f("approve",`Switch your wallet to chain ${u.ChainID} to continue.`);let F;try{F=viem.parseUnits(C,A.Decimals??18);}catch{return f("approve","Invalid amount.")}return r.depositToken({network:u,tokenAddress:A.ContractAddress,amount:F})},withdraw:async({network:u,networkID:A,currencyID:C,amount:F})=>r.account?await w(u.ChainID)?r.withdrawToken({currencyID:C,networkID:A,walletAddress:r.account,amount:F}):f("request",`Switch your wallet to chain ${u.ChainID} to continue.`):f("request","Wallet not connected.")};return jsxRuntime.jsx(vt,{client:t,engine:T,onClose:e,style:n,topUp:o})}function jn(t){let[e,n]=react$1.useState(null);return react$1.useEffect(()=>{if(R()||ot())return;let o=null;return t.checkout.setTopUpHandler(r=>new Promise(i=>{o?.(false);let p=false,l=c=>{p||(p=true,o===l&&(o=null),n(y=>y?.onDone===l?null:y),i(c));};o=l,n({currencyID:r.currencyID,amount:r.missingAmount??String(r.missing),onDone:l});})),()=>{t.checkout.setTopUpHandler(null),o?.(false);}},[t]),e}
|
|
2
|
+
exports.DEFAULT_EVM_CHAINS=Ze;exports.IDosGamesWalletProvider=X;exports.WalletLogin=on;exports.WalletLoginButton=yt;exports.WalletPanel=$n;exports.arbitrum=pe;exports.base=de;exports.bsc=le;exports.chainById=St;exports.createEvmWalletConfig=Ee;exports.idosChains=je;exports.mainnet=se;exports.optimism=ue;exports.polygon=ce;exports.polygonAmoy=fe;exports.sepolia=me;exports.useEvmBridge=Re;exports.useEvmBridgeClients=ye;exports.useWalletTopUp=jn;
|
package/dist/react/index.d.cts
CHANGED
|
@@ -7,6 +7,8 @@ import { ReactNode, CSSProperties } from 'react';
|
|
|
7
7
|
import { QueryClient } from '@tanstack/react-query';
|
|
8
8
|
import { ClientState, DepositTokenResponse, DepositNFTResponse, TokenWithdrawalResponse, NFTWithdrawalResponse, IDosGamesClient, PlayAccessStatus } from '@idosgames/core';
|
|
9
9
|
import { b as DepositTokenEvmParams, a as DepositNftEvmParams, d as WithdrawTokenEvmParams, W as WithdrawNftEvmParams, E as EvmBridgeClients } from '../withdraw-DttqktSS.cjs';
|
|
10
|
+
import { W as WalletTopUpRequest } from '../topUp-CCNQcHcH.cjs';
|
|
11
|
+
export { u as useWalletTopUp } from '../topUp-CCNQcHcH.cjs';
|
|
10
12
|
|
|
11
13
|
/**
|
|
12
14
|
* The EVM chains a game supports out of the box. Both the sign-in button and the in-game wallet
|
|
@@ -166,6 +168,11 @@ interface WalletPanelProps {
|
|
|
166
168
|
onClose?: () => void;
|
|
167
169
|
/** Overrides for the outer card container, merged over the defaults key by key. */
|
|
168
170
|
style?: CSSProperties;
|
|
171
|
+
/**
|
|
172
|
+
* Top up for a purchase the engine refused for a crypto shortfall: the panel shows only this
|
|
173
|
+
* currency and the missing amount, then calls `topUp.onDone(true)` (see `useWalletTopUp`).
|
|
174
|
+
*/
|
|
175
|
+
topUp?: WalletTopUpRequest;
|
|
169
176
|
}
|
|
170
177
|
/**
|
|
171
178
|
* Public entry: the in-game wallet panel wrapped in its own wagmi/react-query provider.
|
|
@@ -175,4 +182,4 @@ interface WalletPanelProps {
|
|
|
175
182
|
*/
|
|
176
183
|
declare function WalletPanel(props: WalletPanelProps): ReactNode;
|
|
177
184
|
|
|
178
|
-
export { DEFAULT_EVM_CHAINS, type EvmBridge, type EvmWalletConfigOptions, IDosGamesWalletProvider, type IDosGamesWalletProviderProps, WalletLogin, WalletLoginButton, type WalletLoginButtonProps, type WalletLoginProps, WalletPanel, type WalletPanelProps, createEvmWalletConfig, useEvmBridge, useEvmBridgeClients };
|
|
185
|
+
export { DEFAULT_EVM_CHAINS, type EvmBridge, type EvmWalletConfigOptions, IDosGamesWalletProvider, type IDosGamesWalletProviderProps, WalletLogin, WalletLoginButton, type WalletLoginButtonProps, type WalletLoginProps, WalletPanel, type WalletPanelProps, WalletTopUpRequest, createEvmWalletConfig, useEvmBridge, useEvmBridgeClients };
|
package/dist/react/index.d.ts
CHANGED
|
@@ -7,6 +7,8 @@ import { ReactNode, CSSProperties } from 'react';
|
|
|
7
7
|
import { QueryClient } from '@tanstack/react-query';
|
|
8
8
|
import { ClientState, DepositTokenResponse, DepositNFTResponse, TokenWithdrawalResponse, NFTWithdrawalResponse, IDosGamesClient, PlayAccessStatus } from '@idosgames/core';
|
|
9
9
|
import { b as DepositTokenEvmParams, a as DepositNftEvmParams, d as WithdrawTokenEvmParams, W as WithdrawNftEvmParams, E as EvmBridgeClients } from '../withdraw-BPbJQVNt.js';
|
|
10
|
+
import { W as WalletTopUpRequest } from '../topUp-CCNQcHcH.js';
|
|
11
|
+
export { u as useWalletTopUp } from '../topUp-CCNQcHcH.js';
|
|
10
12
|
|
|
11
13
|
/**
|
|
12
14
|
* The EVM chains a game supports out of the box. Both the sign-in button and the in-game wallet
|
|
@@ -166,6 +168,11 @@ interface WalletPanelProps {
|
|
|
166
168
|
onClose?: () => void;
|
|
167
169
|
/** Overrides for the outer card container, merged over the defaults key by key. */
|
|
168
170
|
style?: CSSProperties;
|
|
171
|
+
/**
|
|
172
|
+
* Top up for a purchase the engine refused for a crypto shortfall: the panel shows only this
|
|
173
|
+
* currency and the missing amount, then calls `topUp.onDone(true)` (see `useWalletTopUp`).
|
|
174
|
+
*/
|
|
175
|
+
topUp?: WalletTopUpRequest;
|
|
169
176
|
}
|
|
170
177
|
/**
|
|
171
178
|
* Public entry: the in-game wallet panel wrapped in its own wagmi/react-query provider.
|
|
@@ -175,4 +182,4 @@ interface WalletPanelProps {
|
|
|
175
182
|
*/
|
|
176
183
|
declare function WalletPanel(props: WalletPanelProps): ReactNode;
|
|
177
184
|
|
|
178
|
-
export { DEFAULT_EVM_CHAINS, type EvmBridge, type EvmWalletConfigOptions, IDosGamesWalletProvider, type IDosGamesWalletProviderProps, WalletLogin, WalletLoginButton, type WalletLoginButtonProps, type WalletLoginProps, WalletPanel, type WalletPanelProps, createEvmWalletConfig, useEvmBridge, useEvmBridgeClients };
|
|
185
|
+
export { DEFAULT_EVM_CHAINS, type EvmBridge, type EvmWalletConfigOptions, IDosGamesWalletProvider, type IDosGamesWalletProviderProps, WalletLogin, WalletLoginButton, type WalletLoginButtonProps, type WalletLoginProps, WalletPanel, type WalletPanelProps, WalletTopUpRequest, createEvmWalletConfig, useEvmBridge, useEvmBridgeClients };
|