import type { Address, Chain } from "viem"; import type { ChainName } from "./types.js"; export interface TokenInfo { address: Address; decimals: number; } export interface ChainConfig { name: ChainName; id: number; viemChain: Chain; /** Token symbol -> info. Symbols are case-insensitive at resolution time. */ tokens: Record; contracts: { /** Balancer Vault (flash-loan provider for the Manager). Same address on all three chains. */ balancerVault: Address; /** Aave V3 Pool (for the AaveV3 strategy verb). Verify against resources/chains.md before mainnet. */ aaveV3Pool?: Address; /** Uniswap V3 SwapRouter (the original deadline-bearing router; matches the decoder's exactInput). */ uniswapV3Router?: Address; /** Uniswap V3 NonfungiblePositionManager (decoder constructor arg; used for LP sanitization). */ uniswapV3PositionManager?: Address; /** Odos V2 router (constructor arg for the full syUSD decoder's Odos sanitizer). */ odosRouter?: Address; /** Magpie (fly.trade) router (constructor arg for the full syUSD decoder's Magpie sanitizer). */ magpieRouter?: Address; }; } export declare const CHAINS: Record; /** Resolve a chain by name or numeric id. */ export declare function resolveChain(chain: ChainName | number): ChainConfig; /** Resolve a token symbol (case-insensitive) or raw 0x address to an Address on the given chain. */ export declare function resolveToken(chain: ChainConfig, symbolOrAddress: Address | string): Address; /** Look up known decimals for a token symbol or address on the given chain (undefined if unknown). */ export declare function tokenDecimals(chain: ChainConfig, symbolOrAddress: Address | string): number | undefined;