@idosgames/wallet 0.4.0 → 0.4.1
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/{chunk-EAKPNSVN.js → chunk-2PEE5F3U.js} +1 -1
- package/dist/chunk-IEWZH6XD.js +2 -0
- package/dist/{chunk-JDC3JPIT.js → chunk-RTP7IL25.js} +1 -1
- package/dist/index.cjs +2 -2
- package/dist/index.js +1 -1
- package/dist/react/index.cjs +2 -2
- package/dist/react/index.js +1 -1
- package/dist/react/lazyIndex.cjs +1 -1
- package/dist/react/lazyIndex.js +1 -1
- package/dist/react/solanaIndex.cjs +1 -1
- package/dist/react/solanaIndex.js +1 -1
- package/package.json +2 -2
- package/dist/chunk-OZXERZ5Q.js +0 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
import {e,g,b,a,h,c}from'./chunk-
|
|
1
|
+
import {e,g,b,a,h,c}from'./chunk-IEWZH6XD.js';import {normalizeBlockchainCategory}from'@idosgames/core';async function T(i){let{client:t,adapter:n,network:g$1,mint:m,amountRaw:o,titleID:d,category:s}=i;if(e())return g("deposit-onchain");let e$1=t.auth.context?.userID;if(!e$1)return b("deposit-onchain","Not logged in.");if(o<=0n)return b("deposit-onchain","Amount must be positive.");let l;try{l=await n.depositSpl({mint:m,amountRaw:o,userID:e$1,titleID:d,category:normalizeBlockchainCategory(s)});}catch(c){return b("deposit-onchain",a(c))}let r=await t.blockchain.depositToken(g$1.NetworkID??"",l);return r.ok?{ok:true,onChainTxHash:l,data:r.data}:b("report",r.error,{onChainTxHash:l})}async function D(i){let{client:t,adapter:n,currencyID:g$1,networkID:m,walletAddress:o,amount:d,category:s}=i;if(e())return g("request");let e$1=await t.blockchain.requestTokenWithdrawal(g$1,m,o,d,s);if(!e$1.ok)return b("request",e$1.error);let l=e$1.data.SolanaSignature,r=e$1.data.TitleTransactionID??void 0;if(!l)return b("request","Withdrawal response carried no Solana signature.",{titleTransactionID:r});let c;try{c=await n.submitWithdrawal(l);}catch(S){return b("withdraw-onchain",a(S),{titleTransactionID:r})}if(!r)return b("confirm","Missing TitleTransactionID.",{onChainTxHash:c});let w=await t.blockchain.confirmWithdrawal(r,c);return w.ok?{ok:true,onChainTxHash:c,data:e$1.data}:b("confirm",w.error,{onChainTxHash:c,titleTransactionID:r})}async function W(i){let{client:t,networkID:n,walletAddress:g,signMessage:m}=i;if(e())return h("challenge");let o=await t.auth.requestWalletChallenge(g,n);if(!o.ok)return c("challenge",o.error);let d;try{let e=await m(new TextEncoder().encode(o.data.Message));d=I(e);}catch(e){return c("sign",a(e))}let s=await t.auth.loginWithWallet(g,n,d);return s.ok?{ok:true,data:s.data}:c("login",s.error)}function I(i){let t="0x";for(let n of i)t+=n.toString(16).padStart(2,"0");return t}export{T as a,D as b,W as c};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import {BaseError}from'viem';import {PLATFORM_ORIGINS}from'@idosgames/core';function x(e){return e instanceof BaseError?e.shortMessage:e instanceof Error?e.message:String(e)}function a(e,t,n){return {ok:false,stage:e,error:t,...n}}function r(e,t){return {ok:false,stage:e,error:t}}var o="WALLET_USE_SITE_PANEL";function k(){if(typeof window>"u")return false;try{return window.self!==window.top}catch{return true}}function L(){if(typeof window>"u")return false;try{return window.parent!==window.top}catch{return true}}function C(e){return a(e,o)}function v(e){return r(e,o)}var l=PLATFORM_ORIGINS;function B(e){if(typeof window>"u")return ()=>{};let t=n=>{l.includes(n.origin)&&n.data?.type==="IDOS_WALLET_BALANCE_CHANGED"&&e();};return window.addEventListener("message",t),()=>window.removeEventListener("message",t)}var p={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"}}},c={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"}}},u={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"}}},d={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"}}},m={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"}}},g={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"}}},h={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"}}},f={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"}}},y={mainnet:p,bsc:c,polygon:u,base:d,arbitrum:m,optimism:g,sepolia:h,polygonAmoy:f};function T(e){return Object.values(y).find(t=>t.id===e)}function A(e){return {...e,chainNamespace:"eip155",caipNetworkId:`eip155:${e.id}`}}var F={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"},W={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"};
|
|
2
|
+
export{x as a,a as b,r as c,o as d,k as e,L as f,C as g,v as h,B as i,p as j,c as k,u as l,d as m,m as n,g as o,h as p,f as q,y as r,T as s,A as t,F as u,W as v};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import {e,g,b as b$1,a,h as h$1,c}from'./chunk-OZXERZ5Q.js';import {encodeAbiParameters,parseUnits}from'viem';import {normalizeBlockchainCategory}from'@idosgames/core';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:[]}],C=[{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:[]}],v=[{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"}]}],I=[{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"}]}],E=[{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 D(e,t,n){return encodeAbiParameters([{type:"string"},{type:"string"},{type:"string"}],[e,t,normalizeBlockchainCategory(n)])}async function h(e,t){let{walletClient:n,publicClient:i,account:s}=e,o=await n.writeContract({address:t.address,abi:t.abi,functionName:t.functionName,args:t.args,account:s,chain:n.chain,value:t.value});if((await i.waitForTransactionReceipt({hash:o})).status==="reverted")throw new Error(`On-chain transaction reverted (${o}).`);return o}function x(e){let t=e.RewardPoolAddress;return t||null}async function T(e,t,n,i){return await e.publicClient.readContract({address:t,abi:v,functionName:"allowance",args:[e.account,n]})>=i?null:h(e,{address:t,abi:v,functionName:"approve",args:[n,i]})}async function N(e$1){let{client:t,clients:n,network:i,tokenAddress:s,amount:o,titleID:u,category:c}=e$1;if(e())return g("approve");let r=t.auth.context?.userID;if(!r)return b$1("approve","Not logged in.");let l=x(i);if(!l)return b$1("approve","Network has no RewardPoolAddress.");if(o<=0n)return b$1("approve","Amount must be positive.");try{await T(n,s,l,o);}catch(d){return b$1("approve",a(d))}let p;try{p=await h(n,{address:l,abi:b,functionName:"depositERC20",args:[s,o,r,u,c??""]});}catch(d){return b$1("deposit-onchain",a(d))}let m=await t.blockchain.depositToken(i.NetworkID??"",p);return m.ok?{ok:true,onChainTxHash:p,data:m.data}:b$1("report",m.error,{onChainTxHash:p})}async function S(e$1){let{clients:t,poolAddress:n,tokenAddress:i,amount:s,userID:o,titleID:u,category:c}=e$1;if(e())return g("approve");if(!o)return b$1("approve","userID is required.");if(s<=0n)return b$1("approve","Amount must be positive.");try{await T(t,i,n,s);}catch(r){return b$1("approve",a(r))}try{let r=await h(t,{address:n,abi:b,functionName:"depositERC20",args:[i,s,o,u,c??""]});return {ok:!0,onChainTxHash:r,data:{txHash:r}}}catch(r){return b$1("deposit-onchain",a(r))}}async function O(e$1){let{client:t,clients:n,network:i,nftContractAddress:s,tokenId:o,amount:u,titleID:c,category:r}=e$1;if(e())return g("deposit-onchain");let l=t.auth.context?.userID;if(!l)return b$1("deposit-onchain","Not logged in.");let p=x(i);if(!p)return b$1("deposit-onchain","Network has no RewardPoolAddress.");if(u<=0n)return b$1("deposit-onchain","Amount must be positive.");let m=D(l,c,r),d;try{d=await h(n,{address:s,abi:I,functionName:"safeTransferFrom",args:[n.account,p,o,u,m]});}catch(A){return b$1("deposit-onchain",a(A))}let y=await t.blockchain.depositNFT(i.NetworkID??"",d);return y.ok?{ok:true,onChainTxHash:d,data:y.data}:b$1("report",y.error,{onChainTxHash:d})}async function q(e$1){let{client:t,clients:n,network:i,nftContractAddress:s,tokenId:o,titleID:u,category:c}=e$1;if(e())return g("deposit-onchain");let r=t.auth.context?.userID;if(!r)return b$1("deposit-onchain","Not logged in.");let l=x(i);if(!l)return b$1("deposit-onchain","Network has no RewardPoolAddress.");let p=D(r,u,c),m;try{m=await h(n,{address:s,abi:E,functionName:"safeTransferFrom",args:[n.account,l,o,p]});}catch(y){return b$1("deposit-onchain",a(y))}let d=await t.blockchain.depositNFT(i.NetworkID??"",m);return d.ok?{ok:true,onChainTxHash:m,data:d.data}:b$1("report",d.error,{onChainTxHash:m})}function P(e){return (e.Splits??[]).map(t=>({to:t.To,amount:BigInt(t.Amount??"0")}))}async function B(e,t){return h(e,{address:t.ContractAddress,abi:b,functionName:"withdrawERC20",args:[t.TokenAddress,t.WalletAddress,BigInt(t.Amount??"0"),BigInt(t.BurnAmount??"0"),P(t),BigInt(t.Nonce??"0"),t.Signature??"0x",t.UserID??"",t.TitleID??"",t.Category??"",BigInt(t.Deadline??"0")]})}async function R(e,t){return h(e,{address:t.ContractAddress,abi:C,functionName:"withdrawERC1155Mint",args:[t.TokenAddress,t.WalletAddress,BigInt(t.TokenId??"0"),BigInt(t.Amount??"0"),P(t),BigInt(t.Nonce??"0"),t.Signature??"0x",t.UserID??"",t.TitleID??"",t.Category??"",BigInt(t.Deadline??"0")]})}async function L(e,t){return h(e,{address:t.ContractAddress,abi:C,functionName:"withdrawERC721Mint",args:[t.TokenAddress,t.WalletAddress,BigInt(t.TokenId??"0"),BigInt(t.Nonce??"0"),t.Signature??"0x",t.UserID??"",t.TitleID??"",t.Category??"",BigInt(t.Deadline??"0")]})}async function U(e$1){let{client:t,clients:n,currencyID:i,networkID:s,walletAddress:o,amount:u,category:c}=e$1;if(e())return g("request");let r=await t.blockchain.requestTokenWithdrawal(i,s,o,u,c);if(!r.ok)return b$1("request",r.error);let l=r.data.EvmSignature,p=r.data.TitleTransactionID??void 0;if(!l)return b$1("request","Withdrawal response carried no EVM signature.",{titleTransactionID:p});let m;try{m=await B(n,l);}catch(y){return b$1("withdraw-onchain",a(y),{titleTransactionID:p})}let d=await H(t,p,m);return d.ok?{ok:true,onChainTxHash:m,data:r.data}:d}async function $(e$1){let{client:t,clients:n,itemID:i,networkID:s,walletAddress:o,amount:u,category:c}=e$1;if(e())return g("request");let r=await t.blockchain.requestNFTWithdrawal(i,s,o,u,c);if(!r.ok)return b$1("request",r.error);let l=r.data.EvmSignature,p=r.data.TitleTransactionID??void 0;if(!l)return b$1("request","Withdrawal response carried no EVM signature.",{titleTransactionID:p});let m;try{m=await R(n,l);}catch(y){return b$1("withdraw-onchain",a(y),{titleTransactionID:p})}let d=await H(t,p,m);return d.ok?{ok:true,onChainTxHash:m,data:r.data}:d}async function H(e,t,n){if(!t)return b$1("confirm","Missing TitleTransactionID.",{onChainTxHash:n});let i=await e.blockchain.confirmWithdrawal(t,n);return i.ok?{ok:true,onChainTxHash:n,data:i.data}:b$1("confirm",i.error,{onChainTxHash:n,titleTransactionID:t})}async function V(e$1){let{client:t,clients:n,networkID:i}=e$1;if(e())return h$1("challenge");let s=e$1.walletAddress??n.account,o=await t.auth.requestWalletChallenge(s,i);if(!o.ok)return c("challenge",o.error);let u;try{u=await n.walletClient.signMessage({account:n.account,message:o.data.Message});}catch(r){return c("sign",a(r))}let c$1=await t.auth.loginWithWallet(s,i,u);return c$1.ok?{ok:true,data:c$1.data}:c("login",c$1.error)}async function j(e$1){let{client:t,clients:n,network:i,tokenAddress:s,decimals:o,titleID:u,shortfall:c,completePurchase:r,bufferRatio:l=0,category:p}=e$1;if(e())return g("approve");if(c.missing<=0)return b$1("approve","Nothing to deposit.");let m=c.missing*(1+Math.max(0,l)),d;try{d=parseUnits(J(m,o),o);}catch(F){return b$1("approve",a(F))}let y=await N({client:t,clients:n,network:i,tokenAddress:s,amount:d,titleID:u,category:p});if(!y.ok)return y;let A=await r();return A.ok?{ok:true,onChainTxHash:y.onChainTxHash,data:A.data}:b$1("report",A.error,{onChainTxHash:y.onChainTxHash})}function J(e,t){return e.toFixed(Math.min(t,18)).replace(/0+$/,"").replace(/\.$/,"")||"0"}export{b as a,v as b,I as c,E as d,D as e,h as f,T as g,N as h,S as i,O as j,q as k,B as l,R as m,L as n,U as o,$ as p,V as q,j as r};
|
|
1
|
+
import {e,g,b as b$1,a,h as h$1,c}from'./chunk-IEWZH6XD.js';import {encodeAbiParameters,parseUnits}from'viem';import {normalizeBlockchainCategory}from'@idosgames/core';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:[]}],C=[{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:[]}],v=[{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"}]}],I=[{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"}]}],E=[{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 D(e,t,n){return encodeAbiParameters([{type:"string"},{type:"string"},{type:"string"}],[e,t,normalizeBlockchainCategory(n)])}async function h(e,t){let{walletClient:n,publicClient:i,account:s}=e,o=await n.writeContract({address:t.address,abi:t.abi,functionName:t.functionName,args:t.args,account:s,chain:n.chain,value:t.value});if((await i.waitForTransactionReceipt({hash:o})).status==="reverted")throw new Error(`On-chain transaction reverted (${o}).`);return o}function x(e){let t=e.RewardPoolAddress;return t||null}async function T(e,t,n,i){return await e.publicClient.readContract({address:t,abi:v,functionName:"allowance",args:[e.account,n]})>=i?null:h(e,{address:t,abi:v,functionName:"approve",args:[n,i]})}async function N(e$1){let{client:t,clients:n,network:i,tokenAddress:s,amount:o,titleID:u,category:c}=e$1;if(e())return g("approve");let r=t.auth.context?.userID;if(!r)return b$1("approve","Not logged in.");let l=x(i);if(!l)return b$1("approve","Network has no RewardPoolAddress.");if(o<=0n)return b$1("approve","Amount must be positive.");try{await T(n,s,l,o);}catch(d){return b$1("approve",a(d))}let p;try{p=await h(n,{address:l,abi:b,functionName:"depositERC20",args:[s,o,r,u,c??""]});}catch(d){return b$1("deposit-onchain",a(d))}let m=await t.blockchain.depositToken(i.NetworkID??"",p);return m.ok?{ok:true,onChainTxHash:p,data:m.data}:b$1("report",m.error,{onChainTxHash:p})}async function S(e$1){let{clients:t,poolAddress:n,tokenAddress:i,amount:s,userID:o,titleID:u,category:c}=e$1;if(e())return g("approve");if(!o)return b$1("approve","userID is required.");if(s<=0n)return b$1("approve","Amount must be positive.");try{await T(t,i,n,s);}catch(r){return b$1("approve",a(r))}try{let r=await h(t,{address:n,abi:b,functionName:"depositERC20",args:[i,s,o,u,c??""]});return {ok:!0,onChainTxHash:r,data:{txHash:r}}}catch(r){return b$1("deposit-onchain",a(r))}}async function O(e$1){let{client:t,clients:n,network:i,nftContractAddress:s,tokenId:o,amount:u,titleID:c,category:r}=e$1;if(e())return g("deposit-onchain");let l=t.auth.context?.userID;if(!l)return b$1("deposit-onchain","Not logged in.");let p=x(i);if(!p)return b$1("deposit-onchain","Network has no RewardPoolAddress.");if(u<=0n)return b$1("deposit-onchain","Amount must be positive.");let m=D(l,c,r),d;try{d=await h(n,{address:s,abi:I,functionName:"safeTransferFrom",args:[n.account,p,o,u,m]});}catch(A){return b$1("deposit-onchain",a(A))}let y=await t.blockchain.depositNFT(i.NetworkID??"",d);return y.ok?{ok:true,onChainTxHash:d,data:y.data}:b$1("report",y.error,{onChainTxHash:d})}async function q(e$1){let{client:t,clients:n,network:i,nftContractAddress:s,tokenId:o,titleID:u,category:c}=e$1;if(e())return g("deposit-onchain");let r=t.auth.context?.userID;if(!r)return b$1("deposit-onchain","Not logged in.");let l=x(i);if(!l)return b$1("deposit-onchain","Network has no RewardPoolAddress.");let p=D(r,u,c),m;try{m=await h(n,{address:s,abi:E,functionName:"safeTransferFrom",args:[n.account,l,o,p]});}catch(y){return b$1("deposit-onchain",a(y))}let d=await t.blockchain.depositNFT(i.NetworkID??"",m);return d.ok?{ok:true,onChainTxHash:m,data:d.data}:b$1("report",d.error,{onChainTxHash:m})}function P(e){return (e.Splits??[]).map(t=>({to:t.To,amount:BigInt(t.Amount??"0")}))}async function B(e,t){return h(e,{address:t.ContractAddress,abi:b,functionName:"withdrawERC20",args:[t.TokenAddress,t.WalletAddress,BigInt(t.Amount??"0"),BigInt(t.BurnAmount??"0"),P(t),BigInt(t.Nonce??"0"),t.Signature??"0x",t.UserID??"",t.TitleID??"",t.Category??"",BigInt(t.Deadline??"0")]})}async function R(e,t){return h(e,{address:t.ContractAddress,abi:C,functionName:"withdrawERC1155Mint",args:[t.TokenAddress,t.WalletAddress,BigInt(t.TokenId??"0"),BigInt(t.Amount??"0"),P(t),BigInt(t.Nonce??"0"),t.Signature??"0x",t.UserID??"",t.TitleID??"",t.Category??"",BigInt(t.Deadline??"0")]})}async function L(e,t){return h(e,{address:t.ContractAddress,abi:C,functionName:"withdrawERC721Mint",args:[t.TokenAddress,t.WalletAddress,BigInt(t.TokenId??"0"),BigInt(t.Nonce??"0"),t.Signature??"0x",t.UserID??"",t.TitleID??"",t.Category??"",BigInt(t.Deadline??"0")]})}async function U(e$1){let{client:t,clients:n,currencyID:i,networkID:s,walletAddress:o,amount:u,category:c}=e$1;if(e())return g("request");let r=await t.blockchain.requestTokenWithdrawal(i,s,o,u,c);if(!r.ok)return b$1("request",r.error);let l=r.data.EvmSignature,p=r.data.TitleTransactionID??void 0;if(!l)return b$1("request","Withdrawal response carried no EVM signature.",{titleTransactionID:p});let m;try{m=await B(n,l);}catch(y){return b$1("withdraw-onchain",a(y),{titleTransactionID:p})}let d=await H(t,p,m);return d.ok?{ok:true,onChainTxHash:m,data:r.data}:d}async function $(e$1){let{client:t,clients:n,itemID:i,networkID:s,walletAddress:o,amount:u,category:c}=e$1;if(e())return g("request");let r=await t.blockchain.requestNFTWithdrawal(i,s,o,u,c);if(!r.ok)return b$1("request",r.error);let l=r.data.EvmSignature,p=r.data.TitleTransactionID??void 0;if(!l)return b$1("request","Withdrawal response carried no EVM signature.",{titleTransactionID:p});let m;try{m=await R(n,l);}catch(y){return b$1("withdraw-onchain",a(y),{titleTransactionID:p})}let d=await H(t,p,m);return d.ok?{ok:true,onChainTxHash:m,data:r.data}:d}async function H(e,t,n){if(!t)return b$1("confirm","Missing TitleTransactionID.",{onChainTxHash:n});let i=await e.blockchain.confirmWithdrawal(t,n);return i.ok?{ok:true,onChainTxHash:n,data:i.data}:b$1("confirm",i.error,{onChainTxHash:n,titleTransactionID:t})}async function V(e$1){let{client:t,clients:n,networkID:i}=e$1;if(e())return h$1("challenge");let s=e$1.walletAddress??n.account,o=await t.auth.requestWalletChallenge(s,i);if(!o.ok)return c("challenge",o.error);let u;try{u=await n.walletClient.signMessage({account:n.account,message:o.data.Message});}catch(r){return c("sign",a(r))}let c$1=await t.auth.loginWithWallet(s,i,u);return c$1.ok?{ok:true,data:c$1.data}:c("login",c$1.error)}async function j(e$1){let{client:t,clients:n,network:i,tokenAddress:s,decimals:o,titleID:u,shortfall:c,completePurchase:r,bufferRatio:l=0,category:p}=e$1;if(e())return g("approve");if(c.missing<=0)return b$1("approve","Nothing to deposit.");let m=c.missing*(1+Math.max(0,l)),d;try{d=parseUnits(J(m,o),o);}catch(F){return b$1("approve",a(F))}let y=await N({client:t,clients:n,network:i,tokenAddress:s,amount:d,titleID:u,category:p});if(!y.ok)return y;let A=await r();return A.ok?{ok:true,onChainTxHash:y.onChainTxHash,data:A.data}:b$1("report",A.error,{onChainTxHash:y.onChainTxHash})}function J(e,t){return e.toFixed(Math.min(t,18)).replace(/0+$/,"").replace(/\.$/,"")||"0"}export{b as a,v as b,I as c,E as d,D as e,h as f,T as g,N as h,S as i,O as j,q as k,B as l,R as m,L as n,U as o,$ as p,V as q,j as r};
|
package/dist/index.cjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
'use strict';var viem=require('viem'),core=require('@idosgames/core');function g(t){return t instanceof viem.BaseError?t.shortMessage:t instanceof Error?t.message:String(t)}function a(t,e,n){return {ok:false,stage:t,error:e,...n}}function w(t,e){return {ok:false,stage:t,error:e}}var D="WALLET_USE_SITE_PANEL";function f(){if(typeof window>"u")return false;try{return window.self!==window.top}catch{return true}}function M(){if(typeof window>"u")return false;try{return window.parent!==window.top}catch{return true}}function h(t){return a(t,D)}function E(t){return w(t,D)}var G=["https://idosgames.com","https://www.idosgames.com"];function U(t){if(typeof window>"u")return ()=>{};let e=n=>{G.includes(n.origin)&&n.data?.type==="IDOS_WALLET_BALANCE_CHANGED"&&t();};return window.addEventListener("message",e),()=>window.removeEventListener("message",e)}var O={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"}}},q={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"}}},_={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"}}},K={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"}}},z={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"}}},V={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"}}},Z={mainnet:O,bsc:q,polygon:_,base:K,arbitrum:Y,optimism:$,sepolia:z,polygonAmoy:V};function he(t){return Object.values(Z).find(e=>e.id===t)}function we(t){return {...t,chainNamespace:"eip155",caipNetworkId:`eip155:${t.id}`}}var ke={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"},be={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:[]}],v=[{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:[]}],A=[{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"}]}],T=[{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"}]}],I=[{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 C(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:o,account:l}=t,i=await n.writeContract({address:e.address,abi:e.abi,functionName:e.functionName,args:e.args,account:l,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 W(t){let e=t.RewardPoolAddress;return e||null}async function N(t,e,n,o){return await t.publicClient.readContract({address:e,abi:A,functionName:"allowance",args:[t.account,n]})>=o?null:k(t,{address:e,abi:A,functionName:"approve",args:[n,o]})}async function B(t){let{client:e,clients:n,network:o,tokenAddress:l,amount:i,titleID:c,category:p}=t;if(f())return h("approve");let r=e.auth.context?.userID;if(!r)return a("approve","Not logged in.");let m=W(o);if(!m)return a("approve","Network has no RewardPoolAddress.");if(i<=0n)return a("approve","Amount must be positive.");try{await N(n,l,m,i);}catch(u){return a("approve",g(u))}let s;try{s=await k(n,{address:m,abi:b,functionName:"depositERC20",args:[l,i,r,c,p??""]});}catch(u){return a("deposit-onchain",g(u))}let d=await e.blockchain.depositToken(o.NetworkID??"",s);return d.ok?{ok:true,onChainTxHash:s,data:d.data}:a("report",d.error,{onChainTxHash:s})}async function Q(t){let{clients:e,poolAddress:n,tokenAddress:o,amount:l,userID:i,titleID:c,category:p}=t;if(f())return h("approve");if(!i)return a("approve","userID is required.");if(l<=0n)return a("approve","Amount must be positive.");try{await N(e,o,n,l);}catch(r){return a("approve",g(r))}try{let r=await k(e,{address:n,abi:b,functionName:"depositERC20",args:[o,l,i,c,p??""]});return {ok:!0,onChainTxHash:r,data:{txHash:r}}}catch(r){return a("deposit-onchain",g(r))}}async function X(t){let{client:e,clients:n,network:o,nftContractAddress:l,tokenId:i,amount:c,titleID:p,category:r}=t;if(f())return h("deposit-onchain");let m=e.auth.context?.userID;if(!m)return a("deposit-onchain","Not logged in.");let s=W(o);if(!s)return a("deposit-onchain","Network has no RewardPoolAddress.");if(c<=0n)return a("deposit-onchain","Amount must be positive.");let d=C(m,p,r),u;try{u=await k(n,{address:l,abi:T,functionName:"safeTransferFrom",args:[n.account,s,i,c,d]});}catch(x){return a("deposit-onchain",g(x))}let y=await e.blockchain.depositNFT(o.NetworkID??"",u);return y.ok?{ok:true,onChainTxHash:u,data:y.data}:a("report",y.error,{onChainTxHash:u})}async function ee(t){let{client:e,clients:n,network:o,nftContractAddress:l,tokenId:i,titleID:c,category:p}=t;if(f())return h("deposit-onchain");let r=e.auth.context?.userID;if(!r)return a("deposit-onchain","Not logged in.");let m=W(o);if(!m)return a("deposit-onchain","Network has no RewardPoolAddress.");let s=C(r,c,p),d;try{d=await k(n,{address:l,abi:I,functionName:"safeTransferFrom",args:[n.account,m,i,s]});}catch(y){return a("deposit-onchain",g(y))}let u=await e.blockchain.depositNFT(o.NetworkID??"",d);return u.ok?{ok:true,onChainTxHash:d,data:u.data}:a("report",u.error,{onChainTxHash:d})}function P(t){return (t.Splits??[]).map(e=>({to:e.To,amount:BigInt(e.Amount??"0")}))}async function S(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"),P(e),BigInt(e.Nonce??"0"),e.Signature??"0x",e.UserID??"",e.TitleID??"",e.Category??"",BigInt(e.Deadline??"0")]})}async function R(t,e){return k(t,{address:e.ContractAddress,abi:v,functionName:"withdrawERC1155Mint",args:[e.TokenAddress,e.WalletAddress,BigInt(e.TokenId??"0"),BigInt(e.Amount??"0"),P(e),BigInt(e.Nonce??"0"),e.Signature??"0x",e.UserID??"",e.TitleID??"",e.Category??"",BigInt(e.Deadline??"0")]})}async function te(t,e){return k(t,{address:e.ContractAddress,abi:v,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 ne(t){let{client:e,clients:n,currencyID:o,networkID:l,walletAddress:i,amount:c,category:p}=t;if(f())return h("request");let r=await e.blockchain.requestTokenWithdrawal(o,l,i,c,p);if(!r.ok)return a("request",r.error);let m=r.data.EvmSignature,s=r.data.TitleTransactionID??void 0;if(!m)return a("request","Withdrawal response carried no EVM signature.",{titleTransactionID:s});let d;try{d=await S(n,m);}catch(y){return a("withdraw-onchain",g(y),{titleTransactionID:s})}let u=await F(e,s,d);return u.ok?{ok:true,onChainTxHash:d,data:r.data}:u}async function ae(t){let{client:e,clients:n,itemID:o,networkID:l,walletAddress:i,amount:c,category:p}=t;if(f())return h("request");let r=await e.blockchain.requestNFTWithdrawal(o,l,i,c,p);if(!r.ok)return a("request",r.error);let m=r.data.EvmSignature,s=r.data.TitleTransactionID??void 0;if(!m)return a("request","Withdrawal response carried no EVM signature.",{titleTransactionID:s});let d;try{d=await R(n,m);}catch(y){return a("withdraw-onchain",g(y),{titleTransactionID:s})}let u=await F(e,s,d);return u.ok?{ok:true,onChainTxHash:d,data:r.data}:u}async function F(t,e,n){if(!e)return a("confirm","Missing TitleTransactionID.",{onChainTxHash:n});let o=await t.blockchain.confirmWithdrawal(e,n);return o.ok?{ok:true,onChainTxHash:n,data:o.data}:a("confirm",o.error,{onChainTxHash:n,titleTransactionID:e})}async function re(t){let{client:e,clients:n,networkID:o}=t;if(f())return E("challenge");let l=t.walletAddress??n.account,i=await e.auth.requestWalletChallenge(l,o);if(!i.ok)return w("challenge",i.error);let c;try{c=await n.walletClient.signMessage({account:n.account,message:i.data.Message});}catch(r){return w("sign",g(r))}let p=await e.auth.loginWithWallet(l,o,c);return p.ok?{ok:true,data:p.data}:w("login",p.error)}async function ie(t){let{client:e,clients:n,network:o,tokenAddress:l,decimals:i,titleID:c,shortfall:p,completePurchase:r,bufferRatio:m=0,category:s}=t;if(f())return h("approve");if(p.missing<=0)return a("approve","Nothing to deposit.");let d=p.missing*(1+Math.max(0,m)),u;try{u=viem.parseUnits(se(d,i),i);}catch(L){return a("approve",g(L))}let y=await B({client:e,clients:n,network:o,tokenAddress:l,amount:u,titleID:c,category:s});if(!y.ok)return y;let x=await r();return x.ok?{ok:true,onChainTxHash:y.onChainTxHash,data:x.data}:a("report",x.error,{onChainTxHash:y.onChainTxHash})}function se(t,e){return t.toFixed(Math.min(e,18)).replace(/0+$/,"").replace(/\.$/,"")||"0"}async function de(t){let{client:e,adapter:n,network:o,mint:l,amountRaw:i,titleID:c,category:p}=t;if(f())return h("deposit-onchain");let r=e.auth.context?.userID;if(!r)return a("deposit-onchain","Not logged in.");if(i<=0n)return a("deposit-onchain","Amount must be positive.");let m;try{m=await n.depositSpl({mint:l,amountRaw:i,userID:r,titleID:c,category:core.normalizeBlockchainCategory(p)});}catch(d){return a("deposit-onchain",g(d))}let s=await e.blockchain.depositToken(o.NetworkID??"",m);return s.ok?{ok:true,onChainTxHash:m,data:s.data}:a("report",s.error,{onChainTxHash:m})}async function pe(t){let{client:e,adapter:n,currencyID:o,networkID:l,walletAddress:i,amount:c,category:p}=t;if(f())return h("request");let r=await e.blockchain.requestTokenWithdrawal(o,l,i,c,p);if(!r.ok)return a("request",r.error);let m=r.data.SolanaSignature,s=r.data.TitleTransactionID??void 0;if(!m)return a("request","Withdrawal response carried no Solana signature.",{titleTransactionID:s});let d;try{d=await n.submitWithdrawal(m);}catch(y){return a("withdraw-onchain",g(y),{titleTransactionID:s})}if(!s)return a("confirm","Missing TitleTransactionID.",{onChainTxHash:d});let u=await e.blockchain.confirmWithdrawal(s,d);return u.ok?{ok:true,onChainTxHash:d,data:r.data}:a("confirm",u.error,{onChainTxHash:d,titleTransactionID:s})}async function ce(t){let{client:e,networkID:n,walletAddress:o,signMessage:l}=t;if(f())return E("challenge");let i=await e.auth.requestWalletChallenge(o,n);if(!i.ok)return w("challenge",i.error);let c;try{let r=await l(new TextEncoder().encode(i.data.Message));c=me(r);}catch(r){return w("sign",g(r))}let p=await e.auth.loginWithWallet(o,n,c);return p.ok?{ok:true,data:p.data}:w("login",p.error)}function me(t){let e="0x";for(let n of t)e+=n.toString(16).padStart(2,"0");return e}
|
|
2
|
-
exports.WALLET_USE_SITE_PANEL=D;exports.arbitrum
|
|
1
|
+
'use strict';var viem=require('viem'),core=require('@idosgames/core');function g(t){return t instanceof viem.BaseError?t.shortMessage:t instanceof Error?t.message:String(t)}function a(t,e,n){return {ok:false,stage:t,error:e,...n}}function w(t,e){return {ok:false,stage:t,error:e}}var D="WALLET_USE_SITE_PANEL";function f(){if(typeof window>"u")return false;try{return window.self!==window.top}catch{return true}}function G(){if(typeof window>"u")return false;try{return window.parent!==window.top}catch{return true}}function h(t){return a(t,D)}function E(t){return w(t,D)}var O=core.PLATFORM_ORIGINS;function U(t){if(typeof window>"u")return ()=>{};let e=n=>{O.includes(n.origin)&&n.data?.type==="IDOS_WALLET_BALANCE_CHANGED"&&t();};return window.addEventListener("message",e),()=>window.removeEventListener("message",e)}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"}}},_={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"}}},K={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"}}},Y={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"}}},$={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"}}},z={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"}}},V={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"}}},J={mainnet:q,bsc:_,polygon:K,base:Y,arbitrum:$,optimism:z,sepolia:V,polygonAmoy:Z};function ke(t){return Object.values(J).find(e=>e.id===t)}function be(t){return {...t,chainNamespace:"eip155",caipNetworkId:`eip155:${t.id}`}}var xe={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"},Ee={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:[]}],T=[{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:[]}],A=[{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"}]}],I=[{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 C(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:o,account:l}=t,i=await n.writeContract({address:e.address,abi:e.abi,functionName:e.functionName,args:e.args,account:l,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 W(t){let e=t.RewardPoolAddress;return e||null}async function N(t,e,n,o){return await t.publicClient.readContract({address:e,abi:A,functionName:"allowance",args:[t.account,n]})>=o?null:k(t,{address:e,abi:A,functionName:"approve",args:[n,o]})}async function B(t){let{client:e,clients:n,network:o,tokenAddress:l,amount:i,titleID:c,category:p}=t;if(f())return h("approve");let r=e.auth.context?.userID;if(!r)return a("approve","Not logged in.");let m=W(o);if(!m)return a("approve","Network has no RewardPoolAddress.");if(i<=0n)return a("approve","Amount must be positive.");try{await N(n,l,m,i);}catch(u){return a("approve",g(u))}let s;try{s=await k(n,{address:m,abi:b,functionName:"depositERC20",args:[l,i,r,c,p??""]});}catch(u){return a("deposit-onchain",g(u))}let d=await e.blockchain.depositToken(o.NetworkID??"",s);return d.ok?{ok:true,onChainTxHash:s,data:d.data}:a("report",d.error,{onChainTxHash:s})}async function X(t){let{clients:e,poolAddress:n,tokenAddress:o,amount:l,userID:i,titleID:c,category:p}=t;if(f())return h("approve");if(!i)return a("approve","userID is required.");if(l<=0n)return a("approve","Amount must be positive.");try{await N(e,o,n,l);}catch(r){return a("approve",g(r))}try{let r=await k(e,{address:n,abi:b,functionName:"depositERC20",args:[o,l,i,c,p??""]});return {ok:!0,onChainTxHash:r,data:{txHash:r}}}catch(r){return a("deposit-onchain",g(r))}}async function ee(t){let{client:e,clients:n,network:o,nftContractAddress:l,tokenId:i,amount:c,titleID:p,category:r}=t;if(f())return h("deposit-onchain");let m=e.auth.context?.userID;if(!m)return a("deposit-onchain","Not logged in.");let s=W(o);if(!s)return a("deposit-onchain","Network has no RewardPoolAddress.");if(c<=0n)return a("deposit-onchain","Amount must be positive.");let d=C(m,p,r),u;try{u=await k(n,{address:l,abi:v,functionName:"safeTransferFrom",args:[n.account,s,i,c,d]});}catch(x){return a("deposit-onchain",g(x))}let y=await e.blockchain.depositNFT(o.NetworkID??"",u);return y.ok?{ok:true,onChainTxHash:u,data:y.data}:a("report",y.error,{onChainTxHash:u})}async function te(t){let{client:e,clients:n,network:o,nftContractAddress:l,tokenId:i,titleID:c,category:p}=t;if(f())return h("deposit-onchain");let r=e.auth.context?.userID;if(!r)return a("deposit-onchain","Not logged in.");let m=W(o);if(!m)return a("deposit-onchain","Network has no RewardPoolAddress.");let s=C(r,c,p),d;try{d=await k(n,{address:l,abi:I,functionName:"safeTransferFrom",args:[n.account,m,i,s]});}catch(y){return a("deposit-onchain",g(y))}let u=await e.blockchain.depositNFT(o.NetworkID??"",d);return u.ok?{ok:true,onChainTxHash:d,data:u.data}:a("report",u.error,{onChainTxHash:d})}function P(t){return (t.Splits??[]).map(e=>({to:e.To,amount:BigInt(e.Amount??"0")}))}async function S(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"),P(e),BigInt(e.Nonce??"0"),e.Signature??"0x",e.UserID??"",e.TitleID??"",e.Category??"",BigInt(e.Deadline??"0")]})}async function R(t,e){return k(t,{address:e.ContractAddress,abi:T,functionName:"withdrawERC1155Mint",args:[e.TokenAddress,e.WalletAddress,BigInt(e.TokenId??"0"),BigInt(e.Amount??"0"),P(e),BigInt(e.Nonce??"0"),e.Signature??"0x",e.UserID??"",e.TitleID??"",e.Category??"",BigInt(e.Deadline??"0")]})}async function ne(t,e){return k(t,{address:e.ContractAddress,abi:T,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 ae(t){let{client:e,clients:n,currencyID:o,networkID:l,walletAddress:i,amount:c,category:p}=t;if(f())return h("request");let r=await e.blockchain.requestTokenWithdrawal(o,l,i,c,p);if(!r.ok)return a("request",r.error);let m=r.data.EvmSignature,s=r.data.TitleTransactionID??void 0;if(!m)return a("request","Withdrawal response carried no EVM signature.",{titleTransactionID:s});let d;try{d=await S(n,m);}catch(y){return a("withdraw-onchain",g(y),{titleTransactionID:s})}let u=await F(e,s,d);return u.ok?{ok:true,onChainTxHash:d,data:r.data}:u}async function re(t){let{client:e,clients:n,itemID:o,networkID:l,walletAddress:i,amount:c,category:p}=t;if(f())return h("request");let r=await e.blockchain.requestNFTWithdrawal(o,l,i,c,p);if(!r.ok)return a("request",r.error);let m=r.data.EvmSignature,s=r.data.TitleTransactionID??void 0;if(!m)return a("request","Withdrawal response carried no EVM signature.",{titleTransactionID:s});let d;try{d=await R(n,m);}catch(y){return a("withdraw-onchain",g(y),{titleTransactionID:s})}let u=await F(e,s,d);return u.ok?{ok:true,onChainTxHash:d,data:r.data}:u}async function F(t,e,n){if(!e)return a("confirm","Missing TitleTransactionID.",{onChainTxHash:n});let o=await t.blockchain.confirmWithdrawal(e,n);return o.ok?{ok:true,onChainTxHash:n,data:o.data}:a("confirm",o.error,{onChainTxHash:n,titleTransactionID:e})}async function oe(t){let{client:e,clients:n,networkID:o}=t;if(f())return E("challenge");let l=t.walletAddress??n.account,i=await e.auth.requestWalletChallenge(l,o);if(!i.ok)return w("challenge",i.error);let c;try{c=await n.walletClient.signMessage({account:n.account,message:i.data.Message});}catch(r){return w("sign",g(r))}let p=await e.auth.loginWithWallet(l,o,c);return p.ok?{ok:true,data:p.data}:w("login",p.error)}async function se(t){let{client:e,clients:n,network:o,tokenAddress:l,decimals:i,titleID:c,shortfall:p,completePurchase:r,bufferRatio:m=0,category:s}=t;if(f())return h("approve");if(p.missing<=0)return a("approve","Nothing to deposit.");let d=p.missing*(1+Math.max(0,m)),u;try{u=viem.parseUnits(le(d,i),i);}catch(L){return a("approve",g(L))}let y=await B({client:e,clients:n,network:o,tokenAddress:l,amount:u,titleID:c,category:s});if(!y.ok)return y;let x=await r();return x.ok?{ok:true,onChainTxHash:y.onChainTxHash,data:x.data}:a("report",x.error,{onChainTxHash:y.onChainTxHash})}function le(t,e){return t.toFixed(Math.min(e,18)).replace(/0+$/,"").replace(/\.$/,"")||"0"}async function pe(t){let{client:e,adapter:n,network:o,mint:l,amountRaw:i,titleID:c,category:p}=t;if(f())return h("deposit-onchain");let r=e.auth.context?.userID;if(!r)return a("deposit-onchain","Not logged in.");if(i<=0n)return a("deposit-onchain","Amount must be positive.");let m;try{m=await n.depositSpl({mint:l,amountRaw:i,userID:r,titleID:c,category:core.normalizeBlockchainCategory(p)});}catch(d){return a("deposit-onchain",g(d))}let s=await e.blockchain.depositToken(o.NetworkID??"",m);return s.ok?{ok:true,onChainTxHash:m,data:s.data}:a("report",s.error,{onChainTxHash:m})}async function ce(t){let{client:e,adapter:n,currencyID:o,networkID:l,walletAddress:i,amount:c,category:p}=t;if(f())return h("request");let r=await e.blockchain.requestTokenWithdrawal(o,l,i,c,p);if(!r.ok)return a("request",r.error);let m=r.data.SolanaSignature,s=r.data.TitleTransactionID??void 0;if(!m)return a("request","Withdrawal response carried no Solana signature.",{titleTransactionID:s});let d;try{d=await n.submitWithdrawal(m);}catch(y){return a("withdraw-onchain",g(y),{titleTransactionID:s})}if(!s)return a("confirm","Missing TitleTransactionID.",{onChainTxHash:d});let u=await e.blockchain.confirmWithdrawal(s,d);return u.ok?{ok:true,onChainTxHash:d,data:r.data}:a("confirm",u.error,{onChainTxHash:d,titleTransactionID:s})}async function me(t){let{client:e,networkID:n,walletAddress:o,signMessage:l}=t;if(f())return E("challenge");let i=await e.auth.requestWalletChallenge(o,n);if(!i.ok)return w("challenge",i.error);let c;try{let r=await l(new TextEncoder().encode(i.data.Message));c=ue(r);}catch(r){return w("sign",g(r))}let p=await e.auth.loginWithWallet(o,n,c);return p.ok?{ok:true,data:p.data}:w("login",p.error)}function ue(t){let e="0x";for(let n of t)e+=n.toString(16).padStart(2,"0");return e}
|
|
2
|
+
exports.WALLET_USE_SITE_PANEL=D;exports.arbitrum=$;exports.base=Y;exports.bridgeFail=a;exports.bsc=_;exports.chainById=ke;exports.depositNftEvm=ee;exports.depositNftEvm721=te;exports.depositTokenEvm=B;exports.depositTokenOnChainEvm=X;exports.depositTokenSolana=pe;exports.encodeNftDepositData=C;exports.ensureErc20Allowance=N;exports.erc1155Abi=v;exports.erc20Abi=A;exports.erc721Abi=I;exports.idosChains=J;exports.isEmbeddedInPlatform=f;exports.isEmbeddedOnForeignSite=G;exports.loginWithWalletEvm=oe;exports.loginWithWalletSolana=me;exports.mainnet=q;exports.onWalletBalanceChanged=U;exports.optimism=z;exports.payWithWalletEvm=se;exports.polygon=K;exports.polygonAmoy=Z;exports.rewardPoolAbi=b;exports.sepolia=V;exports.solanaDevnet=Ee;exports.solanaMainnet=xe;exports.submitEvmNftWithdrawal=R;exports.submitEvmNftWithdrawal721=ne;exports.submitEvmTokenWithdrawal=S;exports.toAppKitNetwork=be;exports.toErrorMessage=g;exports.walletLoginFail=w;exports.withdrawNftEvm=re;exports.withdrawTokenEvm=ae;exports.withdrawTokenSolana=ce;exports.writeAndWait=k;
|
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,q as loginWithWalletEvm,r 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-
|
|
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,q as loginWithWalletEvm,r 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-RTP7IL25.js';export{a as depositTokenSolana,c as loginWithWalletSolana,b as withdrawTokenSolana}from'./chunk-2PEE5F3U.js';export{d as WALLET_USE_SITE_PANEL,n as arbitrum,m as base,b as bridgeFail,k as bsc,s as chainById,r as idosChains,e as isEmbeddedInPlatform,f as isEmbeddedOnForeignSite,j as mainnet,i as onWalletBalanceChanged,o as optimism,l as polygon,q as polygonAmoy,p as sepolia,v as solanaDevnet,u as solanaMainnet,t as toAppKitNetwork,a as toErrorMessage,c as walletLoginFail}from'./chunk-IEWZH6XD.js';
|
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 z={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"}}},V={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"}}},$={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"}}},Y={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"}}},Q={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"}}},Z={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"}}},J={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"}}},X={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:z,bsc:V,polygon:$,base:Y,arbitrum:Q,optimism:Z,sepolia:J,polygonAmoy:X};function $e(e){return Object.values(ve).find(t=>t.id===e)}function ke(e){return {...e,chainNamespace:"eip155",caipNetworkId:`eip155:${e.id}`}}var Ee=null;function Ae(e){Ee=e;}function se(){return Ee}var xe=[z,V,$,Y,Q,Z,J,X],le=new Map;function ce(e){let{chains:t=xe,walletConnectProjectId:n,appName:r,appUrl:o,appIcon:i,transports:d,connectors:l}=e,a=n??"__extension_only__";if(!l){let y=le.get(a);if(y)return y}let u={};for(let y of t)u[y.id]=d?.[y.id]??wagmi.http();let p=o??(typeof window<"u"?window.location.origin:""),m={name:r??"iDosGames",description:r??"iDosGames game",url:p,icons:i?[i]:[]};if(n&&!l){let y=t.map(ke),D=new appkitAdapterWagmi.WagmiAdapter({networks:y,projectId:n,transports:u});return Ae(react.createAppKit({adapters:[D],networks:y,projectId:n,metadata:m,features:{analytics:false,email:false,socials:false}})),le.set(a,D.wagmiConfig),D.wagmiConfig}let f=l??[connectors.injected(),connectors.coinbaseWallet({appName:r??"iDosGames"})],h=wagmi.createConfig({chains:t,connectors:f,transports:u});return l||le.set(a,h),h}function U(e){let{wagmiConfig:t,queryClient:n,children:r}=e,[o]=react$1.useState(()=>n??new reactQuery.QueryClient);return jsxRuntime.jsx(wagmi.WagmiProvider,{config:t,children:jsxRuntime.jsx(reactQuery.QueryClientProvider,{client:o,children:r})})}var ee=[{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:[]}],Pe=[{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:[]}],de=[{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"}]}],Ie=[{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 Ne(e,t,n){return viem.encodeAbiParameters([{type:"string"},{type:"string"},{type:"string"}],[e,t,core.normalizeBlockchainCategory(n)])}async function S(e,t){let{walletClient:n,publicClient:r,account:o}=e,i=await n.writeContract({address:t.address,abi:t.abi,functionName:t.functionName,args:t.args,account:o,chain:n.chain,value:t.value});if((await r.waitForTransactionReceipt({hash:i})).status==="reverted")throw new Error(`On-chain transaction reverted (${i}).`);return i}function x(e){return e instanceof viem.BaseError?e.shortMessage:e instanceof Error?e.message:String(e)}function c(e,t,n){return {ok:false,stage:e,error:t,...n}}function I(e,t){return {ok:false,stage:e,error:t}}var We="WALLET_USE_SITE_PANEL";function N(){if(typeof window>"u")return false;try{return window.self!==window.top}catch{return true}}function M(e){return c(e,We)}function Te(e){return I(e,We)}function Be(e){let t=e.RewardPoolAddress;return t||null}async function Se(e,t,n,r){return await e.publicClient.readContract({address:t,abi:de,functionName:"allowance",args:[e.account,n]})>=r?null:S(e,{address:t,abi:de,functionName:"approve",args:[n,r]})}async function pe(e){let{client:t,clients:n,network:r,tokenAddress:o,amount:i,titleID:d,category:l}=e;if(N())return M("approve");let a=t.auth.context?.userID;if(!a)return c("approve","Not logged in.");let u=Be(r);if(!u)return c("approve","Network has no RewardPoolAddress.");if(i<=0n)return c("approve","Amount must be positive.");try{await Se(n,o,u,i);}catch(f){return c("approve",x(f))}let p;try{p=await S(n,{address:u,abi:ee,functionName:"depositERC20",args:[o,i,a,d,l??""]});}catch(f){return c("deposit-onchain",x(f))}let m=await t.blockchain.depositToken(r.NetworkID??"",p);return m.ok?{ok:true,onChainTxHash:p,data:m.data}:c("report",m.error,{onChainTxHash:p})}async function ue(e){let{client:t,clients:n,network:r,nftContractAddress:o,tokenId:i,amount:d,titleID:l,category:a}=e;if(N())return M("deposit-onchain");let u=t.auth.context?.userID;if(!u)return c("deposit-onchain","Not logged in.");let p=Be(r);if(!p)return c("deposit-onchain","Network has no RewardPoolAddress.");if(d<=0n)return c("deposit-onchain","Amount must be positive.");let m=Ne(u,l,a),f;try{f=await S(n,{address:o,abi:Ie,functionName:"safeTransferFrom",args:[n.account,p,i,d,m]});}catch(y){return c("deposit-onchain",x(y))}let h=await t.blockchain.depositNFT(r.NetworkID??"",f);return h.ok?{ok:true,onChainTxHash:f,data:h.data}:c("report",h.error,{onChainTxHash:f})}function Re(e){return (e.Splits??[]).map(t=>({to:t.To,amount:BigInt(t.Amount??"0")}))}async function Fe(e,t){return S(e,{address:t.ContractAddress,abi:ee,functionName:"withdrawERC20",args:[t.TokenAddress,t.WalletAddress,BigInt(t.Amount??"0"),BigInt(t.BurnAmount??"0"),Re(t),BigInt(t.Nonce??"0"),t.Signature??"0x",t.UserID??"",t.TitleID??"",t.Category??"",BigInt(t.Deadline??"0")]})}async function Le(e,t){return S(e,{address:t.ContractAddress,abi:Pe,functionName:"withdrawERC1155Mint",args:[t.TokenAddress,t.WalletAddress,BigInt(t.TokenId??"0"),BigInt(t.Amount??"0"),Re(t),BigInt(t.Nonce??"0"),t.Signature??"0x",t.UserID??"",t.TitleID??"",t.Category??"",BigInt(t.Deadline??"0")]})}async function me(e){let{client:t,clients:n,currencyID:r,networkID:o,walletAddress:i,amount:d,category:l}=e;if(N())return M("request");let a=await t.blockchain.requestTokenWithdrawal(r,o,i,d,l);if(!a.ok)return c("request",a.error);let u=a.data.EvmSignature,p=a.data.TitleTransactionID??void 0;if(!u)return c("request","Withdrawal response carried no EVM signature.",{titleTransactionID:p});let m;try{m=await Fe(n,u);}catch(h){return c("withdraw-onchain",x(h),{titleTransactionID:p})}let f=await He(t,p,m);return f.ok?{ok:true,onChainTxHash:m,data:a.data}:f}async function fe(e){let{client:t,clients:n,itemID:r,networkID:o,walletAddress:i,amount:d,category:l}=e;if(N())return M("request");let a=await t.blockchain.requestNFTWithdrawal(r,o,i,d,l);if(!a.ok)return c("request",a.error);let u=a.data.EvmSignature,p=a.data.TitleTransactionID??void 0;if(!u)return c("request","Withdrawal response carried no EVM signature.",{titleTransactionID:p});let m;try{m=await Le(n,u);}catch(h){return c("withdraw-onchain",x(h),{titleTransactionID:p})}let f=await He(t,p,m);return f.ok?{ok:true,onChainTxHash:m,data:a.data}:f}async function He(e,t,n){if(!t)return c("confirm","Missing TitleTransactionID.",{onChainTxHash:n});let r=await e.blockchain.confirmWithdrawal(t,n);return r.ok?{ok:true,onChainTxHash:n,data:r.data}:c("confirm",r.error,{onChainTxHash:n,titleTransactionID:t})}async function K(e){let{client:t,clients:n,networkID:r}=e;if(N())return Te("challenge");let o=e.walletAddress??n.account,i=await t.auth.requestWalletChallenge(o,r);if(!i.ok)return I("challenge",i.error);let d;try{d=await n.walletClient.signMessage({account:n.account,message:i.data.Message});}catch(a){return I("sign",x(a))}let l=await t.auth.loginWithWallet(o,r,d);return l.ok?{ok:true,data:l.data}:I("login",l.error)}function te(){let{address:e}=wagmi.useAccount(),t=wagmi.usePublicClient(),{data:n}=wagmi.useWalletClient();return !e||!t||!n?null:{account:e,publicClient:t,walletClient:n}}var _="Wallet not connected.";function ge(e,t){let n=te();return {connected:!!n,account:n?.account??null,loginWithWallet:(r,o)=>n?K({client:e,clients:n,networkID:r,walletAddress:o}):Promise.resolve(I("challenge",_)),depositToken:r=>n?pe({client:e,clients:n,titleID:t,...r}):Promise.resolve(c("approve",_)),depositNft:r=>n?ue({client:e,clients:n,titleID:t,...r}):Promise.resolve(c("deposit-onchain",_)),withdrawToken:r=>n?me({client:e,clients:n,...r}):Promise.resolve(c("withdraw-onchain",_)),withdrawNft:r=>n?fe({client:e,clients:n,...r}):Promise.resolve(c("withdraw-onchain",_))}}function wt(e){let{wagmiConfig:t,...n}=e;return jsxRuntime.jsx(U,{wagmiConfig:t,children:jsxRuntime.jsx(Ue,{...n})})}function ht(e){return e instanceof Error&&(e.name==="ConnectorAlreadyConnectedError"||e.message.includes("already connected"))}function Ct(e){let t="Wallet sign-in failed. Please try again.";return e instanceof Error?e.name==="ProviderNotFoundError"||/provider not found/i.test(e.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.":e.name==="UserRejectedRequestError"||/user (rejected|denied|cancelled|canceled)/i.test(e.message)?"Request declined in the wallet.":/timed? ?out/i.test(e.message)?"The wallet did not respond. Open your wallet and try again.":t:t}async function Ge(e){let t=await actions.getWalletClient(e).catch(()=>null);if(!t)return null;let n=actions.getPublicClient(e);return n?{account:t.account.address,publicClient:n,walletClient:t}:null}function bt(e,t=18e4){return actions.getAccount(e).isConnected?Promise.resolve(true):new Promise(n=>{let r=false,o=l=>{r||(r=true,i(),clearTimeout(d),n(l));},i=actions.watchAccount(e,{onChange:l=>{l.isConnected&&o(true);}}),d=setTimeout(()=>o(false),t);})}function vt(e,t=8e3){let n=r=>r==="reconnecting"||r==="connecting";return n(actions.getAccount(e).status)?new Promise(r=>{let o=false,i=()=>{o||(o=true,d(),clearTimeout(l),r());},d=actions.watchAccount(e,{onChange:a=>{n(a.status)||i();}}),l=setTimeout(i,t);}):Promise.resolve()}function kt(e){let t=o=>e.find(i=>i.id===o||i.type===o),n=t("injected"),r=typeof window<"u"&&window.ethereum!=null;return n&&r?n:t("walletConnect")??n??e[0]}var Et=9e4;async function At(e){try{let r=(await actions.getAccount(e).connector?.getProvider?.())?.session?.peer?.metadata?.redirect,o=r?.native||r?.universal;return !o||typeof window>"u"?!1:(window.location.href=o,!0)}catch{return false}}function xt(e,t){return new Promise((n,r)=>{let o=setTimeout(()=>r(new Error("The wallet request timed out.")),t);e.then(i=>{clearTimeout(o),n(i);},i=>{clearTimeout(o),r(i instanceof Error?i:new Error(String(i)));});})}function Ue(e){let{client:t,networkID:n,onAuthenticated:r,disabled:o,label:i,style:d,autoStart:l}=e,a=wagmi.useConfig(),{isConnected:u}=wagmi.useAccount(),{connectAsync:p,connectors:m}=wagmi.useConnect(),f=te(),[h,y]=react$1.useState(false),[D,C]=react$1.useState(null),[G,E]=react$1.useState(false),O=react$1.useRef(0),F=react$1.useRef(false),j=async()=>{let T=++O.current,P=()=>O.current===T;y(true),C(null);try{if(await vt(a),!P())return;if(!actions.getAccount(a).isConnected){let k=se();if(k){if(await k.open(),!await bt(a)){C("No wallet was connected.");return}}else {let ie=kt(m);if(!ie){C("No wallet connector is configured.");return}try{await p({connector:ie});}catch(B){if(!ht(B))throw B}}}let b=f??await Ge(a);if(!b&&actions.getAccount(a).isConnected&&(await new Promise(k=>setTimeout(k,300)),b=await Ge(a),!P()))return;if(!b){C("Wallet client is not available.");return}E(!0);let A=await xt(K({client:t,clients:b,networkID:n}),Et);if(!P())return;if(A.ok){r();return}C(A.stage==="sign"?"Signature declined.":A.error??"Wallet sign-in failed.");}catch(b){if(!P())return;console.error("[idosgames/wallet] wallet sign-in failed:",b),C(Ct(b));}finally{P()&&(y(false),E(false));}};react$1.useEffect(()=>{!l||F.current||(F.current=true,j());},[l]);let L=async()=>{await At(a)||await se()?.open();};return jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[jsxRuntime.jsx("button",{type:"button",onClick:()=>{G?L():j();},disabled:o,style:{...Dt,...o?{opacity:.6,cursor:"default"}:null,...d},children:G?"Waiting for signature \u2014 tap to open wallet":h?"Check your wallet\u2026":u?i??"Sign in with wallet":"Connect wallet"}),D&&jsxRuntime.jsx("span",{role:"alert",style:Pt,children:D})]})}var Dt={padding:"11px 16px",borderRadius:"8px",border:"none",background:"#4c3fa8",color:"#fff",font:"inherit",fontWeight:600,cursor:"pointer"},Pt={display:"block",marginTop:"6px",color:"#ff9b9b",fontSize:"13px",textAlign:"center"};var Lt={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"},Ht={fontWeight:700,fontSize:16},R={fontSize:12,opacity:.7},we={background:"#052e7e",border:"1px solid #1e59c8",borderRadius:8,color:"#fff",padding:"8px 10px",width:"100%",boxSizing:"border-box"},Mt={background:"#0d66fe",color:"#fff",border:"none",borderRadius:8,padding:"9px 14px",fontWeight:700,cursor:"pointer"},re={background:"#1e59c8",color:"#fff",border:"none",borderRadius:8,padding:"7px 12px",fontWeight:600,cursor:"pointer"},he={display:"flex",gap:8};function Gt(e){let{client:t,walletConnectProjectId:n,appName:r,onClose:o,style:i}=e,[d,l]=react$1.useState(n??"");react$1.useEffect(()=>{if(n)return;let u=true;return (async()=>{let p=await t.blockchain.getDefinitions();if(!u||!p.ok)return;let m=p.data.Blockchain?.WalletLogin?.WalletConnectProjectId;m&&l(m);})(),()=>{u=false;}},[t,n]);let a=react$1.useMemo(()=>ce({walletConnectProjectId:d||void 0,appName:r}),[d,r]);return jsxRuntime.jsx(U,{wagmiConfig:a,children:jsxRuntime.jsx(Ot,{client:t,appName:r,onClose:o,style:i})})}function Ot({client:e,onClose:t,style:n}){let r=ge(e,e.titleID),{address:o,isConnected:i,chainId:d}=wagmi.useAccount(),{connect:l,connectors:a}=wagmi.useConnect(),{disconnect:u}=wagmi.useDisconnect(),{switchChainAsync:p}=wagmi.useSwitchChain(),[,m]=react$1.useReducer(s=>s+1,0),[f,h]=react$1.useState({}),[y,D]=react$1.useState({}),[C,G]=react$1.useState(""),[E,O]=react$1.useState(""),[F,j]=react$1.useState(""),[L,T]=react$1.useState(false),[P,b]=react$1.useState(null);react$1.useEffect(()=>{let s=true;return (async()=>{let w=await e.blockchain.getDefinitions();if(await e.blockchain.getUserState(),!s||!w.ok)return;let H=w.data.Blockchain?.Networks??{},ae={};for(let[Ve,be]of Object.entries(H))be.Type==="EVM"&&(ae[Ve]=be);h(ae),D(w.data.CryptoCurrencies??{});let ze=Object.keys(ae)[0]??"";G(ze);})(),()=>{s=false;}},[e]),react$1.useEffect(()=>e.on("user:anyUpdated",m),[e]);let A=react$1.useMemo(()=>Object.entries(y).filter(([,s])=>s.Networks?.some(w=>w.NetworkID===C&&!!w.ContractAddress)),[y,C]);react$1.useEffect(()=>{let s=A[0]?.[0]??"";O(w=>A.some(([H])=>H===w)?w:s);},[A]);let k=C?f[C]:void 0,B=(E?y[E]:void 0)?.Networks?.find(s=>s.NetworkID===C),_e=E?e.data.user.getCryptoCurrencyAmount(E):"0";async function Ce(){if(!k?.ChainID||d===k.ChainID)return true;try{return await p({chainId:k.ChainID}),!0}catch{return b({ok:false,stage:"approve",error:`Switch your wallet to chain ${k.ChainID} to continue.`}),false}}async function qe(){if(!(!k||!B?.ContractAddress)){if(T(true),b(null),await Ce()){let s=B.Decimals??18,w;try{w=viem.parseUnits(F||"0",s);}catch{b({ok:false,stage:"approve",error:"Invalid amount."}),T(false);return}let H=await r.depositToken({network:k,tokenAddress:B.ContractAddress,amount:w});b(H),H.ok&&await e.blockchain.getUserState();}T(false);}}async function je(){if(!(!k||!r.account)){if(T(true),b(null),await Ce()){let s=await r.withdrawToken({currencyID:E,networkID:C,walletAddress:r.account,amount:F||"0"});b(s),s.ok&&await e.blockchain.getUserState();}T(false);}}return jsxRuntime.jsxs("div",{style:{...Lt,...n},children:[jsxRuntime.jsxs("div",{style:{...he,justifyContent:"space-between"},children:[jsxRuntime.jsx("span",{style:Ht,children:"Crypto wallet"}),t&&jsxRuntime.jsx("button",{type:"button",style:re,onClick:t,children:"\u2715"})]}),i?jsxRuntime.jsxs("div",{style:he,children:[jsxRuntime.jsxs("span",{style:{...R,flex:1,alignSelf:"center"},children:[o?.slice(0,6),"\u2026",o?.slice(-4)]}),jsxRuntime.jsx("button",{type:"button",style:re,onClick:()=>u(),children:"Disconnect"})]}):jsxRuntime.jsxs("div",{style:{display:"flex",flexDirection:"column",gap:6},children:[jsxRuntime.jsx("span",{style:R,children:"Connect a browser or mobile wallet"}),a.map(s=>jsxRuntime.jsx("button",{type:"button",style:re,onClick:()=>l({connector:s}),children:s.name},s.uid))]}),Object.keys(f).length===0?jsxRuntime.jsx("span",{style:R,children:"No EVM networks configured for this title."}):jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[jsxRuntime.jsxs("div",{children:[jsxRuntime.jsx("div",{style:R,children:"Network"}),jsxRuntime.jsx("select",{style:we,value:C,onChange:s=>G(s.target.value),children:Object.entries(f).map(([s,w])=>jsxRuntime.jsx("option",{value:s,children:w.DisplayName??s},s))})]}),jsxRuntime.jsxs("div",{children:[jsxRuntime.jsx("div",{style:R,children:"Token"}),jsxRuntime.jsxs("select",{style:we,value:E,onChange:s=>O(s.target.value),children:[A.length===0&&jsxRuntime.jsx("option",{value:"",children:"\u2014 no depositable tokens \u2014"}),A.map(([s,w])=>jsxRuntime.jsx("option",{value:s,children:w.DisplayName??s},s))]})]}),jsxRuntime.jsxs("div",{style:R,children:["In-game balance: ",jsxRuntime.jsx("b",{children:_e})," ",E]}),jsxRuntime.jsxs("div",{children:[jsxRuntime.jsx("div",{style:R,children:"Amount"}),jsxRuntime.jsx("input",{style:we,inputMode:"decimal",placeholder:"0.0",value:F,onChange:s=>j(s.target.value)})]}),jsxRuntime.jsxs("div",{style:he,children:[jsxRuntime.jsx("button",{type:"button",style:{...Mt,flex:1,opacity:L?.6:1},disabled:L||!i||!B?.ContractAddress,onClick:()=>{qe();},children:"Deposit"}),jsxRuntime.jsx("button",{type:"button",style:{...re,flex:1,opacity:L?.6:1},disabled:L||!i||!E,onClick:()=>{je();},children:"Withdraw"})]})]}),P&&jsxRuntime.jsx(Ut,{result:P})]})}function Ut({result:e}){let t={fontSize:12,borderRadius:8,padding:"8px 10px",background:e.ok?"#1e3a2a":"#3a1e28",color:e.ok?"#8ef0b0":"#f2a0b4",wordBreak:"break-all"};return e.ok?jsxRuntime.jsxs("div",{style:t,children:["\u2713 Done \xB7 tx ",e.onChainTxHash]}):jsxRuntime.jsxs("div",{style:t,children:["\u2715 [",e.stage,"] ",e.error,e.titleTransactionID?` \xB7 already debited (tx ${e.titleTransactionID}) \u2014 retry/confirm, don't re-request`:""]})}
|
|
2
|
-
exports.DEFAULT_EVM_CHAINS=xe;exports.IDosGamesWalletProvider=U;exports.WalletLogin=wt;exports.WalletLoginButton=Ue;exports.WalletPanel=
|
|
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 z={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"}}},V={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"}}},$={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"}}},Y={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"}}},Q={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"}}},Z={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"}}},J={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"}}},X={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:z,bsc:V,polygon:$,base:Y,arbitrum:Q,optimism:Z,sepolia:J,polygonAmoy:X};function $e(e){return Object.values(ve).find(t=>t.id===e)}function ke(e){return {...e,chainNamespace:"eip155",caipNetworkId:`eip155:${e.id}`}}var Ee=null;function Ae(e){Ee=e;}function se(){return Ee}var xe=[z,V,$,Y,Q,Z,J,X],le=new Map;function ce(e){let{chains:t=xe,walletConnectProjectId:n,appName:r,appUrl:o,appIcon:i,transports:d,connectors:l}=e,a=n??"__extension_only__";if(!l){let y=le.get(a);if(y)return y}let u={};for(let y of t)u[y.id]=d?.[y.id]??wagmi.http();let p=o??(typeof window<"u"?window.location.origin:""),m={name:r??"iDosGames",description:r??"iDosGames game",url:p,icons:i?[i]:[]};if(n&&!l){let y=t.map(ke),D=new appkitAdapterWagmi.WagmiAdapter({networks:y,projectId:n,transports:u});return Ae(react.createAppKit({adapters:[D],networks:y,projectId:n,metadata:m,features:{analytics:false,email:false,socials:false}})),le.set(a,D.wagmiConfig),D.wagmiConfig}let f=l??[connectors.injected(),connectors.coinbaseWallet({appName:r??"iDosGames"})],h=wagmi.createConfig({chains:t,connectors:f,transports:u});return l||le.set(a,h),h}function U(e){let{wagmiConfig:t,queryClient:n,children:r}=e,[o]=react$1.useState(()=>n??new reactQuery.QueryClient);return jsxRuntime.jsx(wagmi.WagmiProvider,{config:t,children:jsxRuntime.jsx(reactQuery.QueryClientProvider,{client:o,children:r})})}var ee=[{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:[]}],Pe=[{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:[]}],de=[{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"}]}],Ie=[{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 Ne(e,t,n){return viem.encodeAbiParameters([{type:"string"},{type:"string"},{type:"string"}],[e,t,core.normalizeBlockchainCategory(n)])}async function S(e,t){let{walletClient:n,publicClient:r,account:o}=e,i=await n.writeContract({address:t.address,abi:t.abi,functionName:t.functionName,args:t.args,account:o,chain:n.chain,value:t.value});if((await r.waitForTransactionReceipt({hash:i})).status==="reverted")throw new Error(`On-chain transaction reverted (${i}).`);return i}function x(e){return e instanceof viem.BaseError?e.shortMessage:e instanceof Error?e.message:String(e)}function c(e,t,n){return {ok:false,stage:e,error:t,...n}}function I(e,t){return {ok:false,stage:e,error:t}}var We="WALLET_USE_SITE_PANEL";function N(){if(typeof window>"u")return false;try{return window.self!==window.top}catch{return true}}function M(e){return c(e,We)}function Te(e){return I(e,We)}function Be(e){let t=e.RewardPoolAddress;return t||null}async function Se(e,t,n,r){return await e.publicClient.readContract({address:t,abi:de,functionName:"allowance",args:[e.account,n]})>=r?null:S(e,{address:t,abi:de,functionName:"approve",args:[n,r]})}async function pe(e){let{client:t,clients:n,network:r,tokenAddress:o,amount:i,titleID:d,category:l}=e;if(N())return M("approve");let a=t.auth.context?.userID;if(!a)return c("approve","Not logged in.");let u=Be(r);if(!u)return c("approve","Network has no RewardPoolAddress.");if(i<=0n)return c("approve","Amount must be positive.");try{await Se(n,o,u,i);}catch(f){return c("approve",x(f))}let p;try{p=await S(n,{address:u,abi:ee,functionName:"depositERC20",args:[o,i,a,d,l??""]});}catch(f){return c("deposit-onchain",x(f))}let m=await t.blockchain.depositToken(r.NetworkID??"",p);return m.ok?{ok:true,onChainTxHash:p,data:m.data}:c("report",m.error,{onChainTxHash:p})}async function ue(e){let{client:t,clients:n,network:r,nftContractAddress:o,tokenId:i,amount:d,titleID:l,category:a}=e;if(N())return M("deposit-onchain");let u=t.auth.context?.userID;if(!u)return c("deposit-onchain","Not logged in.");let p=Be(r);if(!p)return c("deposit-onchain","Network has no RewardPoolAddress.");if(d<=0n)return c("deposit-onchain","Amount must be positive.");let m=Ne(u,l,a),f;try{f=await S(n,{address:o,abi:Ie,functionName:"safeTransferFrom",args:[n.account,p,i,d,m]});}catch(y){return c("deposit-onchain",x(y))}let h=await t.blockchain.depositNFT(r.NetworkID??"",f);return h.ok?{ok:true,onChainTxHash:f,data:h.data}:c("report",h.error,{onChainTxHash:f})}function Re(e){return (e.Splits??[]).map(t=>({to:t.To,amount:BigInt(t.Amount??"0")}))}async function Fe(e,t){return S(e,{address:t.ContractAddress,abi:ee,functionName:"withdrawERC20",args:[t.TokenAddress,t.WalletAddress,BigInt(t.Amount??"0"),BigInt(t.BurnAmount??"0"),Re(t),BigInt(t.Nonce??"0"),t.Signature??"0x",t.UserID??"",t.TitleID??"",t.Category??"",BigInt(t.Deadline??"0")]})}async function Le(e,t){return S(e,{address:t.ContractAddress,abi:Pe,functionName:"withdrawERC1155Mint",args:[t.TokenAddress,t.WalletAddress,BigInt(t.TokenId??"0"),BigInt(t.Amount??"0"),Re(t),BigInt(t.Nonce??"0"),t.Signature??"0x",t.UserID??"",t.TitleID??"",t.Category??"",BigInt(t.Deadline??"0")]})}async function me(e){let{client:t,clients:n,currencyID:r,networkID:o,walletAddress:i,amount:d,category:l}=e;if(N())return M("request");let a=await t.blockchain.requestTokenWithdrawal(r,o,i,d,l);if(!a.ok)return c("request",a.error);let u=a.data.EvmSignature,p=a.data.TitleTransactionID??void 0;if(!u)return c("request","Withdrawal response carried no EVM signature.",{titleTransactionID:p});let m;try{m=await Fe(n,u);}catch(h){return c("withdraw-onchain",x(h),{titleTransactionID:p})}let f=await He(t,p,m);return f.ok?{ok:true,onChainTxHash:m,data:a.data}:f}async function fe(e){let{client:t,clients:n,itemID:r,networkID:o,walletAddress:i,amount:d,category:l}=e;if(N())return M("request");let a=await t.blockchain.requestNFTWithdrawal(r,o,i,d,l);if(!a.ok)return c("request",a.error);let u=a.data.EvmSignature,p=a.data.TitleTransactionID??void 0;if(!u)return c("request","Withdrawal response carried no EVM signature.",{titleTransactionID:p});let m;try{m=await Le(n,u);}catch(h){return c("withdraw-onchain",x(h),{titleTransactionID:p})}let f=await He(t,p,m);return f.ok?{ok:true,onChainTxHash:m,data:a.data}:f}async function He(e,t,n){if(!t)return c("confirm","Missing TitleTransactionID.",{onChainTxHash:n});let r=await e.blockchain.confirmWithdrawal(t,n);return r.ok?{ok:true,onChainTxHash:n,data:r.data}:c("confirm",r.error,{onChainTxHash:n,titleTransactionID:t})}async function K(e){let{client:t,clients:n,networkID:r}=e;if(N())return Te("challenge");let o=e.walletAddress??n.account,i=await t.auth.requestWalletChallenge(o,r);if(!i.ok)return I("challenge",i.error);let d;try{d=await n.walletClient.signMessage({account:n.account,message:i.data.Message});}catch(a){return I("sign",x(a))}let l=await t.auth.loginWithWallet(o,r,d);return l.ok?{ok:true,data:l.data}:I("login",l.error)}function te(){let{address:e}=wagmi.useAccount(),t=wagmi.usePublicClient(),{data:n}=wagmi.useWalletClient();return !e||!t||!n?null:{account:e,publicClient:t,walletClient:n}}var _="Wallet not connected.";function ge(e,t){let n=te();return {connected:!!n,account:n?.account??null,loginWithWallet:(r,o)=>n?K({client:e,clients:n,networkID:r,walletAddress:o}):Promise.resolve(I("challenge",_)),depositToken:r=>n?pe({client:e,clients:n,titleID:t,...r}):Promise.resolve(c("approve",_)),depositNft:r=>n?ue({client:e,clients:n,titleID:t,...r}):Promise.resolve(c("deposit-onchain",_)),withdrawToken:r=>n?me({client:e,clients:n,...r}):Promise.resolve(c("withdraw-onchain",_)),withdrawNft:r=>n?fe({client:e,clients:n,...r}):Promise.resolve(c("withdraw-onchain",_))}}function wt(e){let{wagmiConfig:t,...n}=e;return jsxRuntime.jsx(U,{wagmiConfig:t,children:jsxRuntime.jsx(Ue,{...n})})}function ht(e){return e instanceof Error&&(e.name==="ConnectorAlreadyConnectedError"||e.message.includes("already connected"))}function Ct(e){let t="Wallet sign-in failed. Please try again.";return e instanceof Error?e.name==="ProviderNotFoundError"||/provider not found/i.test(e.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.":e.name==="UserRejectedRequestError"||/user (rejected|denied|cancelled|canceled)/i.test(e.message)?"Request declined in the wallet.":/timed? ?out/i.test(e.message)?"The wallet did not respond. Open your wallet and try again.":t:t}async function Oe(e){let t=await actions.getWalletClient(e).catch(()=>null);if(!t)return null;let n=actions.getPublicClient(e);return n?{account:t.account.address,publicClient:n,walletClient:t}:null}function bt(e,t=18e4){return actions.getAccount(e).isConnected?Promise.resolve(true):new Promise(n=>{let r=false,o=l=>{r||(r=true,i(),clearTimeout(d),n(l));},i=actions.watchAccount(e,{onChange:l=>{l.isConnected&&o(true);}}),d=setTimeout(()=>o(false),t);})}function vt(e,t=8e3){let n=r=>r==="reconnecting"||r==="connecting";return n(actions.getAccount(e).status)?new Promise(r=>{let o=false,i=()=>{o||(o=true,d(),clearTimeout(l),r());},d=actions.watchAccount(e,{onChange:a=>{n(a.status)||i();}}),l=setTimeout(i,t);}):Promise.resolve()}function kt(e){let t=o=>e.find(i=>i.id===o||i.type===o),n=t("injected"),r=typeof window<"u"&&window.ethereum!=null;return n&&r?n:t("walletConnect")??n??e[0]}var Et=9e4;async function At(e){try{let r=(await actions.getAccount(e).connector?.getProvider?.())?.session?.peer?.metadata?.redirect,o=r?.native||r?.universal;return !o||typeof window>"u"?!1:(window.location.href=o,!0)}catch{return false}}function xt(e,t){return new Promise((n,r)=>{let o=setTimeout(()=>r(new Error("The wallet request timed out.")),t);e.then(i=>{clearTimeout(o),n(i);},i=>{clearTimeout(o),r(i instanceof Error?i:new Error(String(i)));});})}function Ue(e){let{client:t,networkID:n,onAuthenticated:r,disabled:o,label:i,style:d,autoStart:l}=e,a=wagmi.useConfig(),{isConnected:u}=wagmi.useAccount(),{connectAsync:p,connectors:m}=wagmi.useConnect(),f=te(),[h,y]=react$1.useState(false),[D,C]=react$1.useState(null),[O,E]=react$1.useState(false),G=react$1.useRef(0),F=react$1.useRef(false),j=async()=>{let T=++G.current,P=()=>G.current===T;y(true),C(null);try{if(await vt(a),!P())return;if(!actions.getAccount(a).isConnected){let k=se();if(k){if(await k.open(),!await bt(a)){C("No wallet was connected.");return}}else {let ie=kt(m);if(!ie){C("No wallet connector is configured.");return}try{await p({connector:ie});}catch(B){if(!ht(B))throw B}}}let b=f??await Oe(a);if(!b&&actions.getAccount(a).isConnected&&(await new Promise(k=>setTimeout(k,300)),b=await Oe(a),!P()))return;if(!b){C("Wallet client is not available.");return}E(!0);let A=await xt(K({client:t,clients:b,networkID:n}),Et);if(!P())return;if(A.ok){r();return}C(A.stage==="sign"?"Signature declined.":A.error??"Wallet sign-in failed.");}catch(b){if(!P())return;console.error("[idosgames/wallet] wallet sign-in failed:",b),C(Ct(b));}finally{P()&&(y(false),E(false));}};react$1.useEffect(()=>{!l||F.current||(F.current=true,j());},[l]);let L=async()=>{await At(a)||await se()?.open();};return jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[jsxRuntime.jsx("button",{type:"button",onClick:()=>{O?L():j();},disabled:o,style:{...Dt,...o?{opacity:.6,cursor:"default"}:null,...d},children:O?"Waiting for signature \u2014 tap to open wallet":h?"Check your wallet\u2026":u?i??"Sign in with wallet":"Connect wallet"}),D&&jsxRuntime.jsx("span",{role:"alert",style:Pt,children:D})]})}var Dt={padding:"11px 16px",borderRadius:"8px",border:"none",background:"#4c3fa8",color:"#fff",font:"inherit",fontWeight:600,cursor:"pointer"},Pt={display:"block",marginTop:"6px",color:"#ff9b9b",fontSize:"13px",textAlign:"center"};var Lt={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"},Ht={fontWeight:700,fontSize:16},R={fontSize:12,opacity:.7},we={background:"#052e7e",border:"1px solid #1e59c8",borderRadius:8,color:"#fff",padding:"8px 10px",width:"100%",boxSizing:"border-box"},Mt={background:"#0d66fe",color:"#fff",border:"none",borderRadius:8,padding:"9px 14px",fontWeight:700,cursor:"pointer"},re={background:"#1e59c8",color:"#fff",border:"none",borderRadius:8,padding:"7px 12px",fontWeight:600,cursor:"pointer"},he={display:"flex",gap:8};function Ot(e){let{client:t,walletConnectProjectId:n,appName:r,onClose:o,style:i}=e,[d,l]=react$1.useState(n??"");react$1.useEffect(()=>{if(n)return;let u=true;return (async()=>{let p=await t.blockchain.getDefinitions();if(!u||!p.ok)return;let m=p.data.Blockchain?.WalletLogin?.WalletConnectProjectId;m&&l(m);})(),()=>{u=false;}},[t,n]);let a=react$1.useMemo(()=>ce({walletConnectProjectId:d||void 0,appName:r}),[d,r]);return jsxRuntime.jsx(U,{wagmiConfig:a,children:jsxRuntime.jsx(Gt,{client:t,appName:r,onClose:o,style:i})})}function Gt({client:e,onClose:t,style:n}){let r=ge(e,e.titleID),{address:o,isConnected:i,chainId:d}=wagmi.useAccount(),{connect:l,connectors:a}=wagmi.useConnect(),{disconnect:u}=wagmi.useDisconnect(),{switchChainAsync:p}=wagmi.useSwitchChain(),[,m]=react$1.useReducer(s=>s+1,0),[f,h]=react$1.useState({}),[y,D]=react$1.useState({}),[C,O]=react$1.useState(""),[E,G]=react$1.useState(""),[F,j]=react$1.useState(""),[L,T]=react$1.useState(false),[P,b]=react$1.useState(null);react$1.useEffect(()=>{let s=true;return (async()=>{let w=await e.blockchain.getDefinitions();if(await e.blockchain.getUserState(),!s||!w.ok)return;let H=w.data.Blockchain?.Networks??{},ae={};for(let[Ve,be]of Object.entries(H))be.Type==="EVM"&&(ae[Ve]=be);h(ae),D(w.data.CryptoCurrencies??{});let ze=Object.keys(ae)[0]??"";O(ze);})(),()=>{s=false;}},[e]),react$1.useEffect(()=>e.on("user:anyUpdated",m),[e]);let A=react$1.useMemo(()=>Object.entries(y).filter(([,s])=>s.Networks?.some(w=>w.NetworkID===C&&!!w.ContractAddress)),[y,C]);react$1.useEffect(()=>{let s=A[0]?.[0]??"";G(w=>A.some(([H])=>H===w)?w:s);},[A]);let k=C?f[C]:void 0,B=(E?y[E]:void 0)?.Networks?.find(s=>s.NetworkID===C),_e=E?e.data.user.getCryptoCurrencyAmount(E):"0";async function Ce(){if(!k?.ChainID||d===k.ChainID)return true;try{return await p({chainId:k.ChainID}),!0}catch{return b({ok:false,stage:"approve",error:`Switch your wallet to chain ${k.ChainID} to continue.`}),false}}async function qe(){if(!(!k||!B?.ContractAddress)){if(T(true),b(null),await Ce()){let s=B.Decimals??18,w;try{w=viem.parseUnits(F||"0",s);}catch{b({ok:false,stage:"approve",error:"Invalid amount."}),T(false);return}let H=await r.depositToken({network:k,tokenAddress:B.ContractAddress,amount:w});b(H),H.ok&&await e.blockchain.getUserState();}T(false);}}async function je(){if(!(!k||!r.account)){if(T(true),b(null),await Ce()){let s=await r.withdrawToken({currencyID:E,networkID:C,walletAddress:r.account,amount:F||"0"});b(s),s.ok&&await e.blockchain.getUserState();}T(false);}}return jsxRuntime.jsxs("div",{style:{...Lt,...n},children:[jsxRuntime.jsxs("div",{style:{...he,justifyContent:"space-between"},children:[jsxRuntime.jsx("span",{style:Ht,children:"Crypto wallet"}),t&&jsxRuntime.jsx("button",{type:"button",style:re,onClick:t,children:"\u2715"})]}),i?jsxRuntime.jsxs("div",{style:he,children:[jsxRuntime.jsxs("span",{style:{...R,flex:1,alignSelf:"center"},children:[o?.slice(0,6),"\u2026",o?.slice(-4)]}),jsxRuntime.jsx("button",{type:"button",style:re,onClick:()=>u(),children:"Disconnect"})]}):jsxRuntime.jsxs("div",{style:{display:"flex",flexDirection:"column",gap:6},children:[jsxRuntime.jsx("span",{style:R,children:"Connect a browser or mobile wallet"}),a.map(s=>jsxRuntime.jsx("button",{type:"button",style:re,onClick:()=>l({connector:s}),children:s.name},s.uid))]}),Object.keys(f).length===0?jsxRuntime.jsx("span",{style:R,children:"No EVM networks configured for this title."}):jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[jsxRuntime.jsxs("div",{children:[jsxRuntime.jsx("div",{style:R,children:"Network"}),jsxRuntime.jsx("select",{style:we,value:C,onChange:s=>O(s.target.value),children:Object.entries(f).map(([s,w])=>jsxRuntime.jsx("option",{value:s,children:w.DisplayName??s},s))})]}),jsxRuntime.jsxs("div",{children:[jsxRuntime.jsx("div",{style:R,children:"Token"}),jsxRuntime.jsxs("select",{style:we,value:E,onChange:s=>G(s.target.value),children:[A.length===0&&jsxRuntime.jsx("option",{value:"",children:"\u2014 no depositable tokens \u2014"}),A.map(([s,w])=>jsxRuntime.jsx("option",{value:s,children:w.DisplayName??s},s))]})]}),jsxRuntime.jsxs("div",{style:R,children:["In-game balance: ",jsxRuntime.jsx("b",{children:_e})," ",E]}),jsxRuntime.jsxs("div",{children:[jsxRuntime.jsx("div",{style:R,children:"Amount"}),jsxRuntime.jsx("input",{style:we,inputMode:"decimal",placeholder:"0.0",value:F,onChange:s=>j(s.target.value)})]}),jsxRuntime.jsxs("div",{style:he,children:[jsxRuntime.jsx("button",{type:"button",style:{...Mt,flex:1,opacity:L?.6:1},disabled:L||!i||!B?.ContractAddress,onClick:()=>{qe();},children:"Deposit"}),jsxRuntime.jsx("button",{type:"button",style:{...re,flex:1,opacity:L?.6:1},disabled:L||!i||!E,onClick:()=>{je();},children:"Withdraw"})]})]}),P&&jsxRuntime.jsx(Ut,{result:P})]})}function Ut({result:e}){let t={fontSize:12,borderRadius:8,padding:"8px 10px",background:e.ok?"#1e3a2a":"#3a1e28",color:e.ok?"#8ef0b0":"#f2a0b4",wordBreak:"break-all"};return e.ok?jsxRuntime.jsxs("div",{style:t,children:["\u2713 Done \xB7 tx ",e.onChainTxHash]}):jsxRuntime.jsxs("div",{style:t,children:["\u2715 [",e.stage,"] ",e.error,e.titleTransactionID?` \xB7 already debited (tx ${e.titleTransactionID}) \u2014 retry/confirm, don't re-request`:""]})}
|
|
2
|
+
exports.DEFAULT_EVM_CHAINS=xe;exports.IDosGamesWalletProvider=U;exports.WalletLogin=wt;exports.WalletLoginButton=Ue;exports.WalletPanel=Ot;exports.arbitrum=Q;exports.base=Y;exports.bsc=V;exports.chainById=$e;exports.createEvmWalletConfig=ce;exports.idosChains=ve;exports.mainnet=z;exports.optimism=Z;exports.polygon=$;exports.polygonAmoy=X;exports.sepolia=J;exports.useEvmBridge=ge;exports.useEvmBridgeClients=te;
|
package/dist/react/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import {p as p$1,o as o$1,j as j$2,h,q as q$1}from'../chunk-JDC3JPIT.js';import {a,b as b$1}from'../chunk-ZL42KPPC.js';import {j as j$1,k,l,m,n,o,p,q,t,b,c}from'../chunk-OZXERZ5Q.js';export{n as arbitrum,m as base,k as bsc,s as chainById,r as idosChains,j as mainnet,o as optimism,l as polygon,q as polygonAmoy,p as sepolia}from'../chunk-OZXERZ5Q.js';import {http,createConfig,WagmiProvider,useAccount,usePublicClient,useWalletClient,useConfig,useConnect,useDisconnect,useSwitchChain}from'wagmi';import {injected,coinbaseWallet}from'wagmi/connectors';import {WagmiAdapter}from'@reown/appkit-adapter-wagmi';import {createAppKit}from'@reown/appkit/react';import {QueryClient,QueryClientProvider}from'@tanstack/react-query';import {useState,useRef,useEffect,useMemo,useReducer}from'react';import {jsx,jsxs,Fragment}from'react/jsx-runtime';import {getAccount,watchAccount,getWalletClient,getPublicClient}from'wagmi/actions';import {parseUnits}from'viem';var we=[j$1,k,l,m,n,o,p,q],oe=new Map;function ne(e){let{chains:o=we,walletConnectProjectId:t$1,appName:n,appUrl:i,appIcon:s,transports:g,connectors:l}=e,c=t$1??"__extension_only__";if(!l){let p=oe.get(c);if(p)return p}let C={};for(let p of o)C[p.id]=g?.[p.id]??http();let h=i??(typeof window<"u"?window.location.origin:""),b={name:n??"iDosGames",description:n??"iDosGames game",url:h,icons:s?[s]:[]};if(t$1&&!l){let p=o.map(t),k=new WagmiAdapter({networks:p,projectId:t$1,transports:C});return a(createAppKit({adapters:[k],networks:p,projectId:t$1,metadata:b,features:{analytics:false,email:false,socials:false}})),oe.set(c,k.wagmiConfig),k.wagmiConfig}let D=l??[injected(),coinbaseWallet({appName:n??"iDosGames"})],I=createConfig({chains:o,connectors:D,transports:C});return l||oe.set(c,I),I}function j(e){let{wagmiConfig:o,queryClient:t,children:n}=e,[i]=useState(()=>t??new QueryClient);return jsx(WagmiProvider,{config:o,children:jsx(QueryClientProvider,{client:i,children:n})})}function U(){let{address:e}=useAccount(),o=usePublicClient(),{data:t}=useWalletClient();return !e||!o||!t?null:{account:e,publicClient:o,walletClient:t}}var L="Wallet not connected.";function re(e,o){let t=U();return {connected:!!t,account:t?.account??null,loginWithWallet:(n,i)=>t?q$1({client:e,clients:t,networkID:n,walletAddress:i}):Promise.resolve(c("challenge",L)),depositToken:n=>t?h({client:e,clients:t,titleID:o,...n}):Promise.resolve(b("approve",L)),depositNft:n=>t?j$2({client:e,clients:t,titleID:o,...n}):Promise.resolve(b("deposit-onchain",L)),withdrawToken:n=>t?o$1({client:e,clients:t,...n}):Promise.resolve(b("withdraw-onchain",L)),withdrawNft:n=>t?p$1({client:e,clients:t,...n}):Promise.resolve(b("withdraw-onchain",L))}}function Je(e){let{wagmiConfig:o,...t}=e;return jsx(j,{wagmiConfig:o,children:jsx(ke,{...t})})}function Xe(e){return e instanceof Error&&(e.name==="ConnectorAlreadyConnectedError"||e.message.includes("already connected"))}function Ye(e){let o="Wallet sign-in failed. Please try again.";return e instanceof Error?e.name==="ProviderNotFoundError"||/provider not found/i.test(e.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.":e.name==="UserRejectedRequestError"||/user (rejected|denied|cancelled|canceled)/i.test(e.message)?"Request declined in the wallet.":/timed? ?out/i.test(e.message)?"The wallet did not respond. Open your wallet and try again.":o:o}async function he(e){let o=await getWalletClient(e).catch(()=>null);if(!o)return null;let t=getPublicClient(e);return t?{account:o.account.address,publicClient:t,walletClient:o}:null}function Ze(e,o=18e4){return getAccount(e).isConnected?Promise.resolve(true):new Promise(t=>{let n=false,i=l=>{n||(n=true,s(),clearTimeout(g),t(l));},s=watchAccount(e,{onChange:l=>{l.isConnected&&i(true);}}),g=setTimeout(()=>i(false),o);})}function et(e,o=8e3){let t=n=>n==="reconnecting"||n==="connecting";return t(getAccount(e).status)?new Promise(n=>{let i=false,s=()=>{i||(i=true,g(),clearTimeout(l),n());},g=watchAccount(e,{onChange:c=>{t(c.status)||s();}}),l=setTimeout(s,o);}):Promise.resolve()}function tt(e){let o=i=>e.find(s=>s.id===i||s.type===i),t=o("injected"),n=typeof window<"u"&&window.ethereum!=null;return t&&n?t:o("walletConnect")??t??e[0]}var ot=9e4;async function nt(e){try{let n=(await getAccount(e).connector?.getProvider?.())?.session?.peer?.metadata?.redirect,i=n?.native||n?.universal;return !i||typeof window>"u"?!1:(window.location.href=i,!0)}catch{return false}}function rt(e,o){return new Promise((t,n)=>{let i=setTimeout(()=>n(new Error("The wallet request timed out.")),o);e.then(s=>{clearTimeout(i),t(s);},s=>{clearTimeout(i),n(s instanceof Error?s:new Error(String(s)));});})}function ke(e){let{client:o,networkID:t,onAuthenticated:n,disabled:i,label:s,style:g,autoStart:l}=e,c=useConfig(),{isConnected:C}=useAccount(),{connectAsync:h,connectors:b}=useConnect(),D=U(),[I,p]=useState(false),[k,u]=useState(null),[A,w]=useState(false),B=useRef(0),T=useRef(false),F=async()=>{let S=++B.current,P=()=>B.current===S;p(true),u(null);try{if(await et(c),!P())return;if(!getAccount(c).isConnected){let y=b$1();if(y){if(await y.open(),!await Ze(c)){u("No wallet was connected.");return}}else {let z=tt(b);if(!z){u("No wallet connector is configured.");return}try{await h({connector:z});}catch(N){if(!Xe(N))throw N}}}let f=D??await he(c);if(!f&&getAccount(c).isConnected&&(await new Promise(y=>setTimeout(y,300)),f=await he(c),!P()))return;if(!f){u("Wallet client is not available.");return}w(!0);let v=await rt(q$1({client:o,clients:f,networkID:t}),ot);if(!P())return;if(v.ok){n();return}u(v.stage==="sign"?"Signature declined.":v.error??"Wallet sign-in failed.");}catch(f){if(!P())return;console.error("[idosgames/wallet] wallet sign-in failed:",f),u(Ye(f));}finally{P()&&(p(false),w(false));}};useEffect(()=>{!l||T.current||(T.current=true,F());},[l]);let x=async()=>{await nt(c)||await b$1()?.open();};return jsxs(Fragment,{children:[jsx("button",{type:"button",onClick:()=>{A?x():F();},disabled:i,style:{...it,...i?{opacity:.6,cursor:"default"}:null,...g},children:A?"Waiting for signature \u2014 tap to open wallet":I?"Check your wallet\u2026":C?s??"Sign in with wallet":"Connect wallet"}),k&&jsx("span",{role:"alert",style:st,children:k})]})}var it={padding:"11px 16px",borderRadius:"8px",border:"none",background:"#4c3fa8",color:"#fff",font:"inherit",fontWeight:600,cursor:"pointer"},st={display:"block",marginTop:"6px",color:"#ff9b9b",fontSize:"13px",textAlign:"center"};var gt={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"},yt={fontWeight:700,fontSize:16},E={fontSize:12,opacity:.7},se={background:"#052e7e",border:"1px solid #1e59c8",borderRadius:8,color:"#fff",padding:"8px 10px",width:"100%",boxSizing:"border-box"},wt={background:"#0d66fe",color:"#fff",border:"none",borderRadius:8,padding:"9px 14px",fontWeight:700,cursor:"pointer"},K={background:"#1e59c8",color:"#fff",border:"none",borderRadius:8,padding:"7px 12px",fontWeight:600,cursor:"pointer"},ae={display:"flex",gap:8};function Ct(e){let{client:o,walletConnectProjectId:t,appName:n,onClose:i,style:s}=e,[g,l]=useState(t??"");useEffect(()=>{if(t)return;let C=true;return (async()=>{let h=await o.blockchain.getDefinitions();if(!C||!h.ok)return;let b=h.data.Blockchain?.WalletLogin?.WalletConnectProjectId;b&&l(b);})(),()=>{C=false;}},[o,t]);let c=useMemo(()=>ne({walletConnectProjectId:g||void 0,appName:n}),[g,n]);return jsx(j,{wagmiConfig:c,children:jsx(vt,{client:o,appName:n,onClose:i,style:s})})}function vt({client:e,onClose:o,style:t}){let n=re(e,e.titleID),{address:i,isConnected:s,chainId:g}=useAccount(),{connect:l,connectors:c}=useConnect(),{disconnect:C}=useDisconnect(),{switchChainAsync:h}=useSwitchChain(),[,b]=useReducer(r=>r+1,0),[D,I]=useState({}),[p,k]=useState({}),[u,A]=useState(""),[w,B]=useState(""),[T,F]=useState(""),[x,S]=useState(false),[P,f]=useState(null);useEffect(()=>{let r=true;return (async()=>{let d=await e.blockchain.getDefinitions();if(await e.blockchain.getUserState(),!r||!d.ok)return;let R=d.data.Blockchain?.Networks??{},H={};for(let[Ee,ce]of Object.entries(R))ce.Type==="EVM"&&(H[Ee]=ce);I(H),k(d.data.CryptoCurrencies??{});let Ne=Object.keys(H)[0]??"";A(Ne);})(),()=>{r=false;}},[e]),useEffect(()=>e.on("user:anyUpdated",b),[e]);let v=useMemo(()=>Object.entries(p).filter(([,r])=>r.Networks?.some(d=>d.NetworkID===u&&!!d.ContractAddress)),[p,u]);useEffect(()=>{let r=v[0]?.[0]??"";B(d=>v.some(([R])=>R===d)?d:r);},[v]);let y=u?D[u]:void 0,N=(w?p[w]:void 0)?.Networks?.find(r=>r.NetworkID===u),We=w?e.data.user.getCryptoCurrencyAmount(w):"0";async function le(){if(!y?.ChainID||g===y.ChainID)return true;try{return await h({chainId:y.ChainID}),!0}catch{return f({ok:false,stage:"approve",error:`Switch your wallet to chain ${y.ChainID} to continue.`}),false}}async function De(){if(!(!y||!N?.ContractAddress)){if(S(true),f(null),await le()){let r=N.Decimals??18,d;try{d=parseUnits(T||"0",r);}catch{f({ok:false,stage:"approve",error:"Invalid amount."}),S(false);return}let R=await n.depositToken({network:y,tokenAddress:N.ContractAddress,amount:d});f(R),R.ok&&await e.blockchain.getUserState();}S(false);}}async function Se(){if(!(!y||!n.account)){if(S(true),f(null),await le()){let r=await n.withdrawToken({currencyID:w,networkID:u,walletAddress:n.account,amount:T||"0"});f(r),r.ok&&await e.blockchain.getUserState();}S(false);}}return jsxs("div",{style:{...gt,...t},children:[jsxs("div",{style:{...ae,justifyContent:"space-between"},children:[jsx("span",{style:yt,children:"Crypto wallet"}),o&&jsx("button",{type:"button",style:K,onClick:o,children:"\u2715"})]}),s?jsxs("div",{style:ae,children:[jsxs("span",{style:{...E,flex:1,alignSelf:"center"},children:[i?.slice(0,6),"\u2026",i?.slice(-4)]}),jsx("button",{type:"button",style:K,onClick:()=>C(),children:"Disconnect"})]}):jsxs("div",{style:{display:"flex",flexDirection:"column",gap:6},children:[jsx("span",{style:E,children:"Connect a browser or mobile wallet"}),c.map(r=>jsx("button",{type:"button",style:K,onClick:()=>l({connector:r}),children:r.name},r.uid))]}),Object.keys(D).length===0?jsx("span",{style:E,children:"No EVM networks configured for this title."}):jsxs(Fragment,{children:[jsxs("div",{children:[jsx("div",{style:E,children:"Network"}),jsx("select",{style:se,value:u,onChange:r=>A(r.target.value),children:Object.entries(D).map(([r,d])=>jsx("option",{value:r,children:d.DisplayName??r},r))})]}),jsxs("div",{children:[jsx("div",{style:E,children:"Token"}),jsxs("select",{style:se,value:w,onChange:r=>B(r.target.value),children:[v.length===0&&jsx("option",{value:"",children:"\u2014 no depositable tokens \u2014"}),v.map(([r,d])=>jsx("option",{value:r,children:d.DisplayName??r},r))]})]}),jsxs("div",{style:E,children:["In-game balance: ",jsx("b",{children:We})," ",w]}),jsxs("div",{children:[jsx("div",{style:E,children:"Amount"}),jsx("input",{style:se,inputMode:"decimal",placeholder:"0.0",value:T,onChange:r=>F(r.target.value)})]}),jsxs("div",{style:ae,children:[jsx("button",{type:"button",style:{...wt,flex:1,opacity:x?.6:1},disabled:x||!s||!N?.ContractAddress,onClick:()=>{De();},children:"Deposit"}),jsx("button",{type:"button",style:{...K,flex:1,opacity:x?.6:1},disabled:x||!s||!w,onClick:()=>{Se();},children:"Withdraw"})]})]}),P&&jsx(ht,{result:P})]})}function ht({result:e}){let o={fontSize:12,borderRadius:8,padding:"8px 10px",background:e.ok?"#1e3a2a":"#3a1e28",color:e.ok?"#8ef0b0":"#f2a0b4",wordBreak:"break-all"};return e.ok?jsxs("div",{style:o,children:["\u2713 Done \xB7 tx ",e.onChainTxHash]}):jsxs("div",{style:o,children:["\u2715 [",e.stage,"] ",e.error,e.titleTransactionID?` \xB7 already debited (tx ${e.titleTransactionID}) \u2014 retry/confirm, don't re-request`:""]})}export{we as DEFAULT_EVM_CHAINS,j as IDosGamesWalletProvider,Je as WalletLogin,ke as WalletLoginButton,Ct as WalletPanel,ne as createEvmWalletConfig,re as useEvmBridge,U as useEvmBridgeClients};
|
|
1
|
+
import {p as p$1,o as o$1,j as j$2,h,q as q$1}from'../chunk-RTP7IL25.js';import {a,b as b$1}from'../chunk-ZL42KPPC.js';import {j as j$1,k,l,m,n,o,p,q,t,b,c}from'../chunk-IEWZH6XD.js';export{n as arbitrum,m as base,k as bsc,s as chainById,r as idosChains,j as mainnet,o as optimism,l as polygon,q as polygonAmoy,p as sepolia}from'../chunk-IEWZH6XD.js';import {http,createConfig,WagmiProvider,useAccount,usePublicClient,useWalletClient,useConfig,useConnect,useDisconnect,useSwitchChain}from'wagmi';import {injected,coinbaseWallet}from'wagmi/connectors';import {WagmiAdapter}from'@reown/appkit-adapter-wagmi';import {createAppKit}from'@reown/appkit/react';import {QueryClient,QueryClientProvider}from'@tanstack/react-query';import {useState,useRef,useEffect,useMemo,useReducer}from'react';import {jsx,jsxs,Fragment}from'react/jsx-runtime';import {getAccount,watchAccount,getWalletClient,getPublicClient}from'wagmi/actions';import {parseUnits}from'viem';var we=[j$1,k,l,m,n,o,p,q],oe=new Map;function ne(e){let{chains:o=we,walletConnectProjectId:t$1,appName:n,appUrl:i,appIcon:s,transports:g,connectors:l}=e,c=t$1??"__extension_only__";if(!l){let p=oe.get(c);if(p)return p}let C={};for(let p of o)C[p.id]=g?.[p.id]??http();let h=i??(typeof window<"u"?window.location.origin:""),b={name:n??"iDosGames",description:n??"iDosGames game",url:h,icons:s?[s]:[]};if(t$1&&!l){let p=o.map(t),k=new WagmiAdapter({networks:p,projectId:t$1,transports:C});return a(createAppKit({adapters:[k],networks:p,projectId:t$1,metadata:b,features:{analytics:false,email:false,socials:false}})),oe.set(c,k.wagmiConfig),k.wagmiConfig}let D=l??[injected(),coinbaseWallet({appName:n??"iDosGames"})],I=createConfig({chains:o,connectors:D,transports:C});return l||oe.set(c,I),I}function j(e){let{wagmiConfig:o,queryClient:t,children:n}=e,[i]=useState(()=>t??new QueryClient);return jsx(WagmiProvider,{config:o,children:jsx(QueryClientProvider,{client:i,children:n})})}function U(){let{address:e}=useAccount(),o=usePublicClient(),{data:t}=useWalletClient();return !e||!o||!t?null:{account:e,publicClient:o,walletClient:t}}var L="Wallet not connected.";function re(e,o){let t=U();return {connected:!!t,account:t?.account??null,loginWithWallet:(n,i)=>t?q$1({client:e,clients:t,networkID:n,walletAddress:i}):Promise.resolve(c("challenge",L)),depositToken:n=>t?h({client:e,clients:t,titleID:o,...n}):Promise.resolve(b("approve",L)),depositNft:n=>t?j$2({client:e,clients:t,titleID:o,...n}):Promise.resolve(b("deposit-onchain",L)),withdrawToken:n=>t?o$1({client:e,clients:t,...n}):Promise.resolve(b("withdraw-onchain",L)),withdrawNft:n=>t?p$1({client:e,clients:t,...n}):Promise.resolve(b("withdraw-onchain",L))}}function Je(e){let{wagmiConfig:o,...t}=e;return jsx(j,{wagmiConfig:o,children:jsx(ke,{...t})})}function Xe(e){return e instanceof Error&&(e.name==="ConnectorAlreadyConnectedError"||e.message.includes("already connected"))}function Ye(e){let o="Wallet sign-in failed. Please try again.";return e instanceof Error?e.name==="ProviderNotFoundError"||/provider not found/i.test(e.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.":e.name==="UserRejectedRequestError"||/user (rejected|denied|cancelled|canceled)/i.test(e.message)?"Request declined in the wallet.":/timed? ?out/i.test(e.message)?"The wallet did not respond. Open your wallet and try again.":o:o}async function he(e){let o=await getWalletClient(e).catch(()=>null);if(!o)return null;let t=getPublicClient(e);return t?{account:o.account.address,publicClient:t,walletClient:o}:null}function Ze(e,o=18e4){return getAccount(e).isConnected?Promise.resolve(true):new Promise(t=>{let n=false,i=l=>{n||(n=true,s(),clearTimeout(g),t(l));},s=watchAccount(e,{onChange:l=>{l.isConnected&&i(true);}}),g=setTimeout(()=>i(false),o);})}function et(e,o=8e3){let t=n=>n==="reconnecting"||n==="connecting";return t(getAccount(e).status)?new Promise(n=>{let i=false,s=()=>{i||(i=true,g(),clearTimeout(l),n());},g=watchAccount(e,{onChange:c=>{t(c.status)||s();}}),l=setTimeout(s,o);}):Promise.resolve()}function tt(e){let o=i=>e.find(s=>s.id===i||s.type===i),t=o("injected"),n=typeof window<"u"&&window.ethereum!=null;return t&&n?t:o("walletConnect")??t??e[0]}var ot=9e4;async function nt(e){try{let n=(await getAccount(e).connector?.getProvider?.())?.session?.peer?.metadata?.redirect,i=n?.native||n?.universal;return !i||typeof window>"u"?!1:(window.location.href=i,!0)}catch{return false}}function rt(e,o){return new Promise((t,n)=>{let i=setTimeout(()=>n(new Error("The wallet request timed out.")),o);e.then(s=>{clearTimeout(i),t(s);},s=>{clearTimeout(i),n(s instanceof Error?s:new Error(String(s)));});})}function ke(e){let{client:o,networkID:t,onAuthenticated:n,disabled:i,label:s,style:g,autoStart:l}=e,c=useConfig(),{isConnected:C}=useAccount(),{connectAsync:h,connectors:b}=useConnect(),D=U(),[I,p]=useState(false),[k,u]=useState(null),[A,w]=useState(false),B=useRef(0),T=useRef(false),F=async()=>{let S=++B.current,P=()=>B.current===S;p(true),u(null);try{if(await et(c),!P())return;if(!getAccount(c).isConnected){let y=b$1();if(y){if(await y.open(),!await Ze(c)){u("No wallet was connected.");return}}else {let z=tt(b);if(!z){u("No wallet connector is configured.");return}try{await h({connector:z});}catch(N){if(!Xe(N))throw N}}}let f=D??await he(c);if(!f&&getAccount(c).isConnected&&(await new Promise(y=>setTimeout(y,300)),f=await he(c),!P()))return;if(!f){u("Wallet client is not available.");return}w(!0);let v=await rt(q$1({client:o,clients:f,networkID:t}),ot);if(!P())return;if(v.ok){n();return}u(v.stage==="sign"?"Signature declined.":v.error??"Wallet sign-in failed.");}catch(f){if(!P())return;console.error("[idosgames/wallet] wallet sign-in failed:",f),u(Ye(f));}finally{P()&&(p(false),w(false));}};useEffect(()=>{!l||T.current||(T.current=true,F());},[l]);let x=async()=>{await nt(c)||await b$1()?.open();};return jsxs(Fragment,{children:[jsx("button",{type:"button",onClick:()=>{A?x():F();},disabled:i,style:{...it,...i?{opacity:.6,cursor:"default"}:null,...g},children:A?"Waiting for signature \u2014 tap to open wallet":I?"Check your wallet\u2026":C?s??"Sign in with wallet":"Connect wallet"}),k&&jsx("span",{role:"alert",style:st,children:k})]})}var it={padding:"11px 16px",borderRadius:"8px",border:"none",background:"#4c3fa8",color:"#fff",font:"inherit",fontWeight:600,cursor:"pointer"},st={display:"block",marginTop:"6px",color:"#ff9b9b",fontSize:"13px",textAlign:"center"};var gt={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"},yt={fontWeight:700,fontSize:16},E={fontSize:12,opacity:.7},se={background:"#052e7e",border:"1px solid #1e59c8",borderRadius:8,color:"#fff",padding:"8px 10px",width:"100%",boxSizing:"border-box"},wt={background:"#0d66fe",color:"#fff",border:"none",borderRadius:8,padding:"9px 14px",fontWeight:700,cursor:"pointer"},K={background:"#1e59c8",color:"#fff",border:"none",borderRadius:8,padding:"7px 12px",fontWeight:600,cursor:"pointer"},ae={display:"flex",gap:8};function Ct(e){let{client:o,walletConnectProjectId:t,appName:n,onClose:i,style:s}=e,[g,l]=useState(t??"");useEffect(()=>{if(t)return;let C=true;return (async()=>{let h=await o.blockchain.getDefinitions();if(!C||!h.ok)return;let b=h.data.Blockchain?.WalletLogin?.WalletConnectProjectId;b&&l(b);})(),()=>{C=false;}},[o,t]);let c=useMemo(()=>ne({walletConnectProjectId:g||void 0,appName:n}),[g,n]);return jsx(j,{wagmiConfig:c,children:jsx(vt,{client:o,appName:n,onClose:i,style:s})})}function vt({client:e,onClose:o,style:t}){let n=re(e,e.titleID),{address:i,isConnected:s,chainId:g}=useAccount(),{connect:l,connectors:c}=useConnect(),{disconnect:C}=useDisconnect(),{switchChainAsync:h}=useSwitchChain(),[,b]=useReducer(r=>r+1,0),[D,I]=useState({}),[p,k]=useState({}),[u,A]=useState(""),[w,B]=useState(""),[T,F]=useState(""),[x,S]=useState(false),[P,f]=useState(null);useEffect(()=>{let r=true;return (async()=>{let d=await e.blockchain.getDefinitions();if(await e.blockchain.getUserState(),!r||!d.ok)return;let R=d.data.Blockchain?.Networks??{},H={};for(let[Ee,ce]of Object.entries(R))ce.Type==="EVM"&&(H[Ee]=ce);I(H),k(d.data.CryptoCurrencies??{});let Ne=Object.keys(H)[0]??"";A(Ne);})(),()=>{r=false;}},[e]),useEffect(()=>e.on("user:anyUpdated",b),[e]);let v=useMemo(()=>Object.entries(p).filter(([,r])=>r.Networks?.some(d=>d.NetworkID===u&&!!d.ContractAddress)),[p,u]);useEffect(()=>{let r=v[0]?.[0]??"";B(d=>v.some(([R])=>R===d)?d:r);},[v]);let y=u?D[u]:void 0,N=(w?p[w]:void 0)?.Networks?.find(r=>r.NetworkID===u),We=w?e.data.user.getCryptoCurrencyAmount(w):"0";async function le(){if(!y?.ChainID||g===y.ChainID)return true;try{return await h({chainId:y.ChainID}),!0}catch{return f({ok:false,stage:"approve",error:`Switch your wallet to chain ${y.ChainID} to continue.`}),false}}async function De(){if(!(!y||!N?.ContractAddress)){if(S(true),f(null),await le()){let r=N.Decimals??18,d;try{d=parseUnits(T||"0",r);}catch{f({ok:false,stage:"approve",error:"Invalid amount."}),S(false);return}let R=await n.depositToken({network:y,tokenAddress:N.ContractAddress,amount:d});f(R),R.ok&&await e.blockchain.getUserState();}S(false);}}async function Se(){if(!(!y||!n.account)){if(S(true),f(null),await le()){let r=await n.withdrawToken({currencyID:w,networkID:u,walletAddress:n.account,amount:T||"0"});f(r),r.ok&&await e.blockchain.getUserState();}S(false);}}return jsxs("div",{style:{...gt,...t},children:[jsxs("div",{style:{...ae,justifyContent:"space-between"},children:[jsx("span",{style:yt,children:"Crypto wallet"}),o&&jsx("button",{type:"button",style:K,onClick:o,children:"\u2715"})]}),s?jsxs("div",{style:ae,children:[jsxs("span",{style:{...E,flex:1,alignSelf:"center"},children:[i?.slice(0,6),"\u2026",i?.slice(-4)]}),jsx("button",{type:"button",style:K,onClick:()=>C(),children:"Disconnect"})]}):jsxs("div",{style:{display:"flex",flexDirection:"column",gap:6},children:[jsx("span",{style:E,children:"Connect a browser or mobile wallet"}),c.map(r=>jsx("button",{type:"button",style:K,onClick:()=>l({connector:r}),children:r.name},r.uid))]}),Object.keys(D).length===0?jsx("span",{style:E,children:"No EVM networks configured for this title."}):jsxs(Fragment,{children:[jsxs("div",{children:[jsx("div",{style:E,children:"Network"}),jsx("select",{style:se,value:u,onChange:r=>A(r.target.value),children:Object.entries(D).map(([r,d])=>jsx("option",{value:r,children:d.DisplayName??r},r))})]}),jsxs("div",{children:[jsx("div",{style:E,children:"Token"}),jsxs("select",{style:se,value:w,onChange:r=>B(r.target.value),children:[v.length===0&&jsx("option",{value:"",children:"\u2014 no depositable tokens \u2014"}),v.map(([r,d])=>jsx("option",{value:r,children:d.DisplayName??r},r))]})]}),jsxs("div",{style:E,children:["In-game balance: ",jsx("b",{children:We})," ",w]}),jsxs("div",{children:[jsx("div",{style:E,children:"Amount"}),jsx("input",{style:se,inputMode:"decimal",placeholder:"0.0",value:T,onChange:r=>F(r.target.value)})]}),jsxs("div",{style:ae,children:[jsx("button",{type:"button",style:{...wt,flex:1,opacity:x?.6:1},disabled:x||!s||!N?.ContractAddress,onClick:()=>{De();},children:"Deposit"}),jsx("button",{type:"button",style:{...K,flex:1,opacity:x?.6:1},disabled:x||!s||!w,onClick:()=>{Se();},children:"Withdraw"})]})]}),P&&jsx(ht,{result:P})]})}function ht({result:e}){let o={fontSize:12,borderRadius:8,padding:"8px 10px",background:e.ok?"#1e3a2a":"#3a1e28",color:e.ok?"#8ef0b0":"#f2a0b4",wordBreak:"break-all"};return e.ok?jsxs("div",{style:o,children:["\u2713 Done \xB7 tx ",e.onChainTxHash]}):jsxs("div",{style:o,children:["\u2715 [",e.stage,"] ",e.error,e.titleTransactionID?` \xB7 already debited (tx ${e.titleTransactionID}) \u2014 retry/confirm, don't re-request`:""]})}export{we as DEFAULT_EVM_CHAINS,j as IDosGamesWalletProvider,Je as WalletLogin,ke as WalletLoginButton,Ct as WalletPanel,ne as createEvmWalletConfig,re as useEvmBridge,U as useEvmBridgeClients};
|
package/dist/react/lazyIndex.cjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
'use strict';var viem=require('viem'),wagmi=require('wagmi'),connectors=require('wagmi/connectors'),appkitAdapterWagmi=require('@reown/appkit-adapter-wagmi'),react$1=require('@reown/appkit/react'),reactQuery=require('@tanstack/react-query'),react=require('react'),jsxRuntime=require('react/jsx-runtime'),core=require('@idosgames/core'),actions=require('wagmi/actions'),appkitAdapterSolana=require('@reown/appkit-adapter-solana');var _t=Object.defineProperty;var w=(e,t)=>()=>(e&&(t=e(e=0)),t);var Xe=(e,t)=>{for(var n in t)_t(e,n,{get:t[n],enumerable:true});};function T(e){return e instanceof viem.BaseError?e.shortMessage:e instanceof Error?e.message:String(e)}function p(e,t,n){return {ok:false,stage:e,error:t,...n}}function W(e,t){return {ok:false,stage:e,error:t}}var G=w(()=>{});function v(){if(typeof window>"u")return false;try{return window.self!==window.top}catch{return true}}function tt(){if(typeof window>"u")return false;try{return window.parent!==window.top}catch{return true}}function H(e){return p(e,et)}function ue(e){return W(e,et)}var et,z=w(()=>{G();et="WALLET_USE_SITE_PANEL";});function We(e){return Object.values(exports.idosChains).find(t=>t.id===e)}function nt(e){return {...e,chainNamespace:"eip155",caipNetworkId:`eip155:${e.id}`}}exports.mainnet=void 0;exports.bsc=void 0;exports.polygon=void 0;exports.base=void 0;exports.arbitrum=void 0;exports.optimism=void 0;exports.sepolia=void 0;exports.polygonAmoy=void 0;exports.idosChains=void 0;exports.solanaMainnet=void 0;exports.solanaDevnet=void 0;var ne=w(()=>{exports.mainnet={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"}}},exports.bsc={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"}}},exports.polygon={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"}}},exports.base={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"}}},exports.arbitrum={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"}}},exports.optimism={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"}}},exports.sepolia={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"}}},exports.polygonAmoy={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"}}},exports.idosChains={mainnet:exports.mainnet,bsc:exports.bsc,polygon:exports.polygon,base:exports.base,arbitrum:exports.arbitrum,optimism:exports.optimism,sepolia:exports.sepolia,polygonAmoy:exports.polygonAmoy};exports.solanaMainnet={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"},exports.solanaDevnet={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"};});function fe(e){ot=e;}function oe(){return ot}var ot,ie=w(()=>{ot=null;});function ge(e){let{chains:t=Ee,walletConnectProjectId:n,appName:o,appUrl:i,appIcon:r,transports:c,connectors:s}=e,a=n??"__extension_only__";if(!s){let f=Ae.get(a);if(f)return f}let l={};for(let f of t)l[f.id]=c?.[f.id]??wagmi.http();let d=i??(typeof window<"u"?window.location.origin:""),u={name:o??"iDosGames",description:o??"iDosGames game",url:d,icons:r?[r]:[]};if(n&&!s){let f=t.map(nt),C=new appkitAdapterWagmi.WagmiAdapter({networks:f,projectId:n,transports:l});return fe(react$1.createAppKit({adapters:[C],networks:f,projectId:n,metadata:u,features:{analytics:false,email:false,socials:false}})),Ae.set(a,C.wagmiConfig),C.wagmiConfig}let m=s??[connectors.injected(),connectors.coinbaseWallet({appName:o??"iDosGames"})],y=wagmi.createConfig({chains:t,connectors:m,transports:l});return s||Ae.set(a,y),y}var Ee,Ae,Te=w(()=>{ne();ie();Ee=[exports.mainnet,exports.bsc,exports.polygon,exports.base,exports.arbitrum,exports.optimism,exports.sepolia,exports.polygonAmoy],Ae=new Map;});function re(e){let{wagmiConfig:t,queryClient:n,children:o}=e,[i]=react.useState(()=>n??new reactQuery.QueryClient);return jsxRuntime.jsx(wagmi.WagmiProvider,{config:t,children:jsxRuntime.jsx(reactQuery.QueryClientProvider,{client:i,children:o})})}var ye=w(()=>{});var we,at,De,it,Ie=w(()=>{we=[{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:[]}],at=[{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:[]}],De=[{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"}]}],it=[{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 st(e,t,n){return viem.encodeAbiParameters([{type:"string"},{type:"string"},{type:"string"}],[e,t,core.normalizeBlockchainCategory(n)])}var lt=w(()=>{});async function q(e,t){let{walletClient:n,publicClient:o,account:i}=e,r=await n.writeContract({address:t.address,abi:t.abi,functionName:t.functionName,args:t.args,account:i,chain:n.chain,value:t.value});if((await o.waitForTransactionReceipt({hash:r})).status==="reverted")throw new Error(`On-chain transaction reverted (${r}).`);return r}var Ne=w(()=>{});function ct(e){let t=e.RewardPoolAddress;return t||null}async function dt(e,t,n,o){return await e.publicClient.readContract({address:t,abi:De,functionName:"allowance",args:[e.account,n]})>=o?null:q(e,{address:t,abi:De,functionName:"approve",args:[n,o]})}async function Re(e){let{client:t,clients:n,network:o,tokenAddress:i,amount:r,titleID:c,category:s}=e;if(v())return H("approve");let a=t.auth.context?.userID;if(!a)return p("approve","Not logged in.");let l=ct(o);if(!l)return p("approve","Network has no RewardPoolAddress.");if(r<=0n)return p("approve","Amount must be positive.");try{await dt(n,i,l,r);}catch(m){return p("approve",T(m))}let d;try{d=await q(n,{address:l,abi:we,functionName:"depositERC20",args:[i,r,a,c,s??""]});}catch(m){return p("deposit-onchain",T(m))}let u=await t.blockchain.depositToken(o.NetworkID??"",d);return u.ok?{ok:true,onChainTxHash:d,data:u.data}:p("report",u.error,{onChainTxHash:d})}async function Be(e){let{client:t,clients:n,network:o,nftContractAddress:i,tokenId:r,amount:c,titleID:s,category:a}=e;if(v())return H("deposit-onchain");let l=t.auth.context?.userID;if(!l)return p("deposit-onchain","Not logged in.");let d=ct(o);if(!d)return p("deposit-onchain","Network has no RewardPoolAddress.");if(c<=0n)return p("deposit-onchain","Amount must be positive.");let u=st(l,s,a),m;try{m=await q(n,{address:i,abi:it,functionName:"safeTransferFrom",args:[n.account,d,r,c,u]});}catch(f){return p("deposit-onchain",T(f))}let y=await t.blockchain.depositNFT(o.NetworkID??"",m);return y.ok?{ok:true,onChainTxHash:m,data:y.data}:p("report",y.error,{onChainTxHash:m})}var pt=w(()=>{Ie();lt();Ne();G();z();});function ut(e){return (e.Splits??[]).map(t=>({to:t.To,amount:BigInt(t.Amount??"0")}))}async function mt(e,t){return q(e,{address:t.ContractAddress,abi:we,functionName:"withdrawERC20",args:[t.TokenAddress,t.WalletAddress,BigInt(t.Amount??"0"),BigInt(t.BurnAmount??"0"),ut(t),BigInt(t.Nonce??"0"),t.Signature??"0x",t.UserID??"",t.TitleID??"",t.Category??"",BigInt(t.Deadline??"0")]})}async function ft(e,t){return q(e,{address:t.ContractAddress,abi:at,functionName:"withdrawERC1155Mint",args:[t.TokenAddress,t.WalletAddress,BigInt(t.TokenId??"0"),BigInt(t.Amount??"0"),ut(t),BigInt(t.Nonce??"0"),t.Signature??"0x",t.UserID??"",t.TitleID??"",t.Category??"",BigInt(t.Deadline??"0")]})}async function Le(e){let{client:t,clients:n,currencyID:o,networkID:i,walletAddress:r,amount:c,category:s}=e;if(v())return H("request");let a=await t.blockchain.requestTokenWithdrawal(o,i,r,c,s);if(!a.ok)return p("request",a.error);let l=a.data.EvmSignature,d=a.data.TitleTransactionID??void 0;if(!l)return p("request","Withdrawal response carried no EVM signature.",{titleTransactionID:d});let u;try{u=await mt(n,l);}catch(y){return p("withdraw-onchain",T(y),{titleTransactionID:d})}let m=await gt(t,d,u);return m.ok?{ok:true,onChainTxHash:u,data:a.data}:m}async function Me(e){let{client:t,clients:n,itemID:o,networkID:i,walletAddress:r,amount:c,category:s}=e;if(v())return H("request");let a=await t.blockchain.requestNFTWithdrawal(o,i,r,c,s);if(!a.ok)return p("request",a.error);let l=a.data.EvmSignature,d=a.data.TitleTransactionID??void 0;if(!l)return p("request","Withdrawal response carried no EVM signature.",{titleTransactionID:d});let u;try{u=await ft(n,l);}catch(y){return p("withdraw-onchain",T(y),{titleTransactionID:d})}let m=await gt(t,d,u);return m.ok?{ok:true,onChainTxHash:u,data:a.data}:m}async function gt(e,t,n){if(!t)return p("confirm","Missing TitleTransactionID.",{onChainTxHash:n});let o=await e.blockchain.confirmWithdrawal(t,n);return o.ok?{ok:true,onChainTxHash:n,data:o.data}:p("confirm",o.error,{onChainTxHash:n,titleTransactionID:t})}var yt=w(()=>{Ie();Ne();G();z();});async function se(e){let{client:t,clients:n,networkID:o}=e;if(v())return ue("challenge");let i=e.walletAddress??n.account,r=await t.auth.requestWalletChallenge(i,o);if(!r.ok)return W("challenge",r.error);let c;try{c=await n.walletClient.signMessage({account:n.account,message:r.data.Message});}catch(a){return W("sign",T(a))}let s=await t.auth.loginWithWallet(i,o,c);return s.ok?{ok:true,data:s.data}:W("login",s.error)}var wt=w(()=>{G();z();});var Fe=w(()=>{pt();yt();wt();});function ce(){let{address:e}=wagmi.useAccount(),t=wagmi.usePublicClient(),{data:n}=wagmi.useWalletClient();return !e||!t||!n?null:{account:e,publicClient:t,walletClient:n}}function he(e,t){let n=ce();return {connected:!!n,account:n?.account??null,loginWithWallet:(o,i)=>n?se({client:e,clients:n,networkID:o,walletAddress:i}):Promise.resolve(W("challenge",le)),depositToken:o=>n?Re({client:e,clients:n,titleID:t,...o}):Promise.resolve(p("approve",le)),depositNft:o=>n?Be({client:e,clients:n,titleID:t,...o}):Promise.resolve(p("deposit-onchain",le)),withdrawToken:o=>n?Le({client:e,clients:n,...o}):Promise.resolve(p("withdraw-onchain",le)),withdrawNft:o=>n?Me({client:e,clients:n,...o}):Promise.resolve(p("withdraw-onchain",le))}}var le,be=w(()=>{Fe();G();le="Wallet not connected.";});function kt(e){let{wagmiConfig:t,...n}=e;return jsxRuntime.jsx(re,{wagmiConfig:t,children:jsxRuntime.jsx(He,{...n})})}function gn(e){return e instanceof Error&&(e.name==="ConnectorAlreadyConnectedError"||e.message.includes("already connected"))}function yn(e){let t="Wallet sign-in failed. Please try again.";return e instanceof Error?e.name==="ProviderNotFoundError"||/provider not found/i.test(e.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.":e.name==="UserRejectedRequestError"||/user (rejected|denied|cancelled|canceled)/i.test(e.message)?"Request declined in the wallet.":/timed? ?out/i.test(e.message)?"The wallet did not respond. Open your wallet and try again.":t:t}async function bt(e){let t=await actions.getWalletClient(e).catch(()=>null);if(!t)return null;let n=actions.getPublicClient(e);return n?{account:t.account.address,publicClient:n,walletClient:t}:null}function wn(e,t=18e4){return actions.getAccount(e).isConnected?Promise.resolve(true):new Promise(n=>{let o=false,i=s=>{o||(o=true,r(),clearTimeout(c),n(s));},r=actions.watchAccount(e,{onChange:s=>{s.isConnected&&i(true);}}),c=setTimeout(()=>i(false),t);})}function hn(e,t=8e3){let n=o=>o==="reconnecting"||o==="connecting";return n(actions.getAccount(e).status)?new Promise(o=>{let i=false,r=()=>{i||(i=true,c(),clearTimeout(s),o());},c=actions.watchAccount(e,{onChange:a=>{n(a.status)||r();}}),s=setTimeout(r,t);}):Promise.resolve()}function bn(e){let t=i=>e.find(r=>r.id===i||r.type===i),n=t("injected"),o=typeof window<"u"&&window.ethereum!=null;return n&&o?n:t("walletConnect")??n??e[0]}async function kn(e){try{let o=(await actions.getAccount(e).connector?.getProvider?.())?.session?.peer?.metadata?.redirect,i=o?.native||o?.universal;return !i||typeof window>"u"?!1:(window.location.href=i,!0)}catch{return false}}function vn(e,t){return new Promise((n,o)=>{let i=setTimeout(()=>o(new Error("The wallet request timed out.")),t);e.then(r=>{clearTimeout(i),n(r);},r=>{clearTimeout(i),o(r instanceof Error?r:new Error(String(r)));});})}function He(e){let{client:t,networkID:n,onAuthenticated:o,disabled:i,label:r,style:c,autoStart:s}=e,a=wagmi.useConfig(),{isConnected:l}=wagmi.useAccount(),{connectAsync:d,connectors:u}=wagmi.useConnect(),m=ce(),[y,f]=react.useState(false),[C,h]=react.useState(null),[O,x]=react.useState(false),N=react.useRef(0),F=react.useRef(false),R=async()=>{let I=++N.current,L=()=>N.current===I;f(true),h(null);try{if(await hn(a),!L())return;if(!actions.getAccount(a).isConnected){let S=oe();if(S){if(await S.open(),!await wn(a)){h("No wallet was connected.");return}}else {let j=bn(u);if(!j){h("No wallet connector is configured.");return}try{await d({connector:j});}catch(E){if(!gn(E))throw E}}}let k=m??await bt(a);if(!k&&actions.getAccount(a).isConnected&&(await new Promise(S=>setTimeout(S,300)),k=await bt(a),!L()))return;if(!k){h("Wallet client is not available.");return}x(!0);let A=await vn(se({client:t,clients:k,networkID:n}),Cn);if(!L())return;if(A.ok){o();return}h(A.stage==="sign"?"Signature declined.":A.error??"Wallet sign-in failed.");}catch(k){if(!L())return;console.error("[idosgames/wallet] wallet sign-in failed:",k),h(yn(k));}finally{L()&&(f(false),x(false));}};react.useEffect(()=>{!s||F.current||(F.current=true,R());},[s]);let B=async()=>{await kn(a)||await oe()?.open();};return jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[jsxRuntime.jsx("button",{type:"button",onClick:()=>{O?B():R();},disabled:i,style:{...Sn,...i?{opacity:.6,cursor:"default"}:null,...c},children:O?"Waiting for signature \u2014 tap to open wallet":y?"Check your wallet\u2026":l?r??"Sign in with wallet":"Connect wallet"}),C&&jsxRuntime.jsx("span",{role:"alert",style:Pn,children:C})]})}var Cn,Sn,Pn,vt=w(()=>{ie();Fe();ye();be();Cn=9e4;Sn={padding:"11px 16px",borderRadius:"8px",border:"none",background:"#4c3fa8",color:"#fff",font:"inherit",fontWeight:600,cursor:"pointer"},Pn={display:"block",marginTop:"6px",color:"#ff9b9b",fontSize:"13px",textAlign:"center"};});function Pt(e){let{client:t,walletConnectProjectId:n,appName:o,onClose:i,style:r}=e,[c,s]=react.useState(n??"");react.useEffect(()=>{if(n)return;let l=true;return (async()=>{let d=await t.blockchain.getDefinitions();if(!l||!d.ok)return;let u=d.data.Blockchain?.WalletLogin?.WalletConnectProjectId;u&&s(u);})(),()=>{l=false;}},[t,n]);let a=react.useMemo(()=>ge({walletConnectProjectId:c||void 0,appName:o}),[c,o]);return jsxRuntime.jsx(re,{wagmiConfig:a,children:jsxRuntime.jsx(Mn,{client:t,appName:o,onClose:i,style:r})})}function Mn({client:e,onClose:t,style:n}){let o=he(e,e.titleID),{address:i,isConnected:r,chainId:c}=wagmi.useAccount(),{connect:s,connectors:a}=wagmi.useConnect(),{disconnect:l}=wagmi.useDisconnect(),{switchChainAsync:d}=wagmi.useSwitchChain(),[,u]=react.useReducer(g=>g+1,0),[m,y]=react.useState({}),[f,C]=react.useState({}),[h,O]=react.useState(""),[x,N]=react.useState(""),[F,R]=react.useState(""),[B,I]=react.useState(false),[L,k]=react.useState(null);react.useEffect(()=>{let g=true;return (async()=>{let P=await e.blockchain.getDefinitions();if(await e.blockchain.getUserState(),!g||!P.ok)return;let V=P.data.Blockchain?.Networks??{},Pe={};for(let[qt,Je]of Object.entries(V))Je.Type==="EVM"&&(Pe[qt]=Je);y(Pe),C(P.data.CryptoCurrencies??{});let zt=Object.keys(Pe)[0]??"";O(zt);})(),()=>{g=false;}},[e]),react.useEffect(()=>e.on("user:anyUpdated",u),[e]);let A=react.useMemo(()=>Object.entries(f).filter(([,g])=>g.Networks?.some(P=>P.NetworkID===h&&!!P.ContractAddress)),[f,h]);react.useEffect(()=>{let g=A[0]?.[0]??"";N(P=>A.some(([V])=>V===P)?P:g);},[A]);let S=h?m[h]:void 0,E=(x?f[x]:void 0)?.Networks?.find(g=>g.NetworkID===h),Ot=x?e.data.user.getCryptoCurrencyAmount(x):"0";async function Ze(){if(!S?.ChainID||c===S.ChainID)return true;try{return await d({chainId:S.ChainID}),!0}catch{return k({ok:false,stage:"approve",error:`Switch your wallet to chain ${S.ChainID} to continue.`}),false}}async function Kt(){if(!(!S||!E?.ContractAddress)){if(I(true),k(null),await Ze()){let g=E.Decimals??18,P;try{P=viem.parseUnits(F||"0",g);}catch{k({ok:false,stage:"approve",error:"Invalid amount."}),I(false);return}let V=await o.depositToken({network:S,tokenAddress:E.ContractAddress,amount:P});k(V),V.ok&&await e.blockchain.getUserState();}I(false);}}async function Ut(){if(!(!S||!o.account)){if(I(true),k(null),await Ze()){let g=await o.withdrawToken({currencyID:x,networkID:h,walletAddress:o.account,amount:F||"0"});k(g),g.ok&&await e.blockchain.getUserState();}I(false);}}return jsxRuntime.jsxs("div",{style:{...Rn,...n},children:[jsxRuntime.jsxs("div",{style:{...Ke,justifyContent:"space-between"},children:[jsxRuntime.jsx("span",{style:Bn,children:"Crypto wallet"}),t&&jsxRuntime.jsx("button",{type:"button",style:ke,onClick:t,children:"\u2715"})]}),r?jsxRuntime.jsxs("div",{style:Ke,children:[jsxRuntime.jsxs("span",{style:{..._,flex:1,alignSelf:"center"},children:[i?.slice(0,6),"\u2026",i?.slice(-4)]}),jsxRuntime.jsx("button",{type:"button",style:ke,onClick:()=>l(),children:"Disconnect"})]}):jsxRuntime.jsxs("div",{style:{display:"flex",flexDirection:"column",gap:6},children:[jsxRuntime.jsx("span",{style:_,children:"Connect a browser or mobile wallet"}),a.map(g=>jsxRuntime.jsx("button",{type:"button",style:ke,onClick:()=>s({connector:g}),children:g.name},g.uid))]}),Object.keys(m).length===0?jsxRuntime.jsx("span",{style:_,children:"No EVM networks configured for this title."}):jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[jsxRuntime.jsxs("div",{children:[jsxRuntime.jsx("div",{style:_,children:"Network"}),jsxRuntime.jsx("select",{style:Oe,value:h,onChange:g=>O(g.target.value),children:Object.entries(m).map(([g,P])=>jsxRuntime.jsx("option",{value:g,children:P.DisplayName??g},g))})]}),jsxRuntime.jsxs("div",{children:[jsxRuntime.jsx("div",{style:_,children:"Token"}),jsxRuntime.jsxs("select",{style:Oe,value:x,onChange:g=>N(g.target.value),children:[A.length===0&&jsxRuntime.jsx("option",{value:"",children:"\u2014 no depositable tokens \u2014"}),A.map(([g,P])=>jsxRuntime.jsx("option",{value:g,children:P.DisplayName??g},g))]})]}),jsxRuntime.jsxs("div",{style:_,children:["In-game balance: ",jsxRuntime.jsx("b",{children:Ot})," ",x]}),jsxRuntime.jsxs("div",{children:[jsxRuntime.jsx("div",{style:_,children:"Amount"}),jsxRuntime.jsx("input",{style:Oe,inputMode:"decimal",placeholder:"0.0",value:F,onChange:g=>R(g.target.value)})]}),jsxRuntime.jsxs("div",{style:Ke,children:[jsxRuntime.jsx("button",{type:"button",style:{...Ln,flex:1,opacity:B?.6:1},disabled:B||!r||!E?.ContractAddress,onClick:()=>{Kt();},children:"Deposit"}),jsxRuntime.jsx("button",{type:"button",style:{...ke,flex:1,opacity:B?.6:1},disabled:B||!r||!x,onClick:()=>{Ut();},children:"Withdraw"})]})]}),L&&jsxRuntime.jsx(Fn,{result:L})]})}function Fn({result:e}){let t={fontSize:12,borderRadius:8,padding:"8px 10px",background:e.ok?"#1e3a2a":"#3a1e28",color:e.ok?"#8ef0b0":"#f2a0b4",wordBreak:"break-all"};return e.ok?jsxRuntime.jsxs("div",{style:t,children:["\u2713 Done \xB7 tx ",e.onChainTxHash]}):jsxRuntime.jsxs("div",{style:t,children:["\u2715 [",e.stage,"] ",e.error,e.titleTransactionID?` \xB7 already debited (tx ${e.titleTransactionID}) \u2014 retry/confirm, don't re-request`:""]})}var Rn,Bn,_,Oe,Ln,ke,Ke,Wt=w(()=>{Te();ye();be();Rn={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"},Bn={fontWeight:700,fontSize:16},_={fontSize:12,opacity:.7},Oe={background:"#052e7e",border:"1px solid #1e59c8",borderRadius:8,color:"#fff",padding:"8px 10px",width:"100%",boxSizing:"border-box"},Ln={background:"#0d66fe",color:"#fff",border:"none",borderRadius:8,padding:"9px 14px",fontWeight:700,cursor:"pointer"},ke={background:"#1e59c8",color:"#fff",border:"none",borderRadius:8,padding:"7px 12px",fontWeight:600,cursor:"pointer"},Ke={display:"flex",gap:8};});var Ue={};Xe(Ue,{DEFAULT_EVM_CHAINS:()=>Ee,IDosGamesWalletProvider:()=>re,WalletLogin:()=>kt,WalletLoginButton:()=>He,WalletPanel:()=>Pt,arbitrum:()=>exports.arbitrum,base:()=>exports.base,bsc:()=>exports.bsc,chainById:()=>We,createEvmWalletConfig:()=>ge,idosChains:()=>exports.idosChains,mainnet:()=>exports.mainnet,optimism:()=>exports.optimism,polygon:()=>exports.polygon,polygonAmoy:()=>exports.polygonAmoy,sepolia:()=>exports.sepolia,useEvmBridge:()=>he,useEvmBridgeClients:()=>ce});var ze=w(()=>{Te();ne();ye();be();vt();Wt();});function xt(e){let{walletConnectProjectId:t,appName:n,appUrl:o,appIcon:i,wallets:r}=e,c=e.networks??[exports.solanaMainnet],s=o??(typeof window<"u"?window.location.origin:""),a={name:n??"iDosGames",description:n??"iDosGames game",url:s,icons:i?[i]:[]},l=new appkitAdapterSolana.SolanaAdapter(r?{wallets:r}:{});return fe(react$1.createAppKit({adapters:[l],networks:c,projectId:t,metadata:a,features:{analytics:false,email:false,socials:false}})),l}var At=w(()=>{ne();ie();});async function qe(e){let{client:t,adapter:n,network:o,mint:i,amountRaw:r,titleID:c,category:s}=e;if(v())return H("deposit-onchain");let a=t.auth.context?.userID;if(!a)return p("deposit-onchain","Not logged in.");if(r<=0n)return p("deposit-onchain","Amount must be positive.");let l;try{l=await n.depositSpl({mint:i,amountRaw:r,userID:a,titleID:c,category:core.normalizeBlockchainCategory(s)});}catch(u){return p("deposit-onchain",T(u))}let d=await t.blockchain.depositToken(o.NetworkID??"",l);return d.ok?{ok:true,onChainTxHash:l,data:d.data}:p("report",d.error,{onChainTxHash:l})}async function _e(e){let{client:t,adapter:n,currencyID:o,networkID:i,walletAddress:r,amount:c,category:s}=e;if(v())return H("request");let a=await t.blockchain.requestTokenWithdrawal(o,i,r,c,s);if(!a.ok)return p("request",a.error);let l=a.data.SolanaSignature,d=a.data.TitleTransactionID??void 0;if(!l)return p("request","Withdrawal response carried no Solana signature.",{titleTransactionID:d});let u;try{u=await n.submitWithdrawal(l);}catch(y){return p("withdraw-onchain",T(y),{titleTransactionID:d})}if(!d)return p("confirm","Missing TitleTransactionID.",{onChainTxHash:u});let m=await t.blockchain.confirmWithdrawal(d,u);return m.ok?{ok:true,onChainTxHash:u,data:a.data}:p("confirm",m.error,{onChainTxHash:u,titleTransactionID:d})}var Et=w(()=>{G();z();});async function pe(e){let{client:t,networkID:n,walletAddress:o,signMessage:i}=e;if(v())return ue("challenge");let r=await t.auth.requestWalletChallenge(o,n);if(!r.ok)return W("challenge",r.error);let c;try{let a=await i(new TextEncoder().encode(r.data.Message));c=Un(a);}catch(a){return W("sign",T(a))}let s=await t.auth.loginWithWallet(o,n,c);return s.ok?{ok:true,data:s.data}:W("login",s.error)}function Un(e){let t="0x";for(let n of e)t+=n.toString(16).padStart(2,"0");return t}var Tt=w(()=>{G();z();});var je=w(()=>{Et();Tt();});function It(e,t,n){let{address:o}=react$1.useAppKitAccount(),{walletProvider:i}=react$1.useAppKitProvider("solana"),r=o??null,c=i?.signMessage?.bind(i);return {connected:!!r,account:r,loginWithWallet:(s,a)=>{let l=a??r;return l?c?pe({client:e,networkID:s,walletAddress:l,signMessage:c}):Promise.resolve(W("sign","The connected wallet does not support message signing.")):Promise.resolve(W("challenge",Dt))},depositToken:s=>qe({client:e,adapter:n,titleID:t,...s}),withdrawToken:s=>{let a=s.walletAddress??r;return a?_e({client:e,adapter:n,...s,walletAddress:a}):Promise.resolve(p("request",Dt))}}}var Dt,Nt=w(()=>{je();G();Dt="Wallet not connected.";});function Yn(e){try{let n=e?.session?.peer?.metadata?.redirect,o=n?.native||n?.universal;return !o||typeof window>"u"?!1:(window.location.href=o,!0)}catch{return false}}function Qn(e,t){return new Promise((n,o)=>{let i=setTimeout(()=>o(new Error("The wallet request timed out.")),t);e.then(r=>{clearTimeout(i),n(r);},r=>{clearTimeout(i),o(r instanceof Error?r:new Error(String(r)));});})}function Zn(e){let t="Wallet sign-in failed. Please try again.";return e instanceof Error?/user (rejected|denied|cancelled|canceled)|rejected the request/i.test(e.message)?"Request declined in the wallet.":/timed? ?out/i.test(e.message)?"The wallet did not respond. Open your wallet and try again.":t:t}function Bt(e){let{client:t,networkID:n,onAuthenticated:o,disabled:i,label:r,style:c,autoStart:s}=e,{address:a,isConnected:l}=react$1.useAppKitAccount(),{walletProvider:d}=react$1.useAppKitProvider("solana"),[u,m]=react.useState(false),[y,f]=react.useState(null),[C,h]=react.useState(false),[O,x]=react.useState(false),N=react.useRef(null),F=react.useRef(0),R=react.useCallback(()=>{N.current&&clearTimeout(N.current),N.current=null;},[]);react.useEffect(()=>R,[R]);let B=react.useRef(false),I=react.useCallback(async()=>{let A=++F.current,S=()=>F.current===A,j=d?.signMessage?.bind(d);if(!a||!j){f("The connected wallet cannot sign messages."),m(false);return}m(true),f(null);try{x(!0);let E=await Qn(pe({client:t,networkID:n,walletAddress:a,signMessage:j}),$n);if(!S())return;if(E.ok){o();return}f(E.stage==="sign"?"Signature declined.":E.error??"Wallet sign-in failed.");}catch(E){if(!S())return;console.error("[idosgames/wallet] solana sign-in failed:",E),f(Zn(E));}finally{S()&&(m(false),x(false));}},[a,d,t,n,o]),L=react.useCallback(()=>{Yn(d)||oe()?.open();},[d]);react.useEffect(()=>{!C||!l||!a||!d||(h(false),R(),I());},[C,l,a,d,I,R]);let k=()=>{if(O){L();return}if(f(null),B.current=true,l&&a&&d){I();return}let A=oe();if(!A){f("Wallet sign-in is not configured for this title.");return}m(true),h(true),R(),N.current=setTimeout(()=>{h(false),m(false),f("No wallet was connected.");},Vn),A.open();};return react.useEffect(()=>{!s||B.current||(B.current=true,k());},[s]),jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[jsxRuntime.jsx("button",{type:"button",onClick:k,disabled:i,style:{...Jn,...i?{opacity:.6,cursor:"default"}:null,...c},children:O?"Waiting for signature \u2014 tap to open wallet":u?"Check your wallet\u2026":l?r??"Sign in with wallet":"Connect wallet"}),y&&jsxRuntime.jsx("span",{role:"alert",style:Xn,children:y})]})}var Vn,$n,Jn,Xn,Lt=w(()=>{je();ie();Vn=18e4,$n=9e4;Jn={padding:"11px 16px",borderRadius:"8px",border:"none",background:"#4c3fa8",color:"#fff",font:"inherit",fontWeight:600,cursor:"pointer"},Xn={display:"block",marginTop:"6px",color:"#ff9b9b",fontSize:"13px",textAlign:"center"};});var Mt={};Xe(Mt,{SolanaWalletLogin:()=>Bt,createSolanaWalletConfig:()=>xt,solanaDevnet:()=>exports.solanaDevnet,solanaMainnet:()=>exports.solanaMainnet,useSolanaBridge:()=>It});var Ft=w(()=>{At();Nt();Lt();ne();});z();var oo={padding:"11px 16px",borderRadius:"8px",border:"none",background:"#4c3fa8",color:"#fff",font:"inherit",fontWeight:600,cursor:"pointer"},ro={display:"block",marginTop:"6px",color:"#ff9b9b",fontSize:"13px",textAlign:"center"},ao={display:"block",padding:"10px 12px",borderRadius:"8px",background:"#04276bf5",border:"1px solid #1e59c8",color:"#fff",fontSize:"13px",textAlign:"center"};function io(e){return jsxRuntime.jsx("span",{role:"status",style:{...ao,...e.style},children:"Deposit and withdraw on idosgames.com \u2014 the wallet connects there, not inside the game."})}function Qe(e){return tt()?null:jsxRuntime.jsx(io,{style:e})}function Gt(e){let{loading:t,disabled:n,label:o,style:i,error:r,onClick:c}=e;return jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[jsxRuntime.jsx("button",{type:"button",onClick:c,disabled:n||t,style:{...oo,...n||t?{opacity:.6,cursor:"default"}:null,...i},children:t?"Loading wallet\u2026":o??"Sign in with wallet"}),r&&jsxRuntime.jsx("span",{role:"alert",style:ro,children:r})]})}function so(e){let{chains:t,walletConnectProjectId:n,appName:o,disabled:i,label:r,style:c,...s}=e,[a,l]=react.useState(null),[d,u]=react.useState(false),[m,y]=react.useState(null);if(v())return Qe(c);let f=()=>{u(true),y(null),(async()=>{try{let C=await Promise.resolve().then(()=>(ze(),Ue)),h=C.createEvmWalletConfig({chains:t,walletConnectProjectId:n,appName:o});l({mod:C,config:h});}catch(C){console.error("[idosgames/wallet] failed to load the wallet module:",C),y("Could not load the wallet. Please try again.");}finally{u(false);}})();};if(a){let{WalletLogin:C}=a.mod;return jsxRuntime.jsx(C,{...s,wagmiConfig:a.config,disabled:i,label:r,style:c,autoStart:true})}return jsxRuntime.jsx(Gt,{loading:d,disabled:i,label:r,style:c,error:m,onClick:f})}function lo(e){let{walletConnectProjectId:t,appName:n,disabled:o,label:i,style:r,...c}=e,[s,a]=react.useState(null),[l,d]=react.useState(false),[u,m]=react.useState(null);if(v())return Qe(r);let y=()=>{d(true),m(null),(async()=>{try{let f=await Promise.resolve().then(()=>(Ft(),Mt));t&&f.createSolanaWalletConfig({walletConnectProjectId:t,appName:n}),a(f);}catch(f){console.error("[idosgames/wallet] failed to load the wallet module:",f),m("Could not load the wallet. Please try again.");}finally{d(false);}})();};if(s){let{SolanaWalletLogin:f}=s;return jsxRuntime.jsx(f,{...c,disabled:o,label:i,style:r,autoStart:true})}return jsxRuntime.jsx(Gt,{loading:l,disabled:o,label:i,style:r,error:u,onClick:y})}var co={pointerEvents:"auto",background:"#04276bf5",border:"1px solid #1e59c8",borderRadius:12,padding:16,color:"#fff",width:320,boxSizing:"border-box",fontFamily:"system-ui, sans-serif",fontSize:13};function po(e){let{onClose:t,style:n}=e,o=v(),[i,r]=react.useState(null),[c,s]=react.useState(null);return react.useEffect(()=>{if(o)return;let a=true;return (async()=>{try{let l=await Promise.resolve().then(()=>(ze(),Ue));a&&r(l);}catch(l){console.error("[idosgames/wallet] failed to load the wallet panel:",l),a&&s("Could not load the wallet.");}})(),()=>{a=false;}},[o]),o?Qe(n):i?jsxRuntime.jsx(i.WalletPanel,{...e}):jsxRuntime.jsxs("div",{style:{...co,...n},children:[c??"Loading wallet\u2026",t&&jsxRuntime.jsx("button",{type:"button",onClick:t,style:{background:"#1e59c8",color:"#fff",border:"none",borderRadius:8,padding:"7px 12px",fontWeight:600,cursor:"pointer",marginLeft:10},children:"\u2715"})]})}ne();
|
|
1
|
+
'use strict';var viem=require('viem'),core=require('@idosgames/core'),wagmi=require('wagmi'),connectors=require('wagmi/connectors'),appkitAdapterWagmi=require('@reown/appkit-adapter-wagmi'),react$1=require('@reown/appkit/react'),reactQuery=require('@tanstack/react-query'),react=require('react'),jsxRuntime=require('react/jsx-runtime'),actions=require('wagmi/actions'),appkitAdapterSolana=require('@reown/appkit-adapter-solana');var _t=Object.defineProperty;var w=(e,t)=>()=>(e&&(t=e(e=0)),t);var Xe=(e,t)=>{for(var n in t)_t(e,n,{get:t[n],enumerable:true});};function T(e){return e instanceof viem.BaseError?e.shortMessage:e instanceof Error?e.message:String(e)}function p(e,t,n){return {ok:false,stage:e,error:t,...n}}function W(e,t){return {ok:false,stage:e,error:t}}var G=w(()=>{});function v(){if(typeof window>"u")return false;try{return window.self!==window.top}catch{return true}}function tt(){if(typeof window>"u")return false;try{return window.parent!==window.top}catch{return true}}function H(e){return p(e,et)}function ue(e){return W(e,et)}var et,z=w(()=>{G();et="WALLET_USE_SITE_PANEL";});function We(e){return Object.values(exports.idosChains).find(t=>t.id===e)}function nt(e){return {...e,chainNamespace:"eip155",caipNetworkId:`eip155:${e.id}`}}exports.mainnet=void 0;exports.bsc=void 0;exports.polygon=void 0;exports.base=void 0;exports.arbitrum=void 0;exports.optimism=void 0;exports.sepolia=void 0;exports.polygonAmoy=void 0;exports.idosChains=void 0;exports.solanaMainnet=void 0;exports.solanaDevnet=void 0;var ne=w(()=>{exports.mainnet={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"}}},exports.bsc={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"}}},exports.polygon={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"}}},exports.base={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"}}},exports.arbitrum={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"}}},exports.optimism={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"}}},exports.sepolia={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"}}},exports.polygonAmoy={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"}}},exports.idosChains={mainnet:exports.mainnet,bsc:exports.bsc,polygon:exports.polygon,base:exports.base,arbitrum:exports.arbitrum,optimism:exports.optimism,sepolia:exports.sepolia,polygonAmoy:exports.polygonAmoy};exports.solanaMainnet={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"},exports.solanaDevnet={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"};});function fe(e){ot=e;}function oe(){return ot}var ot,ie=w(()=>{ot=null;});function ge(e){let{chains:t=Ee,walletConnectProjectId:n,appName:o,appUrl:i,appIcon:r,transports:c,connectors:s}=e,a=n??"__extension_only__";if(!s){let f=xe.get(a);if(f)return f}let l={};for(let f of t)l[f.id]=c?.[f.id]??wagmi.http();let d=i??(typeof window<"u"?window.location.origin:""),u={name:o??"iDosGames",description:o??"iDosGames game",url:d,icons:r?[r]:[]};if(n&&!s){let f=t.map(nt),C=new appkitAdapterWagmi.WagmiAdapter({networks:f,projectId:n,transports:l});return fe(react$1.createAppKit({adapters:[C],networks:f,projectId:n,metadata:u,features:{analytics:false,email:false,socials:false}})),xe.set(a,C.wagmiConfig),C.wagmiConfig}let m=s??[connectors.injected(),connectors.coinbaseWallet({appName:o??"iDosGames"})],y=wagmi.createConfig({chains:t,connectors:m,transports:l});return s||xe.set(a,y),y}var Ee,xe,Te=w(()=>{ne();ie();Ee=[exports.mainnet,exports.bsc,exports.polygon,exports.base,exports.arbitrum,exports.optimism,exports.sepolia,exports.polygonAmoy],xe=new Map;});function re(e){let{wagmiConfig:t,queryClient:n,children:o}=e,[i]=react.useState(()=>n??new reactQuery.QueryClient);return jsxRuntime.jsx(wagmi.WagmiProvider,{config:t,children:jsxRuntime.jsx(reactQuery.QueryClientProvider,{client:i,children:o})})}var ye=w(()=>{});var we,at,De,it,Ie=w(()=>{we=[{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:[]}],at=[{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:[]}],De=[{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"}]}],it=[{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 st(e,t,n){return viem.encodeAbiParameters([{type:"string"},{type:"string"},{type:"string"}],[e,t,core.normalizeBlockchainCategory(n)])}var lt=w(()=>{});async function q(e,t){let{walletClient:n,publicClient:o,account:i}=e,r=await n.writeContract({address:t.address,abi:t.abi,functionName:t.functionName,args:t.args,account:i,chain:n.chain,value:t.value});if((await o.waitForTransactionReceipt({hash:r})).status==="reverted")throw new Error(`On-chain transaction reverted (${r}).`);return r}var Ne=w(()=>{});function ct(e){let t=e.RewardPoolAddress;return t||null}async function dt(e,t,n,o){return await e.publicClient.readContract({address:t,abi:De,functionName:"allowance",args:[e.account,n]})>=o?null:q(e,{address:t,abi:De,functionName:"approve",args:[n,o]})}async function Re(e){let{client:t,clients:n,network:o,tokenAddress:i,amount:r,titleID:c,category:s}=e;if(v())return H("approve");let a=t.auth.context?.userID;if(!a)return p("approve","Not logged in.");let l=ct(o);if(!l)return p("approve","Network has no RewardPoolAddress.");if(r<=0n)return p("approve","Amount must be positive.");try{await dt(n,i,l,r);}catch(m){return p("approve",T(m))}let d;try{d=await q(n,{address:l,abi:we,functionName:"depositERC20",args:[i,r,a,c,s??""]});}catch(m){return p("deposit-onchain",T(m))}let u=await t.blockchain.depositToken(o.NetworkID??"",d);return u.ok?{ok:true,onChainTxHash:d,data:u.data}:p("report",u.error,{onChainTxHash:d})}async function Be(e){let{client:t,clients:n,network:o,nftContractAddress:i,tokenId:r,amount:c,titleID:s,category:a}=e;if(v())return H("deposit-onchain");let l=t.auth.context?.userID;if(!l)return p("deposit-onchain","Not logged in.");let d=ct(o);if(!d)return p("deposit-onchain","Network has no RewardPoolAddress.");if(c<=0n)return p("deposit-onchain","Amount must be positive.");let u=st(l,s,a),m;try{m=await q(n,{address:i,abi:it,functionName:"safeTransferFrom",args:[n.account,d,r,c,u]});}catch(f){return p("deposit-onchain",T(f))}let y=await t.blockchain.depositNFT(o.NetworkID??"",m);return y.ok?{ok:true,onChainTxHash:m,data:y.data}:p("report",y.error,{onChainTxHash:m})}var pt=w(()=>{Ie();lt();Ne();G();z();});function ut(e){return (e.Splits??[]).map(t=>({to:t.To,amount:BigInt(t.Amount??"0")}))}async function mt(e,t){return q(e,{address:t.ContractAddress,abi:we,functionName:"withdrawERC20",args:[t.TokenAddress,t.WalletAddress,BigInt(t.Amount??"0"),BigInt(t.BurnAmount??"0"),ut(t),BigInt(t.Nonce??"0"),t.Signature??"0x",t.UserID??"",t.TitleID??"",t.Category??"",BigInt(t.Deadline??"0")]})}async function ft(e,t){return q(e,{address:t.ContractAddress,abi:at,functionName:"withdrawERC1155Mint",args:[t.TokenAddress,t.WalletAddress,BigInt(t.TokenId??"0"),BigInt(t.Amount??"0"),ut(t),BigInt(t.Nonce??"0"),t.Signature??"0x",t.UserID??"",t.TitleID??"",t.Category??"",BigInt(t.Deadline??"0")]})}async function Le(e){let{client:t,clients:n,currencyID:o,networkID:i,walletAddress:r,amount:c,category:s}=e;if(v())return H("request");let a=await t.blockchain.requestTokenWithdrawal(o,i,r,c,s);if(!a.ok)return p("request",a.error);let l=a.data.EvmSignature,d=a.data.TitleTransactionID??void 0;if(!l)return p("request","Withdrawal response carried no EVM signature.",{titleTransactionID:d});let u;try{u=await mt(n,l);}catch(y){return p("withdraw-onchain",T(y),{titleTransactionID:d})}let m=await gt(t,d,u);return m.ok?{ok:true,onChainTxHash:u,data:a.data}:m}async function Me(e){let{client:t,clients:n,itemID:o,networkID:i,walletAddress:r,amount:c,category:s}=e;if(v())return H("request");let a=await t.blockchain.requestNFTWithdrawal(o,i,r,c,s);if(!a.ok)return p("request",a.error);let l=a.data.EvmSignature,d=a.data.TitleTransactionID??void 0;if(!l)return p("request","Withdrawal response carried no EVM signature.",{titleTransactionID:d});let u;try{u=await ft(n,l);}catch(y){return p("withdraw-onchain",T(y),{titleTransactionID:d})}let m=await gt(t,d,u);return m.ok?{ok:true,onChainTxHash:u,data:a.data}:m}async function gt(e,t,n){if(!t)return p("confirm","Missing TitleTransactionID.",{onChainTxHash:n});let o=await e.blockchain.confirmWithdrawal(t,n);return o.ok?{ok:true,onChainTxHash:n,data:o.data}:p("confirm",o.error,{onChainTxHash:n,titleTransactionID:t})}var yt=w(()=>{Ie();Ne();G();z();});async function se(e){let{client:t,clients:n,networkID:o}=e;if(v())return ue("challenge");let i=e.walletAddress??n.account,r=await t.auth.requestWalletChallenge(i,o);if(!r.ok)return W("challenge",r.error);let c;try{c=await n.walletClient.signMessage({account:n.account,message:r.data.Message});}catch(a){return W("sign",T(a))}let s=await t.auth.loginWithWallet(i,o,c);return s.ok?{ok:true,data:s.data}:W("login",s.error)}var wt=w(()=>{G();z();});var Fe=w(()=>{pt();yt();wt();});function ce(){let{address:e}=wagmi.useAccount(),t=wagmi.usePublicClient(),{data:n}=wagmi.useWalletClient();return !e||!t||!n?null:{account:e,publicClient:t,walletClient:n}}function he(e,t){let n=ce();return {connected:!!n,account:n?.account??null,loginWithWallet:(o,i)=>n?se({client:e,clients:n,networkID:o,walletAddress:i}):Promise.resolve(W("challenge",le)),depositToken:o=>n?Re({client:e,clients:n,titleID:t,...o}):Promise.resolve(p("approve",le)),depositNft:o=>n?Be({client:e,clients:n,titleID:t,...o}):Promise.resolve(p("deposit-onchain",le)),withdrawToken:o=>n?Le({client:e,clients:n,...o}):Promise.resolve(p("withdraw-onchain",le)),withdrawNft:o=>n?Me({client:e,clients:n,...o}):Promise.resolve(p("withdraw-onchain",le))}}var le,be=w(()=>{Fe();G();le="Wallet not connected.";});function kt(e){let{wagmiConfig:t,...n}=e;return jsxRuntime.jsx(re,{wagmiConfig:t,children:jsxRuntime.jsx(He,{...n})})}function gn(e){return e instanceof Error&&(e.name==="ConnectorAlreadyConnectedError"||e.message.includes("already connected"))}function yn(e){let t="Wallet sign-in failed. Please try again.";return e instanceof Error?e.name==="ProviderNotFoundError"||/provider not found/i.test(e.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.":e.name==="UserRejectedRequestError"||/user (rejected|denied|cancelled|canceled)/i.test(e.message)?"Request declined in the wallet.":/timed? ?out/i.test(e.message)?"The wallet did not respond. Open your wallet and try again.":t:t}async function bt(e){let t=await actions.getWalletClient(e).catch(()=>null);if(!t)return null;let n=actions.getPublicClient(e);return n?{account:t.account.address,publicClient:n,walletClient:t}:null}function wn(e,t=18e4){return actions.getAccount(e).isConnected?Promise.resolve(true):new Promise(n=>{let o=false,i=s=>{o||(o=true,r(),clearTimeout(c),n(s));},r=actions.watchAccount(e,{onChange:s=>{s.isConnected&&i(true);}}),c=setTimeout(()=>i(false),t);})}function hn(e,t=8e3){let n=o=>o==="reconnecting"||o==="connecting";return n(actions.getAccount(e).status)?new Promise(o=>{let i=false,r=()=>{i||(i=true,c(),clearTimeout(s),o());},c=actions.watchAccount(e,{onChange:a=>{n(a.status)||r();}}),s=setTimeout(r,t);}):Promise.resolve()}function bn(e){let t=i=>e.find(r=>r.id===i||r.type===i),n=t("injected"),o=typeof window<"u"&&window.ethereum!=null;return n&&o?n:t("walletConnect")??n??e[0]}async function kn(e){try{let o=(await actions.getAccount(e).connector?.getProvider?.())?.session?.peer?.metadata?.redirect,i=o?.native||o?.universal;return !i||typeof window>"u"?!1:(window.location.href=i,!0)}catch{return false}}function vn(e,t){return new Promise((n,o)=>{let i=setTimeout(()=>o(new Error("The wallet request timed out.")),t);e.then(r=>{clearTimeout(i),n(r);},r=>{clearTimeout(i),o(r instanceof Error?r:new Error(String(r)));});})}function He(e){let{client:t,networkID:n,onAuthenticated:o,disabled:i,label:r,style:c,autoStart:s}=e,a=wagmi.useConfig(),{isConnected:l}=wagmi.useAccount(),{connectAsync:d,connectors:u}=wagmi.useConnect(),m=ce(),[y,f]=react.useState(false),[C,h]=react.useState(null),[O,A]=react.useState(false),N=react.useRef(0),F=react.useRef(false),R=async()=>{let I=++N.current,L=()=>N.current===I;f(true),h(null);try{if(await hn(a),!L())return;if(!actions.getAccount(a).isConnected){let S=oe();if(S){if(await S.open(),!await wn(a)){h("No wallet was connected.");return}}else {let j=bn(u);if(!j){h("No wallet connector is configured.");return}try{await d({connector:j});}catch(E){if(!gn(E))throw E}}}let k=m??await bt(a);if(!k&&actions.getAccount(a).isConnected&&(await new Promise(S=>setTimeout(S,300)),k=await bt(a),!L()))return;if(!k){h("Wallet client is not available.");return}A(!0);let x=await vn(se({client:t,clients:k,networkID:n}),Cn);if(!L())return;if(x.ok){o();return}h(x.stage==="sign"?"Signature declined.":x.error??"Wallet sign-in failed.");}catch(k){if(!L())return;console.error("[idosgames/wallet] wallet sign-in failed:",k),h(yn(k));}finally{L()&&(f(false),A(false));}};react.useEffect(()=>{!s||F.current||(F.current=true,R());},[s]);let B=async()=>{await kn(a)||await oe()?.open();};return jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[jsxRuntime.jsx("button",{type:"button",onClick:()=>{O?B():R();},disabled:i,style:{...Sn,...i?{opacity:.6,cursor:"default"}:null,...c},children:O?"Waiting for signature \u2014 tap to open wallet":y?"Check your wallet\u2026":l?r??"Sign in with wallet":"Connect wallet"}),C&&jsxRuntime.jsx("span",{role:"alert",style:Pn,children:C})]})}var Cn,Sn,Pn,vt=w(()=>{ie();Fe();ye();be();Cn=9e4;Sn={padding:"11px 16px",borderRadius:"8px",border:"none",background:"#4c3fa8",color:"#fff",font:"inherit",fontWeight:600,cursor:"pointer"},Pn={display:"block",marginTop:"6px",color:"#ff9b9b",fontSize:"13px",textAlign:"center"};});function Pt(e){let{client:t,walletConnectProjectId:n,appName:o,onClose:i,style:r}=e,[c,s]=react.useState(n??"");react.useEffect(()=>{if(n)return;let l=true;return (async()=>{let d=await t.blockchain.getDefinitions();if(!l||!d.ok)return;let u=d.data.Blockchain?.WalletLogin?.WalletConnectProjectId;u&&s(u);})(),()=>{l=false;}},[t,n]);let a=react.useMemo(()=>ge({walletConnectProjectId:c||void 0,appName:o}),[c,o]);return jsxRuntime.jsx(re,{wagmiConfig:a,children:jsxRuntime.jsx(Mn,{client:t,appName:o,onClose:i,style:r})})}function Mn({client:e,onClose:t,style:n}){let o=he(e,e.titleID),{address:i,isConnected:r,chainId:c}=wagmi.useAccount(),{connect:s,connectors:a}=wagmi.useConnect(),{disconnect:l}=wagmi.useDisconnect(),{switchChainAsync:d}=wagmi.useSwitchChain(),[,u]=react.useReducer(g=>g+1,0),[m,y]=react.useState({}),[f,C]=react.useState({}),[h,O]=react.useState(""),[A,N]=react.useState(""),[F,R]=react.useState(""),[B,I]=react.useState(false),[L,k]=react.useState(null);react.useEffect(()=>{let g=true;return (async()=>{let P=await e.blockchain.getDefinitions();if(await e.blockchain.getUserState(),!g||!P.ok)return;let V=P.data.Blockchain?.Networks??{},Pe={};for(let[qt,Je]of Object.entries(V))Je.Type==="EVM"&&(Pe[qt]=Je);y(Pe),C(P.data.CryptoCurrencies??{});let zt=Object.keys(Pe)[0]??"";O(zt);})(),()=>{g=false;}},[e]),react.useEffect(()=>e.on("user:anyUpdated",u),[e]);let x=react.useMemo(()=>Object.entries(f).filter(([,g])=>g.Networks?.some(P=>P.NetworkID===h&&!!P.ContractAddress)),[f,h]);react.useEffect(()=>{let g=x[0]?.[0]??"";N(P=>x.some(([V])=>V===P)?P:g);},[x]);let S=h?m[h]:void 0,E=(A?f[A]:void 0)?.Networks?.find(g=>g.NetworkID===h),Ot=A?e.data.user.getCryptoCurrencyAmount(A):"0";async function Ze(){if(!S?.ChainID||c===S.ChainID)return true;try{return await d({chainId:S.ChainID}),!0}catch{return k({ok:false,stage:"approve",error:`Switch your wallet to chain ${S.ChainID} to continue.`}),false}}async function Kt(){if(!(!S||!E?.ContractAddress)){if(I(true),k(null),await Ze()){let g=E.Decimals??18,P;try{P=viem.parseUnits(F||"0",g);}catch{k({ok:false,stage:"approve",error:"Invalid amount."}),I(false);return}let V=await o.depositToken({network:S,tokenAddress:E.ContractAddress,amount:P});k(V),V.ok&&await e.blockchain.getUserState();}I(false);}}async function Ut(){if(!(!S||!o.account)){if(I(true),k(null),await Ze()){let g=await o.withdrawToken({currencyID:A,networkID:h,walletAddress:o.account,amount:F||"0"});k(g),g.ok&&await e.blockchain.getUserState();}I(false);}}return jsxRuntime.jsxs("div",{style:{...Rn,...n},children:[jsxRuntime.jsxs("div",{style:{...Ke,justifyContent:"space-between"},children:[jsxRuntime.jsx("span",{style:Bn,children:"Crypto wallet"}),t&&jsxRuntime.jsx("button",{type:"button",style:ke,onClick:t,children:"\u2715"})]}),r?jsxRuntime.jsxs("div",{style:Ke,children:[jsxRuntime.jsxs("span",{style:{..._,flex:1,alignSelf:"center"},children:[i?.slice(0,6),"\u2026",i?.slice(-4)]}),jsxRuntime.jsx("button",{type:"button",style:ke,onClick:()=>l(),children:"Disconnect"})]}):jsxRuntime.jsxs("div",{style:{display:"flex",flexDirection:"column",gap:6},children:[jsxRuntime.jsx("span",{style:_,children:"Connect a browser or mobile wallet"}),a.map(g=>jsxRuntime.jsx("button",{type:"button",style:ke,onClick:()=>s({connector:g}),children:g.name},g.uid))]}),Object.keys(m).length===0?jsxRuntime.jsx("span",{style:_,children:"No EVM networks configured for this title."}):jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[jsxRuntime.jsxs("div",{children:[jsxRuntime.jsx("div",{style:_,children:"Network"}),jsxRuntime.jsx("select",{style:Oe,value:h,onChange:g=>O(g.target.value),children:Object.entries(m).map(([g,P])=>jsxRuntime.jsx("option",{value:g,children:P.DisplayName??g},g))})]}),jsxRuntime.jsxs("div",{children:[jsxRuntime.jsx("div",{style:_,children:"Token"}),jsxRuntime.jsxs("select",{style:Oe,value:A,onChange:g=>N(g.target.value),children:[x.length===0&&jsxRuntime.jsx("option",{value:"",children:"\u2014 no depositable tokens \u2014"}),x.map(([g,P])=>jsxRuntime.jsx("option",{value:g,children:P.DisplayName??g},g))]})]}),jsxRuntime.jsxs("div",{style:_,children:["In-game balance: ",jsxRuntime.jsx("b",{children:Ot})," ",A]}),jsxRuntime.jsxs("div",{children:[jsxRuntime.jsx("div",{style:_,children:"Amount"}),jsxRuntime.jsx("input",{style:Oe,inputMode:"decimal",placeholder:"0.0",value:F,onChange:g=>R(g.target.value)})]}),jsxRuntime.jsxs("div",{style:Ke,children:[jsxRuntime.jsx("button",{type:"button",style:{...Ln,flex:1,opacity:B?.6:1},disabled:B||!r||!E?.ContractAddress,onClick:()=>{Kt();},children:"Deposit"}),jsxRuntime.jsx("button",{type:"button",style:{...ke,flex:1,opacity:B?.6:1},disabled:B||!r||!A,onClick:()=>{Ut();},children:"Withdraw"})]})]}),L&&jsxRuntime.jsx(Fn,{result:L})]})}function Fn({result:e}){let t={fontSize:12,borderRadius:8,padding:"8px 10px",background:e.ok?"#1e3a2a":"#3a1e28",color:e.ok?"#8ef0b0":"#f2a0b4",wordBreak:"break-all"};return e.ok?jsxRuntime.jsxs("div",{style:t,children:["\u2713 Done \xB7 tx ",e.onChainTxHash]}):jsxRuntime.jsxs("div",{style:t,children:["\u2715 [",e.stage,"] ",e.error,e.titleTransactionID?` \xB7 already debited (tx ${e.titleTransactionID}) \u2014 retry/confirm, don't re-request`:""]})}var Rn,Bn,_,Oe,Ln,ke,Ke,Wt=w(()=>{Te();ye();be();Rn={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"},Bn={fontWeight:700,fontSize:16},_={fontSize:12,opacity:.7},Oe={background:"#052e7e",border:"1px solid #1e59c8",borderRadius:8,color:"#fff",padding:"8px 10px",width:"100%",boxSizing:"border-box"},Ln={background:"#0d66fe",color:"#fff",border:"none",borderRadius:8,padding:"9px 14px",fontWeight:700,cursor:"pointer"},ke={background:"#1e59c8",color:"#fff",border:"none",borderRadius:8,padding:"7px 12px",fontWeight:600,cursor:"pointer"},Ke={display:"flex",gap:8};});var Ue={};Xe(Ue,{DEFAULT_EVM_CHAINS:()=>Ee,IDosGamesWalletProvider:()=>re,WalletLogin:()=>kt,WalletLoginButton:()=>He,WalletPanel:()=>Pt,arbitrum:()=>exports.arbitrum,base:()=>exports.base,bsc:()=>exports.bsc,chainById:()=>We,createEvmWalletConfig:()=>ge,idosChains:()=>exports.idosChains,mainnet:()=>exports.mainnet,optimism:()=>exports.optimism,polygon:()=>exports.polygon,polygonAmoy:()=>exports.polygonAmoy,sepolia:()=>exports.sepolia,useEvmBridge:()=>he,useEvmBridgeClients:()=>ce});var ze=w(()=>{Te();ne();ye();be();vt();Wt();});function At(e){let{walletConnectProjectId:t,appName:n,appUrl:o,appIcon:i,wallets:r}=e,c=e.networks??[exports.solanaMainnet],s=o??(typeof window<"u"?window.location.origin:""),a={name:n??"iDosGames",description:n??"iDosGames game",url:s,icons:i?[i]:[]},l=new appkitAdapterSolana.SolanaAdapter(r?{wallets:r}:{});return fe(react$1.createAppKit({adapters:[l],networks:c,projectId:t,metadata:a,features:{analytics:false,email:false,socials:false}})),l}var xt=w(()=>{ne();ie();});async function qe(e){let{client:t,adapter:n,network:o,mint:i,amountRaw:r,titleID:c,category:s}=e;if(v())return H("deposit-onchain");let a=t.auth.context?.userID;if(!a)return p("deposit-onchain","Not logged in.");if(r<=0n)return p("deposit-onchain","Amount must be positive.");let l;try{l=await n.depositSpl({mint:i,amountRaw:r,userID:a,titleID:c,category:core.normalizeBlockchainCategory(s)});}catch(u){return p("deposit-onchain",T(u))}let d=await t.blockchain.depositToken(o.NetworkID??"",l);return d.ok?{ok:true,onChainTxHash:l,data:d.data}:p("report",d.error,{onChainTxHash:l})}async function _e(e){let{client:t,adapter:n,currencyID:o,networkID:i,walletAddress:r,amount:c,category:s}=e;if(v())return H("request");let a=await t.blockchain.requestTokenWithdrawal(o,i,r,c,s);if(!a.ok)return p("request",a.error);let l=a.data.SolanaSignature,d=a.data.TitleTransactionID??void 0;if(!l)return p("request","Withdrawal response carried no Solana signature.",{titleTransactionID:d});let u;try{u=await n.submitWithdrawal(l);}catch(y){return p("withdraw-onchain",T(y),{titleTransactionID:d})}if(!d)return p("confirm","Missing TitleTransactionID.",{onChainTxHash:u});let m=await t.blockchain.confirmWithdrawal(d,u);return m.ok?{ok:true,onChainTxHash:u,data:a.data}:p("confirm",m.error,{onChainTxHash:u,titleTransactionID:d})}var Et=w(()=>{G();z();});async function pe(e){let{client:t,networkID:n,walletAddress:o,signMessage:i}=e;if(v())return ue("challenge");let r=await t.auth.requestWalletChallenge(o,n);if(!r.ok)return W("challenge",r.error);let c;try{let a=await i(new TextEncoder().encode(r.data.Message));c=Un(a);}catch(a){return W("sign",T(a))}let s=await t.auth.loginWithWallet(o,n,c);return s.ok?{ok:true,data:s.data}:W("login",s.error)}function Un(e){let t="0x";for(let n of e)t+=n.toString(16).padStart(2,"0");return t}var Tt=w(()=>{G();z();});var je=w(()=>{Et();Tt();});function It(e,t,n){let{address:o}=react$1.useAppKitAccount(),{walletProvider:i}=react$1.useAppKitProvider("solana"),r=o??null,c=i?.signMessage?.bind(i);return {connected:!!r,account:r,loginWithWallet:(s,a)=>{let l=a??r;return l?c?pe({client:e,networkID:s,walletAddress:l,signMessage:c}):Promise.resolve(W("sign","The connected wallet does not support message signing.")):Promise.resolve(W("challenge",Dt))},depositToken:s=>qe({client:e,adapter:n,titleID:t,...s}),withdrawToken:s=>{let a=s.walletAddress??r;return a?_e({client:e,adapter:n,...s,walletAddress:a}):Promise.resolve(p("request",Dt))}}}var Dt,Nt=w(()=>{je();G();Dt="Wallet not connected.";});function Yn(e){try{let n=e?.session?.peer?.metadata?.redirect,o=n?.native||n?.universal;return !o||typeof window>"u"?!1:(window.location.href=o,!0)}catch{return false}}function Qn(e,t){return new Promise((n,o)=>{let i=setTimeout(()=>o(new Error("The wallet request timed out.")),t);e.then(r=>{clearTimeout(i),n(r);},r=>{clearTimeout(i),o(r instanceof Error?r:new Error(String(r)));});})}function Zn(e){let t="Wallet sign-in failed. Please try again.";return e instanceof Error?/user (rejected|denied|cancelled|canceled)|rejected the request/i.test(e.message)?"Request declined in the wallet.":/timed? ?out/i.test(e.message)?"The wallet did not respond. Open your wallet and try again.":t:t}function Bt(e){let{client:t,networkID:n,onAuthenticated:o,disabled:i,label:r,style:c,autoStart:s}=e,{address:a,isConnected:l}=react$1.useAppKitAccount(),{walletProvider:d}=react$1.useAppKitProvider("solana"),[u,m]=react.useState(false),[y,f]=react.useState(null),[C,h]=react.useState(false),[O,A]=react.useState(false),N=react.useRef(null),F=react.useRef(0),R=react.useCallback(()=>{N.current&&clearTimeout(N.current),N.current=null;},[]);react.useEffect(()=>R,[R]);let B=react.useRef(false),I=react.useCallback(async()=>{let x=++F.current,S=()=>F.current===x,j=d?.signMessage?.bind(d);if(!a||!j){f("The connected wallet cannot sign messages."),m(false);return}m(true),f(null);try{A(!0);let E=await Qn(pe({client:t,networkID:n,walletAddress:a,signMessage:j}),$n);if(!S())return;if(E.ok){o();return}f(E.stage==="sign"?"Signature declined.":E.error??"Wallet sign-in failed.");}catch(E){if(!S())return;console.error("[idosgames/wallet] solana sign-in failed:",E),f(Zn(E));}finally{S()&&(m(false),A(false));}},[a,d,t,n,o]),L=react.useCallback(()=>{Yn(d)||oe()?.open();},[d]);react.useEffect(()=>{!C||!l||!a||!d||(h(false),R(),I());},[C,l,a,d,I,R]);let k=()=>{if(O){L();return}if(f(null),B.current=true,l&&a&&d){I();return}let x=oe();if(!x){f("Wallet sign-in is not configured for this title.");return}m(true),h(true),R(),N.current=setTimeout(()=>{h(false),m(false),f("No wallet was connected.");},Vn),x.open();};return react.useEffect(()=>{!s||B.current||(B.current=true,k());},[s]),jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[jsxRuntime.jsx("button",{type:"button",onClick:k,disabled:i,style:{...Jn,...i?{opacity:.6,cursor:"default"}:null,...c},children:O?"Waiting for signature \u2014 tap to open wallet":u?"Check your wallet\u2026":l?r??"Sign in with wallet":"Connect wallet"}),y&&jsxRuntime.jsx("span",{role:"alert",style:Xn,children:y})]})}var Vn,$n,Jn,Xn,Lt=w(()=>{je();ie();Vn=18e4,$n=9e4;Jn={padding:"11px 16px",borderRadius:"8px",border:"none",background:"#4c3fa8",color:"#fff",font:"inherit",fontWeight:600,cursor:"pointer"},Xn={display:"block",marginTop:"6px",color:"#ff9b9b",fontSize:"13px",textAlign:"center"};});var Mt={};Xe(Mt,{SolanaWalletLogin:()=>Bt,createSolanaWalletConfig:()=>At,solanaDevnet:()=>exports.solanaDevnet,solanaMainnet:()=>exports.solanaMainnet,useSolanaBridge:()=>It});var Ft=w(()=>{xt();Nt();Lt();ne();});z();var oo={padding:"11px 16px",borderRadius:"8px",border:"none",background:"#4c3fa8",color:"#fff",font:"inherit",fontWeight:600,cursor:"pointer"},ro={display:"block",marginTop:"6px",color:"#ff9b9b",fontSize:"13px",textAlign:"center"},ao={display:"block",padding:"10px 12px",borderRadius:"8px",background:"#04276bf5",border:"1px solid #1e59c8",color:"#fff",fontSize:"13px",textAlign:"center"};function io(e){return jsxRuntime.jsx("span",{role:"status",style:{...ao,...e.style},children:"Deposit and withdraw on idosgames.com \u2014 the wallet connects there, not inside the game."})}function Qe(e){return tt()?null:jsxRuntime.jsx(io,{style:e})}function Gt(e){let{loading:t,disabled:n,label:o,style:i,error:r,onClick:c}=e;return jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[jsxRuntime.jsx("button",{type:"button",onClick:c,disabled:n||t,style:{...oo,...n||t?{opacity:.6,cursor:"default"}:null,...i},children:t?"Loading wallet\u2026":o??"Sign in with wallet"}),r&&jsxRuntime.jsx("span",{role:"alert",style:ro,children:r})]})}function so(e){let{chains:t,walletConnectProjectId:n,appName:o,disabled:i,label:r,style:c,...s}=e,[a,l]=react.useState(null),[d,u]=react.useState(false),[m,y]=react.useState(null);if(v())return Qe(c);let f=()=>{u(true),y(null),(async()=>{try{let C=await Promise.resolve().then(()=>(ze(),Ue)),h=C.createEvmWalletConfig({chains:t,walletConnectProjectId:n,appName:o});l({mod:C,config:h});}catch(C){console.error("[idosgames/wallet] failed to load the wallet module:",C),y("Could not load the wallet. Please try again.");}finally{u(false);}})();};if(a){let{WalletLogin:C}=a.mod;return jsxRuntime.jsx(C,{...s,wagmiConfig:a.config,disabled:i,label:r,style:c,autoStart:true})}return jsxRuntime.jsx(Gt,{loading:d,disabled:i,label:r,style:c,error:m,onClick:f})}function lo(e){let{walletConnectProjectId:t,appName:n,disabled:o,label:i,style:r,...c}=e,[s,a]=react.useState(null),[l,d]=react.useState(false),[u,m]=react.useState(null);if(v())return Qe(r);let y=()=>{d(true),m(null),(async()=>{try{let f=await Promise.resolve().then(()=>(Ft(),Mt));t&&f.createSolanaWalletConfig({walletConnectProjectId:t,appName:n}),a(f);}catch(f){console.error("[idosgames/wallet] failed to load the wallet module:",f),m("Could not load the wallet. Please try again.");}finally{d(false);}})();};if(s){let{SolanaWalletLogin:f}=s;return jsxRuntime.jsx(f,{...c,disabled:o,label:i,style:r,autoStart:true})}return jsxRuntime.jsx(Gt,{loading:l,disabled:o,label:i,style:r,error:u,onClick:y})}var co={pointerEvents:"auto",background:"#04276bf5",border:"1px solid #1e59c8",borderRadius:12,padding:16,color:"#fff",width:320,boxSizing:"border-box",fontFamily:"system-ui, sans-serif",fontSize:13};function po(e){let{onClose:t,style:n}=e,o=v(),[i,r]=react.useState(null),[c,s]=react.useState(null);return react.useEffect(()=>{if(o)return;let a=true;return (async()=>{try{let l=await Promise.resolve().then(()=>(ze(),Ue));a&&r(l);}catch(l){console.error("[idosgames/wallet] failed to load the wallet panel:",l),a&&s("Could not load the wallet.");}})(),()=>{a=false;}},[o]),o?Qe(n):i?jsxRuntime.jsx(i.WalletPanel,{...e}):jsxRuntime.jsxs("div",{style:{...co,...n},children:[c??"Loading wallet\u2026",t&&jsxRuntime.jsx("button",{type:"button",onClick:t,style:{background:"#1e59c8",color:"#fff",border:"none",borderRadius:8,padding:"7px 12px",fontWeight:600,cursor:"pointer",marginLeft:10},children:"\u2715"})]})}ne();
|
|
2
2
|
exports.LazySolanaWalletLogin=lo;exports.LazyWalletLogin=so;exports.LazyWalletPanel=po;exports.chainById=We;
|
package/dist/react/lazyIndex.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import {e,f}from'../chunk-
|
|
1
|
+
import {e,f}from'../chunk-IEWZH6XD.js';export{n as arbitrum,m as base,k as bsc,s as chainById,r as idosChains,j as mainnet,o as optimism,l as polygon,q as polygonAmoy,p as sepolia,v as solanaDevnet,u as solanaMainnet}from'../chunk-IEWZH6XD.js';import {useState,useEffect}from'react';import {jsx,jsxs,Fragment}from'react/jsx-runtime';var B={padding:"11px 16px",borderRadius:"8px",border:"none",background:"#4c3fa8",color:"#fff",font:"inherit",fontWeight:600,cursor:"pointer"},G={display:"block",marginTop:"6px",color:"#ff9b9b",fontSize:"13px",textAlign:"center"},F={display:"block",padding:"10px 12px",borderRadius:"8px",background:"#04276bf5",border:"1px solid #1e59c8",color:"#fff",fontSize:"13px",textAlign:"center"};function T(e){return jsx("span",{role:"status",style:{...F,...e.style},children:"Deposit and withdraw on idosgames.com \u2014 the wallet connects there, not inside the game."})}function L(e){return f()?null:jsx(T,{style:e})}function P(e){let{loading:o,disabled:r,label:l,style:n,error:t,onClick:i}=e;return jsxs(Fragment,{children:[jsx("button",{type:"button",onClick:i,disabled:r||o,style:{...B,...r||o?{opacity:.6,cursor:"default"}:null,...n},children:o?"Loading wallet\u2026":l??"Sign in with wallet"}),t&&jsx("span",{role:"alert",style:G,children:t})]})}function K(e$1){let{chains:o,walletConnectProjectId:r,appName:l,disabled:n,label:t,style:i,...u}=e$1,[s,p]=useState(null),[f,g]=useState(false),[m,b]=useState(null);if(e())return L(i);let d=()=>{g(true),b(null),(async()=>{try{let y=await import('./index.js'),w=y.createEvmWalletConfig({chains:o,walletConnectProjectId:r,appName:l});p({mod:y,config:w});}catch(y){console.error("[idosgames/wallet] failed to load the wallet module:",y),b("Could not load the wallet. Please try again.");}finally{g(false);}})();};if(s){let{WalletLogin:y}=s.mod;return jsx(y,{...u,wagmiConfig:s.config,disabled:n,label:t,style:i,autoStart:true})}return jsx(P,{loading:f,disabled:n,label:t,style:i,error:m,onClick:d})}function O(e$1){let{walletConnectProjectId:o,appName:r,disabled:l,label:n,style:t,...i}=e$1,[u,s]=useState(null),[p,f]=useState(false),[g,m]=useState(null);if(e())return L(t);let b=()=>{f(true),m(null),(async()=>{try{let d=await import('./solanaIndex.js');o&&d.createSolanaWalletConfig({walletConnectProjectId:o,appName:r}),s(d);}catch(d){console.error("[idosgames/wallet] failed to load the wallet module:",d),m("Could not load the wallet. Please try again.");}finally{f(false);}})();};if(u){let{SolanaWalletLogin:d}=u;return jsx(d,{...i,disabled:l,label:n,style:t,autoStart:true})}return jsx(P,{loading:p,disabled:l,label:n,style:t,error:g,onClick:b})}var q={pointerEvents:"auto",background:"#04276bf5",border:"1px solid #1e59c8",borderRadius:12,padding:16,color:"#fff",width:320,boxSizing:"border-box",fontFamily:"system-ui, sans-serif",fontSize:13};function H(e$1){let{onClose:o,style:r}=e$1,l=e(),[n,t]=useState(null),[i,u]=useState(null);return useEffect(()=>{if(l)return;let s=true;return (async()=>{try{let p=await import('./index.js');s&&t(p);}catch(p){console.error("[idosgames/wallet] failed to load the wallet panel:",p),s&&u("Could not load the wallet.");}})(),()=>{s=false;}},[l]),l?L(r):n?jsx(n.WalletPanel,{...e$1}):jsxs("div",{style:{...q,...r},children:[i??"Loading wallet\u2026",o&&jsx("button",{type:"button",onClick:o,style:{background:"#1e59c8",color:"#fff",border:"none",borderRadius:8,padding:"7px 12px",fontWeight:600,cursor:"pointer",marginLeft:10},children:"\u2715"})]})}export{O as LazySolanaWalletLogin,K as LazyWalletLogin,H as LazyWalletPanel};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
'use strict';var appkitAdapterSolana=require('@reown/appkit-adapter-solana'),react=require('@reown/appkit/react'),core=require('@idosgames/core'),viem=require('viem'),react$1=require('react'),jsxRuntime=require('react/jsx-runtime');var v={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"},J={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 _=null;function H(e){_=e;}function I(){return _}function X(e){let{walletConnectProjectId:t,appName:a,appUrl:o,appIcon:p,wallets:r}=e,d=e.networks??[v],i=o??(typeof window<"u"?window.location.origin:""),n={name:a??"iDosGames",description:a??"iDosGames game",url:i,icons:p?[p]:[]},s=new appkitAdapterSolana.SolanaAdapter(r?{wallets:r}:{});return H(react.createAppKit({adapters:[s],networks:d,projectId:t,metadata:n,features:{analytics:false,email:false,socials:false}})),s}function y(e){return e instanceof viem.BaseError?e.shortMessage:e instanceof Error?e.message:String(e)}function c(e,t,a){return {ok:false,stage:e,error:t,...a}}function m(e,t){return {ok:false,stage:e,error:t}}var Y="WALLET_USE_SITE_PANEL";function S(){if(typeof window>"u")return false;try{return window.self!==window.top}catch{return true}}function D(e){return c(e,Y)}function z(e){return m(e,Y)}async function
|
|
1
|
+
'use strict';var appkitAdapterSolana=require('@reown/appkit-adapter-solana'),react=require('@reown/appkit/react'),core=require('@idosgames/core'),viem=require('viem'),react$1=require('react'),jsxRuntime=require('react/jsx-runtime');var v={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"},J={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 _=null;function H(e){_=e;}function I(){return _}function X(e){let{walletConnectProjectId:t,appName:a,appUrl:o,appIcon:p,wallets:r}=e,d=e.networks??[v],i=o??(typeof window<"u"?window.location.origin:""),n={name:a??"iDosGames",description:a??"iDosGames game",url:i,icons:p?[p]:[]},s=new appkitAdapterSolana.SolanaAdapter(r?{wallets:r}:{});return H(react.createAppKit({adapters:[s],networks:d,projectId:t,metadata:n,features:{analytics:false,email:false,socials:false}})),s}function y(e){return e instanceof viem.BaseError?e.shortMessage:e instanceof Error?e.message:String(e)}function c(e,t,a){return {ok:false,stage:e,error:t,...a}}function m(e,t){return {ok:false,stage:e,error:t}}var Y="WALLET_USE_SITE_PANEL";function S(){if(typeof window>"u")return false;try{return window.self!==window.top}catch{return true}}function D(e){return c(e,Y)}function z(e){return m(e,Y)}async function L(e){let{client:t,adapter:a,network:o,mint:p,amountRaw:r,titleID:d,category:i}=e;if(S())return D("deposit-onchain");let n=t.auth.context?.userID;if(!n)return c("deposit-onchain","Not logged in.");if(r<=0n)return c("deposit-onchain","Amount must be positive.");let s;try{s=await a.depositSpl({mint:p,amountRaw:r,userID:n,titleID:d,category:core.normalizeBlockchainCategory(i)});}catch(u){return c("deposit-onchain",y(u))}let l=await t.blockchain.depositToken(o.NetworkID??"",s);return l.ok?{ok:true,onChainTxHash:s,data:l.data}:c("report",l.error,{onChainTxHash:s})}async function B(e){let{client:t,adapter:a,currencyID:o,networkID:p,walletAddress:r,amount:d,category:i}=e;if(S())return D("request");let n=await t.blockchain.requestTokenWithdrawal(o,p,r,d,i);if(!n.ok)return c("request",n.error);let s=n.data.SolanaSignature,l=n.data.TitleTransactionID??void 0;if(!s)return c("request","Withdrawal response carried no Solana signature.",{titleTransactionID:l});let u;try{u=await a.submitWithdrawal(s);}catch(T){return c("withdraw-onchain",y(T),{titleTransactionID:l})}if(!l)return c("confirm","Missing TitleTransactionID.",{onChainTxHash:u});let g=await t.blockchain.confirmWithdrawal(l,u);return g.ok?{ok:true,onChainTxHash:u,data:n.data}:c("confirm",g.error,{onChainTxHash:u,titleTransactionID:l})}async function k(e){let{client:t,networkID:a,walletAddress:o,signMessage:p}=e;if(S())return z("challenge");let r=await t.auth.requestWalletChallenge(o,a);if(!r.ok)return m("challenge",r.error);let d;try{let n=await p(new TextEncoder().encode(r.data.Message));d=ne(n);}catch(n){return m("sign",y(n))}let i=await t.auth.loginWithWallet(o,a,d);return i.ok?{ok:true,data:i.data}:m("login",i.error)}function ne(e){let t="0x";for(let a of e)t+=a.toString(16).padStart(2,"0");return t}var j="Wallet not connected.";function oe(e,t,a){let{address:o}=react.useAppKitAccount(),{walletProvider:p}=react.useAppKitProvider("solana"),r=o??null,d=p?.signMessage?.bind(p);return {connected:!!r,account:r,loginWithWallet:(i,n)=>{let s=n??r;return s?d?k({client:e,networkID:i,walletAddress:s,signMessage:d}):Promise.resolve(m("sign","The connected wallet does not support message signing.")):Promise.resolve(m("challenge",j))},depositToken:i=>L({client:e,adapter:a,titleID:t,...i}),withdrawToken:i=>{let n=i.walletAddress??r;return n?B({client:e,adapter:a,...i,walletAddress:n}):Promise.resolve(c("request",j))}}}var le=18e4,pe=9e4;function ce(e){try{let a=e?.session?.peer?.metadata?.redirect,o=a?.native||a?.universal;return !o||typeof window>"u"?!1:(window.location.href=o,!0)}catch{return false}}function de(e,t){return new Promise((a,o)=>{let p=setTimeout(()=>o(new Error("The wallet request timed out.")),t);e.then(r=>{clearTimeout(p),a(r);},r=>{clearTimeout(p),o(r instanceof Error?r:new Error(String(r)));});})}function ue(e){let t="Wallet sign-in failed. Please try again.";return e instanceof Error?/user (rejected|denied|cancelled|canceled)|rejected the request/i.test(e.message)?"Request declined in the wallet.":/timed? ?out/i.test(e.message)?"The wallet did not respond. Open your wallet and try again.":t:t}function me(e){let{client:t,networkID:a,onAuthenticated:o,disabled:p,label:r,style:d,autoStart:i}=e,{address:n,isConnected:s}=react.useAppKitAccount(),{walletProvider:l}=react.useAppKitProvider("solana"),[u,g]=react$1.useState(false),[T,f]=react$1.useState(null),[F,W]=react$1.useState(false),[M,O]=react$1.useState(false),b=react$1.useRef(null),U=react$1.useRef(0),w=react$1.useCallback(()=>{b.current&&clearTimeout(b.current),b.current=null;},[]);react$1.useEffect(()=>w,[w]);let C=react$1.useRef(false),E=react$1.useCallback(async()=>{let x=++U.current,P=()=>U.current===x,q=l?.signMessage?.bind(l);if(!n||!q){f("The connected wallet cannot sign messages."),g(false);return}g(true),f(null);try{O(!0);let h=await de(k({client:t,networkID:a,walletAddress:n,signMessage:q}),pe);if(!P())return;if(h.ok){o();return}f(h.stage==="sign"?"Signature declined.":h.error??"Wallet sign-in failed.");}catch(h){if(!P())return;console.error("[idosgames/wallet] solana sign-in failed:",h),f(ue(h));}finally{P()&&(g(false),O(false));}},[n,l,t,a,o]),$=react$1.useCallback(()=>{ce(l)||I()?.open();},[l]);react$1.useEffect(()=>{!F||!s||!n||!l||(W(false),w(),E());},[F,s,n,l,E,w]);let G=()=>{if(M){$();return}if(f(null),C.current=true,s&&n&&l){E();return}let x=I();if(!x){f("Wallet sign-in is not configured for this title.");return}g(true),W(true),w(),b.current=setTimeout(()=>{W(false),g(false),f("No wallet was connected.");},le),x.open();};return react$1.useEffect(()=>{!i||C.current||(C.current=true,G());},[i]),jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[jsxRuntime.jsx("button",{type:"button",onClick:G,disabled:p,style:{...ge,...p?{opacity:.6,cursor:"default"}:null,...d},children:M?"Waiting for signature \u2014 tap to open wallet":u?"Check your wallet\u2026":s?r??"Sign in with wallet":"Connect wallet"}),T&&jsxRuntime.jsx("span",{role:"alert",style:fe,children:T})]})}var ge={padding:"11px 16px",borderRadius:"8px",border:"none",background:"#4c3fa8",color:"#fff",font:"inherit",fontWeight:600,cursor:"pointer"},fe={display:"block",marginTop:"6px",color:"#ff9b9b",fontSize:"13px",textAlign:"center"};
|
|
2
2
|
exports.SolanaWalletLogin=me;exports.createSolanaWalletConfig=X;exports.solanaDevnet=J;exports.solanaMainnet=v;exports.useSolanaBridge=oe;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import {b,a as a$1,c}from'../chunk-
|
|
1
|
+
import {b,a as a$1,c}from'../chunk-2PEE5F3U.js';import {a,b as b$2}from'../chunk-ZL42KPPC.js';import {u,b as b$1,c as c$1}from'../chunk-IEWZH6XD.js';export{v as solanaDevnet,u as solanaMainnet}from'../chunk-IEWZH6XD.js';import {SolanaAdapter}from'@reown/appkit-adapter-solana';import {createAppKit,useAppKitAccount,useAppKitProvider}from'@reown/appkit/react';import {useState,useRef,useCallback,useEffect}from'react';import {jsxs,Fragment,jsx}from'react/jsx-runtime';function J(e){let{walletConnectProjectId:r,appName:n,appUrl:a$1,appIcon:i,wallets:t}=e,c=e.networks??[u],s=a$1??(typeof window<"u"?window.location.origin:""),o={name:n??"iDosGames",description:n??"iDosGames game",url:s,icons:i?[i]:[]},l=new SolanaAdapter(t?{wallets:t}:{});return a(createAppKit({adapters:[l],networks:c,projectId:r,metadata:o,features:{analytics:false,email:false,socials:false}})),l}var _="Wallet not connected.";function X(e,r,n){let{address:a}=useAppKitAccount(),{walletProvider:i}=useAppKitProvider("solana"),t=a??null,c$2=i?.signMessage?.bind(i);return {connected:!!t,account:t,loginWithWallet:(s,o)=>{let l=o??t;return l?c$2?c({client:e,networkID:s,walletAddress:l,signMessage:c$2}):Promise.resolve(c$1("sign","The connected wallet does not support message signing.")):Promise.resolve(c$1("challenge",_))},depositToken:s=>a$1({client:e,adapter:n,titleID:r,...s}),withdrawToken:s=>{let o=s.walletAddress??t;return o?b({client:e,adapter:n,...s,walletAddress:o}):Promise.resolve(b$1("request",_))}}}var $=18e4,ee=9e4;function te(e){try{let n=e?.session?.peer?.metadata?.redirect,a=n?.native||n?.universal;return !a||typeof window>"u"?!1:(window.location.href=a,!0)}catch{return false}}function ne(e,r){return new Promise((n,a)=>{let i=setTimeout(()=>a(new Error("The wallet request timed out.")),r);e.then(t=>{clearTimeout(i),n(t);},t=>{clearTimeout(i),a(t instanceof Error?t:new Error(String(t)));});})}function oe(e){let r="Wallet sign-in failed. Please try again.";return e instanceof Error?/user (rejected|denied|cancelled|canceled)|rejected the request/i.test(e.message)?"Request declined in the wallet.":/timed? ?out/i.test(e.message)?"The wallet did not respond. Open your wallet and try again.":r:r}function re(e){let{client:r,networkID:n,onAuthenticated:a,disabled:i,label:t,style:c$1,autoStart:s}=e,{address:o,isConnected:l}=useAppKitAccount(),{walletProvider:p}=useAppKitProvider("solana"),[q,f]=useState(false),[D,d]=useState(null),[I,y]=useState(false),[K,x]=useState(false),m=useRef(null),N=useRef(0),g=useCallback(()=>{m.current&&clearTimeout(m.current),m.current=null;},[]);useEffect(()=>g,[g]);let k=useRef(false),A=useCallback(async()=>{let w=++N.current,W=()=>N.current===w,B=p?.signMessage?.bind(p);if(!o||!B){d("The connected wallet cannot sign messages."),f(false);return}f(true),d(null);try{x(!0);let u=await ne(c({client:r,networkID:n,walletAddress:o,signMessage:B}),ee);if(!W())return;if(u.ok){a();return}d(u.stage==="sign"?"Signature declined.":u.error??"Wallet sign-in failed.");}catch(u){if(!W())return;console.error("[idosgames/wallet] solana sign-in failed:",u),d(oe(u));}finally{W()&&(f(false),x(false));}},[o,p,r,n,a]),j=useCallback(()=>{te(p)||b$2()?.open();},[p]);useEffect(()=>{!I||!l||!o||!p||(y(false),g(),A());},[I,l,o,p,A,g]);let E=()=>{if(K){j();return}if(d(null),k.current=true,l&&o&&p){A();return}let w=b$2();if(!w){d("Wallet sign-in is not configured for this title.");return}f(true),y(true),g(),m.current=setTimeout(()=>{y(false),f(false),d("No wallet was connected.");},$),w.open();};return useEffect(()=>{!s||k.current||(k.current=true,E());},[s]),jsxs(Fragment,{children:[jsx("button",{type:"button",onClick:E,disabled:i,style:{...ae,...i?{opacity:.6,cursor:"default"}:null,...c$1},children:K?"Waiting for signature \u2014 tap to open wallet":q?"Check your wallet\u2026":l?t??"Sign in with wallet":"Connect wallet"}),D&&jsx("span",{role:"alert",style:ie,children:D})]})}var ae={padding:"11px 16px",borderRadius:"8px",border:"none",background:"#4c3fa8",color:"#fff",font:"inherit",fontWeight:600,cursor:"pointer"},ie={display:"block",marginTop:"6px",color:"#ff9b9b",fontSize:"13px",textAlign:"center"};export{re as SolanaWalletLogin,J as createSolanaWalletConfig,X as useSolanaBridge};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@idosgames/wallet",
|
|
3
|
-
"version": "0.4.
|
|
3
|
+
"version": "0.4.1",
|
|
4
4
|
"description": "Wallet-bridge companion to @idosgames/core: connect browser & mobile wallets (EVM via wagmi/viem/WalletConnect, Solana via wallet-adapter) and move tokens/NFTs in and out of the game through client.blockchain.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "MIT",
|
|
@@ -70,7 +70,7 @@
|
|
|
70
70
|
},
|
|
71
71
|
"//": "@idosgames/core не '*': опубликованный пакет обязан назвать диапазон, иначе установка wallet притянет любую версию core, включая будущую ломающую. На 0.x '^' даёт >=0.1.0 <0.2.0 — ровно ту зону, где core обещает совместимость (см. RELEASING.md). Поднимать при мажорном/минорном бампе core.",
|
|
72
72
|
"dependencies": {
|
|
73
|
-
"@idosgames/core": "^0.
|
|
73
|
+
"@idosgames/core": "^0.17.0",
|
|
74
74
|
"viem": "^2.55.2"
|
|
75
75
|
},
|
|
76
76
|
"peerDependencies": {
|
package/dist/chunk-OZXERZ5Q.js
DELETED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import {BaseError}from'viem';function E(e){return e instanceof BaseError?e.shortMessage:e instanceof Error?e.message:String(e)}function a(e,t,n){return {ok:false,stage:e,error:t,...n}}function r(e,t){return {ok:false,stage:e,error:t}}var o="WALLET_USE_SITE_PANEL";function w(){if(typeof window>"u")return false;try{return window.self!==window.top}catch{return true}}function S(){if(typeof window>"u")return false;try{return window.parent!==window.top}catch{return true}}function k(e){return a(e,o)}function C(e){return r(e,o)}var s=["https://idosgames.com","https://www.idosgames.com"];function L(e){if(typeof window>"u")return ()=>{};let t=n=>{s.includes(n.origin)&&n.data?.type==="IDOS_WALLET_BALANCE_CHANGED"&&e();};return window.addEventListener("message",t),()=>window.removeEventListener("message",t)}var l={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"}}},p={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"}}},c={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"}}},u={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"}}},d={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"}}},m={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"}}},g={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"}}},h={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"}}},f={mainnet:l,bsc:p,polygon:c,base:u,arbitrum:d,optimism:m,sepolia:g,polygonAmoy:h};function B(e){return Object.values(f).find(t=>t.id===e)}function N(e){return {...e,chainNamespace:"eip155",caipNetworkId:`eip155:${e.id}`}}var T={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"},A={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"};
|
|
2
|
-
export{E as a,a as b,r as c,o as d,w as e,S as f,k as g,C as h,L as i,l as j,p as k,c as l,u as m,d as n,m as o,g as p,h as q,f as r,B as s,N as t,T as u,A as v};
|