'use client'; import { createWeb3Modal } from '@web3modal/wagmi/react'; import { WagmiProvider, createConfig, http } from 'wagmi'; import { mainnet, sepolia, base, arbitrum } from 'wagmi/chains'; import { QueryClient, QueryClientProvider } from '@tanstack/react-query'; import { PropsWithChildren, useEffect, useState } from 'react'; const projectId = process.env.NEXT_PUBLIC_WALLETCONNECT_PROJECT_ID || ''; if (!projectId) { // eslint-disable-next-line no-console console.warn('[Web3] Missing NEXT_PUBLIC_WALLETCONNECT_PROJECT_ID. WalletConnect will be limited.'); } const metadata = { name: 'MortgageFi', description: 'Decentralized Mortgage Lending Platform', url: 'https://mortgagefi.app', icons: ['https://mortgagefi.app/logo.png'] }; const config = createConfig({ chains: [base, arbitrum, mainnet, sepolia], transports: { [base.id]: http(), [arbitrum.id]: http(), [mainnet.id]: http(), [sepolia.id]: http(), }, ssr: true, }); createWeb3Modal({ wagmiConfig: config, projectId: projectId || 'missing_project_id', enableAnalytics: true, enableOnramp: true, themeMode: 'light', themeVariables: { '--w3m-accent': '#4F46E5', '--w3m-font-family': 'Inter, sans-serif', }, }); const queryClient = new QueryClient(); export function Web3Provider({ children }: PropsWithChildren) { const [mounted, setMounted] = useState(false); useEffect(() => { setMounted(true); }, []); return ( {mounted && children} ); }