UNPKG

@lifi/widget

Version:

LI.FI Widget for cross-chain bridging and swapping. It will drive your multi-chain strategy and attract new users from everywhere.

48 lines 2.24 kB
import { getConnectorClient as getBigmiConnectorClient } from '@bigmi/client'; import { useConfig as useBigmiConfig } from '@bigmi/react'; import { ChainType, EVM, Solana, UTXO, config } from '@lifi/sdk'; import { useWallet } from '@solana/wallet-adapter-react'; import { useEffect } from 'react'; import { useConfig as useWagmiConfig } from 'wagmi'; import { getConnectorClient as getWagmiConnectorClient, switchChain, } from 'wagmi/actions'; import { useWidgetConfig } from '../WidgetProvider/WidgetProvider.js'; export const SDKProviders = () => { const { sdkConfig } = useWidgetConfig(); const { wallet } = useWallet(); const wagmiConfig = useWagmiConfig(); const bigmiConfig = useBigmiConfig(); useEffect(() => { // Configure SDK Providers const providers = []; const hasConfiguredEVMProvider = sdkConfig?.providers?.find((provider) => provider.type === ChainType.EVM); const hasConfiguredSVMProvider = sdkConfig?.providers?.some((provider) => provider.type === ChainType.SVM); const hasConfiguredUTXOProvider = sdkConfig?.providers?.some((provider) => provider.type === ChainType.UTXO); if (!hasConfiguredEVMProvider) { providers.push(EVM({ getWalletClient: () => getWagmiConnectorClient(wagmiConfig), switchChain: async (chainId) => { const chain = await switchChain(wagmiConfig, { chainId }); return getWagmiConnectorClient(wagmiConfig, { chainId: chain.id }); }, })); } if (!hasConfiguredSVMProvider) { providers.push(Solana({ async getWalletAdapter() { return wallet?.adapter; }, })); } if (!hasConfiguredUTXOProvider) { providers.push(UTXO({ getWalletClient: () => getBigmiConnectorClient(bigmiConfig), })); } if (sdkConfig?.providers?.length) { providers.push(...sdkConfig.providers); } config.setProviders(providers); }, [bigmiConfig, sdkConfig?.providers, wagmiConfig, wallet?.adapter]); return null; }; //# sourceMappingURL=SDKProviders.js.map