Files
mortgagefi-helper/config/web3.ts
2025-08-28 15:16:02 +04:00

44 lines
1.6 KiB
TypeScript

import { createConfig, http } from 'wagmi';
import { mainnet, sepolia, base, arbitrum } from 'wagmi/chains';
// Create wagmiConfig
const metadata = {
name: 'MortgageFi',
description: 'Decentralized Mortgage Lending Platform',
url: 'https://mortgagefi.app',
icons: ['https://mortgagefi.app/logo.png']
};
// Prefer custom RPCs to avoid public-provider rate limits (429)
// Support runtime overrides via localStorage:
// - rpc:base
// - rpc:arbitrum
// - rpc:mainnet
function runtimeRpc(key: string): string | null {
try {
if (typeof window !== 'undefined' && window.localStorage) {
const v = window.localStorage.getItem(key);
return (v && v.trim()) ? v.trim() : null;
}
} catch {}
return null;
}
const enableMainnet = process.env.NEXT_PUBLIC_ENABLE_MAINNET === 'true';
const baseRpc = runtimeRpc('rpc:base') || process.env.NEXT_PUBLIC_RPC_BASE || 'https://base.llamarpc.com';
const arbitrumRpc = runtimeRpc('rpc:arbitrum') || process.env.NEXT_PUBLIC_RPC_ARBITRUM || '';
const mainnetRpc = runtimeRpc('rpc:mainnet') || '';
export const config = createConfig({
chains: [base, arbitrum, ...(enableMainnet ? [mainnet] : []), sepolia],
transports: {
[base.id]: baseRpc ? http(baseRpc, { batch: true, retryCount: 2, retryDelay: 250 }) : http(undefined, { batch: true, retryCount: 2, retryDelay: 250 }),
[arbitrum.id]: arbitrumRpc ? http(arbitrumRpc, { batch: true, retryCount: 2, retryDelay: 250 }) : http(undefined, { batch: true, retryCount: 2, retryDelay: 250 }),
[mainnet.id]: mainnetRpc ? http(mainnetRpc, { batch: true, retryCount: 2, retryDelay: 250 }) : http(),
[sepolia.id]: http(),
},
ssr: true,
});