import { WalletInit } from '@web3-onboard/common' function walletLink(options?: { darkMode?: boolean }): WalletInit { const { darkMode = false } = options || {} return () => { return { label: 'Coinbase', getIcon: async () => (await import('./icon.js')).default, getInterface: async ({ chains, appMetadata }) => { const [chain] = chains const { name, icon } = appMetadata || {} const { WalletLink } = await import('walletlink') const base64 = window.btoa(icon || '') const appLogoUrl = `data:image/svg+xml;base64,${base64}` const instance = new WalletLink({ appName: name || '', appLogoUrl, darkMode }) const walletLinkProvider = instance.makeWeb3Provider( chain.rpcUrl, parseInt(chain.id) ) // patch the chainChanged event const on = walletLinkProvider.on.bind(walletLinkProvider) walletLinkProvider.on = (event, listener) => { on(event, val => { if (event === 'chainChanged') { listener(`0x${(val as number).toString(16)}`) return } listener(val) }) return walletLinkProvider } return { provider: walletLinkProvider, instance } } } } } /** * @deprecated Use @web3-onboard/coinbase */ export default walletLink