UNPKG

@lifi/wallet-management

Version:

LI.FI Wallet Management solution.

79 lines (73 loc) 2.1 kB
import { createConfig, ctrl, leather, okx, onekey, phantom, unisat, xverse, } from '@bigmi/client' import { bitcoin } from '@bigmi/core' import { ChainId } from '@lifi/sdk' import { http, createClient } from 'viem' import type { Config, CreateConnectorFn } from 'wagmi' export interface DefaultBigmiConfigProps { bigmiConfig?: { ssr?: boolean multiInjectedProviderDiscovery?: boolean } connectors?: CreateConnectorFn[] /** * Load Wallet SDKs only if the wallet is the most recently connected wallet */ lazy?: boolean } export interface DefaultBigmiConfigResult { config: Config connectors: CreateConnectorFn[] } /** * Creates default Bigmi config that can be later synced (via useSyncBigmiConfig) with chains fetched from LI.FI API. * @param props Properties to setup connectors. {@link DefaultBigmiConfigProps} * @returns Bigmi config and connectors. {@link DefaultBigmiConfigResult} * @example * const { config, connectors } = createDefaultBigmiConfig(); * export const WalletProvider: FC<PropsWithChildren> = ({ children }) => { * const { chains } = useAvailableChains(); * useSyncBigmiConfig(config, connectors, chains); * return ( * <BigmiProvider config={wagmi.config} reconnectOnMount={false}> * {children} * </BigmiProvider> * ); * }; */ export function createDefaultBigmiConfig( props: DefaultBigmiConfigProps = { bigmiConfig: { multiInjectedProviderDiscovery: false }, } ): DefaultBigmiConfigResult { const connectors: CreateConnectorFn[] = [ phantom({ chainId: ChainId.BTC }), xverse({ chainId: ChainId.BTC }), unisat({ chainId: ChainId.BTC }), ctrl({ chainId: ChainId.BTC }), okx({ chainId: ChainId.BTC }), leather({ chainId: ChainId.BTC }), onekey({ chainId: ChainId.BTC }), ...(props?.connectors ?? []), ] const config = createConfig({ chains: [bitcoin], connectors, client({ chain }) { return createClient({ chain, transport: http() }) }, ...props?.bigmiConfig, }) return { config, connectors, } }