unich-web3-sdk
Version:
Web3 SDK for DEX applications with multi-chain support
6 lines (5 loc) • 4.71 kB
JavaScript
"use client";
;
;var viem=require('viem'),chains=require('viem/chains'),web3_js=require('@solana/web3.js');function p(t){return [chains.mainnet,chains.goerli,chains.sepolia,chains.polygon,chains.polygonMumbai,chains.optimism,chains.optimismGoerli,chains.arbitrum,chains.arbitrumGoerli,chains.base,chains.baseGoerli].find(e=>e.id===t)}var r=class{constructor(){this.clientCache=new Map;}getProvider(n){let e=n.id;if(this.clientCache.has(e))return this.clientCache.get(e);let o=p(e),i;if(o)i=viem.createPublicClient({chain:o,transport:viem.http()});else {let s=viem.defineChain({id:Number(e),name:n.name,nativeCurrency:{name:n.nativeCurrency.name,symbol:n.nativeCurrency.symbol,decimals:n.nativeCurrency.decimals},rpcUrls:{default:{http:n.rpcUrls}},blockExplorers:n.blockExplorerUrls?{default:{name:n.name,url:n.blockExplorerUrls[0]}}:void 0});i=viem.createPublicClient({chain:s,transport:viem.http()});}return this.clientCache.set(e,i),i}async getBalance(n,e){return await this.getProvider(n).getBalance({address:e})}async getBlockNumber(n){return await this.getProvider(n).getBlockNumber()}getWalletClient(n){if(typeof window<"u"&&window.ethereum){let e=p(n.id);if(e)return viem.createWalletClient({chain:e,transport:viem.custom(window.ethereum)})}return null}};var a=class{constructor(){this.connection=null;}async getProvider(n){return this.connection||(this.connection=new web3_js.Connection(n.rpcUrls[0])),this.connection}async getBalance(n,e){let o=await this.getProvider(n),i=new web3_js.PublicKey(e),s=await o.getBalance(i);return BigInt(s)}async getBlockNumber(n){let o=await(await this.getProvider(n)).getBlockHeight();return BigInt(o)}};var A={id:1,name:"Ethereum",type:"evm",networkType:"mainnet",rpcUrls:["https://eth-mainnet.g.alchemy.com/v2/your-api-key","https://mainnet.infura.io/v3/your-api-key"],nativeCurrency:{name:"Ether",symbol:"ETH",decimals:18},blockExplorerUrls:["https://etherscan.io"],iconUrl:"https://cryptologos.cc/logos/ethereum-eth-logo.png"},V={id:137,name:"Polygon",type:"evm",networkType:"mainnet",rpcUrls:["https://polygon-rpc.com","https://polygon-mainnet.g.alchemy.com/v2/your-api-key"],nativeCurrency:{name:"MATIC",symbol:"MATIC",decimals:18},blockExplorerUrls:["https://polygonscan.com"],iconUrl:"https://cryptologos.cc/logos/polygon-matic-logo.png"},B={id:42161,name:"Arbitrum",type:"evm",networkType:"mainnet",rpcUrls:["https://arb1.arbitrum.io/rpc","https://arb-mainnet.g.alchemy.com/v2/your-api-key"],nativeCurrency:{name:"Ether",symbol:"ETH",decimals:18},blockExplorerUrls:["https://arbiscan.io"],iconUrl:"https://cryptologos.cc/logos/arbitrum-arb-logo.png"},P={id:10,name:"Optimism",type:"evm",networkType:"mainnet",rpcUrls:["https://mainnet.optimism.io","https://opt-mainnet.g.alchemy.com/v2/your-api-key"],nativeCurrency:{name:"Ether",symbol:"ETH",decimals:18},blockExplorerUrls:["https://optimistic.etherscan.io"],iconUrl:"https://cryptologos.cc/logos/optimism-op-logo.png"},S={id:56,name:"BNB Smart Chain",type:"evm",networkType:"mainnet",rpcUrls:["https://bsc-dataseed.binance.org","https://bsc-dataseed1.defibit.io"],nativeCurrency:{name:"BNB",symbol:"BNB",decimals:18},blockExplorerUrls:["https://bscscan.com"],iconUrl:"https://cryptologos.cc/logos/bnb-bnb-logo.png"},m=[A,V,B,P,S];var I={id:"mainnet-beta",name:"Solana",type:"svm",networkType:"mainnet",rpcUrls:["https://api.mainnet-beta.solana.com","https://solana-api.projectserum.com"],nativeCurrency:{name:"Solana",symbol:"SOL",decimals:9},blockExplorerUrls:["https://explorer.solana.com"],iconUrl:"https://cryptologos.cc/logos/solana-sol-logo.png"},H={id:"devnet",name:"Solana Devnet",type:"svm",networkType:"devnet",rpcUrls:["https://api.devnet.solana.com"],nativeCurrency:{name:"Solana",symbol:"SOL",decimals:9},blockExplorerUrls:["https://explorer.solana.com/?cluster=devnet"],iconUrl:"https://cryptologos.cc/logos/solana-sol-logo.png"},O={id:"testnet",name:"Solana Testnet",type:"svm",networkType:"testnet",rpcUrls:["https://api.testnet.solana.com"],nativeCurrency:{name:"Solana",symbol:"SOL",decimals:9},blockExplorerUrls:["https://explorer.solana.com/?cluster=testnet"],iconUrl:"https://cryptologos.cc/logos/solana-sol-logo.png"},h=[I,H,O];var D={evm:new r,svm:new a};function G(t){let n=D[t];if(!n)throw new Error(`Chain adapter not found for chain type: ${t}`);return n}function _(t){return G(t.type)}function L(){return [...m,...h]}function nn(t){return L().find(n=>n.id===t)||null}
exports.EVMChainAdapter=r;exports.SVMChainAdapter=a;exports.getAllChains=L;exports.getChainAdapter=G;exports.getChainAdapterForChain=_;exports.getChainById=nn;exports.popularEVMChains=m;exports.popularSVMChains=h;//# sourceMappingURL=index.js.map
//# sourceMappingURL=index.js.map