import { InjectedWallet, SolanaWalletProvider, WindowWithSolanaInjectedWallets, } from '../../types/walletProviders'; export function getSolanaWalletProvider( injectedWallet: T, ): SolanaWalletProvider { let walletProvider = undefined; if (typeof window !== 'undefined') { const WINDOW = window as WindowWithSolanaInjectedWallets; switch (injectedWallet) { case InjectedWallet.COINBASE: { walletProvider = WINDOW.coinbaseSolana; break; } case InjectedWallet.OKX: { walletProvider = WINDOW.okxwallet?.solana; break; } case InjectedWallet.PHANTOM: { walletProvider = WINDOW.phantom?.solana; break; } case InjectedWallet.BACKPACK: { walletProvider = WINDOW.backpack?.solana; break; } case InjectedWallet.SOLFLARE: { walletProvider = WINDOW.solflare; break; } } } if (!walletProvider) { throw new Error(`Solana wallet provider for ${injectedWallet} not found.`); } return walletProvider as SolanaWalletProvider; } export function isWalletAvailable(injectedWallet: InjectedWallet) { try { const provider = getSolanaWalletProvider(injectedWallet); return Boolean(provider); } catch { console.info(`The ${injectedWallet} Solana wallet is not available.`); } return false; }