/** * Multi-chain configuration for b402 * * B402 Railgun fork contracts (0% protocol fees): * - BSC Mainnet: 0x9dB0eDC77C9047a06Fd6dE82c892630DAa5eF601 * - Base Mainnet: 0x26111e2379E5fC0A7Cd8728fe52c7b84CA4fbE85 * - Arbitrum One: 0x9dB0eDC77C9047a06Fd6dE82c892630DAa5eF601 (deployed 2026-04-13) */ export interface ChainConfig { name: string; chainId: number; railgunRelay: `0x${string}`; /** RelayAdapt cross-contract call router — differs per chain. Optional for chains without RelayAdapt deployed yet. */ relayAdapt?: `0x${string}`; rpc: string; backendApiUrl: string; facilitatorUrl?: string; explorerUrl: string; tokens: Record; } export declare const B402_TREASURY: { readonly MPK: "0x2ee3d72502613195a791ab3b68935d910bc1a36b634d62eeceb9a9cfb1a1d697"; readonly VPK: "0x04ffbb58b9a4cb0fb472ad2a934e63832bf1a959b07f390f149fa4c70867fe53"; }; export declare const B402_CHAINS: Record; export declare const RAILGUN_NETWORK_MAP: Record; export declare const CHAIN_ALIASES: Record; /** * Get chain config by chain ID or alias */ export declare function getChainConfig(chainIdOrAlias: number | string): ChainConfig; /** * Get token address for a chain */ export declare function getTokenAddress(chainId: number, symbol: string): `0x${string}`; /** * Get Railgun relay contract for a chain */ export declare function getRailgunRelay(chainId: number): `0x${string}`; /** * Get RelayAdapt cross-contract call router for a chain. * Throws if the chain has no RelayAdapt deployed (required for private DeFi / bridges). */ export declare function getRelayAdaptAddress(chainId: number): `0x${string}`; /** * Get backend API URL for a chain */ export declare function getBackendApiUrl(chainId: number): string; export interface ChainContracts { RAILGUN_RELAY: `0x${string}`; ENTRY_POINT: `0x${string}`; NEXUS_FACTORY: `0x${string}`; NEXUS_BOOTSTRAP: `0x${string}`; K1_VALIDATOR: `0x${string}`; PAYMASTER: `0x${string}` | undefined; } /** * Get all contract addresses for a chain (Railgun + ERC-4337 + paymaster). * ERC-4337 contracts are deterministic — same address on every chain. * Railgun and paymaster are chain-specific. */ export declare function getContractsForChain(chainId: number): ChainContracts; /** * Get the Railgun SDK NetworkName for a chain ID. * Used to initialize the Railgun engine and call populateShield/populateUnshield. */ export declare function getRailgunNetworkName(chainId: number): string; /** * Get default chain from environment or fallback to Base */ export declare function getDefaultChainId(): number;