@lifi/wallet-management
Version:
LI.FI Wallet Management solution.
26 lines (24 loc) • 824 B
text/typescript
import type { Chain } from 'viem'
import { mainnet } from 'viem/chains'
import type { Config, CreateConnectorFn } from 'wagmi'
import { reconnect } from 'wagmi/actions'
export const syncWagmiConfig = async (
wagmiConfig: Config,
connectors: CreateConnectorFn[],
chains: readonly [Chain, ...Chain[]]
) => {
const _mainnet = chains.find((chain) => chain.id === mainnet.id)
if (_mainnet) {
_mainnet.contracts = { ...mainnet.contracts, ..._mainnet.contracts }
}
wagmiConfig._internal.chains.setState(chains)
wagmiConfig._internal.connectors.setState(() =>
[
...connectors,
...(wagmiConfig._internal.mipd
?.getProviders()
.map(wagmiConfig._internal.connectors.providerDetailToConnector) ?? []),
].map(wagmiConfig._internal.connectors.setup)
)
reconnect(wagmiConfig)
}