In Dynamic, we treat each chain (EVM, SOL, etc.) and each wallet app (or wallet provider) as a separate entity. For example, if you have both EVM and SOL chains enabled and their extension added to your Dynamic Client, and then user has MetaMask and Phantom installed, you will get four wallet providers data in the list returned by getAvailableWalletProvidersData, with keys like metamaskevm, metamasksol, phantomevm and phantomsol. The list of available wallet providers data will depend on which extensions you have added to your Dynamic Client, and which wallets support each standard or protocol.

Usage

import { connectAndVerifyWithWalletProvider, getAvailableWalletProvidersData } from '@dynamic-labs-sdk/client';

const walletProvidersData = getAvailableWalletProvidersData();

// You can create a list of buttons for the user to select from
walletProvidersData.forEach((walletProviderData) => {
  return (
    <button key={walletProviderData.id} onClick={() => connectAndVerifyWithWalletProvider({walletProviderKey: walletProviderData.key})}>
      {walletProviderData.metadata.displayName}
    </button>
  )
})

You can also group or filter by wallet app (like metamask, phantom, etc) by using the groupKey field, Or by chain (like all EVM wallets, or all SOL wallets, etc.) by using the chain field.