UNPKG

@xswap-link/sdk

Version:
53 lines (48 loc) 1.44 kB
import { Chain } from "@src/models"; import { isServer } from "@src/utils"; import { Transport } from "viem"; import * as WagmiChains from "viem/chains"; import { mainnet } from "viem/chains"; import { Config, createConfig, createStorage, http } from "@wagmi/core"; import { walletConnect } from "@wagmi/connectors"; const storage = createStorage({ key: "xpay.wagmi.store", storage: !isServer ? localStorage : undefined, }); export const getWagmiConfig = (supportedChains: Chain[]): Config => { const chains = mapChains(supportedChains); const transports = mapTransports(chains); return createConfig({ chains, transports, connectors: [ walletConnect({ projectId: "c392898b45ac587a280b5eb33e92aeb0", showQrModal: true, }), ], storage, }); }; const mapChains = ( supportedChains: Chain[], ): [WagmiChains.Chain, ...WagmiChains.Chain[]] => { const result: [WagmiChains.Chain, ...WagmiChains.Chain[]] = [mainnet]; result.push( ...Object.values(WagmiChains).filter( (chain) => chain.id !== mainnet.id && supportedChains.some(({ chainId }) => chainId === chain.id.toString()), ), ); return result; }; const mapTransports = ( chains: WagmiChains.Chain[], ): Record<number, Transport> => { const transports: Record<number, Transport> = {}; chains.forEach((chain) => { transports[chain.id] = http(); }); return transports; };