UNPKG

@swapper-finance/sdk

Version:
56 lines (51 loc) 1.51 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"; import { injected, metaMask, safe, walletConnect } from "wagmi/connectors"; const storage = createStorage({ key: "swappersdk.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: [ injected(), metaMask(), safe(), walletConnect({ projectId: "c392898b45ac587a280b5eb33e92aeb0", showQrModal: false, }), ], 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; };