//#region extensions/crypto/src/lib/contract-registry.d.ts /** * Contract Address Registry --- single source of truth for all protocol addresses. * * Why this exists: * - Protocol upgrades change contract addresses (Aave v3 pools, Uniswap routers, etc.) * - Before this file, the same address was hardcoded in 6-12 files each * - A protocol upgrade required a find-and-replace across the entire codebase * * Protocol versions pinned here (as of 2026-03-11): * - Aave V3 (Base deployment: March 2024) * - Lido V2 (stETH/wstETH) * - Rocket Pool Atlas (rETH) * - Morpho Blue (Base deployment) * - Yearn V3 (Base vaults) * - Uniswap Universal Router (Base + Ethereum) * - Permit2 (canonical, all chains) * - Aerodrome (Base DEX + governance) * - Chainlink price feeds (multi-chain) * * Usage: * import { AAVE, LIDO, TOKENS, getChainlinkFeed } from '../lib/contract-registry.js'; * const pool = AAVE.pool; // 0xA238... * const wstETH = LIDO.wstETH; // chain-aware via LIDO.base.wstETH */ type Address = `0x${string}`; declare const AAVE: { /** Aave V3 Pool (Base) --- core lending/borrowing entry point */readonly pool: Address; /** Aave V3 PoolDataProvider (Base) --- read-only reserve/user data */ readonly poolDataProvider: Address; /** Aave V3 Oracle (Base) --- asset price oracle */ readonly oracle: Address; /** aToken / debtToken addresses for supported assets on Base */ readonly aTokens: { readonly WETH: { readonly aToken: Address; readonly debtToken: Address; }; readonly USDC: { readonly aToken: Address; readonly debtToken: Address; }; readonly cbETH: { readonly aToken: Address; readonly debtToken: Address; }; readonly USDbC: { readonly aToken: Address; readonly debtToken: Address; }; }; /** Aave Governance V2 (Ethereum mainnet) */ readonly governance: { readonly governor: Address; readonly token: Address; }; }; declare const LIDO: { readonly ethereum: { readonly stETH: Address; readonly wstETH: Address; }; readonly base: { readonly wstETH: Address; }; }; declare const ROCKET_POOL: { readonly ethereum: { readonly rETH: Address; readonly depositPool: Address; }; readonly base: { readonly rETH: Address; }; }; declare const CBETH: { readonly ethereum: Address; readonly base: Address; }; declare const MORPHO: { /** Morpho Blue core (Base) */readonly core: Address; /** MORPHO token (Ethereum) */ readonly token: Address; /** Morpho claim contract (Ethereum) */ readonly claimContract: Address; }; declare const YEARN: { readonly base: { readonly yvUSDC: Address; readonly yvWETH: Address; readonly yvDAI: Address; }; }; declare const UNISWAP: { /** Universal Router --- deployed at same address on Base, Ethereum, Arbitrum, OP, Polygon */readonly universalRouter: Address; /** V2 Router (Ethereum only) */ readonly v2Router: Address; /** V3 Router (Ethereum only) */ readonly v3Router: Address; readonly base: { /** Universal Router on Base (alternative deployment) */readonly universalRouter: Address; /** V4 Position Manager on Base */ readonly v4PositionManager: Address; }; readonly governance: { readonly governor: Address; readonly token: Address; }; }; /** Canonical Permit2 address --- same on all EVM chains */ declare const PERMIT2: Address; declare const AERODROME: { readonly governor: Address; readonly token: Address; }; declare const ENS: { readonly governor: Address; readonly token: Address; }; declare const DEX_ROUTERS: { /** 0x Exchange Proxy --- Base, Ethereum, Arbitrum, OP, Polygon */readonly zeroX: Address; /** 1inch Router v5 --- Base, Ethereum, Arbitrum, Polygon */ readonly oneInch: Address; /** KyberSwap Router (Base) */ readonly kyber: Address; /** Odos Router (Base) */ readonly odos: Address; /** SushiSwap Router (Ethereum) */ readonly sushi: Address; }; declare const TOKENS: { readonly base: { readonly USDC: Address; readonly WETH: Address; readonly USDT: Address; readonly DAI: Address; readonly USDbC: Address; readonly CLAWNCH: Address; }; readonly ethereum: { readonly USDC: Address; readonly WETH: Address; readonly USDT: Address; readonly DAI: Address; readonly WBTC: Address; readonly LINK: Address; readonly UNI: Address; readonly AAVE: Address; }; readonly arbitrum: { readonly USDC: Address; readonly WETH: Address; readonly USDT: Address; readonly ARB: Address; readonly DAI: Address; }; readonly optimism: { readonly USDC: Address; readonly WETH: Address; readonly USDT: Address; readonly OP: Address; readonly DAI: Address; }; readonly polygon: { readonly USDC: Address; readonly WETH: Address; readonly USDT: Address; readonly WMATIC: Address; readonly DAI: Address; readonly USDCe: Address; }; }; /** Common sentinel for native ETH in DeFi protocols (e.g. 0x Exchange, Uniswap) */ declare const ETH_SENTINEL: Address; declare const ZERO_ADDRESS: Address; declare const AIRDROPS: { readonly eigenlayer: { readonly token: Address; readonly claim: Address; }; readonly zksync: { readonly token: Address; readonly claim: Address; }; readonly layerzero: { readonly token: Address; readonly claim: Address; }; readonly scroll: { readonly token: Address; readonly claim: Address; }; readonly degen: { readonly token: Address; readonly claim: `0x${string}`; }; readonly morpho: { readonly token: `0x${string}`; readonly claim: `0x${string}`; }; readonly arbitrum: { readonly token: Address; readonly claim: Address; }; readonly optimism: { readonly token: Address; readonly claim: Address; }; }; declare const CHAINLINK_FEEDS: Record>; /** * Get the Chainlink feed address for a pair on a given chain. * Returns undefined if no feed is registered. */ declare function getChainlinkFeed(chainId: number, pair: string): Address | undefined; //#endregion export { AAVE, AERODROME, AIRDROPS, CBETH, CHAINLINK_FEEDS, DEX_ROUTERS, ENS, ETH_SENTINEL, LIDO, MORPHO, PERMIT2, ROCKET_POOL, TOKENS, UNISWAP, YEARN, ZERO_ADDRESS, getChainlinkFeed }; //# sourceMappingURL=contract-registry.d.mts.map