@idosgames/wallet 0.1.0 → 0.1.2
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-YV6AQWSH.js +1 -0
- package/dist/index.cjs +1 -1
- package/dist/index.js +1 -1
- package/dist/react/index.cjs +1 -1
- package/dist/react/index.d.cts +31 -2
- package/dist/react/index.d.ts +31 -2
- package/dist/react/index.js +1 -1
- package/package.json +94 -94
- package/dist/chunk-Q6C5EFPV.js +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import {BaseError,encodeAbiParameters}from'viem';import {normalizeBlockchainCategory}from'@idosgames/core';function g(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 w(e,t){return {ok:false,stage:e,error:t}}var h=[{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:"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:"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:"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:[]}],k=[{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"}]}],A=[{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 b(e,t,n){return encodeAbiParameters([{type:"string"},{type:"string"},{type:"string"}],[e,t,normalizeBlockchainCategory(n)])}async function f(e,t){let{walletClient:n,publicClient:i,account:c}=e,o=await n.writeContract({address:t.address,abi:t.abi,functionName:t.functionName,args:t.args,account:c,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 I(e){let t=e.RewardPoolAddress;return t||null}async function T(e,t,n,i){return await e.publicClient.readContract({address:t,abi:k,functionName:"allowance",args:[e.account,n]})>=i?null:f(e,{address:t,abi:k,functionName:"approve",args:[n,i]})}async function S(e){let{client:t,clients:n,network:i,tokenAddress:c,amount:o,titleID:p,category:u}=e,r=t.auth.context?.userID;if(!r)return a("approve","Not logged in.");let d=I(i);if(!d)return a("approve","Network has no RewardPoolAddress.");if(o<=0n)return a("approve","Amount must be positive.");try{await T(n,c,d,o);}catch(m){return a("approve",g(m))}let s;try{s=await f(n,{address:d,abi:h,functionName:"depositERC20",args:[c,o,r,p,u??""]});}catch(m){return a("deposit-onchain",g(m))}let l=await t.blockchain.depositToken(i.NetworkID??"",s);return l.ok?{ok:true,onChainTxHash:s,data:l.data}:a("report",l.error,{onChainTxHash:s})}async function R(e){let{client:t,clients:n,network:i,nftContractAddress:c,tokenId:o,amount:p,titleID:u,category:r}=e,d=t.auth.context?.userID;if(!d)return a("deposit-onchain","Not logged in.");let s=I(i);if(!s)return a("deposit-onchain","Network has no RewardPoolAddress.");if(p<=0n)return a("deposit-onchain","Amount must be positive.");let l=b(d,u,r),m;try{m=await f(n,{address:c,abi:A,functionName:"safeTransferFrom",args:[n.account,s,o,p,l]});}catch(E){return a("deposit-onchain",g(E))}let y=await t.blockchain.depositNFT(i.NetworkID??"",m);return y.ok?{ok:true,onChainTxHash:m,data:y.data}:a("report",y.error,{onChainTxHash:m})}async function H(e){let{client:t,clients:n,network:i,nftContractAddress:c,tokenId:o,titleID:p,category:u}=e,r=t.auth.context?.userID;if(!r)return a("deposit-onchain","Not logged in.");let d=I(i);if(!d)return a("deposit-onchain","Network has no RewardPoolAddress.");let s=b(r,p,u),l;try{l=await f(n,{address:c,abi:x,functionName:"safeTransferFrom",args:[n.account,d,o,s]});}catch(y){return a("deposit-onchain",g(y))}let m=await t.blockchain.depositNFT(i.NetworkID??"",l);return m.ok?{ok:true,onChainTxHash:l,data:m.data}:a("report",m.error,{onChainTxHash:l})}async function C(e,t){return f(e,{address:t.ContractAddress,abi:h,functionName:"withdrawERC20",args:[t.TokenAddress,t.WalletAddress,BigInt(t.Amount??"0"),BigInt(t.BurnAmount??"0"),BigInt(t.Nonce??"0"),t.Signature??"0x",t.UserID??"",t.TitleID??"",t.Category??"",BigInt(t.Deadline??"0")]})}async function W(e,t){return f(e,{address:t.ContractAddress,abi:D,functionName:"withdrawERC1155Mint",args:[t.TokenAddress,t.WalletAddress,BigInt(t.TokenId??"0"),BigInt(t.Amount??"0"),BigInt(t.Nonce??"0"),t.Signature??"0x",t.UserID??"",t.TitleID??"",t.Category??"",BigInt(t.Deadline??"0")]})}async function M(e,t){return f(e,{address:t.ContractAddress,abi:D,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 F(e){let{client:t,clients:n,currencyID:i,networkID:c,walletAddress:o,amount:p,category:u}=e,r=await t.blockchain.requestTokenWithdrawal(i,c,o,p,u);if(!r.ok)return a("request",r.error);let d=r.data.EvmSignature,s=r.data.TitleTransactionID??void 0;if(!d)return a("request","Withdrawal response carried no EVM signature.",{titleTransactionID:s});let l;try{l=await C(n,d);}catch(y){return a("withdraw-onchain",g(y),{titleTransactionID:s})}let m=await v(t,s,l);return m.ok?{ok:true,onChainTxHash:l,data:r.data}:m}async function L(e){let{client:t,clients:n,itemID:i,networkID:c,walletAddress:o,amount:p,category:u}=e,r=await t.blockchain.requestNFTWithdrawal(i,c,o,p,u);if(!r.ok)return a("request",r.error);let d=r.data.EvmSignature,s=r.data.TitleTransactionID??void 0;if(!d)return a("request","Withdrawal response carried no EVM signature.",{titleTransactionID:s});let l;try{l=await W(n,d);}catch(y){return a("withdraw-onchain",g(y),{titleTransactionID:s})}let m=await v(t,s,l);return m.ok?{ok:true,onChainTxHash:l,data:r.data}:m}async function v(e,t,n){if(!t)return a("confirm","Missing TitleTransactionID.",{onChainTxHash:n});let i=await e.blockchain.confirmWithdrawal(t,n);return i.ok?{ok:true,onChainTxHash:n,data:i.data}:a("confirm",i.error,{onChainTxHash:n,titleTransactionID:t})}async function G(e){let{client:t,clients:n,networkID:i}=e,c=e.walletAddress??n.account,o=await t.auth.requestWalletChallenge(c,i);if(!o.ok)return w("challenge",o.error);let p;try{p=await n.walletClient.signMessage({account:n.account,message:o.data.Message});}catch(r){return w("sign",g(r))}let u=await t.auth.loginWithWallet(c,i,p);return u.ok?{ok:true,data:u.data}:w("login",u.error)}async function U(e){let{client:t,adapter:n,network:i,mint:c,amountRaw:o,titleID:p,category:u}=e,r=t.auth.context?.userID;if(!r)return a("deposit-onchain","Not logged in.");if(o<=0n)return a("deposit-onchain","Amount must be positive.");let d;try{d=await n.depositSpl({mint:c,amountRaw:o,userID:r,titleID:p,category:normalizeBlockchainCategory(u)});}catch(l){return a("deposit-onchain",g(l))}let s=await t.blockchain.depositToken(i.NetworkID??"",d);return s.ok?{ok:true,onChainTxHash:d,data:s.data}:a("report",s.error,{onChainTxHash:d})}async function O(e){let{client:t,adapter:n,currencyID:i,networkID:c,walletAddress:o,amount:p,category:u}=e,r=await t.blockchain.requestTokenWithdrawal(i,c,o,p,u);if(!r.ok)return a("request",r.error);let d=r.data.SolanaSignature,s=r.data.TitleTransactionID??void 0;if(!d)return a("request","Withdrawal response carried no Solana signature.",{titleTransactionID:s});let l;try{l=await n.submitWithdrawal(d);}catch(y){return a("withdraw-onchain",g(y),{titleTransactionID:s})}if(!s)return a("confirm","Missing TitleTransactionID.",{onChainTxHash:l});let m=await t.blockchain.confirmWithdrawal(s,l);return m.ok?{ok:true,onChainTxHash:l,data:r.data}:a("confirm",m.error,{onChainTxHash:l,titleTransactionID:s})}async function z(e){let{client:t,networkID:n,walletAddress:i,signMessage:c}=e,o=await t.auth.requestWalletChallenge(i,n);if(!o.ok)return w("challenge",o.error);let p;try{let r=await c(new TextEncoder().encode(o.data.Message));p=V(r);}catch(r){return w("sign",g(r))}let u=await t.auth.loginWithWallet(i,n,p);return u.ok?{ok:true,data:u.data}:w("login",u.error)}function V(e){let t="0x";for(let n of e)t+=n.toString(16).padStart(2,"0");return t}export{g as a,a as b,w as c,h as d,k as e,A as f,x as g,b as h,f as i,T as j,S as k,R as l,H as m,C as n,W as o,M as p,F as q,L as r,G as s,U as t,O as u,z as v};
|
package/dist/index.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
'use strict';var viem=require('viem'),core=require('@idosgames/core');function g(e){return e instanceof viem.BaseError?e.shortMessage:e instanceof Error?e.message:String(e)}function a(e,t,n){return {ok:false,stage:e,error:t,...n}}function w(e,t){return {ok:false,stage:e,error:t}}var h=[{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:"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:"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:"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:[]}],k=[{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"}]}],x=[{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"}]}],A=[{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 b(e,t,n){return viem.encodeAbiParameters([{type:"string"},{type:"string"},{type:"string"}],[e,t,core.normalizeBlockchainCategory(n)])}async function f(e,t){let{walletClient:n,publicClient:i,account:c}=e,o=await n.writeContract({address:t.address,abi:t.abi,functionName:t.functionName,args:t.args,account:c,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 I(e){let t=e.PlatformPoolAddress;return t||null}async function T(e,t,n,i){return await e.publicClient.readContract({address:t,abi:k,functionName:"allowance",args:[e.account,n]})>=i?null:f(e,{address:t,abi:k,functionName:"approve",args:[n,i]})}async function S(e){let{client:t,clients:n,network:i,tokenAddress:c,amount:o,titleID:p,category:u}=e,r=t.auth.context?.userID;if(!r)return a("approve","Not logged in.");let d=I(i);if(!d)return a("approve","Network has no PlatformPoolAddress.");if(o<=0n)return a("approve","Amount must be positive.");try{await T(n,c,d,o);}catch(m){return a("approve",g(m))}let s;try{s=await f(n,{address:d,abi:h,functionName:"depositERC20",args:[c,o,r,p,u??""]});}catch(m){return a("deposit-onchain",g(m))}let l=await t.blockchain.depositToken(i.NetworkID??"",s);return l.ok?{ok:true,onChainTxHash:s,data:l.data}:a("report",l.error,{onChainTxHash:s})}async function R(e){let{client:t,clients:n,network:i,nftContractAddress:c,tokenId:o,amount:p,titleID:u,category:r}=e,d=t.auth.context?.userID;if(!d)return a("deposit-onchain","Not logged in.");let s=I(i);if(!s)return a("deposit-onchain","Network has no PlatformPoolAddress.");if(p<=0n)return a("deposit-onchain","Amount must be positive.");let l=b(d,u,r),m;try{m=await f(n,{address:c,abi:x,functionName:"safeTransferFrom",args:[n.account,s,o,p,l]});}catch(E){return a("deposit-onchain",g(E))}let y=await t.blockchain.depositNFT(i.NetworkID??"",m);return y.ok?{ok:true,onChainTxHash:m,data:y.data}:a("report",y.error,{onChainTxHash:m})}async function F(e){let{client:t,clients:n,network:i,nftContractAddress:c,tokenId:o,titleID:p,category:u}=e,r=t.auth.context?.userID;if(!r)return a("deposit-onchain","Not logged in.");let d=I(i);if(!d)return a("deposit-onchain","Network has no PlatformPoolAddress.");let s=b(r,p,u),l;try{l=await f(n,{address:c,abi:A,functionName:"safeTransferFrom",args:[n.account,d,o,s]});}catch(y){return a("deposit-onchain",g(y))}let m=await t.blockchain.depositNFT(i.NetworkID??"",l);return m.ok?{ok:true,onChainTxHash:l,data:m.data}:a("report",m.error,{onChainTxHash:l})}async function C(e,t){return f(e,{address:t.ContractAddress,abi:h,functionName:"withdrawERC20",args:[t.TokenAddress,t.WalletAddress,BigInt(t.Amount??"0"),BigInt(t.BurnAmount??"0"),BigInt(t.Nonce??"0"),t.Signature??"0x",t.UserID??"",t.TitleID??"",t.Category??"",BigInt(t.Deadline??"0")]})}async function W(e,t){return f(e,{address:t.ContractAddress,abi:D,functionName:"withdrawERC1155Mint",args:[t.TokenAddress,t.WalletAddress,BigInt(t.TokenId??"0"),BigInt(t.Amount??"0"),BigInt(t.Nonce??"0"),t.Signature??"0x",t.UserID??"",t.TitleID??"",t.Category??"",BigInt(t.Deadline??"0")]})}async function M(e,t){return f(e,{address:t.ContractAddress,abi:D,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 H(e){let{client:t,clients:n,currencyID:i,networkID:c,walletAddress:o,amount:p,category:u}=e,r=await t.blockchain.requestTokenWithdrawal(i,c,o,p,u);if(!r.ok)return a("request",r.error);let d=r.data.EvmSignature,s=r.data.TitleTransactionID??void 0;if(!d)return a("request","Withdrawal response carried no EVM signature.",{titleTransactionID:s});let l;try{l=await C(n,d);}catch(y){return a("withdraw-onchain",g(y),{titleTransactionID:s})}let m=await v(t,s,l);return m.ok?{ok:true,onChainTxHash:l,data:r.data}:m}async function L(e){let{client:t,clients:n,itemID:i,networkID:c,walletAddress:o,amount:p,category:u}=e,r=await t.blockchain.requestNFTWithdrawal(i,c,o,p,u);if(!r.ok)return a("request",r.error);let d=r.data.EvmSignature,s=r.data.TitleTransactionID??void 0;if(!d)return a("request","Withdrawal response carried no EVM signature.",{titleTransactionID:s});let l;try{l=await W(n,d);}catch(y){return a("withdraw-onchain",g(y),{titleTransactionID:s})}let m=await v(t,s,l);return m.ok?{ok:true,onChainTxHash:l,data:r.data}:m}async function v(e,t,n){if(!t)return a("confirm","Missing TitleTransactionID.",{onChainTxHash:n});let i=await e.blockchain.confirmWithdrawal(t,n);return i.ok?{ok:true,onChainTxHash:n,data:i.data}:a("confirm",i.error,{onChainTxHash:n,titleTransactionID:t})}async function G(e){let{client:t,clients:n,networkID:i}=e,c=e.walletAddress??n.account,o=await t.auth.requestWalletChallenge(c,i);if(!o.ok)return w("challenge",o.error);let p;try{p=await n.walletClient.signMessage({account:n.account,message:o.data.Message});}catch(r){return w("sign",g(r))}let u=await t.auth.loginWithWallet(c,i,p);return u.ok?{ok:true,data:u.data}:w("login",u.error)}async function U(e){let{client:t,adapter:n,network:i,mint:c,amountRaw:o,titleID:p,category:u}=e,r=t.auth.context?.userID;if(!r)return a("deposit-onchain","Not logged in.");if(o<=0n)return a("deposit-onchain","Amount must be positive.");let d;try{d=await n.depositSpl({mint:c,amountRaw:o,userID:r,titleID:p,category:core.normalizeBlockchainCategory(u)});}catch(l){return a("deposit-onchain",g(l))}let s=await t.blockchain.depositToken(i.NetworkID??"",d);return s.ok?{ok:true,onChainTxHash:d,data:s.data}:a("report",s.error,{onChainTxHash:d})}async function O(e){let{client:t,adapter:n,currencyID:i,networkID:c,walletAddress:o,amount:p,category:u}=e,r=await t.blockchain.requestTokenWithdrawal(i,c,o,p,u);if(!r.ok)return a("request",r.error);let d=r.data.SolanaSignature,s=r.data.TitleTransactionID??void 0;if(!d)return a("request","Withdrawal response carried no Solana signature.",{titleTransactionID:s});let l;try{l=await n.submitWithdrawal(d);}catch(y){return a("withdraw-onchain",g(y),{titleTransactionID:s})}if(!s)return a("confirm","Missing TitleTransactionID.",{onChainTxHash:l});let m=await t.blockchain.confirmWithdrawal(s,l);return m.ok?{ok:true,onChainTxHash:l,data:r.data}:a("confirm",m.error,{onChainTxHash:l,titleTransactionID:s})}async function z(e){let{client:t,networkID:n,walletAddress:i,signMessage:c}=e,o=await t.auth.requestWalletChallenge(i,n);if(!o.ok)return w("challenge",o.error);let p;try{let r=await c(new TextEncoder().encode(o.data.Message));p=V(r);}catch(r){return w("sign",g(r))}let u=await t.auth.loginWithWallet(i,n,p);return u.ok?{ok:true,data:u.data}:w("login",u.error)}function V(e){let t="0x";for(let n of e)t+=n.toString(16).padStart(2,"0");return t}exports.bridgeFail=a;exports.depositNftEvm=R;exports.depositNftEvm721=F;exports.depositTokenEvm=S;exports.depositTokenSolana=U;exports.encodeNftDepositData=b;exports.ensureErc20Allowance=T;exports.erc1155Abi=x;exports.erc20Abi=k;exports.erc721Abi=A;exports.loginWithWalletEvm=G;exports.loginWithWalletSolana=z;exports.rewardPoolAbi=h;exports.submitEvmNftWithdrawal=W;exports.submitEvmNftWithdrawal721=M;exports.submitEvmTokenWithdrawal=C;exports.toErrorMessage=g;exports.walletLoginFail=w;exports.withdrawNftEvm=L;exports.withdrawTokenEvm=H;exports.withdrawTokenSolana=O;exports.writeAndWait=f;
|
|
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 h=[{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:"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:"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:"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:[]}],k=[{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"}]}],x=[{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"}]}],A=[{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 b(t,e,n){return viem.encodeAbiParameters([{type:"string"},{type:"string"},{type:"string"}],[t,e,core.normalizeBlockchainCategory(n)])}async function f(t,e){let{walletClient:n,publicClient:i,account:c}=t,o=await n.writeContract({address:e.address,abi:e.abi,functionName:e.functionName,args:e.args,account:c,chain:n.chain,value:e.value});if((await i.waitForTransactionReceipt({hash:o})).status==="reverted")throw new Error(`On-chain transaction reverted (${o}).`);return o}function I(t){let e=t.RewardPoolAddress;return e||null}async function T(t,e,n,i){return await t.publicClient.readContract({address:e,abi:k,functionName:"allowance",args:[t.account,n]})>=i?null:f(t,{address:e,abi:k,functionName:"approve",args:[n,i]})}async function P(t){let{client:e,clients:n,network:i,tokenAddress:c,amount:o,titleID:p,category:u}=t,r=e.auth.context?.userID;if(!r)return a("approve","Not logged in.");let d=I(i);if(!d)return a("approve","Network has no RewardPoolAddress.");if(o<=0n)return a("approve","Amount must be positive.");try{await T(n,c,d,o);}catch(m){return a("approve",g(m))}let s;try{s=await f(n,{address:d,abi:h,functionName:"depositERC20",args:[c,o,r,p,u??""]});}catch(m){return a("deposit-onchain",g(m))}let l=await e.blockchain.depositToken(i.NetworkID??"",s);return l.ok?{ok:true,onChainTxHash:s,data:l.data}:a("report",l.error,{onChainTxHash:s})}async function R(t){let{client:e,clients:n,network:i,nftContractAddress:c,tokenId:o,amount:p,titleID:u,category:r}=t,d=e.auth.context?.userID;if(!d)return a("deposit-onchain","Not logged in.");let s=I(i);if(!s)return a("deposit-onchain","Network has no RewardPoolAddress.");if(p<=0n)return a("deposit-onchain","Amount must be positive.");let l=b(d,u,r),m;try{m=await f(n,{address:c,abi:x,functionName:"safeTransferFrom",args:[n.account,s,o,p,l]});}catch(E){return a("deposit-onchain",g(E))}let y=await e.blockchain.depositNFT(i.NetworkID??"",m);return y.ok?{ok:true,onChainTxHash:m,data:y.data}:a("report",y.error,{onChainTxHash:m})}async function F(t){let{client:e,clients:n,network:i,nftContractAddress:c,tokenId:o,titleID:p,category:u}=t,r=e.auth.context?.userID;if(!r)return a("deposit-onchain","Not logged in.");let d=I(i);if(!d)return a("deposit-onchain","Network has no RewardPoolAddress.");let s=b(r,p,u),l;try{l=await f(n,{address:c,abi:A,functionName:"safeTransferFrom",args:[n.account,d,o,s]});}catch(y){return a("deposit-onchain",g(y))}let m=await e.blockchain.depositNFT(i.NetworkID??"",l);return m.ok?{ok:true,onChainTxHash:l,data:m.data}:a("report",m.error,{onChainTxHash:l})}async function C(t,e){return f(t,{address:e.ContractAddress,abi:h,functionName:"withdrawERC20",args:[e.TokenAddress,e.WalletAddress,BigInt(e.Amount??"0"),BigInt(e.BurnAmount??"0"),BigInt(e.Nonce??"0"),e.Signature??"0x",e.UserID??"",e.TitleID??"",e.Category??"",BigInt(e.Deadline??"0")]})}async function W(t,e){return f(t,{address:e.ContractAddress,abi:D,functionName:"withdrawERC1155Mint",args:[e.TokenAddress,e.WalletAddress,BigInt(e.TokenId??"0"),BigInt(e.Amount??"0"),BigInt(e.Nonce??"0"),e.Signature??"0x",e.UserID??"",e.TitleID??"",e.Category??"",BigInt(e.Deadline??"0")]})}async function M(t,e){return f(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 H(t){let{client:e,clients:n,currencyID:i,networkID:c,walletAddress:o,amount:p,category:u}=t,r=await e.blockchain.requestTokenWithdrawal(i,c,o,p,u);if(!r.ok)return a("request",r.error);let d=r.data.EvmSignature,s=r.data.TitleTransactionID??void 0;if(!d)return a("request","Withdrawal response carried no EVM signature.",{titleTransactionID:s});let l;try{l=await C(n,d);}catch(y){return a("withdraw-onchain",g(y),{titleTransactionID:s})}let m=await v(e,s,l);return m.ok?{ok:true,onChainTxHash:l,data:r.data}:m}async function L(t){let{client:e,clients:n,itemID:i,networkID:c,walletAddress:o,amount:p,category:u}=t,r=await e.blockchain.requestNFTWithdrawal(i,c,o,p,u);if(!r.ok)return a("request",r.error);let d=r.data.EvmSignature,s=r.data.TitleTransactionID??void 0;if(!d)return a("request","Withdrawal response carried no EVM signature.",{titleTransactionID:s});let l;try{l=await W(n,d);}catch(y){return a("withdraw-onchain",g(y),{titleTransactionID:s})}let m=await v(e,s,l);return m.ok?{ok:true,onChainTxHash:l,data:r.data}:m}async function v(t,e,n){if(!e)return a("confirm","Missing TitleTransactionID.",{onChainTxHash:n});let i=await t.blockchain.confirmWithdrawal(e,n);return i.ok?{ok:true,onChainTxHash:n,data:i.data}:a("confirm",i.error,{onChainTxHash:n,titleTransactionID:e})}async function G(t){let{client:e,clients:n,networkID:i}=t,c=t.walletAddress??n.account,o=await e.auth.requestWalletChallenge(c,i);if(!o.ok)return w("challenge",o.error);let p;try{p=await n.walletClient.signMessage({account:n.account,message:o.data.Message});}catch(r){return w("sign",g(r))}let u=await e.auth.loginWithWallet(c,i,p);return u.ok?{ok:true,data:u.data}:w("login",u.error)}async function U(t){let{client:e,adapter:n,network:i,mint:c,amountRaw:o,titleID:p,category:u}=t,r=e.auth.context?.userID;if(!r)return a("deposit-onchain","Not logged in.");if(o<=0n)return a("deposit-onchain","Amount must be positive.");let d;try{d=await n.depositSpl({mint:c,amountRaw:o,userID:r,titleID:p,category:core.normalizeBlockchainCategory(u)});}catch(l){return a("deposit-onchain",g(l))}let s=await e.blockchain.depositToken(i.NetworkID??"",d);return s.ok?{ok:true,onChainTxHash:d,data:s.data}:a("report",s.error,{onChainTxHash:d})}async function O(t){let{client:e,adapter:n,currencyID:i,networkID:c,walletAddress:o,amount:p,category:u}=t,r=await e.blockchain.requestTokenWithdrawal(i,c,o,p,u);if(!r.ok)return a("request",r.error);let d=r.data.SolanaSignature,s=r.data.TitleTransactionID??void 0;if(!d)return a("request","Withdrawal response carried no Solana signature.",{titleTransactionID:s});let l;try{l=await n.submitWithdrawal(d);}catch(y){return a("withdraw-onchain",g(y),{titleTransactionID:s})}if(!s)return a("confirm","Missing TitleTransactionID.",{onChainTxHash:l});let m=await e.blockchain.confirmWithdrawal(s,l);return m.ok?{ok:true,onChainTxHash:l,data:r.data}:a("confirm",m.error,{onChainTxHash:l,titleTransactionID:s})}async function z(t){let{client:e,networkID:n,walletAddress:i,signMessage:c}=t,o=await e.auth.requestWalletChallenge(i,n);if(!o.ok)return w("challenge",o.error);let p;try{let r=await c(new TextEncoder().encode(o.data.Message));p=V(r);}catch(r){return w("sign",g(r))}let u=await e.auth.loginWithWallet(i,n,p);return u.ok?{ok:true,data:u.data}:w("login",u.error)}function V(t){let e="0x";for(let n of t)e+=n.toString(16).padStart(2,"0");return e}exports.bridgeFail=a;exports.depositNftEvm=R;exports.depositNftEvm721=F;exports.depositTokenEvm=P;exports.depositTokenSolana=U;exports.encodeNftDepositData=b;exports.ensureErc20Allowance=T;exports.erc1155Abi=x;exports.erc20Abi=k;exports.erc721Abi=A;exports.loginWithWalletEvm=G;exports.loginWithWalletSolana=z;exports.rewardPoolAbi=h;exports.submitEvmNftWithdrawal=W;exports.submitEvmNftWithdrawal721=M;exports.submitEvmTokenWithdrawal=C;exports.toErrorMessage=g;exports.walletLoginFail=w;exports.withdrawNftEvm=L;exports.withdrawTokenEvm=H;exports.withdrawTokenSolana=O;exports.writeAndWait=f;
|
package/dist/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export{b as bridgeFail,l as depositNftEvm,m as depositNftEvm721,k as depositTokenEvm,t as depositTokenSolana,h as encodeNftDepositData,j as ensureErc20Allowance,f as erc1155Abi,e as erc20Abi,g as erc721Abi,s as loginWithWalletEvm,v as loginWithWalletSolana,d as rewardPoolAbi,o as submitEvmNftWithdrawal,p as submitEvmNftWithdrawal721,n as submitEvmTokenWithdrawal,a as toErrorMessage,c as walletLoginFail,r as withdrawNftEvm,q as withdrawTokenEvm,u as withdrawTokenSolana,i as writeAndWait}from'./chunk-
|
|
1
|
+
export{b as bridgeFail,l as depositNftEvm,m as depositNftEvm721,k as depositTokenEvm,t as depositTokenSolana,h as encodeNftDepositData,j as ensureErc20Allowance,f as erc1155Abi,e as erc20Abi,g as erc721Abi,s as loginWithWalletEvm,v as loginWithWalletSolana,d as rewardPoolAbi,o as submitEvmNftWithdrawal,p as submitEvmNftWithdrawal721,n as submitEvmTokenWithdrawal,a as toErrorMessage,c as walletLoginFail,r as withdrawNftEvm,q as withdrawTokenEvm,u as withdrawTokenSolana,i as writeAndWait}from'./chunk-YV6AQWSH.js';
|
package/dist/react/index.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
'use strict';var wagmi=require('wagmi'),connectors=require('wagmi/connectors'),reactQuery=require('@tanstack/react-query'),react=require('react'),jsxRuntime=require('react/jsx-runtime'),viem=require('viem'),core=require('@idosgames/core'),walletAdapterReact=require('@solana/wallet-adapter-react');function _(t){let{chains:e,walletConnectProjectId:n,appName:r,appUrl:s,appIcon:i,transports:l,connectors:p}=t,o=r||s?{name:r??"iDosGames",description:r??"iDosGames game",url:s??"",icons:i?[i]:[]}:void 0,m=p??[connectors.injected(),connectors.coinbaseWallet({appName:r??"iDosGames"}),...n?[connectors.walletConnect({projectId:n,metadata:o,showQrModal:true})]:[]],d={};for(let c of e)d[c.id]=l?.[c.id]??wagmi.http();return wagmi.createConfig({chains:e,connectors:m,transports:d})}function Y(t){let{wagmiConfig:e,queryClient:n,children:r}=t,[s]=react.useState(()=>n??new reactQuery.QueryClient);return jsxRuntime.jsx(wagmi.WagmiProvider,{config:e,children:jsxRuntime.jsx(reactQuery.QueryClientProvider,{client:s,children:r})})}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:"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:"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:[]}],E=[{type:"function",name:"withdrawERC1155Mint",stateMutability:"nonpayable",inputs:[{name:"collection",type:"address"},{name:"to",type:"address"},{name:"id",type:"uint256"},{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:[]}],D=[{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"}]}],N=[{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 B(t,e,n){return viem.encodeAbiParameters([{type:"string"},{type:"string"},{type:"string"}],[t,e,core.normalizeBlockchainCategory(n)])}async function w(t,e){let{walletClient:n,publicClient:r,account:s}=t,i=await n.writeContract({address:e.address,abi:e.abi,functionName:e.functionName,args:e.args,account:s,chain:n.chain,value:e.value});if((await r.waitForTransactionReceipt({hash:i})).status==="reverted")throw new Error(`On-chain transaction reverted (${i}).`);return i}function 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 f(t,e){return {ok:false,stage:t,error:e}}function S(t){let e=t.PlatformPoolAddress;return e||null}async function R(t,e,n,r){return await t.publicClient.readContract({address:e,abi:D,functionName:"allowance",args:[t.account,n]})>=r?null:w(t,{address:e,abi:D,functionName:"approve",args:[n,r]})}async function T(t){let{client:e,clients:n,network:r,tokenAddress:s,amount:i,titleID:l,category:p}=t,o=e.auth.context?.userID;if(!o)return a("approve","Not logged in.");let m=S(r);if(!m)return a("approve","Network has no PlatformPoolAddress.");if(i<=0n)return a("approve","Amount must be positive.");try{await R(n,s,m,i);}catch(u){return a("approve",g(u))}let d;try{d=await w(n,{address:m,abi:k,functionName:"depositERC20",args:[s,i,o,l,p??""]});}catch(u){return a("deposit-onchain",g(u))}let c=await e.blockchain.depositToken(r.NetworkID??"",d);return c.ok?{ok:true,onChainTxHash:d,data:c.data}:a("report",c.error,{onChainTxHash:d})}async function C(t){let{client:e,clients:n,network:r,nftContractAddress:s,tokenId:i,amount:l,titleID:p,category:o}=t,m=e.auth.context?.userID;if(!m)return a("deposit-onchain","Not logged in.");let d=S(r);if(!d)return a("deposit-onchain","Network has no PlatformPoolAddress.");if(l<=0n)return a("deposit-onchain","Amount must be positive.");let c=B(m,p,o),u;try{u=await w(n,{address:s,abi:N,functionName:"safeTransferFrom",args:[n.account,d,i,l,c]});}catch(q){return a("deposit-onchain",g(q))}let y=await e.blockchain.depositNFT(r.NetworkID??"",u);return y.ok?{ok:true,onChainTxHash:u,data:y.data}:a("report",y.error,{onChainTxHash:u})}async function F(t,e){return w(t,{address:e.ContractAddress,abi:k,functionName:"withdrawERC20",args:[e.TokenAddress,e.WalletAddress,BigInt(e.Amount??"0"),BigInt(e.BurnAmount??"0"),BigInt(e.Nonce??"0"),e.Signature??"0x",e.UserID??"",e.TitleID??"",e.Category??"",BigInt(e.Deadline??"0")]})}async function M(t,e){return w(t,{address:e.ContractAddress,abi:E,functionName:"withdrawERC1155Mint",args:[e.TokenAddress,e.WalletAddress,BigInt(e.TokenId??"0"),BigInt(e.Amount??"0"),BigInt(e.Nonce??"0"),e.Signature??"0x",e.UserID??"",e.TitleID??"",e.Category??"",BigInt(e.Deadline??"0")]})}async function W(t){let{client:e,clients:n,currencyID:r,networkID:s,walletAddress:i,amount:l,category:p}=t,o=await e.blockchain.requestTokenWithdrawal(r,s,i,l,p);if(!o.ok)return a("request",o.error);let m=o.data.EvmSignature,d=o.data.TitleTransactionID??void 0;if(!m)return a("request","Withdrawal response carried no EVM signature.",{titleTransactionID:d});let c;try{c=await F(n,m);}catch(y){return a("withdraw-onchain",g(y),{titleTransactionID:d})}let u=await H(e,d,c);return u.ok?{ok:true,onChainTxHash:c,data:o.data}:u}async function v(t){let{client:e,clients:n,itemID:r,networkID:s,walletAddress:i,amount:l,category:p}=t,o=await e.blockchain.requestNFTWithdrawal(r,s,i,l,p);if(!o.ok)return a("request",o.error);let m=o.data.EvmSignature,d=o.data.TitleTransactionID??void 0;if(!m)return a("request","Withdrawal response carried no EVM signature.",{titleTransactionID:d});let c;try{c=await M(n,m);}catch(y){return a("withdraw-onchain",g(y),{titleTransactionID:d})}let u=await H(e,d,c);return u.ok?{ok:true,onChainTxHash:c,data:o.data}:u}async function H(t,e,n){if(!e)return a("confirm","Missing TitleTransactionID.",{onChainTxHash:n});let r=await t.blockchain.confirmWithdrawal(e,n);return r.ok?{ok:true,onChainTxHash:n,data:r.data}:a("confirm",r.error,{onChainTxHash:n,titleTransactionID:e})}async function A(t){let{client:e,clients:n,networkID:r}=t,s=t.walletAddress??n.account,i=await e.auth.requestWalletChallenge(s,r);if(!i.ok)return f("challenge",i.error);let l;try{l=await n.walletClient.signMessage({account:n.account,message:i.data.Message});}catch(o){return f("sign",g(o))}let p=await e.auth.loginWithWallet(s,r,l);return p.ok?{ok:true,data:p.data}:f("login",p.error)}function L(){let{address:t}=wagmi.useAccount(),e=wagmi.usePublicClient(),{data:n}=wagmi.useWalletClient();return !t||!e||!n?null:{account:t,publicClient:e,walletClient:n}}var h="Wallet not connected.";function oe(t,e){let n=L();return {connected:!!n,account:n?.account??null,loginWithWallet:(r,s)=>n?A({client:t,clients:n,networkID:r,walletAddress:s}):Promise.resolve(f("challenge",h)),depositToken:r=>n?T({client:t,clients:n,titleID:e,...r}):Promise.resolve(a("approve",h)),depositNft:r=>n?C({client:t,clients:n,titleID:e,...r}):Promise.resolve(a("deposit-onchain",h)),withdrawToken:r=>n?W({client:t,clients:n,...r}):Promise.resolve(a("withdraw-onchain",h)),withdrawNft:r=>n?v({client:t,clients:n,...r}):Promise.resolve(a("withdraw-onchain",h))}}function le(t){let{endpoint:e,wallets:n,autoConnect:r=true,children:s}=t;return jsxRuntime.jsx(walletAdapterReact.ConnectionProvider,{endpoint:e,children:jsxRuntime.jsx(walletAdapterReact.WalletProvider,{wallets:n,autoConnect:r,children:s})})}async function b(t){let{client:e,adapter:n,network:r,mint:s,amountRaw:i,titleID:l,category:p}=t,o=e.auth.context?.userID;if(!o)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:s,amountRaw:i,userID:o,titleID:l,category:core.normalizeBlockchainCategory(p)});}catch(c){return a("deposit-onchain",g(c))}let d=await e.blockchain.depositToken(r.NetworkID??"",m);return d.ok?{ok:true,onChainTxHash:m,data:d.data}:a("report",d.error,{onChainTxHash:m})}async function P(t){let{client:e,adapter:n,currencyID:r,networkID:s,walletAddress:i,amount:l,category:p}=t,o=await e.blockchain.requestTokenWithdrawal(r,s,i,l,p);if(!o.ok)return a("request",o.error);let m=o.data.SolanaSignature,d=o.data.TitleTransactionID??void 0;if(!m)return a("request","Withdrawal response carried no Solana signature.",{titleTransactionID:d});let c;try{c=await n.submitWithdrawal(m);}catch(y){return a("withdraw-onchain",g(y),{titleTransactionID:d})}if(!d)return a("confirm","Missing TitleTransactionID.",{onChainTxHash:c});let u=await e.blockchain.confirmWithdrawal(d,c);return u.ok?{ok:true,onChainTxHash:c,data:o.data}:a("confirm",u.error,{onChainTxHash:c,titleTransactionID:d})}async function x(t){let{client:e,networkID:n,walletAddress:r,signMessage:s}=t,i=await e.auth.requestWalletChallenge(r,n);if(!i.ok)return f("challenge",i.error);let l;try{let o=await s(new TextEncoder().encode(i.data.Message));l=pe(o);}catch(o){return f("sign",g(o))}let p=await e.auth.loginWithWallet(r,n,l);return p.ok?{ok:true,data:p.data}:f("login",p.error)}function pe(t){let e="0x";for(let n of t)e+=n.toString(16).padStart(2,"0");return e}var O="Wallet not connected.";function me(t,e,n){let{publicKey:r,signMessage:s}=walletAdapterReact.useWallet(),i=r?.toBase58()??null;return {connected:!!i,account:i,loginWithWallet:(l,p)=>{let o=p??i;return o?s?x({client:t,networkID:l,walletAddress:o,signMessage:s}):Promise.resolve(f("sign","The connected wallet does not support message signing.")):Promise.resolve(f("challenge",O))},depositToken:l=>b({client:t,adapter:n,titleID:e,...l}),withdrawToken:l=>{let p=l.walletAddress??i;return p?P({client:t,adapter:n,...l,walletAddress:p}):Promise.resolve(a("request",O))}}}exports.IDosGamesWalletProvider=Y;exports.SolanaWalletBridgeProvider=le;exports.createEvmWalletConfig=_;exports.useEvmBridge=oe;exports.useEvmBridgeClients=L;exports.useSolanaBridge=me;
|
|
1
|
+
'use strict';var wagmi=require('wagmi'),connectors=require('wagmi/connectors'),reactQuery=require('@tanstack/react-query'),react=require('react'),jsxRuntime=require('react/jsx-runtime'),viem=require('viem'),core=require('@idosgames/core'),walletAdapterReact=require('@solana/wallet-adapter-react');function te(t){let{chains:e,walletConnectProjectId:n,appName:r,appUrl:s,appIcon:i,transports:l,connectors:c}=t,a=r||s?{name:r??"iDosGames",description:r??"iDosGames game",url:s??"",icons:i?[i]:[]}:void 0,m=c??[connectors.injected(),connectors.coinbaseWallet({appName:r??"iDosGames"}),...n?[connectors.walletConnect({projectId:n,metadata:a,showQrModal:true})]:[]],d={};for(let p of e)d[p.id]=l?.[p.id]??wagmi.http();return wagmi.createConfig({chains:e,connectors:m,transports:d})}function A(t){let{wagmiConfig:e,queryClient:n,children:r}=t,[s]=react.useState(()=>n??new reactQuery.QueryClient);return jsxRuntime.jsx(wagmi.WagmiProvider,{config:e,children:jsxRuntime.jsx(reactQuery.QueryClientProvider,{client:s,children:r})})}var D=[{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:"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:"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:[]}],L=[{type:"function",name:"withdrawERC1155Mint",stateMutability:"nonpayable",inputs:[{name:"collection",type:"address"},{name:"to",type:"address"},{name:"id",type:"uint256"},{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:[]}],P=[{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"}]}],H=[{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 G(t,e,n){return viem.encodeAbiParameters([{type:"string"},{type:"string"},{type:"string"}],[t,e,core.normalizeBlockchainCategory(n)])}async function h(t,e){let{walletClient:n,publicClient:r,account:s}=t,i=await n.writeContract({address:e.address,abi:e.abi,functionName:e.functionName,args:e.args,account:s,chain:n.chain,value:e.value});if((await r.waitForTransactionReceipt({hash:i})).status==="reverted")throw new Error(`On-chain transaction reverted (${i}).`);return i}function g(t){return t instanceof viem.BaseError?t.shortMessage:t instanceof Error?t.message:String(t)}function o(t,e,n){return {ok:false,stage:t,error:e,...n}}function f(t,e){return {ok:false,stage:t,error:e}}function O(t){let e=t.RewardPoolAddress;return e||null}async function q(t,e,n,r){return await t.publicClient.readContract({address:e,abi:P,functionName:"allowance",args:[t.account,n]})>=r?null:h(t,{address:e,abi:P,functionName:"approve",args:[n,r]})}async function I(t){let{client:e,clients:n,network:r,tokenAddress:s,amount:i,titleID:l,category:c}=t,a=e.auth.context?.userID;if(!a)return o("approve","Not logged in.");let m=O(r);if(!m)return o("approve","Network has no RewardPoolAddress.");if(i<=0n)return o("approve","Amount must be positive.");try{await q(n,s,m,i);}catch(u){return o("approve",g(u))}let d;try{d=await h(n,{address:m,abi:D,functionName:"depositERC20",args:[s,i,a,l,c??""]});}catch(u){return o("deposit-onchain",g(u))}let p=await e.blockchain.depositToken(r.NetworkID??"",d);return p.ok?{ok:true,onChainTxHash:d,data:p.data}:o("report",p.error,{onChainTxHash:d})}async function x(t){let{client:e,clients:n,network:r,nftContractAddress:s,tokenId:i,amount:l,titleID:c,category:a}=t,m=e.auth.context?.userID;if(!m)return o("deposit-onchain","Not logged in.");let d=O(r);if(!d)return o("deposit-onchain","Network has no RewardPoolAddress.");if(l<=0n)return o("deposit-onchain","Amount must be positive.");let p=G(m,c,a),u;try{u=await h(n,{address:s,abi:H,functionName:"safeTransferFrom",args:[n.account,d,i,l,p]});}catch(w){return o("deposit-onchain",g(w))}let y=await e.blockchain.depositNFT(r.NetworkID??"",u);return y.ok?{ok:true,onChainTxHash:u,data:y.data}:o("report",y.error,{onChainTxHash:u})}async function U(t,e){return h(t,{address:e.ContractAddress,abi:D,functionName:"withdrawERC20",args:[e.TokenAddress,e.WalletAddress,BigInt(e.Amount??"0"),BigInt(e.BurnAmount??"0"),BigInt(e.Nonce??"0"),e.Signature??"0x",e.UserID??"",e.TitleID??"",e.Category??"",BigInt(e.Deadline??"0")]})}async function Q(t,e){return h(t,{address:e.ContractAddress,abi:L,functionName:"withdrawERC1155Mint",args:[e.TokenAddress,e.WalletAddress,BigInt(e.TokenId??"0"),BigInt(e.Amount??"0"),BigInt(e.Nonce??"0"),e.Signature??"0x",e.UserID??"",e.TitleID??"",e.Category??"",BigInt(e.Deadline??"0")]})}async function E(t){let{client:e,clients:n,currencyID:r,networkID:s,walletAddress:i,amount:l,category:c}=t,a=await e.blockchain.requestTokenWithdrawal(r,s,i,l,c);if(!a.ok)return o("request",a.error);let m=a.data.EvmSignature,d=a.data.TitleTransactionID??void 0;if(!m)return o("request","Withdrawal response carried no EVM signature.",{titleTransactionID:d});let p;try{p=await U(n,m);}catch(y){return o("withdraw-onchain",g(y),{titleTransactionID:d})}let u=await z(e,d,p);return u.ok?{ok:true,onChainTxHash:p,data:a.data}:u}async function N(t){let{client:e,clients:n,itemID:r,networkID:s,walletAddress:i,amount:l,category:c}=t,a=await e.blockchain.requestNFTWithdrawal(r,s,i,l,c);if(!a.ok)return o("request",a.error);let m=a.data.EvmSignature,d=a.data.TitleTransactionID??void 0;if(!m)return o("request","Withdrawal response carried no EVM signature.",{titleTransactionID:d});let p;try{p=await Q(n,m);}catch(y){return o("withdraw-onchain",g(y),{titleTransactionID:d})}let u=await z(e,d,p);return u.ok?{ok:true,onChainTxHash:p,data:a.data}:u}async function z(t,e,n){if(!e)return o("confirm","Missing TitleTransactionID.",{onChainTxHash:n});let r=await t.blockchain.confirmWithdrawal(e,n);return r.ok?{ok:true,onChainTxHash:n,data:r.data}:o("confirm",r.error,{onChainTxHash:n,titleTransactionID:e})}async function C(t){let{client:e,clients:n,networkID:r}=t,s=t.walletAddress??n.account,i=await e.auth.requestWalletChallenge(s,r);if(!i.ok)return f("challenge",i.error);let l;try{l=await n.walletClient.signMessage({account:n.account,message:i.data.Message});}catch(a){return f("sign",g(a))}let c=await e.auth.loginWithWallet(s,r,l);return c.ok?{ok:true,data:c.data}:f("login",c.error)}function v(){let{address:t}=wagmi.useAccount(),e=wagmi.usePublicClient(),{data:n}=wagmi.useWalletClient();return !t||!e||!n?null:{account:t,publicClient:e,walletClient:n}}var W="Wallet not connected.";function me(t,e){let n=v();return {connected:!!n,account:n?.account??null,loginWithWallet:(r,s)=>n?C({client:t,clients:n,networkID:r,walletAddress:s}):Promise.resolve(f("challenge",W)),depositToken:r=>n?I({client:t,clients:n,titleID:e,...r}):Promise.resolve(o("approve",W)),depositNft:r=>n?x({client:t,clients:n,titleID:e,...r}):Promise.resolve(o("deposit-onchain",W)),withdrawToken:r=>n?E({client:t,clients:n,...r}):Promise.resolve(o("withdraw-onchain",W)),withdrawNft:r=>n?N({client:t,clients:n,...r}):Promise.resolve(o("withdraw-onchain",W))}}function fe(t){let{wagmiConfig:e,...n}=t;return jsxRuntime.jsx(A,{wagmiConfig:e,children:jsxRuntime.jsx(_,{...n})})}function _(t){let{client:e,networkID:n,onAuthenticated:r,disabled:s,label:i,style:l}=t,{isConnected:c}=wagmi.useAccount(),{connectAsync:a,connectors:m}=wagmi.useConnect(),d=v(),[p,u]=react.useState(false),[y,w]=react.useState(null),$=async()=>{u(true),w(null);try{let k=d;if(!c||!k){let F=m[0];if(!F){w("No wallet connector is configured.");return}await a({connector:F}),w(null);return}let b=await C({client:e,clients:k,networkID:n});if(b.ok){r();return}w(b.stage==="sign"?"Signature declined.":b.error??"Wallet sign-in failed.");}catch(k){w(k instanceof Error?k.message:"Wallet sign-in failed.");}finally{u(false);}};return jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[jsxRuntime.jsx("button",{type:"button",onClick:()=>{$();},disabled:s||p,style:l,children:p?"Check your wallet\u2026":c?i??"Sign in with wallet":"Connect wallet"}),y&&jsxRuntime.jsx("span",{role:"alert",children:y})]})}function Ce(t){let{endpoint:e,wallets:n,autoConnect:r=true,children:s}=t;return jsxRuntime.jsx(walletAdapterReact.ConnectionProvider,{endpoint:e,children:jsxRuntime.jsx(walletAdapterReact.WalletProvider,{wallets:n,autoConnect:r,children:s})})}async function B(t){let{client:e,adapter:n,network:r,mint:s,amountRaw:i,titleID:l,category:c}=t,a=e.auth.context?.userID;if(!a)return o("deposit-onchain","Not logged in.");if(i<=0n)return o("deposit-onchain","Amount must be positive.");let m;try{m=await n.depositSpl({mint:s,amountRaw:i,userID:a,titleID:l,category:core.normalizeBlockchainCategory(c)});}catch(p){return o("deposit-onchain",g(p))}let d=await e.blockchain.depositToken(r.NetworkID??"",m);return d.ok?{ok:true,onChainTxHash:m,data:d.data}:o("report",d.error,{onChainTxHash:m})}async function S(t){let{client:e,adapter:n,currencyID:r,networkID:s,walletAddress:i,amount:l,category:c}=t,a=await e.blockchain.requestTokenWithdrawal(r,s,i,l,c);if(!a.ok)return o("request",a.error);let m=a.data.SolanaSignature,d=a.data.TitleTransactionID??void 0;if(!m)return o("request","Withdrawal response carried no Solana signature.",{titleTransactionID:d});let p;try{p=await n.submitWithdrawal(m);}catch(y){return o("withdraw-onchain",g(y),{titleTransactionID:d})}if(!d)return o("confirm","Missing TitleTransactionID.",{onChainTxHash:p});let u=await e.blockchain.confirmWithdrawal(d,p);return u.ok?{ok:true,onChainTxHash:p,data:a.data}:o("confirm",u.error,{onChainTxHash:p,titleTransactionID:d})}async function R(t){let{client:e,networkID:n,walletAddress:r,signMessage:s}=t,i=await e.auth.requestWalletChallenge(r,n);if(!i.ok)return f("challenge",i.error);let l;try{let a=await s(new TextEncoder().encode(i.data.Message));l=De(a);}catch(a){return f("sign",g(a))}let c=await e.auth.loginWithWallet(r,n,l);return c.ok?{ok:true,data:c.data}:f("login",c.error)}function De(t){let e="0x";for(let n of t)e+=n.toString(16).padStart(2,"0");return e}var K="Wallet not connected.";function Te(t,e,n){let{publicKey:r,signMessage:s}=walletAdapterReact.useWallet(),i=r?.toBase58()??null;return {connected:!!i,account:i,loginWithWallet:(l,c)=>{let a=c??i;return a?s?R({client:t,networkID:l,walletAddress:a,signMessage:s}):Promise.resolve(f("sign","The connected wallet does not support message signing.")):Promise.resolve(f("challenge",K))},depositToken:l=>B({client:t,adapter:n,titleID:e,...l}),withdrawToken:l=>{let c=l.walletAddress??i;return c?S({client:t,adapter:n,...l,walletAddress:c}):Promise.resolve(o("request",K))}}}exports.IDosGamesWalletProvider=A;exports.SolanaWalletBridgeProvider=Ce;exports.WalletLogin=fe;exports.WalletLoginButton=_;exports.createEvmWalletConfig=te;exports.useEvmBridge=me;exports.useEvmBridgeClients=v;exports.useSolanaBridge=Te;
|
package/dist/react/index.d.cts
CHANGED
|
@@ -2,7 +2,7 @@ import * as wagmi from 'wagmi';
|
|
|
2
2
|
import { CreateConnectorFn, Config } from 'wagmi';
|
|
3
3
|
import { Chain, Transport } from 'viem';
|
|
4
4
|
import * as react from 'react';
|
|
5
|
-
import { ReactNode } from 'react';
|
|
5
|
+
import { ReactNode, CSSProperties } from 'react';
|
|
6
6
|
import { QueryClient } from '@tanstack/react-query';
|
|
7
7
|
import { ClientState, DepositTokenResponse, DepositNFTResponse, TokenWithdrawalResponse, NFTWithdrawalResponse, IDosGamesClient } from '@idosgames/core';
|
|
8
8
|
import { W as WalletLoginResult, e as DepositTokenEvmParams, a as BridgeResult, d as DepositNftEvmParams, k as WithdrawTokenEvmParams, j as WithdrawNftEvmParams, E as EvmBridgeClients, f as DepositTokenSolanaParams, l as WithdrawTokenSolanaParams, S as SolanaProgramAdapter } from '../bridge-BCxf6AHE.cjs';
|
|
@@ -102,6 +102,35 @@ interface EvmBridge {
|
|
|
102
102
|
*/
|
|
103
103
|
declare function useEvmBridge(client: IDosGamesClient, titleID: string): EvmBridge;
|
|
104
104
|
|
|
105
|
+
interface WalletLoginProps {
|
|
106
|
+
/** The (not yet authenticated) shared client. */
|
|
107
|
+
client: IDosGamesClient;
|
|
108
|
+
/** NetworkID the challenge is issued for — one of the title's configured networks. */
|
|
109
|
+
networkID: string;
|
|
110
|
+
/** Called once the wallet signature has been exchanged for a session. */
|
|
111
|
+
onAuthenticated: () => void;
|
|
112
|
+
/** A wagmi config, typically from {@link createEvmWalletConfig}. */
|
|
113
|
+
wagmiConfig: Config;
|
|
114
|
+
disabled?: boolean;
|
|
115
|
+
label?: string;
|
|
116
|
+
style?: CSSProperties;
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
119
|
+
* Ready-made "sign in with wallet" button: connect → sign the challenge → session.
|
|
120
|
+
*
|
|
121
|
+
* It ships here rather than in each game because the flow has sharp edges that are easy to get
|
|
122
|
+
* wrong once and then copy everywhere — a rejected signature is a normal outcome rather than a
|
|
123
|
+
* throw, the login must not fire before the wallet client exists, and the challenge is per network.
|
|
124
|
+
*
|
|
125
|
+
* Self-contained: it brings its own wallet provider, so a login screen can drop it in before any
|
|
126
|
+
* other wallet UI exists. Inside a screen that already renders `IDosGamesWalletProvider`, use
|
|
127
|
+
* {@link WalletLoginButton} instead to avoid nesting a second provider.
|
|
128
|
+
*/
|
|
129
|
+
declare function WalletLogin(props: WalletLoginProps): ReactNode;
|
|
130
|
+
type WalletLoginButtonProps = Omit<WalletLoginProps, "wagmiConfig">;
|
|
131
|
+
/** The button itself. Must be rendered inside an {@link IDosGamesWalletProvider}. */
|
|
132
|
+
declare function WalletLoginButton(props: WalletLoginButtonProps): ReactNode;
|
|
133
|
+
|
|
105
134
|
interface SolanaWalletBridgeProviderProps {
|
|
106
135
|
/** RPC endpoint for the Solana network the title uses (matches its blockchain config). */
|
|
107
136
|
endpoint: string;
|
|
@@ -147,4 +176,4 @@ interface SolanaBridge {
|
|
|
147
176
|
*/
|
|
148
177
|
declare function useSolanaBridge(client: IDosGamesClient, titleID: string, adapter: SolanaProgramAdapter): SolanaBridge;
|
|
149
178
|
|
|
150
|
-
export { type EvmBridge, type EvmWalletConfigOptions, IDosGamesWalletProvider, type IDosGamesWalletProviderProps, type SolanaBridge, SolanaWalletBridgeProvider, type SolanaWalletBridgeProviderProps, createEvmWalletConfig, useEvmBridge, useEvmBridgeClients, useSolanaBridge };
|
|
179
|
+
export { type EvmBridge, type EvmWalletConfigOptions, IDosGamesWalletProvider, type IDosGamesWalletProviderProps, type SolanaBridge, SolanaWalletBridgeProvider, type SolanaWalletBridgeProviderProps, WalletLogin, WalletLoginButton, type WalletLoginButtonProps, type WalletLoginProps, createEvmWalletConfig, useEvmBridge, useEvmBridgeClients, useSolanaBridge };
|
package/dist/react/index.d.ts
CHANGED
|
@@ -2,7 +2,7 @@ import * as wagmi from 'wagmi';
|
|
|
2
2
|
import { CreateConnectorFn, Config } from 'wagmi';
|
|
3
3
|
import { Chain, Transport } from 'viem';
|
|
4
4
|
import * as react from 'react';
|
|
5
|
-
import { ReactNode } from 'react';
|
|
5
|
+
import { ReactNode, CSSProperties } from 'react';
|
|
6
6
|
import { QueryClient } from '@tanstack/react-query';
|
|
7
7
|
import { ClientState, DepositTokenResponse, DepositNFTResponse, TokenWithdrawalResponse, NFTWithdrawalResponse, IDosGamesClient } from '@idosgames/core';
|
|
8
8
|
import { W as WalletLoginResult, e as DepositTokenEvmParams, a as BridgeResult, d as DepositNftEvmParams, k as WithdrawTokenEvmParams, j as WithdrawNftEvmParams, E as EvmBridgeClients, f as DepositTokenSolanaParams, l as WithdrawTokenSolanaParams, S as SolanaProgramAdapter } from '../bridge-BCxf6AHE.js';
|
|
@@ -102,6 +102,35 @@ interface EvmBridge {
|
|
|
102
102
|
*/
|
|
103
103
|
declare function useEvmBridge(client: IDosGamesClient, titleID: string): EvmBridge;
|
|
104
104
|
|
|
105
|
+
interface WalletLoginProps {
|
|
106
|
+
/** The (not yet authenticated) shared client. */
|
|
107
|
+
client: IDosGamesClient;
|
|
108
|
+
/** NetworkID the challenge is issued for — one of the title's configured networks. */
|
|
109
|
+
networkID: string;
|
|
110
|
+
/** Called once the wallet signature has been exchanged for a session. */
|
|
111
|
+
onAuthenticated: () => void;
|
|
112
|
+
/** A wagmi config, typically from {@link createEvmWalletConfig}. */
|
|
113
|
+
wagmiConfig: Config;
|
|
114
|
+
disabled?: boolean;
|
|
115
|
+
label?: string;
|
|
116
|
+
style?: CSSProperties;
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
119
|
+
* Ready-made "sign in with wallet" button: connect → sign the challenge → session.
|
|
120
|
+
*
|
|
121
|
+
* It ships here rather than in each game because the flow has sharp edges that are easy to get
|
|
122
|
+
* wrong once and then copy everywhere — a rejected signature is a normal outcome rather than a
|
|
123
|
+
* throw, the login must not fire before the wallet client exists, and the challenge is per network.
|
|
124
|
+
*
|
|
125
|
+
* Self-contained: it brings its own wallet provider, so a login screen can drop it in before any
|
|
126
|
+
* other wallet UI exists. Inside a screen that already renders `IDosGamesWalletProvider`, use
|
|
127
|
+
* {@link WalletLoginButton} instead to avoid nesting a second provider.
|
|
128
|
+
*/
|
|
129
|
+
declare function WalletLogin(props: WalletLoginProps): ReactNode;
|
|
130
|
+
type WalletLoginButtonProps = Omit<WalletLoginProps, "wagmiConfig">;
|
|
131
|
+
/** The button itself. Must be rendered inside an {@link IDosGamesWalletProvider}. */
|
|
132
|
+
declare function WalletLoginButton(props: WalletLoginButtonProps): ReactNode;
|
|
133
|
+
|
|
105
134
|
interface SolanaWalletBridgeProviderProps {
|
|
106
135
|
/** RPC endpoint for the Solana network the title uses (matches its blockchain config). */
|
|
107
136
|
endpoint: string;
|
|
@@ -147,4 +176,4 @@ interface SolanaBridge {
|
|
|
147
176
|
*/
|
|
148
177
|
declare function useSolanaBridge(client: IDosGamesClient, titleID: string, adapter: SolanaProgramAdapter): SolanaBridge;
|
|
149
178
|
|
|
150
|
-
export { type EvmBridge, type EvmWalletConfigOptions, IDosGamesWalletProvider, type IDosGamesWalletProviderProps, type SolanaBridge, SolanaWalletBridgeProvider, type SolanaWalletBridgeProviderProps, createEvmWalletConfig, useEvmBridge, useEvmBridgeClients, useSolanaBridge };
|
|
179
|
+
export { type EvmBridge, type EvmWalletConfigOptions, IDosGamesWalletProvider, type IDosGamesWalletProviderProps, type SolanaBridge, SolanaWalletBridgeProvider, type SolanaWalletBridgeProviderProps, WalletLogin, WalletLoginButton, type WalletLoginButtonProps, type WalletLoginProps, createEvmWalletConfig, useEvmBridge, useEvmBridgeClients, useSolanaBridge };
|
package/dist/react/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import {r,b,q,l,k,s,c,u,t,v}from'../chunk-
|
|
1
|
+
import {r,b,q,l,k,s,c,u as u$1,t,v}from'../chunk-YV6AQWSH.js';import {http,createConfig,WagmiProvider,useAccount,usePublicClient,useWalletClient,useConnect}from'wagmi';import {injected,coinbaseWallet,walletConnect}from'wagmi/connectors';import {QueryClient,QueryClientProvider}from'@tanstack/react-query';import {useState}from'react';import {jsx,jsxs,Fragment}from'react/jsx-runtime';import {ConnectionProvider,WalletProvider,useWallet}from'@solana/wallet-adapter-react';function _(t){let{chains:r,walletConnectProjectId:e,appName:o,appUrl:n,appIcon:s,transports:i,connectors:a}=t,p=o||n?{name:o??"iDosGames",description:o??"iDosGames game",url:n??"",icons:s?[s]:[]}:void 0,P=a??[injected(),coinbaseWallet({appName:o??"iDosGames"}),...e?[walletConnect({projectId:e,metadata:p,showQrModal:true})]:[]],f={};for(let d of r)f[d.id]=i?.[d.id]??http();return createConfig({chains:r,connectors:P,transports:f})}function h(t){let{wagmiConfig:r,queryClient:e,children:o}=t,[n]=useState(()=>e??new QueryClient);return jsx(WagmiProvider,{config:r,children:jsx(QueryClientProvider,{client:n,children:o})})}function W(){let{address:t}=useAccount(),r=usePublicClient(),{data:e}=useWalletClient();return !t||!r||!e?null:{account:t,publicClient:r,walletClient:e}}var u="Wallet not connected.";function Y(t,r$1){let e=W();return {connected:!!e,account:e?.account??null,loginWithWallet:(o,n)=>e?s({client:t,clients:e,networkID:o,walletAddress:n}):Promise.resolve(c("challenge",u)),depositToken:o=>e?k({client:t,clients:e,titleID:r$1,...o}):Promise.resolve(b("approve",u)),depositNft:o=>e?l({client:t,clients:e,titleID:r$1,...o}):Promise.resolve(b("deposit-onchain",u)),withdrawToken:o=>e?q({client:t,clients:e,...o}):Promise.resolve(b("withdraw-onchain",u)),withdrawNft:o=>e?r({client:t,clients:e,...o}):Promise.resolve(b("withdraw-onchain",u))}}function ee(t){let{wagmiConfig:r,...e}=t;return jsx(h,{wagmiConfig:r,children:jsx(x,{...e})})}function x(t){let{client:r,networkID:e,onAuthenticated:o,disabled:n,label:s$1,style:i}=t,{isConnected:a}=useAccount(),{connectAsync:p,connectors:P}=useConnect(),f=W(),[d,y]=useState(false),[T,c]=useState(null),O=async()=>{y(true),c(null);try{let m=f;if(!a||!m){let k=P[0];if(!k){c("No wallet connector is configured.");return}await p({connector:k}),c(null);return}let v=await s({client:r,clients:m,networkID:e});if(v.ok){o();return}c(v.stage==="sign"?"Signature declined.":v.error??"Wallet sign-in failed.");}catch(m){c(m instanceof Error?m.message:"Wallet sign-in failed.");}finally{y(false);}};return jsxs(Fragment,{children:[jsx("button",{type:"button",onClick:()=>{O();},disabled:n||d,style:i,children:d?"Check your wallet\u2026":a?s$1??"Sign in with wallet":"Connect wallet"}),T&&jsx("span",{role:"alert",children:T})]})}function ie(t){let{endpoint:r,wallets:e,autoConnect:o=true,children:n}=t;return jsx(ConnectionProvider,{endpoint:r,children:jsx(WalletProvider,{wallets:e,autoConnect:o,children:n})})}var G="Wallet not connected.";function ae(t$1,r,e){let{publicKey:o,signMessage:n}=useWallet(),s=o?.toBase58()??null;return {connected:!!s,account:s,loginWithWallet:(i,a)=>{let p=a??s;return p?n?v({client:t$1,networkID:i,walletAddress:p,signMessage:n}):Promise.resolve(c("sign","The connected wallet does not support message signing.")):Promise.resolve(c("challenge",G))},depositToken:i=>t({client:t$1,adapter:e,titleID:r,...i}),withdrawToken:i=>{let a=i.walletAddress??s;return a?u$1({client:t$1,adapter:e,...i,walletAddress:a}):Promise.resolve(b("request",G))}}}export{h as IDosGamesWalletProvider,ie as SolanaWalletBridgeProvider,ee as WalletLogin,x as WalletLoginButton,_ as createEvmWalletConfig,Y as useEvmBridge,W as useEvmBridgeClients,ae as useSolanaBridge};
|
package/package.json
CHANGED
|
@@ -1,94 +1,94 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "@idosgames/wallet",
|
|
3
|
-
"version": "0.1.
|
|
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
|
-
"type": "module",
|
|
6
|
-
"license": "MIT",
|
|
7
|
-
"author": "iDos Games",
|
|
8
|
-
"homepage": "https://github.com/iDos-Games/iDosGamesSDK_TS#readme",
|
|
9
|
-
"repository": {
|
|
10
|
-
"type": "git",
|
|
11
|
-
"url": "git+https://github.com/iDos-Games/iDosGamesSDK_TS.git",
|
|
12
|
-
"directory": "packages/wallet"
|
|
13
|
-
},
|
|
14
|
-
"bugs": {
|
|
15
|
-
"url": "https://github.com/iDos-Games/iDosGamesSDK_TS/issues"
|
|
16
|
-
},
|
|
17
|
-
"keywords": [
|
|
18
|
-
"idosgames",
|
|
19
|
-
"sdk",
|
|
20
|
-
"web3",
|
|
21
|
-
"wallet",
|
|
22
|
-
"wagmi",
|
|
23
|
-
"viem",
|
|
24
|
-
"walletconnect",
|
|
25
|
-
"solana",
|
|
26
|
-
"evm"
|
|
27
|
-
],
|
|
28
|
-
"publishConfig": {
|
|
29
|
-
"access": "public"
|
|
30
|
-
},
|
|
31
|
-
"sideEffects": false,
|
|
32
|
-
"main": "./dist/index.cjs",
|
|
33
|
-
"module": "./dist/index.js",
|
|
34
|
-
"types": "./dist/index.d.ts",
|
|
35
|
-
"exports": {
|
|
36
|
-
".": {
|
|
37
|
-
"types": "./dist/index.d.ts",
|
|
38
|
-
"import": "./dist/index.js",
|
|
39
|
-
"require": "./dist/index.cjs"
|
|
40
|
-
},
|
|
41
|
-
"./react": {
|
|
42
|
-
"types": "./dist/react/index.d.ts",
|
|
43
|
-
"import": "./dist/react/index.js",
|
|
44
|
-
"require": "./dist/react/index.cjs"
|
|
45
|
-
}
|
|
46
|
-
},
|
|
47
|
-
"files": [
|
|
48
|
-
"dist",
|
|
49
|
-
"README.md",
|
|
50
|
-
"LICENSE"
|
|
51
|
-
],
|
|
52
|
-
"scripts": {
|
|
53
|
-
"build": "tsup",
|
|
54
|
-
"typecheck": "tsc --noEmit -p tsconfig.json"
|
|
55
|
-
},
|
|
56
|
-
"//": "@idosgames/core не '*': опубликованный пакет обязан назвать диапазон, иначе установка wallet притянет любую версию core, включая будущую ломающую. На 0.x '^' даёт >=0.1.0 <0.2.0 — ровно ту зону, где core обещает совместимость (см. RELEASING.md). Поднимать при мажорном/минорном бампе core.",
|
|
57
|
-
"dependencies": {
|
|
58
|
-
"@idosgames/core": "^0.1.
|
|
59
|
-
"@solana/web3.js": "^1.
|
|
60
|
-
"viem": "^2.
|
|
61
|
-
},
|
|
62
|
-
"peerDependencies": {
|
|
63
|
-
"@solana/wallet-adapter-base": "^0.9.
|
|
64
|
-
"@solana/wallet-adapter-react": "^0.15.
|
|
65
|
-
"@tanstack/react-query": "^5.
|
|
66
|
-
"react": "^18.3.1",
|
|
67
|
-
"wagmi": "^
|
|
68
|
-
},
|
|
69
|
-
"peerDependenciesMeta": {
|
|
70
|
-
"react": {
|
|
71
|
-
"optional": true
|
|
72
|
-
},
|
|
73
|
-
"wagmi": {
|
|
74
|
-
"optional": true
|
|
75
|
-
},
|
|
76
|
-
"@tanstack/react-query": {
|
|
77
|
-
"optional": true
|
|
78
|
-
},
|
|
79
|
-
"@solana/wallet-adapter-base": {
|
|
80
|
-
"optional": true
|
|
81
|
-
},
|
|
82
|
-
"@solana/wallet-adapter-react": {
|
|
83
|
-
"optional": true
|
|
84
|
-
}
|
|
85
|
-
},
|
|
86
|
-
"devDependencies": {
|
|
87
|
-
"@solana/wallet-adapter-base": "^0.9.
|
|
88
|
-
"@solana/wallet-adapter-react": "^0.15.
|
|
89
|
-
"@tanstack/react-query": "^5.
|
|
90
|
-
"@types/react": "^
|
|
91
|
-
"react": "^
|
|
92
|
-
"wagmi": "^
|
|
93
|
-
}
|
|
94
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"name": "@idosgames/wallet",
|
|
3
|
+
"version": "0.1.2",
|
|
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
|
+
"type": "module",
|
|
6
|
+
"license": "MIT",
|
|
7
|
+
"author": "iDos Games",
|
|
8
|
+
"homepage": "https://github.com/iDos-Games/iDosGamesSDK_TS#readme",
|
|
9
|
+
"repository": {
|
|
10
|
+
"type": "git",
|
|
11
|
+
"url": "git+https://github.com/iDos-Games/iDosGamesSDK_TS.git",
|
|
12
|
+
"directory": "packages/wallet"
|
|
13
|
+
},
|
|
14
|
+
"bugs": {
|
|
15
|
+
"url": "https://github.com/iDos-Games/iDosGamesSDK_TS/issues"
|
|
16
|
+
},
|
|
17
|
+
"keywords": [
|
|
18
|
+
"idosgames",
|
|
19
|
+
"sdk",
|
|
20
|
+
"web3",
|
|
21
|
+
"wallet",
|
|
22
|
+
"wagmi",
|
|
23
|
+
"viem",
|
|
24
|
+
"walletconnect",
|
|
25
|
+
"solana",
|
|
26
|
+
"evm"
|
|
27
|
+
],
|
|
28
|
+
"publishConfig": {
|
|
29
|
+
"access": "public"
|
|
30
|
+
},
|
|
31
|
+
"sideEffects": false,
|
|
32
|
+
"main": "./dist/index.cjs",
|
|
33
|
+
"module": "./dist/index.js",
|
|
34
|
+
"types": "./dist/index.d.ts",
|
|
35
|
+
"exports": {
|
|
36
|
+
".": {
|
|
37
|
+
"types": "./dist/index.d.ts",
|
|
38
|
+
"import": "./dist/index.js",
|
|
39
|
+
"require": "./dist/index.cjs"
|
|
40
|
+
},
|
|
41
|
+
"./react": {
|
|
42
|
+
"types": "./dist/react/index.d.ts",
|
|
43
|
+
"import": "./dist/react/index.js",
|
|
44
|
+
"require": "./dist/react/index.cjs"
|
|
45
|
+
}
|
|
46
|
+
},
|
|
47
|
+
"files": [
|
|
48
|
+
"dist",
|
|
49
|
+
"README.md",
|
|
50
|
+
"LICENSE"
|
|
51
|
+
],
|
|
52
|
+
"scripts": {
|
|
53
|
+
"build": "tsup",
|
|
54
|
+
"typecheck": "tsc --noEmit -p tsconfig.json"
|
|
55
|
+
},
|
|
56
|
+
"//": "@idosgames/core не '*': опубликованный пакет обязан назвать диапазон, иначе установка wallet притянет любую версию core, включая будущую ломающую. На 0.x '^' даёт >=0.1.0 <0.2.0 — ровно ту зону, где core обещает совместимость (см. RELEASING.md). Поднимать при мажорном/минорном бампе core.",
|
|
57
|
+
"dependencies": {
|
|
58
|
+
"@idosgames/core": "^0.1.1",
|
|
59
|
+
"@solana/web3.js": "^1.98.4",
|
|
60
|
+
"viem": "^2.55.2"
|
|
61
|
+
},
|
|
62
|
+
"peerDependencies": {
|
|
63
|
+
"@solana/wallet-adapter-base": "^0.9.27",
|
|
64
|
+
"@solana/wallet-adapter-react": "^0.15.39",
|
|
65
|
+
"@tanstack/react-query": "^5.101.2",
|
|
66
|
+
"react": "^18.3.1 || ^19.0.0",
|
|
67
|
+
"wagmi": "^3.0.0"
|
|
68
|
+
},
|
|
69
|
+
"peerDependenciesMeta": {
|
|
70
|
+
"react": {
|
|
71
|
+
"optional": true
|
|
72
|
+
},
|
|
73
|
+
"wagmi": {
|
|
74
|
+
"optional": true
|
|
75
|
+
},
|
|
76
|
+
"@tanstack/react-query": {
|
|
77
|
+
"optional": true
|
|
78
|
+
},
|
|
79
|
+
"@solana/wallet-adapter-base": {
|
|
80
|
+
"optional": true
|
|
81
|
+
},
|
|
82
|
+
"@solana/wallet-adapter-react": {
|
|
83
|
+
"optional": true
|
|
84
|
+
}
|
|
85
|
+
},
|
|
86
|
+
"devDependencies": {
|
|
87
|
+
"@solana/wallet-adapter-base": "^0.9.27",
|
|
88
|
+
"@solana/wallet-adapter-react": "^0.15.39",
|
|
89
|
+
"@tanstack/react-query": "^5.101.2",
|
|
90
|
+
"@types/react": "^19.2.17",
|
|
91
|
+
"react": "^19.2.7",
|
|
92
|
+
"wagmi": "^3.7.2"
|
|
93
|
+
}
|
|
94
|
+
}
|
package/dist/chunk-Q6C5EFPV.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import {BaseError,encodeAbiParameters}from'viem';import {normalizeBlockchainCategory}from'@idosgames/core';function g(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 w(e,t){return {ok:false,stage:e,error:t}}var h=[{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:"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:"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:"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:[]}],k=[{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"}]}],A=[{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 b(e,t,n){return encodeAbiParameters([{type:"string"},{type:"string"},{type:"string"}],[e,t,normalizeBlockchainCategory(n)])}async function f(e,t){let{walletClient:n,publicClient:i,account:c}=e,o=await n.writeContract({address:t.address,abi:t.abi,functionName:t.functionName,args:t.args,account:c,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 I(e){let t=e.PlatformPoolAddress;return t||null}async function T(e,t,n,i){return await e.publicClient.readContract({address:t,abi:k,functionName:"allowance",args:[e.account,n]})>=i?null:f(e,{address:t,abi:k,functionName:"approve",args:[n,i]})}async function S(e){let{client:t,clients:n,network:i,tokenAddress:c,amount:o,titleID:p,category:u}=e,r=t.auth.context?.userID;if(!r)return a("approve","Not logged in.");let d=I(i);if(!d)return a("approve","Network has no PlatformPoolAddress.");if(o<=0n)return a("approve","Amount must be positive.");try{await T(n,c,d,o);}catch(m){return a("approve",g(m))}let s;try{s=await f(n,{address:d,abi:h,functionName:"depositERC20",args:[c,o,r,p,u??""]});}catch(m){return a("deposit-onchain",g(m))}let l=await t.blockchain.depositToken(i.NetworkID??"",s);return l.ok?{ok:true,onChainTxHash:s,data:l.data}:a("report",l.error,{onChainTxHash:s})}async function R(e){let{client:t,clients:n,network:i,nftContractAddress:c,tokenId:o,amount:p,titleID:u,category:r}=e,d=t.auth.context?.userID;if(!d)return a("deposit-onchain","Not logged in.");let s=I(i);if(!s)return a("deposit-onchain","Network has no PlatformPoolAddress.");if(p<=0n)return a("deposit-onchain","Amount must be positive.");let l=b(d,u,r),m;try{m=await f(n,{address:c,abi:A,functionName:"safeTransferFrom",args:[n.account,s,o,p,l]});}catch(E){return a("deposit-onchain",g(E))}let y=await t.blockchain.depositNFT(i.NetworkID??"",m);return y.ok?{ok:true,onChainTxHash:m,data:y.data}:a("report",y.error,{onChainTxHash:m})}async function H(e){let{client:t,clients:n,network:i,nftContractAddress:c,tokenId:o,titleID:p,category:u}=e,r=t.auth.context?.userID;if(!r)return a("deposit-onchain","Not logged in.");let d=I(i);if(!d)return a("deposit-onchain","Network has no PlatformPoolAddress.");let s=b(r,p,u),l;try{l=await f(n,{address:c,abi:x,functionName:"safeTransferFrom",args:[n.account,d,o,s]});}catch(y){return a("deposit-onchain",g(y))}let m=await t.blockchain.depositNFT(i.NetworkID??"",l);return m.ok?{ok:true,onChainTxHash:l,data:m.data}:a("report",m.error,{onChainTxHash:l})}async function C(e,t){return f(e,{address:t.ContractAddress,abi:h,functionName:"withdrawERC20",args:[t.TokenAddress,t.WalletAddress,BigInt(t.Amount??"0"),BigInt(t.BurnAmount??"0"),BigInt(t.Nonce??"0"),t.Signature??"0x",t.UserID??"",t.TitleID??"",t.Category??"",BigInt(t.Deadline??"0")]})}async function W(e,t){return f(e,{address:t.ContractAddress,abi:D,functionName:"withdrawERC1155Mint",args:[t.TokenAddress,t.WalletAddress,BigInt(t.TokenId??"0"),BigInt(t.Amount??"0"),BigInt(t.Nonce??"0"),t.Signature??"0x",t.UserID??"",t.TitleID??"",t.Category??"",BigInt(t.Deadline??"0")]})}async function M(e,t){return f(e,{address:t.ContractAddress,abi:D,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 F(e){let{client:t,clients:n,currencyID:i,networkID:c,walletAddress:o,amount:p,category:u}=e,r=await t.blockchain.requestTokenWithdrawal(i,c,o,p,u);if(!r.ok)return a("request",r.error);let d=r.data.EvmSignature,s=r.data.TitleTransactionID??void 0;if(!d)return a("request","Withdrawal response carried no EVM signature.",{titleTransactionID:s});let l;try{l=await C(n,d);}catch(y){return a("withdraw-onchain",g(y),{titleTransactionID:s})}let m=await v(t,s,l);return m.ok?{ok:true,onChainTxHash:l,data:r.data}:m}async function L(e){let{client:t,clients:n,itemID:i,networkID:c,walletAddress:o,amount:p,category:u}=e,r=await t.blockchain.requestNFTWithdrawal(i,c,o,p,u);if(!r.ok)return a("request",r.error);let d=r.data.EvmSignature,s=r.data.TitleTransactionID??void 0;if(!d)return a("request","Withdrawal response carried no EVM signature.",{titleTransactionID:s});let l;try{l=await W(n,d);}catch(y){return a("withdraw-onchain",g(y),{titleTransactionID:s})}let m=await v(t,s,l);return m.ok?{ok:true,onChainTxHash:l,data:r.data}:m}async function v(e,t,n){if(!t)return a("confirm","Missing TitleTransactionID.",{onChainTxHash:n});let i=await e.blockchain.confirmWithdrawal(t,n);return i.ok?{ok:true,onChainTxHash:n,data:i.data}:a("confirm",i.error,{onChainTxHash:n,titleTransactionID:t})}async function G(e){let{client:t,clients:n,networkID:i}=e,c=e.walletAddress??n.account,o=await t.auth.requestWalletChallenge(c,i);if(!o.ok)return w("challenge",o.error);let p;try{p=await n.walletClient.signMessage({account:n.account,message:o.data.Message});}catch(r){return w("sign",g(r))}let u=await t.auth.loginWithWallet(c,i,p);return u.ok?{ok:true,data:u.data}:w("login",u.error)}async function U(e){let{client:t,adapter:n,network:i,mint:c,amountRaw:o,titleID:p,category:u}=e,r=t.auth.context?.userID;if(!r)return a("deposit-onchain","Not logged in.");if(o<=0n)return a("deposit-onchain","Amount must be positive.");let d;try{d=await n.depositSpl({mint:c,amountRaw:o,userID:r,titleID:p,category:normalizeBlockchainCategory(u)});}catch(l){return a("deposit-onchain",g(l))}let s=await t.blockchain.depositToken(i.NetworkID??"",d);return s.ok?{ok:true,onChainTxHash:d,data:s.data}:a("report",s.error,{onChainTxHash:d})}async function O(e){let{client:t,adapter:n,currencyID:i,networkID:c,walletAddress:o,amount:p,category:u}=e,r=await t.blockchain.requestTokenWithdrawal(i,c,o,p,u);if(!r.ok)return a("request",r.error);let d=r.data.SolanaSignature,s=r.data.TitleTransactionID??void 0;if(!d)return a("request","Withdrawal response carried no Solana signature.",{titleTransactionID:s});let l;try{l=await n.submitWithdrawal(d);}catch(y){return a("withdraw-onchain",g(y),{titleTransactionID:s})}if(!s)return a("confirm","Missing TitleTransactionID.",{onChainTxHash:l});let m=await t.blockchain.confirmWithdrawal(s,l);return m.ok?{ok:true,onChainTxHash:l,data:r.data}:a("confirm",m.error,{onChainTxHash:l,titleTransactionID:s})}async function z(e){let{client:t,networkID:n,walletAddress:i,signMessage:c}=e,o=await t.auth.requestWalletChallenge(i,n);if(!o.ok)return w("challenge",o.error);let p;try{let r=await c(new TextEncoder().encode(o.data.Message));p=V(r);}catch(r){return w("sign",g(r))}let u=await t.auth.loginWithWallet(i,n,p);return u.ok?{ok:true,data:u.data}:w("login",u.error)}function V(e){let t="0x";for(let n of e)t+=n.toString(16).padStart(2,"0");return t}export{g as a,a as b,w as c,h as d,k as e,A as f,x as g,b as h,f as i,T as j,S as k,R as l,H as m,C as n,W as o,M as p,F as q,L as r,G as s,U as t,O as u,z as v};
|