@idosgames/wallet 0.6.4 → 0.6.5

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.
@@ -1 +1 @@
1
- import {f,h as h$1,b,a,i,c}from'./chunk-K3THMWU2.js';import {encodeAbiParameters,parseUnits}from'viem';import {normalizeBlockchainCategory}from'@idosgames/core';var k=[{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:[]}],I=[{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"}]}],E=[{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"}]}],x=[{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:r,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 r.waitForTransactionReceipt({hash:o})).status==="reverted")throw new Error(`On-chain transaction reverted (${o}).`);return o}function T(e){let t=e.RewardPoolAddress;return t||null}async function W(e,t,n,r){return await e.publicClient.readContract({address:t,abi:v,functionName:"allowance",args:[e.account,n]})>=r?null:h(e,{address:t,abi:v,functionName:"approve",args:[n,r]})}async function N(e){let{client:t,clients:n,network:r,tokenAddress:s,amount:o,titleID:m,category:d}=e;if(f())return h$1("approve");let i=t.auth.context?.userID;if(!i)return b("approve","Not logged in.");let u=T(r);if(!u)return b("approve","Network has no RewardPoolAddress.");if(o<=0n)return b("approve","Amount must be positive.");try{await W(n,s,u,o);}catch(l){return b("approve",a(l))}let c;try{c=await h(n,{address:u,abi:k,functionName:"depositERC20",args:[s,o,i,m,d??""]});}catch(l){return b("deposit-onchain",a(l))}let p=await t.blockchain.depositToken(r.NetworkID??"",c);return p.ok?{ok:true,onChainTxHash:c,data:p.data}:b("report",p.error,{onChainTxHash:c})}async function S(e){let{clients:t,poolAddress:n,tokenAddress:r,amount:s,userID:o,titleID:m,category:d}=e;if(f())return h$1("approve");if(!o)return b("approve","userID is required.");if(s<=0n)return b("approve","Amount must be positive.");try{await W(t,r,n,s);}catch(i){return b("approve",a(i))}try{let i=await h(t,{address:n,abi:k,functionName:"depositERC20",args:[r,s,o,m,d??""]});return {ok:!0,onChainTxHash:i,data:{txHash:i}}}catch(i){return b("deposit-onchain",a(i))}}async function L(e){let{client:t,clients:n,network:r,nftContractAddress:s,tokenId:o,amount:m,titleID:d,category:i}=e;if(f())return h$1("deposit-onchain");let u=t.auth.context?.userID;if(!u)return b("deposit-onchain","Not logged in.");let c=T(r);if(!c)return b("deposit-onchain","Network has no RewardPoolAddress.");if(m<=0n)return b("deposit-onchain","Amount must be positive.");let p=D(u,d,i),l;try{l=await h(n,{address:s,abi:E,functionName:"safeTransferFrom",args:[n.account,c,o,m,p]});}catch(A){return b("deposit-onchain",a(A))}let f$1=await t.blockchain.depositNFT(r.NetworkID??"",l);return f$1.ok?{ok:true,onChainTxHash:l,data:f$1.data}:b("report",f$1.error,{onChainTxHash:l})}async function O(e){let{client:t,clients:n,network:r,nftContractAddress:s,tokenId:o,titleID:m,category:d}=e;if(f())return h$1("deposit-onchain");let i=t.auth.context?.userID;if(!i)return b("deposit-onchain","Not logged in.");let u=T(r);if(!u)return b("deposit-onchain","Network has no RewardPoolAddress.");let c=D(i,m,d),p;try{p=await h(n,{address:s,abi:x,functionName:"safeTransferFrom",args:[n.account,u,o,c]});}catch(f){return b("deposit-onchain",a(f))}let l=await t.blockchain.depositNFT(r.NetworkID??"",p);return l.ok?{ok:true,onChainTxHash:p,data:l.data}:b("report",l.error,{onChainTxHash:p})}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:k,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:I,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 q(e,t){return h(e,{address:t.ContractAddress,abi:I,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){let{client:t,clients:n,currencyID:r,networkID:s,walletAddress:o,amount:m,category:d}=e;if(f())return h$1("request");let i=await t.blockchain.requestTokenWithdrawal(r,s,o,m,d);if(!i.ok)return b("request",i.error);let u=i.data.EvmSignature,c=i.data.TitleTransactionID??void 0;if(!u)return b("request","Withdrawal response carried no EVM signature.",{titleTransactionID:c});let p;try{p=await B(n,u);}catch(f){return b("withdraw-onchain",a(f),{titleTransactionID:c})}let l=await H(t,c,p);return l.ok?{ok:true,onChainTxHash:p,data:i.data}:l}async function $(e){let{client:t,clients:n,itemID:r,networkID:s,walletAddress:o,amount:m,category:d}=e;if(f())return h$1("request");let i=await t.blockchain.requestNFTWithdrawal(r,s,o,m,d);if(!i.ok)return b("request",i.error);let u=i.data.EvmSignature,c=i.data.TitleTransactionID??void 0;if(!u)return b("request","Withdrawal response carried no EVM signature.",{titleTransactionID:c});let p;try{p=await R(n,u);}catch(f){return b("withdraw-onchain",a(f),{titleTransactionID:c})}let l=await H(t,c,p);return l.ok?{ok:true,onChainTxHash:p,data:i.data}:l}async function H(e,t,n){if(!t)return b("confirm","Missing TitleTransactionID.",{onChainTxHash:n});let r=await e.blockchain.confirmWithdrawal(t,n);return r.ok?{ok:true,onChainTxHash:n,data:r.data}:b("confirm",r.error,{onChainTxHash:n,titleTransactionID:t})}async function V(e){let{client:t,clients:n,networkID:r}=e;if(f())return i("challenge");let s=e.walletAddress??n.account,o=await t.auth.requestWalletChallenge(s,r);if(!o.ok)return c("challenge",o.error);let m;try{m=await n.walletClient.signMessage({account:n.account,message:o.data.Message});}catch(i){return c("sign",a(i))}let d=await t.auth.loginWithWallet(s,r,m);return d.ok?{ok:true,data:d.data}:c("login",d.error)}async function z(e){let{client:t,clients:n,networkID:r}=e;if(f())return i("challenge");let s=e.walletAddress??n.account,o=await t.auth.linkWallet(s,r);if(!o.ok)return c("challenge",o.error);if(!o.data.Challenge)return c("challenge","No challenge was issued.");let m;try{m=await n.walletClient.signMessage({account:n.account,message:o.data.Challenge});}catch(i){return c("sign",a(i))}let d=await t.auth.linkWallet(s,r,m);return d.ok?{ok:true,data:d.data}:c("login",d.error)}async function J(e){let{client:t,clients:n,network:r,tokenAddress:s,decimals:o,titleID:m,shortfall:d,completePurchase:i,bufferRatio:u=0,category:c}=e;if(f())return h$1("approve");if(d.missing<=0)return b("approve","Nothing to deposit.");let p=d.missing*(1+Math.max(0,u)),l;try{l=parseUnits(K(p,o),o);}catch(F){return b("approve",a(F))}let f$1=await N({client:t,clients:n,network:r,tokenAddress:s,amount:l,titleID:m,category:c});if(!f$1.ok)return f$1;let A=await i();return A.ok?{ok:true,onChainTxHash:f$1.onChainTxHash,data:A.data}:b("report",A.error,{onChainTxHash:f$1.onChainTxHash})}function K(e,t){return e.toFixed(Math.min(t,18)).replace(/0+$/,"").replace(/\.$/,"")||"0"}export{k as a,v as b,E as c,x as d,D as e,h as f,W as g,N as h,S as i,L as j,O as k,B as l,R as m,q as n,U as o,$ as p,V as q,z as r,J as s};
1
+ import {f,h as h$1,b,a,i,c}from'./chunk-K3THMWU2.js';import {encodeAbiParameters,parseUnits}from'viem';import {normalizeBlockchainCategory}from'@idosgames/core';var k=[{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:[]}],I=[{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"}]}],E=[{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"}]}],x=[{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(n,t,e){return encodeAbiParameters([{type:"string"},{type:"string"},{type:"string"}],[n,t,normalizeBlockchainCategory(e)])}async function h(n,t){let{walletClient:e,publicClient:r,account:s}=n,o=await e.writeContract({address:t.address,abi:t.abi,functionName:t.functionName,args:t.args,account:s,chain:e.chain,value:t.value});if((await r.waitForTransactionReceipt({hash:o})).status==="reverted")throw new Error(`On-chain transaction reverted (${o}).`);return o}function T(n){let t=n.RewardPoolAddress;return t||null}async function W(n,t,e,r){return await n.publicClient.readContract({address:t,abi:v,functionName:"allowance",args:[n.account,e]})>=r?null:h(n,{address:t,abi:v,functionName:"approve",args:[e,r]})}async function N(n){let{client:t,clients:e,network:r,tokenAddress:s,amount:o,titleID:m,category:d}=n;if(f())return h$1("approve");let i=t.auth.context?.userID;if(!i)return b("approve","Not logged in.");let u=T(r);if(!u)return b("approve","Network has no RewardPoolAddress.");if(o<=0n)return b("approve","Amount must be positive.");try{await W(e,s,u,o);}catch(l){return b("approve",a(l))}let c;try{c=await h(e,{address:u,abi:k,functionName:"depositERC20",args:[s,o,i,m,d??""]});}catch(l){return b("deposit-onchain",a(l))}let p=await t.blockchain.depositToken(r.NetworkID??"",c);return p.ok?{ok:true,onChainTxHash:c,data:p.data}:b("report",p.error,{onChainTxHash:c})}async function S(n){let{clients:t,poolAddress:e,tokenAddress:r,amount:s,userID:o,titleID:m,category:d}=n;if(f())return h$1("approve");if(!o)return b("approve","userID is required.");if(s<=0n)return b("approve","Amount must be positive.");try{await W(t,r,e,s);}catch(i){return b("approve",a(i))}try{let i=await h(t,{address:e,abi:k,functionName:"depositERC20",args:[r,s,o,m,d??""]});return {ok:!0,onChainTxHash:i,data:{txHash:i}}}catch(i){return b("deposit-onchain",a(i))}}async function L(n){let{client:t,clients:e,network:r,nftContractAddress:s,tokenId:o,amount:m,titleID:d,category:i}=n;if(f())return h$1("deposit-onchain");let u=t.auth.context?.userID;if(!u)return b("deposit-onchain","Not logged in.");let c=T(r);if(!c)return b("deposit-onchain","Network has no RewardPoolAddress.");if(m<=0n)return b("deposit-onchain","Amount must be positive.");let p=D(u,d,i),l;try{l=await h(e,{address:s,abi:E,functionName:"safeTransferFrom",args:[e.account,c,o,m,p]});}catch(A){return b("deposit-onchain",a(A))}let f$1=await t.blockchain.depositNFT(r.NetworkID??"",l);return f$1.ok?{ok:true,onChainTxHash:l,data:f$1.data}:b("report",f$1.error,{onChainTxHash:l})}async function O(n){let{client:t,clients:e,network:r,nftContractAddress:s,tokenId:o,titleID:m,category:d}=n;if(f())return h$1("deposit-onchain");let i=t.auth.context?.userID;if(!i)return b("deposit-onchain","Not logged in.");let u=T(r);if(!u)return b("deposit-onchain","Network has no RewardPoolAddress.");let c=D(i,m,d),p;try{p=await h(e,{address:s,abi:x,functionName:"safeTransferFrom",args:[e.account,u,o,c]});}catch(f){return b("deposit-onchain",a(f))}let l=await t.blockchain.depositNFT(r.NetworkID??"",p);return l.ok?{ok:true,onChainTxHash:p,data:l.data}:b("report",l.error,{onChainTxHash:p})}function P(n){return (n.Splits??[]).map(t=>({to:t.To,amount:BigInt(t.Amount??"0")}))}async function B(n,t){return h(n,{address:t.ContractAddress,abi:k,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(n,t){return h(n,{address:t.ContractAddress,abi:I,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 q(n,t){return h(n,{address:t.ContractAddress,abi:I,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(n){let{client:t,clients:e,currencyID:r,networkID:s,walletAddress:o,amount:m,category:d}=n;if(f())return h$1("request");let i=await t.blockchain.requestTokenWithdrawal(r,s,o,m,d);if(!i.ok)return b("request",i.error);let u=i.data.EvmSignature,c=i.data.TitleTransactionID??void 0;if(!u)return b("request","Withdrawal response carried no EVM signature.",{titleTransactionID:c});let p;try{p=await B(e,u);}catch(f){return b("withdraw-onchain",a(f),{titleTransactionID:c})}let l=await H(t,c,p);return l.ok?{ok:true,onChainTxHash:p,data:i.data}:l}async function $(n){let{client:t,clients:e,itemID:r,networkID:s,walletAddress:o,amount:m,category:d}=n;if(f())return h$1("request");let i=await t.blockchain.requestNFTWithdrawal(r,s,o,m,d);if(!i.ok)return b("request",i.error);let u=i.data.EvmSignature,c=i.data.TitleTransactionID??void 0;if(!u)return b("request","Withdrawal response carried no EVM signature.",{titleTransactionID:c});let p;try{p=await R(e,u);}catch(f){return b("withdraw-onchain",a(f),{titleTransactionID:c})}let l=await H(t,c,p);return l.ok?{ok:true,onChainTxHash:p,data:i.data}:l}async function H(n,t,e){if(!t)return b("confirm","Missing TitleTransactionID.",{onChainTxHash:e});let r=await n.blockchain.confirmWithdrawal(t,e);return r.ok?{ok:true,onChainTxHash:e,data:r.data}:b("confirm",r.error,{onChainTxHash:e,titleTransactionID:t})}async function V(n){let{client:t,clients:e,networkID:r}=n;if(f())return i("challenge");let s=n.walletAddress??e.account,o=await t.auth.requestWalletChallenge(s,r);if(!o.ok)return c("challenge",o.error);let m;try{m=await e.walletClient.signMessage({account:e.account,message:o.data.Message});}catch(i){return c("sign",a(i))}let d=await t.auth.loginWithWallet(s,r,m);return d.ok?{ok:true,data:d.data}:c("login",d.error)}async function z(n){let{client:t,clients:e,networkID:r}=n;if(f())return i("challenge");let s=n.walletAddress??e.account,o=await t.auth.linkWallet(s,r);if(!o.ok)return c("challenge",o.error);if(!o.data.Challenge)return c("challenge","No challenge was issued.");let m;try{m=await e.walletClient.signMessage({account:e.account,message:o.data.Challenge});}catch(i){return c("sign",a(i))}let d=await t.auth.linkWallet(s,r,m);return d.ok?{ok:true,data:d.data}:c("login",d.error)}async function J(n){let{client:t,clients:e,network:r,tokenAddress:s,decimals:o,titleID:m,shortfall:d,completePurchase:i,bufferRatio:u=0,category:c}=n;if(f())return h$1("approve");if(d.missing<=0)return b("approve","Nothing to deposit.");let p=d.missing*(1+Math.max(0,u)),l;try{l=parseUnits(K(p,o),o);}catch(F){return b("approve",a(F))}let f$1=await N({client:t,clients:e,network:r,tokenAddress:s,amount:l,titleID:m,category:c});if(!f$1.ok)return f$1;let A=await i();return A.ok?{ok:true,onChainTxHash:f$1.onChainTxHash,data:A.data}:b("report",A.error,{onChainTxHash:f$1.onChainTxHash})}function K(n,t){let e=n.toFixed(Math.min(t,18));return e.includes(".")?e.replace(/0+$/,"").replace(/\.$/,"")||"0":e}export{k as a,v as b,E as c,x as d,D as e,h as f,W as g,N as h,S as i,L as j,O as k,B as l,R as m,q as n,U as o,$ as p,V as q,z as r,J as s};
package/dist/index.cjs CHANGED
@@ -1,2 +1,2 @@
1
- 'use strict';var viem=require('viem'),core=require('@idosgames/core');function f(t){return t instanceof viem.BaseError?t.shortMessage:t instanceof Error?t.message:String(t)}function s(t,e,n){return {ok:false,stage:t,error:e,...n}}function g(t,e){return {ok:false,stage:t,error:e}}var I="WALLET_USE_SITE_PANEL",V=/^[a-z0-9]{8}-preview\.idos\.games$/;function N(t=typeof window>"u"?"":window.location.hostname){let e=t.toLowerCase();return V.test(e)?true:e!=="localhost"&&e!=="127.0.0.1"?false:globalThis.__IDOS_PREVIEW__!=null}function y(){if(typeof window>"u"||N())return false;try{return window.self!==window.top}catch{return true}}function K(){if(typeof window>"u")return false;try{return window.parent!==window.top}catch{return true}}function w(t){return s(t,I)}function A(t){return g(t,I)}var $=core.PLATFORM_ORIGINS;function Y(t){if(typeof window>"u")return ()=>{};let e=n=>{$.includes(n.origin)&&n.data?.type==="IDOS_WALLET_BALANCE_CHANGED"&&t();};return window.addEventListener("message",e),()=>window.removeEventListener("message",e)}var E={addressRequest:"IDOS_PLATFORM_WALLET_ADDRESS_REQUEST",addressResponse:"IDOS_PLATFORM_WALLET_ADDRESS_RESPONSE",signRequest:"IDOS_PLATFORM_WALLET_SIGN_REQUEST",signResponse:"IDOS_PLATFORM_WALLET_SIGN_RESPONSE",ack:core.PLATFORM_BRIDGE_ACK,openRequest:"IDOS_PLATFORM_WALLET_OPEN_REQUEST",openResponse:"IDOS_PLATFORM_WALLET_OPEN_RESPONSE"},J=core.PLATFORM_PAGE_UNAVAILABLE;async function C(t,e,n){let a=await core.askPlatformPage(t,e,n),{address:o,signature:i}=a.data;return {ok:a.ok,error:a.error,address:typeof o=="string"?o:void 0,signature:typeof i=="string"?i:void 0}}async function j(){return (await C(E.openRequest,E.openResponse,{})).ok}async function X(t){let{client:e,networkID:n}=t;return B(t,async a=>{let o=await e.auth.requestWalletChallenge(a,n);return o.ok?{ok:true,message:o.data.Message}:{ok:false,error:o.error}},(a,o)=>e.auth.loginWithWallet(a,n,o))}async function ee(t){let{client:e,networkID:n}=t;return B(t,async a=>{let o=await e.auth.linkWallet(a,n);return o.ok?o.data.Challenge?{ok:true,message:o.data.Challenge}:{ok:false,error:"No challenge was issued."}:{ok:false,error:o.error}},(a,o)=>e.auth.linkWallet(a,n,o))}async function B(t,e,n){let{client:a,family:o}=t,i=a.titleID,d=await C(E.addressRequest,E.addressResponse,{titleID:i,family:o});if(!d.ok||!d.address)return g("challenge",d.error??"NO_WALLET");let l=d.address,r=await e(l);if(!r.ok)return g("challenge",r.error);let p=await C(E.signRequest,E.signResponse,{titleID:i,family:o,address:l,message:r.message});if(!p.ok||!p.signature)return g("sign",p.error??"SIGN_FAILED");let c=await n(l,p.signature);return c.ok?{ok:true,data:c.data}:g("login",c.error)}var te={id:1,name:"Ethereum",nativeCurrency:{name:"Ether",symbol:"ETH",decimals:18},rpcUrls:{default:{http:["https://eth.llamarpc.com"]}},blockExplorers:{default:{name:"Etherscan",url:"https://etherscan.io"}}},ne={id:56,name:"BNB Smart Chain",nativeCurrency:{name:"BNB",symbol:"BNB",decimals:18},rpcUrls:{default:{http:["https://bsc-dataseed.binance.org"]}},blockExplorers:{default:{name:"BscScan",url:"https://bscscan.com"}}},ae={id:137,name:"Polygon",nativeCurrency:{name:"POL",symbol:"POL",decimals:18},rpcUrls:{default:{http:["https://polygon-rpc.com"]}},blockExplorers:{default:{name:"PolygonScan",url:"https://polygonscan.com"}}},re={id:8453,name:"Base",nativeCurrency:{name:"Ether",symbol:"ETH",decimals:18},rpcUrls:{default:{http:["https://mainnet.base.org"]}},blockExplorers:{default:{name:"BaseScan",url:"https://basescan.org"}}},oe={id:42161,name:"Arbitrum One",nativeCurrency:{name:"Ether",symbol:"ETH",decimals:18},rpcUrls:{default:{http:["https://arb1.arbitrum.io/rpc"]}},blockExplorers:{default:{name:"Arbiscan",url:"https://arbiscan.io"}}},ie={id:10,name:"OP Mainnet",nativeCurrency:{name:"Ether",symbol:"ETH",decimals:18},rpcUrls:{default:{http:["https://mainnet.optimism.io"]}},blockExplorers:{default:{name:"Optimistic Etherscan",url:"https://optimistic.etherscan.io"}}},se={id:11155111,name:"Sepolia",testnet:true,nativeCurrency:{name:"Sepolia Ether",symbol:"ETH",decimals:18},rpcUrls:{default:{http:["https://rpc.sepolia.org"]}},blockExplorers:{default:{name:"Etherscan",url:"https://sepolia.etherscan.io"}}},le={id:80002,name:"Polygon Amoy",testnet:true,nativeCurrency:{name:"POL",symbol:"POL",decimals:18},rpcUrls:{default:{http:["https://rpc-amoy.polygon.technology"]}},blockExplorers:{default:{name:"PolygonScan",url:"https://amoy.polygonscan.com"}}},de={mainnet:te,bsc:ne,polygon:ae,base:re,arbitrum:oe,optimism:ie,sepolia:se,polygonAmoy:le};function Fe(t){return Object.values(de).find(e=>e.id===t)}function Me(t){return {...t,chainNamespace:"eip155",caipNetworkId:`eip155:${t.id}`}}var _e={id:"5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp",name:"Solana",network:"solana-mainnet",nativeCurrency:{name:"Solana",symbol:"SOL",decimals:9},rpcUrls:{default:{http:["https://api.mainnet-beta.solana.com"]}},blockExplorers:{default:{name:"Solscan",url:"https://solscan.io"}},testnet:false,chainNamespace:"solana",caipNetworkId:"solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp"},He={id:"EtWTRABZaYq6iMfeYKouRu166VU2xqa1",name:"Solana Devnet",network:"solana-devnet",nativeCurrency:{name:"Solana",symbol:"SOL",decimals:9},rpcUrls:{default:{http:["https://api.devnet.solana.com"]}},blockExplorers:{default:{name:"Solscan",url:"https://solscan.io"}},testnet:true,chainNamespace:"solana",caipNetworkId:"solana:EtWTRABZaYq6iMfeYKouRu166VU2xqa1"};var b=[{type:"function",name:"depositERC20",stateMutability:"nonpayable",inputs:[{name:"token",type:"address"},{name:"amount",type:"uint256"},{name:"userID",type:"string"},{name:"titleID",type:"string"},{name:"category",type:"string"}],outputs:[{name:"",type:"bool"}]},{type:"function",name:"withdrawERC20",stateMutability:"nonpayable",inputs:[{name:"token",type:"address"},{name:"to",type:"address"},{name:"amount",type:"uint256"},{name:"burnAmount",type:"uint256"},{name:"splits",type:"tuple[]",components:[{name:"to",type:"address"},{name:"amount",type:"uint256"}]},{name:"nonce",type:"uint256"},{name:"signature",type:"bytes"},{name:"userID",type:"string"},{name:"titleID",type:"string"},{name:"category",type:"string"},{name:"deadline",type:"uint256"}],outputs:[]},{type:"function",name:"withdrawERC1155",stateMutability:"nonpayable",inputs:[{name:"token",type:"address"},{name:"to",type:"address"},{name:"id",type:"uint256"},{name:"amount",type:"uint256"},{name:"splits",type:"tuple[]",components:[{name:"to",type:"address"},{name:"amount",type:"uint256"}]},{name:"nonce",type:"uint256"},{name:"signature",type:"bytes"},{name:"userID",type:"string"},{name:"titleID",type:"string"},{name:"category",type:"string"},{name:"deadline",type:"uint256"}],outputs:[]},{type:"function",name:"withdrawERC721",stateMutability:"nonpayable",inputs:[{name:"token",type:"address"},{name:"to",type:"address"},{name:"tokenId",type:"uint256"},{name:"nonce",type:"uint256"},{name:"signature",type:"bytes"},{name:"userID",type:"string"},{name:"titleID",type:"string"},{name:"category",type:"string"},{name:"deadline",type:"uint256"}],outputs:[]}],D=[{type:"function",name:"withdrawERC1155Mint",stateMutability:"nonpayable",inputs:[{name:"collection",type:"address"},{name:"to",type:"address"},{name:"id",type:"uint256"},{name:"amount",type:"uint256"},{name:"splits",type:"tuple[]",components:[{name:"to",type:"address"},{name:"amount",type:"uint256"}]},{name:"nonce",type:"uint256"},{name:"signature",type:"bytes"},{name:"userID",type:"string"},{name:"titleID",type:"string"},{name:"category",type:"string"},{name:"deadline",type:"uint256"}],outputs:[]},{type:"function",name:"withdrawERC721Mint",stateMutability:"nonpayable",inputs:[{name:"collection",type:"address"},{name:"to",type:"address"},{name:"tokenId",type:"uint256"},{name:"nonce",type:"uint256"},{name:"signature",type:"bytes"},{name:"userID",type:"string"},{name:"titleID",type:"string"},{name:"category",type:"string"},{name:"deadline",type:"uint256"}],outputs:[]}],x=[{type:"function",name:"approve",stateMutability:"nonpayable",inputs:[{name:"spender",type:"address"},{name:"amount",type:"uint256"}],outputs:[{name:"",type:"bool"}]},{type:"function",name:"allowance",stateMutability:"view",inputs:[{name:"owner",type:"address"},{name:"spender",type:"address"}],outputs:[{name:"",type:"uint256"}]},{type:"function",name:"decimals",stateMutability:"view",inputs:[],outputs:[{name:"",type:"uint8"}]},{type:"function",name:"balanceOf",stateMutability:"view",inputs:[{name:"account",type:"address"}],outputs:[{name:"",type:"uint256"}]}],P=[{type:"function",name:"safeTransferFrom",stateMutability:"nonpayable",inputs:[{name:"from",type:"address"},{name:"to",type:"address"},{name:"id",type:"uint256"},{name:"amount",type:"uint256"},{name:"data",type:"bytes"}],outputs:[]},{type:"function",name:"isApprovedForAll",stateMutability:"view",inputs:[{name:"account",type:"address"},{name:"operator",type:"address"}],outputs:[{name:"",type:"bool"}]},{type:"function",name:"setApprovalForAll",stateMutability:"nonpayable",inputs:[{name:"operator",type:"address"},{name:"approved",type:"bool"}],outputs:[]},{type:"function",name:"balanceOf",stateMutability:"view",inputs:[{name:"account",type:"address"},{name:"id",type:"uint256"}],outputs:[{name:"",type:"uint256"}]}],v=[{type:"function",name:"safeTransferFrom",stateMutability:"nonpayable",inputs:[{name:"from",type:"address"},{name:"to",type:"address"},{name:"tokenId",type:"uint256"},{name:"data",type:"bytes"}],outputs:[]}];function T(t,e,n){return viem.encodeAbiParameters([{type:"string"},{type:"string"},{type:"string"}],[t,e,core.normalizeBlockchainCategory(n)])}async function k(t,e){let{walletClient:n,publicClient:a,account:o}=t,i=await n.writeContract({address:e.address,abi:e.abi,functionName:e.functionName,args:e.args,account:o,chain:n.chain,value:e.value});if((await a.waitForTransactionReceipt({hash:i})).status==="reverted")throw new Error(`On-chain transaction reverted (${i}).`);return i}function S(t){let e=t.RewardPoolAddress;return e||null}async function R(t,e,n,a){return await t.publicClient.readContract({address:e,abi:x,functionName:"allowance",args:[t.account,n]})>=a?null:k(t,{address:e,abi:x,functionName:"approve",args:[n,a]})}async function L(t){let{client:e,clients:n,network:a,tokenAddress:o,amount:i,titleID:d,category:l}=t;if(y())return w("approve");let r=e.auth.context?.userID;if(!r)return s("approve","Not logged in.");let p=S(a);if(!p)return s("approve","Network has no RewardPoolAddress.");if(i<=0n)return s("approve","Amount must be positive.");try{await R(n,o,p,i);}catch(m){return s("approve",f(m))}let c;try{c=await k(n,{address:p,abi:b,functionName:"depositERC20",args:[o,i,r,d,l??""]});}catch(m){return s("deposit-onchain",f(m))}let u=await e.blockchain.depositToken(a.NetworkID??"",c);return u.ok?{ok:true,onChainTxHash:c,data:u.data}:s("report",u.error,{onChainTxHash:c})}async function ue(t){let{clients:e,poolAddress:n,tokenAddress:a,amount:o,userID:i,titleID:d,category:l}=t;if(y())return w("approve");if(!i)return s("approve","userID is required.");if(o<=0n)return s("approve","Amount must be positive.");try{await R(e,a,n,o);}catch(r){return s("approve",f(r))}try{let r=await k(e,{address:n,abi:b,functionName:"depositERC20",args:[a,o,i,d,l??""]});return {ok:!0,onChainTxHash:r,data:{txHash:r}}}catch(r){return s("deposit-onchain",f(r))}}async function me(t){let{client:e,clients:n,network:a,nftContractAddress:o,tokenId:i,amount:d,titleID:l,category:r}=t;if(y())return w("deposit-onchain");let p=e.auth.context?.userID;if(!p)return s("deposit-onchain","Not logged in.");let c=S(a);if(!c)return s("deposit-onchain","Network has no RewardPoolAddress.");if(d<=0n)return s("deposit-onchain","Amount must be positive.");let u=T(p,l,r),m;try{m=await k(n,{address:o,abi:P,functionName:"safeTransferFrom",args:[n.account,c,i,d,u]});}catch(W){return s("deposit-onchain",f(W))}let h=await e.blockchain.depositNFT(a.NetworkID??"",m);return h.ok?{ok:true,onChainTxHash:m,data:h.data}:s("report",h.error,{onChainTxHash:m})}async function ge(t){let{client:e,clients:n,network:a,nftContractAddress:o,tokenId:i,titleID:d,category:l}=t;if(y())return w("deposit-onchain");let r=e.auth.context?.userID;if(!r)return s("deposit-onchain","Not logged in.");let p=S(a);if(!p)return s("deposit-onchain","Network has no RewardPoolAddress.");let c=T(r,d,l),u;try{u=await k(n,{address:o,abi:v,functionName:"safeTransferFrom",args:[n.account,p,i,c]});}catch(h){return s("deposit-onchain",f(h))}let m=await e.blockchain.depositNFT(a.NetworkID??"",u);return m.ok?{ok:true,onChainTxHash:u,data:m.data}:s("report",m.error,{onChainTxHash:u})}function F(t){return (t.Splits??[]).map(e=>({to:e.To,amount:BigInt(e.Amount??"0")}))}async function M(t,e){return k(t,{address:e.ContractAddress,abi:b,functionName:"withdrawERC20",args:[e.TokenAddress,e.WalletAddress,BigInt(e.Amount??"0"),BigInt(e.BurnAmount??"0"),F(e),BigInt(e.Nonce??"0"),e.Signature??"0x",e.UserID??"",e.TitleID??"",e.Category??"",BigInt(e.Deadline??"0")]})}async function _(t,e){return k(t,{address:e.ContractAddress,abi:D,functionName:"withdrawERC1155Mint",args:[e.TokenAddress,e.WalletAddress,BigInt(e.TokenId??"0"),BigInt(e.Amount??"0"),F(e),BigInt(e.Nonce??"0"),e.Signature??"0x",e.UserID??"",e.TitleID??"",e.Category??"",BigInt(e.Deadline??"0")]})}async function fe(t,e){return k(t,{address:e.ContractAddress,abi:D,functionName:"withdrawERC721Mint",args:[e.TokenAddress,e.WalletAddress,BigInt(e.TokenId??"0"),BigInt(e.Nonce??"0"),e.Signature??"0x",e.UserID??"",e.TitleID??"",e.Category??"",BigInt(e.Deadline??"0")]})}async function ye(t){let{client:e,clients:n,currencyID:a,networkID:o,walletAddress:i,amount:d,category:l}=t;if(y())return w("request");let r=await e.blockchain.requestTokenWithdrawal(a,o,i,d,l);if(!r.ok)return s("request",r.error);let p=r.data.EvmSignature,c=r.data.TitleTransactionID??void 0;if(!p)return s("request","Withdrawal response carried no EVM signature.",{titleTransactionID:c});let u;try{u=await M(n,p);}catch(h){return s("withdraw-onchain",f(h),{titleTransactionID:c})}let m=await H(e,c,u);return m.ok?{ok:true,onChainTxHash:u,data:r.data}:m}async function he(t){let{client:e,clients:n,itemID:a,networkID:o,walletAddress:i,amount:d,category:l}=t;if(y())return w("request");let r=await e.blockchain.requestNFTWithdrawal(a,o,i,d,l);if(!r.ok)return s("request",r.error);let p=r.data.EvmSignature,c=r.data.TitleTransactionID??void 0;if(!p)return s("request","Withdrawal response carried no EVM signature.",{titleTransactionID:c});let u;try{u=await _(n,p);}catch(h){return s("withdraw-onchain",f(h),{titleTransactionID:c})}let m=await H(e,c,u);return m.ok?{ok:true,onChainTxHash:u,data:r.data}:m}async function H(t,e,n){if(!e)return s("confirm","Missing TitleTransactionID.",{onChainTxHash:n});let a=await t.blockchain.confirmWithdrawal(e,n);return a.ok?{ok:true,onChainTxHash:n,data:a.data}:s("confirm",a.error,{onChainTxHash:n,titleTransactionID:e})}async function we(t){let{client:e,clients:n,networkID:a}=t;if(y())return A("challenge");let o=t.walletAddress??n.account,i=await e.auth.requestWalletChallenge(o,a);if(!i.ok)return g("challenge",i.error);let d;try{d=await n.walletClient.signMessage({account:n.account,message:i.data.Message});}catch(r){return g("sign",f(r))}let l=await e.auth.loginWithWallet(o,a,d);return l.ok?{ok:true,data:l.data}:g("login",l.error)}async function ke(t){let{client:e,clients:n,networkID:a}=t;if(y())return A("challenge");let o=t.walletAddress??n.account,i=await e.auth.linkWallet(o,a);if(!i.ok)return g("challenge",i.error);if(!i.data.Challenge)return g("challenge","No challenge was issued.");let d;try{d=await n.walletClient.signMessage({account:n.account,message:i.data.Challenge});}catch(r){return g("sign",f(r))}let l=await e.auth.linkWallet(o,a,d);return l.ok?{ok:true,data:l.data}:g("login",l.error)}async function Ae(t){let{client:e,clients:n,network:a,tokenAddress:o,decimals:i,titleID:d,shortfall:l,completePurchase:r,bufferRatio:p=0,category:c}=t;if(y())return w("approve");if(l.missing<=0)return s("approve","Nothing to deposit.");let u=l.missing*(1+Math.max(0,p)),m;try{m=viem.parseUnits(be(u,i),i);}catch(G){return s("approve",f(G))}let h=await L({client:e,clients:n,network:a,tokenAddress:o,amount:m,titleID:d,category:c});if(!h.ok)return h;let W=await r();return W.ok?{ok:true,onChainTxHash:h.onChainTxHash,data:W.data}:s("report",W.error,{onChainTxHash:h.onChainTxHash})}function be(t,e){return t.toFixed(Math.min(e,18)).replace(/0+$/,"").replace(/\.$/,"")||"0"}async function xe(t){let{client:e,adapter:n,network:a,mint:o,amountRaw:i,titleID:d,category:l}=t;if(y())return w("deposit-onchain");let r=e.auth.context?.userID;if(!r)return s("deposit-onchain","Not logged in.");if(i<=0n)return s("deposit-onchain","Amount must be positive.");let p;try{p=await n.depositSpl({mint:o,amountRaw:i,userID:r,titleID:d,category:core.normalizeBlockchainCategory(l)});}catch(u){return s("deposit-onchain",f(u))}let c=await e.blockchain.depositToken(a.NetworkID??"",p);return c.ok?{ok:true,onChainTxHash:p,data:c.data}:s("report",c.error,{onChainTxHash:p})}async function Te(t){let{client:e,adapter:n,currencyID:a,networkID:o,walletAddress:i,amount:d,category:l}=t;if(y())return w("request");let r=await e.blockchain.requestTokenWithdrawal(a,o,i,d,l);if(!r.ok)return s("request",r.error);let p=r.data.SolanaSignature,c=r.data.TitleTransactionID??void 0;if(!p)return s("request","Withdrawal response carried no Solana signature.",{titleTransactionID:c});let u;try{u=await n.submitWithdrawal(p);}catch(h){return s("withdraw-onchain",f(h),{titleTransactionID:c})}if(!c)return s("confirm","Missing TitleTransactionID.",{onChainTxHash:u});let m=await e.blockchain.confirmWithdrawal(c,u);return m.ok?{ok:true,onChainTxHash:u,data:r.data}:s("confirm",m.error,{onChainTxHash:u,titleTransactionID:c})}async function Ie(t){let{client:e,networkID:n,walletAddress:a,signMessage:o}=t;if(y())return A("challenge");let i=await e.auth.requestWalletChallenge(a,n);if(!i.ok)return g("challenge",i.error);let d;try{let r=await o(new TextEncoder().encode(i.data.Message));d=O(r);}catch(r){return g("sign",f(r))}let l=await e.auth.loginWithWallet(a,n,d);return l.ok?{ok:true,data:l.data}:g("login",l.error)}async function Ce(t){let{client:e,networkID:n,walletAddress:a,signMessage:o}=t;if(y())return A("challenge");let i=await e.auth.linkWallet(a,n);if(!i.ok)return g("challenge",i.error);if(!i.data.Challenge)return g("challenge","No challenge was issued.");let d;try{let r=await o(new TextEncoder().encode(i.data.Challenge));d=O(r);}catch(r){return g("sign",f(r))}let l=await e.auth.linkWallet(a,n,d);return l.ok?{ok:true,data:l.data}:g("login",l.error)}function O(t){let e="0x";for(let n of t)e+=n.toString(16).padStart(2,"0");return e}
1
+ 'use strict';var viem=require('viem'),core=require('@idosgames/core');function f(t){return t instanceof viem.BaseError?t.shortMessage:t instanceof Error?t.message:String(t)}function s(t,e,n){return {ok:false,stage:t,error:e,...n}}function g(t,e){return {ok:false,stage:t,error:e}}var I="WALLET_USE_SITE_PANEL",V=/^[a-z0-9]{8}-preview\.idos\.games$/;function N(t=typeof window>"u"?"":window.location.hostname){let e=t.toLowerCase();return V.test(e)?true:e!=="localhost"&&e!=="127.0.0.1"?false:globalThis.__IDOS_PREVIEW__!=null}function y(){if(typeof window>"u"||N())return false;try{return window.self!==window.top}catch{return true}}function K(){if(typeof window>"u")return false;try{return window.parent!==window.top}catch{return true}}function w(t){return s(t,I)}function A(t){return g(t,I)}var $=core.PLATFORM_ORIGINS;function Y(t){if(typeof window>"u")return ()=>{};let e=n=>{$.includes(n.origin)&&n.data?.type==="IDOS_WALLET_BALANCE_CHANGED"&&t();};return window.addEventListener("message",e),()=>window.removeEventListener("message",e)}var E={addressRequest:"IDOS_PLATFORM_WALLET_ADDRESS_REQUEST",addressResponse:"IDOS_PLATFORM_WALLET_ADDRESS_RESPONSE",signRequest:"IDOS_PLATFORM_WALLET_SIGN_REQUEST",signResponse:"IDOS_PLATFORM_WALLET_SIGN_RESPONSE",ack:core.PLATFORM_BRIDGE_ACK,openRequest:"IDOS_PLATFORM_WALLET_OPEN_REQUEST",openResponse:"IDOS_PLATFORM_WALLET_OPEN_RESPONSE"},J=core.PLATFORM_PAGE_UNAVAILABLE;async function C(t,e,n){let a=await core.askPlatformPage(t,e,n),{address:o,signature:i}=a.data;return {ok:a.ok,error:a.error,address:typeof o=="string"?o:void 0,signature:typeof i=="string"?i:void 0}}async function j(){return (await C(E.openRequest,E.openResponse,{})).ok}async function X(t){let{client:e,networkID:n}=t;return B(t,async a=>{let o=await e.auth.requestWalletChallenge(a,n);return o.ok?{ok:true,message:o.data.Message}:{ok:false,error:o.error}},(a,o)=>e.auth.loginWithWallet(a,n,o))}async function ee(t){let{client:e,networkID:n}=t;return B(t,async a=>{let o=await e.auth.linkWallet(a,n);return o.ok?o.data.Challenge?{ok:true,message:o.data.Challenge}:{ok:false,error:"No challenge was issued."}:{ok:false,error:o.error}},(a,o)=>e.auth.linkWallet(a,n,o))}async function B(t,e,n){let{client:a,family:o}=t,i=a.titleID,d=await C(E.addressRequest,E.addressResponse,{titleID:i,family:o});if(!d.ok||!d.address)return g("challenge",d.error??"NO_WALLET");let l=d.address,r=await e(l);if(!r.ok)return g("challenge",r.error);let p=await C(E.signRequest,E.signResponse,{titleID:i,family:o,address:l,message:r.message});if(!p.ok||!p.signature)return g("sign",p.error??"SIGN_FAILED");let c=await n(l,p.signature);return c.ok?{ok:true,data:c.data}:g("login",c.error)}var te={id:1,name:"Ethereum",nativeCurrency:{name:"Ether",symbol:"ETH",decimals:18},rpcUrls:{default:{http:["https://eth.llamarpc.com"]}},blockExplorers:{default:{name:"Etherscan",url:"https://etherscan.io"}}},ne={id:56,name:"BNB Smart Chain",nativeCurrency:{name:"BNB",symbol:"BNB",decimals:18},rpcUrls:{default:{http:["https://bsc-dataseed.binance.org"]}},blockExplorers:{default:{name:"BscScan",url:"https://bscscan.com"}}},ae={id:137,name:"Polygon",nativeCurrency:{name:"POL",symbol:"POL",decimals:18},rpcUrls:{default:{http:["https://polygon-rpc.com"]}},blockExplorers:{default:{name:"PolygonScan",url:"https://polygonscan.com"}}},re={id:8453,name:"Base",nativeCurrency:{name:"Ether",symbol:"ETH",decimals:18},rpcUrls:{default:{http:["https://mainnet.base.org"]}},blockExplorers:{default:{name:"BaseScan",url:"https://basescan.org"}}},oe={id:42161,name:"Arbitrum One",nativeCurrency:{name:"Ether",symbol:"ETH",decimals:18},rpcUrls:{default:{http:["https://arb1.arbitrum.io/rpc"]}},blockExplorers:{default:{name:"Arbiscan",url:"https://arbiscan.io"}}},ie={id:10,name:"OP Mainnet",nativeCurrency:{name:"Ether",symbol:"ETH",decimals:18},rpcUrls:{default:{http:["https://mainnet.optimism.io"]}},blockExplorers:{default:{name:"Optimistic Etherscan",url:"https://optimistic.etherscan.io"}}},se={id:11155111,name:"Sepolia",testnet:true,nativeCurrency:{name:"Sepolia Ether",symbol:"ETH",decimals:18},rpcUrls:{default:{http:["https://rpc.sepolia.org"]}},blockExplorers:{default:{name:"Etherscan",url:"https://sepolia.etherscan.io"}}},le={id:80002,name:"Polygon Amoy",testnet:true,nativeCurrency:{name:"POL",symbol:"POL",decimals:18},rpcUrls:{default:{http:["https://rpc-amoy.polygon.technology"]}},blockExplorers:{default:{name:"PolygonScan",url:"https://amoy.polygonscan.com"}}},de={mainnet:te,bsc:ne,polygon:ae,base:re,arbitrum:oe,optimism:ie,sepolia:se,polygonAmoy:le};function Fe(t){return Object.values(de).find(e=>e.id===t)}function Me(t){return {...t,chainNamespace:"eip155",caipNetworkId:`eip155:${t.id}`}}var _e={id:"5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp",name:"Solana",network:"solana-mainnet",nativeCurrency:{name:"Solana",symbol:"SOL",decimals:9},rpcUrls:{default:{http:["https://api.mainnet-beta.solana.com"]}},blockExplorers:{default:{name:"Solscan",url:"https://solscan.io"}},testnet:false,chainNamespace:"solana",caipNetworkId:"solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp"},He={id:"EtWTRABZaYq6iMfeYKouRu166VU2xqa1",name:"Solana Devnet",network:"solana-devnet",nativeCurrency:{name:"Solana",symbol:"SOL",decimals:9},rpcUrls:{default:{http:["https://api.devnet.solana.com"]}},blockExplorers:{default:{name:"Solscan",url:"https://solscan.io"}},testnet:true,chainNamespace:"solana",caipNetworkId:"solana:EtWTRABZaYq6iMfeYKouRu166VU2xqa1"};var b=[{type:"function",name:"depositERC20",stateMutability:"nonpayable",inputs:[{name:"token",type:"address"},{name:"amount",type:"uint256"},{name:"userID",type:"string"},{name:"titleID",type:"string"},{name:"category",type:"string"}],outputs:[{name:"",type:"bool"}]},{type:"function",name:"withdrawERC20",stateMutability:"nonpayable",inputs:[{name:"token",type:"address"},{name:"to",type:"address"},{name:"amount",type:"uint256"},{name:"burnAmount",type:"uint256"},{name:"splits",type:"tuple[]",components:[{name:"to",type:"address"},{name:"amount",type:"uint256"}]},{name:"nonce",type:"uint256"},{name:"signature",type:"bytes"},{name:"userID",type:"string"},{name:"titleID",type:"string"},{name:"category",type:"string"},{name:"deadline",type:"uint256"}],outputs:[]},{type:"function",name:"withdrawERC1155",stateMutability:"nonpayable",inputs:[{name:"token",type:"address"},{name:"to",type:"address"},{name:"id",type:"uint256"},{name:"amount",type:"uint256"},{name:"splits",type:"tuple[]",components:[{name:"to",type:"address"},{name:"amount",type:"uint256"}]},{name:"nonce",type:"uint256"},{name:"signature",type:"bytes"},{name:"userID",type:"string"},{name:"titleID",type:"string"},{name:"category",type:"string"},{name:"deadline",type:"uint256"}],outputs:[]},{type:"function",name:"withdrawERC721",stateMutability:"nonpayable",inputs:[{name:"token",type:"address"},{name:"to",type:"address"},{name:"tokenId",type:"uint256"},{name:"nonce",type:"uint256"},{name:"signature",type:"bytes"},{name:"userID",type:"string"},{name:"titleID",type:"string"},{name:"category",type:"string"},{name:"deadline",type:"uint256"}],outputs:[]}],D=[{type:"function",name:"withdrawERC1155Mint",stateMutability:"nonpayable",inputs:[{name:"collection",type:"address"},{name:"to",type:"address"},{name:"id",type:"uint256"},{name:"amount",type:"uint256"},{name:"splits",type:"tuple[]",components:[{name:"to",type:"address"},{name:"amount",type:"uint256"}]},{name:"nonce",type:"uint256"},{name:"signature",type:"bytes"},{name:"userID",type:"string"},{name:"titleID",type:"string"},{name:"category",type:"string"},{name:"deadline",type:"uint256"}],outputs:[]},{type:"function",name:"withdrawERC721Mint",stateMutability:"nonpayable",inputs:[{name:"collection",type:"address"},{name:"to",type:"address"},{name:"tokenId",type:"uint256"},{name:"nonce",type:"uint256"},{name:"signature",type:"bytes"},{name:"userID",type:"string"},{name:"titleID",type:"string"},{name:"category",type:"string"},{name:"deadline",type:"uint256"}],outputs:[]}],x=[{type:"function",name:"approve",stateMutability:"nonpayable",inputs:[{name:"spender",type:"address"},{name:"amount",type:"uint256"}],outputs:[{name:"",type:"bool"}]},{type:"function",name:"allowance",stateMutability:"view",inputs:[{name:"owner",type:"address"},{name:"spender",type:"address"}],outputs:[{name:"",type:"uint256"}]},{type:"function",name:"decimals",stateMutability:"view",inputs:[],outputs:[{name:"",type:"uint8"}]},{type:"function",name:"balanceOf",stateMutability:"view",inputs:[{name:"account",type:"address"}],outputs:[{name:"",type:"uint256"}]}],P=[{type:"function",name:"safeTransferFrom",stateMutability:"nonpayable",inputs:[{name:"from",type:"address"},{name:"to",type:"address"},{name:"id",type:"uint256"},{name:"amount",type:"uint256"},{name:"data",type:"bytes"}],outputs:[]},{type:"function",name:"isApprovedForAll",stateMutability:"view",inputs:[{name:"account",type:"address"},{name:"operator",type:"address"}],outputs:[{name:"",type:"bool"}]},{type:"function",name:"setApprovalForAll",stateMutability:"nonpayable",inputs:[{name:"operator",type:"address"},{name:"approved",type:"bool"}],outputs:[]},{type:"function",name:"balanceOf",stateMutability:"view",inputs:[{name:"account",type:"address"},{name:"id",type:"uint256"}],outputs:[{name:"",type:"uint256"}]}],v=[{type:"function",name:"safeTransferFrom",stateMutability:"nonpayable",inputs:[{name:"from",type:"address"},{name:"to",type:"address"},{name:"tokenId",type:"uint256"},{name:"data",type:"bytes"}],outputs:[]}];function T(t,e,n){return viem.encodeAbiParameters([{type:"string"},{type:"string"},{type:"string"}],[t,e,core.normalizeBlockchainCategory(n)])}async function k(t,e){let{walletClient:n,publicClient:a,account:o}=t,i=await n.writeContract({address:e.address,abi:e.abi,functionName:e.functionName,args:e.args,account:o,chain:n.chain,value:e.value});if((await a.waitForTransactionReceipt({hash:i})).status==="reverted")throw new Error(`On-chain transaction reverted (${i}).`);return i}function S(t){let e=t.RewardPoolAddress;return e||null}async function R(t,e,n,a){return await t.publicClient.readContract({address:e,abi:x,functionName:"allowance",args:[t.account,n]})>=a?null:k(t,{address:e,abi:x,functionName:"approve",args:[n,a]})}async function L(t){let{client:e,clients:n,network:a,tokenAddress:o,amount:i,titleID:d,category:l}=t;if(y())return w("approve");let r=e.auth.context?.userID;if(!r)return s("approve","Not logged in.");let p=S(a);if(!p)return s("approve","Network has no RewardPoolAddress.");if(i<=0n)return s("approve","Amount must be positive.");try{await R(n,o,p,i);}catch(m){return s("approve",f(m))}let c;try{c=await k(n,{address:p,abi:b,functionName:"depositERC20",args:[o,i,r,d,l??""]});}catch(m){return s("deposit-onchain",f(m))}let u=await e.blockchain.depositToken(a.NetworkID??"",c);return u.ok?{ok:true,onChainTxHash:c,data:u.data}:s("report",u.error,{onChainTxHash:c})}async function ue(t){let{clients:e,poolAddress:n,tokenAddress:a,amount:o,userID:i,titleID:d,category:l}=t;if(y())return w("approve");if(!i)return s("approve","userID is required.");if(o<=0n)return s("approve","Amount must be positive.");try{await R(e,a,n,o);}catch(r){return s("approve",f(r))}try{let r=await k(e,{address:n,abi:b,functionName:"depositERC20",args:[a,o,i,d,l??""]});return {ok:!0,onChainTxHash:r,data:{txHash:r}}}catch(r){return s("deposit-onchain",f(r))}}async function me(t){let{client:e,clients:n,network:a,nftContractAddress:o,tokenId:i,amount:d,titleID:l,category:r}=t;if(y())return w("deposit-onchain");let p=e.auth.context?.userID;if(!p)return s("deposit-onchain","Not logged in.");let c=S(a);if(!c)return s("deposit-onchain","Network has no RewardPoolAddress.");if(d<=0n)return s("deposit-onchain","Amount must be positive.");let u=T(p,l,r),m;try{m=await k(n,{address:o,abi:P,functionName:"safeTransferFrom",args:[n.account,c,i,d,u]});}catch(W){return s("deposit-onchain",f(W))}let h=await e.blockchain.depositNFT(a.NetworkID??"",m);return h.ok?{ok:true,onChainTxHash:m,data:h.data}:s("report",h.error,{onChainTxHash:m})}async function ge(t){let{client:e,clients:n,network:a,nftContractAddress:o,tokenId:i,titleID:d,category:l}=t;if(y())return w("deposit-onchain");let r=e.auth.context?.userID;if(!r)return s("deposit-onchain","Not logged in.");let p=S(a);if(!p)return s("deposit-onchain","Network has no RewardPoolAddress.");let c=T(r,d,l),u;try{u=await k(n,{address:o,abi:v,functionName:"safeTransferFrom",args:[n.account,p,i,c]});}catch(h){return s("deposit-onchain",f(h))}let m=await e.blockchain.depositNFT(a.NetworkID??"",u);return m.ok?{ok:true,onChainTxHash:u,data:m.data}:s("report",m.error,{onChainTxHash:u})}function F(t){return (t.Splits??[]).map(e=>({to:e.To,amount:BigInt(e.Amount??"0")}))}async function M(t,e){return k(t,{address:e.ContractAddress,abi:b,functionName:"withdrawERC20",args:[e.TokenAddress,e.WalletAddress,BigInt(e.Amount??"0"),BigInt(e.BurnAmount??"0"),F(e),BigInt(e.Nonce??"0"),e.Signature??"0x",e.UserID??"",e.TitleID??"",e.Category??"",BigInt(e.Deadline??"0")]})}async function _(t,e){return k(t,{address:e.ContractAddress,abi:D,functionName:"withdrawERC1155Mint",args:[e.TokenAddress,e.WalletAddress,BigInt(e.TokenId??"0"),BigInt(e.Amount??"0"),F(e),BigInt(e.Nonce??"0"),e.Signature??"0x",e.UserID??"",e.TitleID??"",e.Category??"",BigInt(e.Deadline??"0")]})}async function fe(t,e){return k(t,{address:e.ContractAddress,abi:D,functionName:"withdrawERC721Mint",args:[e.TokenAddress,e.WalletAddress,BigInt(e.TokenId??"0"),BigInt(e.Nonce??"0"),e.Signature??"0x",e.UserID??"",e.TitleID??"",e.Category??"",BigInt(e.Deadline??"0")]})}async function ye(t){let{client:e,clients:n,currencyID:a,networkID:o,walletAddress:i,amount:d,category:l}=t;if(y())return w("request");let r=await e.blockchain.requestTokenWithdrawal(a,o,i,d,l);if(!r.ok)return s("request",r.error);let p=r.data.EvmSignature,c=r.data.TitleTransactionID??void 0;if(!p)return s("request","Withdrawal response carried no EVM signature.",{titleTransactionID:c});let u;try{u=await M(n,p);}catch(h){return s("withdraw-onchain",f(h),{titleTransactionID:c})}let m=await H(e,c,u);return m.ok?{ok:true,onChainTxHash:u,data:r.data}:m}async function he(t){let{client:e,clients:n,itemID:a,networkID:o,walletAddress:i,amount:d,category:l}=t;if(y())return w("request");let r=await e.blockchain.requestNFTWithdrawal(a,o,i,d,l);if(!r.ok)return s("request",r.error);let p=r.data.EvmSignature,c=r.data.TitleTransactionID??void 0;if(!p)return s("request","Withdrawal response carried no EVM signature.",{titleTransactionID:c});let u;try{u=await _(n,p);}catch(h){return s("withdraw-onchain",f(h),{titleTransactionID:c})}let m=await H(e,c,u);return m.ok?{ok:true,onChainTxHash:u,data:r.data}:m}async function H(t,e,n){if(!e)return s("confirm","Missing TitleTransactionID.",{onChainTxHash:n});let a=await t.blockchain.confirmWithdrawal(e,n);return a.ok?{ok:true,onChainTxHash:n,data:a.data}:s("confirm",a.error,{onChainTxHash:n,titleTransactionID:e})}async function we(t){let{client:e,clients:n,networkID:a}=t;if(y())return A("challenge");let o=t.walletAddress??n.account,i=await e.auth.requestWalletChallenge(o,a);if(!i.ok)return g("challenge",i.error);let d;try{d=await n.walletClient.signMessage({account:n.account,message:i.data.Message});}catch(r){return g("sign",f(r))}let l=await e.auth.loginWithWallet(o,a,d);return l.ok?{ok:true,data:l.data}:g("login",l.error)}async function ke(t){let{client:e,clients:n,networkID:a}=t;if(y())return A("challenge");let o=t.walletAddress??n.account,i=await e.auth.linkWallet(o,a);if(!i.ok)return g("challenge",i.error);if(!i.data.Challenge)return g("challenge","No challenge was issued.");let d;try{d=await n.walletClient.signMessage({account:n.account,message:i.data.Challenge});}catch(r){return g("sign",f(r))}let l=await e.auth.linkWallet(o,a,d);return l.ok?{ok:true,data:l.data}:g("login",l.error)}async function Ae(t){let{client:e,clients:n,network:a,tokenAddress:o,decimals:i,titleID:d,shortfall:l,completePurchase:r,bufferRatio:p=0,category:c}=t;if(y())return w("approve");if(l.missing<=0)return s("approve","Nothing to deposit.");let u=l.missing*(1+Math.max(0,p)),m;try{m=viem.parseUnits(be(u,i),i);}catch(G){return s("approve",f(G))}let h=await L({client:e,clients:n,network:a,tokenAddress:o,amount:m,titleID:d,category:c});if(!h.ok)return h;let W=await r();return W.ok?{ok:true,onChainTxHash:h.onChainTxHash,data:W.data}:s("report",W.error,{onChainTxHash:h.onChainTxHash})}function be(t,e){let n=t.toFixed(Math.min(e,18));return n.includes(".")?n.replace(/0+$/,"").replace(/\.$/,"")||"0":n}async function xe(t){let{client:e,adapter:n,network:a,mint:o,amountRaw:i,titleID:d,category:l}=t;if(y())return w("deposit-onchain");let r=e.auth.context?.userID;if(!r)return s("deposit-onchain","Not logged in.");if(i<=0n)return s("deposit-onchain","Amount must be positive.");let p;try{p=await n.depositSpl({mint:o,amountRaw:i,userID:r,titleID:d,category:core.normalizeBlockchainCategory(l)});}catch(u){return s("deposit-onchain",f(u))}let c=await e.blockchain.depositToken(a.NetworkID??"",p);return c.ok?{ok:true,onChainTxHash:p,data:c.data}:s("report",c.error,{onChainTxHash:p})}async function Te(t){let{client:e,adapter:n,currencyID:a,networkID:o,walletAddress:i,amount:d,category:l}=t;if(y())return w("request");let r=await e.blockchain.requestTokenWithdrawal(a,o,i,d,l);if(!r.ok)return s("request",r.error);let p=r.data.SolanaSignature,c=r.data.TitleTransactionID??void 0;if(!p)return s("request","Withdrawal response carried no Solana signature.",{titleTransactionID:c});let u;try{u=await n.submitWithdrawal(p);}catch(h){return s("withdraw-onchain",f(h),{titleTransactionID:c})}if(!c)return s("confirm","Missing TitleTransactionID.",{onChainTxHash:u});let m=await e.blockchain.confirmWithdrawal(c,u);return m.ok?{ok:true,onChainTxHash:u,data:r.data}:s("confirm",m.error,{onChainTxHash:u,titleTransactionID:c})}async function Ie(t){let{client:e,networkID:n,walletAddress:a,signMessage:o}=t;if(y())return A("challenge");let i=await e.auth.requestWalletChallenge(a,n);if(!i.ok)return g("challenge",i.error);let d;try{let r=await o(new TextEncoder().encode(i.data.Message));d=O(r);}catch(r){return g("sign",f(r))}let l=await e.auth.loginWithWallet(a,n,d);return l.ok?{ok:true,data:l.data}:g("login",l.error)}async function Ce(t){let{client:e,networkID:n,walletAddress:a,signMessage:o}=t;if(y())return A("challenge");let i=await e.auth.linkWallet(a,n);if(!i.ok)return g("challenge",i.error);if(!i.data.Challenge)return g("challenge","No challenge was issued.");let d;try{let r=await o(new TextEncoder().encode(i.data.Challenge));d=O(r);}catch(r){return g("sign",f(r))}let l=await e.auth.linkWallet(a,n,d);return l.ok?{ok:true,data:l.data}:g("login",l.error)}function O(t){let e="0x";for(let n of t)e+=n.toString(16).padStart(2,"0");return e}
2
2
  exports.PLATFORM_WALLET_MESSAGES=E;exports.PLATFORM_WALLET_UNAVAILABLE=J;exports.WALLET_USE_SITE_PANEL=I;exports.arbitrum=oe;exports.base=re;exports.bridgeFail=s;exports.bsc=ne;exports.chainById=Fe;exports.depositNftEvm=me;exports.depositNftEvm721=ge;exports.depositTokenEvm=L;exports.depositTokenOnChainEvm=ue;exports.depositTokenSolana=xe;exports.encodeNftDepositData=T;exports.ensureErc20Allowance=R;exports.erc1155Abi=P;exports.erc20Abi=x;exports.erc721Abi=v;exports.idosChains=de;exports.isAiCoderPreview=N;exports.isEmbeddedInPlatform=y;exports.isEmbeddedOnForeignSite=K;exports.linkWalletEvm=ke;exports.linkWalletSolana=Ce;exports.linkWalletViaPlatform=ee;exports.loginWithWalletEvm=we;exports.loginWithWalletSolana=Ie;exports.loginWithWalletViaPlatform=X;exports.mainnet=te;exports.onWalletBalanceChanged=Y;exports.openPlatformWalletPanel=j;exports.optimism=ie;exports.payWithWalletEvm=Ae;exports.polygon=ae;exports.polygonAmoy=le;exports.rewardPoolAbi=b;exports.sepolia=se;exports.solanaDevnet=He;exports.solanaMainnet=_e;exports.submitEvmNftWithdrawal=_;exports.submitEvmNftWithdrawal721=fe;exports.submitEvmTokenWithdrawal=M;exports.toAppKitNetwork=Me;exports.toErrorMessage=f;exports.walletLoginFail=g;exports.withdrawNftEvm=he;exports.withdrawTokenEvm=ye;exports.withdrawTokenSolana=Te;exports.writeAndWait=k;
package/dist/index.js CHANGED
@@ -1 +1 @@
1
- export{j as depositNftEvm,k as depositNftEvm721,h as depositTokenEvm,i as depositTokenOnChainEvm,e as encodeNftDepositData,g as ensureErc20Allowance,c as erc1155Abi,b as erc20Abi,d as erc721Abi,r as linkWalletEvm,q as loginWithWalletEvm,s as payWithWalletEvm,a as rewardPoolAbi,m as submitEvmNftWithdrawal,n as submitEvmNftWithdrawal721,l as submitEvmTokenWithdrawal,p as withdrawNftEvm,o as withdrawTokenEvm,f as writeAndWait}from'./chunk-YTTVLBAW.js';export{a as PLATFORM_WALLET_MESSAGES,b as PLATFORM_WALLET_UNAVAILABLE,e as linkWalletViaPlatform,d as loginWithWalletViaPlatform,c as openPlatformWalletPanel}from'./chunk-B4KT5CVC.js';export{a as depositTokenSolana,d as linkWalletSolana,c as loginWithWalletSolana,b as withdrawTokenSolana}from'./chunk-MLIXKTS6.js';export{d as WALLET_USE_SITE_PANEL,o as arbitrum,n as base,b as bridgeFail,l as bsc,t as chainById,s as idosChains,e as isAiCoderPreview,f as isEmbeddedInPlatform,g as isEmbeddedOnForeignSite,k as mainnet,j as onWalletBalanceChanged,p as optimism,m as polygon,r as polygonAmoy,q as sepolia,w as solanaDevnet,v as solanaMainnet,u as toAppKitNetwork,a as toErrorMessage,c as walletLoginFail}from'./chunk-K3THMWU2.js';
1
+ export{j as depositNftEvm,k as depositNftEvm721,h as depositTokenEvm,i as depositTokenOnChainEvm,e as encodeNftDepositData,g as ensureErc20Allowance,c as erc1155Abi,b as erc20Abi,d as erc721Abi,r as linkWalletEvm,q as loginWithWalletEvm,s as payWithWalletEvm,a as rewardPoolAbi,m as submitEvmNftWithdrawal,n as submitEvmNftWithdrawal721,l as submitEvmTokenWithdrawal,p as withdrawNftEvm,o as withdrawTokenEvm,f as writeAndWait}from'./chunk-IUJSUGBX.js';export{a as PLATFORM_WALLET_MESSAGES,b as PLATFORM_WALLET_UNAVAILABLE,e as linkWalletViaPlatform,d as loginWithWalletViaPlatform,c as openPlatformWalletPanel}from'./chunk-B4KT5CVC.js';export{a as depositTokenSolana,d as linkWalletSolana,c as loginWithWalletSolana,b as withdrawTokenSolana}from'./chunk-MLIXKTS6.js';export{d as WALLET_USE_SITE_PANEL,o as arbitrum,n as base,b as bridgeFail,l as bsc,t as chainById,s as idosChains,e as isAiCoderPreview,f as isEmbeddedInPlatform,g as isEmbeddedOnForeignSite,k as mainnet,j as onWalletBalanceChanged,p as optimism,m as polygon,r as polygonAmoy,q as sepolia,w as solanaDevnet,v as solanaMainnet,u as toAppKitNetwork,a as toErrorMessage,c as walletLoginFail}from'./chunk-K3THMWU2.js';
@@ -1 +1 @@
1
- import {p as p$1,o as o$1,j,h,q as q$2,r as r$1,b as b$3}from'../chunk-YTTVLBAW.js';export{a as useWalletTopUp}from'../chunk-DOWG5IDM.js';import {a,c as c$1,b as b$2}from'../chunk-NU3WMVH2.js';import'../chunk-ZOWZE7MU.js';import {k as k$1,l,m,n,o,p,q as q$1,r,u,b as b$1,c}from'../chunk-K3THMWU2.js';export{o as arbitrum,n as base,l as bsc,t as chainById,s as idosChains,k as mainnet,p as optimism,m as polygon,r as polygonAmoy,q as sepolia}from'../chunk-K3THMWU2.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}from'react';import {jsx,jsxs,Fragment}from'react/jsx-runtime';import {getAccount,getPublicClient,watchAccount,getWalletClient}from'wagmi/actions';import {authErrorText}from'@idosgames/core';import {parseUnits}from'viem';var se=[k$1,l,m,n,o,p,q$1,r],q=new Map;function O(e){let{chains:n=se,walletConnectProjectId:t,appName:o,appUrl:r,appIcon:i,transports:m,connectors:s}=e,c=t??"__extension_only__";if(!s){let p=q.get(c);if(p)return p}let f={};for(let p of n)f[p.id]=m?.[p.id]??http();let l=r??(typeof window<"u"?window.location.origin:""),w={name:o??"iDosGames",description:o??"iDosGames game",url:l,icons:i?[i]:[]};if(t&&!s){let p=n.map(u),a$1=new WagmiAdapter({networks:p,projectId:t,transports:f});return a(createAppKit({adapters:[a$1],networks:p,projectId:t,metadata:w,features:{analytics:false,email:false,socials:false}})),q.set(c,a$1.wagmiConfig),a$1.wagmiConfig}let C=s??[injected(),coinbaseWallet({appName:o??"iDosGames"})],v=createConfig({chains:n,connectors:C,transports:f});return s||q.set(c,v),v}function b(e){let{wagmiConfig:n,queryClient:t,children:o}=e,[r]=useState(()=>t??new QueryClient);return jsx(WagmiProvider,{config:n,children:jsx(QueryClientProvider,{client:r,children:o})})}function N(){let{address:e}=useAccount(),n=usePublicClient(),{data:t}=useWalletClient();return !e||!n||!t?null:{account:e,publicClient:n,walletClient:t}}var k="Wallet not connected.";function K(e,n){let t=N();return {connected:!!t,account:t?.account??null,loginWithWallet:(o,r)=>t?q$2({client:e,clients:t,networkID:o,walletAddress:r}):Promise.resolve(c("challenge",k)),depositToken:o=>t?h({client:e,clients:t,titleID:n,...o}):Promise.resolve(b$1("approve",k)),depositNft:o=>t?j({client:e,clients:t,titleID:n,...o}):Promise.resolve(b$1("deposit-onchain",k)),withdrawToken:o=>t?o$1({client:e,clients:t,...o}):Promise.resolve(b$1("withdraw-onchain",k)),withdrawNft:o=>t?p$1({client:e,clients:t,...o}):Promise.resolve(b$1("withdraw-onchain",k))}}function je(e){let{wagmiConfig:n,...t}=e;return jsx(b,{wagmiConfig:n,children:jsx(ge,{...t})})}function qe(e){return e instanceof Error&&(e.name==="ConnectorAlreadyConnectedError"||e.message.includes("already connected"))}function Oe(e){let n="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.":n:n}async function de(e){let n=await getWalletClient(e).catch(()=>null);if(!n)return null;let t=getPublicClient(e);return t?{account:n.account.address,publicClient:t,walletClient:n}:null}function Ke(e,n=18e4){return getAccount(e).isConnected?Promise.resolve(true):new Promise(t=>{let o=false,r=s=>{o||(o=true,i(),clearTimeout(m),t(s));},i=watchAccount(e,{onChange:s=>{s.isConnected&&r(true);}}),m=setTimeout(()=>r(false),n);})}function Me(e,n=8e3){let t=o=>o==="reconnecting"||o==="connecting";return t(getAccount(e).status)?new Promise(o=>{let r=false,i=()=>{r||(r=true,m(),clearTimeout(s),o());},m=watchAccount(e,{onChange:c=>{t(c.status)||i();}}),s=setTimeout(i,n);}):Promise.resolve()}function Qe(e){let n=r=>e.find(i=>i.id===r||i.type===r),t=n("injected"),o=typeof window<"u"&&window.ethereum!=null;return t&&o?t:n("walletConnect")??t??e[0]}var ue=9e4;async function Ve(e){try{let o=(await getAccount(e).connector?.getProvider?.())?.session?.peer?.metadata?.redirect,r=o?.native||o?.universal;return !r||typeof window>"u"?!1:(window.location.href=r,!0)}catch{return false}}function me(e,n){return new Promise((t,o)=>{let r=setTimeout(()=>o(new Error("The wallet request timed out.")),n);e.then(i=>{clearTimeout(r),t(i);},i=>{clearTimeout(r),o(i instanceof Error?i:new Error(String(i)));});})}function ge(e){let{client:n,networkID:t,onAuthenticated:o,disabled:r,label:i,style:m,autoStart:s,mode:c="login",onLinked:f}=e,l=useConfig(),{isConnected:w}=useAccount(),{connectAsync:C,connectors:v}=useConnect(),p=N(),[a,y]=useState(false),[P,d]=useState(null),[E,T]=useState(false),V=useRef(0),$=useRef(false),z=async()=>{let Ce=++V.current,W=()=>V.current===Ce;y(true),d(null);try{if(await Me(l),!W())return;if(!getAccount(l).isConnected){let g=b$2();if(g){if(await g.open(),!await Ke(l)){d("No wallet was connected.");return}}else {let H=Qe(v);if(!H){d("No wallet connector is configured.");return}try{await C({connector:H});}catch(J){if(!qe(J))throw J}}}let h=p??await de(l);if(!h&&getAccount(l).isConnected&&(await new Promise(g=>setTimeout(g,300)),h=await de(l),!W()))return;if(!h){d("Wallet client is not available.");return}if(T(!0),c==="link"){let g=await me(r$1({client:n,clients:h,networkID:t}),ue);if(!W())return;if(g.ok){f?.(g.data.PlayAccess??null);return}d(g.stage==="sign"?"Signature declined.":authErrorText(g.error,"Could not link the wallet."));return}let S=await me(q$2({client:n,clients:h,networkID:t}),ue);if(!W())return;if(S.ok){o();return}d(S.stage==="sign"?"Signature declined.":authErrorText(S.error,"Wallet sign-in failed."));}catch(h){if(!W())return;console.error("[idosgames/wallet] wallet sign-in failed:",h),d(Oe(h));}finally{W()&&(y(false),T(false));}};useEffect(()=>{!s||$.current||($.current=true,z());},[s]);let we=async()=>{await Ve(l)||await b$2()?.open();};return jsxs(Fragment,{children:[jsx("button",{type:"button",onClick:()=>{E?we():z();},disabled:r,style:{...$e,...r?{opacity:.6,cursor:"default"}:null,...m},children:E?"Waiting for signature \u2014 tap to open wallet":a?"Check your wallet\u2026":w?i??(c==="link"?"Link wallet":"Sign in with wallet"):"Connect wallet"}),P&&jsx("span",{role:"alert",style:ze,children:P})]})}var $e={padding:"11px 16px",borderRadius:"8px",border:"none",background:"#4c3fa8",color:"#fff",font:"inherit",fontWeight:600,cursor:"pointer"},ze={display:"block",marginTop:"6px",color:"#ff9b9b",fontSize:"13px",textAlign:"center"};function st(e){let{client:n,walletConnectProjectId:t,appName:o,onClose:r,style:i,topUp:m}=e,[s,c]=useState(t??"");useEffect(()=>{if(t)return;let l=true;return (async()=>{let w=await n.blockchain.getDefinitions();if(!l||!w.ok)return;let C=w.data.Blockchain?.WalletLogin?.WalletConnectProjectId;C&&c(C);})(),()=>{l=false;}},[n,t]);let f=useMemo(()=>O({walletConnectProjectId:s||void 0,appName:o}),[s,o]);return jsx(b,{wagmiConfig:f,children:jsx(lt,{client:n,onClose:r,style:i,topUp:m})})}function lt({client:e,onClose:n,style:t,topUp:o}){let r=K(e,e.titleID),{address:i,isConnected:m,chainId:s}=useAccount(),{connect:c,connectors:f}=useConnect(),{disconnect:l}=useDisconnect(),{switchChainAsync:w}=useSwitchChain(),C=useConfig();async function v(a){if(!a||s===a)return true;try{return await w({chainId:a}),!0}catch{return false}}let p={networkType:"EVM",address:m&&i?i:null,connectChoices:f.map(a=>({key:a.uid,label:a.name,connect:()=>c({connector:a})})),disconnect:()=>l(),deposit:async({network:a,binding:y,amount:P})=>{if(!y.ContractAddress)return b$1("approve","This token cannot be deposited.");if(!await v(a.ChainID))return b$1("approve",`Switch your wallet to chain ${a.ChainID} to continue.`);let d;try{let T=getPublicClient(C,{chainId:a.ChainID??void 0});if(!T)throw new Error("no client");d=Number(await T.readContract({address:y.ContractAddress,abi:b$3,functionName:"decimals"}));}catch{return b$1("approve","Could not read the token from the network. Try again.")}let E;try{E=parseUnits(P,d);}catch{return b$1("approve","Invalid amount.")}return r.depositToken({network:a,tokenAddress:y.ContractAddress,amount:E})},withdraw:async({network:a,networkID:y,currencyID:P,amount:d})=>r.account?await v(a.ChainID)?r.withdrawToken({currencyID:P,networkID:y,walletAddress:r.account,amount:d}):b$1("request",`Switch your wallet to chain ${a.ChainID} to continue.`):b$1("request","Wallet not connected.")};return jsx(c$1,{client:e,engine:p,onClose:n,style:t,topUp:o})}export{se as DEFAULT_EVM_CHAINS,b as IDosGamesWalletProvider,je as WalletLogin,ge as WalletLoginButton,st as WalletPanel,O as createEvmWalletConfig,K as useEvmBridge,N as useEvmBridgeClients};
1
+ import {p as p$1,o as o$1,j,h,q as q$2,r as r$1,b as b$3}from'../chunk-IUJSUGBX.js';export{a as useWalletTopUp}from'../chunk-DOWG5IDM.js';import {a,c as c$1,b as b$2}from'../chunk-NU3WMVH2.js';import'../chunk-ZOWZE7MU.js';import {k as k$1,l,m,n,o,p,q as q$1,r,u,b as b$1,c}from'../chunk-K3THMWU2.js';export{o as arbitrum,n as base,l as bsc,t as chainById,s as idosChains,k as mainnet,p as optimism,m as polygon,r as polygonAmoy,q as sepolia}from'../chunk-K3THMWU2.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}from'react';import {jsx,jsxs,Fragment}from'react/jsx-runtime';import {getAccount,getPublicClient,watchAccount,getWalletClient}from'wagmi/actions';import {authErrorText}from'@idosgames/core';import {parseUnits}from'viem';var se=[k$1,l,m,n,o,p,q$1,r],q=new Map;function O(e){let{chains:n=se,walletConnectProjectId:t,appName:o,appUrl:r,appIcon:i,transports:m,connectors:s}=e,c=t??"__extension_only__";if(!s){let p=q.get(c);if(p)return p}let f={};for(let p of n)f[p.id]=m?.[p.id]??http();let l=r??(typeof window<"u"?window.location.origin:""),w={name:o??"iDosGames",description:o??"iDosGames game",url:l,icons:i?[i]:[]};if(t&&!s){let p=n.map(u),a$1=new WagmiAdapter({networks:p,projectId:t,transports:f});return a(createAppKit({adapters:[a$1],networks:p,projectId:t,metadata:w,features:{analytics:false,email:false,socials:false}})),q.set(c,a$1.wagmiConfig),a$1.wagmiConfig}let C=s??[injected(),coinbaseWallet({appName:o??"iDosGames"})],v=createConfig({chains:n,connectors:C,transports:f});return s||q.set(c,v),v}function b(e){let{wagmiConfig:n,queryClient:t,children:o}=e,[r]=useState(()=>t??new QueryClient);return jsx(WagmiProvider,{config:n,children:jsx(QueryClientProvider,{client:r,children:o})})}function N(){let{address:e}=useAccount(),n=usePublicClient(),{data:t}=useWalletClient();return !e||!n||!t?null:{account:e,publicClient:n,walletClient:t}}var k="Wallet not connected.";function K(e,n){let t=N();return {connected:!!t,account:t?.account??null,loginWithWallet:(o,r)=>t?q$2({client:e,clients:t,networkID:o,walletAddress:r}):Promise.resolve(c("challenge",k)),depositToken:o=>t?h({client:e,clients:t,titleID:n,...o}):Promise.resolve(b$1("approve",k)),depositNft:o=>t?j({client:e,clients:t,titleID:n,...o}):Promise.resolve(b$1("deposit-onchain",k)),withdrawToken:o=>t?o$1({client:e,clients:t,...o}):Promise.resolve(b$1("withdraw-onchain",k)),withdrawNft:o=>t?p$1({client:e,clients:t,...o}):Promise.resolve(b$1("withdraw-onchain",k))}}function je(e){let{wagmiConfig:n,...t}=e;return jsx(b,{wagmiConfig:n,children:jsx(ge,{...t})})}function qe(e){return e instanceof Error&&(e.name==="ConnectorAlreadyConnectedError"||e.message.includes("already connected"))}function Oe(e){let n="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.":n:n}async function de(e){let n=await getWalletClient(e).catch(()=>null);if(!n)return null;let t=getPublicClient(e);return t?{account:n.account.address,publicClient:t,walletClient:n}:null}function Ke(e,n=18e4){return getAccount(e).isConnected?Promise.resolve(true):new Promise(t=>{let o=false,r=s=>{o||(o=true,i(),clearTimeout(m),t(s));},i=watchAccount(e,{onChange:s=>{s.isConnected&&r(true);}}),m=setTimeout(()=>r(false),n);})}function Me(e,n=8e3){let t=o=>o==="reconnecting"||o==="connecting";return t(getAccount(e).status)?new Promise(o=>{let r=false,i=()=>{r||(r=true,m(),clearTimeout(s),o());},m=watchAccount(e,{onChange:c=>{t(c.status)||i();}}),s=setTimeout(i,n);}):Promise.resolve()}function Qe(e){let n=r=>e.find(i=>i.id===r||i.type===r),t=n("injected"),o=typeof window<"u"&&window.ethereum!=null;return t&&o?t:n("walletConnect")??t??e[0]}var ue=9e4;async function Ve(e){try{let o=(await getAccount(e).connector?.getProvider?.())?.session?.peer?.metadata?.redirect,r=o?.native||o?.universal;return !r||typeof window>"u"?!1:(window.location.href=r,!0)}catch{return false}}function me(e,n){return new Promise((t,o)=>{let r=setTimeout(()=>o(new Error("The wallet request timed out.")),n);e.then(i=>{clearTimeout(r),t(i);},i=>{clearTimeout(r),o(i instanceof Error?i:new Error(String(i)));});})}function ge(e){let{client:n,networkID:t,onAuthenticated:o,disabled:r,label:i,style:m,autoStart:s,mode:c="login",onLinked:f}=e,l=useConfig(),{isConnected:w}=useAccount(),{connectAsync:C,connectors:v}=useConnect(),p=N(),[a,y]=useState(false),[P,d]=useState(null),[E,T]=useState(false),V=useRef(0),$=useRef(false),z=async()=>{let Ce=++V.current,W=()=>V.current===Ce;y(true),d(null);try{if(await Me(l),!W())return;if(!getAccount(l).isConnected){let g=b$2();if(g){if(await g.open(),!await Ke(l)){d("No wallet was connected.");return}}else {let H=Qe(v);if(!H){d("No wallet connector is configured.");return}try{await C({connector:H});}catch(J){if(!qe(J))throw J}}}let h=p??await de(l);if(!h&&getAccount(l).isConnected&&(await new Promise(g=>setTimeout(g,300)),h=await de(l),!W()))return;if(!h){d("Wallet client is not available.");return}if(T(!0),c==="link"){let g=await me(r$1({client:n,clients:h,networkID:t}),ue);if(!W())return;if(g.ok){f?.(g.data.PlayAccess??null);return}d(g.stage==="sign"?"Signature declined.":authErrorText(g.error,"Could not link the wallet."));return}let S=await me(q$2({client:n,clients:h,networkID:t}),ue);if(!W())return;if(S.ok){o();return}d(S.stage==="sign"?"Signature declined.":authErrorText(S.error,"Wallet sign-in failed."));}catch(h){if(!W())return;console.error("[idosgames/wallet] wallet sign-in failed:",h),d(Oe(h));}finally{W()&&(y(false),T(false));}};useEffect(()=>{!s||$.current||($.current=true,z());},[s]);let we=async()=>{await Ve(l)||await b$2()?.open();};return jsxs(Fragment,{children:[jsx("button",{type:"button",onClick:()=>{E?we():z();},disabled:r,style:{...$e,...r?{opacity:.6,cursor:"default"}:null,...m},children:E?"Waiting for signature \u2014 tap to open wallet":a?"Check your wallet\u2026":w?i??(c==="link"?"Link wallet":"Sign in with wallet"):"Connect wallet"}),P&&jsx("span",{role:"alert",style:ze,children:P})]})}var $e={padding:"11px 16px",borderRadius:"8px",border:"none",background:"#4c3fa8",color:"#fff",font:"inherit",fontWeight:600,cursor:"pointer"},ze={display:"block",marginTop:"6px",color:"#ff9b9b",fontSize:"13px",textAlign:"center"};function st(e){let{client:n,walletConnectProjectId:t,appName:o,onClose:r,style:i,topUp:m}=e,[s,c]=useState(t??"");useEffect(()=>{if(t)return;let l=true;return (async()=>{let w=await n.blockchain.getDefinitions();if(!l||!w.ok)return;let C=w.data.Blockchain?.WalletLogin?.WalletConnectProjectId;C&&c(C);})(),()=>{l=false;}},[n,t]);let f=useMemo(()=>O({walletConnectProjectId:s||void 0,appName:o}),[s,o]);return jsx(b,{wagmiConfig:f,children:jsx(lt,{client:n,onClose:r,style:i,topUp:m})})}function lt({client:e,onClose:n,style:t,topUp:o}){let r=K(e,e.titleID),{address:i,isConnected:m,chainId:s}=useAccount(),{connect:c,connectors:f}=useConnect(),{disconnect:l}=useDisconnect(),{switchChainAsync:w}=useSwitchChain(),C=useConfig();async function v(a){if(!a||s===a)return true;try{return await w({chainId:a}),!0}catch{return false}}let p={networkType:"EVM",address:m&&i?i:null,connectChoices:f.map(a=>({key:a.uid,label:a.name,connect:()=>c({connector:a})})),disconnect:()=>l(),deposit:async({network:a,binding:y,amount:P})=>{if(!y.ContractAddress)return b$1("approve","This token cannot be deposited.");if(!await v(a.ChainID))return b$1("approve",`Switch your wallet to chain ${a.ChainID} to continue.`);let d;try{let T=getPublicClient(C,{chainId:a.ChainID??void 0});if(!T)throw new Error("no client");d=Number(await T.readContract({address:y.ContractAddress,abi:b$3,functionName:"decimals"}));}catch{return b$1("approve","Could not read the token from the network. Try again.")}let E;try{E=parseUnits(P,d);}catch{return b$1("approve","Invalid amount.")}return r.depositToken({network:a,tokenAddress:y.ContractAddress,amount:E})},withdraw:async({network:a,networkID:y,currencyID:P,amount:d})=>r.account?await v(a.ChainID)?r.withdrawToken({currencyID:P,networkID:y,walletAddress:r.account,amount:d}):b$1("request",`Switch your wallet to chain ${a.ChainID} to continue.`):b$1("request","Wallet not connected.")};return jsx(c$1,{client:e,engine:p,onClose:n,style:t,topUp:o})}export{se as DEFAULT_EVM_CHAINS,b as IDosGamesWalletProvider,je as WalletLogin,ge as WalletLoginButton,st as WalletPanel,O as createEvmWalletConfig,K as useEvmBridge,N as useEvmBridgeClients};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@idosgames/wallet",
3
- "version": "0.6.4",
3
+ "version": "0.6.5",
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.21.3",
73
+ "@idosgames/core": "^0.22.0",
74
74
  "viem": "^2.55.2"
75
75
  },
76
76
  "peerDependencies": {