@idosgames/wallet 0.1.6 → 0.1.8

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.
@@ -0,0 +1,70 @@
1
+ import { SolanaWithdrawalSignature, IDosGamesClient, BlockchainNetworkDefinition, DepositTokenResponse, TokenWithdrawalResponse } from '@idosgames/core';
2
+ import { a as BridgeResult } from './types-C11zAA05.cjs';
3
+
4
+ /**
5
+ * The on-chain half of the Solana bridge, delegated to the title's own program integration.
6
+ *
7
+ * Unlike EVM — where the RewardPool ABI is fully known and viem builds the calls — the Solana
8
+ * RewardPool is a custom program whose instruction/account layout (DepositSpl, withdraw_spl + the
9
+ * ed25519 sig-verify instruction) lives in that program's IDL, NOT in this client SDK. So the
10
+ * bridge asks you to provide these two calls, built with your program's IDL / `@solana/web3.js`
11
+ * (or Anchor) against the connected wallet from `@solana/wallet-adapter-react`. The SDK-side
12
+ * orchestration (request → submit → confirm, deposit → report) is identical to EVM and handled by
13
+ * {@link depositTokenSolana} / {@link withdrawTokenSolana}.
14
+ */
15
+ interface SolanaProgramAdapter {
16
+ /**
17
+ * Builds and sends the on-chain `DepositSpl` transfer of `amountRaw` base units of `mint` into
18
+ * the platform program pool, embedding the identifiers the backend reads back
19
+ * (`GetDepositSplCallDetailsBySignature` verifies `userID`). Returns the transaction signature.
20
+ */
21
+ depositSpl(params: {
22
+ mint: string;
23
+ amountRaw: bigint;
24
+ userID: string;
25
+ titleID: string;
26
+ category: string;
27
+ }): Promise<string>;
28
+ /**
29
+ * Builds and sends the on-chain `withdraw_spl` transaction from a server-issued signature
30
+ * payload — including the ed25519 sig-verify instruction at `SigIxIndex` carrying
31
+ * `Ed25519PublicKey`/`Ed25519Message`/`SignatureHex`. Returns the transaction signature.
32
+ */
33
+ submitWithdrawal(sig: SolanaWithdrawalSignature): Promise<string>;
34
+ }
35
+
36
+ interface DepositTokenSolanaParams {
37
+ client: IDosGamesClient;
38
+ adapter: SolanaProgramAdapter;
39
+ network: BlockchainNetworkDefinition;
40
+ /** SPL mint of the token being deposited. */
41
+ mint: string;
42
+ /** Raw base-unit amount (already scaled by the mint's decimals). */
43
+ amountRaw: bigint;
44
+ titleID: string;
45
+ category?: string;
46
+ }
47
+ /**
48
+ * Full Solana token-deposit flow: your {@link SolanaProgramAdapter.depositSpl} sends the on-chain
49
+ * transfer, then `client.blockchain.depositToken` reports the signature so the backend verifies
50
+ * and credits the in-game balance. Mirrors {@link depositTokenEvm}.
51
+ */
52
+ declare function depositTokenSolana(params: DepositTokenSolanaParams): Promise<BridgeResult<DepositTokenResponse>>;
53
+ interface WithdrawTokenSolanaParams {
54
+ client: IDosGamesClient;
55
+ adapter: SolanaProgramAdapter;
56
+ currencyID: string;
57
+ networkID: string;
58
+ walletAddress: string;
59
+ amount: string;
60
+ category?: string;
61
+ }
62
+ /**
63
+ * Full Solana token-withdrawal flow: `requestTokenWithdrawal` → your
64
+ * {@link SolanaProgramAdapter.submitWithdrawal} sends the `withdraw_spl` tx → `confirmWithdrawal`.
65
+ * Same recovery semantics as EVM: a post-request failure carries `titleTransactionID` (already
66
+ * debited — retry, don't re-request). Mirrors {@link withdrawTokenEvm}.
67
+ */
68
+ declare function withdrawTokenSolana(params: WithdrawTokenSolanaParams): Promise<BridgeResult<TokenWithdrawalResponse>>;
69
+
70
+ export { type DepositTokenSolanaParams as D, type SolanaProgramAdapter as S, type WithdrawTokenSolanaParams as W, depositTokenSolana as d, withdrawTokenSolana as w };
@@ -0,0 +1,70 @@
1
+ import { SolanaWithdrawalSignature, IDosGamesClient, BlockchainNetworkDefinition, DepositTokenResponse, TokenWithdrawalResponse } from '@idosgames/core';
2
+ import { a as BridgeResult } from './types-C11zAA05.js';
3
+
4
+ /**
5
+ * The on-chain half of the Solana bridge, delegated to the title's own program integration.
6
+ *
7
+ * Unlike EVM — where the RewardPool ABI is fully known and viem builds the calls — the Solana
8
+ * RewardPool is a custom program whose instruction/account layout (DepositSpl, withdraw_spl + the
9
+ * ed25519 sig-verify instruction) lives in that program's IDL, NOT in this client SDK. So the
10
+ * bridge asks you to provide these two calls, built with your program's IDL / `@solana/web3.js`
11
+ * (or Anchor) against the connected wallet from `@solana/wallet-adapter-react`. The SDK-side
12
+ * orchestration (request → submit → confirm, deposit → report) is identical to EVM and handled by
13
+ * {@link depositTokenSolana} / {@link withdrawTokenSolana}.
14
+ */
15
+ interface SolanaProgramAdapter {
16
+ /**
17
+ * Builds and sends the on-chain `DepositSpl` transfer of `amountRaw` base units of `mint` into
18
+ * the platform program pool, embedding the identifiers the backend reads back
19
+ * (`GetDepositSplCallDetailsBySignature` verifies `userID`). Returns the transaction signature.
20
+ */
21
+ depositSpl(params: {
22
+ mint: string;
23
+ amountRaw: bigint;
24
+ userID: string;
25
+ titleID: string;
26
+ category: string;
27
+ }): Promise<string>;
28
+ /**
29
+ * Builds and sends the on-chain `withdraw_spl` transaction from a server-issued signature
30
+ * payload — including the ed25519 sig-verify instruction at `SigIxIndex` carrying
31
+ * `Ed25519PublicKey`/`Ed25519Message`/`SignatureHex`. Returns the transaction signature.
32
+ */
33
+ submitWithdrawal(sig: SolanaWithdrawalSignature): Promise<string>;
34
+ }
35
+
36
+ interface DepositTokenSolanaParams {
37
+ client: IDosGamesClient;
38
+ adapter: SolanaProgramAdapter;
39
+ network: BlockchainNetworkDefinition;
40
+ /** SPL mint of the token being deposited. */
41
+ mint: string;
42
+ /** Raw base-unit amount (already scaled by the mint's decimals). */
43
+ amountRaw: bigint;
44
+ titleID: string;
45
+ category?: string;
46
+ }
47
+ /**
48
+ * Full Solana token-deposit flow: your {@link SolanaProgramAdapter.depositSpl} sends the on-chain
49
+ * transfer, then `client.blockchain.depositToken` reports the signature so the backend verifies
50
+ * and credits the in-game balance. Mirrors {@link depositTokenEvm}.
51
+ */
52
+ declare function depositTokenSolana(params: DepositTokenSolanaParams): Promise<BridgeResult<DepositTokenResponse>>;
53
+ interface WithdrawTokenSolanaParams {
54
+ client: IDosGamesClient;
55
+ adapter: SolanaProgramAdapter;
56
+ currencyID: string;
57
+ networkID: string;
58
+ walletAddress: string;
59
+ amount: string;
60
+ category?: string;
61
+ }
62
+ /**
63
+ * Full Solana token-withdrawal flow: `requestTokenWithdrawal` → your
64
+ * {@link SolanaProgramAdapter.submitWithdrawal} sends the `withdraw_spl` tx → `confirmWithdrawal`.
65
+ * Same recovery semantics as EVM: a post-request failure carries `titleTransactionID` (already
66
+ * debited — retry, don't re-request). Mirrors {@link withdrawTokenEvm}.
67
+ */
68
+ declare function withdrawTokenSolana(params: WithdrawTokenSolanaParams): Promise<BridgeResult<TokenWithdrawalResponse>>;
69
+
70
+ export { type DepositTokenSolanaParams as D, type SolanaProgramAdapter as S, type WithdrawTokenSolanaParams as W, depositTokenSolana as d, withdrawTokenSolana as w };
@@ -0,0 +1,64 @@
1
+ import { Chain } from 'viem';
2
+
3
+ declare const mainnet: Chain;
4
+ declare const bsc: Chain;
5
+ declare const polygon: Chain;
6
+ declare const base: Chain;
7
+ declare const arbitrum: Chain;
8
+ declare const optimism: Chain;
9
+ declare const sepolia: Chain;
10
+ declare const polygonAmoy: Chain;
11
+ /** Every chain declared here, keyed by NetworkID-style name — handy for a title-driven picker. */
12
+ declare const idosChains: {
13
+ readonly mainnet: Chain;
14
+ readonly bsc: Chain;
15
+ readonly polygon: Chain;
16
+ readonly base: Chain;
17
+ readonly arbitrum: Chain;
18
+ readonly optimism: Chain;
19
+ readonly sepolia: Chain;
20
+ readonly polygonAmoy: Chain;
21
+ };
22
+ /** Look up a declared chain by its EVM chain id (e.g. from the title's blockchain config). */
23
+ declare function chainById(id: number): Chain | undefined;
24
+ /**
25
+ * A chain in the CAIP shape Reown AppKit expects.
26
+ *
27
+ * AppKit ships its own network list at `@reown/appkit/networks`, but that module is
28
+ * `export * from "viem/chains"` — the very barrel this file exists to avoid. Converting our own
29
+ * chains keeps AppKit working without dragging `tempo`/`ox` (and its BigInt `**`) into the bundle.
30
+ */
31
+ type AppKitEvmNetwork = Chain & {
32
+ chainNamespace: "eip155";
33
+ caipNetworkId: `eip155:${number}`;
34
+ };
35
+ /** Wraps a chain in the CAIP fields AppKit needs. */
36
+ declare function toAppKitNetwork(chain: Chain): AppKitEvmNetwork;
37
+ interface AppKitSolanaNetwork {
38
+ id: string;
39
+ name: string;
40
+ network: string;
41
+ nativeCurrency: {
42
+ name: string;
43
+ symbol: string;
44
+ decimals: number;
45
+ };
46
+ rpcUrls: {
47
+ default: {
48
+ http: string[];
49
+ };
50
+ };
51
+ blockExplorers?: {
52
+ default: {
53
+ name: string;
54
+ url: string;
55
+ };
56
+ };
57
+ testnet: boolean;
58
+ chainNamespace: "solana";
59
+ caipNetworkId: `solana:${string}`;
60
+ }
61
+ declare const solanaMainnet: AppKitSolanaNetwork;
62
+ declare const solanaDevnet: AppKitSolanaNetwork;
63
+
64
+ export { type AppKitEvmNetwork as A, type AppKitSolanaNetwork as a, arbitrum as b, base as c, bsc as d, chainById as e, polygonAmoy as f, solanaDevnet as g, solanaMainnet as h, idosChains as i, mainnet as m, optimism as o, polygon as p, sepolia as s, toAppKitNetwork as t };
@@ -0,0 +1,64 @@
1
+ import { Chain } from 'viem';
2
+
3
+ declare const mainnet: Chain;
4
+ declare const bsc: Chain;
5
+ declare const polygon: Chain;
6
+ declare const base: Chain;
7
+ declare const arbitrum: Chain;
8
+ declare const optimism: Chain;
9
+ declare const sepolia: Chain;
10
+ declare const polygonAmoy: Chain;
11
+ /** Every chain declared here, keyed by NetworkID-style name — handy for a title-driven picker. */
12
+ declare const idosChains: {
13
+ readonly mainnet: Chain;
14
+ readonly bsc: Chain;
15
+ readonly polygon: Chain;
16
+ readonly base: Chain;
17
+ readonly arbitrum: Chain;
18
+ readonly optimism: Chain;
19
+ readonly sepolia: Chain;
20
+ readonly polygonAmoy: Chain;
21
+ };
22
+ /** Look up a declared chain by its EVM chain id (e.g. from the title's blockchain config). */
23
+ declare function chainById(id: number): Chain | undefined;
24
+ /**
25
+ * A chain in the CAIP shape Reown AppKit expects.
26
+ *
27
+ * AppKit ships its own network list at `@reown/appkit/networks`, but that module is
28
+ * `export * from "viem/chains"` — the very barrel this file exists to avoid. Converting our own
29
+ * chains keeps AppKit working without dragging `tempo`/`ox` (and its BigInt `**`) into the bundle.
30
+ */
31
+ type AppKitEvmNetwork = Chain & {
32
+ chainNamespace: "eip155";
33
+ caipNetworkId: `eip155:${number}`;
34
+ };
35
+ /** Wraps a chain in the CAIP fields AppKit needs. */
36
+ declare function toAppKitNetwork(chain: Chain): AppKitEvmNetwork;
37
+ interface AppKitSolanaNetwork {
38
+ id: string;
39
+ name: string;
40
+ network: string;
41
+ nativeCurrency: {
42
+ name: string;
43
+ symbol: string;
44
+ decimals: number;
45
+ };
46
+ rpcUrls: {
47
+ default: {
48
+ http: string[];
49
+ };
50
+ };
51
+ blockExplorers?: {
52
+ default: {
53
+ name: string;
54
+ url: string;
55
+ };
56
+ };
57
+ testnet: boolean;
58
+ chainNamespace: "solana";
59
+ caipNetworkId: `solana:${string}`;
60
+ }
61
+ declare const solanaMainnet: AppKitSolanaNetwork;
62
+ declare const solanaDevnet: AppKitSolanaNetwork;
63
+
64
+ export { type AppKitEvmNetwork as A, type AppKitSolanaNetwork as a, arbitrum as b, base as c, bsc as d, chainById as e, polygonAmoy as f, solanaDevnet as g, solanaMainnet as h, idosChains as i, mainnet as m, optimism as o, polygon as p, sepolia as s, toAppKitNetwork as t };
@@ -0,0 +1 @@
1
+ import {b,a,c}from'./chunk-K62NMX3A.js';import {normalizeBlockchainCategory}from'@idosgames/core';async function f(i){let{client:e,adapter:n,network:g,mint:p,amountRaw:o,titleID:d,category:s}=i,t=e.auth.context?.userID;if(!t)return b("deposit-onchain","Not logged in.");if(o<=0n)return b("deposit-onchain","Amount must be positive.");let l;try{l=await n.depositSpl({mint:p,amountRaw:o,userID:t,titleID:d,category:normalizeBlockchainCategory(s)});}catch(c){return b("deposit-onchain",a(c))}let r=await e.blockchain.depositToken(g.NetworkID??"",l);return r.ok?{ok:true,onChainTxHash:l,data:r.data}:b("report",r.error,{onChainTxHash:l})}async function S(i){let{client:e,adapter:n,currencyID:g,networkID:p,walletAddress:o,amount:d,category:s}=i,t=await e.blockchain.requestTokenWithdrawal(g,p,o,d,s);if(!t.ok)return b("request",t.error);let l=t.data.SolanaSignature,r=t.data.TitleTransactionID??void 0;if(!l)return b("request","Withdrawal response carried no Solana signature.",{titleTransactionID:r});let c;try{c=await n.submitWithdrawal(l);}catch(w){return b("withdraw-onchain",a(w),{titleTransactionID:r})}if(!r)return b("confirm","Missing TitleTransactionID.",{onChainTxHash:c});let h=await e.blockchain.confirmWithdrawal(r,c);return h.ok?{ok:true,onChainTxHash:c,data:t.data}:b("confirm",h.error,{onChainTxHash:c,titleTransactionID:r})}async function y(i){let{client:e,networkID:n,walletAddress:g,signMessage:p}=i,o=await e.auth.requestWalletChallenge(g,n);if(!o.ok)return c("challenge",o.error);let d;try{let t=await p(new TextEncoder().encode(o.data.Message));d=T(t);}catch(t){return c("sign",a(t))}let s=await e.auth.loginWithWallet(g,n,d);return s.ok?{ok:true,data:s.data}:c("login",s.error)}function T(i){let e="0x";for(let n of i)e+=n.toString(16).padStart(2,"0");return e}export{f as a,S as b,y as c};
@@ -0,0 +1 @@
1
+ import {b as b$1,a,c}from'./chunk-K62NMX3A.js';import {encodeAbiParameters}from'viem';import {normalizeBlockchainCategory}from'@idosgames/core';var w=[{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:[]}],k=[{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:[]}],b=[{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"}]}],D=[{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 A(e,t,n){return encodeAbiParameters([{type:"string"},{type:"string"},{type:"string"}],[e,t,normalizeBlockchainCategory(n)])}async function f(e,t){let{walletClient:n,publicClient:r,account:m}=e,o=await n.writeContract({address:t.address,abi:t.abi,functionName:t.functionName,args:t.args,account:m,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 I(e){let t=e.RewardPoolAddress;return t||null}async function C(e,t,n,r){return await e.publicClient.readContract({address:t,abi:b,functionName:"allowance",args:[e.account,n]})>=r?null:f(e,{address:t,abi:b,functionName:"approve",args:[n,r]})}async function P(e){let{client:t,clients:n,network:r,tokenAddress:m,amount:o,titleID:u,category:l}=e,i=t.auth.context?.userID;if(!i)return b$1("approve","Not logged in.");let p=I(r);if(!p)return b$1("approve","Network has no RewardPoolAddress.");if(o<=0n)return b$1("approve","Amount must be positive.");try{await C(n,m,p,o);}catch(d){return b$1("approve",a(d))}let c;try{c=await f(n,{address:p,abi:w,functionName:"depositERC20",args:[m,o,i,u,l??""]});}catch(d){return b$1("deposit-onchain",a(d))}let s=await t.blockchain.depositToken(r.NetworkID??"",c);return s.ok?{ok:true,onChainTxHash:c,data:s.data}:b$1("report",s.error,{onChainTxHash:c})}async function R(e){let{client:t,clients:n,network:r,nftContractAddress:m,tokenId:o,amount:u,titleID:l,category:i}=e,p=t.auth.context?.userID;if(!p)return b$1("deposit-onchain","Not logged in.");let c=I(r);if(!c)return b$1("deposit-onchain","Network has no RewardPoolAddress.");if(u<=0n)return b$1("deposit-onchain","Amount must be positive.");let s=A(p,l,i),d;try{d=await f(n,{address:m,abi:D,functionName:"safeTransferFrom",args:[n.account,c,o,u,s]});}catch(T){return b$1("deposit-onchain",a(T))}let g=await t.blockchain.depositNFT(r.NetworkID??"",d);return g.ok?{ok:true,onChainTxHash:d,data:g.data}:b$1("report",g.error,{onChainTxHash:d})}async function H(e){let{client:t,clients:n,network:r,nftContractAddress:m,tokenId:o,titleID:u,category:l}=e,i=t.auth.context?.userID;if(!i)return b$1("deposit-onchain","Not logged in.");let p=I(r);if(!p)return b$1("deposit-onchain","Network has no RewardPoolAddress.");let c=A(i,u,l),s;try{s=await f(n,{address:m,abi:v,functionName:"safeTransferFrom",args:[n.account,p,o,c]});}catch(g){return b$1("deposit-onchain",a(g))}let d=await t.blockchain.depositNFT(r.NetworkID??"",s);return d.ok?{ok:true,onChainTxHash:s,data:d.data}:b$1("report",d.error,{onChainTxHash:s})}async function E(e,t){return f(e,{address:t.ContractAddress,abi:w,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 x(e,t){return f(e,{address:t.ContractAddress,abi:k,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:k,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:r,networkID:m,walletAddress:o,amount:u,category:l}=e,i=await t.blockchain.requestTokenWithdrawal(r,m,o,u,l);if(!i.ok)return b$1("request",i.error);let p=i.data.EvmSignature,c=i.data.TitleTransactionID??void 0;if(!p)return b$1("request","Withdrawal response carried no EVM signature.",{titleTransactionID:c});let s;try{s=await E(n,p);}catch(g){return b$1("withdraw-onchain",a(g),{titleTransactionID:c})}let d=await N(t,c,s);return d.ok?{ok:true,onChainTxHash:s,data:i.data}:d}async function S(e){let{client:t,clients:n,itemID:r,networkID:m,walletAddress:o,amount:u,category:l}=e,i=await t.blockchain.requestNFTWithdrawal(r,m,o,u,l);if(!i.ok)return b$1("request",i.error);let p=i.data.EvmSignature,c=i.data.TitleTransactionID??void 0;if(!p)return b$1("request","Withdrawal response carried no EVM signature.",{titleTransactionID:c});let s;try{s=await x(n,p);}catch(g){return b$1("withdraw-onchain",a(g),{titleTransactionID:c})}let d=await N(t,c,s);return d.ok?{ok:true,onChainTxHash:s,data:i.data}:d}async function N(e,t,n){if(!t)return b$1("confirm","Missing TitleTransactionID.",{onChainTxHash:n});let r=await e.blockchain.confirmWithdrawal(t,n);return r.ok?{ok:true,onChainTxHash:n,data:r.data}:b$1("confirm",r.error,{onChainTxHash:n,titleTransactionID:t})}async function G(e){let{client:t,clients:n,networkID:r}=e,m=e.walletAddress??n.account,o=await t.auth.requestWalletChallenge(m,r);if(!o.ok)return c("challenge",o.error);let u;try{u=await n.walletClient.signMessage({account:n.account,message:o.data.Message});}catch(i){return c("sign",a(i))}let l=await t.auth.loginWithWallet(m,r,u);return l.ok?{ok:true,data:l.data}:c("login",l.error)}export{w as a,b,D as c,v as d,A as e,f,C as g,P as h,R as i,H as j,E as k,x as l,M as m,F as n,S as o,G as p};
@@ -0,0 +1,2 @@
1
+ var a={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"}}},n={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"}}},o={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"}}},r={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"}}},s={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"}}},l={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"}}},i={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"}}},p={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"}}},c={mainnet:a,bsc:n,polygon:o,base:r,arbitrum:s,optimism:l,sepolia:i,polygonAmoy:p};function m(e){return Object.values(c).find(t=>t.id===e)}function d(e){return {...e,chainNamespace:"eip155",caipNetworkId:`eip155:${e.id}`}}var h={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"},u={id:"EtWTRABZaYq6iMfeYKouRu166VU2xqa1",name:"Solana Devnet",network:"solana-devnet",nativeCurrency:{name:"Solana",symbol:"SOL",decimals:9},rpcUrls:{default:{http:["https://api.devnet.solana.com"]}},blockExplorers:{default:{name:"Solscan",url:"https://solscan.io"}},testnet:true,chainNamespace:"solana",caipNetworkId:"solana:EtWTRABZaYq6iMfeYKouRu166VU2xqa1"};
2
+ export{a,n as b,o as c,r as d,s as e,l as f,i as g,p as h,c as i,m as j,d as k,h as l,u as m};
@@ -0,0 +1 @@
1
+ import {BaseError}from'viem';function a(e){return e instanceof BaseError?e.shortMessage:e instanceof Error?e.message:String(e)}function o(e,r,t){return {ok:false,stage:e,error:r,...t}}function g(e,r){return {ok:false,stage:e,error:r}}export{a,o as b,g as c};
@@ -0,0 +1 @@
1
+ var t=null;function e(p){t=p;}function i(){return t}export{e as a,i as b};
package/dist/index.cjs CHANGED
@@ -1,2 +1,2 @@
1
- 'use strict';var viem=require('viem'),core=require('@idosgames/core');function g(t){return t instanceof viem.BaseError?t.shortMessage:t instanceof Error?t.message:String(t)}function a(t,e,n){return {ok:false,stage:t,error:e,...n}}function h(t,e){return {ok:false,stage:t,error:e}}var B={id:1,name:"Ethereum",nativeCurrency:{name:"Ether",symbol:"ETH",decimals:18},rpcUrls:{default:{http:["https://eth.llamarpc.com"]}},blockExplorers:{default:{name:"Etherscan",url:"https://etherscan.io"}}},P={id:56,name:"BNB Smart Chain",nativeCurrency:{name:"BNB",symbol:"BNB",decimals:18},rpcUrls:{default:{http:["https://bsc-dataseed.binance.org"]}},blockExplorers:{default:{name:"BscScan",url:"https://bscscan.com"}}},S={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"}}},R={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"}}},H={id:42161,name:"Arbitrum One",nativeCurrency:{name:"Ether",symbol:"ETH",decimals:18},rpcUrls:{default:{http:["https://arb1.arbitrum.io/rpc"]}},blockExplorers:{default:{name:"Arbiscan",url:"https://arbiscan.io"}}},M={id:10,name:"OP Mainnet",nativeCurrency:{name:"Ether",symbol:"ETH",decimals:18},rpcUrls:{default:{http:["https://mainnet.optimism.io"]}},blockExplorers:{default:{name:"Optimistic Etherscan",url:"https://optimistic.etherscan.io"}}},F={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"}}},L={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"}}},G={mainnet:B,bsc:P,polygon:S,base:R,arbitrum:H,optimism:M,sepolia:F,polygonAmoy:L};function ne(t){return Object.values(G).find(e=>e.id===t)}function ae(t){return {...t,chainNamespace:"eip155",caipNetworkId:`eip155:${t.id}`}}var w=[{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:[]}],x=[{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:[]}],b=[{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"}]}],C=[{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"}]}],D=[{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 k(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:p}=t,o=await n.writeContract({address:e.address,abi:e.abi,functionName:e.functionName,args:e.args,account:p,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 A(t){let e=t.RewardPoolAddress;return e||null}async function E(t,e,n,i){return await t.publicClient.readContract({address:e,abi:b,functionName:"allowance",args:[t.account,n]})>=i?null:f(t,{address:e,abi:b,functionName:"approve",args:[n,i]})}async function O(t){let{client:e,clients:n,network:i,tokenAddress:p,amount:o,titleID:d,category:m}=t,r=e.auth.context?.userID;if(!r)return a("approve","Not logged in.");let c=A(i);if(!c)return a("approve","Network has no RewardPoolAddress.");if(o<=0n)return a("approve","Amount must be positive.");try{await E(n,p,c,o);}catch(u){return a("approve",g(u))}let s;try{s=await f(n,{address:c,abi:w,functionName:"depositERC20",args:[p,o,r,d,m??""]});}catch(u){return a("deposit-onchain",g(u))}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 K(t){let{client:e,clients:n,network:i,nftContractAddress:p,tokenId:o,amount:d,titleID:m,category:r}=t,c=e.auth.context?.userID;if(!c)return a("deposit-onchain","Not logged in.");let s=A(i);if(!s)return a("deposit-onchain","Network has no RewardPoolAddress.");if(d<=0n)return a("deposit-onchain","Amount must be positive.");let l=k(c,m,r),u;try{u=await f(n,{address:p,abi:C,functionName:"safeTransferFrom",args:[n.account,s,o,d,l]});}catch(W){return a("deposit-onchain",g(W))}let y=await e.blockchain.depositNFT(i.NetworkID??"",u);return y.ok?{ok:true,onChainTxHash:u,data:y.data}:a("report",y.error,{onChainTxHash:u})}async function $(t){let{client:e,clients:n,network:i,nftContractAddress:p,tokenId:o,titleID:d,category:m}=t,r=e.auth.context?.userID;if(!r)return a("deposit-onchain","Not logged in.");let c=A(i);if(!c)return a("deposit-onchain","Network has no RewardPoolAddress.");let s=k(r,d,m),l;try{l=await f(n,{address:p,abi:D,functionName:"safeTransferFrom",args:[n.account,c,o,s]});}catch(y){return a("deposit-onchain",g(y))}let u=await e.blockchain.depositNFT(i.NetworkID??"",l);return u.ok?{ok:true,onChainTxHash:l,data:u.data}:a("report",u.error,{onChainTxHash:l})}async function T(t,e){return f(t,{address:e.ContractAddress,abi:w,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 I(t,e){return f(t,{address:e.ContractAddress,abi:x,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 z(t,e){return f(t,{address:e.ContractAddress,abi:x,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 V(t){let{client:e,clients:n,currencyID:i,networkID:p,walletAddress:o,amount:d,category:m}=t,r=await e.blockchain.requestTokenWithdrawal(i,p,o,d,m);if(!r.ok)return a("request",r.error);let c=r.data.EvmSignature,s=r.data.TitleTransactionID??void 0;if(!c)return a("request","Withdrawal response carried no EVM signature.",{titleTransactionID:s});let l;try{l=await T(n,c);}catch(y){return a("withdraw-onchain",g(y),{titleTransactionID:s})}let u=await v(e,s,l);return u.ok?{ok:true,onChainTxHash:l,data:r.data}:u}async function j(t){let{client:e,clients:n,itemID:i,networkID:p,walletAddress:o,amount:d,category:m}=t,r=await e.blockchain.requestNFTWithdrawal(i,p,o,d,m);if(!r.ok)return a("request",r.error);let c=r.data.EvmSignature,s=r.data.TitleTransactionID??void 0;if(!c)return a("request","Withdrawal response carried no EVM signature.",{titleTransactionID:s});let l;try{l=await I(n,c);}catch(y){return a("withdraw-onchain",g(y),{titleTransactionID:s})}let u=await v(e,s,l);return u.ok?{ok:true,onChainTxHash:l,data:r.data}:u}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 J(t){let{client:e,clients:n,networkID:i}=t,p=t.walletAddress??n.account,o=await e.auth.requestWalletChallenge(p,i);if(!o.ok)return h("challenge",o.error);let d;try{d=await n.walletClient.signMessage({account:n.account,message:o.data.Message});}catch(r){return h("sign",g(r))}let m=await e.auth.loginWithWallet(p,i,d);return m.ok?{ok:true,data:m.data}:h("login",m.error)}async function X(t){let{client:e,adapter:n,network:i,mint:p,amountRaw:o,titleID:d,category:m}=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 c;try{c=await n.depositSpl({mint:p,amountRaw:o,userID:r,titleID:d,category:core.normalizeBlockchainCategory(m)});}catch(l){return a("deposit-onchain",g(l))}let s=await e.blockchain.depositToken(i.NetworkID??"",c);return s.ok?{ok:true,onChainTxHash:c,data:s.data}:a("report",s.error,{onChainTxHash:c})}async function Y(t){let{client:e,adapter:n,currencyID:i,networkID:p,walletAddress:o,amount:d,category:m}=t,r=await e.blockchain.requestTokenWithdrawal(i,p,o,d,m);if(!r.ok)return a("request",r.error);let c=r.data.SolanaSignature,s=r.data.TitleTransactionID??void 0;if(!c)return a("request","Withdrawal response carried no Solana signature.",{titleTransactionID:s});let l;try{l=await n.submitWithdrawal(c);}catch(y){return a("withdraw-onchain",g(y),{titleTransactionID:s})}if(!s)return a("confirm","Missing TitleTransactionID.",{onChainTxHash:l});let u=await e.blockchain.confirmWithdrawal(s,l);return u.ok?{ok:true,onChainTxHash:l,data:r.data}:a("confirm",u.error,{onChainTxHash:l,titleTransactionID:s})}async function Z(t){let{client:e,networkID:n,walletAddress:i,signMessage:p}=t,o=await e.auth.requestWalletChallenge(i,n);if(!o.ok)return h("challenge",o.error);let d;try{let r=await p(new TextEncoder().encode(o.data.Message));d=_(r);}catch(r){return h("sign",g(r))}let m=await e.auth.loginWithWallet(i,n,d);return m.ok?{ok:true,data:m.data}:h("login",m.error)}function _(t){let e="0x";for(let n of t)e+=n.toString(16).padStart(2,"0");return e}
2
- exports.arbitrum=H;exports.base=R;exports.bridgeFail=a;exports.bsc=P;exports.chainById=ne;exports.depositNftEvm=K;exports.depositNftEvm721=$;exports.depositTokenEvm=O;exports.depositTokenSolana=X;exports.encodeNftDepositData=k;exports.ensureErc20Allowance=E;exports.erc1155Abi=C;exports.erc20Abi=b;exports.erc721Abi=D;exports.idosChains=G;exports.loginWithWalletEvm=J;exports.loginWithWalletSolana=Z;exports.mainnet=B;exports.optimism=M;exports.polygon=S;exports.polygonAmoy=L;exports.rewardPoolAbi=w;exports.sepolia=F;exports.submitEvmNftWithdrawal=I;exports.submitEvmNftWithdrawal721=z;exports.submitEvmTokenWithdrawal=T;exports.toAppKitNetwork=ae;exports.toErrorMessage=g;exports.walletLoginFail=h;exports.withdrawNftEvm=j;exports.withdrawTokenEvm=V;exports.withdrawTokenSolana=Y;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 h(t,e){return {ok:false,stage:t,error:e}}var S={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"}}},B={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"}}},P={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"}}},R={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"}}},H={id:42161,name:"Arbitrum One",nativeCurrency:{name:"Ether",symbol:"ETH",decimals:18},rpcUrls:{default:{http:["https://arb1.arbitrum.io/rpc"]}},blockExplorers:{default:{name:"Arbiscan",url:"https://arbiscan.io"}}},M={id:10,name:"OP Mainnet",nativeCurrency:{name:"Ether",symbol:"ETH",decimals:18},rpcUrls:{default:{http:["https://mainnet.optimism.io"]}},blockExplorers:{default:{name:"Optimistic Etherscan",url:"https://optimistic.etherscan.io"}}},F={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"}}},L={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"}}},U={mainnet:S,bsc:B,polygon:P,base:R,arbitrum:H,optimism:M,sepolia:F,polygonAmoy:L};function ne(t){return Object.values(U).find(e=>e.id===t)}function ae(t){return {...t,chainNamespace:"eip155",caipNetworkId:`eip155:${t.id}`}}var re={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"},oe={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 w=[{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:[]}],x=[{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"}]}],C=[{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:o,account:p}=t,i=await n.writeContract({address:e.address,abi:e.abi,functionName:e.functionName,args:e.args,account:p,chain:n.chain,value:e.value});if((await o.waitForTransactionReceipt({hash:i})).status==="reverted")throw new Error(`On-chain transaction reverted (${i}).`);return i}function D(t){let e=t.RewardPoolAddress;return e||null}async function E(t,e,n,o){return await t.publicClient.readContract({address:e,abi:k,functionName:"allowance",args:[t.account,n]})>=o?null:f(t,{address:e,abi:k,functionName:"approve",args:[n,o]})}async function O(t){let{client:e,clients:n,network:o,tokenAddress:p,amount:i,titleID:d,category:m}=t,r=e.auth.context?.userID;if(!r)return a("approve","Not logged in.");let c=D(o);if(!c)return a("approve","Network has no RewardPoolAddress.");if(i<=0n)return a("approve","Amount must be positive.");try{await E(n,p,c,i);}catch(u){return a("approve",g(u))}let s;try{s=await f(n,{address:c,abi:w,functionName:"depositERC20",args:[p,i,r,d,m??""]});}catch(u){return a("deposit-onchain",g(u))}let l=await e.blockchain.depositToken(o.NetworkID??"",s);return l.ok?{ok:true,onChainTxHash:s,data:l.data}:a("report",l.error,{onChainTxHash:s})}async function K(t){let{client:e,clients:n,network:o,nftContractAddress:p,tokenId:i,amount:d,titleID:m,category:r}=t,c=e.auth.context?.userID;if(!c)return a("deposit-onchain","Not logged in.");let s=D(o);if(!s)return a("deposit-onchain","Network has no RewardPoolAddress.");if(d<=0n)return a("deposit-onchain","Amount must be positive.");let l=b(c,m,r),u;try{u=await f(n,{address:p,abi:A,functionName:"safeTransferFrom",args:[n.account,s,i,d,l]});}catch(W){return a("deposit-onchain",g(W))}let y=await e.blockchain.depositNFT(o.NetworkID??"",u);return y.ok?{ok:true,onChainTxHash:u,data:y.data}:a("report",y.error,{onChainTxHash:u})}async function Y(t){let{client:e,clients:n,network:o,nftContractAddress:p,tokenId:i,titleID:d,category:m}=t,r=e.auth.context?.userID;if(!r)return a("deposit-onchain","Not logged in.");let c=D(o);if(!c)return a("deposit-onchain","Network has no RewardPoolAddress.");let s=b(r,d,m),l;try{l=await f(n,{address:p,abi:C,functionName:"safeTransferFrom",args:[n.account,c,i,s]});}catch(y){return a("deposit-onchain",g(y))}let u=await e.blockchain.depositNFT(o.NetworkID??"",l);return u.ok?{ok:true,onChainTxHash:l,data:u.data}:a("report",u.error,{onChainTxHash:l})}async function v(t,e){return f(t,{address:e.ContractAddress,abi:w,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 T(t,e){return f(t,{address:e.ContractAddress,abi:x,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 z(t,e){return f(t,{address:e.ContractAddress,abi:x,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 V(t){let{client:e,clients:n,currencyID:o,networkID:p,walletAddress:i,amount:d,category:m}=t,r=await e.blockchain.requestTokenWithdrawal(o,p,i,d,m);if(!r.ok)return a("request",r.error);let c=r.data.EvmSignature,s=r.data.TitleTransactionID??void 0;if(!c)return a("request","Withdrawal response carried no EVM signature.",{titleTransactionID:s});let l;try{l=await v(n,c);}catch(y){return a("withdraw-onchain",g(y),{titleTransactionID:s})}let u=await I(e,s,l);return u.ok?{ok:true,onChainTxHash:l,data:r.data}:u}async function Z(t){let{client:e,clients:n,itemID:o,networkID:p,walletAddress:i,amount:d,category:m}=t,r=await e.blockchain.requestNFTWithdrawal(o,p,i,d,m);if(!r.ok)return a("request",r.error);let c=r.data.EvmSignature,s=r.data.TitleTransactionID??void 0;if(!c)return a("request","Withdrawal response carried no EVM signature.",{titleTransactionID:s});let l;try{l=await T(n,c);}catch(y){return a("withdraw-onchain",g(y),{titleTransactionID:s})}let u=await I(e,s,l);return u.ok?{ok:true,onChainTxHash:l,data:r.data}:u}async function I(t,e,n){if(!e)return a("confirm","Missing TitleTransactionID.",{onChainTxHash:n});let o=await t.blockchain.confirmWithdrawal(e,n);return o.ok?{ok:true,onChainTxHash:n,data:o.data}:a("confirm",o.error,{onChainTxHash:n,titleTransactionID:e})}async function $(t){let{client:e,clients:n,networkID:o}=t,p=t.walletAddress??n.account,i=await e.auth.requestWalletChallenge(p,o);if(!i.ok)return h("challenge",i.error);let d;try{d=await n.walletClient.signMessage({account:n.account,message:i.data.Message});}catch(r){return h("sign",g(r))}let m=await e.auth.loginWithWallet(p,o,d);return m.ok?{ok:true,data:m.data}:h("login",m.error)}async function j(t){let{client:e,adapter:n,network:o,mint:p,amountRaw:i,titleID:d,category:m}=t,r=e.auth.context?.userID;if(!r)return a("deposit-onchain","Not logged in.");if(i<=0n)return a("deposit-onchain","Amount must be positive.");let c;try{c=await n.depositSpl({mint:p,amountRaw:i,userID:r,titleID:d,category:core.normalizeBlockchainCategory(m)});}catch(l){return a("deposit-onchain",g(l))}let s=await e.blockchain.depositToken(o.NetworkID??"",c);return s.ok?{ok:true,onChainTxHash:c,data:s.data}:a("report",s.error,{onChainTxHash:c})}async function Q(t){let{client:e,adapter:n,currencyID:o,networkID:p,walletAddress:i,amount:d,category:m}=t,r=await e.blockchain.requestTokenWithdrawal(o,p,i,d,m);if(!r.ok)return a("request",r.error);let c=r.data.SolanaSignature,s=r.data.TitleTransactionID??void 0;if(!c)return a("request","Withdrawal response carried no Solana signature.",{titleTransactionID:s});let l;try{l=await n.submitWithdrawal(c);}catch(y){return a("withdraw-onchain",g(y),{titleTransactionID:s})}if(!s)return a("confirm","Missing TitleTransactionID.",{onChainTxHash:l});let u=await e.blockchain.confirmWithdrawal(s,l);return u.ok?{ok:true,onChainTxHash:l,data:r.data}:a("confirm",u.error,{onChainTxHash:l,titleTransactionID:s})}async function X(t){let{client:e,networkID:n,walletAddress:o,signMessage:p}=t,i=await e.auth.requestWalletChallenge(o,n);if(!i.ok)return h("challenge",i.error);let d;try{let r=await p(new TextEncoder().encode(i.data.Message));d=_(r);}catch(r){return h("sign",g(r))}let m=await e.auth.loginWithWallet(o,n,d);return m.ok?{ok:true,data:m.data}:h("login",m.error)}function _(t){let e="0x";for(let n of t)e+=n.toString(16).padStart(2,"0");return e}
2
+ exports.arbitrum=H;exports.base=R;exports.bridgeFail=a;exports.bsc=B;exports.chainById=ne;exports.depositNftEvm=K;exports.depositNftEvm721=Y;exports.depositTokenEvm=O;exports.depositTokenSolana=j;exports.encodeNftDepositData=b;exports.ensureErc20Allowance=E;exports.erc1155Abi=A;exports.erc20Abi=k;exports.erc721Abi=C;exports.idosChains=U;exports.loginWithWalletEvm=$;exports.loginWithWalletSolana=X;exports.mainnet=S;exports.optimism=M;exports.polygon=P;exports.polygonAmoy=L;exports.rewardPoolAbi=w;exports.sepolia=F;exports.solanaDevnet=oe;exports.solanaMainnet=re;exports.submitEvmNftWithdrawal=T;exports.submitEvmNftWithdrawal721=z;exports.submitEvmTokenWithdrawal=v;exports.toAppKitNetwork=ae;exports.toErrorMessage=g;exports.walletLoginFail=h;exports.withdrawNftEvm=Z;exports.withdrawTokenEvm=V;exports.withdrawTokenSolana=Q;exports.writeAndWait=f;
package/dist/index.d.cts CHANGED
@@ -1,7 +1,11 @@
1
- import { E as EvmBridgeClients, W as WalletLoginResult } from './bridge-DvafuXl9.cjs';
2
- export { A as AppKitEvmNetwork, B as BridgeFailure, a as BridgeResult, b as BridgeStage, c as BridgeSuccess, D as DepositNft721EvmParams, d as DepositNftEvmParams, e as DepositTokenEvmParams, f as DepositTokenSolanaParams, S as SolanaProgramAdapter, g as WalletLoginFailure, h as WalletLoginStage, i as WalletLoginSuccess, j as WithdrawNftEvmParams, k as WithdrawTokenEvmParams, l as WithdrawTokenSolanaParams, m as arbitrum, n as base, o as bridgeFail, p as bsc, q as chainById, r as depositNftEvm, s as depositNftEvm721, t as depositTokenEvm, u as depositTokenSolana, v as ensureErc20Allowance, w as idosChains, x as mainnet, y as optimism, z as polygon, C as polygonAmoy, F as sepolia, G as submitEvmNftWithdrawal, H as submitEvmNftWithdrawal721, I as submitEvmTokenWithdrawal, J as toAppKitNetwork, K as toErrorMessage, L as walletLoginFail, M as withdrawNftEvm, N as withdrawTokenEvm, O as withdrawTokenSolana, P as writeAndWait } from './bridge-DvafuXl9.cjs';
1
+ import { W as WalletLoginResult } from './types-C11zAA05.cjs';
2
+ export { B as BridgeFailure, a as BridgeResult, b as BridgeStage, c as BridgeSuccess, d as WalletLoginFailure, e as WalletLoginStage, f as WalletLoginSuccess, g as bridgeFail, t as toErrorMessage, w as walletLoginFail } from './types-C11zAA05.cjs';
3
+ export { A as AppKitEvmNetwork, a as AppKitSolanaNetwork, b as arbitrum, c as base, d as bsc, e as chainById, i as idosChains, m as mainnet, o as optimism, p as polygon, f as polygonAmoy, s as sepolia, g as solanaDevnet, h as solanaMainnet, t as toAppKitNetwork } from './chains-B_P3u8_S.cjs';
3
4
  import { Hex } from 'viem';
5
+ import { E as EvmBridgeClients } from './withdraw-CwX4HY2X.cjs';
6
+ export { D as DepositNft721EvmParams, a as DepositNftEvmParams, b as DepositTokenEvmParams, W as WithdrawNftEvmParams, c as WithdrawTokenEvmParams, d as depositNftEvm, e as depositNftEvm721, f as depositTokenEvm, g as ensureErc20Allowance, s as submitEvmNftWithdrawal, h as submitEvmNftWithdrawal721, i as submitEvmTokenWithdrawal, w as withdrawNftEvm, j as withdrawTokenEvm, k as writeAndWait } from './withdraw-CwX4HY2X.cjs';
4
7
  import { IDosGamesClient, ClientState } from '@idosgames/core';
8
+ export { D as DepositTokenSolanaParams, S as SolanaProgramAdapter, W as WithdrawTokenSolanaParams, d as depositTokenSolana, w as withdrawTokenSolana } from './bridge-8F45t4nD.cjs';
5
9
 
6
10
  declare const rewardPoolAbi: readonly [{
7
11
  readonly type: "function";
package/dist/index.d.ts CHANGED
@@ -1,7 +1,11 @@
1
- import { E as EvmBridgeClients, W as WalletLoginResult } from './bridge-DvafuXl9.js';
2
- export { A as AppKitEvmNetwork, B as BridgeFailure, a as BridgeResult, b as BridgeStage, c as BridgeSuccess, D as DepositNft721EvmParams, d as DepositNftEvmParams, e as DepositTokenEvmParams, f as DepositTokenSolanaParams, S as SolanaProgramAdapter, g as WalletLoginFailure, h as WalletLoginStage, i as WalletLoginSuccess, j as WithdrawNftEvmParams, k as WithdrawTokenEvmParams, l as WithdrawTokenSolanaParams, m as arbitrum, n as base, o as bridgeFail, p as bsc, q as chainById, r as depositNftEvm, s as depositNftEvm721, t as depositTokenEvm, u as depositTokenSolana, v as ensureErc20Allowance, w as idosChains, x as mainnet, y as optimism, z as polygon, C as polygonAmoy, F as sepolia, G as submitEvmNftWithdrawal, H as submitEvmNftWithdrawal721, I as submitEvmTokenWithdrawal, J as toAppKitNetwork, K as toErrorMessage, L as walletLoginFail, M as withdrawNftEvm, N as withdrawTokenEvm, O as withdrawTokenSolana, P as writeAndWait } from './bridge-DvafuXl9.js';
1
+ import { W as WalletLoginResult } from './types-C11zAA05.js';
2
+ export { B as BridgeFailure, a as BridgeResult, b as BridgeStage, c as BridgeSuccess, d as WalletLoginFailure, e as WalletLoginStage, f as WalletLoginSuccess, g as bridgeFail, t as toErrorMessage, w as walletLoginFail } from './types-C11zAA05.js';
3
+ export { A as AppKitEvmNetwork, a as AppKitSolanaNetwork, b as arbitrum, c as base, d as bsc, e as chainById, i as idosChains, m as mainnet, o as optimism, p as polygon, f as polygonAmoy, s as sepolia, g as solanaDevnet, h as solanaMainnet, t as toAppKitNetwork } from './chains-B_P3u8_S.js';
3
4
  import { Hex } from 'viem';
5
+ import { E as EvmBridgeClients } from './withdraw-C-sFNUnQ.js';
6
+ export { D as DepositNft721EvmParams, a as DepositNftEvmParams, b as DepositTokenEvmParams, W as WithdrawNftEvmParams, c as WithdrawTokenEvmParams, d as depositNftEvm, e as depositNftEvm721, f as depositTokenEvm, g as ensureErc20Allowance, s as submitEvmNftWithdrawal, h as submitEvmNftWithdrawal721, i as submitEvmTokenWithdrawal, w as withdrawNftEvm, j as withdrawTokenEvm, k as writeAndWait } from './withdraw-C-sFNUnQ.js';
4
7
  import { IDosGamesClient, ClientState } from '@idosgames/core';
8
+ export { D as DepositTokenSolanaParams, S as SolanaProgramAdapter, W as WithdrawTokenSolanaParams, d as depositTokenSolana, w as withdrawTokenSolana } from './bridge-BJnRn3NX.js';
5
9
 
6
10
  declare const rewardPoolAbi: readonly [{
7
11
  readonly type: "function";
package/dist/index.js CHANGED
@@ -1 +1 @@
1
- export{h as arbitrum,g as base,b as bridgeFail,e as bsc,m as chainById,w as depositNftEvm,x as depositNftEvm721,v as depositTokenEvm,E as depositTokenSolana,s as encodeNftDepositData,u as ensureErc20Allowance,q as erc1155Abi,p as erc20Abi,r as erc721Abi,l as idosChains,D as loginWithWalletEvm,G as loginWithWalletSolana,d as mainnet,i as optimism,f as polygon,k as polygonAmoy,o as rewardPoolAbi,j as sepolia,z as submitEvmNftWithdrawal,A as submitEvmNftWithdrawal721,y as submitEvmTokenWithdrawal,n as toAppKitNetwork,a as toErrorMessage,c as walletLoginFail,C as withdrawNftEvm,B as withdrawTokenEvm,F as withdrawTokenSolana,t as writeAndWait}from'./chunk-ZPNBMRUO.js';
1
+ export{i as depositNftEvm,j as depositNftEvm721,h as depositTokenEvm,e as encodeNftDepositData,g as ensureErc20Allowance,c as erc1155Abi,b as erc20Abi,d as erc721Abi,p as loginWithWalletEvm,a as rewardPoolAbi,l as submitEvmNftWithdrawal,m as submitEvmNftWithdrawal721,k as submitEvmTokenWithdrawal,o as withdrawNftEvm,n as withdrawTokenEvm,f as writeAndWait}from'./chunk-DMMHCUIU.js';export{a as depositTokenSolana,c as loginWithWalletSolana,b as withdrawTokenSolana}from'./chunk-44AGTUFV.js';export{b as bridgeFail,a as toErrorMessage,c as walletLoginFail}from'./chunk-K62NMX3A.js';export{e as arbitrum,d as base,b as bsc,j as chainById,i as idosChains,a as mainnet,f as optimism,c as polygon,h as polygonAmoy,g as sepolia,m as solanaDevnet,l as solanaMainnet,k as toAppKitNetwork}from'./chunk-HQNS6ZWL.js';
@@ -1,2 +1,2 @@
1
- 'use strict';var wagmi=require('wagmi'),connectors=require('wagmi/connectors'),appkitAdapterWagmi=require('@reown/appkit-adapter-wagmi'),react=require('@reown/appkit/react'),reactQuery=require('@tanstack/react-query'),react$1=require('react'),jsxRuntime=require('react/jsx-runtime'),viem=require('viem'),core=require('@idosgames/core'),actions=require('wagmi/actions'),walletAdapterReact=require('@solana/wallet-adapter-react');var G={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"}}},O={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"}}},q={id:137,name:"Polygon",nativeCurrency:{name:"POL",symbol:"POL",decimals:18},rpcUrls:{default:{http:["https://polygon-rpc.com"]}},blockExplorers:{default:{name:"PolygonScan",url:"https://polygonscan.com"}}},U={id:8453,name:"Base",nativeCurrency:{name:"Ether",symbol:"ETH",decimals:18},rpcUrls:{default:{http:["https://mainnet.base.org"]}},blockExplorers:{default:{name:"BaseScan",url:"https://basescan.org"}}},K={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"}}},j={id:10,name:"OP Mainnet",nativeCurrency:{name:"Ether",symbol:"ETH",decimals:18},rpcUrls:{default:{http:["https://mainnet.optimism.io"]}},blockExplorers:{default:{name:"Optimistic Etherscan",url:"https://optimistic.etherscan.io"}}},z={id:11155111,name:"Sepolia",testnet:true,nativeCurrency:{name:"Sepolia Ether",symbol:"ETH",decimals:18},rpcUrls:{default:{http:["https://rpc.sepolia.org"]}},blockExplorers:{default:{name:"Etherscan",url:"https://sepolia.etherscan.io"}}},Q={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"}}},_={mainnet:G,bsc:O,polygon:q,base:U,arbitrum:K,optimism:j,sepolia:z,polygonAmoy:Q};function de(t){return Object.values(_).find(e=>e.id===t)}function $(t){return {...t,chainNamespace:"eip155",caipNetworkId:`eip155:${t.id}`}}var V=null;function J(){return V}function he(t){let{chains:e,walletConnectProjectId:n,appName:r,appUrl:i,appIcon:o,transports:c,connectors:l}=t,a={};for(let d of e)a[d.id]=c?.[d.id]??wagmi.http();let u=i??(typeof window<"u"?window.location.origin:""),p={name:r??"iDosGames",description:r??"iDosGames game",url:u,icons:o?[o]:[]};if(n&&!l){let d=e.map($),g=new appkitAdapterWagmi.WagmiAdapter({networks:d,projectId:n,transports:a});return V=react.createAppKit({adapters:[g],networks:d,projectId:n,metadata:p,features:{analytics:false,email:false,socials:false}}),g.wagmiConfig}let m=l??[connectors.injected(),connectors.coinbaseWallet({appName:r??"iDosGames"})];return wagmi.createConfig({chains:e,connectors:m,transports:a})}function E(t){let{wagmiConfig:e,queryClient:n,children:r}=t,[i]=react$1.useState(()=>n??new reactQuery.QueryClient);return jsxRuntime.jsx(wagmi.WagmiProvider,{config:e,children:jsxRuntime.jsx(reactQuery.QueryClientProvider,{client:i,children:r})})}var W=[{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:[]}],Y=[{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:[]}],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"}]}],Z=[{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 ee(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:i}=t,o=await n.writeContract({address:e.address,abi:e.abi,functionName:e.functionName,args:e.args,account:i,chain:n.chain,value:e.value});if((await r.waitForTransactionReceipt({hash:o})).status==="reverted")throw new Error(`On-chain transaction reverted (${o}).`);return o}function 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 y(t,e){return {ok:false,stage:t,error:e}}function te(t){let e=t.RewardPoolAddress;return e||null}async function ne(t,e,n,r){return await t.publicClient.readContract({address:e,abi:x,functionName:"allowance",args:[t.account,n]})>=r?null:w(t,{address:e,abi:x,functionName:"approve",args:[n,r]})}async function P(t){let{client:e,clients:n,network:r,tokenAddress:i,amount:o,titleID:c,category:l}=t,a=e.auth.context?.userID;if(!a)return s("approve","Not logged in.");let u=te(r);if(!u)return s("approve","Network has no RewardPoolAddress.");if(o<=0n)return s("approve","Amount must be positive.");try{await ne(n,i,u,o);}catch(d){return s("approve",f(d))}let p;try{p=await w(n,{address:u,abi:W,functionName:"depositERC20",args:[i,o,a,c,l??""]});}catch(d){return s("deposit-onchain",f(d))}let m=await e.blockchain.depositToken(r.NetworkID??"",p);return m.ok?{ok:true,onChainTxHash:p,data:m.data}:s("report",m.error,{onChainTxHash:p})}async function I(t){let{client:e,clients:n,network:r,nftContractAddress:i,tokenId:o,amount:c,titleID:l,category:a}=t,u=e.auth.context?.userID;if(!u)return s("deposit-onchain","Not logged in.");let p=te(r);if(!p)return s("deposit-onchain","Network has no RewardPoolAddress.");if(c<=0n)return s("deposit-onchain","Amount must be positive.");let m=ee(u,l,a),d;try{d=await w(n,{address:i,abi:Z,functionName:"safeTransferFrom",args:[n.account,p,o,c,m]});}catch(v){return s("deposit-onchain",f(v))}let g=await e.blockchain.depositNFT(r.NetworkID??"",d);return g.ok?{ok:true,onChainTxHash:d,data:g.data}:s("report",g.error,{onChainTxHash:d})}async function re(t,e){return w(t,{address:e.ContractAddress,abi:W,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 oe(t,e){return w(t,{address:e.ContractAddress,abi:Y,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 N(t){let{client:e,clients:n,currencyID:r,networkID:i,walletAddress:o,amount:c,category:l}=t,a=await e.blockchain.requestTokenWithdrawal(r,i,o,c,l);if(!a.ok)return s("request",a.error);let u=a.data.EvmSignature,p=a.data.TitleTransactionID??void 0;if(!u)return s("request","Withdrawal response carried no EVM signature.",{titleTransactionID:p});let m;try{m=await re(n,u);}catch(g){return s("withdraw-onchain",f(g),{titleTransactionID:p})}let d=await ae(e,p,m);return d.ok?{ok:true,onChainTxHash:m,data:a.data}:d}async function B(t){let{client:e,clients:n,itemID:r,networkID:i,walletAddress:o,amount:c,category:l}=t,a=await e.blockchain.requestNFTWithdrawal(r,i,o,c,l);if(!a.ok)return s("request",a.error);let u=a.data.EvmSignature,p=a.data.TitleTransactionID??void 0;if(!u)return s("request","Withdrawal response carried no EVM signature.",{titleTransactionID:p});let m;try{m=await oe(n,u);}catch(g){return s("withdraw-onchain",f(g),{titleTransactionID:p})}let d=await ae(e,p,m);return d.ok?{ok:true,onChainTxHash:m,data:a.data}:d}async function ae(t,e,n){if(!e)return s("confirm","Missing TitleTransactionID.",{onChainTxHash:n});let r=await t.blockchain.confirmWithdrawal(e,n);return r.ok?{ok:true,onChainTxHash:n,data:r.data}:s("confirm",r.error,{onChainTxHash:n,titleTransactionID:e})}async function k(t){let{client:e,clients:n,networkID:r}=t,i=t.walletAddress??n.account,o=await e.auth.requestWalletChallenge(i,r);if(!o.ok)return y("challenge",o.error);let c;try{c=await n.walletClient.signMessage({account:n.account,message:o.data.Message});}catch(a){return y("sign",f(a))}let l=await e.auth.loginWithWallet(i,r,c);return l.ok?{ok:true,data:l.data}:y("login",l.error)}function T(){let{address:t}=wagmi.useAccount(),e=wagmi.usePublicClient(),{data:n}=wagmi.useWalletClient();return !t||!e||!n?null:{account:t,publicClient:e,walletClient:n}}var b="Wallet not connected.";function Pe(t,e){let n=T();return {connected:!!n,account:n?.account??null,loginWithWallet:(r,i)=>n?k({client:t,clients:n,networkID:r,walletAddress:i}):Promise.resolve(y("challenge",b)),depositToken:r=>n?P({client:t,clients:n,titleID:e,...r}):Promise.resolve(s("approve",b)),depositNft:r=>n?I({client:t,clients:n,titleID:e,...r}):Promise.resolve(s("deposit-onchain",b)),withdrawToken:r=>n?N({client:t,clients:n,...r}):Promise.resolve(s("withdraw-onchain",b)),withdrawNft:r=>n?B({client:t,clients:n,...r}):Promise.resolve(s("withdraw-onchain",b))}}function Le(t){let{wagmiConfig:e,...n}=t;return jsxRuntime.jsx(E,{wagmiConfig:e,children:jsxRuntime.jsx(se,{...n})})}function Me(t){return t instanceof Error&&(t.name==="ConnectorAlreadyConnectedError"||t.message.includes("already connected"))}function Ge(t){let e="Wallet sign-in failed. Please try again.";return t instanceof Error?t.name==="ProviderNotFoundError"||/provider not found/i.test(t.message)?"No crypto wallet found in this browser. Install a wallet extension (e.g. MetaMask) or open this page in your wallet's browser, then try again.":t.name==="UserRejectedRequestError"||/user (rejected|denied|cancelled|canceled)/i.test(t.message)?"Request declined in the wallet.":/timed? ?out/i.test(t.message)?"The wallet did not respond. Open your wallet and try again.":e:e}async function Oe(t){let e=await actions.getWalletClient(t).catch(()=>null);if(!e)return null;let n=actions.getPublicClient(t);return n?{account:e.account.address,publicClient:n,walletClient:e}:null}function qe(t,e=18e4){return actions.getAccount(t).isConnected?Promise.resolve(true):new Promise(n=>{let r=false,i=l=>{r||(r=true,o(),clearTimeout(c),n(l));},o=actions.watchAccount(t,{onChange:l=>{l.isConnected&&i(true);}}),c=setTimeout(()=>i(false),e);})}function Ue(t){let e=i=>t.find(o=>o.id===i||o.type===i),n=e("injected"),r=typeof window<"u"&&window.ethereum!=null;return n&&r?n:e("walletConnect")??n??t[0]}function se(t){let{client:e,networkID:n,onAuthenticated:r,disabled:i,label:o,style:c}=t,l=wagmi.useConfig(),{isConnected:a}=wagmi.useAccount(),{connectAsync:u,connectors:p}=wagmi.useConnect(),m=T(),[d,g]=react$1.useState(false),[v,h]=react$1.useState(null),pe=async()=>{g(true),h(null);try{if(!a){let H=J();if(H){if(await H.open(),!await qe(l)){h("No wallet was connected.");return}}else {let L=Ue(p);if(!L){h("No wallet connector is configured.");return}try{await u({connector:L});}catch(M){if(!Me(M))throw M}}}let C=m??await Oe(l);if(!C){h("Wallet client is not available.");return}let D=await k({client:e,clients:C,networkID:n});if(D.ok){r();return}h(D.stage==="sign"?"Signature declined.":D.error??"Wallet sign-in failed.");}catch(C){console.error("[idosgames/wallet] wallet sign-in failed:",C),h(Ge(C));}finally{g(false);}};return jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[jsxRuntime.jsx("button",{type:"button",onClick:()=>{pe();},disabled:i||d,style:{...Ke,...i||d?{opacity:.6,cursor:"default"}:null,...c},children:d?"Check your wallet\u2026":a?o??"Sign in with wallet":"Connect wallet"}),v&&jsxRuntime.jsx("span",{role:"alert",style:je,children:v})]})}var Ke={padding:"11px 16px",borderRadius:"8px",border:"none",background:"#4c3fa8",color:"#fff",font:"inherit",fontWeight:600,cursor:"pointer"},je={display:"block",marginTop:"6px",color:"#ff9b9b",fontSize:"13px",textAlign:"center"};function Ve(t){let{endpoint:e,wallets:n,autoConnect:r=true,children:i}=t;return jsxRuntime.jsx(walletAdapterReact.ConnectionProvider,{endpoint:e,children:jsxRuntime.jsx(walletAdapterReact.WalletProvider,{wallets:n,autoConnect:r,children:i})})}async function S(t){let{client:e,adapter:n,network:r,mint:i,amountRaw:o,titleID:c,category:l}=t,a=e.auth.context?.userID;if(!a)return s("deposit-onchain","Not logged in.");if(o<=0n)return s("deposit-onchain","Amount must be positive.");let u;try{u=await n.depositSpl({mint:i,amountRaw:o,userID:a,titleID:c,category:core.normalizeBlockchainCategory(l)});}catch(m){return s("deposit-onchain",f(m))}let p=await e.blockchain.depositToken(r.NetworkID??"",u);return p.ok?{ok:true,onChainTxHash:u,data:p.data}:s("report",p.error,{onChainTxHash:u})}async function R(t){let{client:e,adapter:n,currencyID:r,networkID:i,walletAddress:o,amount:c,category:l}=t,a=await e.blockchain.requestTokenWithdrawal(r,i,o,c,l);if(!a.ok)return s("request",a.error);let u=a.data.SolanaSignature,p=a.data.TitleTransactionID??void 0;if(!u)return s("request","Withdrawal response carried no Solana signature.",{titleTransactionID:p});let m;try{m=await n.submitWithdrawal(u);}catch(g){return s("withdraw-onchain",f(g),{titleTransactionID:p})}if(!p)return s("confirm","Missing TitleTransactionID.",{onChainTxHash:m});let d=await e.blockchain.confirmWithdrawal(p,m);return d.ok?{ok:true,onChainTxHash:m,data:a.data}:s("confirm",d.error,{onChainTxHash:m,titleTransactionID:p})}async function F(t){let{client:e,networkID:n,walletAddress:r,signMessage:i}=t,o=await e.auth.requestWalletChallenge(r,n);if(!o.ok)return y("challenge",o.error);let c;try{let a=await i(new TextEncoder().encode(o.data.Message));c=Xe(a);}catch(a){return y("sign",f(a))}let l=await e.auth.loginWithWallet(r,n,c);return l.ok?{ok:true,data:l.data}:y("login",l.error)}function Xe(t){let e="0x";for(let n of t)e+=n.toString(16).padStart(2,"0");return e}var ce="Wallet not connected.";function Ze(t,e,n){let{publicKey:r,signMessage:i}=walletAdapterReact.useWallet(),o=r?.toBase58()??null;return {connected:!!o,account:o,loginWithWallet:(c,l)=>{let a=l??o;return a?i?F({client:t,networkID:c,walletAddress:a,signMessage:i}):Promise.resolve(y("sign","The connected wallet does not support message signing.")):Promise.resolve(y("challenge",ce))},depositToken:c=>S({client:t,adapter:n,titleID:e,...c}),withdrawToken:c=>{let l=c.walletAddress??o;return l?R({client:t,adapter:n,...c,walletAddress:l}):Promise.resolve(s("request",ce))}}}
2
- exports.IDosGamesWalletProvider=E;exports.SolanaWalletBridgeProvider=Ve;exports.WalletLogin=Le;exports.WalletLoginButton=se;exports.arbitrum=K;exports.base=U;exports.bsc=O;exports.chainById=de;exports.createEvmWalletConfig=he;exports.idosChains=_;exports.mainnet=G;exports.optimism=j;exports.polygon=q;exports.polygonAmoy=Q;exports.sepolia=z;exports.useEvmBridge=Pe;exports.useEvmBridgeClients=T;exports.useSolanaBridge=Ze;
1
+ 'use strict';var wagmi=require('wagmi'),connectors=require('wagmi/connectors'),appkitAdapterWagmi=require('@reown/appkit-adapter-wagmi'),react=require('@reown/appkit/react'),reactQuery=require('@tanstack/react-query'),react$1=require('react'),jsxRuntime=require('react/jsx-runtime'),viem=require('viem'),core=require('@idosgames/core'),actions=require('wagmi/actions');var Y={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"}}},z={id:56,name:"BNB Smart Chain",nativeCurrency:{name:"BNB",symbol:"BNB",decimals:18},rpcUrls:{default:{http:["https://bsc-dataseed.binance.org"]}},blockExplorers:{default:{name:"BscScan",url:"https://bscscan.com"}}},_={id:137,name:"Polygon",nativeCurrency:{name:"POL",symbol:"POL",decimals:18},rpcUrls:{default:{http:["https://polygon-rpc.com"]}},blockExplorers:{default:{name:"PolygonScan",url:"https://polygonscan.com"}}},Q={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"}}},V={id:42161,name:"Arbitrum One",nativeCurrency:{name:"Ether",symbol:"ETH",decimals:18},rpcUrls:{default:{http:["https://arb1.arbitrum.io/rpc"]}},blockExplorers:{default:{name:"Arbiscan",url:"https://arbiscan.io"}}},Z={id:10,name:"OP Mainnet",nativeCurrency:{name:"Ether",symbol:"ETH",decimals:18},rpcUrls:{default:{http:["https://mainnet.optimism.io"]}},blockExplorers:{default:{name:"Optimistic Etherscan",url:"https://optimistic.etherscan.io"}}},$={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"}}},J={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"}}},X={mainnet:Y,bsc:z,polygon:_,base:Q,arbitrum:V,optimism:Z,sepolia:$,polygonAmoy:J};function we(t){return Object.values(X).find(e=>e.id===t)}function ee(t){return {...t,chainNamespace:"eip155",caipNetworkId:`eip155:${t.id}`}}var te=null;function ne(t){te=t;}function N(){return te}function Ae(t){let{chains:e,walletConnectProjectId:n,appName:r,appUrl:o,appIcon:a,transports:d,connectors:c}=t,i={};for(let l of e)i[l.id]=d?.[l.id]??wagmi.http();let m=o??(typeof window<"u"?window.location.origin:""),p={name:r??"iDosGames",description:r??"iDosGames game",url:m,icons:a?[a]:[]};if(n&&!c){let l=e.map(ee),f=new appkitAdapterWagmi.WagmiAdapter({networks:l,projectId:n,transports:i});return ne(react.createAppKit({adapters:[f],networks:l,projectId:n,metadata:p,features:{analytics:false,email:false,socials:false}})),f.wagmiConfig}let u=c??[connectors.injected(),connectors.coinbaseWallet({appName:r??"iDosGames"})];return wagmi.createConfig({chains:e,connectors:u,transports:i})}function D(t){let{wagmiConfig:e,queryClient:n,children:r}=t,[o]=react$1.useState(()=>n??new reactQuery.QueryClient);return jsxRuntime.jsx(wagmi.WagmiProvider,{config:e,children:jsxRuntime.jsx(reactQuery.QueryClientProvider,{client:o,children:r})})}var E=[{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:[]}],oe=[{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"}]}],ae=[{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 ie(t,e,n){return viem.encodeAbiParameters([{type:"string"},{type:"string"},{type:"string"}],[t,e,core.normalizeBlockchainCategory(n)])}async function y(t,e){let{walletClient:n,publicClient:r,account:o}=t,a=await n.writeContract({address:e.address,abi:e.abi,functionName:e.functionName,args:e.args,account:o,chain:n.chain,value:e.value});if((await r.waitForTransactionReceipt({hash:a})).status==="reverted")throw new Error(`On-chain transaction reverted (${a}).`);return a}function g(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 h(t,e){return {ok:false,stage:t,error:e}}function se(t){let e=t.RewardPoolAddress;return e||null}async function le(t,e,n,r){return await t.publicClient.readContract({address:e,abi:P,functionName:"allowance",args:[t.account,n]})>=r?null:y(t,{address:e,abi:P,functionName:"approve",args:[n,r]})}async function I(t){let{client:e,clients:n,network:r,tokenAddress:o,amount:a,titleID:d,category:c}=t,i=e.auth.context?.userID;if(!i)return s("approve","Not logged in.");let m=se(r);if(!m)return s("approve","Network has no RewardPoolAddress.");if(a<=0n)return s("approve","Amount must be positive.");try{await le(n,o,m,a);}catch(l){return s("approve",g(l))}let p;try{p=await y(n,{address:m,abi:E,functionName:"depositERC20",args:[o,a,i,d,c??""]});}catch(l){return s("deposit-onchain",g(l))}let u=await e.blockchain.depositToken(r.NetworkID??"",p);return u.ok?{ok:true,onChainTxHash:p,data:u.data}:s("report",u.error,{onChainTxHash:p})}async function B(t){let{client:e,clients:n,network:r,nftContractAddress:o,tokenId:a,amount:d,titleID:c,category:i}=t,m=e.auth.context?.userID;if(!m)return s("deposit-onchain","Not logged in.");let p=se(r);if(!p)return s("deposit-onchain","Network has no RewardPoolAddress.");if(d<=0n)return s("deposit-onchain","Amount must be positive.");let u=ie(m,c,i),l;try{l=await y(n,{address:o,abi:ae,functionName:"safeTransferFrom",args:[n.account,p,a,d,u]});}catch(k){return s("deposit-onchain",g(k))}let f=await e.blockchain.depositNFT(r.NetworkID??"",l);return f.ok?{ok:true,onChainTxHash:l,data:f.data}:s("report",f.error,{onChainTxHash:l})}async function ce(t,e){return y(t,{address:e.ContractAddress,abi:E,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 pe(t,e){return y(t,{address:e.ContractAddress,abi:oe,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 R(t){let{client:e,clients:n,currencyID:r,networkID:o,walletAddress:a,amount:d,category:c}=t,i=await e.blockchain.requestTokenWithdrawal(r,o,a,d,c);if(!i.ok)return s("request",i.error);let m=i.data.EvmSignature,p=i.data.TitleTransactionID??void 0;if(!m)return s("request","Withdrawal response carried no EVM signature.",{titleTransactionID:p});let u;try{u=await ce(n,m);}catch(f){return s("withdraw-onchain",g(f),{titleTransactionID:p})}let l=await de(e,p,u);return l.ok?{ok:true,onChainTxHash:u,data:i.data}:l}async function S(t){let{client:e,clients:n,itemID:r,networkID:o,walletAddress:a,amount:d,category:c}=t,i=await e.blockchain.requestNFTWithdrawal(r,o,a,d,c);if(!i.ok)return s("request",i.error);let m=i.data.EvmSignature,p=i.data.TitleTransactionID??void 0;if(!m)return s("request","Withdrawal response carried no EVM signature.",{titleTransactionID:p});let u;try{u=await pe(n,m);}catch(f){return s("withdraw-onchain",g(f),{titleTransactionID:p})}let l=await de(e,p,u);return l.ok?{ok:true,onChainTxHash:u,data:i.data}:l}async function de(t,e,n){if(!e)return s("confirm","Missing TitleTransactionID.",{onChainTxHash:n});let r=await t.blockchain.confirmWithdrawal(e,n);return r.ok?{ok:true,onChainTxHash:n,data:r.data}:s("confirm",r.error,{onChainTxHash:n,titleTransactionID:e})}async function b(t){let{client:e,clients:n,networkID:r}=t,o=t.walletAddress??n.account,a=await e.auth.requestWalletChallenge(o,r);if(!a.ok)return h("challenge",a.error);let d;try{d=await n.walletClient.signMessage({account:n.account,message:a.data.Message});}catch(i){return h("sign",g(i))}let c=await e.auth.loginWithWallet(o,r,d);return c.ok?{ok:true,data:c.data}:h("login",c.error)}function A(){let{address:t}=wagmi.useAccount(),e=wagmi.usePublicClient(),{data:n}=wagmi.useWalletClient();return !t||!e||!n?null:{account:t,publicClient:e,walletClient:n}}var v="Wallet not connected.";function Fe(t,e){let n=A();return {connected:!!n,account:n?.account??null,loginWithWallet:(r,o)=>n?b({client:t,clients:n,networkID:r,walletAddress:o}):Promise.resolve(h("challenge",v)),depositToken:r=>n?I({client:t,clients:n,titleID:e,...r}):Promise.resolve(s("approve",v)),depositNft:r=>n?B({client:t,clients:n,titleID:e,...r}):Promise.resolve(s("deposit-onchain",v)),withdrawToken:r=>n?R({client:t,clients:n,...r}):Promise.resolve(s("withdraw-onchain",v)),withdrawNft:r=>n?S({client:t,clients:n,...r}):Promise.resolve(s("withdraw-onchain",v))}}function qe(t){let{wagmiConfig:e,...n}=t;return jsxRuntime.jsx(D,{wagmiConfig:e,children:jsxRuntime.jsx(fe,{...n})})}function je(t){return t instanceof Error&&(t.name==="ConnectorAlreadyConnectedError"||t.message.includes("already connected"))}function Ye(t){let e="Wallet sign-in failed. Please try again.";return t instanceof Error?t.name==="ProviderNotFoundError"||/provider not found/i.test(t.message)?"No crypto wallet found in this browser. Install a wallet extension (e.g. MetaMask) or open this page in your wallet's browser, then try again.":t.name==="UserRejectedRequestError"||/user (rejected|denied|cancelled|canceled)/i.test(t.message)?"Request declined in the wallet.":/timed? ?out/i.test(t.message)?"The wallet did not respond. Open your wallet and try again.":e:e}async function ze(t){let e=await actions.getWalletClient(t).catch(()=>null);if(!e)return null;let n=actions.getPublicClient(t);return n?{account:e.account.address,publicClient:n,walletClient:e}:null}function _e(t,e=18e4){return actions.getAccount(t).isConnected?Promise.resolve(true):new Promise(n=>{let r=false,o=c=>{r||(r=true,a(),clearTimeout(d),n(c));},a=actions.watchAccount(t,{onChange:c=>{c.isConnected&&o(true);}}),d=setTimeout(()=>o(false),e);})}function Qe(t){let e=o=>t.find(a=>a.id===o||a.type===o),n=e("injected"),r=typeof window<"u"&&window.ethereum!=null;return n&&r?n:e("walletConnect")??n??t[0]}var Ve=9e4;async function Ze(t){try{let r=(await actions.getAccount(t).connector?.getProvider?.())?.session?.peer?.metadata?.redirect,o=r?.native||r?.universal;return !o||typeof window>"u"?!1:(window.location.href=o,!0)}catch{return false}}function $e(t,e){return new Promise((n,r)=>{let o=setTimeout(()=>r(new Error("The wallet request timed out.")),e);t.then(a=>{clearTimeout(o),n(a);},a=>{clearTimeout(o),r(a instanceof Error?a:new Error(String(a)));});})}function fe(t){let{client:e,networkID:n,onAuthenticated:r,disabled:o,label:a,style:d,autoStart:c}=t,i=wagmi.useConfig(),{isConnected:m}=wagmi.useAccount(),{connectAsync:p,connectors:u}=wagmi.useConnect(),l=A(),[f,k]=react$1.useState(false),[H,w]=react$1.useState(null),[M,L]=react$1.useState(false),K=react$1.useRef(0),G=react$1.useRef(false),O=async()=>{let ye=++K.current,T=()=>K.current===ye;k(true),w(null);try{if(!m){let U=N();if(U){if(await U.open(),!await _e(i)){w("No wallet was connected.");return}}else {let q=Qe(u);if(!q){w("No wallet connector is configured.");return}try{await p({connector:q});}catch(j){if(!je(j))throw j}}}let C=l??await ze(i);if(!C){w("Wallet client is not available.");return}L(!0);let W=await $e(b({client:e,clients:C,networkID:n}),Ve);if(!T())return;if(W.ok){r();return}w(W.stage==="sign"?"Signature declined.":W.error??"Wallet sign-in failed.");}catch(C){if(!T())return;console.error("[idosgames/wallet] wallet sign-in failed:",C),w(Ye(C));}finally{T()&&(k(false),L(false));}};react$1.useEffect(()=>{!c||G.current||(G.current=true,O());},[c]);let ge=async()=>{await Ze(i)||await N()?.open();};return jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[jsxRuntime.jsx("button",{type:"button",onClick:()=>{M?ge():O();},disabled:o,style:{...Je,...o?{opacity:.6,cursor:"default"}:null,...d},children:M?"Waiting for signature \u2014 tap to open wallet":f?"Check your wallet\u2026":m?a??"Sign in with wallet":"Connect wallet"}),H&&jsxRuntime.jsx("span",{role:"alert",style:Xe,children:H})]})}var Je={padding:"11px 16px",borderRadius:"8px",border:"none",background:"#4c3fa8",color:"#fff",font:"inherit",fontWeight:600,cursor:"pointer"},Xe={display:"block",marginTop:"6px",color:"#ff9b9b",fontSize:"13px",textAlign:"center"};
2
+ exports.IDosGamesWalletProvider=D;exports.WalletLogin=qe;exports.WalletLoginButton=fe;exports.arbitrum=V;exports.base=Q;exports.bsc=z;exports.chainById=we;exports.createEvmWalletConfig=Ae;exports.idosChains=X;exports.mainnet=Y;exports.optimism=Z;exports.polygon=_;exports.polygonAmoy=J;exports.sepolia=$;exports.useEvmBridge=Fe;exports.useEvmBridgeClients=A;