getProviders & getProviderById

Detecting the providers with getProviders

If the user has multiple browser extension wallets installed, Sats Connect will detect the extensions that inject their provider information under window.btc_providers , following the WBIP004 standard.

Sats Connect will construct a "multiprovider" array at window.btc_providers , containing the injected provider from each wallet. Xverse Wallet can be identified in this array by the following properties:

window: {
  webbtc_providers: [
   {
     id: "BitcoinProvider" || "xverseProviders.BitcoinProvider",
     name: "Xverse Wallet",
     icon: "data:image/svg+xml;base64,PHN2Z..ZnPgo=",
     webUrl: "https://www.xverse.app",
     chromeWebStoreUrl:"https://chromewebstore.google.com/detail/xverse-wallet/idnnbdplmphpflfnlkomgpfbpcgelopg",
     googlePlayStoreUrl:"https://play.google.com/store/apps/details?id=com.secretkeylabs.xverse",
     iOSAppStoreUrl:"https://apps.apple.com/us/app/xverse-bitcoin-wallet/id1552272513",
     methods: ["getAddress", "getInfo", "signMessage", "signPsbt", "sendTransfer", "signMultipleTransactions", "createInscription", "createRepeatInscriptions", "stx_signMessage","stx_transferStx", "stx_signTransaction", "stx_callContract"],		
    }
  ],
}

Your application can detect the user's installed wallet providers with the getProviders method.

No request parameters are required:

import {getProviders} from "sats-connect";

const providers = getProviders()

The getProviders method returns an array of btcProvider objects with the following WBIP004 properties:

Property
Description

id

a string representing the path to the wallet provider in the global/window object Xverse provider example:"BitcoinProvider" || "xverseProviders.BitcoinProvider"

name

a string representing the name of the wallet provider to show in the connect wallet UI Xverse provider example: "Xverse Wallet"

icon

a string representing the wallet provider's icon as to show in the connect wallet UI, as data URI (SVG image encoded in base64 format) Xverse provider example:data:image/svg+xml;base64,PHN2Z..ZnPgo=

webUrl

chromeWebStoreUrl

goodlePlayStoreUrl

iOSAppStoreUrl

methods

An array of strings representing the list of methods supported by the wallet provider Xverse provider example: ["getAddress", "getInfo", "signMessage", "signPsbt", "sendTransfer", "signMultipleTransactions", "createInscription", "createRepeatInscriptions", "stx_signMessage","stx_transferStx", "stx_signTransaction", "stx_callContract"]

Selecting a provider with getProviderById

You can use the getProviderById method to select any specific provider from the list of providers injected under window.btc_providers

No request parameters are required:

import {getProviders, getProviderById} from "sats-connect";

const providers = getProviders();

const firstProvider = providers[0];

const providerObject = getProviderById(firstProvider.id);

const response = providerObject.reauest('getInfo', null);

The getProviderById method returns the provider object that the wallets injects in the window object.