{"version":3,"sources":["../../spectrum-api-spec/dist/constants/chains.js","../../spectrum-api-spec/dist/constants/tokens.js","../../spectrum-api-spec/dist/constants/json-rpc.js","../../spectrum-api-spec/dist/constants/defi.js","../../spectrum-api-spec/dist/constants/yields.js","../../spectrum-api-spec/dist/constants/solana.js","../../spectrum-api-spec/dist/constants/integration.js","../../spectrum-api-spec/dist/constants/testing/pinned.js","../../spectrum-api-spec/dist/constants/testing/fixture-inputs.js","../../spectrum-api-spec/dist/constants/testing/chains/ethereum.js","../../spectrum-api-spec/dist/constants/testing/chains/polygon.js","../../spectrum-api-spec/dist/constants/testing/chains/bsc.js","../../spectrum-api-spec/dist/constants/testing/chains/optimism.js","../../spectrum-api-spec/dist/constants/testing/chains/base.js","../../spectrum-api-spec/dist/constants/testing/chains/avalanche.js","../../spectrum-api-spec/dist/constants/testing/chains/arbitrum.js","../../spectrum-api-spec/dist/constants/testing/chains/gnosis.js","../../spectrum-api-spec/dist/constants/testing/chains/berachain.js","../../spectrum-api-spec/dist/constants/testing/chains/moonbeam.js","../../spectrum-api-spec/dist/constants/testing/chains/monad.js","../../spectrum-api-spec/dist/constants/testing/chains/linea.js","../../spectrum-api-spec/dist/constants/testing/chains/hyperliquid.js","../../spectrum-api-spec/dist/constants/testing/chains/scroll.js","../../spectrum-api-spec/dist/constants/testing/chains/plasma.js","../../spectrum-api-spec/dist/constants/testing/chains/xlayer.js","../../spectrum-api-spec/dist/constants/testing/chains/solana.js","../../spectrum-api-spec/dist/constants/testing/chains/bitcoin.js","../../spectrum-api-spec/dist/constants/testing/chains/starknet.js","../../spectrum-api-spec/dist/constants/testing/chain-matrix.js","../../spectrum-api-spec/dist/constants/testing/core-vectors.js","../../spectrum-api-spec/dist/constants/testing/assets-vectors.js","../../spectrum-api-spec/dist/constants/testing/defi-vectors.js","../../spectrum-api-spec/dist/constants/testing/cosmos-vectors.js","../src/types/errors.ts","../src/internals/cache.ts","../src/internals/utils.ts","../src/internals/retry.ts","../src/internals/logger.ts","../package.json","../src/internals/version.ts","../src/client.ts","../../spectrum-api-spec/dist/models/common.js","../../spectrum-api-spec/dist/models/starknet.js","../../spectrum-api-spec/dist/models/cosmos.js","../../spectrum-api-spec/dist/models/ens.js","../../spectrum-api-spec/dist/models/core.js","../../spectrum-api-spec/dist/models/json-rpc.js","../../spectrum-api-spec/dist/models/logs.js","../../spectrum-api-spec/dist/models/prices.js","../../spectrum-api-spec/dist/models/marketplace.js","../../spectrum-api-spec/dist/models/tokens.js","../../spectrum-api-spec/dist/models/portfolio.js","../../spectrum-api-spec/dist/models/network-calendar.js","../../spectrum-api-spec/dist/models/nfts.js","../../spectrum-api-spec/dist/models/defi.js","../../spectrum-api-spec/dist/models/yields.js","../../spectrum-api-spec/dist/models/rpc.js","../../spectrum-api-spec/dist/models/contracts.js","../../spectrum-api-spec/dist/models/solana.js","../../spectrum-api-spec/dist/models/registry.js","../src/internals/validation.ts","../src/namespaces/base.ts","../src/namespaces/core.ts","../src/namespaces/tokens.ts","../src/namespaces/yields.ts","../src/namespaces/utils.ts","../src/namespaces/prices.ts","../src/namespaces/defi.ts","../src/namespaces/nfts.ts","../src/namespaces/ens.ts","../src/namespaces/registry.ts","../src/namespaces/rpc.ts","../src/internals/abi.ts","../src/internals/block-tag.ts","../src/namespaces/contracts.ts","../src/namespaces/solana.ts","../src/namespaces/cosmos.ts","../src/namespaces/data.ts","../src/namespaces/marketplace.ts","../src/namespaces/network-calendar.ts","../src/internals/chain-ref.ts","../src/internals/config.ts","../src/spectrum.ts"],"names":["z","Interface","AbiCoder","FunctionFragment"],"mappings":"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","file":"index.cjs","sourcesContent":["/** Use to group chains by family, like EVM vs Solana. */\nexport const SUPPORTED_CHAIN_TYPES = [\n    \"EVM\",\n    \"Solana\",\n    \"Bitcoin\",\n    \"Cosmos\",\n    \"Starknet\",\n];\n/**\n * Named-literal mirror of SUPPORTED_CHAIN_TYPES for call sites that read as\n * `CHAIN_TYPE.EVM` (guards, switch arms, error messages). Values stay in\n * lockstep with SUPPORTED_CHAIN_TYPES via the `satisfies` constraint.\n */\nexport const CHAIN_TYPE = {\n    EVM: \"EVM\",\n    SOLANA: \"Solana\",\n    BITCOIN: \"Bitcoin\",\n    STARKNET: \"Starknet\",\n    COSMOS: \"Cosmos\",\n};\n/** Main chain list used to build enums, maps, and normalization helpers. */\nexport const SUPPORTED_CHAINS = [\n    { slug: \"ethereum\", type: \"EVM\", aliases: [] },\n    { slug: \"polygon\", type: \"EVM\", aliases: [\"polygon-pos\"] },\n    { slug: \"bsc\", type: \"EVM\", aliases: [\"binance-smart-chain\"] },\n    { slug: \"optimism\", type: \"EVM\", aliases: [\"optimistic-ethereum\"] },\n    { slug: \"base\", type: \"EVM\", aliases: [] },\n    { slug: \"avalanche\", type: \"EVM\", aliases: [] },\n    { slug: \"arbitrum\", type: \"EVM\", aliases: [\"arbitrum-one\"] },\n    { slug: \"gnosis\", type: \"EVM\", aliases: [\"xdai\"] },\n    { slug: \"berachain\", type: \"EVM\", aliases: [] },\n    { slug: \"moonbeam\", type: \"EVM\", aliases: [] },\n    { slug: \"monad\", type: \"EVM\", aliases: [] },\n    { slug: \"linea\", type: \"EVM\", aliases: [] },\n    { slug: \"hyperliquid\", type: \"EVM\", aliases: [\"hyperevm\"] },\n    { slug: \"scroll\", type: \"EVM\", aliases: [] },\n    { slug: \"plasma\", type: \"EVM\", aliases: [] },\n    { slug: \"xlayer\", type: \"EVM\", aliases: [\"x-layer\"] },\n    { slug: \"solana\", type: \"Solana\", aliases: [] },\n    { slug: \"bitcoin\", type: \"Bitcoin\", aliases: [] },\n    { slug: \"starknet\", type: \"Starknet\", aliases: [] },\n    { slug: \"cosmoshub\", type: \"Cosmos\", aliases: [\"cosmos\"] },\n    { slug: \"osmosis\", type: \"Cosmos\", aliases: [] },\n    { slug: \"axelar\", type: \"Cosmos\", aliases: [] },\n    { slug: \"noble\", type: \"Cosmos\", aliases: [\"nobleblocks\"] },\n    { slug: \"agoric\", type: \"Cosmos\", aliases: [] },\n];\n/** Use when an endpoint should only accept the public chain slugs. */\nexport const SUPPORTED_CHAIN_SLUGS = SUPPORTED_CHAINS.map((chain) => chain.slug);\n/** Use when something should only run on EVM chains. */\nexport const EVM_CHAIN_SLUGS = SUPPORTED_CHAINS.filter((chain) => chain.type === \"EVM\").map((chain) => chain.slug);\n/** Use when something should only run on Starknet chains. */\nexport const STARKNET_CHAIN_SLUGS = SUPPORTED_CHAINS.filter((chain) => chain.type === \"Starknet\").map((chain) => chain.slug);\n/** Use when something should only run on Solana chains. */\nexport const SOLANA_CHAIN_SLUGS = SUPPORTED_CHAINS.filter((chain) => chain.type === \"Solana\").map((chain) => chain.slug);\n/** Use when something should only run on Cosmos chains. */\nexport const COSMOS_CHAIN_SLUGS = SUPPORTED_CHAINS.filter((chain) => chain.type === \"Cosmos\").map((chain) => chain.slug);\n/** Use when something should only run on the pre-Cosmos generic chain set. */\nexport const NON_COSMOS_CHAIN_SLUGS = SUPPORTED_CHAINS.filter((chain) => chain.type !== \"Cosmos\").map((chain) => chain.slug);\n/** Stable EVM chain subset used by integration tests for multi-chain contract coverage. */\nexport const CORE_REGRESSION_CHAINS = [\n    \"ethereum\",\n    \"polygon\",\n    \"base\",\n    \"arbitrum\",\n    \"optimism\",\n];\n/** Pinned heights used by integration regression tests so payload checks stay stable. */\nexport const REGRESSION_BLOCK_HEIGHTS = {\n    ethereum: 23_000_000,\n    polygon: 73_000_000,\n    base: 31_000_000,\n    arbitrum: 320_000_000,\n    optimism: 135_000_000,\n};\n/** Use to turn legacy or DB chain names into the public slug. */\nexport const DB_IDENTIFIER_TO_CHAIN_SLUG = {\n    \"polygon-pos\": \"polygon\",\n    \"binance-smart-chain\": \"bsc\",\n    \"optimistic-ethereum\": \"optimism\",\n    \"arbitrum-one\": \"arbitrum\",\n    xdai: \"gnosis\",\n    cosmos: \"cosmoshub\",\n    nobleblocks: \"noble\",\n    hyperevm: \"hyperliquid\",\n};\nconst buildChainMap = (chains) => Object.fromEntries(chains.map((chain) => [chain.slug, chain]));\n/** Use for fast lookup when code already has a chain slug and needs the full chain definition. */\nexport const SUPPORTED_CHAIN_MAP = buildChainMap(SUPPORTED_CHAINS);\n","/** Use for the canonical USDC contract on each supported EVM chain. */\nexport const CHAIN_USDC_ADDRESSES = {\n    ethereum: '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48',\n    polygon: '0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359',\n    arbitrum: '0xaf88d065e77c8cC2239327C5EDb3A432268e5831',\n    optimism: '0x0b2C639c533813f4Aa9D7837CAf62653d097Ff85',\n    base: '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913',\n    avalanche: '0xB97EF9Ef8734C71904D8002F8b6Bc66Dd9c48a6E',\n    bsc: '0x8AC76a51cc950d9822D68b83fE1Ad97B32Cd580d',\n};\n/** Use for the canonical wrapped-native token on each supported EVM chain. */\nexport const CHAIN_WETH_ADDRESSES = {\n    ethereum: '0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2',\n    polygon: '0x7ceB23fD6bC0adD59E62ac25578270cFf1b9f619',\n    arbitrum: '0x82aF49447D8a07e3bd95BD0d56f35241523fBab1',\n    optimism: '0x4200000000000000000000000000000000000006',\n    base: '0x4200000000000000000000000000000000000006',\n    bsc: '0x2170Ed0880ac9A755fd29B2688956BD959F933F8',\n};\n/** Use for approval scans and other helpers that need a small canonical token set per chain. */\nexport const COMMON_TOKENS = {\n    ethereum: [\n        { symbol: 'USDC', address: CHAIN_USDC_ADDRESSES.ethereum },\n        { symbol: 'USDT', address: '0xdAC17F958D2ee523a2206206994597C13D831ec7' },\n        { symbol: 'DAI', address: '0x6B175474E89094C44Da98b954EedeAC495271d0F' },\n        { symbol: 'WETH', address: '0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2' },\n        { symbol: 'WBTC', address: '0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599' },\n        { symbol: 'LINK', address: '0x514910771AF9Ca656af840dff83E8264EcF986CA' },\n    ],\n    polygon: [\n        { symbol: 'USDC', address: CHAIN_USDC_ADDRESSES.polygon },\n        { symbol: 'USDT', address: '0xc2132D05D31c914a87C6611C10748AEb04B58e8F' },\n        { symbol: 'WETH', address: '0x7ceB23fD6bC0adD59E62ac25578270cFf1b9f619' },\n        { symbol: 'WMATIC', address: '0x0d500B1d8E8eF31E21C99d1Db9A6444d3ADf1270' },\n    ],\n    arbitrum: [\n        { symbol: 'USDC', address: CHAIN_USDC_ADDRESSES.arbitrum },\n        { symbol: 'USDT', address: '0xFd086bC7CD5C481DCC9C85ebE478A1C0b69FCbb9' },\n        { symbol: 'WETH', address: '0x82aF49447D8a07e3bd95BD0d56f35241523fBab1' },\n    ],\n    optimism: [\n        { symbol: 'USDC', address: CHAIN_USDC_ADDRESSES.optimism },\n        { symbol: 'USDT', address: '0x94b008aA00579c1307B0EF2c499aD98a8ce58e58' },\n        { symbol: 'WETH', address: '0x4200000000000000000000000000000000000006' },\n    ],\n    base: [\n        { symbol: 'USDC', address: CHAIN_USDC_ADDRESSES.base },\n        { symbol: 'WETH', address: '0x4200000000000000000000000000000000000006' },\n    ],\n    avalanche: [\n        { symbol: 'USDC', address: CHAIN_USDC_ADDRESSES.avalanche },\n        { symbol: 'USDT', address: '0x9702230A8Ea53601f5cD2dc00fDBc13d4dF4A8c7' },\n        { symbol: 'WAVAX', address: '0xB31f66AA3C1e785363F0875A1B74E27b85FD66c7' },\n    ],\n    bsc: [\n        { symbol: 'USDT', address: '0x55d398326f99059fF775485246999027B3197955' },\n        { symbol: 'USDC', address: CHAIN_USDC_ADDRESSES.bsc },\n        { symbol: 'WBNB', address: '0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c' },\n    ],\n};\n","/**\n * JSON-RPC 2.0 reserved error codes, plus the EIP-1474 execution-reverted\n * code used by EVM nodes. These are the codes the Spectrum server emits —\n * see `spectrum-node/src/rpc/types.rs` for the constructors that produce\n * them. Keep the two in sync.\n */\nexport const JSON_RPC_ERROR_CODE = {\n    PARSE_ERROR: -32700,\n    INVALID_REQUEST: -32600,\n    METHOD_NOT_FOUND: -32601,\n    INVALID_PARAMS: -32602,\n    INTERNAL_ERROR: -32603,\n    SERVER_ERROR: -32000,\n    EXECUTION_REVERTED: 3,\n};\n/** Canonical JSON-RPC 2.0 protocol version string used in every envelope. */\nexport const JSON_RPC_VERSION = '2.0';\n/** Hard cap on batched JSON-RPC requests accepted by Spectrum endpoints. */\nexport const MAX_JSON_RPC_BATCH_SIZE = 50;\n/**\n * Starknet transaction-submission methods the RPC proxy refuses to forward.\n */\nexport const BLOCKED_STARKNET_METHODS = [\n    'starknet_addInvokeTransaction',\n    'starknet_addDeclareTransaction',\n    'starknet_addDeployAccountTransaction',\n];\n","/** Use as the canonical value for Aave V2 positions and summaries. */\nexport const AAVE_V2_PROTOCOL_SLUG = 'aave-v2';\n/** Use as the canonical value for Aave V3 positions and summaries. */\nexport const AAVE_V3_PROTOCOL_SLUG = 'aave-v3';\n/** Use as the canonical value for Compound V2 positions and summaries. */\nexport const COMPOUND_V2_PROTOCOL_SLUG = 'compound-v2';\n/** Use as the canonical value for Compound V3 positions and summaries. */\nexport const COMPOUND_V3_PROTOCOL_SLUG = 'compound-v3';\n/** Use as the canonical value for Morpho positions and summaries. */\nexport const MORPHO_PROTOCOL_SLUG = 'morpho';\n/** Accepted alias for Morpho — matches Morpho's current product naming (\"Morpho Blue\"). Routes to the same handler as `MORPHO_PROTOCOL_SLUG`. */\nexport const MORPHO_BLUE_PROTOCOL_SLUG = 'morpho-blue';\n/** Use as the canonical value for Lido positions and summaries. */\nexport const LIDO_PROTOCOL_SLUG = 'lido';\n/** Use as the canonical value for Curve pool and LP data. */\nexport const CURVE_PROTOCOL_SLUG = 'curve';\n/** Use as the canonical value for Curve Llamalend markets. */\nexport const CURVE_LLAMALEND_PROTOCOL_SLUG = 'curve-llamalend';\n/** Use as the canonical value for Pendle V2 positions and market data. */\nexport const PENDLE_V2_PROTOCOL_SLUG = 'pendle-v2';\n/** Use when a field should only allow supported DeFi position protocols. */\nexport const DEFI_POSITION_PROTOCOL_SLUGS = [\n    AAVE_V2_PROTOCOL_SLUG,\n    AAVE_V3_PROTOCOL_SLUG,\n    COMPOUND_V2_PROTOCOL_SLUG,\n    COMPOUND_V3_PROTOCOL_SLUG,\n    MORPHO_PROTOCOL_SLUG,\n    MORPHO_BLUE_PROTOCOL_SLUG,\n    LIDO_PROTOCOL_SLUG,\n];\n/**\n * Canonical mapping from a position-protocol slug to the JSON-RPC method\n * name the Spectrum API exposes for that protocol. Use this for any client\n * that wants to dispatch on `protocol` rather than calling each method\n * directly. The `satisfies` constraint guarantees every slug in\n * `DEFI_POSITION_PROTOCOL_SLUGS` has a corresponding method — adding a slug\n * without a method is a compile-time error. Multiple slugs may map to the\n * same method (e.g. `'morpho'` and `'morpho-blue'` both → `getMorphoUserPositions`).\n */\nexport const DEFI_POSITION_METHOD_BY_SLUG = {\n    [AAVE_V2_PROTOCOL_SLUG]: 'getAaveV2UserPositions',\n    [AAVE_V3_PROTOCOL_SLUG]: 'getAaveV3UserPositions',\n    [COMPOUND_V2_PROTOCOL_SLUG]: 'getCompoundV2UserPositions',\n    [COMPOUND_V3_PROTOCOL_SLUG]: 'getCompoundV3UserPositions',\n    [MORPHO_PROTOCOL_SLUG]: 'getMorphoUserPositions',\n    [MORPHO_BLUE_PROTOCOL_SLUG]: 'getMorphoUserPositions',\n    [LIDO_PROTOCOL_SLUG]: 'getLidoUserPositions',\n};\n","/** Use for lending yield endpoints. */\nexport const LENDING_PROTOCOLS = ['aave', 'compound', 'morpho', 'hyperlend'];\n/** Use for vault yield endpoints. */\nexport const VAULT_PROTOCOLS = ['beefy', 'yearn', 'pendle', 'hyperliquid'];\n/** Use for staking yield endpoints. */\nexport const STAKING_PROTOCOLS = ['lido', 'rocketpool', 'jito', 'marinade'];\n/** Use when you need the full set of lending and vault yield protocols. */\nexport const ALL_YIELD_PROTOCOLS = [...LENDING_PROTOCOLS, ...VAULT_PROTOCOLS];\n/** Use for endpoints that return pool or share prices. */\nexport const PRICE_YIELD_PROTOCOLS = ['aave', 'morpho', 'pendle', 'midas'];\n/** Use when pool ids are onchain addresses instead of simple names. */\nexport const ADDRESS_POOL_PROTOCOLS = ['compound', 'morpho', 'hyperlend', 'yearn', 'pendle'];\n","/** Lamports in one SOL — Solana's smallest unit, 1 SOL = 1e9 lamports. */\nexport const LAMPORTS_PER_SOL = 1_000_000_000;\n/** Address of the SPL Token program — owns all classic SPL token accounts. */\nexport const SPL_TOKEN_PROGRAM_ID = 'TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA';\n/** Address of the SPL Token-2022 program — owns Token-2022 (extensions) accounts. */\nexport const SPL_TOKEN_2022_PROGRAM_ID = 'TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb';\n","// Public test-fixture identity set re-exported through the `/fixtures`\n// entrypoint. Consumers: spectrum-docs/integration-tests and spectrum-sdk\n// integration tests. Values here must stay stable — changing a reference\n// address rewrites captured fixtures.\n//\n// Internal-only fixture inputs (whales, collectors, reference calldata)\n// live in ./testing/fixture-inputs.ts and are not re-exported publicly.\nimport { CORE_REGRESSION_CHAINS, EVM_CHAIN_SLUGS, REGRESSION_BLOCK_HEIGHTS, SUPPORTED_CHAIN_SLUGS, } from './chains.js';\nimport { CHAIN_USDC_ADDRESSES } from './tokens.js';\nexport { CORE_REGRESSION_CHAINS, EVM_CHAIN_SLUGS, REGRESSION_BLOCK_HEIGHTS, SUPPORTED_CHAIN_SLUGS };\n// ─── Reference EVM addresses ──────────────────────────────────────────\nexport const VITALIK = '0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045';\nexport const DEAD_ADDRESS = '0x000000000000000000000000000000000000dEaD';\nexport const BAYC = '0xBC4CA0EdA7647A8aB7C2061c2E118A18a936f13D';\nexport const OPENSEA_1155 = '0x495f947276749Ce646f68AC8c248420045cb7b5e';\n// ─── Reference Solana addresses / mints ───────────────────────────────\nexport const SOL_USDC_MINT = 'EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v';\nexport const SOL_SOL_MINT = 'So11111111111111111111111111111111111111112';\nexport const SOL_WALLET = '9WzDXwBbmkg8ZTbNMqUxvQRAyrZzDsGYdLVL9zYtAWWM';\n// PayPal USD — a Token-2022 mint (uses the inline metadata extension, not Metaplex).\nexport const SOL_PYUSD_MINT = '2b1kV6DkPAnxd5ixfnxCpjxmKwqjjaYmCZfHsFu24GXo';\n// ─── Reference Starknet addresses ─────────────────────────────────────\nexport const STARKNET_ETH_TOKEN = '0x049d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7';\nexport const STARKNET_STRK_TOKEN = '0x04718f5a0fc34cc1af16a1cdee98ffb20c31f5cd61d6ab07201858f4287c938d';\nexport const STARKNET_WALLET = '0x01176a1bd84444c89232ec27754698e5d2e7e1a7f1539f12027f28b23ec9f3d8';\nexport const STARKNET_ERC20_BALANCE_OF_SELECTOR = '0x2e4263afad30923c891518314c3c95dbe830a16874e8abc5777a9a20b54c76e';\nexport const STARKNET_ERC20_DECIMALS_SELECTOR = '0x4c4fb1ab068f6039d5780c68dd0fa2f8742cceb3426d19667778ca7f3518a9';\n// ─── Common topic / identifier constants ──────────────────────────────\nexport const TRANSFER_TOPIC = '0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef';\n// ─── Canonical token/pool identifiers consumed by integration tests ───\n/** Canonical USDC contract per EVM chain. Re-exported as `USDC_BY_CHAIN` so\n *  integration tests can import a single stable name from `/fixtures`. */\nexport const USDC_BY_CHAIN = CHAIN_USDC_ADDRESSES;\n/** Symbolic Aave pool key (USDC) used by yield balance/price/lending tests. */\nexport const AAVE_POOL = 'USDC';\n/** Pendle V2 market address on ethereum used by Pendle implied-APY tests. */\nexport const PENDLE_MARKET = '0x7d372819240d14fb477f17b964f95f33beb4c704';\n/** Avantis vault symbol used by the avantis price fixture. */\nexport const AVANTIS_VAULT = 'avUSDC';\n","import { SUPPORTED_CHAIN_SLUGS } from \"../chains.js\";\n/** Use for all-chain core contract tests. */\nexport const CORE_TEST_CHAINS = [\n    ...SUPPORTED_CHAIN_SLUGS,\n];\n/**\n * Chains covered by getBlockHeight integration tests. Bitcoin is omitted because\n * its chain config isn't guaranteed to be loaded in every environment (no RPC URL\n * in the DB means the config is skipped and the handler returns `error: 'unsupported'`).\n */\nexport const CORE_BLOCK_HEIGHT_TEST_CHAINS = SUPPORTED_CHAIN_SLUGS.filter((slug) => slug !== \"bitcoin\");\n/**\n * Canonical block hashes at `CORE_PINNED_BLOCK_HEIGHTS`. Used to drive the\n * getBlockByHash contract tests — keeping both height and hash pinned means\n * the getBlockByNumber and getBlockByHash fixtures reference the same block.\n */\nexport const CORE_PINNED_BLOCK_HASHES = {\n    ethereum: \"0xf16da847a49abb4ac50ef7c83aa694bc2186b63a09e96b8f6525a461353e75f4\",\n    polygon: \"0x6f91612637c51a09d5f0dc020595529ed70e1c47ec8dd77d207de347cdaac848\",\n    bsc: \"0x9d386842d7904a6c3a04924bc6275435fbbd4cb6da9fc6ef82825c5773679a49\",\n    optimism: \"0x2513910da95ed0ae4aef5643c2b4a7e0fc6570e5113a528acb8a951cbc041bd3\",\n    base: \"0x351eeb4b496c8bcaa1f297f9f4b4cb5f5d8776c1c60fa42f7a6ca4fe7e15822d\",\n    avalanche: \"0xa363fb9dc118b36ab9e7524b9013c317a7beb9549969a5a2b81e70d3f2cdfeac\",\n    arbitrum: \"0xd57cf8938c42bc72cf8fac9bc7be231321803e672048bd175706bdbfa57668ae\",\n    gnosis: \"0x759994357400b6c9446eba8069503c6d153f468d0f456713fea1c7bbc1f31324\",\n    berachain: \"0xbe1e7e3d4bf731543cfcb121e8577228e04da945b4defcd52a96c7e152a48560\",\n    moonbeam: \"0x1a292df25bdab08077f545e66a3ba5c0daa15298c511db61401eea6151e9194c\",\n    monad: \"0xf1f9dd57ae21d63b8cf49f501de0703a5d1f005d7e63116ef495c30a9ae505ea\",\n    linea: \"0x39488e5ef57217d63a4e237534ff2f3ceead5a4827c66a81ed4719135f6a2cda\",\n    hyperliquid: \"0xa016fc17bb11c639d20802f2b1c9f3fc177c6d5c5ebc8cc787d89b3ad9524431\",\n    scroll: \"0xed950ccda2fb84c08fcd5c4bdfd0cce6476c407e347871099efe9a1ecc30f7bc\",\n    plasma: \"0x892346fc5f148f9752cf4d1797436b441075b04fff50ff4b7e71a8ec48ec132e\",\n    xlayer: \"0x7e372d0f7293ce490ff5534c42254b505e42f296b80c2052f1133c8c37201b49\",\n    starknet: \"0x898fe7f61f5d662199d223de496988f221d150ed054f2fe5e681b2988b9e2c\",\n};\n/**\n * First transaction hash from each chain's pinned block — used to drive the\n * getReceipt contract tests so both endpoints reference the same on-chain event.\n */\nexport const CORE_PINNED_TRANSACTION_HASHES = {\n    ethereum: \"0x86c8dae1c2122533b951c2fa2c70ca725239e458c38117476eadf9ebd1726fc5\",\n    polygon: \"0x4cf1476ecbd6170621b1d4390e0dd107cf2fecef556ce562fec7c1bb74dbd538\",\n    bsc: \"0x7b7c5f782b7f6cfd22d7cdb21625a80754a1a2d0a923e25e1f7ffd6d17ee00bf\",\n    optimism: \"0x5fa273f4762ca60402382c8428a4a5f5522ace95ff16b4cd8b443afa4a49691a\",\n    base: \"0x67fa6f3aa36369a33b61edc9eeb28426c74618cf383fa1346ccf787abd9eb8fe\",\n    avalanche: \"0x449847e4a2b1e58c75ababbe2025187d36cb770ff17b25101f58282f42312af7\",\n    arbitrum: \"0x490f1313e2cfff855ef98eb0044ca201dca84eebb8d3876a3674e863cb9eed4c\",\n    gnosis: \"0xb2bbc481846dd6441b04a55c6e1f9e9fe922c6b55bf84aa3fa578f99c05d2706\",\n    berachain: \"0xf5ed454c29219967efe45071cd785511370e9a762f7403fb1fc31b6762f86494\",\n    moonbeam: \"0xc1d03ddc2810f719f4811ba56f2c53b540cd2da6829e5decb2bc1ef33b241db5\",\n    monad: \"0x1d5ff743331a0f50cbf65b32bf294dab9c4d82f13f718c19068d1576fd934891\",\n    linea: \"0x0c9507f545502519c6579f2784ecff02ab807c00b51f60af7eb046c3f637f720\",\n    hyperliquid: \"0xe5ae7e738fa1d07fec33d4774da28458293171c416f21f8f18eb2fc1bf0336c7\",\n    scroll: \"0x6ee963064771a3a7dc12901f1869b1998e931654997d8334e9edd8a3546079e8\",\n    plasma: \"0x45b882c6753513b7addcb7beef16c2ac08435843867d2fb32c3d6c78c9075c09\",\n    xlayer: \"0xa1cb731a8f5206af9e37f300620d8b8d3fead6d627f78a11e89c91438ae8443c\",\n    starknet: \"0x4171cc6a9ce838d37808b16c778526bcaa2bb37b7be877d7397878ceeb39405\",\n};\n/** Use pinned heights where live value drift would make checks flaky. */\nexport const CORE_PINNED_BLOCK_HEIGHTS = {\n    ethereum: 24_928_727,\n    polygon: 85_829_828,\n    bsc: 93_839_326,\n    optimism: 150_590_461,\n    base: 44_995_176,\n    avalanche: 83_516_898,\n    arbitrum: 454_833_892,\n    gnosis: 45_785_965,\n    berachain: 19_882_491,\n    moonbeam: 15_315_773,\n    monad: 69_580_004,\n    linea: 30_319_419,\n    hyperliquid: 33_073_548,\n    scroll: 33_795_427,\n    plasma: 22_524_762,\n    xlayer: 60_687_691,\n    solana: 414_705_076,\n    bitcoin: 900_000,\n    starknet: 600_000,\n};\n/** Minimum heights for dynamic block-height checks where a stronger floor is stable enough. */\nexport const CORE_BLOCK_HEIGHT_MIN_HEIGHTS = {\n    ...CORE_PINNED_BLOCK_HEIGHTS,\n};\n","// Internal-only test-fixture inputs. These values are consumed exclusively by\n// the per-chain matrix configs under ./chains/ to build *_QUERY_VECTORS. They\n// are not part of the public /fixtures surface (no downstream consumer imports\n// them) — keeping them here signals that and avoids confusing callers looking\n// at constants/integration.ts.\n// ── Test-only ethereum whales ─────────────────────────────────────────\n// Addresses with real positions at the pinned block so fixtures carry\n// non-empty data (instead of Vitalik-empty payloads).\n/** PoolTogether's DAI prize pool — one of the largest remaining cDAI holders post-v2 deprecation. */\nexport const COMPOUND_V2_ETHEREUM_WHALE = \"0xEBfb47A7ad0FD6e57323C8A42B2E5A6a4F68fc1a\";\n/** Morpho Blue borrower with active USDC/wstETH + USDC/WBTC positions at CORE_PINNED_BLOCK_HEIGHTS.ethereum. */\nexport const MORPHO_ETHEREUM_WHALE = \"0x8eB67A509616cd6A7c1B3c8C21D48FF57df3d458\";\n/** Aave V3 Collector per chain (bgd-labs/aave-address-book). Guarantees a non-empty getAaveV3UserPositions fixture. */\nexport const AAVE_V3_COLLECTOR = {\n    ethereum: \"0x464C71f6c2F760DdA6093dCB91C24c39e5d6e18c\",\n    arbitrum: \"0x053D55f9B5AF8694c503EB288a1B7E552f590710\",\n    base: \"0xBA9424d650A4F5c80a0dA641254d1AcCE2A37057\",\n    optimism: \"0xB2289E329D2F85F1eD31Adbb30eA345278F21bcf\",\n    bsc: \"0x25Ec457d1778b0E5316e7f38f3c22baF413F1A8C\",\n    gnosis: \"0x3e652E97ff339B73421f824F5b03d75b62F1Fb51\",\n};\n// ── Canonical token / contract addresses for test fixtures ────────────\nexport const DAI_ETHEREUM = \"0x6B175474E89094C44Da98b954EedeAC495271d0F\";\n/** Uniswap V3 SwapRouter on ethereum. VITALIK granted unlimited DAI allowance to it — used to exercise non-zero allowance path. */\nexport const UNISWAP_V3_ROUTER_ETHEREUM = \"0x68b3465833fb72A70ecDF485E0e4C7bD8665Fc45\";\n/** BSC USDC allowance pair with non-zero allowance at CORE_PINNED_BLOCK_HEIGHTS.bsc. */\nexport const BSC_USDC_ALLOWANCE_OWNER = \"0xbd97306a087ed0c46b783cfbfdcdc6c12c7a2866\";\nexport const BSC_USDC_ALLOWANCE_SPENDER = \"0x9be0b883c7ce55da7946ede6b8c35ccc459bab51\";\n/** Optimism USDC allowance pair with finite non-zero allowance at CORE_PINNED_BLOCK_HEIGHTS.optimism. */\nexport const OPTIMISM_USDC_ALLOWANCE_OWNER = \"0xd9f7bd6033d34caf61143a460d7f79c4384aae97\";\nexport const OPTIMISM_USDC_ALLOWANCE_SPENDER = \"0x416b433906b1b72fa758e166e239c43d68dc6f29\";\n/** Scroll USDC allowance pair with non-zero allowance at CORE_PINNED_BLOCK_HEIGHTS.scroll. */\nexport const SCROLL_USDC_ALLOWANCE_OWNER = \"0x4cd8d79df60e42c37650496150f744e2e53bb47c\";\nexport const SCROLL_USDC_ALLOWANCE_SPENDER = \"0x000000000022d473030f116ddee9f6b43ac78ba3\";\n/** X Layer USDC.e allowance pair with non-zero allowance at CORE_PINNED_BLOCK_HEIGHTS.xlayer. */\nexport const XLAYER_USDC_ALLOWANCE_OWNER = \"0x11932ae6c9fde1e17e9fee344413c67138059adf\";\nexport const XLAYER_USDC_ALLOWANCE_SPENDER = \"0x8b773d83bc66be128c60e07e17c8901f7a64f000\";\n/** WMATIC — polygon's wrapped-native; used as the approve-revoke spender on polygon. */\nexport const WMATIC_ADDRESS = \"0x0d500B1d8E8eF31E21C99d1Db9A6444d3ADf1270\";\nexport const BITCOIN_REFERENCE_ADDRESS = \"1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa\";\n// ── Test-helper calldata / amount ─────────────────────────────────────\n/** balanceOf(VITALIK) calldata — 4-byte selector + 32-byte left-padded address. */\nexport const ERC20_BALANCE_OF_REFERENCE_CALLDATA = \"0x70a08231000000000000000000000000d8da6bf26964af9d7eed9e03e53415d37aa96045\";\n/** Default swap-quote amount used across Uniswap V2/V3/V4 quote tests. */\nexport const SWAP_QUOTE_AMOUNT = \"1.0\";\n// ── Per-chain pool/vault pins used to build yield vector tables ───────\nexport const BEEFY_VAULT = {\n    ethereum: \"curve-usdc-usdf\",\n    polygon: \"morpho-compound-usdc\",\n    base: \"aerodrome-weth-lcap\",\n    arbitrum: \"curve-arb-asdcrv-v2.1\",\n    optimism: \"velodrome-v2-weth-op\",\n    avalanche: \"gmx-avax-gmx\",\n    bsc: \"pancake-cow-bsc-eth-wbnb-vault\",\n};\nexport const MORPHO_VAULT = {\n    ethereum: \"0xdd0f28e19C1780eb6396170735D45153D261490d\",\n    base: \"0xf24608E0CCb972b0b0f4A6446a0BBf58c701a026\",\n};\n","import { CHAIN_USDC_ADDRESSES, CHAIN_WETH_ADDRESSES } from \"../../tokens.js\";\nimport { CORE_PINNED_BLOCK_HASHES, CORE_PINNED_BLOCK_HEIGHTS, CORE_PINNED_TRANSACTION_HASHES } from \"../pinned.js\";\nimport { TRANSFER_TOPIC, VITALIK } from \"../../integration.js\";\nimport { AAVE_V3_COLLECTOR, COMPOUND_V2_ETHEREUM_WHALE, DAI_ETHEREUM, ERC20_BALANCE_OF_REFERENCE_CALLDATA, MORPHO_ETHEREUM_WHALE, SWAP_QUOTE_AMOUNT, UNISWAP_V3_ROUTER_ETHEREUM, } from \"../fixture-inputs.js\";\nexport const ETHEREUM_TEST_CONFIG = {\n    balance: {\n        address: VITALIK,\n        blockHeight: CORE_PINNED_BLOCK_HEIGHTS.ethereum,\n    },\n    tokenBalance: {\n        address: VITALIK,\n        token: CHAIN_USDC_ADDRESSES.ethereum,\n        blockHeight: CORE_PINNED_BLOCK_HEIGHTS.ethereum,\n    },\n    blockQuery: {\n        block: CORE_PINNED_BLOCK_HEIGHTS.ethereum,\n        fixture: \"getBlockByNumberEthereum\",\n    },\n    balanceQuery: {\n        address: VITALIK,\n        blockHeight: CORE_PINNED_BLOCK_HEIGHTS.ethereum,\n        fixture: \"getBalanceEthereum\",\n    },\n    tokenBalanceQuery: {\n        address: VITALIK,\n        token: CHAIN_USDC_ADDRESSES.ethereum,\n        blockHeight: CORE_PINNED_BLOCK_HEIGHTS.ethereum,\n        fixture: \"getTokenBalanceEthereum\",\n    },\n    blockHashQuery: {\n        hash: CORE_PINNED_BLOCK_HASHES.ethereum,\n        fixture: \"getBlockByHashEthereum\",\n    },\n    blockTransactionsQuery: {\n        blockNumber: CORE_PINNED_BLOCK_HEIGHTS.ethereum,\n        fixture: \"getBlockTransactionsEthereum\",\n    },\n    transfersQuery: {\n        address: VITALIK,\n        blockHeight: CORE_PINNED_BLOCK_HEIGHTS.ethereum,\n        fixture: \"getTransfersEthereum\",\n    },\n    simulateCallQuery: {\n        to: CHAIN_USDC_ADDRESSES.ethereum,\n        data: ERC20_BALANCE_OF_REFERENCE_CALLDATA,\n        blockHeight: CORE_PINNED_BLOCK_HEIGHTS.ethereum,\n        fixture: \"simulateCallEthereum\",\n    },\n    traceTransactionQuery: {\n        hash: CORE_PINNED_TRANSACTION_HASHES.ethereum,\n        fixture: \"traceTransactionEthereum\",\n    },\n    tokenMetadataQuery: {\n        address: CHAIN_USDC_ADDRESSES.ethereum,\n        blockHeight: CORE_PINNED_BLOCK_HEIGHTS.ethereum,\n        fixture: \"getTokenMetadataEthereum\",\n    },\n    tokenAllowanceQuery: {\n        token: DAI_ETHEREUM,\n        owner: VITALIK,\n        spender: UNISWAP_V3_ROUTER_ETHEREUM,\n        blockHeight: CORE_PINNED_BLOCK_HEIGHTS.ethereum,\n        fixture: \"getTokenAllowanceEthereum\",\n    },\n    portfolioQuery: {\n        address: VITALIK,\n        blockHeight: CORE_PINNED_BLOCK_HEIGHTS.ethereum,\n    },\n    receiptQuery: {\n        hash: CORE_PINNED_TRANSACTION_HASHES.ethereum,\n        fixture: \"getReceiptEthereum\",\n    },\n    transactionByHashQuery: {\n        hash: CORE_PINNED_TRANSACTION_HASHES.ethereum,\n        fixture: \"getTransactionByHashEthereum\",\n    },\n    estimateGasQuery: {\n        to: VITALIK,\n        fixture: \"estimateGasEthereum\",\n    },\n    codeQuery: {\n        address: CHAIN_USDC_ADDRESSES.ethereum,\n        blockHeight: CORE_PINNED_BLOCK_HEIGHTS.ethereum,\n        fixture: \"getCodeEthereum\",\n    },\n    logsQuery: {\n        address: CHAIN_USDC_ADDRESSES.ethereum,\n        topic0: TRANSFER_TOPIC,\n        fromBlock: String(CORE_PINNED_BLOCK_HEIGHTS.ethereum),\n        toBlock: String(CORE_PINNED_BLOCK_HEIGHTS.ethereum),\n        fixture: \"getLogsEthereum\",\n    },\n    aaveV2Query: { address: VITALIK, blockHeight: CORE_PINNED_BLOCK_HEIGHTS.ethereum, fixture: \"getAaveV2UserPositionsEthereum\" },\n    aaveV3Query: { address: AAVE_V3_COLLECTOR.ethereum, blockHeight: CORE_PINNED_BLOCK_HEIGHTS.ethereum, fixture: \"getAaveV3UserPositionsEthereum\" },\n    compoundV2Query: { address: COMPOUND_V2_ETHEREUM_WHALE, blockHeight: CORE_PINNED_BLOCK_HEIGHTS.ethereum, fixture: \"getCompoundV2UserPositionsEthereum\" },\n    compoundV3Query: { address: VITALIK, blockHeight: CORE_PINNED_BLOCK_HEIGHTS.ethereum, fixture: \"getCompoundV3UserPositionsEthereum\" },\n    lidoQuery: { address: VITALIK, blockHeight: CORE_PINNED_BLOCK_HEIGHTS.ethereum, fixture: \"getLidoUserPositionsEthereum\" },\n    morphoQuery: { address: MORPHO_ETHEREUM_WHALE, blockHeight: CORE_PINNED_BLOCK_HEIGHTS.ethereum, fixture: \"getMorphoUserPositionsEthereum\" },\n    curveLlamaLendQuery: { address: VITALIK, blockHeight: CORE_PINNED_BLOCK_HEIGHTS.ethereum, fixture: \"getCurveLlamaLendEthereum\" },\n    approvalsQuery: { address: VITALIK, blockHeight: CORE_PINNED_BLOCK_HEIGHTS.ethereum, fixture: \"getApprovalsEthereum\" },\n    pendleV2InfoQuery: { fixture: \"getPendleV2InfoEthereum\" },\n    curvePoolsQuery: { blockHeight: CORE_PINNED_BLOCK_HEIGHTS.ethereum, fixture: \"getCurvePoolsEthereum\" },\n    curveLlamaLendMarketsQuery: { blockHeight: CORE_PINNED_BLOCK_HEIGHTS.ethereum, fixture: \"getCurveLlamaLendMarketsEthereum\" },\n    uniswapV2QuoteQuery: { tokenIn: CHAIN_WETH_ADDRESSES.ethereum, tokenOut: CHAIN_USDC_ADDRESSES.ethereum, amount: SWAP_QUOTE_AMOUNT, blockHeight: CORE_PINNED_BLOCK_HEIGHTS.ethereum, fixture: \"getUniswapV2QuoteEthereum\" },\n    uniswapV3QuoteQuery: { tokenIn: CHAIN_WETH_ADDRESSES.ethereum, tokenOut: CHAIN_USDC_ADDRESSES.ethereum, amount: SWAP_QUOTE_AMOUNT, blockHeight: CORE_PINNED_BLOCK_HEIGHTS.ethereum, fixture: \"getUniswapV3QuoteEthereum\" },\n    uniswapV4QuoteQuery: { tokenIn: CHAIN_WETH_ADDRESSES.ethereum, tokenOut: CHAIN_USDC_ADDRESSES.ethereum, amount: SWAP_QUOTE_AMOUNT, blockHeight: CORE_PINNED_BLOCK_HEIGHTS.ethereum, fixture: \"getUniswapV4QuoteEthereum\" },\n    approvalsRevokeQuery: { address: VITALIK, token: CHAIN_USDC_ADDRESSES.ethereum, spender: CHAIN_WETH_ADDRESSES.ethereum, fixture: \"getApprovalsRevokeEthereum\" },\n};\n","import { CHAIN_USDC_ADDRESSES } from \"../../tokens.js\";\nimport { CORE_PINNED_BLOCK_HASHES, CORE_PINNED_BLOCK_HEIGHTS, CORE_PINNED_TRANSACTION_HASHES } from \"../pinned.js\";\nimport { DEAD_ADDRESS, TRANSFER_TOPIC, VITALIK } from \"../../integration.js\";\nimport { ERC20_BALANCE_OF_REFERENCE_CALLDATA, WMATIC_ADDRESS } from \"../fixture-inputs.js\";\nexport const POLYGON_TEST_CONFIG = {\n    balance: {\n        address: VITALIK,\n        blockHeight: CORE_PINNED_BLOCK_HEIGHTS.polygon,\n    },\n    balanceQuery: {\n        address: VITALIK,\n        blockHeight: CORE_PINNED_BLOCK_HEIGHTS.polygon,\n        fixture: \"getBalancePolygon\",\n    },\n    tokenBalance: {\n        address: VITALIK,\n        token: CHAIN_USDC_ADDRESSES.polygon,\n        blockHeight: CORE_PINNED_BLOCK_HEIGHTS.polygon,\n    },\n    tokenBalanceQuery: {\n        address: VITALIK,\n        token: CHAIN_USDC_ADDRESSES.polygon,\n        blockHeight: CORE_PINNED_BLOCK_HEIGHTS.polygon,\n        fixture: \"getTokenBalancePolygon\",\n    },\n    blockQuery: {\n        block: CORE_PINNED_BLOCK_HEIGHTS.polygon,\n        fixture: \"getBlockByNumberPolygon\",\n    },\n    blockHashQuery: {\n        hash: CORE_PINNED_BLOCK_HASHES.polygon,\n        fixture: \"getBlockByHashPolygon\",\n    },\n    blockTransactionsQuery: {\n        blockNumber: CORE_PINNED_BLOCK_HEIGHTS.polygon,\n        fixture: \"getBlockTransactionsPolygon\",\n    },\n    transfersQuery: {\n        address: VITALIK,\n        blockHeight: CORE_PINNED_BLOCK_HEIGHTS.polygon,\n        fixture: \"getTransfersPolygon\",\n    },\n    receiptQuery: {\n        hash: CORE_PINNED_TRANSACTION_HASHES.polygon,\n        fixture: \"getReceiptPolygon\",\n    },\n    transactionByHashQuery: {\n        hash: CORE_PINNED_TRANSACTION_HASHES.polygon,\n        fixture: \"getTransactionByHashPolygon\",\n    },\n    estimateGasQuery: {\n        to: VITALIK,\n        fixture: \"estimateGasPolygon\",\n    },\n    codeQuery: {\n        address: CHAIN_USDC_ADDRESSES.polygon,\n        blockHeight: CORE_PINNED_BLOCK_HEIGHTS.polygon,\n        fixture: \"getCodePolygon\",\n    },\n    logsQuery: {\n        address: CHAIN_USDC_ADDRESSES.polygon,\n        topic0: TRANSFER_TOPIC,\n        fromBlock: String(CORE_PINNED_BLOCK_HEIGHTS.polygon - 50),\n        toBlock: String(CORE_PINNED_BLOCK_HEIGHTS.polygon),\n        fixture: \"getLogsPolygon\",\n    },\n    simulateCallQuery: {\n        to: CHAIN_USDC_ADDRESSES.polygon,\n        data: ERC20_BALANCE_OF_REFERENCE_CALLDATA,\n        blockHeight: CORE_PINNED_BLOCK_HEIGHTS.polygon,\n        fixture: \"simulateCallPolygon\",\n    },\n    traceTransactionQuery: {\n        hash: CORE_PINNED_TRANSACTION_HASHES.polygon,\n        fixture: \"traceTransactionPolygon\",\n    },\n    tokenMetadataQuery: {\n        address: CHAIN_USDC_ADDRESSES.polygon,\n        blockHeight: CORE_PINNED_BLOCK_HEIGHTS.polygon,\n        fixture: \"getTokenMetadataPolygon\",\n    },\n    tokenAllowanceQuery: {\n        token: CHAIN_USDC_ADDRESSES.polygon,\n        owner: VITALIK,\n        spender: DEAD_ADDRESS,\n        blockHeight: CORE_PINNED_BLOCK_HEIGHTS.polygon,\n        fixture: \"getTokenAllowancePolygon\",\n    },\n    morphoQuery: { address: VITALIK, blockHeight: CORE_PINNED_BLOCK_HEIGHTS.polygon, fixture: \"getMorphoUserPositionsPolygon\" },\n    approvalsQuery: { address: VITALIK, blockHeight: CORE_PINNED_BLOCK_HEIGHTS.polygon, fixture: \"getApprovalsPolygon\" },\n    curvePoolsQuery: { blockHeight: CORE_PINNED_BLOCK_HEIGHTS.polygon, fixture: \"getCurvePoolsPolygon\" },\n    approvalsRevokeQuery: { address: VITALIK, token: CHAIN_USDC_ADDRESSES.polygon, spender: WMATIC_ADDRESS, fixture: \"getApprovalsRevokePolygon\" },\n};\n","import { CHAIN_USDC_ADDRESSES, CHAIN_WETH_ADDRESSES } from \"../../tokens.js\";\nimport { TRANSFER_TOPIC, VITALIK } from \"../../integration.js\";\nimport { CORE_PINNED_BLOCK_HASHES, CORE_PINNED_BLOCK_HEIGHTS, CORE_PINNED_TRANSACTION_HASHES } from \"../pinned.js\";\nimport { AAVE_V3_COLLECTOR, BSC_USDC_ALLOWANCE_OWNER, BSC_USDC_ALLOWANCE_SPENDER, ERC20_BALANCE_OF_REFERENCE_CALLDATA, SWAP_QUOTE_AMOUNT, } from \"../fixture-inputs.js\";\nexport const BSC_TEST_CONFIG = {\n    balance: { address: VITALIK },\n    tokenBalance: {\n        address: VITALIK,\n        token: CHAIN_USDC_ADDRESSES.bsc,\n    },\n    blockQuery: {\n        block: CORE_PINNED_BLOCK_HEIGHTS.bsc,\n        fixture: \"getBlockByNumberBsc\",\n    },\n    balanceQuery: {\n        address: VITALIK,\n        blockHeight: CORE_PINNED_BLOCK_HEIGHTS.bsc,\n        fixture: \"getBalanceBsc\",\n    },\n    tokenBalanceQuery: {\n        address: VITALIK,\n        token: CHAIN_USDC_ADDRESSES.bsc,\n        blockHeight: CORE_PINNED_BLOCK_HEIGHTS.bsc,\n        fixture: \"getTokenBalanceBsc\",\n    },\n    blockHashQuery: {\n        hash: CORE_PINNED_BLOCK_HASHES.bsc,\n        fixture: \"getBlockByHashBsc\",\n    },\n    blockTransactionsQuery: {\n        blockNumber: CORE_PINNED_BLOCK_HEIGHTS.bsc,\n        fixture: \"getBlockTransactionsBsc\",\n    },\n    transfersQuery: {\n        address: VITALIK,\n        blockHeight: CORE_PINNED_BLOCK_HEIGHTS.bsc,\n        fixture: \"getTransfersBsc\",\n    },\n    simulateCallQuery: {\n        to: CHAIN_USDC_ADDRESSES.bsc,\n        data: ERC20_BALANCE_OF_REFERENCE_CALLDATA,\n        blockHeight: CORE_PINNED_BLOCK_HEIGHTS.bsc,\n        fixture: \"simulateCallBsc\",\n    },\n    traceTransactionQuery: {\n        hash: CORE_PINNED_TRANSACTION_HASHES.bsc,\n        fixture: \"traceTransactionBsc\",\n    },\n    tokenMetadataQuery: {\n        address: CHAIN_USDC_ADDRESSES.bsc,\n        blockHeight: CORE_PINNED_BLOCK_HEIGHTS.bsc,\n        fixture: \"getTokenMetadataBsc\",\n    },\n    tokenAllowanceQuery: {\n        token: CHAIN_USDC_ADDRESSES.bsc,\n        owner: BSC_USDC_ALLOWANCE_OWNER,\n        spender: BSC_USDC_ALLOWANCE_SPENDER,\n        blockHeight: CORE_PINNED_BLOCK_HEIGHTS.bsc,\n        fixture: \"getTokenAllowanceBsc\",\n    },\n    portfolioQuery: {\n        address: VITALIK,\n        blockHeight: CORE_PINNED_BLOCK_HEIGHTS.bsc,\n    },\n    receiptQuery: {\n        hash: CORE_PINNED_TRANSACTION_HASHES.bsc,\n        fixture: \"getReceiptBsc\",\n    },\n    transactionByHashQuery: {\n        hash: CORE_PINNED_TRANSACTION_HASHES.bsc,\n        fixture: \"getTransactionByHashBsc\",\n    },\n    estimateGasQuery: {\n        to: VITALIK,\n        fixture: \"estimateGasBsc\",\n    },\n    codeQuery: {\n        address: CHAIN_USDC_ADDRESSES.bsc,\n        blockHeight: CORE_PINNED_BLOCK_HEIGHTS.bsc,\n        fixture: \"getCodeBsc\",\n    },\n    logsQuery: {\n        address: CHAIN_USDC_ADDRESSES.bsc,\n        topic0: TRANSFER_TOPIC,\n        fromBlock: String(CORE_PINNED_BLOCK_HEIGHTS.bsc),\n        toBlock: String(CORE_PINNED_BLOCK_HEIGHTS.bsc),\n        fixture: \"getLogsBsc\",\n    },\n    aaveV3Query: { address: AAVE_V3_COLLECTOR.bsc, blockHeight: CORE_PINNED_BLOCK_HEIGHTS.bsc, fixture: \"getAaveV3UserPositionsBsc\" },\n    morphoQuery: { address: VITALIK, blockHeight: CORE_PINNED_BLOCK_HEIGHTS.bsc, fixture: \"getMorphoUserPositionsBsc\" },\n    approvalsQuery: { address: VITALIK, blockHeight: CORE_PINNED_BLOCK_HEIGHTS.bsc, fixture: \"getApprovalsBsc\" },\n    pendleV2InfoQuery: { fixture: \"getPendleV2InfoBsc\" },\n    uniswapV3QuoteQuery: { tokenIn: CHAIN_WETH_ADDRESSES.bsc, tokenOut: CHAIN_USDC_ADDRESSES.bsc, amount: SWAP_QUOTE_AMOUNT, blockHeight: CORE_PINNED_BLOCK_HEIGHTS.bsc, fixture: \"getUniswapV3QuoteBsc\" },\n    uniswapV4QuoteQuery: { tokenIn: CHAIN_WETH_ADDRESSES.bsc, tokenOut: CHAIN_USDC_ADDRESSES.bsc, amount: SWAP_QUOTE_AMOUNT, blockHeight: CORE_PINNED_BLOCK_HEIGHTS.bsc, fixture: \"getUniswapV4QuoteBsc\" },\n};\n","import { CHAIN_USDC_ADDRESSES, CHAIN_WETH_ADDRESSES } from \"../../tokens.js\";\nimport { TRANSFER_TOPIC, VITALIK } from \"../../integration.js\";\nimport { CORE_PINNED_BLOCK_HASHES, CORE_PINNED_BLOCK_HEIGHTS, CORE_PINNED_TRANSACTION_HASHES } from \"../pinned.js\";\nimport { AAVE_V3_COLLECTOR, ERC20_BALANCE_OF_REFERENCE_CALLDATA, OPTIMISM_USDC_ALLOWANCE_OWNER, OPTIMISM_USDC_ALLOWANCE_SPENDER, SWAP_QUOTE_AMOUNT, } from \"../fixture-inputs.js\";\nexport const OPTIMISM_TEST_CONFIG = {\n    balance: {\n        address: VITALIK,\n        blockHeight: CORE_PINNED_BLOCK_HEIGHTS.optimism,\n    },\n    tokenBalance: {\n        address: VITALIK,\n        token: CHAIN_USDC_ADDRESSES.optimism,\n        blockHeight: CORE_PINNED_BLOCK_HEIGHTS.optimism,\n    },\n    blockQuery: {\n        block: CORE_PINNED_BLOCK_HEIGHTS.optimism,\n        fixture: \"getBlockByNumberOptimism\",\n    },\n    balanceQuery: {\n        address: VITALIK,\n        blockHeight: CORE_PINNED_BLOCK_HEIGHTS.optimism,\n        fixture: \"getBalanceOptimism\",\n    },\n    tokenBalanceQuery: {\n        address: VITALIK,\n        token: CHAIN_USDC_ADDRESSES.optimism,\n        blockHeight: CORE_PINNED_BLOCK_HEIGHTS.optimism,\n        fixture: \"getTokenBalanceOptimism\",\n    },\n    blockHashQuery: {\n        hash: CORE_PINNED_BLOCK_HASHES.optimism,\n        fixture: \"getBlockByHashOptimism\",\n    },\n    blockTransactionsQuery: {\n        blockNumber: CORE_PINNED_BLOCK_HEIGHTS.optimism,\n        fixture: \"getBlockTransactionsOptimism\",\n    },\n    transfersQuery: {\n        address: VITALIK,\n        blockHeight: CORE_PINNED_BLOCK_HEIGHTS.optimism,\n        fixture: \"getTransfersOptimism\",\n    },\n    simulateCallQuery: {\n        to: CHAIN_USDC_ADDRESSES.optimism,\n        data: ERC20_BALANCE_OF_REFERENCE_CALLDATA,\n        blockHeight: CORE_PINNED_BLOCK_HEIGHTS.optimism,\n        fixture: \"simulateCallOptimism\",\n    },\n    traceTransactionQuery: {\n        hash: CORE_PINNED_TRANSACTION_HASHES.optimism,\n        fixture: \"traceTransactionOptimism\",\n    },\n    tokenMetadataQuery: {\n        address: CHAIN_USDC_ADDRESSES.optimism,\n        blockHeight: CORE_PINNED_BLOCK_HEIGHTS.optimism,\n        fixture: \"getTokenMetadataOptimism\",\n    },\n    tokenAllowanceQuery: {\n        token: CHAIN_USDC_ADDRESSES.optimism,\n        owner: OPTIMISM_USDC_ALLOWANCE_OWNER,\n        spender: OPTIMISM_USDC_ALLOWANCE_SPENDER,\n        blockHeight: CORE_PINNED_BLOCK_HEIGHTS.optimism,\n        fixture: \"getTokenAllowanceOptimism\",\n    },\n    portfolioQuery: {\n        address: VITALIK,\n        blockHeight: CORE_PINNED_BLOCK_HEIGHTS.optimism,\n    },\n    receiptQuery: {\n        hash: CORE_PINNED_TRANSACTION_HASHES.optimism,\n        fixture: \"getReceiptOptimism\",\n    },\n    transactionByHashQuery: {\n        hash: CORE_PINNED_TRANSACTION_HASHES.optimism,\n        fixture: \"getTransactionByHashOptimism\",\n    },\n    estimateGasQuery: {\n        to: VITALIK,\n        fixture: \"estimateGasOptimism\",\n    },\n    codeQuery: {\n        address: CHAIN_USDC_ADDRESSES.optimism,\n        blockHeight: CORE_PINNED_BLOCK_HEIGHTS.optimism,\n        fixture: \"getCodeOptimism\",\n    },\n    logsQuery: {\n        address: CHAIN_USDC_ADDRESSES.optimism,\n        topic0: TRANSFER_TOPIC,\n        fromBlock: String(CORE_PINNED_BLOCK_HEIGHTS.optimism),\n        toBlock: String(CORE_PINNED_BLOCK_HEIGHTS.optimism),\n        fixture: \"getLogsOptimism\",\n    },\n    aaveV3Query: { address: AAVE_V3_COLLECTOR.optimism, blockHeight: CORE_PINNED_BLOCK_HEIGHTS.optimism, fixture: \"getAaveV3UserPositionsOptimism\" },\n    lidoQuery: { address: VITALIK, blockHeight: CORE_PINNED_BLOCK_HEIGHTS.optimism, fixture: \"getLidoUserPositionsOptimism\" },\n    morphoQuery: { address: VITALIK, blockHeight: CORE_PINNED_BLOCK_HEIGHTS.optimism, fixture: \"getMorphoUserPositionsOptimism\" },\n    curveLlamaLendQuery: { address: VITALIK, blockHeight: CORE_PINNED_BLOCK_HEIGHTS.optimism, fixture: \"getCurveLlamaLendOptimism\" },\n    approvalsQuery: { address: VITALIK, blockHeight: CORE_PINNED_BLOCK_HEIGHTS.optimism, fixture: \"getApprovalsOptimism\" },\n    pendleV2InfoQuery: { fixture: \"getPendleV2InfoOptimism\" },\n    curvePoolsQuery: { blockHeight: CORE_PINNED_BLOCK_HEIGHTS.optimism, fixture: \"getCurvePoolsOptimism\" },\n    curveLlamaLendMarketsQuery: { blockHeight: CORE_PINNED_BLOCK_HEIGHTS.optimism, fixture: \"getCurveLlamaLendMarketsOptimism\" },\n    uniswapV3QuoteQuery: { tokenIn: CHAIN_WETH_ADDRESSES.optimism, tokenOut: CHAIN_USDC_ADDRESSES.optimism, amount: SWAP_QUOTE_AMOUNT, blockHeight: CORE_PINNED_BLOCK_HEIGHTS.optimism, fixture: \"getUniswapV3QuoteOptimism\" },\n};\n","import { CHAIN_USDC_ADDRESSES, CHAIN_WETH_ADDRESSES } from \"../../tokens.js\";\nimport { DEAD_ADDRESS, VITALIK } from \"../../integration.js\";\nimport { CORE_PINNED_BLOCK_HASHES, CORE_PINNED_BLOCK_HEIGHTS, CORE_PINNED_TRANSACTION_HASHES } from \"../pinned.js\";\nimport { AAVE_V3_COLLECTOR, ERC20_BALANCE_OF_REFERENCE_CALLDATA, SWAP_QUOTE_AMOUNT, } from \"../fixture-inputs.js\";\nexport const BASE_TEST_CONFIG = {\n    balance: {\n        address: VITALIK,\n        blockHeight: CORE_PINNED_BLOCK_HEIGHTS.base,\n    },\n    tokenBalance: {\n        address: VITALIK,\n        token: CHAIN_USDC_ADDRESSES.base,\n        blockHeight: CORE_PINNED_BLOCK_HEIGHTS.base,\n    },\n    blockQuery: {\n        block: CORE_PINNED_BLOCK_HEIGHTS.base,\n        fixture: \"getBlockByNumberBase\",\n    },\n    balanceQuery: {\n        address: VITALIK,\n        blockHeight: CORE_PINNED_BLOCK_HEIGHTS.base,\n        fixture: \"getBalanceBase\",\n    },\n    tokenBalanceQuery: {\n        address: VITALIK,\n        token: CHAIN_USDC_ADDRESSES.base,\n        blockHeight: CORE_PINNED_BLOCK_HEIGHTS.base,\n        fixture: \"getTokenBalanceBase\",\n    },\n    blockHashQuery: {\n        hash: CORE_PINNED_BLOCK_HASHES.base,\n        fixture: \"getBlockByHashBase\",\n    },\n    blockTransactionsQuery: {\n        blockNumber: CORE_PINNED_BLOCK_HEIGHTS.base,\n        fixture: \"getBlockTransactionsBase\",\n    },\n    transfersQuery: {\n        address: VITALIK,\n        blockHeight: CORE_PINNED_BLOCK_HEIGHTS.base,\n        fixture: \"getTransfersBase\",\n    },\n    simulateCallQuery: {\n        to: CHAIN_USDC_ADDRESSES.base,\n        data: ERC20_BALANCE_OF_REFERENCE_CALLDATA,\n        blockHeight: CORE_PINNED_BLOCK_HEIGHTS.base,\n        fixture: \"simulateCallBase\",\n    },\n    traceTransactionQuery: {\n        hash: CORE_PINNED_TRANSACTION_HASHES.base,\n        fixture: \"traceTransactionBase\",\n    },\n    tokenMetadataQuery: {\n        address: CHAIN_USDC_ADDRESSES.base,\n        blockHeight: CORE_PINNED_BLOCK_HEIGHTS.base,\n        fixture: \"getTokenMetadataBase\",\n    },\n    tokenAllowanceQuery: {\n        token: CHAIN_USDC_ADDRESSES.base,\n        owner: VITALIK,\n        spender: DEAD_ADDRESS,\n        blockHeight: CORE_PINNED_BLOCK_HEIGHTS.base,\n        fixture: \"getTokenAllowanceBase\",\n    },\n    portfolioQuery: {\n        address: VITALIK,\n        blockHeight: CORE_PINNED_BLOCK_HEIGHTS.base,\n    },\n    receiptQuery: {\n        hash: CORE_PINNED_TRANSACTION_HASHES.base,\n        fixture: \"getReceiptBase\",\n    },\n    transactionByHashQuery: {\n        hash: CORE_PINNED_TRANSACTION_HASHES.base,\n        fixture: \"getTransactionByHashBase\",\n    },\n    estimateGasQuery: {\n        to: VITALIK,\n        fixture: \"estimateGasBase\",\n    },\n    aaveV3Query: { address: AAVE_V3_COLLECTOR.base, blockHeight: CORE_PINNED_BLOCK_HEIGHTS.base, fixture: \"getAaveV3UserPositionsBase\" },\n    compoundV3Query: { address: VITALIK, blockHeight: CORE_PINNED_BLOCK_HEIGHTS.base, fixture: \"getCompoundV3UserPositionsBase\" },\n    lidoQuery: { address: VITALIK, blockHeight: CORE_PINNED_BLOCK_HEIGHTS.base, fixture: \"getLidoUserPositionsBase\" },\n    morphoQuery: { address: VITALIK, blockHeight: CORE_PINNED_BLOCK_HEIGHTS.base, fixture: \"getMorphoUserPositionsBase\" },\n    approvalsQuery: { address: VITALIK, blockHeight: CORE_PINNED_BLOCK_HEIGHTS.base, fixture: \"getApprovalsBase\" },\n    pendleV2InfoQuery: { fixture: \"getPendleV2InfoBase\" },\n    curvePoolsQuery: { blockHeight: CORE_PINNED_BLOCK_HEIGHTS.base, fixture: \"getCurvePoolsBase\" },\n    uniswapV3QuoteQuery: { tokenIn: CHAIN_WETH_ADDRESSES.base, tokenOut: CHAIN_USDC_ADDRESSES.base, amount: SWAP_QUOTE_AMOUNT, blockHeight: CORE_PINNED_BLOCK_HEIGHTS.base, fixture: \"getUniswapV3QuoteBase\" },\n    uniswapV4QuoteQuery: { tokenIn: CHAIN_WETH_ADDRESSES.base, tokenOut: CHAIN_USDC_ADDRESSES.base, amount: SWAP_QUOTE_AMOUNT, blockHeight: CORE_PINNED_BLOCK_HEIGHTS.base, fixture: \"getUniswapV4QuoteBase\" },\n    avantisPriceQuery: { vault: \"avUSDC\", blockHeight: CORE_PINNED_BLOCK_HEIGHTS.base, fixture: \"getAvantisPriceBase\" },\n    approvalsRevokeQuery: { address: VITALIK, token: CHAIN_USDC_ADDRESSES.base, spender: CHAIN_WETH_ADDRESSES.base, fixture: \"getApprovalsRevokeBase\" },\n};\n","import { CHAIN_USDC_ADDRESSES } from \"../../tokens.js\";\nimport { CORE_PINNED_BLOCK_HASHES, CORE_PINNED_BLOCK_HEIGHTS, CORE_PINNED_TRANSACTION_HASHES } from \"../pinned.js\";\nimport { DEAD_ADDRESS, TRANSFER_TOPIC, VITALIK } from \"../../integration.js\";\nimport { ERC20_BALANCE_OF_REFERENCE_CALLDATA } from \"../fixture-inputs.js\";\nexport const AVALANCHE_TEST_CONFIG = {\n    balance: { address: VITALIK },\n    balanceQuery: {\n        address: VITALIK,\n        blockHeight: CORE_PINNED_BLOCK_HEIGHTS.avalanche,\n        fixture: \"getBalanceAvalanche\",\n    },\n    tokenBalance: {\n        address: VITALIK,\n        token: CHAIN_USDC_ADDRESSES.avalanche,\n    },\n    tokenBalanceQuery: {\n        address: VITALIK,\n        token: CHAIN_USDC_ADDRESSES.avalanche,\n        blockHeight: CORE_PINNED_BLOCK_HEIGHTS.avalanche,\n        fixture: \"getTokenBalanceAvalanche\",\n    },\n    blockQuery: {\n        block: CORE_PINNED_BLOCK_HEIGHTS.avalanche,\n        fixture: \"getBlockByNumberAvalanche\",\n    },\n    blockHashQuery: {\n        hash: CORE_PINNED_BLOCK_HASHES.avalanche,\n        fixture: \"getBlockByHashAvalanche\",\n    },\n    blockTransactionsQuery: {\n        blockNumber: CORE_PINNED_BLOCK_HEIGHTS.avalanche,\n        fixture: \"getBlockTransactionsAvalanche\",\n    },\n    transfersQuery: {\n        address: VITALIK,\n        blockHeight: CORE_PINNED_BLOCK_HEIGHTS.avalanche,\n        fixture: \"getTransfersAvalanche\",\n    },\n    receiptQuery: {\n        hash: CORE_PINNED_TRANSACTION_HASHES.avalanche,\n        fixture: \"getReceiptAvalanche\",\n    },\n    transactionByHashQuery: {\n        hash: CORE_PINNED_TRANSACTION_HASHES.avalanche,\n        fixture: \"getTransactionByHashAvalanche\",\n    },\n    estimateGasQuery: {\n        to: VITALIK,\n        fixture: \"estimateGasAvalanche\",\n    },\n    codeQuery: {\n        address: CHAIN_USDC_ADDRESSES.avalanche,\n        blockHeight: CORE_PINNED_BLOCK_HEIGHTS.avalanche,\n        fixture: \"getCodeAvalanche\",\n    },\n    logsQuery: {\n        address: CHAIN_USDC_ADDRESSES.avalanche,\n        topic0: TRANSFER_TOPIC,\n        fromBlock: String(CORE_PINNED_BLOCK_HEIGHTS.avalanche - 50),\n        toBlock: String(CORE_PINNED_BLOCK_HEIGHTS.avalanche),\n        fixture: \"getLogsAvalanche\",\n    },\n    simulateCallQuery: {\n        to: CHAIN_USDC_ADDRESSES.avalanche,\n        data: ERC20_BALANCE_OF_REFERENCE_CALLDATA,\n        blockHeight: CORE_PINNED_BLOCK_HEIGHTS.avalanche,\n        fixture: \"simulateCallAvalanche\",\n    },\n    traceTransactionQuery: {\n        hash: CORE_PINNED_TRANSACTION_HASHES.avalanche,\n        fixture: \"traceTransactionAvalanche\",\n    },\n    tokenMetadataQuery: {\n        address: CHAIN_USDC_ADDRESSES.avalanche,\n        blockHeight: CORE_PINNED_BLOCK_HEIGHTS.avalanche,\n        fixture: \"getTokenMetadataAvalanche\",\n    },\n    tokenAllowanceQuery: {\n        token: CHAIN_USDC_ADDRESSES.avalanche,\n        owner: VITALIK,\n        spender: DEAD_ADDRESS,\n        blockHeight: CORE_PINNED_BLOCK_HEIGHTS.avalanche,\n        fixture: \"getTokenAllowanceAvalanche\",\n    },\n};\n","import { CHAIN_USDC_ADDRESSES, CHAIN_WETH_ADDRESSES } from \"../../tokens.js\";\nimport { DEAD_ADDRESS, TRANSFER_TOPIC, VITALIK } from \"../../integration.js\";\nimport { CORE_PINNED_BLOCK_HASHES, CORE_PINNED_BLOCK_HEIGHTS, CORE_PINNED_TRANSACTION_HASHES } from \"../pinned.js\";\nimport { AAVE_V3_COLLECTOR, ERC20_BALANCE_OF_REFERENCE_CALLDATA, SWAP_QUOTE_AMOUNT, } from \"../fixture-inputs.js\";\nexport const ARBITRUM_TEST_CONFIG = {\n    balance: {\n        address: VITALIK,\n        blockHeight: CORE_PINNED_BLOCK_HEIGHTS.arbitrum,\n    },\n    tokenBalance: {\n        address: VITALIK,\n        token: CHAIN_USDC_ADDRESSES.arbitrum,\n        blockHeight: CORE_PINNED_BLOCK_HEIGHTS.arbitrum,\n    },\n    blockQuery: {\n        block: CORE_PINNED_BLOCK_HEIGHTS.arbitrum,\n        fixture: \"getBlockByNumberArbitrum\",\n    },\n    balanceQuery: {\n        address: VITALIK,\n        blockHeight: CORE_PINNED_BLOCK_HEIGHTS.arbitrum,\n        fixture: \"getBalanceArbitrum\",\n    },\n    tokenBalanceQuery: {\n        address: VITALIK,\n        token: CHAIN_USDC_ADDRESSES.arbitrum,\n        blockHeight: CORE_PINNED_BLOCK_HEIGHTS.arbitrum,\n        fixture: \"getTokenBalanceArbitrum\",\n    },\n    blockHashQuery: {\n        hash: CORE_PINNED_BLOCK_HASHES.arbitrum,\n        fixture: \"getBlockByHashArbitrum\",\n    },\n    blockTransactionsQuery: {\n        blockNumber: CORE_PINNED_BLOCK_HEIGHTS.arbitrum,\n        fixture: \"getBlockTransactionsArbitrum\",\n    },\n    transfersQuery: {\n        address: VITALIK,\n        blockHeight: CORE_PINNED_BLOCK_HEIGHTS.arbitrum,\n        fixture: \"getTransfersArbitrum\",\n    },\n    simulateCallQuery: {\n        to: CHAIN_USDC_ADDRESSES.arbitrum,\n        data: ERC20_BALANCE_OF_REFERENCE_CALLDATA,\n        blockHeight: CORE_PINNED_BLOCK_HEIGHTS.arbitrum,\n        fixture: \"simulateCallArbitrum\",\n    },\n    traceTransactionQuery: {\n        hash: CORE_PINNED_TRANSACTION_HASHES.arbitrum,\n        fixture: \"traceTransactionArbitrum\",\n    },\n    tokenMetadataQuery: {\n        address: CHAIN_USDC_ADDRESSES.arbitrum,\n        blockHeight: CORE_PINNED_BLOCK_HEIGHTS.arbitrum,\n        fixture: \"getTokenMetadataArbitrum\",\n    },\n    tokenAllowanceQuery: {\n        token: CHAIN_USDC_ADDRESSES.arbitrum,\n        owner: VITALIK,\n        spender: DEAD_ADDRESS,\n        blockHeight: CORE_PINNED_BLOCK_HEIGHTS.arbitrum,\n        fixture: \"getTokenAllowanceArbitrum\",\n    },\n    portfolioQuery: {\n        address: VITALIK,\n        blockHeight: CORE_PINNED_BLOCK_HEIGHTS.arbitrum,\n    },\n    receiptQuery: {\n        hash: CORE_PINNED_TRANSACTION_HASHES.arbitrum,\n        fixture: \"getReceiptArbitrum\",\n    },\n    transactionByHashQuery: {\n        hash: CORE_PINNED_TRANSACTION_HASHES.arbitrum,\n        fixture: \"getTransactionByHashArbitrum\",\n    },\n    estimateGasQuery: {\n        to: VITALIK,\n        fixture: \"estimateGasArbitrum\",\n    },\n    codeQuery: {\n        address: CHAIN_USDC_ADDRESSES.arbitrum,\n        blockHeight: CORE_PINNED_BLOCK_HEIGHTS.arbitrum,\n        fixture: \"getCodeArbitrum\",\n    },\n    logsQuery: {\n        address: CHAIN_USDC_ADDRESSES.arbitrum,\n        topic0: TRANSFER_TOPIC,\n        fromBlock: String(CORE_PINNED_BLOCK_HEIGHTS.arbitrum),\n        toBlock: String(CORE_PINNED_BLOCK_HEIGHTS.arbitrum),\n        fixture: \"getLogsArbitrum\",\n    },\n    aaveV3Query: { address: AAVE_V3_COLLECTOR.arbitrum, blockHeight: CORE_PINNED_BLOCK_HEIGHTS.arbitrum, fixture: \"getAaveV3UserPositionsArbitrum\" },\n    compoundV3Query: { address: VITALIK, blockHeight: CORE_PINNED_BLOCK_HEIGHTS.arbitrum, fixture: \"getCompoundV3UserPositionsArbitrum\" },\n    lidoQuery: { address: VITALIK, blockHeight: CORE_PINNED_BLOCK_HEIGHTS.arbitrum, fixture: \"getLidoUserPositionsArbitrum\" },\n    morphoQuery: { address: VITALIK, blockHeight: CORE_PINNED_BLOCK_HEIGHTS.arbitrum, fixture: \"getMorphoUserPositionsArbitrum\" },\n    curveLlamaLendQuery: { address: VITALIK, blockHeight: CORE_PINNED_BLOCK_HEIGHTS.arbitrum, fixture: \"getCurveLlamaLendArbitrum\" },\n    approvalsQuery: { address: VITALIK, blockHeight: CORE_PINNED_BLOCK_HEIGHTS.arbitrum, fixture: \"getApprovalsArbitrum\" },\n    pendleV2InfoQuery: { fixture: \"getPendleV2InfoArbitrum\" },\n    curvePoolsQuery: { blockHeight: CORE_PINNED_BLOCK_HEIGHTS.arbitrum, fixture: \"getCurvePoolsArbitrum\" },\n    curveLlamaLendMarketsQuery: { blockHeight: CORE_PINNED_BLOCK_HEIGHTS.arbitrum, fixture: \"getCurveLlamaLendMarketsArbitrum\" },\n    uniswapV3QuoteQuery: { tokenIn: CHAIN_WETH_ADDRESSES.arbitrum, tokenOut: CHAIN_USDC_ADDRESSES.arbitrum, amount: SWAP_QUOTE_AMOUNT, blockHeight: CORE_PINNED_BLOCK_HEIGHTS.arbitrum, fixture: \"getUniswapV3QuoteArbitrum\" },\n    uniswapV4QuoteQuery: { tokenIn: CHAIN_WETH_ADDRESSES.arbitrum, tokenOut: CHAIN_USDC_ADDRESSES.arbitrum, amount: SWAP_QUOTE_AMOUNT, blockHeight: CORE_PINNED_BLOCK_HEIGHTS.arbitrum, fixture: \"getUniswapV4QuoteArbitrum\" },\n    approvalsRevokeQuery: { address: VITALIK, token: CHAIN_USDC_ADDRESSES.arbitrum, spender: CHAIN_WETH_ADDRESSES.arbitrum, fixture: \"getApprovalsRevokeArbitrum\" },\n};\n","import { DEAD_ADDRESS, TRANSFER_TOPIC, VITALIK } from \"../../integration.js\";\nimport { CORE_PINNED_BLOCK_HASHES, CORE_PINNED_BLOCK_HEIGHTS, CORE_PINNED_TRANSACTION_HASHES } from \"../pinned.js\";\nimport { AAVE_V3_COLLECTOR, ERC20_BALANCE_OF_REFERENCE_CALLDATA, } from \"../fixture-inputs.js\";\nexport const GNOSIS_TEST_CONFIG = {\n    balance: { address: VITALIK },\n    blockQuery: {\n        block: CORE_PINNED_BLOCK_HEIGHTS.gnosis,\n        fixture: \"getBlockByNumberGnosis\",\n    },\n    balanceQuery: {\n        address: VITALIK,\n        blockHeight: CORE_PINNED_BLOCK_HEIGHTS.gnosis,\n        fixture: \"getBalanceGnosis\",\n    },\n    tokenBalanceQuery: {\n        address: VITALIK,\n        token: \"0xDDAfbb505ad214D7b80b1f830fcCc89B60fb7A83\",\n        blockHeight: CORE_PINNED_BLOCK_HEIGHTS.gnosis,\n        fixture: \"getTokenBalanceGnosis\",\n    },\n    blockHashQuery: {\n        hash: CORE_PINNED_BLOCK_HASHES.gnosis,\n        fixture: \"getBlockByHashGnosis\",\n    },\n    blockTransactionsQuery: {\n        blockNumber: CORE_PINNED_BLOCK_HEIGHTS.gnosis,\n        fixture: \"getBlockTransactionsGnosis\",\n    },\n    transfersQuery: {\n        address: VITALIK,\n        blockHeight: CORE_PINNED_BLOCK_HEIGHTS.gnosis,\n        fixture: \"getTransfersGnosis\",\n    },\n    simulateCallQuery: {\n        to: \"0xDDAfbb505ad214D7b80b1f830fcCc89B60fb7A83\",\n        data: ERC20_BALANCE_OF_REFERENCE_CALLDATA,\n        blockHeight: CORE_PINNED_BLOCK_HEIGHTS.gnosis,\n        fixture: \"simulateCallGnosis\",\n    },\n    traceTransactionQuery: {\n        hash: CORE_PINNED_TRANSACTION_HASHES.gnosis,\n        fixture: \"traceTransactionGnosis\",\n    },\n    tokenMetadataQuery: {\n        address: \"0xDDAfbb505ad214D7b80b1f830fcCc89B60fb7A83\",\n        blockHeight: CORE_PINNED_BLOCK_HEIGHTS.gnosis,\n        fixture: \"getTokenMetadataGnosis\",\n    },\n    tokenAllowanceQuery: {\n        token: \"0xDDAfbb505ad214D7b80b1f830fcCc89B60fb7A83\",\n        owner: VITALIK,\n        spender: DEAD_ADDRESS,\n        blockHeight: CORE_PINNED_BLOCK_HEIGHTS.gnosis,\n        fixture: \"getTokenAllowanceGnosis\",\n    },\n    portfolioQuery: {\n        address: VITALIK,\n        blockHeight: CORE_PINNED_BLOCK_HEIGHTS.gnosis,\n    },\n    receiptQuery: {\n        hash: CORE_PINNED_TRANSACTION_HASHES.gnosis,\n        fixture: \"getReceiptGnosis\",\n    },\n    transactionByHashQuery: {\n        hash: CORE_PINNED_TRANSACTION_HASHES.gnosis,\n        fixture: \"getTransactionByHashGnosis\",\n    },\n    estimateGasQuery: {\n        to: VITALIK,\n        fixture: \"estimateGasGnosis\",\n    },\n    codeQuery: {\n        address: \"0xDDAfbb505ad214D7b80b1f830fcCc89B60fb7A83\",\n        blockHeight: CORE_PINNED_BLOCK_HEIGHTS.gnosis,\n        fixture: \"getCodeGnosis\",\n    },\n    logsQuery: {\n        // Gnosis USDC.e — 50-block window to get meaningful log density.\n        address: \"0xDDAfbb505ad214D7b80b1f830fcCc89B60fb7A83\",\n        topic0: TRANSFER_TOPIC,\n        fromBlock: String(CORE_PINNED_BLOCK_HEIGHTS.gnosis - 50),\n        toBlock: String(CORE_PINNED_BLOCK_HEIGHTS.gnosis),\n        fixture: \"getLogsGnosis\",\n    },\n    aaveV3Query: { address: AAVE_V3_COLLECTOR.gnosis, blockHeight: CORE_PINNED_BLOCK_HEIGHTS.gnosis, fixture: \"getAaveV3UserPositionsGnosis\" },\n    approvalsQuery: { address: VITALIK, blockHeight: CORE_PINNED_BLOCK_HEIGHTS.gnosis, fixture: \"getApprovalsGnosis\" },\n};\n","import { DEAD_ADDRESS, TRANSFER_TOPIC, VITALIK } from \"../../integration.js\";\nimport { CORE_PINNED_BLOCK_HASHES, CORE_PINNED_BLOCK_HEIGHTS, CORE_PINNED_TRANSACTION_HASHES } from \"../pinned.js\";\nimport { ERC20_BALANCE_OF_REFERENCE_CALLDATA } from \"../fixture-inputs.js\";\nexport const BERACHAIN_TEST_CONFIG = {\n    balance: { address: VITALIK },\n    blockQuery: {\n        block: CORE_PINNED_BLOCK_HEIGHTS.berachain,\n        fixture: \"getBlockByNumberBerachain\",\n    },\n    balanceQuery: {\n        address: VITALIK,\n        blockHeight: CORE_PINNED_BLOCK_HEIGHTS.berachain,\n        fixture: \"getBalanceBerachain\",\n    },\n    tokenBalanceQuery: {\n        address: VITALIK,\n        // WBERA — standard wrapped-native contract, live from genesis.\n        token: \"0x6969696969696969696969696969696969696969\",\n        blockHeight: CORE_PINNED_BLOCK_HEIGHTS.berachain,\n        fixture: \"getTokenBalanceBerachain\",\n    },\n    blockHashQuery: {\n        hash: CORE_PINNED_BLOCK_HASHES.berachain,\n        fixture: \"getBlockByHashBerachain\",\n    },\n    blockTransactionsQuery: {\n        blockNumber: CORE_PINNED_BLOCK_HEIGHTS.berachain,\n        fixture: \"getBlockTransactionsBerachain\",\n    },\n    transfersQuery: {\n        address: VITALIK,\n        blockHeight: CORE_PINNED_BLOCK_HEIGHTS.berachain,\n        fixture: \"getTransfersBerachain\",\n    },\n    simulateCallQuery: {\n        to: \"0x6969696969696969696969696969696969696969\",\n        data: ERC20_BALANCE_OF_REFERENCE_CALLDATA,\n        blockHeight: CORE_PINNED_BLOCK_HEIGHTS.berachain,\n        fixture: \"simulateCallBerachain\",\n    },\n    traceTransactionQuery: {\n        hash: CORE_PINNED_TRANSACTION_HASHES.berachain,\n        fixture: \"traceTransactionBerachain\",\n    },\n    tokenMetadataQuery: {\n        address: \"0x6969696969696969696969696969696969696969\",\n        blockHeight: CORE_PINNED_BLOCK_HEIGHTS.berachain,\n        fixture: \"getTokenMetadataBerachain\",\n    },\n    tokenAllowanceQuery: {\n        token: \"0x6969696969696969696969696969696969696969\",\n        owner: VITALIK,\n        spender: DEAD_ADDRESS,\n        blockHeight: CORE_PINNED_BLOCK_HEIGHTS.berachain,\n        fixture: \"getTokenAllowanceBerachain\",\n    },\n    portfolioQuery: {\n        address: VITALIK,\n        blockHeight: CORE_PINNED_BLOCK_HEIGHTS.berachain,\n    },\n    receiptQuery: {\n        hash: CORE_PINNED_TRANSACTION_HASHES.berachain,\n        fixture: \"getReceiptBerachain\",\n    },\n    transactionByHashQuery: {\n        hash: CORE_PINNED_TRANSACTION_HASHES.berachain,\n        fixture: \"getTransactionByHashBerachain\",\n    },\n    estimateGasQuery: {\n        to: VITALIK,\n        fixture: \"estimateGasBerachain\",\n    },\n    codeQuery: {\n        address: \"0x6969696969696969696969696969696969696969\",\n        blockHeight: CORE_PINNED_BLOCK_HEIGHTS.berachain,\n        fixture: \"getCodeBerachain\",\n    },\n    logsQuery: {\n        address: \"0x6969696969696969696969696969696969696969\",\n        topic0: TRANSFER_TOPIC,\n        fromBlock: String(CORE_PINNED_BLOCK_HEIGHTS.berachain),\n        toBlock: String(CORE_PINNED_BLOCK_HEIGHTS.berachain),\n        fixture: \"getLogsBerachain\",\n    },\n};\n","import { DEAD_ADDRESS, TRANSFER_TOPIC, VITALIK } from \"../../integration.js\";\nimport { CORE_PINNED_BLOCK_HASHES, CORE_PINNED_BLOCK_HEIGHTS, CORE_PINNED_TRANSACTION_HASHES } from \"../pinned.js\";\nimport { ERC20_BALANCE_OF_REFERENCE_CALLDATA } from \"../fixture-inputs.js\";\nexport const MOONBEAM_TEST_CONFIG = {\n    balance: { address: VITALIK },\n    blockQuery: {\n        block: CORE_PINNED_BLOCK_HEIGHTS.moonbeam,\n        fixture: \"getBlockByNumberMoonbeam\",\n    },\n    balanceQuery: {\n        address: VITALIK,\n        blockHeight: CORE_PINNED_BLOCK_HEIGHTS.moonbeam,\n        fixture: \"getBalanceMoonbeam\",\n    },\n    tokenBalanceQuery: {\n        address: VITALIK,\n        // WGLMR — standard wrapped-native contract, live since 2021.\n        token: \"0xAcc15dC74880C9944775448304B263D191c6077F\",\n        blockHeight: CORE_PINNED_BLOCK_HEIGHTS.moonbeam,\n        fixture: \"getTokenBalanceMoonbeam\",\n    },\n    blockHashQuery: {\n        hash: CORE_PINNED_BLOCK_HASHES.moonbeam,\n        fixture: \"getBlockByHashMoonbeam\",\n    },\n    blockTransactionsQuery: {\n        blockNumber: CORE_PINNED_BLOCK_HEIGHTS.moonbeam,\n        fixture: \"getBlockTransactionsMoonbeam\",\n    },\n    transfersQuery: {\n        address: VITALIK,\n        blockHeight: CORE_PINNED_BLOCK_HEIGHTS.moonbeam,\n        fixture: \"getTransfersMoonbeam\",\n    },\n    simulateCallQuery: {\n        to: \"0xAcc15dC74880C9944775448304B263D191c6077F\",\n        data: ERC20_BALANCE_OF_REFERENCE_CALLDATA,\n        blockHeight: CORE_PINNED_BLOCK_HEIGHTS.moonbeam,\n        fixture: \"simulateCallMoonbeam\",\n    },\n    traceTransactionQuery: {\n        hash: CORE_PINNED_TRANSACTION_HASHES.moonbeam,\n        fixture: \"traceTransactionMoonbeam\",\n    },\n    tokenMetadataQuery: {\n        address: \"0xAcc15dC74880C9944775448304B263D191c6077F\",\n        blockHeight: CORE_PINNED_BLOCK_HEIGHTS.moonbeam,\n        fixture: \"getTokenMetadataMoonbeam\",\n    },\n    tokenAllowanceQuery: {\n        token: \"0xAcc15dC74880C9944775448304B263D191c6077F\",\n        owner: VITALIK,\n        spender: DEAD_ADDRESS,\n        blockHeight: CORE_PINNED_BLOCK_HEIGHTS.moonbeam,\n        fixture: \"getTokenAllowanceMoonbeam\",\n    },\n    portfolioQuery: {\n        address: VITALIK,\n        blockHeight: CORE_PINNED_BLOCK_HEIGHTS.moonbeam,\n    },\n    receiptQuery: {\n        hash: CORE_PINNED_TRANSACTION_HASHES.moonbeam,\n        fixture: \"getReceiptMoonbeam\",\n    },\n    transactionByHashQuery: {\n        hash: CORE_PINNED_TRANSACTION_HASHES.moonbeam,\n        fixture: \"getTransactionByHashMoonbeam\",\n    },\n    estimateGasQuery: {\n        to: VITALIK,\n        fixture: \"estimateGasMoonbeam\",\n    },\n    codeQuery: {\n        address: \"0xAcc15dC74880C9944775448304B263D191c6077F\",\n        blockHeight: CORE_PINNED_BLOCK_HEIGHTS.moonbeam,\n        fixture: \"getCodeMoonbeam\",\n    },\n    logsQuery: {\n        // Moonbeam WGLMR — 50-block window for log density.\n        address: \"0xAcc15dC74880C9944775448304B263D191c6077F\",\n        topic0: TRANSFER_TOPIC,\n        fromBlock: String(CORE_PINNED_BLOCK_HEIGHTS.moonbeam - 50),\n        toBlock: String(CORE_PINNED_BLOCK_HEIGHTS.moonbeam),\n        fixture: \"getLogsMoonbeam\",\n    },\n};\n","import { DEAD_ADDRESS, TRANSFER_TOPIC, VITALIK } from \"../../integration.js\";\nimport { CORE_PINNED_BLOCK_HASHES, CORE_PINNED_BLOCK_HEIGHTS, CORE_PINNED_TRANSACTION_HASHES } from \"../pinned.js\";\nimport { ERC20_BALANCE_OF_REFERENCE_CALLDATA } from \"../fixture-inputs.js\";\nexport const MONAD_TEST_CONFIG = {\n    balance: { address: VITALIK },\n    blockQuery: {\n        block: CORE_PINNED_BLOCK_HEIGHTS.monad,\n        fixture: \"getBlockByNumberMonad\",\n    },\n    balanceQuery: {\n        address: VITALIK,\n        blockHeight: CORE_PINNED_BLOCK_HEIGHTS.monad,\n        fixture: \"getBalanceMonad\",\n    },\n    tokenBalanceQuery: {\n        address: VITALIK,\n        // Live ERC-20 at the pinned height (~160 Transfer events in the same block);\n        // Vitalik holds 0, which is deterministic and fine for exact-match fixtures.\n        token: \"0x754704Bc059F8C67012fEd69BC8A327a5aafb603\",\n        blockHeight: CORE_PINNED_BLOCK_HEIGHTS.monad,\n        fixture: \"getTokenBalanceMonad\",\n    },\n    blockHashQuery: {\n        hash: CORE_PINNED_BLOCK_HASHES.monad,\n        fixture: \"getBlockByHashMonad\",\n    },\n    blockTransactionsQuery: {\n        blockNumber: CORE_PINNED_BLOCK_HEIGHTS.monad,\n        fixture: \"getBlockTransactionsMonad\",\n    },\n    transfersQuery: {\n        address: VITALIK,\n        blockHeight: CORE_PINNED_BLOCK_HEIGHTS.monad,\n        fixture: \"getTransfersMonad\",\n    },\n    simulateCallQuery: {\n        to: \"0x754704Bc059F8C67012fEd69BC8A327a5aafb603\",\n        data: ERC20_BALANCE_OF_REFERENCE_CALLDATA,\n        blockHeight: CORE_PINNED_BLOCK_HEIGHTS.monad,\n        fixture: \"simulateCallMonad\",\n    },\n    traceTransactionQuery: {\n        hash: CORE_PINNED_TRANSACTION_HASHES.monad,\n        fixture: \"traceTransactionMonad\",\n    },\n    tokenMetadataQuery: {\n        address: \"0x754704Bc059F8C67012fEd69BC8A327a5aafb603\",\n        blockHeight: CORE_PINNED_BLOCK_HEIGHTS.monad,\n        fixture: \"getTokenMetadataMonad\",\n    },\n    tokenAllowanceQuery: {\n        token: \"0x754704Bc059F8C67012fEd69BC8A327a5aafb603\",\n        owner: VITALIK,\n        spender: DEAD_ADDRESS,\n        blockHeight: CORE_PINNED_BLOCK_HEIGHTS.monad,\n        fixture: \"getTokenAllowanceMonad\",\n    },\n    portfolioQuery: {\n        address: VITALIK,\n        blockHeight: CORE_PINNED_BLOCK_HEIGHTS.monad,\n    },\n    receiptQuery: {\n        hash: CORE_PINNED_TRANSACTION_HASHES.monad,\n        fixture: \"getReceiptMonad\",\n    },\n    transactionByHashQuery: {\n        hash: CORE_PINNED_TRANSACTION_HASHES.monad,\n        fixture: \"getTransactionByHashMonad\",\n    },\n    estimateGasQuery: {\n        to: VITALIK,\n        fixture: \"estimateGasMonad\",\n    },\n    codeQuery: {\n        address: \"0x754704Bc059F8C67012fEd69BC8A327a5aafb603\",\n        blockHeight: CORE_PINNED_BLOCK_HEIGHTS.monad,\n        fixture: \"getCodeMonad\",\n    },\n    logsQuery: {\n        // Monad reference ERC-20 — 50-block window for log density.\n        address: \"0x754704Bc059F8C67012fEd69BC8A327a5aafb603\",\n        topic0: TRANSFER_TOPIC,\n        fromBlock: String(CORE_PINNED_BLOCK_HEIGHTS.monad - 50),\n        toBlock: String(CORE_PINNED_BLOCK_HEIGHTS.monad),\n        fixture: \"getLogsMonad\",\n    },\n};\n","import { DEAD_ADDRESS, TRANSFER_TOPIC, VITALIK } from \"../../integration.js\";\nimport { CORE_PINNED_BLOCK_HASHES, CORE_PINNED_BLOCK_HEIGHTS, CORE_PINNED_TRANSACTION_HASHES } from \"../pinned.js\";\nimport { ERC20_BALANCE_OF_REFERENCE_CALLDATA } from \"../fixture-inputs.js\";\nexport const LINEA_TEST_CONFIG = {\n    balance: { address: VITALIK },\n    blockQuery: {\n        block: CORE_PINNED_BLOCK_HEIGHTS.linea,\n        fixture: \"getBlockByNumberLinea\",\n    },\n    balanceQuery: {\n        address: VITALIK,\n        blockHeight: CORE_PINNED_BLOCK_HEIGHTS.linea,\n        fixture: \"getBalanceLinea\",\n    },\n    tokenBalanceQuery: {\n        address: VITALIK,\n        token: \"0x176211869cA2b568f2A7D4EE941E073a821EE1ff\",\n        blockHeight: CORE_PINNED_BLOCK_HEIGHTS.linea,\n        fixture: \"getTokenBalanceLinea\",\n    },\n    blockHashQuery: {\n        hash: CORE_PINNED_BLOCK_HASHES.linea,\n        fixture: \"getBlockByHashLinea\",\n    },\n    blockTransactionsQuery: {\n        blockNumber: CORE_PINNED_BLOCK_HEIGHTS.linea,\n        fixture: \"getBlockTransactionsLinea\",\n    },\n    transfersQuery: {\n        address: VITALIK,\n        blockHeight: CORE_PINNED_BLOCK_HEIGHTS.linea,\n        fixture: \"getTransfersLinea\",\n    },\n    simulateCallQuery: {\n        to: \"0x176211869cA2b568f2A7D4EE941E073a821EE1ff\",\n        data: ERC20_BALANCE_OF_REFERENCE_CALLDATA,\n        blockHeight: CORE_PINNED_BLOCK_HEIGHTS.linea,\n        fixture: \"simulateCallLinea\",\n    },\n    traceTransactionQuery: {\n        hash: CORE_PINNED_TRANSACTION_HASHES.linea,\n        fixture: \"traceTransactionLinea\",\n    },\n    tokenMetadataQuery: {\n        address: \"0x176211869cA2b568f2A7D4EE941E073a821EE1ff\",\n        blockHeight: CORE_PINNED_BLOCK_HEIGHTS.linea,\n        fixture: \"getTokenMetadataLinea\",\n    },\n    tokenAllowanceQuery: {\n        token: \"0x176211869cA2b568f2A7D4EE941E073a821EE1ff\",\n        owner: VITALIK,\n        spender: DEAD_ADDRESS,\n        blockHeight: CORE_PINNED_BLOCK_HEIGHTS.linea,\n        fixture: \"getTokenAllowanceLinea\",\n    },\n    portfolioQuery: {\n        address: VITALIK,\n        blockHeight: CORE_PINNED_BLOCK_HEIGHTS.linea,\n    },\n    receiptQuery: {\n        hash: CORE_PINNED_TRANSACTION_HASHES.linea,\n        fixture: \"getReceiptLinea\",\n    },\n    transactionByHashQuery: {\n        hash: CORE_PINNED_TRANSACTION_HASHES.linea,\n        fixture: \"getTransactionByHashLinea\",\n    },\n    estimateGasQuery: {\n        to: VITALIK,\n        fixture: \"estimateGasLinea\",\n    },\n    codeQuery: {\n        address: \"0x176211869cA2b568f2A7D4EE941E073a821EE1ff\",\n        blockHeight: CORE_PINNED_BLOCK_HEIGHTS.linea,\n        fixture: \"getCodeLinea\",\n    },\n    logsQuery: {\n        // Linea USDC — 50-block window for log density.\n        address: \"0x176211869cA2b568f2A7D4EE941E073a821EE1ff\",\n        topic0: TRANSFER_TOPIC,\n        fromBlock: String(CORE_PINNED_BLOCK_HEIGHTS.linea - 50),\n        toBlock: String(CORE_PINNED_BLOCK_HEIGHTS.linea),\n        fixture: \"getLogsLinea\",\n    },\n};\n","import { CORE_PINNED_BLOCK_HASHES, CORE_PINNED_BLOCK_HEIGHTS, CORE_PINNED_TRANSACTION_HASHES } from \"../pinned.js\";\nimport { VITALIK, TRANSFER_TOPIC } from \"../../integration.js\";\n// WHYPE — wrapped native HYPE on Hyperliquid's EVM side. Standard ERC-20\n// (balanceOf/name/symbol/decimals); good target for generic contract-reads.\nconst WHYPE = \"0x5555555555555555555555555555555555555555\";\nexport const HYPERLIQUID_TEST_CONFIG = {\n    balance: { address: VITALIK },\n    balanceQuery: {\n        address: VITALIK,\n        blockHeight: CORE_PINNED_BLOCK_HEIGHTS.hyperliquid,\n        fixture: \"getBalanceHyperliquid\",\n    },\n    tokenBalanceQuery: {\n        address: VITALIK,\n        token: WHYPE,\n        blockHeight: CORE_PINNED_BLOCK_HEIGHTS.hyperliquid,\n        fixture: \"getTokenBalanceHyperliquid\",\n    },\n    blockQuery: {\n        block: CORE_PINNED_BLOCK_HEIGHTS.hyperliquid,\n        fixture: \"getBlockByNumberHyperliquid\",\n    },\n    blockHashQuery: {\n        hash: CORE_PINNED_BLOCK_HASHES.hyperliquid,\n        fixture: \"getBlockByHashHyperliquid\",\n    },\n    blockTransactionsQuery: {\n        blockNumber: CORE_PINNED_BLOCK_HEIGHTS.hyperliquid,\n        fixture: \"getBlockTransactionsHyperliquid\",\n    },\n    transfersQuery: {\n        address: VITALIK,\n        blockHeight: CORE_PINNED_BLOCK_HEIGHTS.hyperliquid,\n        fixture: \"getTransfersHyperliquid\",\n    },\n    estimateGasQuery: {\n        to: VITALIK,\n        fixture: \"estimateGasHyperliquid\",\n    },\n    // traceTransactionQuery intentionally omitted: hyperliquid's upstream RPC\n    // does not expose debug_traceTransaction, so exercising the method here\n    // always yields a server error. Remove this comment and restore the entry\n    // once the upstream gains tracing support.\n    receiptQuery: {\n        hash: CORE_PINNED_TRANSACTION_HASHES.hyperliquid,\n        fixture: \"getReceiptHyperliquid\",\n    },\n    transactionByHashQuery: {\n        hash: CORE_PINNED_TRANSACTION_HASHES.hyperliquid,\n        fixture: \"getTransactionByHashHyperliquid\",\n    },\n    codeQuery: {\n        address: WHYPE,\n        blockHeight: CORE_PINNED_BLOCK_HEIGHTS.hyperliquid,\n        fixture: \"getCodeHyperliquid\",\n    },\n    logsQuery: {\n        // WHYPE Transfer logs — 50-block window for density (single block had 0).\n        address: WHYPE,\n        topic0: TRANSFER_TOPIC,\n        fromBlock: String(CORE_PINNED_BLOCK_HEIGHTS.hyperliquid - 50),\n        toBlock: String(CORE_PINNED_BLOCK_HEIGHTS.hyperliquid),\n        fixture: \"getLogsHyperliquid\",\n    },\n    simulateCallQuery: {\n        to: WHYPE,\n        data: \"0x70a08231000000000000000000000000d8da6bf26964af9d7eed9e03e53415d37aa96045\",\n        blockHeight: CORE_PINNED_BLOCK_HEIGHTS.hyperliquid,\n        fixture: \"simulateCallHyperliquid\",\n    },\n};\n","import { TRANSFER_TOPIC, VITALIK } from \"../../integration.js\";\nimport { CORE_PINNED_BLOCK_HASHES, CORE_PINNED_BLOCK_HEIGHTS, CORE_PINNED_TRANSACTION_HASHES } from \"../pinned.js\";\nimport { ERC20_BALANCE_OF_REFERENCE_CALLDATA, SCROLL_USDC_ALLOWANCE_OWNER, SCROLL_USDC_ALLOWANCE_SPENDER, } from \"../fixture-inputs.js\";\n// Native USDC on Scroll, issued directly by Circle.\nconst SCROLL_USDC = \"0x06eFdBFf2a14a7c8E15944D1F4A48F9F95F663A4\";\nexport const SCROLL_TEST_CONFIG = {\n    balance: { address: VITALIK },\n    blockQuery: {\n        block: CORE_PINNED_BLOCK_HEIGHTS.scroll,\n        fixture: \"getBlockByNumberScroll\",\n    },\n    balanceQuery: {\n        address: VITALIK,\n        blockHeight: CORE_PINNED_BLOCK_HEIGHTS.scroll,\n        fixture: \"getBalanceScroll\",\n    },\n    tokenBalanceQuery: {\n        address: VITALIK,\n        token: SCROLL_USDC,\n        blockHeight: CORE_PINNED_BLOCK_HEIGHTS.scroll,\n        fixture: \"getTokenBalanceScroll\",\n    },\n    blockHashQuery: {\n        hash: CORE_PINNED_BLOCK_HASHES.scroll,\n        fixture: \"getBlockByHashScroll\",\n    },\n    blockTransactionsQuery: {\n        blockNumber: CORE_PINNED_BLOCK_HEIGHTS.scroll,\n        fixture: \"getBlockTransactionsScroll\",\n    },\n    transfersQuery: {\n        address: VITALIK,\n        blockHeight: CORE_PINNED_BLOCK_HEIGHTS.scroll,\n        fixture: \"getTransfersScroll\",\n    },\n    simulateCallQuery: {\n        to: SCROLL_USDC,\n        data: ERC20_BALANCE_OF_REFERENCE_CALLDATA,\n        blockHeight: CORE_PINNED_BLOCK_HEIGHTS.scroll,\n        fixture: \"simulateCallScroll\",\n    },\n    traceTransactionQuery: {\n        hash: CORE_PINNED_TRANSACTION_HASHES.scroll,\n        fixture: \"traceTransactionScroll\",\n    },\n    tokenMetadataQuery: {\n        address: SCROLL_USDC,\n        blockHeight: CORE_PINNED_BLOCK_HEIGHTS.scroll,\n        fixture: \"getTokenMetadataScroll\",\n    },\n    tokenAllowanceQuery: {\n        token: SCROLL_USDC,\n        owner: SCROLL_USDC_ALLOWANCE_OWNER,\n        spender: SCROLL_USDC_ALLOWANCE_SPENDER,\n        blockHeight: CORE_PINNED_BLOCK_HEIGHTS.scroll,\n        fixture: \"getTokenAllowanceScroll\",\n    },\n    portfolioQuery: {\n        address: VITALIK,\n        blockHeight: CORE_PINNED_BLOCK_HEIGHTS.scroll,\n    },\n    receiptQuery: {\n        hash: CORE_PINNED_TRANSACTION_HASHES.scroll,\n        fixture: \"getReceiptScroll\",\n    },\n    transactionByHashQuery: {\n        hash: CORE_PINNED_TRANSACTION_HASHES.scroll,\n        fixture: \"getTransactionByHashScroll\",\n    },\n    estimateGasQuery: {\n        to: VITALIK,\n        fixture: \"estimateGasScroll\",\n    },\n    codeQuery: {\n        address: SCROLL_USDC,\n        blockHeight: CORE_PINNED_BLOCK_HEIGHTS.scroll,\n        fixture: \"getCodeScroll\",\n    },\n    logsQuery: {\n        // Scroll USDC — 50-block window for log density.\n        address: SCROLL_USDC,\n        topic0: TRANSFER_TOPIC,\n        fromBlock: String(CORE_PINNED_BLOCK_HEIGHTS.scroll - 50),\n        toBlock: String(CORE_PINNED_BLOCK_HEIGHTS.scroll),\n        fixture: \"getLogsScroll\",\n    },\n};\n","import { DEAD_ADDRESS, TRANSFER_TOPIC, VITALIK } from \"../../integration.js\";\nimport { CORE_PINNED_BLOCK_HASHES, CORE_PINNED_BLOCK_HEIGHTS, CORE_PINNED_TRANSACTION_HASHES } from \"../pinned.js\";\nimport { ERC20_BALANCE_OF_REFERENCE_CALLDATA } from \"../fixture-inputs.js\";\n// LINK on Plasma — registered in Spectrum's `tokens` table (decimals=18).\nconst PLASMA_TOKEN = \"0x76a443768a5e3b8d1aed0105fc250877841deb40\";\nexport const PLASMA_TEST_CONFIG = {\n    balance: { address: VITALIK },\n    blockQuery: {\n        block: CORE_PINNED_BLOCK_HEIGHTS.plasma,\n        fixture: \"getBlockByNumberPlasma\",\n    },\n    balanceQuery: {\n        address: VITALIK,\n        blockHeight: CORE_PINNED_BLOCK_HEIGHTS.plasma,\n        fixture: \"getBalancePlasma\",\n    },\n    tokenBalanceQuery: {\n        address: VITALIK,\n        token: PLASMA_TOKEN,\n        blockHeight: CORE_PINNED_BLOCK_HEIGHTS.plasma,\n        fixture: \"getTokenBalancePlasma\",\n    },\n    blockHashQuery: {\n        hash: CORE_PINNED_BLOCK_HASHES.plasma,\n        fixture: \"getBlockByHashPlasma\",\n    },\n    blockTransactionsQuery: {\n        blockNumber: CORE_PINNED_BLOCK_HEIGHTS.plasma,\n        fixture: \"getBlockTransactionsPlasma\",\n    },\n    transfersQuery: {\n        address: VITALIK,\n        blockHeight: CORE_PINNED_BLOCK_HEIGHTS.plasma,\n        fixture: \"getTransfersPlasma\",\n    },\n    simulateCallQuery: {\n        to: PLASMA_TOKEN,\n        data: ERC20_BALANCE_OF_REFERENCE_CALLDATA,\n        blockHeight: CORE_PINNED_BLOCK_HEIGHTS.plasma,\n        fixture: \"simulateCallPlasma\",\n    },\n    traceTransactionQuery: {\n        hash: CORE_PINNED_TRANSACTION_HASHES.plasma,\n        fixture: \"traceTransactionPlasma\",\n    },\n    tokenMetadataQuery: {\n        address: PLASMA_TOKEN,\n        blockHeight: CORE_PINNED_BLOCK_HEIGHTS.plasma,\n        fixture: \"getTokenMetadataPlasma\",\n    },\n    tokenAllowanceQuery: {\n        token: PLASMA_TOKEN,\n        owner: VITALIK,\n        spender: DEAD_ADDRESS,\n        blockHeight: CORE_PINNED_BLOCK_HEIGHTS.plasma,\n        fixture: \"getTokenAllowancePlasma\",\n    },\n    portfolioQuery: {\n        address: VITALIK,\n        blockHeight: CORE_PINNED_BLOCK_HEIGHTS.plasma,\n    },\n    receiptQuery: {\n        hash: CORE_PINNED_TRANSACTION_HASHES.plasma,\n        fixture: \"getReceiptPlasma\",\n    },\n    transactionByHashQuery: {\n        hash: CORE_PINNED_TRANSACTION_HASHES.plasma,\n        fixture: \"getTransactionByHashPlasma\",\n    },\n    estimateGasQuery: {\n        to: VITALIK,\n        fixture: \"estimateGasPlasma\",\n    },\n    codeQuery: {\n        address: PLASMA_TOKEN,\n        blockHeight: CORE_PINNED_BLOCK_HEIGHTS.plasma,\n        fixture: \"getCodePlasma\",\n    },\n    logsQuery: {\n        // Plasma USDT0 — 50-block window for log density.\n        address: PLASMA_TOKEN,\n        topic0: TRANSFER_TOPIC,\n        fromBlock: String(CORE_PINNED_BLOCK_HEIGHTS.plasma - 50),\n        toBlock: String(CORE_PINNED_BLOCK_HEIGHTS.plasma),\n        fixture: \"getLogsPlasma\",\n    },\n};\n","import { TRANSFER_TOPIC, VITALIK } from \"../../integration.js\";\nimport { CORE_PINNED_BLOCK_HASHES, CORE_PINNED_BLOCK_HEIGHTS, CORE_PINNED_TRANSACTION_HASHES } from \"../pinned.js\";\nimport { ERC20_BALANCE_OF_REFERENCE_CALLDATA, XLAYER_USDC_ALLOWANCE_OWNER, XLAYER_USDC_ALLOWANCE_SPENDER, } from \"../fixture-inputs.js\";\n// Bridged USDC.e on X Layer — the canonical stablecoin used for contract-call\n// shaped tests on this chain.\nconst XLAYER_USDC = \"0x74b7F16337b8972027F6196A17a631aC6dE26d22\";\nexport const XLAYER_TEST_CONFIG = {\n    balance: { address: VITALIK },\n    blockQuery: {\n        block: CORE_PINNED_BLOCK_HEIGHTS.xlayer,\n        fixture: \"getBlockByNumberXlayer\",\n    },\n    balanceQuery: {\n        address: VITALIK,\n        blockHeight: CORE_PINNED_BLOCK_HEIGHTS.xlayer,\n        fixture: \"getBalanceXlayer\",\n    },\n    tokenBalanceQuery: {\n        address: VITALIK,\n        token: XLAYER_USDC,\n        blockHeight: CORE_PINNED_BLOCK_HEIGHTS.xlayer,\n        fixture: \"getTokenBalanceXlayer\",\n    },\n    blockHashQuery: {\n        hash: CORE_PINNED_BLOCK_HASHES.xlayer,\n        fixture: \"getBlockByHashXlayer\",\n    },\n    blockTransactionsQuery: {\n        blockNumber: CORE_PINNED_BLOCK_HEIGHTS.xlayer,\n        fixture: \"getBlockTransactionsXlayer\",\n    },\n    transfersQuery: {\n        address: VITALIK,\n        blockHeight: CORE_PINNED_BLOCK_HEIGHTS.xlayer,\n        fixture: \"getTransfersXlayer\",\n    },\n    simulateCallQuery: {\n        to: XLAYER_USDC,\n        data: ERC20_BALANCE_OF_REFERENCE_CALLDATA,\n        blockHeight: CORE_PINNED_BLOCK_HEIGHTS.xlayer,\n        fixture: \"simulateCallXlayer\",\n    },\n    traceTransactionQuery: {\n        hash: CORE_PINNED_TRANSACTION_HASHES.xlayer,\n        fixture: \"traceTransactionXlayer\",\n    },\n    tokenMetadataQuery: {\n        address: XLAYER_USDC,\n        blockHeight: CORE_PINNED_BLOCK_HEIGHTS.xlayer,\n        fixture: \"getTokenMetadataXlayer\",\n    },\n    tokenAllowanceQuery: {\n        token: XLAYER_USDC,\n        owner: XLAYER_USDC_ALLOWANCE_OWNER,\n        spender: XLAYER_USDC_ALLOWANCE_SPENDER,\n        blockHeight: CORE_PINNED_BLOCK_HEIGHTS.xlayer,\n        fixture: \"getTokenAllowanceXlayer\",\n    },\n    portfolioQuery: {\n        address: VITALIK,\n        blockHeight: CORE_PINNED_BLOCK_HEIGHTS.xlayer,\n    },\n    receiptQuery: {\n        hash: CORE_PINNED_TRANSACTION_HASHES.xlayer,\n        fixture: \"getReceiptXlayer\",\n    },\n    transactionByHashQuery: {\n        hash: CORE_PINNED_TRANSACTION_HASHES.xlayer,\n        fixture: \"getTransactionByHashXlayer\",\n    },\n    estimateGasQuery: {\n        to: VITALIK,\n        fixture: \"estimateGasXlayer\",\n    },\n    codeQuery: {\n        address: XLAYER_USDC,\n        blockHeight: CORE_PINNED_BLOCK_HEIGHTS.xlayer,\n        fixture: \"getCodeXlayer\",\n    },\n    logsQuery: {\n        // X Layer USDC.e — 50-block window for log density.\n        address: XLAYER_USDC,\n        topic0: TRANSFER_TOPIC,\n        fromBlock: String(CORE_PINNED_BLOCK_HEIGHTS.xlayer - 50),\n        toBlock: String(CORE_PINNED_BLOCK_HEIGHTS.xlayer),\n        fixture: \"getLogsXlayer\",\n    },\n};\n","import { CORE_PINNED_BLOCK_HEIGHTS } from \"../pinned.js\";\nimport { SOL_WALLET, SOL_USDC_MINT } from \"../../integration.js\";\nexport const SOLANA_TEST_CONFIG = {\n    balance: { address: SOL_WALLET },\n    tokenBalance: {\n        address: SOL_WALLET,\n        token: SOL_USDC_MINT,\n    },\n    blockQuery: {\n        block: CORE_PINNED_BLOCK_HEIGHTS.solana,\n        fixture: \"getBlockByNumberSolana\",\n    },\n    balanceQuery: {\n        address: SOL_WALLET,\n        blockHeight: CORE_PINNED_BLOCK_HEIGHTS.solana,\n        fixture: \"getBalanceSolana\",\n    },\n};\n","import { CORE_PINNED_BLOCK_HEIGHTS } from \"../pinned.js\";\nimport { BITCOIN_REFERENCE_ADDRESS } from \"../fixture-inputs.js\";\nexport const BITCOIN_TEST_CONFIG = {\n    balance: { address: BITCOIN_REFERENCE_ADDRESS },\n    blockQuery: {\n        block: CORE_PINNED_BLOCK_HEIGHTS.bitcoin,\n        fixture: \"getBlockByNumberBitcoin\",\n    },\n};\n","import { CORE_PINNED_BLOCK_HEIGHTS, CORE_PINNED_BLOCK_HASHES, CORE_PINNED_TRANSACTION_HASHES } from \"../pinned.js\";\nimport { STARKNET_ERC20_BALANCE_OF_SELECTOR, STARKNET_ETH_TOKEN, STARKNET_WALLET, } from \"../../integration.js\";\nexport const STARKNET_TEST_CONFIG = {\n    balance: {\n        address: STARKNET_WALLET,\n        blockHeight: CORE_PINNED_BLOCK_HEIGHTS[\"starknet\"],\n    },\n    tokenBalance: {\n        address: STARKNET_WALLET,\n        token: STARKNET_ETH_TOKEN,\n        blockHeight: CORE_PINNED_BLOCK_HEIGHTS[\"starknet\"],\n    },\n    blockQuery: {\n        block: CORE_PINNED_BLOCK_HEIGHTS[\"starknet\"],\n        fixture: \"getBlockByNumberStarknet\",\n    },\n    balanceQuery: {\n        address: STARKNET_WALLET,\n        blockHeight: CORE_PINNED_BLOCK_HEIGHTS[\"starknet\"],\n        fixture: \"getBalanceStarknet\",\n    },\n    tokenBalanceQuery: {\n        address: STARKNET_WALLET,\n        token: STARKNET_ETH_TOKEN,\n        blockHeight: CORE_PINNED_BLOCK_HEIGHTS[\"starknet\"],\n        fixture: \"getTokenBalanceStarknet\",\n    },\n    blockHashQuery: {\n        hash: CORE_PINNED_BLOCK_HASHES[\"starknet\"],\n        fixture: \"getBlockByHashStarknet\",\n    },\n    blockTransactionsQuery: {\n        blockNumber: CORE_PINNED_BLOCK_HEIGHTS[\"starknet\"],\n        fixture: \"getBlockTransactionsStarknet\",\n    },\n    receiptQuery: {\n        hash: CORE_PINNED_TRANSACTION_HASHES[\"starknet\"],\n        fixture: \"getReceiptStarknet\",\n    },\n    transactionByHashQuery: {\n        hash: CORE_PINNED_TRANSACTION_HASHES[\"starknet\"],\n        fixture: \"getTransactionByHashStarknet\",\n    },\n    traceTransactionQuery: {\n        hash: CORE_PINNED_TRANSACTION_HASHES[\"starknet\"],\n        fixture: \"traceTransactionStarknet\",\n    },\n    // EVM-shaped envelope mapped onto starknet_call: `to` carries the contract\n    // address, `data` carries the entry-point selector, and `value` is a single\n    // optional calldata felt. Vector targets ERC-20 balanceOf(STARKNET_WALLET).\n    simulateCallQuery: {\n        to: STARKNET_ETH_TOKEN,\n        data: STARKNET_ERC20_BALANCE_OF_SELECTOR,\n        value: STARKNET_WALLET,\n        blockHeight: CORE_PINNED_BLOCK_HEIGHTS[\"starknet\"],\n        fixture: \"simulateCallStarknet\",\n    },\n    // Forward the full-class lookup as a single contract address.\n    codeQuery: {\n        address: STARKNET_ETH_TOKEN,\n        blockHeight: CORE_PINNED_BLOCK_HEIGHTS[\"starknet\"],\n        fixture: \"getCodeStarknet\",\n    },\n    // Starknet keys don't fit the EVM 32-byte topic regex, so topic0 is omitted\n    // — the handler filters by address only and forwards to starknet_getEvents.\n    logsQuery: {\n        address: STARKNET_ETH_TOKEN,\n        fromBlock: String(CORE_PINNED_BLOCK_HEIGHTS[\"starknet\"]),\n        toBlock: String(CORE_PINNED_BLOCK_HEIGHTS[\"starknet\"]),\n        fixture: \"getLogsStarknet\",\n    },\n    // estimateGas vector targets the pinned wallet — Starknet fees aren't a flat\n    // ~21000-style number; the matching integration test should treat the\n    // response as opaque (no exact-equality assertion).\n    estimateGasQuery: {\n        to: STARKNET_WALLET,\n        fixture: \"estimateGasStarknet\",\n    },\n};\n","import { ETHEREUM_TEST_CONFIG } from \"./chains/ethereum.js\";\nimport { POLYGON_TEST_CONFIG } from \"./chains/polygon.js\";\nimport { BSC_TEST_CONFIG } from \"./chains/bsc.js\";\nimport { OPTIMISM_TEST_CONFIG } from \"./chains/optimism.js\";\nimport { BASE_TEST_CONFIG } from \"./chains/base.js\";\nimport { AVALANCHE_TEST_CONFIG } from \"./chains/avalanche.js\";\nimport { ARBITRUM_TEST_CONFIG } from \"./chains/arbitrum.js\";\nimport { GNOSIS_TEST_CONFIG } from \"./chains/gnosis.js\";\nimport { BERACHAIN_TEST_CONFIG } from \"./chains/berachain.js\";\nimport { MOONBEAM_TEST_CONFIG } from \"./chains/moonbeam.js\";\nimport { MONAD_TEST_CONFIG } from \"./chains/monad.js\";\nimport { LINEA_TEST_CONFIG } from \"./chains/linea.js\";\nimport { HYPERLIQUID_TEST_CONFIG } from \"./chains/hyperliquid.js\";\nimport { SCROLL_TEST_CONFIG } from \"./chains/scroll.js\";\nimport { PLASMA_TEST_CONFIG } from \"./chains/plasma.js\";\nimport { XLAYER_TEST_CONFIG } from \"./chains/xlayer.js\";\nimport { SOLANA_TEST_CONFIG } from \"./chains/solana.js\";\nimport { BITCOIN_TEST_CONFIG } from \"./chains/bitcoin.js\";\nimport { STARKNET_TEST_CONFIG } from \"./chains/starknet.js\";\n/** Canonical per-chain matrix used to derive endpoint-specific test vectors. */\nexport const CORE_CHAIN_TEST_MATRIX = {\n    ethereum: ETHEREUM_TEST_CONFIG,\n    polygon: POLYGON_TEST_CONFIG,\n    bsc: BSC_TEST_CONFIG,\n    optimism: OPTIMISM_TEST_CONFIG,\n    base: BASE_TEST_CONFIG,\n    avalanche: AVALANCHE_TEST_CONFIG,\n    arbitrum: ARBITRUM_TEST_CONFIG,\n    gnosis: GNOSIS_TEST_CONFIG,\n    berachain: BERACHAIN_TEST_CONFIG,\n    moonbeam: MOONBEAM_TEST_CONFIG,\n    monad: MONAD_TEST_CONFIG,\n    linea: LINEA_TEST_CONFIG,\n    hyperliquid: HYPERLIQUID_TEST_CONFIG,\n    scroll: SCROLL_TEST_CONFIG,\n    plasma: PLASMA_TEST_CONFIG,\n    xlayer: XLAYER_TEST_CONFIG,\n    solana: SOLANA_TEST_CONFIG,\n    bitcoin: BITCOIN_TEST_CONFIG,\n    starknet: STARKNET_TEST_CONFIG,\n};\nexport const CORE_CHAIN_TEST_ENTRIES = Object.entries(CORE_CHAIN_TEST_MATRIX);\n","import { CORE_CHAIN_TEST_ENTRIES, } from \"./chain-matrix.js\";\n/** Pinned block-by-number vectors for chains with verified getBlockByNumber coverage. */\nexport const CORE_BLOCK_QUERY_VECTORS = CORE_CHAIN_TEST_ENTRIES.flatMap(([chain, config]) => config.blockQuery\n    ? [\n        {\n            chain,\n            ...config.blockQuery,\n        },\n    ]\n    : []);\nexport const CORE_BLOCK_QUERY_TEST_CHAINS = CORE_BLOCK_QUERY_VECTORS.map((vector) => vector.chain);\n/** Pinned getBalance vectors for chains whose upstream providers support historical balance queries at the pinned height. */\nexport const CORE_BALANCE_QUERY_VECTORS = CORE_CHAIN_TEST_ENTRIES.flatMap(([chain, config]) => config.balanceQuery\n    ? [\n        {\n            chain,\n            ...config.balanceQuery,\n        },\n    ]\n    : []);\nexport const CORE_BALANCE_QUERY_TEST_CHAINS = CORE_BALANCE_QUERY_VECTORS.map((vector) => vector.chain);\n/** Pinned getTokenBalance vectors for chains whose upstream providers support historical token balance queries at the pinned height. */\nexport const CORE_TOKEN_BALANCE_QUERY_VECTORS = CORE_CHAIN_TEST_ENTRIES.flatMap(([chain, config]) => config.tokenBalanceQuery\n    ? [\n        {\n            chain,\n            ...config.tokenBalanceQuery,\n        },\n    ]\n    : []);\nexport const CORE_TOKEN_BALANCE_QUERY_TEST_CHAINS = CORE_TOKEN_BALANCE_QUERY_VECTORS.map((vector) => vector.chain);\n/** Pinned getBlockByHash vectors for chains with verified archive-backed block lookups. */\nexport const CORE_BLOCK_HASH_QUERY_VECTORS = CORE_CHAIN_TEST_ENTRIES.flatMap(([chain, config]) => config.blockHashQuery\n    ? [\n        {\n            chain,\n            ...config.blockHashQuery,\n        },\n    ]\n    : []);\nexport const CORE_BLOCK_HASH_QUERY_TEST_CHAINS = CORE_BLOCK_HASH_QUERY_VECTORS.map((vector) => vector.chain);\n/** Pinned getBlockTransactions vectors — each entry loads the full transaction list for its chain's pinned block. */\nexport const CORE_BLOCK_TRANSACTIONS_QUERY_VECTORS = CORE_CHAIN_TEST_ENTRIES.flatMap(([chain, config]) => config.blockTransactionsQuery\n    ? [\n        {\n            chain,\n            ...config.blockTransactionsQuery,\n        },\n    ]\n    : []);\nexport const CORE_BLOCK_TRANSACTIONS_QUERY_TEST_CHAINS = CORE_BLOCK_TRANSACTIONS_QUERY_VECTORS.map((vector) => vector.chain);\n/** Pinned getTransfers vectors — 50-block window ending at each chain's pinned height for the reference address. */\nexport const CORE_TRANSFERS_QUERY_VECTORS = CORE_CHAIN_TEST_ENTRIES.flatMap(([chain, config]) => config.transfersQuery\n    ? [\n        {\n            chain,\n            ...config.transfersQuery,\n        },\n    ]\n    : []);\nexport const CORE_TRANSFERS_QUERY_TEST_CHAINS = CORE_TRANSFERS_QUERY_VECTORS.map((vector) => vector.chain);\n/** Pinned simulateCall vectors — each entry runs balanceOf(EVM_REFERENCE_ADDRESS) against its chain's token at the pinned block. */\nexport const CORE_SIMULATE_CALL_QUERY_VECTORS = CORE_CHAIN_TEST_ENTRIES.flatMap(([chain, config]) => config.simulateCallQuery\n    ? [\n        {\n            chain,\n            ...config.simulateCallQuery,\n        },\n    ]\n    : []);\nexport const CORE_SIMULATE_CALL_QUERY_TEST_CHAINS = CORE_SIMULATE_CALL_QUERY_VECTORS.map((vector) => vector.chain);\n/** Pinned traceTransaction vectors — reuses the same per-chain hashes as `receiptQuery`. */\nexport const CORE_TRACE_TRANSACTION_QUERY_VECTORS = CORE_CHAIN_TEST_ENTRIES.flatMap(([chain, config]) => config.traceTransactionQuery\n    ? [\n        {\n            chain,\n            ...config.traceTransactionQuery,\n        },\n    ]\n    : []);\nexport const CORE_TRACE_TRANSACTION_QUERY_TEST_CHAINS = CORE_TRACE_TRANSACTION_QUERY_VECTORS.map((vector) => vector.chain);\n/** Pinned getReceipt vectors — each hash is the first transaction from the chain's pinned block. */\nexport const CORE_RECEIPT_QUERY_VECTORS = CORE_CHAIN_TEST_ENTRIES.flatMap(([chain, config]) => config.receiptQuery\n    ? [\n        {\n            chain,\n            ...config.receiptQuery,\n        },\n    ]\n    : []);\nexport const CORE_RECEIPT_QUERY_TEST_CHAINS = CORE_RECEIPT_QUERY_VECTORS.map((vector) => vector.chain);\n/** Pinned getTransactionByHash vectors — reuses the same per-chain hashes as `receiptQuery`. */\nexport const CORE_TRANSACTION_BY_HASH_QUERY_VECTORS = CORE_CHAIN_TEST_ENTRIES.flatMap(([chain, config]) => config.transactionByHashQuery\n    ? [\n        {\n            chain,\n            ...config.transactionByHashQuery,\n        },\n    ]\n    : []);\nexport const CORE_TRANSACTION_BY_HASH_QUERY_TEST_CHAINS = CORE_TRANSACTION_BY_HASH_QUERY_VECTORS.map((vector) => vector.chain);\n/** Pinned estimateGas vectors — each entry estimates a basic `to`-only transfer. */\nexport const CORE_ESTIMATE_GAS_QUERY_VECTORS = CORE_CHAIN_TEST_ENTRIES.flatMap(([chain, config]) => config.estimateGasQuery\n    ? [\n        {\n            chain,\n            ...config.estimateGasQuery,\n        },\n    ]\n    : []);\nexport const CORE_ESTIMATE_GAS_QUERY_TEST_CHAINS = CORE_ESTIMATE_GAS_QUERY_VECTORS.map((vector) => vector.chain);\n/** Pinned getCode vectors — each entry targets a well-known contract at the pinned height. */\nexport const CORE_CODE_QUERY_VECTORS = CORE_CHAIN_TEST_ENTRIES.flatMap(([chain, config]) => config.codeQuery\n    ? [\n        {\n            chain,\n            ...config.codeQuery,\n        },\n    ]\n    : []);\nexport const CORE_CODE_QUERY_TEST_CHAINS = CORE_CODE_QUERY_VECTORS.map((vector) => vector.chain);\n/** Pinned getLogs vectors — each entry targets a known contract + Transfer topic in a pinned block window. */\nexport const CORE_LOGS_QUERY_VECTORS = CORE_CHAIN_TEST_ENTRIES.flatMap(([chain, config]) => config.logsQuery\n    ? [\n        {\n            chain,\n            ...config.logsQuery,\n        },\n    ]\n    : []);\nexport const CORE_LOGS_QUERY_TEST_CHAINS = CORE_LOGS_QUERY_VECTORS.map((vector) => vector.chain);\n/** Per-chain balance vectors used by integration contract tests. */\nexport const CORE_BALANCE_TEST_VECTORS = Object.fromEntries(CORE_CHAIN_TEST_ENTRIES.flatMap(([chain, config]) => config.balance ? [[chain, config.balance]] : []));\nexport const CORE_BALANCE_TEST_CHAINS = Object.keys(CORE_BALANCE_TEST_VECTORS);\n/** Per-chain token balance vectors for chains where token-balance lookups are supported. */\nexport const CORE_TOKEN_BALANCE_TEST_VECTORS = Object.fromEntries(CORE_CHAIN_TEST_ENTRIES.flatMap(([chain, config]) => config.tokenBalance ? [[chain, config.tokenBalance]] : []));\nexport const CORE_TOKEN_BALANCE_TEST_CHAINS = Object.keys(CORE_TOKEN_BALANCE_TEST_VECTORS);\n","import { CORE_CHAIN_TEST_ENTRIES, } from \"./chain-matrix.js\";\n/** Pinned getTokenMetadata vectors — reads name/symbol/decimals/totalSupply at the chain's pinned block. */\nexport const ASSETS_TOKEN_METADATA_QUERY_VECTORS = CORE_CHAIN_TEST_ENTRIES.flatMap(([chain, config]) => config.tokenMetadataQuery\n    ? [\n        {\n            chain,\n            ...config.tokenMetadataQuery,\n        },\n    ]\n    : []);\nexport const ASSETS_TOKEN_METADATA_QUERY_TEST_CHAINS = ASSETS_TOKEN_METADATA_QUERY_VECTORS.map((vector) => vector.chain);\n/** Pinned getTokenAllowance vectors — VITALIK→DEAD_ADDRESS allowance (always 0) at the chain's pinned block. */\nexport const ASSETS_TOKEN_ALLOWANCE_QUERY_VECTORS = CORE_CHAIN_TEST_ENTRIES.flatMap(([chain, config]) => config.tokenAllowanceQuery\n    ? [\n        {\n            chain,\n            ...config.tokenAllowanceQuery,\n        },\n    ]\n    : []);\nexport const ASSETS_TOKEN_ALLOWANCE_QUERY_TEST_CHAINS = ASSETS_TOKEN_ALLOWANCE_QUERY_VECTORS.map((vector) => vector.chain);\n/** Per-chain getPortfolio vectors (no fixture — schema-only, pricing data is live). */\nexport const ASSETS_PORTFOLIO_QUERY_VECTORS = CORE_CHAIN_TEST_ENTRIES.flatMap(([chain, config]) => config.portfolioQuery\n    ? [\n        {\n            chain,\n            ...config.portfolioQuery,\n        },\n    ]\n    : []);\nexport const ASSETS_PORTFOLIO_QUERY_TEST_CHAINS = ASSETS_PORTFOLIO_QUERY_VECTORS.map((vector) => vector.chain);\n","import { CORE_CHAIN_TEST_ENTRIES, } from \"./chain-matrix.js\";\nexport const DEFI_AAVE_V2_QUERY_VECTORS = CORE_CHAIN_TEST_ENTRIES.flatMap(([chain, config]) => (config.aaveV2Query ? [{ chain, ...config.aaveV2Query }] : []));\nexport const DEFI_AAVE_V3_QUERY_VECTORS = CORE_CHAIN_TEST_ENTRIES.flatMap(([chain, config]) => (config.aaveV3Query ? [{ chain, ...config.aaveV3Query }] : []));\nexport const DEFI_COMPOUND_V2_QUERY_VECTORS = CORE_CHAIN_TEST_ENTRIES.flatMap(([chain, config]) => (config.compoundV2Query ? [{ chain, ...config.compoundV2Query }] : []));\nexport const DEFI_COMPOUND_V3_QUERY_VECTORS = CORE_CHAIN_TEST_ENTRIES.flatMap(([chain, config]) => (config.compoundV3Query ? [{ chain, ...config.compoundV3Query }] : []));\nexport const DEFI_LIDO_QUERY_VECTORS = CORE_CHAIN_TEST_ENTRIES.flatMap(([chain, config]) => (config.lidoQuery ? [{ chain, ...config.lidoQuery }] : []));\nexport const DEFI_MORPHO_QUERY_VECTORS = CORE_CHAIN_TEST_ENTRIES.flatMap(([chain, config]) => (config.morphoQuery ? [{ chain, ...config.morphoQuery }] : []));\nexport const DEFI_CURVE_LLAMA_LEND_QUERY_VECTORS = CORE_CHAIN_TEST_ENTRIES.flatMap(([chain, config]) => (config.curveLlamaLendQuery ? [{ chain, ...config.curveLlamaLendQuery }] : []));\nexport const DEFI_APPROVALS_QUERY_VECTORS = CORE_CHAIN_TEST_ENTRIES.flatMap(([chain, config]) => (config.approvalsQuery ? [{ chain, ...config.approvalsQuery }] : []));\nexport const DEFI_PENDLE_V2_INFO_QUERY_VECTORS = CORE_CHAIN_TEST_ENTRIES.flatMap(([chain, config]) => (config.pendleV2InfoQuery ? [{ chain, ...config.pendleV2InfoQuery }] : []));\nexport const DEFI_CURVE_POOLS_QUERY_VECTORS = CORE_CHAIN_TEST_ENTRIES.flatMap(([chain, config]) => (config.curvePoolsQuery ? [{ chain, ...config.curvePoolsQuery }] : []));\nexport const DEFI_CURVE_LLAMA_LEND_MARKETS_QUERY_VECTORS = CORE_CHAIN_TEST_ENTRIES.flatMap(([chain, config]) => (config.curveLlamaLendMarketsQuery ? [{ chain, ...config.curveLlamaLendMarketsQuery }] : []));\nexport const DEFI_UNISWAP_V2_QUOTE_QUERY_VECTORS = CORE_CHAIN_TEST_ENTRIES.flatMap(([chain, config]) => (config.uniswapV2QuoteQuery ? [{ chain, ...config.uniswapV2QuoteQuery }] : []));\nexport const DEFI_UNISWAP_V3_QUOTE_QUERY_VECTORS = CORE_CHAIN_TEST_ENTRIES.flatMap(([chain, config]) => (config.uniswapV3QuoteQuery ? [{ chain, ...config.uniswapV3QuoteQuery }] : []));\nexport const DEFI_UNISWAP_V4_QUOTE_QUERY_VECTORS = CORE_CHAIN_TEST_ENTRIES.flatMap(([chain, config]) => (config.uniswapV4QuoteQuery ? [{ chain, ...config.uniswapV4QuoteQuery }] : []));\nexport const DEFI_AVANTIS_PRICE_QUERY_VECTORS = CORE_CHAIN_TEST_ENTRIES.flatMap(([chain, config]) => (config.avantisPriceQuery ? [{ chain, ...config.avantisPriceQuery }] : []));\nexport const DEFI_APPROVALS_REVOKE_QUERY_VECTORS = CORE_CHAIN_TEST_ENTRIES.flatMap(([chain, config]) => (config.approvalsRevokeQuery ? [{ chain, ...config.approvalsRevokeQuery }] : []));\n","export const COSMOS_CHAIN_TEST_VECTORS = [\n    { chain: \"cosmoshub\", denom: \"uatom\" },\n    { chain: \"osmosis\", denom: \"uosmo\" },\n    { chain: \"axelar\", denom: \"uaxl\" },\n    { chain: \"noble\", denom: \"uusdc\" },\n    { chain: \"agoric\", denom: \"ubld\" },\n];\nexport const COSMOS_ACCOUNT_TEST_VECTORS = [\n    {\n        chain: \"cosmoshub\",\n        address: \"cosmos1qphf0ferqcch0jca9hlqfm3x0eds3dpkac4g9j\",\n        delegator: \"cosmos1qphf0ferqcch0jca9hlqfm3x0eds3dpkac4g9j\",\n        denom: \"uatom\",\n    },\n    {\n        chain: \"osmosis\",\n        address: \"osmo1qyksxgv03ngylanwzh2mx6k768frgjc0rvjycg\",\n        delegator: \"osmo1qyksxgv03ngylanwzh2mx6k768frgjc0rvjycg\",\n        denom: \"uosmo\",\n    },\n    {\n        chain: \"axelar\",\n        address: \"axelar1qquc5dtfsapta73uajnncs3360dk50qx9hldsh\",\n        delegator: \"axelar1qquc5dtfsapta73uajnncs3360dk50qx9hldsh\",\n        denom: \"uaxl\",\n    },\n    {\n        chain: \"noble\",\n        address: \"noble1qe8uuf5x69c526h4nzxwv4ltftr73v7qgk33qz\",\n        delegator: \"noble1qe8uuf5x69c526h4nzxwv4ltftr73v7qgk33qz\",\n        denom: \"uusdc\",\n    },\n    {\n        chain: \"agoric\",\n        address: \"agoric1qyqtn4529298wn62k9kau6qrs5gdpyajxr4zsx\",\n        delegator: \"agoric1qyqtn4529298wn62k9kau6qrs5gdpyajxr4zsx\",\n        denom: \"ubld\",\n    },\n];\nexport const COSMOS_REWARDS_TEST_VECTORS = COSMOS_ACCOUNT_TEST_VECTORS.filter((vector) => vector.chain !== \"noble\");\nexport const COSMOS_BLOCK_HEIGHT_FIXTURE_VECTORS = [\n    { chain: \"cosmoshub\", fixture: \"getBlockHeightCosmoshub\" },\n];\nexport const COSMOS_BLOCK_QUERY_FIXTURE_VECTORS = [\n    { chain: \"cosmoshub\", block: 32_000_000, fixture: \"getBlockByNumberCosmoshub\" },\n];\nexport const COSMOS_TRANSACTION_BY_HASH_FIXTURE_VECTORS = [\n    {\n        chain: \"cosmoshub\",\n        hash: \"58305EE252263E30489F06A87FEEA77B4B5F0E6C86463A765A68199F0A6E3078\",\n        fixture: \"getTransactionByHashCosmoshub\",\n    },\n];\nexport const COSMOS_TOKEN_BALANCE_FIXTURE_VECTORS = [\n    {\n        chain: \"cosmoshub\",\n        address: \"cosmos1qyqszqgpqyqszqgpqyqszqgpqyqszqgpjnp7du\",\n        denom: \"uatom\",\n        fixture: \"getTokenBalanceCosmoshub\",\n    },\n];\nexport const COSMOS_TOKEN_METADATA_FIXTURE_VECTORS = [\n    { chain: \"cosmoshub\", denom: \"uatom\", fixture: \"getTokenMetadataCosmoshub\" },\n    { chain: \"osmosis\", denom: \"uosmo\", fixture: \"getTokenMetadataOsmosis\" },\n    { chain: \"noble\", denom: \"uusdc\", fixture: \"getTokenMetadataNoble\" },\n    { chain: \"agoric\", denom: \"ubld\", fixture: \"getTokenMetadataAgoric\" },\n    { chain: \"axelar\", denom: \"uaxl\", fixture: \"getTokenMetadataAxelar\" },\n];\n// Pinned heights mirror fixtures/cosmos/_capture-lib.sh — keep in sync.\nexport const COSMOS_BLOCK_BY_HASH_FIXTURE_VECTORS = [\n    { chain: \"cosmoshub\", block: 32_000_000, hash: \"0x72BE61E0ECF5AB70EED5ED6924DEEADE5B58BB572C4E4D64C82AB12E270F2358\", fixture: \"getBlockByHashCosmoshub\" },\n    { chain: \"osmosis\", block: 63_850_000, hash: \"0x7EF85B72B2D0AB437881D315C2C07E7520C8D161E8AAEC3B9A48C163E7BC366A\", fixture: \"getBlockByHashOsmosis\" },\n    { chain: \"agoric\", block: 25_860_000, hash: \"0x4FADBF09071EB64965873D25EDE2C76238ADF13AF27DB91385BB55A9FB2B4BFC\", fixture: \"getBlockByHashAgoric\" },\n    { chain: \"noble\", block: 52_610_000, hash: \"0x691F6144E1818A928DFD19BBA0D89C20B55799ABECFDEAC7970ABC7ADD29C179\", fixture: \"getBlockByHashNoble\" },\n    { chain: \"axelar\", block: 29_890_000, hash: \"0xA672528DDEDFB7A487B1F4EC0BC35BAE1017F1E9EE1C0CCFA3C0D1DADE5E01A5\", fixture: \"getBlockByHashAxelar\" },\n];\nexport const COSMOS_BLOCK_RESULTS_FIXTURE_VECTORS = [\n    { chain: \"cosmoshub\", block: 32_000_000, fixture: \"getBlockResultsCosmoshub\" },\n    { chain: \"osmosis\", block: 63_850_000, fixture: \"getBlockResultsOsmosis\" },\n    { chain: \"agoric\", block: 25_860_000, fixture: \"getBlockResultsAgoric\" },\n    { chain: \"noble\", block: 52_610_000, fixture: \"getBlockResultsNoble\" },\n    { chain: \"axelar\", block: 29_890_000, fixture: \"getBlockResultsAxelar\" },\n];\nexport const COSMOS_BLOCK_TRANSACTIONS_FIXTURE_VECTORS = [\n    { chain: \"cosmoshub\", block: 32_000_000, fixture: \"getBlockTransactionsCosmoshub\" },\n    { chain: \"osmosis\", block: 63_850_000, fixture: \"getBlockTransactionsOsmosis\" },\n    { chain: \"agoric\", block: 25_860_000, fixture: \"getBlockTransactionsAgoric\" },\n    { chain: \"noble\", block: 52_610_000, fixture: \"getBlockTransactionsNoble\" },\n    { chain: \"axelar\", block: 29_890_000, fixture: \"getBlockTransactionsAxelar\" },\n];\n","/** Base error class for all Spectrum SDK errors */\nexport class SpectrumError extends Error {\n  public readonly status?: number;\n  public readonly path?: string;\n\n  constructor(message: string, status?: number, path?: string) {\n    super(message);\n    Object.setPrototypeOf(this, new.target.prototype);\n    this.name = 'SpectrumError';\n    this.status = status;\n    this.path = path;\n  }\n}\n\n/** API returned an error response */\nexport class ApiError extends SpectrumError {\n  public readonly body?: unknown;\n\n  constructor(message: string, status: number, path: string, body?: unknown) {\n    super(message, status, path);\n    Object.setPrototypeOf(this, new.target.prototype);\n    this.name = 'ApiError';\n    this.body = body;\n  }\n}\n\n/** Request was rate limited (HTTP 429) */\nexport class RateLimitError extends SpectrumError {\n  public readonly retryAfter?: number;\n\n  constructor(path: string, retryAfter?: number) {\n    super(`Rate limited on ${path}. Retry after ${retryAfter ?? 'unknown'}ms`, 429, path);\n    Object.setPrototypeOf(this, new.target.prototype);\n    this.name = 'RateLimitError';\n    this.retryAfter = retryAfter;\n  }\n}\n\n/** Chain slug not recognized */\nexport class ChainNotFoundError extends SpectrumError {\n  public readonly chain: string;\n\n  constructor(chain: string) {\n    super(`Unknown chain: ${chain}`);\n    Object.setPrototypeOf(this, new.target.prototype);\n    this.name = 'ChainNotFoundError';\n    this.chain = chain;\n  }\n}\n\n/** Request timed out */\nexport class TimeoutError extends SpectrumError {\n  public readonly timeout: number;\n\n  constructor(path: string, timeout: number) {\n    super(`Request to ${path} timed out after ${timeout}ms`, undefined, path);\n    Object.setPrototypeOf(this, new.target.prototype);\n    this.name = 'TimeoutError';\n    this.timeout = timeout;\n  }\n}\n\n/** Network/connection error */\nexport class NetworkError extends SpectrumError {\n  constructor(path: string, cause?: Error) {\n    super(`Network error on ${path}: ${cause?.message ?? 'unknown'}`, undefined, path);\n    Object.setPrototypeOf(this, new.target.prototype);\n    this.name = 'NetworkError';\n    // Use standard Error.cause (ES2022) instead of shadowing with a narrower type\n    if (cause) {\n      this.cause = cause;\n    }\n  }\n}\n\n/** Invalid parameter passed to the SDK */\nexport class ValidationError extends SpectrumError {\n  public readonly field: string;\n\n  constructor(field: string, message: string) {\n    super(`Invalid parameter '${field}': ${message}`);\n    Object.setPrototypeOf(this, new.target.prototype);\n    this.name = 'ValidationError';\n    this.field = field;\n  }\n}\n","interface CacheEntry<T> {\n  value: T;\n  expiresAt: number;\n}\n\n/** Simple in-memory TTL cache with LRU eviction */\nexport class Cache {\n  private store = new Map<string, CacheEntry<unknown>>();\n  private readonly maxEntries: number;\n\n  constructor(maxEntries = 1024) {\n    this.maxEntries = maxEntries;\n  }\n\n  get<T>(key: string): T | undefined {\n    const entry = this.store.get(key);\n    if (!entry) {\n      return undefined;\n    }\n    if (Date.now() > entry.expiresAt) {\n      this.store.delete(key);\n      return undefined;\n    }\n    // Move to end (most recently used) — Map iteration order is insertion order\n    this.store.delete(key);\n    this.store.set(key, entry);\n    return entry.value as T;\n  }\n\n  set<T>(key: string, value: T, ttlMs: number): void {\n    // If key exists, delete first so it moves to end\n    if (this.store.has(key)) {\n      this.store.delete(key);\n    }\n    // Evict entries if at capacity — prefer removing expired entries first\n    if (this.store.size >= this.maxEntries) {\n      const now = Date.now();\n      for (const [k, e] of this.store) {\n        if (now > e.expiresAt) {\n          this.store.delete(k);\n        }\n        if (this.store.size < this.maxEntries) {\n          break;\n        }\n      }\n      // Fall back to LRU eviction if still at capacity\n      while (this.store.size >= this.maxEntries) {\n        const oldest = this.store.keys().next().value;\n        if (oldest !== undefined) {\n          this.store.delete(oldest);\n        } else {\n          break;\n        }\n      }\n    }\n    this.store.set(key, { value, expiresAt: Date.now() + ttlMs });\n  }\n\n  has(key: string): boolean {\n    const entry = this.store.get(key);\n    if (!entry) {\n      return false;\n    }\n    if (Date.now() > entry.expiresAt) {\n      this.store.delete(key);\n      return false;\n    }\n    return true;\n  }\n\n  delete(key: string): void {\n    this.store.delete(key);\n  }\n\n  clear(): void {\n    this.store.clear();\n  }\n\n  get size(): number {\n    return this.store.size;\n  }\n}\n","import type { HistoricalQueryOptions, RequestOptions } from '../types/client.js';\n\nexport function getRetryDelay(attempt: number): number {\n  const baseDelay = 200 * Math.pow(2, attempt);\n  const jitter = baseDelay * 0.25 * (Math.random() * 2 - 1);\n  return Math.round(baseDelay + jitter);\n}\n\nexport function sleep(ms: number): Promise<void> {\n  return new Promise((resolve) => setTimeout(resolve, ms));\n}\n\nfunction isRequestOptions(\n  value: HistoricalQueryOptions | RequestOptions | undefined,\n): value is RequestOptions {\n  return Boolean(\n    value &&\n    typeof value === 'object' &&\n    ('cacheTtl' in value || 'noRetry' in value || 'signal' in value),\n  );\n}\n\nexport function splitHistoricalArgs<T extends HistoricalQueryOptions>(\n  paramsOrOptions?: T | RequestOptions,\n  options?: RequestOptions,\n): { params: T | undefined; options: RequestOptions | undefined } {\n  if (options) {\n    return {\n      params: paramsOrOptions as T | undefined,\n      options,\n    };\n  }\n\n  if (!paramsOrOptions) {\n    return { params: undefined, options: undefined };\n  }\n\n  if (isRequestOptions(paramsOrOptions)) {\n    return { params: undefined, options: paramsOrOptions };\n  }\n\n  return {\n    params: paramsOrOptions,\n    options: undefined,\n  };\n}\n","import { RateLimitError, TimeoutError, NetworkError } from '../types/errors.js';\nimport { getRetryDelay, sleep } from './utils.js';\n\n/** Determines if an error is retryable */\nfunction isRetryable(error: unknown): boolean {\n  if (error instanceof RateLimitError) {\n    return true;\n  }\n  if (error instanceof TimeoutError) {\n    return true;\n  }\n  if (error instanceof NetworkError) {\n    return true;\n  }\n  // Retry on 408 Request Timeout and 5xx server errors\n  if (error instanceof Error && 'status' in error) {\n    const status = (error as { status: number }).status;\n    return status === 408 || (status >= 500 && status < 600);\n  }\n  return false;\n}\n\n/** Execute a function with exponential backoff retry */\nexport async function withRetry<T>(fn: () => Promise<T>, maxRetries: number): Promise<T> {\n  for (let attempt = 0; attempt <= maxRetries; attempt++) {\n    try {\n      return await fn();\n    } catch (error) {\n      if (attempt >= maxRetries || !isRetryable(error)) {\n        throw error;\n      }\n\n      const delay = getRetryDelay(attempt);\n\n      // Respect Retry-After header if available\n      if (error instanceof RateLimitError && error.retryAfter !== undefined) {\n        await sleep(error.retryAfter);\n      } else {\n        await sleep(delay);\n      }\n    }\n  }\n\n  // Unreachable — the loop always returns or throws\n  throw new Error('withRetry: unexpected exit');\n}\n","/* eslint-disable no-console */\nexport type LogLevel = 'debug' | 'info' | 'warn' | 'error' | 'silent';\n\nconst LEVELS: Record<LogLevel, number> = {\n  debug: 0,\n  info: 1,\n  warn: 2,\n  error: 3,\n  silent: 4,\n};\n\nexport class Logger {\n  private level: number;\n\n  constructor(level: LogLevel = 'warn') {\n    this.level = LEVELS[level];\n  }\n\n  setLevel(level: LogLevel): void {\n    this.level = LEVELS[level];\n  }\n\n  debug(message: string, ...args: unknown[]): void {\n    if (this.level <= LEVELS.debug) {\n      console.debug(`[Spectrum SDK] ${message}`, ...args);\n    }\n  }\n\n  info(message: string, ...args: unknown[]): void {\n    if (this.level <= LEVELS.info) {\n      console.info(`[Spectrum SDK] ${message}`, ...args);\n    }\n  }\n\n  warn(message: string, ...args: unknown[]): void {\n    if (this.level <= LEVELS.warn) {\n      console.warn(`[Spectrum SDK] ${message}`, ...args);\n    }\n  }\n\n  error(message: string, ...args: unknown[]): void {\n    if (this.level <= LEVELS.error) {\n      console.error(`[Spectrum SDK] ${message}`, ...args);\n    }\n  }\n}\n","{\n  \"name\": \"@spectrumnodes/sdk\",\n  \"version\": \"2.0.0\",\n  \"description\": \"Official TypeScript SDK for the Spectrum Nodes API — blocks, gas, balances, tokens, DeFi yields, and JSON-RPC across 18+ chains.\",\n  \"type\": \"module\",\n  \"main\": \"./dist/index.cjs\",\n  \"module\": \"./dist/index.js\",\n  \"types\": \"./dist/index.d.ts\",\n  \"exports\": {\n    \".\": {\n      \"import\": {\n        \"types\": \"./dist/index.d.ts\",\n        \"default\": \"./dist/index.js\"\n      },\n      \"require\": {\n        \"types\": \"./dist/index.d.cts\",\n        \"default\": \"./dist/index.cjs\"\n      }\n    }\n  },\n  \"files\": [\n    \"dist\",\n    \"examples\",\n    \"docs\",\n    \"README.md\",\n    \"LICENSE\"\n  ],\n  \"scripts\": {\n    \"build\": \"tsup\",\n    \"dev\": \"tsup --watch\",\n    \"prepare\": \"husky\",\n    \"test\": \"vitest run\",\n    \"test:coverage\": \"vitest run --coverage\",\n    \"test:integration\": \"tsx integration-tests/run.ts\",\n    \"test:mutation\": \"stryker run\",\n    \"test:mutation:dry\": \"stryker run --dryRunOnly\",\n    \"test:watch\": \"vitest\",\n    \"typecheck\": \"tsc --noEmit\",\n    \"lint\": \"./node_modules/eslint/bin/eslint.js .\",\n    \"dupcheck\": \"jscpd --config .jscpd.json\",\n    \"clean\": \"rm -rf dist\",\n    \"prepublishOnly\": \"npm run build\"\n  },\n  \"keywords\": [\n    \"spectrum\",\n    \"blockchain\",\n    \"api\",\n    \"sdk\",\n    \"ethereum\",\n    \"solana\",\n    \"bitcoin\",\n    \"cosmos\",\n    \"defi\",\n    \"web3\",\n    \"rpc\",\n    \"multi-chain\",\n    \"typescript\"\n  ],\n  \"author\": \"Spectrum Nodes\",\n  \"license\": \"MIT\",\n  \"devDependencies\": {\n    \"@eslint/js\": \"9.39.4\",\n    \"@spectrum-nodes/api-spec\": \"file:../spectrum-api-spec\",\n    \"@stryker-mutator/core\": \"9.6.1\",\n    \"@stryker-mutator/typescript-checker\": \"9.6.1\",\n    \"@stryker-mutator/vitest-runner\": \"9.6.1\",\n    \"@typescript-eslint/eslint-plugin\": \"8.59.1\",\n    \"@typescript-eslint/parser\": \"8.59.1\",\n    \"@vitest/coverage-v8\": \"^4.1.9\",\n    \"eslint\": \"9.39.4\",\n    \"globals\": \"16.5.0\",\n    \"husky\": \"9.1.7\",\n    \"jscpd\": \"4.0.9\",\n    \"tsup\": \"8.5.1\",\n    \"tsx\": \"4.21.0\",\n    \"typescript\": \"5.9.3\",\n    \"typescript-eslint\": \"8.59.1\",\n    \"vite\": \"6.3.5\",\n    \"vitest\": \"^4.1.9\"\n  },\n  \"dependencies\": {\n    \"ethers\": \"^6.17.0\",\n    \"zod\": \"4.3.6\"\n  }\n}\n","import pkg from '../../package.json' with { type: 'json' };\n\n/** SDK version. Sourced from package.json so the User-Agent stays in sync with the published version. */\nexport const SDK_VERSION: string = pkg.version;\n","import type { ResolvedConfig } from './types/config.js';\nimport type { RequestOptions } from './types/client.js';\nimport type { JsonRpcId, JsonRpcRequest } from '@spectrum-nodes/api-spec/models';\nimport type { JsonRpcResponse } from './types/index.js';\nimport {\n  SpectrumError,\n  ApiError,\n  RateLimitError,\n  TimeoutError,\n  NetworkError,\n  ChainNotFoundError,\n} from './types/errors.js';\nimport { JSON_RPC_VERSION } from '@spectrum-nodes/api-spec/constants';\nimport { Cache } from './internals/cache.js';\nimport { withRetry } from './internals/retry.js';\nimport { Logger } from './internals/logger.js';\nimport { SDK_VERSION } from './internals/version.js';\n\nexport type { RequestOptions } from './types/client.js';\n\n/**\n * Internal HTTP transport for the SDK. Owns the only path that talks to the\n * network. Every namespace ultimately routes through one of `jsonRpc`,\n * `rpcProxy`, or `rpcProxyBatch` here.\n *\n * Not exposed to end users — they use the `Spectrum` class. Exported for\n * SDK-internal use and for unit tests.\n */\nexport class HttpClient {\n  readonly config: ResolvedConfig;\n  readonly cache: Cache;\n  readonly logger: Logger;\n\n  /**\n   * Build a client from an already-resolved config. Sets up the in-memory\n   * cache and logger; does no network I/O.\n   */\n  constructor(config: ResolvedConfig) {\n    this.config = config;\n    this.cache = new Cache(config.cache.maxEntries);\n    this.logger = new Logger(config.logging.level);\n  }\n\n  /**\n   * Send a raw POST with the given JSON body to the configured `baseUrl`.\n   * Bypasses the cache — used by `Spectrum.jsonRpc(...)` for caller-supplied\n   * raw envelopes.\n   */\n  async post<T>(body: unknown, options?: RequestOptions): Promise<T> {\n    return this.execute<T>(this.endpointUrl(), 'POST', body, options);\n  }\n\n  /**\n   * Send a single JSON-RPC call to `POST /v1`. Reads + writes the cache when\n   * the resolved TTL is positive (see `getJsonRpcCacheTtl`). Throws a typed\n   * `SpectrumError` subclass on failure; on success returns the inner `data`.\n   */\n  async jsonRpc<T>(\n    method: string,\n    params: Record<string, unknown> | unknown[] = {},\n    options?: RequestOptions,\n  ): Promise<T> {\n    const request: JsonRpcRequest = {\n      jsonrpc: JSON_RPC_VERSION,\n      method,\n      params,\n      id: 1,\n    };\n\n    const cacheKey = this.buildJsonRpcCacheKey(method, params);\n    const ttl = options?.cacheTtl ?? this.getJsonRpcCacheTtl(method);\n\n    if (this.config.cache.enabled && ttl > 0) {\n      const cached = this.cache.get<T>(cacheKey);\n      if (cached !== undefined) {\n        this.logger.debug(`Cache hit: ${method}`);\n        return cached;\n      }\n    }\n\n    const envelope = await this.execute<JsonRpcResponse>(\n      this.endpointUrl(),\n      'POST',\n      request,\n      options,\n    );\n    const result = this.unwrapJsonRpcResponse<T>(envelope, method);\n\n    if (this.config.cache.enabled && ttl > 0) {\n      this.cache.set(cacheKey, result, ttl);\n    }\n\n    return result;\n  }\n\n  /**\n   * Wrap a node-level JSON-RPC call (e.g. `eth_call`) inside Spectrum's\n   * `rpcProxy` server method. Forces `cacheTtl: 0` — node RPC results are\n   * never cached because chain head moves.\n   */\n  async rpcProxy(\n    chain: string,\n    request: { method: string; params?: unknown[]; id?: JsonRpcId },\n    options?: RequestOptions,\n  ): Promise<unknown> {\n    return this.jsonRpc(\n      'rpcProxy',\n      {\n        chain,\n        method: request.method,\n        params: request.params ?? [],\n      },\n      { ...options, cacheTtl: 0 },\n    );\n  }\n\n  /**\n   * Send a batch of node-level RPC calls as a single outer JSON-RPC batch\n   * where each entry is an `rpcProxy` envelope. The inner array is returned\n   * with each entry already unwrapped (envelope errors throw `ApiError`).\n   * Cache forced off; ids default to `index + 1` when not supplied.\n   */\n  async rpcProxyBatch(\n    chain: string,\n    requests: Array<{ method: string; params?: unknown[]; id?: JsonRpcId }>,\n    options?: RequestOptions,\n  ): Promise<unknown[]> {\n    const outerBatch: JsonRpcRequest[] = requests.map((request, index) => ({\n      jsonrpc: JSON_RPC_VERSION,\n      method: 'rpcProxy',\n      params: {\n        chain,\n        method: request.method,\n        params: request.params ?? [],\n      },\n      id: request.id ?? index + 1,\n    }));\n\n    const envelopes = await this.execute<JsonRpcResponse[]>(\n      this.endpointUrl(),\n      'POST',\n      outerBatch,\n      {\n        ...options,\n        cacheTtl: 0,\n      },\n    );\n\n    if (!Array.isArray(envelopes)) {\n      throw new ApiError('Expected JSON-RPC batch response', 500, this.endpointUrl());\n    }\n\n    return envelopes.map((envelope) => this.unwrapJsonRpcResponse(envelope, 'rpcProxy'));\n  }\n\n  /** Drop every cached response. Doesn't affect inflight requests. */\n  clearCache(): void {\n    this.cache.clear();\n  }\n\n  /**\n   * Validate a JSON-RPC 2.0 envelope and return its inner result.\n   *\n   * - Missing/non-object payloads → `ApiError` (invalid response)\n   * - Envelope-level `error` field → `ApiError` (server-reported failure)\n   * - Envelope `result` present → unwraps the `data` envelope if shaped that way\n   * - Envelope with neither `result` nor `error` → `ApiError` (malformed)\n   */\n  private unwrapJsonRpcResponse<T>(payload: unknown, method: string): T {\n    const url = this.endpointUrl();\n    if (!payload || typeof payload !== 'object' || !('jsonrpc' in payload)) {\n      throw new ApiError(`Invalid JSON-RPC response for ${method}`, 500, url, payload);\n    }\n\n    const envelope = payload as JsonRpcResponse;\n    if ('error' in envelope && envelope.error) {\n      throw new ApiError(envelope.error.message, 500, url, envelope.error);\n    }\n\n    if ('result' in envelope) {\n      return this.extractDataEnvelope(envelope.result) as T;\n    }\n\n    throw new ApiError(`Invalid JSON-RPC response for ${method}`, 500, url, payload);\n  }\n\n  /**\n   * Strip Spectrum's `{ data: ... }` wrapper if present. Some responses embed\n   * the payload one level deep; others (raw RPC pass-through) don't.\n   */\n  private extractDataEnvelope(result: unknown): unknown {\n    if (result && typeof result === 'object' && 'data' in result) {\n      return (result as { data: unknown }).data;\n    }\n    return result;\n  }\n\n  /**\n   * Compose a deterministic cache key from a JSON-RPC `method` + `params`.\n   * Uses `stableStringify` so logically-equivalent params (e.g. `{a:1,b:2}`\n   * vs `{b:2,a:1}`) produce the same key.\n   */\n  private buildJsonRpcCacheKey(\n    method: string,\n    params: Record<string, unknown> | unknown[],\n  ): string {\n    return `${method}:${this.stableStringify(params)}`;\n  }\n\n  /**\n   * Stable JSON serializer for cache keys: sorts object keys alphabetically\n   * and drops properties whose value is `undefined`. Arrays preserve order\n   * (it matters for ABI args, RPC params, etc.). Not RFC-compliant — output\n   * is meant for cache key equality only.\n   */\n  private stableStringify(value: unknown): string {\n    if (Array.isArray(value)) {\n      return `[${value.map((item) => this.stableStringify(item)).join(',')}]`;\n    }\n    if (value && typeof value === 'object') {\n      const entries = Object.entries(value as Record<string, unknown>)\n        .filter(([, entryValue]) => entryValue !== undefined)\n        .sort(([left], [right]) => left.localeCompare(right));\n      return `{${entries.map(([key, entryValue]) => `${JSON.stringify(key)}:${this.stableStringify(entryValue)}`).join(',')}}`;\n    }\n    return JSON.stringify(value);\n  }\n\n  /**\n   * Core request orchestrator. Wraps `fetch` with:\n   *   1. retry (`withRetry`) — driven by `isRetryable` (5xx, 408, NetworkError, etc.)\n   *   2. lifecycle hooks — `onRequest` per attempt, `onResponse` on success,\n   *      `onError` once at the end for non-abort SDK failures\n   *   3. error mapping — non-2xx → `handleErrorResponse`; thrown DOMExceptions\n   *      become `TimeoutError`; other thrown errors become `NetworkError`;\n   *      caller-aborted requests rethrow the raw `DOMException` and skip the\n   *      `onError` hook\n   */\n  private async execute<T>(\n    url: string,\n    method: 'POST',\n    body?: unknown,\n    options?: RequestOptions,\n  ): Promise<T> {\n    const maxRetries = options?.noRetry ? 0 : this.config.retries;\n\n    try {\n      return await withRetry(async () => {\n        const attemptStart = Date.now();\n        this.config.hooks.onRequest?.({ method, path: url });\n\n        try {\n          const response = await this.fetch(url, method, body, options?.signal);\n          const duration = Date.now() - attemptStart;\n          this.config.hooks.onResponse?.({ status: response.status, duration, path: url });\n\n          if (!response.ok) {\n            await this.handleErrorResponse(response, url);\n            /* c8 ignore next -- handleErrorResponse always throws; unreachable */\n          }\n\n          const json = (await response.json()) as { data?: T };\n          return (json.data !== undefined ? json.data : json) as T;\n        } catch (error) {\n          if (error instanceof SpectrumError) {\n            throw error;\n          }\n\n          if (\n            error instanceof DOMException &&\n            (error.name === 'AbortError' || error.name === 'TimeoutError')\n          ) {\n            if (options?.signal?.aborted) {\n              throw error;\n            }\n            throw new TimeoutError(url, this.config.timeout);\n          }\n\n          throw new NetworkError(\n            url,\n            /* v8 ignore next -- fetch rejections are Error instances in practice */\n            error instanceof Error ? error : undefined,\n          );\n        }\n      }, maxRetries);\n    } catch (error) {\n      // onError fires for every typed SDK failure except caller-initiated aborts.\n      const isCallerAbort =\n        error instanceof DOMException &&\n        error.name === 'AbortError' &&\n        options?.signal?.aborted === true;\n\n      if (!isCallerAbort && error instanceof SpectrumError) {\n        this.config.hooks.onError?.({ message: error.message, status: error.status, path: url });\n      }\n      throw error;\n    }\n  }\n\n  /**\n   * Wrap `globalThis.fetch` with a config-driven timeout and combined abort\n   * signal. The caller's `signal` (if any) is merged with our internal\n   * timeout signal so either can cancel the request. Cleans up event\n   * listeners + the timeout in `finally`.\n   */\n  private async fetch(\n    url: string,\n    method: 'POST',\n    body?: unknown,\n    signal?: AbortSignal,\n  ): Promise<Response> {\n    const controller = new AbortController();\n    const timeout = setTimeout(() => controller.abort(), this.config.timeout);\n\n    let signalCleanup: (() => void) | undefined;\n    let combinedSignal: AbortSignal;\n    if (signal && typeof AbortSignal.any === 'function') {\n      combinedSignal = AbortSignal.any([signal, controller.signal]);\n    } else if (signal) {\n      const [linked, cleanup] = this.linkSignals(signal, controller);\n      combinedSignal = linked;\n      signalCleanup = cleanup;\n    } else {\n      combinedSignal = controller.signal;\n    }\n\n    const headers: Record<string, string> = {\n      Accept: 'application/json',\n      'Content-Type': 'application/json',\n      'User-Agent': `@spectrumnodes/sdk/${SDK_VERSION}`,\n    };\n\n    try {\n      return await globalThis.fetch(url, {\n        method,\n        headers,\n        body: JSON.stringify(body),\n        signal: combinedSignal,\n      });\n    } finally {\n      clearTimeout(timeout);\n      /* v8 ignore next -- cleanup only set when AbortSignal.any is polyfilled */\n      signalCleanup?.();\n    }\n  }\n\n  /**\n   * Polyfill for `AbortSignal.any` on runtimes that don't have it yet.\n   * Forwards aborts from `external` to our internal `controller`, returning\n   * the controller's signal plus a cleanup function the caller MUST run to\n   * remove the listener (avoids leaks on long-lived external signals).\n   */\n  private linkSignals(\n    external: AbortSignal,\n    controller: AbortController,\n  ): [AbortSignal, () => void] {\n    if (external.aborted) {\n      controller.abort(external.reason);\n      return [controller.signal, () => {}];\n    }\n    const onAbort = () => controller.abort(external.reason);\n    external.addEventListener('abort', onAbort, { once: true });\n    return [controller.signal, () => external.removeEventListener('abort', onAbort)];\n  }\n\n  /**\n   * Map a non-2xx HTTP response to the SDK's typed error hierarchy.\n   *\n   *   429              → `RateLimitError` (parses `Retry-After` if present)\n   *   404 + chain msg  → `ChainNotFoundError` (case-insensitive,\n   *                      tolerates trailing punctuation in the server text)\n   *   anything else    → `ApiError` with original status + body\n   *\n   * Always throws — return type is `Promise<never>`.\n   */\n  private async handleErrorResponse(response: Response, path: string): Promise<never> {\n    const text = await response.text().catch(() => '');\n    let body: unknown = text;\n    try {\n      body = JSON.parse(text);\n    } catch {\n      // keep text body\n    }\n\n    const message =\n      body && typeof body === 'object' && 'error' in body\n        ? String((body as { error: string }).error)\n        : `HTTP ${response.status}`;\n\n    if (response.status === 429) {\n      const retryAfter = response.headers.get('retry-after');\n      const retryAfterMs = retryAfter !== null ? Number(retryAfter) * 1000 : undefined;\n      throw new RateLimitError(path, Number.isFinite(retryAfterMs) ? retryAfterMs : undefined);\n    }\n\n    // Tolerate case + trailing punctuation drift in the server's wording\n    const chainMatch =\n      response.status === 404 ? message.match(/^unknown chain:?\\s*(.+?)[.\\s]*$/i) : null;\n    if (chainMatch) {\n      throw new ChainNotFoundError(chainMatch[1].trim());\n    }\n\n    throw new ApiError(message, response.status, path, body);\n  }\n\n  /** Return the configured `baseUrl` with any trailing slash stripped.\n   * Also used as the `path` label populated on errors and hook payloads.\n   */\n  endpointUrl(): string {\n    return this.config.baseUrl.replace(/\\/$/, '');\n  }\n\n  /**\n   * Resolve the cache TTL (ms) for a given JSON-RPC method. Order:\n   *   1. user-supplied `cache.overrides` — first substring match wins\n   *   2. uncacheable: `rpcProxy`, `getHealth`, `getChainHealth`, `compareGas`,\n   *      `estimateGas`, `getBlock*` → 0\n   *   3. `getYields*`, `getNft*`, `getCurve*`, `getMorpho*`, `getPendleV2Info`,\n   *      `getDefiSummary` → 60 s (slow-moving on-chain data)\n   *   4. `getTokenMetadata`, `getRegistry*`, `getProtocols`, `getProtocol`\n   *      → 5 min (effectively static)\n   *   5. fallback: `config.cache.ttl` (default 5 s)\n   */\n  private getJsonRpcCacheTtl(method: string): number {\n    for (const [pattern, ttl] of Object.entries(this.config.cache.overrides)) {\n      if (method.includes(pattern)) {\n        return ttl;\n      }\n    }\n\n    if (\n      method === 'rpcProxy' ||\n      method === 'getHealth' ||\n      method === 'getChainHealth' ||\n      method === 'compareGas' ||\n      method === 'estimateGas' ||\n      method.startsWith('getBlock')\n    ) {\n      return 0;\n    }\n\n    if (method.startsWith('getYields')) {\n      return 60_000;\n    }\n    if (method === 'getTokenMetadata') {\n      return 300_000;\n    }\n    if (method.startsWith('getNft')) {\n      return 60_000;\n    }\n    if (method.startsWith('getRegistry') || method === 'getProtocols' || method === 'getProtocol') {\n      return 300_000;\n    }\n    if (\n      method.startsWith('getCurve') ||\n      method.startsWith('getMorpho') ||\n      method === 'getPendleV2Info' ||\n      method === 'getDefiSummary'\n    ) {\n      return 60_000;\n    }\n\n    return this.config.cache.ttl;\n  }\n}\n","import { z } from 'zod';\nimport { COSMOS_CHAIN_SLUGS, EVM_CHAIN_SLUGS, NON_COSMOS_CHAIN_SLUGS, SOLANA_CHAIN_SLUGS, STARKNET_CHAIN_SLUGS, SUPPORTED_CHAIN_SLUGS, SUPPORTED_CHAIN_TYPES, } from '../constants/chains.js';\n/** Use when a field should say which chain family it belongs to. */\nexport const supportedChainTypeSchema = z.enum(SUPPORTED_CHAIN_TYPES);\n/** Use when a field should accept a public chain slug like ethereum or solana. */\nexport const supportedChainSlugSchema = z.enum(SUPPORTED_CHAIN_SLUGS);\n/** Use when a field should only allow EVM chains. */\nexport const evmChainSlugSchema = z.enum(EVM_CHAIN_SLUGS);\n/** Use when a field should only allow Cosmos SDK chains. */\nexport const cosmosChainSlugSchema = z.enum(COSMOS_CHAIN_SLUGS);\n/** Use when a field should only allow Starknet chains. */\nexport const starknetChainSlugSchema = z.enum(STARKNET_CHAIN_SLUGS);\n/** Use when a field should only allow Solana chains. */\nexport const solanaChainSlugSchema = z.enum(SOLANA_CHAIN_SLUGS);\n/** Use when an existing generic endpoint should not accept Cosmos chains. */\nexport const nonCosmosChainSlugSchema = z.enum(NON_COSMOS_CHAIN_SLUGS);\n/** Use for API timestamps in ISO format. */\nexport const isoTimestampSchema = z.iso.datetime();\n/** Use when a field accepts a hex chain id like 0x1. */\nexport const hexQuantitySchema = z.string().regex(/^0x[0-9a-fA-F]+$/, 'Expected 0x-prefixed hexadecimal value');\n/** Use for EVM account, token, or contract addresses. */\nexport const addressSchema = z.string().regex(/^0x[0-9a-fA-F]{40}$/, 'Expected 0x-prefixed EVM address');\n/** Use when a wallet field may be EVM, Solana, Bitcoin, Starknet, or Cosmos style. */\nexport const genericAddressSchema = z.string().regex(/^(0x[0-9a-fA-F]{1,64}|[1-9A-HJ-NP-Za-km-z]{26,62}|[a-z][a-z0-9]{1,15}(valoper|valcons)?1[02-9ac-hj-np-z]{6,90})$/, 'Expected a supported wallet address format');\n/** Use for EVM, Starknet, and Cosmos transaction hashes. */\nexport const txHashSchema = z.string().regex(/^(0x[0-9a-fA-F]{1,64}|[0-9A-Fa-f]{64})$/, 'Expected 0x-prefixed transaction hash');\n/** Use for calldata, bytecode, or other hex payloads. */\nexport const hexDataSchema = z.string().regex(/^0x[0-9a-fA-F]*$/, 'Expected 0x-prefixed hexadecimal data');\n/** Use for EVM event topics. */\nexport const evmTopicSchema = z.string().regex(/^0x[0-9a-fA-F]{64}$/, 'Expected 0x-prefixed 32-byte topic');\n/** Use when pricing can be returned in different quote currencies. */\nexport const currencyCodeSchema = z.string().regex(/^[A-Za-z]{3,5}$/, 'Expected 3-5 letter currency code');\n/** Use when a token is identified by symbol instead of address. */\nexport const symbolSchema = z.string().min(1, 'Expected non-empty token symbol');\n/** Use when a field may accept an ENS name. */\nexport const ensNameSchema = z.string().refine((value) => value.includes('.'), {\n    message: 'Expected ENS name like \"vitalik.eth\"',\n});\n/** Use for RPC-style block selectors like latest, 123, or 0x7b. */\nexport const blockTagSchema = z.union([\n    z.literal('latest'),\n    z.literal('earliest'),\n    z.literal('pending'),\n    z.number().int().nonnegative(),\n    z.string().regex(/^\\d+$/, 'Expected a decimal block number'),\n    hexQuantitySchema,\n]);\n/** Use when a field can accept either a chain slug or a hex chain id. */\nexport const chainReferenceSchema = z.union([\n    supportedChainSlugSchema,\n    hexQuantitySchema,\n]);\n/** Use for ids, symbols, and other required strings shared across domains. */\nexport const nonEmptyStringSchema = z.string().min(1);\n/** Use when an input may be passed as a number or numeric string shared across domains. */\nexport const numericLikeSchema = z.union([\n    z.number(),\n    z.string().regex(/^\\d+(\\.\\d+)?$/, 'Expected a numeric value'),\n]);\n","import { z } from 'zod';\nimport { hexQuantitySchema } from './common.js';\n/** Starknet `block_id` accepted by every read RPC. */\nexport const starknetBlockIdSchema = z.union([\n    z.literal('latest'),\n    z.literal('pending'),\n    z.object({ block_number: z.number().int().nonnegative() }).strict(),\n    z.object({ block_hash: hexQuantitySchema }).strict(),\n]);\n","import { z } from 'zod';\nimport { cosmosChainSlugSchema, genericAddressSchema, } from './common.js';\nconst jsonScalarSchema = z.union([z.string(), z.number(), z.boolean(), z.null()]);\nconst jsonValueSchema = z.lazy(() => z.union([jsonScalarSchema, z.array(jsonValueSchema), z.record(z.string(), jsonValueSchema)]));\nexport const denomSchema = z.string().min(1);\nexport const cosmosHashSchema = z.string().regex(/^(0x)?[0-9a-fA-F]{64}$/, 'Expected 32-byte hexadecimal hash');\nexport const cosmosCoinAmountSchema = z.object({\n    denom: z.string().min(1),\n    amount: z.string().regex(/^\\d+(\\.\\d+)?$/),\n}).strict();\nconst paginationSchema = z.object({\n    next_key: z.union([z.string(), z.null()]).optional(),\n    total: z.string().optional(),\n}).catchall(jsonValueSchema);\nconst cosmosPubKeySchema = z.object({\n    '@type': z.string().min(1),\n    key: z.string().min(1),\n}).catchall(jsonValueSchema);\nconst cosmosAccountSchema = z.object({\n    '@type': z.string().min(1),\n    // Direct fields (for BaseAccount types)\n    address: genericAddressSchema.optional(),\n    pub_key: z.union([cosmosPubKeySchema, z.null()]).optional(),\n    account_number: z.string().regex(/^\\d+$/).optional(),\n    sequence: z.string().regex(/^\\d+$/).optional(),\n    // Nested structure for vesting accounts (base_vesting_account.base_account)\n    // and module accounts (base_account) is captured by catchall\n}).catchall(jsonValueSchema);\nconst cosmosDelegationSchema = z.object({\n    delegator_address: genericAddressSchema,\n    validator_address: genericAddressSchema,\n    shares: z.string().regex(/^\\d+(\\.\\d+)?$/),\n}).catchall(jsonValueSchema);\nconst cosmosDelegationResponseSchema = z.object({\n    delegation: cosmosDelegationSchema,\n    balance: cosmosCoinAmountSchema,\n}).catchall(jsonValueSchema);\nconst cosmosUnbondingEntrySchema = z.object({\n    creation_height: z.string().regex(/^\\d+$/).optional(),\n    completion_time: z.string().min(1).optional(),\n    initial_balance: z.string().regex(/^\\d+$/).optional(),\n    balance: z.string().regex(/^\\d+$/).optional(),\n    unbonding_id: z.string().regex(/^\\d+$/).optional(),\n}).catchall(jsonValueSchema);\nconst cosmosUnbondingDelegationSchema = z.object({\n    delegator_address: genericAddressSchema,\n    validator_address: genericAddressSchema,\n    entries: z.array(cosmosUnbondingEntrySchema),\n}).catchall(jsonValueSchema);\nconst cosmosStakingRewardSchema = z.object({\n    validator_address: genericAddressSchema,\n    reward: z.array(cosmosCoinAmountSchema),\n}).catchall(jsonValueSchema);\nconst cosmosValidatorDescriptionSchema = z.object({\n    moniker: z.string(),\n    identity: z.string(),\n    website: z.string(),\n    security_contact: z.string(),\n    details: z.string(),\n}).catchall(jsonValueSchema);\nconst cosmosValidatorCommissionSchema = z.object({\n    commission_rates: z.object({\n        rate: z.string().regex(/^\\d+(\\.\\d+)?$/),\n        max_rate: z.string().regex(/^\\d+(\\.\\d+)?$/),\n        max_change_rate: z.string().regex(/^\\d+(\\.\\d+)?$/),\n    }).catchall(jsonValueSchema),\n    update_time: z.string().min(1),\n}).catchall(jsonValueSchema);\nconst cosmosValidatorSchema = z.object({\n    operator_address: genericAddressSchema,\n    consensus_pubkey: cosmosPubKeySchema,\n    jailed: z.boolean(),\n    status: z.string().min(1),\n    tokens: z.string().regex(/^\\d+$/),\n    delegator_shares: z.string().regex(/^\\d+(\\.\\d+)?$/),\n    description: cosmosValidatorDescriptionSchema,\n    unbonding_height: z.string().regex(/^\\d+$/),\n    unbonding_time: z.string().min(1),\n    commission: cosmosValidatorCommissionSchema,\n    min_self_delegation: z.string().regex(/^\\d+$/),\n    unbonding_on_hold_ref_count: z.string().regex(/^\\d+$/).optional(),\n    unbonding_ids: z.array(z.string().regex(/^\\d+$/)).optional(),\n}).catchall(jsonValueSchema);\nconst cosmosTxResponseSchema = z.object({\n    height: z.string().regex(/^\\d+$/),\n    txhash: cosmosHashSchema,\n    code: z.number().int().nonnegative(),\n    raw_log: z.string(),\n    gas_wanted: z.string().regex(/^\\d+$/),\n    gas_used: z.string().regex(/^\\d+$/),\n    logs: z.array(jsonValueSchema),\n    events: z.array(z.object({\n        type: z.string().min(1),\n        attributes: z.array(z.object({\n            key: z.string(),\n            value: z.string(),\n            index: z.boolean().optional(),\n        }).catchall(jsonValueSchema)),\n    }).catchall(jsonValueSchema)),\n    timestamp: z.string(),\n}).catchall(jsonValueSchema);\nexport const getDenomSupplyParamsSchema = z.object({\n    chain: cosmosChainSlugSchema,\n    denom: denomSchema,\n}).strict();\nexport const getAccountParamsSchema = z.object({\n    chain: cosmosChainSlugSchema,\n    address: genericAddressSchema,\n}).strict();\nexport const getDelegationsParamsSchema = z.object({\n    chain: cosmosChainSlugSchema,\n    delegator: genericAddressSchema,\n}).strict();\nexport const getUnbondingDelegationsParamsSchema = getDelegationsParamsSchema;\nexport const getStakingRewardsParamsSchema = getDelegationsParamsSchema;\nexport const getValidatorsParamsSchema = z.object({\n    chain: cosmosChainSlugSchema,\n}).strict();\nexport const getValidatorParamsSchema = z.object({\n    chain: cosmosChainSlugSchema,\n    validatorAddr: genericAddressSchema,\n}).strict();\nexport const getStakingPoolParamsSchema = z.object({\n    chain: cosmosChainSlugSchema,\n}).strict();\nexport const getBlockResultsParamsSchema = z.object({\n    chain: cosmosChainSlugSchema,\n    block: z.number().int().nonnegative(),\n}).strict();\nexport const denomSupplyDataSchema = z.object({\n    chain: cosmosChainSlugSchema,\n    denom: denomSchema,\n    amount: cosmosCoinAmountSchema,\n}).strict();\nexport const cosmosAccountDataSchema = z.object({\n    chain: cosmosChainSlugSchema,\n    address: genericAddressSchema,\n    account: cosmosAccountSchema,\n}).strict();\nexport const cosmosDelegationsDataSchema = z.object({\n    chain: cosmosChainSlugSchema,\n    delegator: genericAddressSchema,\n    delegation_responses: z.array(cosmosDelegationResponseSchema),\n    pagination: paginationSchema.optional(),\n}).strict();\nexport const cosmosUnbondingDelegationsDataSchema = z.object({\n    chain: cosmosChainSlugSchema,\n    delegator: genericAddressSchema,\n    unbonding_responses: z.array(cosmosUnbondingDelegationSchema),\n    pagination: paginationSchema.optional(),\n}).strict();\nexport const cosmosStakingRewardsDataSchema = z.object({\n    chain: cosmosChainSlugSchema,\n    delegator: genericAddressSchema,\n    rewards: z.array(cosmosStakingRewardSchema),\n    total: z.array(cosmosCoinAmountSchema),\n}).strict();\nexport const cosmosValidatorsDataSchema = z.object({\n    chain: cosmosChainSlugSchema,\n    validators: z.array(cosmosValidatorSchema),\n    pagination: paginationSchema.optional(),\n}).strict();\nexport const cosmosValidatorDataSchema = z.object({\n    chain: cosmosChainSlugSchema,\n    validatorAddr: genericAddressSchema,\n    validator: cosmosValidatorSchema,\n}).strict();\nexport const cosmosStakingPoolDataSchema = z.object({\n    chain: cosmosChainSlugSchema,\n    pool: z.object({\n        bonded_tokens: z.string().regex(/^\\d+$/),\n        not_bonded_tokens: z.string().regex(/^\\d+$/),\n    }).strict(),\n}).strict();\nexport const cosmosBlockTransactionsDataSchema = z.object({\n    chain: cosmosChainSlugSchema,\n    blockNumber: z.number().int().nonnegative(),\n    hash: z.string().min(1),\n    timestamp: z.string().min(1),\n    transactionCount: z.number().int().nonnegative(),\n    // Decoded `tx_response` objects (sdk 0.50+ LCD path) or raw base64 strings (older chains fallback).\n    transactions: z.array(z.union([z.string(), jsonValueSchema])),\n}).strict();\nexport const cosmosTransactionDataSchema = z.object({\n    chain: cosmosChainSlugSchema,\n    tx: jsonValueSchema.optional(),\n    tx_response: cosmosTxResponseSchema.optional(),\n}).catchall(jsonValueSchema);\nexport const cosmosTokenBalanceDataSchema = z.object({\n    chain: cosmosChainSlugSchema,\n    address: genericAddressSchema,\n    denom: denomSchema,\n    balance: z.string().regex(/^\\d+$/).optional(),\n    balanceRaw: z.string().regex(/^\\d+$/).optional(),\n}).strict();\n/** Tendermint block_by_hash response wrapped with `chain` and the input hash. */\nexport const cosmosBlockByHashDataSchema = z.object({\n    chain: cosmosChainSlugSchema,\n    hash: z.string().regex(/^0x[0-9A-Fa-f]{64}$/, 'Expected 32-byte 0x-prefixed hex hash'),\n    block: jsonValueSchema,\n    block_id: jsonValueSchema,\n}).strict();\n/** Tendermint block_results response wrapped with `chain` and `block` (input height). */\nexport const cosmosBlockResultsDataSchema = z.object({\n    chain: cosmosChainSlugSchema,\n    block: z.number().int().nonnegative(),\n    results: z.object({\n        height: z.string().regex(/^\\d+$/),\n        txs_results: z.union([z.array(jsonValueSchema), z.null()]),\n        finalize_block_events: z.union([z.array(jsonValueSchema), z.null()]).optional(),\n        validator_updates: z.union([z.array(jsonValueSchema), z.null()]).optional(),\n        consensus_param_updates: jsonValueSchema.optional(),\n        app_hash: z.string().optional(),\n    }).catchall(jsonValueSchema),\n}).strict();\nexport const cosmosTokenMetadataDataSchema = z.object({\n    chain: cosmosChainSlugSchema,\n    denom: denomSchema,\n    metadata: z.object({\n        description: z.string(),\n        denom_units: z.array(z.object({\n            denom: z.string().min(1),\n            exponent: z.number().int().nonnegative(),\n            aliases: z.array(z.string()),\n        }).catchall(jsonValueSchema)),\n        base: z.string().min(1),\n        // Some chains' bank modules store an empty display field (e.g. noble uusdc); accept it.\n        display: z.string(),\n        name: z.string(),\n        symbol: z.string(),\n        uri: z.string().optional(),\n        uri_hash: z.string().optional(),\n    }).catchall(jsonValueSchema),\n}).strict();\n","import { z } from 'zod';\nimport { addressSchema, ensNameSchema } from './common.js';\nexport const resolveEnsParamsSchema = z.object({\n    name: ensNameSchema,\n    blockHeight: z.number().int().nonnegative().optional(),\n}).strict();\nexport const reverseEnsParamsSchema = z.object({\n    address: addressSchema,\n    blockHeight: z.number().int().nonnegative().optional(),\n}).strict();\nexport const ensResolveDataSchema = z.object({\n    name: ensNameSchema,\n    address: addressSchema,\n    avatar: z.string().min(1).optional(),\n}).strict();\nexport const ensReverseDataSchema = z.object({\n    address: addressSchema,\n    name: z.union([ensNameSchema, z.null()]),\n}).strict();\n","import { z } from \"zod\";\nimport { addressSchema, blockTagSchema, chainReferenceSchema, evmChainSlugSchema, genericAddressSchema, hexDataSchema, hexQuantitySchema, isoTimestampSchema, nonCosmosChainSlugSchema, starknetChainSlugSchema, supportedChainSlugSchema, supportedChainTypeSchema, txHashSchema, } from \"./common.js\";\n/** Use to request the latest block height for one chain. */\nexport const getBlockHeightParamsSchema = z\n    .object({\n    chain: supportedChainSlugSchema,\n})\n    .strict();\n/** Use to request health info for one chain. */\nexport const getChainHealthParamsSchema = z\n    .object({\n    chain: supportedChainSlugSchema,\n})\n    .strict();\n/** Use to look up one transaction receipt. */\nexport const getReceiptParamsSchema = z\n    .object({\n    chain: supportedChainSlugSchema,\n    hash: txHashSchema,\n})\n    .strict();\n/** Use to request a wallet's native balance. */\nexport const getBalanceParamsSchema = z\n    .object({\n    chain: supportedChainSlugSchema,\n    address: genericAddressSchema,\n    blockHeight: z.number().int().nonnegative().optional(),\n})\n    .strict();\n/** Use to request a wallet's token balance. */\nexport const getTokenBalanceParamsSchema = z\n    .object({\n    chain: supportedChainSlugSchema,\n    address: genericAddressSchema,\n    token: z.string().min(1),\n    blockHeight: z.number().int().nonnegative().optional(),\n})\n    .strict()\n    .superRefine((value, context) => {\n    if (nonCosmosChainSlugSchema.safeParse(value.chain).success &&\n        !genericAddressSchema.safeParse(value.token).success) {\n        context.addIssue({\n            code: \"custom\",\n            path: [\"token\"],\n            message: \"Expected a supported wallet address format\",\n        });\n    }\n});\n/** Use for the compare-gas endpoint, which takes no params. */\nexport const compareGasParamsSchema = z.object({}).strict();\n/** Use for one chain and block number in a batch block request. */\nexport const blockQueryItemSchema = z\n    .object({\n    chain: supportedChainSlugSchema,\n    block: z.number().int().nonnegative(),\n})\n    .strict();\n/** Use for one chain and tx hash in a batch transaction request. */\nexport const transactionHashQueryItemSchema = z\n    .object({\n    chain: supportedChainSlugSchema,\n    hash: txHashSchema,\n})\n    .strict();\n/** Use for one chain and block hash in a batch block request. */\nexport const blockHashQueryItemSchema = z\n    .object({\n    chain: supportedChainSlugSchema,\n    hash: txHashSchema,\n})\n    .strict();\n/** Use to request many blocks at once. Params is a positional array of items. */\nexport const getBlockByNumberParamsSchema = z\n    .array(blockQueryItemSchema)\n    .min(1)\n    .max(50);\n/** Use to request many transactions at once. Params is a positional array of items. */\nexport const getTransactionByHashParamsSchema = z\n    .array(transactionHashQueryItemSchema)\n    .min(1)\n    .max(50);\n/** Use to request many blocks by hash at once. Params is a positional array of items. */\nexport const getBlockByHashParamsSchema = z\n    .array(blockHashQueryItemSchema)\n    .min(1)\n    .max(50);\n/** Use to list the transactions inside one block. Supports EVM and Starknet chains. */\nexport const getBlockTransactionsParamsSchema = z\n    .object({\n    chain: supportedChainSlugSchema,\n    blockNumber: z.number().int().nonnegative(),\n    blockHeight: z.number().int().nonnegative().optional(),\n})\n    .strict();\n/** Use to request trace output for one transaction. EVM + Starknet (matches the chain dispatcher). */\nexport const traceTransactionParamsSchema = z\n    .object({\n    chain: z.union([evmChainSlugSchema, starknetChainSlugSchema]),\n    hash: txHashSchema,\n    blockHeight: z.number().int().nonnegative().optional(),\n})\n    .strict();\n// Use to estimate gas / fees for one transaction.\nexport const estimateGasParamsSchema = z\n    .object({\n    chain: supportedChainSlugSchema,\n    to: genericAddressSchema,\n    from: genericAddressSchema.optional(),\n    value: z.string().min(1).optional(),\n    data: hexDataSchema.optional(),\n    blockHeight: z.number().int().nonnegative().optional(),\n})\n    .strict();\n// Use to simulate one call without sending a transaction.\nexport const simulateCallParamsSchema = z\n    .object({\n    chain: supportedChainSlugSchema,\n    to: genericAddressSchema,\n    data: hexDataSchema,\n    from: genericAddressSchema.optional(),\n    value: z.string().min(1).optional(),\n    block: blockTagSchema.optional(),\n    blockHeight: z.number().int().nonnegative().optional(),\n})\n    .strict();\n/** Use to fetch bytecode for one contract address. */\nexport const getCodeParamsSchema = z\n    .object({\n    chain: supportedChainSlugSchema,\n    address: genericAddressSchema,\n    blockHeight: z.number().int().nonnegative().optional(),\n})\n    .strict();\n/** Use to simulate a call against the pending block. */\nexport const simulateCallPendingParamsSchema = z\n    .object({\n    chain: supportedChainSlugSchema,\n    to: addressSchema,\n    data: hexDataSchema,\n    block: blockTagSchema,\n})\n    .strict();\n/** Response shape for a block height lookup. */\nexport const blockHeightDataSchema = z\n    .object({\n    chain: chainReferenceSchema,\n    height: z.number().int().nonnegative().optional(),\n    error: z.string().min(1).optional(),\n})\n    .strict()\n    .refine((value) => value.height !== undefined || value.error !== undefined, {\n    message: 'Expected either \"height\" or \"error\"',\n});\n/** Response shape for a chain health check. */\nexport const chainHealthDataSchema = z\n    .object({\n    chain: supportedChainSlugSchema,\n    status: z.enum([\"ok\", \"degraded\", \"down\"]),\n    type: supportedChainTypeSchema,\n    blockHeight: z.number().int().nonnegative().optional(),\n    error: z.string().min(1).optional(),\n    timestamp: isoTimestampSchema,\n})\n    .strict()\n    .superRefine((value, context) => {\n    if (value.status === \"ok\" && value.blockHeight === undefined) {\n        context.addIssue({\n            code: \"custom\",\n            message: \"Healthy chain responses must include blockHeight\",\n            path: [\"blockHeight\"],\n        });\n    }\n    if (value.status !== \"ok\" && value.error === undefined) {\n        context.addIssue({\n            code: \"custom\",\n            message: \"Non-ok chain responses must include error\",\n            path: [\"error\"],\n        });\n    }\n});\n/** Response shape for API service health. */\nexport const healthDataSchema = z\n    .object({\n    status: z.literal(\"ok\"),\n    timestamp: isoTimestampSchema,\n})\n    .strict();\n/** Response shape for native or token balances. */\nexport const balanceDataSchema = z\n    .object({\n    chain: chainReferenceSchema,\n    address: genericAddressSchema,\n    token: z.string().min(1),\n    /** Decimal-adjusted balance (human-readable), e.g. \"1500.25\" for 1500.25 USDC. */\n    balance: z.string().min(1).optional(),\n    /** On-chain integer (wei / lamports / satoshis / token base units), as a string. */\n    balanceRaw: z.string().regex(/^\\d+$/).optional(),\n    /** Token decimals used to derive `balance` from `balanceRaw`. */\n    decimals: z.number().int().min(0).max(36).optional(),\n    error: z.string().min(1).optional(),\n})\n    .strict()\n    .refine((value) => value.balance !== undefined || value.error !== undefined, {\n    message: 'Expected either \"balance\" or \"error\"',\n});\n/** One row in the compare-gas response. */\n// `compareGas` returns gas data for every EVM chain the runtime has configured,\n// not just the public supported-chain slug set, so the chain field is left\n// loose here (can be any non-empty identifier).\nexport const gasComparisonEntrySchema = z\n    .object({\n    chain: z.string().min(1),\n    baseFeeGwei: z.number().nonnegative(),\n    priorityFeeGwei: z.number().nonnegative(),\n    estimatedTxCostUsd: z.number().nonnegative(),\n})\n    .strict();\n/** Response shape for compare-gas results. */\nexport const gasComparisonDataSchema = z\n    .object({\n    results: z.array(gasComparisonEntrySchema),\n    updatedAt: isoTimestampSchema,\n})\n    .strict();\n/** One item in a batch block response. */\nexport const batchBlockItemDataSchema = z\n    .object({\n    chain: supportedChainSlugSchema,\n})\n    .catchall(z.unknown());\n/** Response shape for batch block lookups. */\nexport const batchBlockResultsDataSchema = z\n    .object({\n    count: z.number().int().nonnegative(),\n    results: z.array(batchBlockItemDataSchema),\n})\n    .strict();\n/** One item in a batch transaction response. */\nexport const batchTransactionItemDataSchema = z\n    .object({\n    chain: supportedChainSlugSchema,\n    hash: txHashSchema.optional(),\n})\n    .catchall(z.unknown());\n/** Response shape for batch transaction lookups. */\nexport const batchTransactionResultsDataSchema = z\n    .object({\n    count: z.number().int().nonnegative(),\n    results: z.array(batchTransactionItemDataSchema),\n})\n    .strict();\n/** One transaction inside a block transaction list. */\nexport const blockTransactionSchema = z\n    .object({\n    hash: txHashSchema,\n    from: addressSchema,\n    to: z.union([addressSchema, z.null()]),\n    value: z.string().min(1),\n    gas: z.string().min(1),\n    gasPrice: z.string().min(1),\n    input: hexDataSchema,\n    nonce: z.string().min(1),\n    blockNumber: z.string().min(1),\n    blockHash: txHashSchema,\n    transactionIndex: z.string().min(1),\n})\n    .catchall(z.unknown());\n/** Response shape for block transaction lists. */\nconst evmBlockTransactionsDataSchema = z\n    .object({\n    blockNumber: z.number().int().nonnegative(),\n    hash: txHashSchema,\n    timestamp: z.number().int().nonnegative(),\n    transactionCount: z.number().int().nonnegative(),\n    transactions: z.array(blockTransactionSchema),\n})\n    .strict();\nconst starknetBlockTransactionsDataSchema = z\n    .object({\n    blockNumber: z.number().int().nonnegative(),\n    hash: z.string(),\n    timestamp: z.number().int().nonnegative(),\n    transactionCount: z.number().int().nonnegative(),\n    transactions: z.array(z.unknown()),\n})\n    .catchall(z.unknown());\nexport const blockTransactionsDataSchema = z.union([\n    evmBlockTransactionsDataSchema,\n    starknetBlockTransactionsDataSchema,\n]);\n/** Response shape for gas estimates. */\nconst evmGasEstimateDataSchema = z\n    .object({\n    chain: supportedChainSlugSchema,\n    gasEstimate: z.number().int().nonnegative(),\n    gasEstimateHex: hexQuantitySchema,\n})\n    .strict();\nconst starknetGasEstimateDataSchema = z\n    .object({\n    chain: supportedChainSlugSchema,\n    request: z.unknown(),\n    feeEstimate: z.unknown(),\n})\n    .catchall(z.unknown());\nexport const gasEstimateDataSchema = z.union([\n    evmGasEstimateDataSchema,\n    starknetGasEstimateDataSchema,\n]);\n/** Response shape for trace output. EVM trace includes `tracer`; Starknet's `starknet_traceTransaction` response is a single trace object with no tracer label. */\nexport const traceTransactionDataSchema = z\n    .object({\n    chain: supportedChainSlugSchema,\n    hash: txHashSchema,\n    tracer: z.string().min(1).optional(),\n    trace: z.unknown(),\n})\n    .strict();\n/** Response shape for simulated eth_call output. */\nconst evmSimulateCallDataSchema = z\n    .object({\n    chain: supportedChainSlugSchema,\n    result: hexDataSchema,\n})\n    .strict();\nconst starknetSimulateCallDataSchema = z\n    .object({\n    chain: supportedChainSlugSchema,\n    contractAddress: genericAddressSchema,\n    entryPointSelector: hexDataSchema,\n    calldata: z.array(z.string()),\n    result: z.union([z.array(z.string()), z.null()]),\n})\n    .catchall(z.unknown());\nexport const simulateCallDataSchema = z.union([\n    evmSimulateCallDataSchema,\n    starknetSimulateCallDataSchema,\n]);\n/** Response shape for contract code lookups. */\nconst evmContractCodeDataSchema = z\n    .object({\n    chain: supportedChainSlugSchema,\n    address: addressSchema,\n    isContract: z.boolean(),\n    bytecodeSize: z.number().int().nonnegative(),\n    bytecode: hexDataSchema,\n})\n    .strict();\nconst starknetContractCodeDataSchema = z\n    .object({\n    chain: supportedChainSlugSchema,\n    address: genericAddressSchema,\n    contractClass: z.unknown(),\n})\n    .catchall(z.unknown());\nexport const contractCodeDataSchema = z.union([\n    evmContractCodeDataSchema,\n    starknetContractCodeDataSchema,\n]);\n/** One log entry inside a receipt response. */\nexport const evmReceiptLogSchema = z\n    .object({\n    address: addressSchema,\n    topics: z.array(hexDataSchema).optional(),\n    data: hexDataSchema,\n    logIndex: z.string().min(1),\n    blockHash: txHashSchema.optional(),\n    blockNumber: z.string().min(1).optional(),\n    blockTimestamp: z.string().min(1).optional(),\n    transactionHash: txHashSchema.optional(),\n    transactionIndex: z.string().min(1).optional(),\n    transactionLogIndex: z.string().min(1).optional(),\n    removed: z.boolean().optional(),\n})\n    .strict();\n/** One entry in the handler-decorated `decodedLogs` array returned alongside the raw receipt. */\nexport const decodedReceiptLogSchema = z\n    .object({\n    address: z.string().min(1),\n    topics: z.array(z.string().min(1)),\n    data: z.string().min(1),\n    logIndex: z.string().min(1),\n    decoded: z\n        .object({\n        event: z.string().min(1),\n    })\n        .strict()\n        .nullable(),\n})\n    .strict();\n/**\n * Response shape for transaction receipts. L2s layer on chain-specific fields\n * (arbitrum: `gasUsedForL1`, `l1BlockNumber`, `timeboosted`; optimism-family:\n * `l1Fee`, `l1FeeScalar`, `l1GasPrice`, `l1GasUsed`), so this schema is loose\n * on top-level keys. The fixture exact-match step pins the actual payload.\n */\nconst evmReceiptDataSchema = z\n    .object({\n    chain: supportedChainSlugSchema,\n    transactionHash: txHashSchema,\n    transactionIndex: z.string().min(1),\n    blockHash: txHashSchema,\n    blockNumber: z.union([z.number().int().nonnegative(), z.string().min(1)]),\n    from: addressSchema,\n    to: z.union([addressSchema, z.null()]),\n    cumulativeGasUsed: z.string().min(1),\n    gasUsed: z.string().min(1),\n    effectiveGasPrice: z.string().min(1).optional(),\n    contractAddress: z.union([addressSchema, z.null()]).optional(),\n    logs: z.array(evmReceiptLogSchema).optional(),\n    logsBloom: z.string().min(1).optional(),\n    status: z.union([z.string().min(1), z.number().int()]),\n    type: z.string().min(1).optional(),\n    decodedLogs: z.array(decodedReceiptLogSchema).optional(),\n})\n    .catchall(z.unknown());\nconst starknetReceiptDataSchema = z\n    .object({\n    chain: supportedChainSlugSchema,\n    transaction_hash: txHashSchema,\n    block_hash: txHashSchema,\n    block_number: z.number().int().nonnegative(),\n    execution_status: z.string().min(1),\n    finality_status: z.string().min(1),\n    type: z.string().min(1),\n})\n    .catchall(z.unknown());\nexport const receiptDataSchema = z.union([\n    evmReceiptDataSchema,\n    starknetReceiptDataSchema,\n]);\n","import { z } from 'zod';\nimport { JSON_RPC_VERSION } from '../constants/json-rpc.js';\nexport const jsonRpcVersionSchema = z.literal(JSON_RPC_VERSION);\nexport const jsonRpcIdSchema = z.union([z.string(), z.number(), z.null()]);\nexport const jsonRpcErrorObjectSchema = z.object({\n    code: z.number().int(),\n    message: z.string().min(1),\n    data: z.unknown().optional(),\n}).strict();\nexport const jsonRpcRequestSchema = z.object({\n    jsonrpc: jsonRpcVersionSchema,\n    method: z.string().min(1),\n    params: z.union([\n        z.array(z.unknown()),\n        z.record(z.string(), z.unknown()),\n    ]).optional(),\n    id: jsonRpcIdSchema.optional(),\n}).strict();\nexport const dataEnvelopeSchema = (dataSchema) => z.object({\n    data: dataSchema,\n}).strict();\nexport const jsonRpcSuccessEnvelopeSchema = (resultSchema) => z.object({\n    jsonrpc: jsonRpcVersionSchema,\n    result: resultSchema,\n    id: jsonRpcIdSchema,\n}).strict();\n/** Envelope produced by `rpcProxy` — wraps an upstream JSON-RPC result inside `data`. */\nexport const rpcProxyResultEnvelopeSchema = (resultSchema) => jsonRpcSuccessEnvelopeSchema(dataEnvelopeSchema(z.object({\n    jsonrpc: jsonRpcVersionSchema,\n    id: jsonRpcIdSchema,\n    result: resultSchema,\n}).strict()));\nexport const jsonRpcErrorEnvelopeSchema = z.object({\n    jsonrpc: jsonRpcVersionSchema,\n    error: jsonRpcErrorObjectSchema,\n    id: jsonRpcIdSchema,\n}).strict();\n","import { z } from 'zod';\nimport { addressSchema, blockTagSchema, evmTopicSchema, genericAddressSchema, hexDataSchema, evmChainSlugSchema, supportedChainSlugSchema, txHashSchema, } from './common.js';\n/** Use to request logs with address and topic filters. */\nexport const getLogsParamsSchema = z.object({\n    chain: supportedChainSlugSchema,\n    address: genericAddressSchema.optional(),\n    topic0: evmTopicSchema.optional(),\n    cursor: blockTagSchema.optional(),\n    fromBlock: blockTagSchema.optional(),\n    toBlock: blockTagSchema.optional(),\n}).strict();\n/** Use to request transfers for one address. */\nexport const getTransfersParamsSchema = z.object({\n    chain: supportedChainSlugSchema,\n    address: addressSchema,\n    cursor: blockTagSchema.optional(),\n    fromBlock: blockTagSchema.optional(),\n    toBlock: blockTagSchema.optional(),\n}).strict();\n/** Use to request one token allowance. */\nexport const getTokenAllowanceParamsSchema = z.object({\n    chain: supportedChainSlugSchema,\n    address: addressSchema,\n    owner: addressSchema,\n    spender: addressSchema,\n    blockHeight: z.number().int().nonnegative().optional(),\n}).strict();\n/** One log entry in a logs response. */\nexport const logEntrySchema = z.object({\n    address: addressSchema,\n    topics: z.array(evmTopicSchema),\n    data: hexDataSchema,\n    blockNumber: z.number().int().nonnegative(),\n    transactionHash: txHashSchema,\n    transactionIndex: z.string().min(1),\n    blockHash: txHashSchema,\n    logIndex: z.number().int().nonnegative(),\n    removed: z.boolean(),\n    // Many upstreams (geth >= 1.13) include a timestamp per log entry; keep optional\n    // so fixtures captured against either generation of node pass validation.\n    blockTimestamp: z.string().min(1).optional(),\n    // Legacy field emitted by some Ethereum clients (parity/erigon) alongside logIndex.\n    transactionLogIndex: z.string().min(1).optional(),\n}).strict();\n/** Response shape for log queries (EVM). */\nconst evmLogsDataSchema = z.object({\n    chain: supportedChainSlugSchema,\n    count: z.number().int().nonnegative(),\n    limit: z.number().int().positive(),\n    hasMore: z.boolean(),\n    cursor: z.union([z.number().int().nonnegative(), z.string().min(1), z.null()]),\n    logs: z.array(logEntrySchema),\n}).strict();\n/** Response shape for log queries (Starknet — raw getEvents envelope). */\nconst starknetLogsDataSchema = z.object({\n    chain: supportedChainSlugSchema,\n    address: genericAddressSchema.optional(),\n    fromBlock: z.number().int().nonnegative().optional(),\n    toBlock: z.number().int().nonnegative().optional(),\n    events: z.unknown(),\n}).catchall(z.unknown());\nexport const logsDataSchema = z.union([evmLogsDataSchema, starknetLogsDataSchema]);\n/** One transfer entry in a transfers response. */\nexport const transferEntrySchema = z.object({\n    from: addressSchema,\n    to: addressSchema,\n    value: z.string().min(1),\n    token: addressSchema.optional(),\n    blockNumber: z.number().int().nonnegative(),\n    transactionHash: txHashSchema,\n}).strict();\n/** Response shape for transfer queries. */\nexport const transfersDataSchema = z.object({\n    chain: evmChainSlugSchema,\n    address: addressSchema,\n    count: z.number().int().nonnegative(),\n    limit: z.number().int().positive(),\n    hasMore: z.boolean(),\n    cursor: z.union([z.number().int().nonnegative(), z.string().min(1), z.null()]),\n    transfers: z.array(transferEntrySchema),\n}).strict();\n/** Response shape for token allowance lookups. */\nexport const tokenAllowanceDataSchema = z.object({\n    chain: evmChainSlugSchema,\n    token: addressSchema,\n    symbol: z.union([z.string().min(1), z.null()]),\n    owner: addressSchema,\n    spender: addressSchema,\n    allowance: z.string().min(1),\n    allowanceRaw: z.string().min(1),\n    isUnlimited: z.boolean(),\n}).strict();\n","import { z } from 'zod';\nimport { currencyCodeSchema, isoTimestampSchema, symbolSchema } from './common.js';\n/** Use to request the spot price for one symbol. */\nexport const getPriceParamsSchema = z.object({\n    symbol: symbolSchema,\n}).strict();\n/** Use to request price history for one symbol. */\nexport const getPriceHistoryParamsSchema = z.object({\n    symbol: symbolSchema,\n    days: z.union([z.number().int().positive(), z.string().regex(/^\\d+$/, 'Expected numeric days')]).optional(),\n    currency: currencyCodeSchema.optional(),\n}).strict();\n/** Use to request the top priced assets. */\nexport const getTopPricesParamsSchema = z.object({\n    limit: z.union([z.number().int().positive(), z.string().regex(/^\\d+$/, 'Expected numeric limit')]).optional(),\n    currency: currencyCodeSchema.optional(),\n}).strict();\n/** Use to search for tokens by name or symbol. */\nexport const searchTokensParamsSchema = z.object({\n    q: z.string().min(1, 'Expected non-empty search query'),\n    limit: z.union([z.number().int().positive(), z.string().regex(/^\\d+$/, 'Expected numeric limit')]).optional(),\n}).strict();\n/** Use to look up token addresses by symbol. */\nexport const getTokenAddressesParamsSchema = z.object({\n    symbol: symbolSchema,\n}).strict();\n/** Response shape for a spot price lookup. */\nexport const priceDataSchema = z.object({\n    symbol: symbolSchema,\n    name: z.string().min(1),\n    priceUsd: z.number(),\n    priceEur: z.union([z.number(), z.null()]),\n    lastUpdated: isoTimestampSchema,\n}).strict();\n/** One point in a price history response. */\nexport const priceHistoryPointSchema = z.object({\n    date: z.string().min(1),\n    price: z.number(),\n}).strict();\n/** Response shape for price history. */\nexport const priceHistoryDataSchema = z.object({\n    symbol: symbolSchema,\n    name: z.string().min(1),\n    currency: currencyCodeSchema,\n    prices: z.array(priceHistoryPointSchema),\n}).strict();\n/** One entry in the top prices response. */\nexport const topPriceEntrySchema = z.object({\n    symbol: symbolSchema,\n    name: z.string().min(1),\n    price: z.number(),\n    currency: currencyCodeSchema,\n    chains: z.number().int().nonnegative(),\n    lastUpdated: z.string().min(1).optional(),\n}).strict();\n/** Response shape for top prices. */\nexport const topPricesDataSchema = z.object({\n    count: z.number().int().nonnegative(),\n    results: z.array(topPriceEntrySchema),\n}).strict();\n// searchTokens returns DB-level chain identifiers and per-chain address\n// formats just like getTokenAddresses — see tokenAddressEntrySchema below for\n// the same rationale. Keep `chain` and `address` free-form strings or any\n// non-Spectrum deployment row fails schema validation.\nexport const tokenSearchChainSchema = z.object({\n    chain: z.string().min(1),\n    address: z.string().min(1),\n    exponent: z.number().int().nonnegative(),\n}).strict();\n/** One token in a search response. */\nexport const tokenSearchItemSchema = z.object({\n    tokenId: z.string().min(1),\n    symbol: symbolSchema,\n    name: z.string().min(1),\n    priceUsd: z.union([z.number(), z.null()]),\n    chains: z.array(tokenSearchChainSchema),\n}).strict();\n/** Response shape for token search. */\nexport const tokenSearchDataSchema = z.object({\n    count: z.number().int().nonnegative(),\n    results: z.array(tokenSearchItemSchema),\n}).strict();\n/** One chain-specific token address entry. */\n// getTokenAddresses echoes rows straight from the token-registry DB, which\n// stores DefiLlama-style chain identifiers (\"arbitrum-one\", \"polygon-pos\",\n// \"optimistic-ethereum\", ...) and per-chain native address formats (EVM 20-byte,\n// Aptos 32-byte, Starknet, etc.). Keep `chain` and `address` as free-form\n// strings rather than narrowing to SupportedChainSlug / EVM addressSchema, or\n// any non-Spectrum deployment row fails schema validation.\nexport const tokenAddressEntrySchema = z.object({\n    chain: z.string().min(1),\n    chainName: z.string().min(1),\n    address: z.string().min(1),\n    decimals: z.number().int().nonnegative(),\n}).strict();\n/** Response shape for token address lookups. */\nexport const tokenAddressesDataSchema = z.object({\n    symbol: symbolSchema,\n    name: z.string().min(1),\n    priceUsd: z.union([z.number(), z.null()]),\n    addresses: z.array(tokenAddressEntrySchema),\n}).strict();\n","import { z } from 'zod';\nimport { addressSchema, blockTagSchema, supportedChainSlugSchema } from './common.js';\nimport { logEntrySchema } from './logs.js';\n/** One ABI parameter description stored on a marketplace method. */\nexport const marketplaceMethodParamSchema = z\n    .object({\n    name: z.string().min(1),\n    type: z.string().min(1),\n    kind: z.enum(['input', 'output']),\n    indexed: z.boolean().optional(),\n    description: z.string().nullable().optional(),\n})\n    .strict();\nexport const marketplaceContractMethodSchema = z\n    .object({\n    method: z.string().min(1),\n    abiName: z.string().min(1),\n    abiType: z.enum(['function', 'event']),\n    description: z.string().nullable().optional(),\n    params: z.array(marketplaceMethodParamSchema),\n})\n    .strict();\n/**\n * One deployment of a marketplace app: a `name` (unique per chain within the\n * app, or unique within a template app) plus optional chain + address + its own\n * ABI and selected methods.\n *\n * Concrete deployments bake chain and deployment name into published JSON-RPC\n * method names so callers do not pass chain/address.\n *\n * Template deployments omit chain/address; published names omit the chain\n * segment, and callers must supply `chain` + `address` in the call body.\n */\nexport const marketplaceContractDeploymentSchema = z\n    .object({\n    name: z.string().min(1),\n    chain: z.string().nullable(),\n    address: addressSchema.nullable(),\n    abi: z.unknown(),\n    methods: z.array(marketplaceContractMethodSchema),\n})\n    .strict();\n/** @deprecated Use marketplaceContractDeploymentSchema. */\nexport const marketplaceContractChainSchema = marketplaceContractDeploymentSchema;\n/**\n * Published marketplace method metadata (discovery). Each entry is uniquely\n * callable by `method` alone. For concrete deployments, `chain` / `address` /\n * `deploymentName` describe the target. For templates (`isTemplate: true`),\n * `chain` / `address` are null and must be supplied in the call body.\n */\nexport const marketplaceMethodEntrySchema = z\n    .object({\n    method: z.string().min(1),\n    abiName: z.string().min(1),\n    abiType: z.enum(['function', 'event']),\n    description: z.string().nullable().optional(),\n    params: z.array(marketplaceMethodParamSchema),\n    appId: z.string().min(1),\n    contractName: z.string().min(1),\n    deploymentName: z.string().min(1),\n    isTemplate: z.boolean(),\n    chain: z.string().min(1).nullable(),\n    address: addressSchema.nullable(),\n})\n    .strict();\nexport const listMarketplaceMethodsParamsSchema = z\n    .object({\n    chain: z.string().min(1).optional(),\n    appId: z.string().min(1).optional(),\n    abiType: z.enum(['function', 'event']).optional(),\n})\n    .strict();\nexport const listMarketplaceMethodsDataSchema = z\n    .object({\n    methods: z.array(marketplaceMethodEntrySchema),\n})\n    .strict();\nexport const getMarketplaceContractParamsSchema = z\n    .object({\n    appId: z.string().min(1),\n})\n    .strict();\nexport const marketplaceContractDataSchema = z\n    .object({\n    appId: z.string().min(1),\n    name: z.string().min(1),\n    description: z.string().nullable().optional(),\n    isTemplate: z.boolean(),\n    deployments: z.array(marketplaceContractDeploymentSchema),\n})\n    .strict();\n/**\n * Operation segment in published marketplace method names. Encodes how the\n * ABI item is invoked so reads, simulations, log queries, and future writes\n * stay distinct:\n * - `call` — view/pure function via `eth_call`\n * - `simulateCall` — non-view function via `eth_simulateV1` (nothing broadcast)\n * - `getLogs` — event via `eth_getLogs`\n * - `write` — reserved for a future on-chain send of the same function\n */\nexport const MARKETPLACE_METHOD_OPERATION_CALL = 'call';\nexport const MARKETPLACE_METHOD_OPERATION_SIMULATE_CALL = 'simulateCall';\nexport const MARKETPLACE_METHOD_OPERATION_GET_LOGS = 'getLogs';\nexport const MARKETPLACE_METHOD_OPERATION_WRITE = 'write';\nexport const MARKETPLACE_METHOD_OPERATIONS = [\n    MARKETPLACE_METHOD_OPERATION_CALL,\n    MARKETPLACE_METHOD_OPERATION_SIMULATE_CALL,\n    MARKETPLACE_METHOD_OPERATION_GET_LOGS,\n    MARKETPLACE_METHOD_OPERATION_WRITE,\n];\n/**\n * A published marketplace method is called by its own JSON-RPC method name.\n * App ids, chain slugs, and deployment names are alphanumeric (no `_`); the\n * operation segment is `call` | `simulateCall` | `getLogs` | `write`; ABI names\n * may include `_`. Template apps omit the chain segment.\n *\n * Concrete: `spectrum_<appId>_<chain>_<deploymentName>_<operation>_<abiName>`\n * Template: `spectrum_<appId>_<deploymentName>_<operation>_<abiName>`\n */\nexport const MARKETPLACE_METHOD_NAME_PATTERN = /^spectrum_[0-9a-zA-Z]+(_[0-9a-zA-Z]+)?_[0-9a-zA-Z]+_(call|simulateCall|getLogs|write)_[A-Za-z_$][A-Za-z0-9_$]*$/;\n/** Extracts the operation segment from a published marketplace method name. */\nexport const MARKETPLACE_METHOD_OPERATION_PATTERN = /_(call|simulateCall|getLogs|write)_([A-Za-z_$][A-Za-z0-9_$]*)$/;\nexport const marketplaceMethodNameSchema = z\n    .string()\n    .regex(MARKETPLACE_METHOD_NAME_PATTERN, 'Expected a method name of the form spectrum_<appId>_[<chain>_]<deploymentName>_<operation>_<abiName>');\n/**\n * Block height for marketplace function calls/simulations: omit or `\"latest\"`\n * for the tip, otherwise a block number (decimal number or decimal string).\n */\nexport const marketplaceHeightSchema = z.union([\n    z.literal('latest'),\n    z.number().int().nonnegative(),\n    z.string().regex(/^\\d+$/, 'Expected a decimal block number'),\n]);\n/**\n * Params for\n * `spectrum_<appId>_[<chain>_]<deploymentName>_<operation>_<abiName>`.\n *\n * Concrete deployments resolve chain/address from the method name — do not pass\n * them here. Template methods (no chain segment) require `chain` and `address`.\n *\n * `…_call_…` view/pure functions run as `eth_call` (`args` + optional `height`).\n * `…_simulateCall_…` non-view functions run as `eth_simulateV1` (`args` +\n * optional `height` / `from` / `value`).\n * `…_getLogs_…` events use `args` as positional topic filters for indexed\n * inputs, plus the same `fromBlock`/`toBlock`/`cursor` windowing as `getLogs`.\n */\nexport const marketplaceMethodCallParamsSchema = z\n    .object({\n    args: z.array(z.unknown()).default([]),\n    chain: supportedChainSlugSchema.or(z.string().min(1)).optional(),\n    address: addressSchema.optional(),\n    from: addressSchema.optional(),\n    value: z.string().min(1).optional(),\n    height: marketplaceHeightSchema.optional(),\n    cursor: blockTagSchema.optional(),\n    fromBlock: blockTagSchema.optional(),\n    toBlock: blockTagSchema.optional(),\n})\n    .strict();\nconst marketplaceMethodCallBaseSchema = z.object({\n    chain: supportedChainSlugSchema.or(z.string().min(1)),\n    address: addressSchema,\n    method: z.string().min(1),\n    abiName: z.string().min(1),\n    deploymentName: z.string().min(1),\n});\n/**\n * Decoded outputs are positional — one entry per ABI output, in declaration\n * order, with nested tuples as arrays. Names and types come from the method\n * metadata returned by `listMarketplaceMethods`.\n */\nexport const marketplaceCallFunctionDataSchema = marketplaceMethodCallBaseSchema\n    .extend({\n    operation: z.literal(MARKETPLACE_METHOD_OPERATION_CALL),\n    abiType: z.literal('function'),\n    outputs: z.array(z.unknown()),\n})\n    .strict();\n/**\n * One log from an `eth_simulateV1` call result. Simulation logs often omit or\n * zero out block/tx identity fields, so only address/topics/data are required.\n */\nexport const marketplaceSimulateCallLogSchema = z\n    .object({\n    address: addressSchema,\n    topics: z.array(z.string().regex(/^0x[0-9a-fA-F]*$/)),\n    data: z.string().regex(/^0x[0-9a-fA-F]*$/),\n    blockNumber: z.union([z.string(), z.number()]).optional(),\n    transactionHash: z.string().optional(),\n    transactionIndex: z.union([z.string(), z.number()]).optional(),\n    blockHash: z.string().optional(),\n    logIndex: z.union([z.string(), z.number()]).optional(),\n    removed: z.boolean().optional(),\n})\n    .strict();\n/**\n * Non-view function dry-run via `eth_simulateV1`: decoded `outputs` plus\n * simulation status, gas, and emitted logs.\n */\nexport const marketplaceSimulateCallFunctionDataSchema = marketplaceMethodCallBaseSchema\n    .extend({\n    operation: z.literal(MARKETPLACE_METHOD_OPERATION_SIMULATE_CALL),\n    abiType: z.literal('function'),\n    outputs: z.array(z.unknown()),\n    status: z.enum(['0x0', '0x1']),\n    gasUsed: z.string().regex(/^0x[0-9a-fA-F]+$/),\n    logs: z.array(marketplaceSimulateCallLogSchema),\n})\n    .strict();\n/** @deprecated Prefer marketplaceCallFunctionDataSchema or the method-call union. */\nexport const marketplaceFunctionCallDataSchema = z.union([\n    marketplaceCallFunctionDataSchema,\n    marketplaceSimulateCallFunctionDataSchema,\n]);\n/** One marketplace event log: getLogs fields plus positional decoded `args`. */\nexport const marketplaceEventLogSchema = logEntrySchema\n    .extend({\n    args: z.array(z.unknown()),\n})\n    .strict();\n/**\n * Event query result — same pagination envelope as `getLogs`, scoped to one\n * published event on one deployment.\n */\nexport const marketplaceEventCallDataSchema = marketplaceMethodCallBaseSchema\n    .extend({\n    operation: z.literal(MARKETPLACE_METHOD_OPERATION_GET_LOGS),\n    abiType: z.literal('event'),\n    count: z.number().int().nonnegative(),\n    limit: z.number().int().positive(),\n    hasMore: z.boolean(),\n    cursor: z.union([z.number().int().nonnegative(), z.string().min(1), z.null()]),\n    logs: z.array(marketplaceEventLogSchema),\n})\n    .strict();\nexport const marketplaceMethodCallDataSchema = z.discriminatedUnion('operation', [\n    marketplaceCallFunctionDataSchema,\n    marketplaceSimulateCallFunctionDataSchema,\n    marketplaceEventCallDataSchema,\n]);\n","import { z } from 'zod';\nimport { addressSchema, cosmosChainSlugSchema, evmChainSlugSchema, genericAddressSchema, solanaChainSlugSchema, supportedChainSlugSchema } from './common.js';\nimport { denomSchema } from './cosmos.js';\nexport const tokenIdentifierSchema = z.union([addressSchema, denomSchema]);\nexport const getTokenMetadataParamsSchema = z.object({\n    chain: supportedChainSlugSchema,\n    address: z.string().min(1),\n    blockHeight: z.number().int().nonnegative().optional(),\n}).strict();\nexport const tokenMetadataDataSchema = z.object({\n    chain: z.union([evmChainSlugSchema, cosmosChainSlugSchema, solanaChainSlugSchema]),\n    address: z.union([tokenIdentifierSchema, genericAddressSchema]),\n    name: z.union([z.string().min(1), z.null()]).optional(),\n    symbol: z.union([z.string().min(1), z.null()]).optional(),\n    decimals: z.union([z.number().int().nonnegative(), z.null()]).optional(),\n    totalSupply: z.union([z.string().min(1), z.null()]).optional(),\n    uri: z.union([z.string().min(1), z.null()]).optional(),\n    metadata: z.unknown().optional(),\n}).strict();\n","import { z } from 'zod';\nimport { genericAddressSchema, evmChainSlugSchema, solanaChainSlugSchema, supportedChainSlugSchema, symbolSchema } from './common.js';\nexport const getPortfolioParamsSchema = z.object({\n    chain: supportedChainSlugSchema,\n    address: genericAddressSchema,\n    blockHeight: z.number().int().nonnegative().optional(),\n}).strict();\nexport const portfolioTokenSchema = z.object({\n    chain: evmChainSlugSchema,\n    address: genericAddressSchema,\n    symbol: symbolSchema,\n    name: z.string().min(1),\n    balance: z.string().min(1),\n    decimals: z.number().int().nonnegative(),\n    priceUsd: z.union([z.number(), z.null()]),\n    valueUsd: z.union([z.number(), z.null()]),\n}).strict();\nexport const portfolioDataSchema = z.object({\n    address: genericAddressSchema,\n    chain: evmChainSlugSchema,\n    nativeBalance: z.string().min(1),\n    nativeSymbol: symbolSchema,\n    nativePriceUsd: z.union([z.number(), z.null()]),\n    nativeValueUsd: z.union([z.number(), z.null()]),\n    tokens: z.array(portfolioTokenSchema),\n    totalValueUsd: z.union([z.number(), z.null()]),\n}).strict();\n// Solana portfolios have a leaner shape than the EVM one: SPL holdings carry no\n// USD valuation, and balances come straight from the parsed token account.\nexport const solanaPortfolioTokenSchema = z.object({\n    mint: genericAddressSchema,\n    balance: z.string(),\n    balanceRaw: z.string(),\n    decimals: z.number().int().nonnegative(),\n}).strict();\nexport const solanaPortfolioDataSchema = z.object({\n    chain: solanaChainSlugSchema,\n    address: genericAddressSchema,\n    nativeBalance: z.string().min(1),\n    nativeSymbol: z.literal('SOL'),\n    tokens: z.array(solanaPortfolioTokenSchema),\n}).strict();\n","import { z } from 'zod';\n/** Calendar date in YYYY-MM-DD (UTC). */\nexport const networkCalendarDaySchema = z\n    .string()\n    .regex(/^\\d{4}-(0[1-9]|1[0-2])-(0[1-9]|[12]\\d|3[01])$/, 'Expected YYYY-MM-DD')\n    .refine((value) => {\n    const parsed = new Date(`${value}T00:00:00.000Z`);\n    return !Number.isNaN(parsed.getTime()) && parsed.toISOString().slice(0, 10) === value;\n}, 'Expected a valid calendar date');\n/** Calendar month in YYYY-MM. */\nexport const networkCalendarMonthSchema = z\n    .string()\n    .regex(/^\\d{4}-(0[1-9]|1[0-2])$/, 'Expected YYYY-MM');\n/**\n * Params for `getNetworkCalendar`.\n * - `month` — all approved entries in that UTC month\n * - `day` — a specific UTC day (`YYYY-MM-DD`) or `\"today\"` for the current UTC day\n * - `chain` — network/chain slug as stored in usersdb `networks.network` (e.g. `\"ethereum\"`)\n * When both `month` and `day` are set, `day` must fall within `month`.\n */\nexport const getNetworkCalendarParamsSchema = z\n    .object({\n    month: networkCalendarMonthSchema.optional(),\n    day: z.union([networkCalendarDaySchema, z.literal('today')]).optional(),\n    chain: z.string().min(1).optional(),\n})\n    .strict()\n    .superRefine((value, ctx) => {\n    if (!value.month || !value.day || value.day === 'today')\n        return;\n    if (!value.day.startsWith(`${value.month}-`)) {\n        ctx.addIssue({\n            code: 'custom',\n            message: '\"day\" must fall within the provided \"month\"',\n            path: ['day'],\n        });\n    }\n});\n/** Public chain environment for a calendar entry (mapped from DB `mn` / `tn` / `dn`). */\nexport const networkCalendarChainTypeSchema = z.enum(['mainnet', 'testnet', 'devnet']);\nexport const networkCalendarEventTypeSchema = z.enum(['release', 'upgrade']);\n/** One approved network calendar entry (public shape). */\nexport const networkCalendarEntrySchema = z\n    .object({\n    id: z.number().int().positive(),\n    chain: z.string().min(1),\n    date: z.string().min(1),\n    description: z.string(),\n    chainType: networkCalendarChainTypeSchema,\n    eventType: networkCalendarEventTypeSchema,\n})\n    .strict();\nexport const getNetworkCalendarDataSchema = z\n    .object({\n    entries: z.array(networkCalendarEntrySchema),\n})\n    .strict();\n","import { z } from 'zod';\nimport { addressSchema, evmChainSlugSchema } from './common.js';\nexport const tokenIdSchema = z.string().regex(/^\\d+$/, 'Expected a non-negative integer token id');\nexport const addressBatchSchema = z.array(addressSchema).min(1).max(100, 'Maximum 100 addresses per batch');\nexport const tokenIdBatchSchema = z.array(tokenIdSchema).min(1).max(100, 'Maximum 100 token ids per batch');\nexport const getNftCollectionParamsSchema = z.object({\n    chain: evmChainSlugSchema,\n    contract: addressSchema,\n    blockHeight: z.number().int().nonnegative().optional(),\n}).strict();\nexport const getNftBalanceParamsSchema = z.object({\n    chain: evmChainSlugSchema,\n    contract: addressSchema,\n    address: addressSchema,\n    blockHeight: z.number().int().nonnegative().optional(),\n}).strict();\nexport const getNftTokensParamsSchema = z.object({\n    chain: evmChainSlugSchema,\n    contract: addressSchema,\n    address: addressSchema,\n    blockHeight: z.number().int().nonnegative().optional(),\n}).strict();\nexport const getNftMetadataParamsSchema = z.object({\n    chain: evmChainSlugSchema,\n    contract: addressSchema,\n    tokenId: tokenIdSchema,\n    blockHeight: z.number().int().nonnegative().optional(),\n}).strict();\nexport const getNftTokenOwnerParamsSchema = z.object({\n    chain: evmChainSlugSchema,\n    contract: addressSchema,\n    tokenId: tokenIdSchema,\n    blockHeight: z.number().int().nonnegative().optional(),\n}).strict();\nexport const getNftErc1155BalanceParamsSchema = z.object({\n    chain: evmChainSlugSchema,\n    contract: addressSchema,\n    address: addressSchema,\n    tokenId: tokenIdSchema,\n    blockHeight: z.number().int().nonnegative().optional(),\n}).strict();\nexport const getNftBatchBalanceParamsSchema = z.object({\n    chain: evmChainSlugSchema,\n    contract: addressSchema,\n    addresses: addressBatchSchema,\n    tokenIds: tokenIdBatchSchema,\n    blockHeight: z.number().int().nonnegative().optional(),\n}).strict().superRefine(({ addresses, tokenIds }, context) => {\n    if (addresses.length !== tokenIds.length) {\n        context.addIssue({\n            code: 'custom',\n            path: ['tokenIds'],\n            message: 'addresses and tokenIds must have the same length',\n        });\n    }\n});\nexport const nftStandardSchema = z.object({\n    erc721: z.boolean(),\n    erc721Enumerable: z.boolean(),\n    erc1155: z.boolean(),\n}).strict();\nexport const nftCollectionDataSchema = z.object({\n    chain: evmChainSlugSchema,\n    contract: addressSchema,\n    name: z.union([z.string().min(1), z.null()]),\n    symbol: z.union([z.string().min(1), z.null()]),\n    totalSupply: z.union([z.string().min(1), z.null()]),\n    standard: z.union([nftStandardSchema, z.null()]).optional(),\n}).strict();\nexport const nftBalanceDataSchema = z.object({\n    chain: evmChainSlugSchema,\n    contract: addressSchema,\n    address: addressSchema,\n    balance: z.union([z.string().min(1), z.number().int().nonnegative()]),\n    tokenId: tokenIdSchema.optional(),\n}).strict();\nexport const nftTokensDataSchema = z.object({\n    chain: evmChainSlugSchema,\n    contract: addressSchema,\n    address: addressSchema,\n    tokenIds: z.array(tokenIdSchema).optional(),\n    tokens: z.array(tokenIdSchema).optional(),\n    total: z.union([z.string().min(1), z.number().int().nonnegative()]).optional(),\n    capped: z.boolean().optional(),\n}).strict().refine((value) => value.tokenIds !== undefined || value.tokens !== undefined, { message: 'Expected tokenIds or tokens in NFT token listings' });\nexport const nftBatchBalanceEntrySchema = z.object({\n    address: addressSchema,\n    tokenId: tokenIdSchema,\n    balance: z.string().min(1),\n}).strict();\nexport const nftBatchBalanceDataSchema = z.object({\n    chain: evmChainSlugSchema,\n    contract: addressSchema,\n    results: z.array(nftBatchBalanceEntrySchema).optional(),\n    balances: z.array(z.union([z.string().min(1), z.number().int().nonnegative()])).optional(),\n}).strict().refine((value) => value.results !== undefined || value.balances !== undefined, { message: 'Expected results or balances in batch NFT balance response' });\nexport const nftTokenOwnerDataSchema = z.object({\n    chain: evmChainSlugSchema,\n    contract: addressSchema,\n    tokenId: tokenIdSchema,\n    owner: addressSchema,\n}).strict();\nexport const nftMetadataDataSchema = z.object({\n    chain: evmChainSlugSchema,\n    contract: addressSchema,\n    tokenId: tokenIdSchema,\n    standard: nftStandardSchema.optional(),\n    owner: z.union([addressSchema, z.null()]).optional(),\n    tokenURI: z.union([z.string().min(1), z.null()]).optional(),\n    uri: z.union([z.string().min(1), z.null()]).optional(),\n    metadata: z.unknown().optional(),\n}).strict();\n","import { z } from 'zod';\nimport { addressSchema, hexDataSchema, isoTimestampSchema, nonEmptyStringSchema, numericLikeSchema, evmChainSlugSchema, } from './common.js';\n/** Use for DeFi endpoints scoped to one chain and wallet. */\nexport const chainAddressParamsSchema = z.object({\n    chain: evmChainSlugSchema,\n    address: addressSchema,\n    blockHeight: z.number().int().nonnegative().optional(),\n}).strict();\n/** Use for DeFi endpoints scoped to one chain. */\nexport const chainParamsSchema = z.object({\n    chain: evmChainSlugSchema,\n    blockHeight: z.number().int().nonnegative().optional(),\n}).strict();\n/** Use for quote endpoints that take an input token and output token. */\nexport const chainTokenPairAmountParamsSchema = z.object({\n    chain: evmChainSlugSchema,\n    tokenIn: addressSchema,\n    tokenOut: addressSchema,\n    amount: nonEmptyStringSchema,\n    blockHeight: z.number().int().nonnegative().optional(),\n}).strict();\n/** Use to request a Uniswap V2 quote. */\nexport const getUniswapV2QuoteParamsSchema = chainTokenPairAmountParamsSchema;\n/** Use to request a Uniswap V3 quote. */\nexport const getUniswapV3QuoteParamsSchema = chainTokenPairAmountParamsSchema.extend({\n    fee: numericLikeSchema.optional(),\n}).strict();\n/** Use to request a Uniswap V4 quote. */\nexport const getUniswapV4QuoteParamsSchema = chainTokenPairAmountParamsSchema.extend({\n    fee: numericLikeSchema.optional(),\n    tickSpacing: numericLikeSchema.optional(),\n}).strict();\n/** Use to request a Jupiter quote. */\nexport const getJupiterQuoteParamsSchema = z.object({\n    inputMint: nonEmptyStringSchema,\n    outputMint: nonEmptyStringSchema,\n    amount: nonEmptyStringSchema,\n    slippageBps: numericLikeSchema.optional(),\n}).strict();\n/** Use to request a Jupiter spot price. */\nexport const getJupiterPriceParamsSchema = z.object({\n    inputMint: nonEmptyStringSchema,\n    outputMint: nonEmptyStringSchema,\n}).strict();\n/** Use to request an Avantis vault price. */\nexport const getAvantisPriceParamsSchema = z.object({\n    chain: evmChainSlugSchema,\n    vault: nonEmptyStringSchema,\n    blockHeight: z.number().int().nonnegative().optional(),\n}).strict();\n/** Use to request Pendle market info. */\nexport const getPendleV2InfoParamsSchema = chainParamsSchema;\n/** Use to build a revoke-approval transaction. */\nexport const getApprovalsRevokeParamsSchema = z.object({\n    chain: evmChainSlugSchema,\n    address: addressSchema,\n    token: addressSchema,\n    spender: addressSchema,\n}).strict();\n/** Use for funding-rate endpoints with no required params. */\nexport const getFundingRatesParamsSchema = z.object({}).strict();\n/** Use to request Hyperliquid funding data. */\nexport const getHyperliquidFundingParamsSchema = z.object({ coin: nonEmptyStringSchema.optional() }).strict();\n/** Use to request dYdX funding data. */\nexport const getDydxFundingParamsSchema = z.object({ ticker: nonEmptyStringSchema.optional() }).strict();\n/** Response shape for normalized EVM swap quotes. */\nexport const swapQuoteDataSchema = z.object({\n    chain: evmChainSlugSchema,\n    tokenIn: addressSchema,\n    tokenOut: addressSchema,\n    amountIn: nonEmptyStringSchema,\n    amountOut: nonEmptyStringSchema,\n    fee: z.number().int().nonnegative().optional(),\n    tickSpacing: z.number().int().nonnegative().optional(),\n    gasEstimate: nonEmptyStringSchema.optional(),\n}).strict();\n/** One hop in a Jupiter route plan. */\nexport const jupiterRoutePlanStepSchema = z.object({\n    swapInfo: z.object({\n        ammKey: nonEmptyStringSchema,\n        label: nonEmptyStringSchema,\n        inputMint: nonEmptyStringSchema,\n        outputMint: nonEmptyStringSchema,\n    }).strict(),\n    percent: z.number(),\n}).strict();\n/** Response shape for Jupiter quotes. */\nexport const jupiterQuoteDataSchema = z.object({\n    inputMint: nonEmptyStringSchema,\n    outputMint: nonEmptyStringSchema,\n    amountIn: nonEmptyStringSchema,\n    amountOut: nonEmptyStringSchema,\n    otherAmountThreshold: nonEmptyStringSchema,\n    swapMode: nonEmptyStringSchema,\n    priceImpactPct: nonEmptyStringSchema,\n    routePlan: z.array(jupiterRoutePlanStepSchema),\n}).strict();\n/** Response shape for Jupiter prices. */\nexport const jupiterPriceDataSchema = z.object({\n    price: z.number(),\n}).strict();\n// protocolPositionDataSchema is shared across 7 DeFi position shapes (Aave V2/V3,\n// Compound V2/V3, Lido, Morpho, Curve LlamaLend) that each have distinct payloads.\n// The exact-match fixture tests pin each shape per protocol per chain, so the\n// catchall here intentionally defers deep shape checking to those fixtures.\n/** Response shape for one protocol's positions. */\nexport const protocolPositionDataSchema = z.object({\n    chain: evmChainSlugSchema,\n    address: addressSchema,\n}).catchall(z.unknown());\n/** Response shape for Curve pool lists. */\nexport const curvePoolsDataSchema = z.object({\n    chain: evmChainSlugSchema,\n    pools: z.array(z.unknown()),\n}).strict();\n/** Response shape for Curve Llamalend market lists. */\nexport const curveLlamaLendMarketsDataSchema = z.object({\n    chain: evmChainSlugSchema,\n    markets: z.array(z.unknown()),\n}).strict();\n/** Response shape for Pendle info. */\nexport const pendleInfoDataSchema = z.object({\n    chain: evmChainSlugSchema,\n    routerAddress: addressSchema,\n    routerStaticAddress: z.union([addressSchema, z.null()]),\n    supportedChains: z.array(nonEmptyStringSchema),\n}).strict();\n/** One protocol row inside a DeFi summary. */\n// `data` stays z.unknown() because each sub-protocol returns its own shape;\n// the per-protocol handlers are what validate the inner payload.\nexport const defiSummaryProtocolSchema = z.object({\n    protocol: nonEmptyStringSchema,\n    chain: evmChainSlugSchema,\n    status: z.enum(['ok', 'error', 'unsupported']),\n    data: z.unknown().optional(),\n    error: nonEmptyStringSchema.optional(),\n}).strict();\n/** Response shape for a wallet's DeFi summary. */\nexport const defiSummaryDataSchema = z.object({\n    chain: evmChainSlugSchema,\n    address: addressSchema,\n    protocols: z.array(defiSummaryProtocolSchema),\n    protocolsQueried: z.number().int().nonnegative(),\n    timestamp: isoTimestampSchema,\n}).strict();\n/** Token or spender shape used in approval responses. */\nexport const approvalPartySchema = z.union([\n    addressSchema,\n    z.object({\n        address: addressSchema,\n        name: nonEmptyStringSchema.optional(),\n        symbol: nonEmptyStringSchema.optional(),\n    }).strict(),\n]);\n/** One approval entry. */\nexport const approvalEntrySchema = z.object({\n    token: approvalPartySchema,\n    spender: approvalPartySchema,\n    allowance: nonEmptyStringSchema,\n    isUnlimited: z.boolean(),\n}).strict();\n/** Response shape for wallet approvals. */\nexport const approvalsDataSchema = z.object({\n    chain: evmChainSlugSchema,\n    address: addressSchema,\n    approvals: z.array(approvalEntrySchema),\n}).strict();\n/** Response shape for revoke-approval transactions. */\n// Branch 1 is the actual handler return shape (unsigned EVM tx). Branch 2 is\n// preserved for an alternate protocol-aware shape kept for SDK compatibility.\nexport const revokeTxDataSchema = z.union([\n    z.object({\n        to: addressSchema,\n        from: addressSchema,\n        value: nonEmptyStringSchema,\n        data: hexDataSchema,\n    }).strict(),\n    z.object({\n        chain: evmChainSlugSchema,\n        token: addressSchema,\n        spender: addressSchema,\n        tx: z.unknown(),\n    }).strict(),\n]);\n/** Response shape for one Hyperliquid coin's funding data. */\nexport const hyperliquidFundingRateSchema = z.object({\n    coin: nonEmptyStringSchema,\n    fundingRate: nonEmptyStringSchema,\n    annualizedRate: z.number(),\n    openInterest: nonEmptyStringSchema,\n    markPrice: nonEmptyStringSchema,\n    oraclePrice: nonEmptyStringSchema,\n}).strict();\n/** Response shape for one dYdX market's funding data. */\nexport const dydxFundingRateSchema = z.object({\n    ticker: nonEmptyStringSchema,\n    fundingRate: nonEmptyStringSchema,\n    annualizedRate: z.number(),\n    price: nonEmptyStringSchema,\n    openInterest: nonEmptyStringSchema,\n}).strict();\n/** Either provider's funding-rate entry. */\nexport const fundingRateEntrySchema = z.union([\n    hyperliquidFundingRateSchema,\n    dydxFundingRateSchema,\n]);\n/** Response shape for the combined funding-rate overview. */\nexport const fundingRatesDataSchema = z.object({\n    hyperliquid: z.array(hyperliquidFundingRateSchema),\n    dydx: z.array(dydxFundingRateSchema),\n    timestamp: isoTimestampSchema,\n}).strict();\n/** Response shape for Hyperliquid funding (single coin or full list). */\nexport const hyperliquidFundingDataSchema = z.union([\n    hyperliquidFundingRateSchema,\n    z.array(hyperliquidFundingRateSchema),\n]);\n/** Response shape for dYdX funding (single ticker or full list). */\nexport const dydxFundingDataSchema = z.union([\n    dydxFundingRateSchema,\n    z.array(dydxFundingRateSchema),\n]);\n/** Response shape for a single-provider funding lookup. */\nexport const singleFundingRateDataSchema = z.union([\n    hyperliquidFundingDataSchema,\n    dydxFundingDataSchema,\n]);\n/** Response shape for Avantis vault prices. */\nexport const avantisVaultPriceDataSchema = z.object({\n    chain: evmChainSlugSchema,\n    protocol: z.literal('avantis'),\n    vault: nonEmptyStringSchema,\n    vaultAddress: addressSchema,\n    depositPrice: z.object({ USD: z.number() }).strict(),\n    redemptionPrice: z.object({ USD: z.number() }).strict(),\n    decimals: z.number().int().nonnegative(),\n}).strict();\n","import { z } from 'zod';\nimport { ADDRESS_POOL_PROTOCOLS, ALL_YIELD_PROTOCOLS, PRICE_YIELD_PROTOCOLS, } from '../constants/yields.js';\nimport { addressSchema, isoTimestampSchema, nonEmptyStringSchema, numericLikeSchema, evmChainSlugSchema, } from './common.js';\n/** Use to check which protocols use address-like pool ids. */\nconst addressPoolProtocolSet = new Set(ADDRESS_POOL_PROTOCOLS);\n/** Use when a field should allow any supported yield protocol. */\nexport const yieldProtocolSchema = z.enum(ALL_YIELD_PROTOCOLS);\n/** Use when only price-enabled protocols should be allowed. */\nexport const priceYieldProtocolSchema = z.enum(PRICE_YIELD_PROTOCOLS);\n/** Use to filter best-yield results by type. */\nexport const yieldTypeSchema = z.enum(['lending', 'vault', 'staking']).optional();\n/** Use for yield endpoints that filter by chain, token, or protocol. */\nexport const poolFilterParamsSchema = z.object({\n    chain: nonEmptyStringSchema.optional(),\n    protocol: yieldProtocolSchema.optional(),\n    pool: nonEmptyStringSchema.optional(),\n    blockHeight: z.number().int().nonnegative().optional(),\n}).strict().superRefine(({ protocol, pool }, context) => {\n    if (pool && protocol && addressPoolProtocolSet.has(protocol) && !addressSchema.safeParse(pool).success) {\n        context.addIssue({\n            code: 'custom',\n            path: ['pool'],\n            message: 'pool must be a valid EVM address for address-based protocols',\n        });\n    }\n});\n/** Use to request one pool price. */\nexport const getYieldsPriceParamsSchema = z.object({\n    chain: evmChainSlugSchema,\n    protocol: priceYieldProtocolSchema,\n    pool: nonEmptyStringSchema,\n    blockHeight: z.number().int().nonnegative().optional(),\n}).strict();\n/** Use to request ranked best-yield results. */\nexport const getYieldsBestParamsSchema = z.object({\n    token: nonEmptyStringSchema.optional(),\n    minTvl: numericLikeSchema.optional(),\n    limit: numericLikeSchema.optional(),\n    type: yieldTypeSchema,\n    blockHeight: z.number().int().nonnegative().optional(),\n}).strict();\n/** Use to request a wallet's pool balances. */\nexport const getYieldsBalanceParamsSchema = z.object({\n    chain: evmChainSlugSchema,\n    protocol: yieldProtocolSchema,\n    pool: nonEmptyStringSchema,\n    address: addressSchema,\n    blockHeight: z.number().int().nonnegative().optional(),\n}).strict();\n/** Use to request Pendle implied APY data. */\nexport const getYieldsPendleImpliedApyParamsSchema = z.object({\n    chain: evmChainSlugSchema,\n    pool: nonEmptyStringSchema,\n    address: addressSchema,\n    blockHeight: z.number().int().nonnegative().optional(),\n}).strict();\n/** Use to list Morpho vaults. */\nexport const getMorphoVaultsParamsSchema = z.object({\n    chain: evmChainSlugSchema,\n}).strict();\n/** Use to request detailed Morpho vault analytics. */\nexport const getMorphoVaultDataParamsSchema = z.object({\n    chain: evmChainSlugSchema,\n    vaults: z.array(addressSchema).min(1).max(50, 'Maximum 50 vaults per request'),\n}).strict();\n/** APY fields shared by yield responses. */\nexport const apyBreakdownSchema = z.object({\n    baseApy: z.number(),\n    extraApy: z.number(),\n    totalApy: z.number(),\n}).strict();\n/** APY fields used by ranked best-yield results. */\nexport const bestYieldApySchema = z.object({\n    totalApy: z.number(),\n    baseApy: z.number().optional(),\n    extraApy: z.number().optional(),\n}).strict();\n/** TVL fields shared by yield responses. */\nexport const tvlBreakdownSchema = z.object({\n    underlying: z.record(z.string(), z.number()),\n    totals: z.record(z.string(), z.number()),\n}).strict();\n/** One pool in a yield list response. */\nexport const yieldPoolDetailSchema = z.object({\n    chain: nonEmptyStringSchema,\n    pool: nonEmptyStringSchema.optional(),\n    protocol: nonEmptyStringSchema,\n    apy: apyBreakdownSchema.optional(),\n    tvl: tvlBreakdownSchema.optional(),\n    error: nonEmptyStringSchema.optional(),\n}).strict();\n/** Response shape for yield pool lists. */\nexport const yieldsDataSchema = z.object({\n    results: z.array(yieldPoolDetailSchema),\n    updatedAt: isoTimestampSchema,\n}).strict();\n/** One entry in the best-yields response. */\nexport const bestYieldEntrySchema = z.object({\n    rank: z.number().int().positive(),\n    chain: nonEmptyStringSchema,\n    protocol: nonEmptyStringSchema,\n    pool: nonEmptyStringSchema,\n    type: z.enum(['lending', 'vault', 'staking']),\n    apy: bestYieldApySchema,\n    tvl: z.object({ usd: z.number() }).strict().optional(),\n    error: nonEmptyStringSchema.optional(),\n}).strict();\n/** Response shape for ranked best-yield results. */\nexport const bestYieldsDataSchema = z.object({\n    results: z.array(bestYieldEntrySchema),\n    updatedAt: isoTimestampSchema,\n}).strict();\n/** One entry in a pool price response. */\nexport const poolPriceEntrySchema = z.object({\n    chain: nonEmptyStringSchema,\n    protocol: nonEmptyStringSchema,\n    pool: nonEmptyStringSchema,\n    price: z.object({ USD: z.number() }).strict().optional(),\n    error: nonEmptyStringSchema.optional(),\n}).strict();\n/** Response shape for pool prices. */\nexport const poolPriceDataSchema = z.object({\n    results: z.array(poolPriceEntrySchema),\n    updatedAt: isoTimestampSchema,\n}).strict();\n/** One entry in a pool balance response. */\nexport const poolBalanceEntrySchema = z.object({\n    chain: nonEmptyStringSchema,\n    protocol: nonEmptyStringSchema,\n    pool: nonEmptyStringSchema,\n    address: addressSchema,\n    balance: z.record(z.string(), z.number()).optional(),\n    error: nonEmptyStringSchema.optional(),\n}).strict();\n/** Response shape for pool balances. */\nexport const poolBalanceDataSchema = z.object({\n    results: z.array(poolBalanceEntrySchema),\n    updatedAt: isoTimestampSchema,\n}).strict();\n/** One entry in a Pendle implied APY response. */\n// All fields are optional because the handler's error paths return partial\n// objects (sometimes just { error }, sometimes { chain, pool, address, error }).\n// The success path returns user, pool, chain (as a stringified decimal chain id,\n// not a slug), address, and the APY math fields.\nexport const pendleImpliedApyEntrySchema = z.object({\n    user: nonEmptyStringSchema.optional(),\n    chain: nonEmptyStringSchema.optional(),\n    pool: nonEmptyStringSchema.optional(),\n    address: addressSchema.optional(),\n    effectivePtExchangeRate: z.number().optional(),\n    expiryDate: nonEmptyStringSchema.optional(),\n    daysToExpiry: z.number().nonnegative().optional(),\n    impliedApy: z.number().optional(),\n    error: nonEmptyStringSchema.optional(),\n}).strict();\n/** Response shape for Pendle implied APY data. */\nexport const pendleImpliedApyDataSchema = z.object({\n    results: z.array(pendleImpliedApyEntrySchema),\n    updatedAt: isoTimestampSchema,\n}).strict();\n/** One vault in a Morpho vault list. */\nexport const morphoVaultSchema = z.object({\n    address: addressSchema,\n    name: nonEmptyStringSchema,\n    symbol: nonEmptyStringSchema,\n    chainId: z.number().int().positive(),\n    chain: z.object({ id: z.number().int().positive(), network: nonEmptyStringSchema }).strict(),\n    version: z.enum(['v1', 'v2']).optional(),\n    whitelisted: z.boolean().optional(),\n    asset: z.object({\n        id: nonEmptyStringSchema,\n        address: addressSchema,\n        decimals: z.number().int().nonnegative(),\n    }).strict().optional(),\n}).strict();\n/** Response shape for Morpho vault lists. */\nexport const morphoVaultsDataSchema = z.object({\n    chain: evmChainSlugSchema,\n    count: z.number().int().nonnegative(),\n    vaults: z.array(morphoVaultSchema),\n}).strict();\n/** One vault in a Morpho vault analytics response. */\nconst morphoTotalAssetsSchema = z.union([nonEmptyStringSchema, z.number()]);\n// The handler spreads upstream Morpho GraphQL state objects directly, which\n// may include fields beyond the enumerated APY / TVL breakdowns. Catchall\n// tolerates those upstream-side additions without requiring a schema release.\nconst morphoVaultStateSchema = z.object({\n    totalAssets: morphoTotalAssetsSchema.optional(),\n    totalAssetsUsd: z.number().optional(),\n    totalSupply: nonEmptyStringSchema.optional(),\n    fee: z.number().optional(),\n    apy: z.number().optional(),\n    netApy: z.number().optional(),\n    avgApy: z.number().optional(),\n    avgNetApy: z.number().optional(),\n    dailyApy: z.number().optional(),\n    dailyNetApy: z.number().optional(),\n    weeklyApy: z.number().optional(),\n    weeklyNetApy: z.number().optional(),\n    monthlyApy: z.number().optional(),\n    monthlyNetApy: z.number().optional(),\n    quarterlyApy: z.number().optional(),\n    quarterlyNetApy: z.number().optional(),\n    yearlyApy: z.number().optional(),\n    yearlyNetApy: z.number().optional(),\n    allTimeApy: z.number().optional(),\n    allTimeNetApy: z.number().optional(),\n    netApyWithoutRewards: z.number().optional(),\n}).catchall(z.unknown());\nexport const morphoVaultDataItemSchema = z.object({\n    address: addressSchema,\n    name: nonEmptyStringSchema,\n    symbol: nonEmptyStringSchema,\n    chainId: z.number().int().positive(),\n    chain: z.object({ id: z.number().int().positive(), network: nonEmptyStringSchema }).strict().optional(),\n    state: morphoVaultStateSchema.optional(),\n    totalAssets: morphoTotalAssetsSchema,\n    totalAssetsUsd: z.number(),\n    totalSupply: nonEmptyStringSchema,\n    fee: z.number(),\n    apy: z.number(),\n    netApy: z.number(),\n    avgApy: z.number(),\n    avgNetApy: z.number(),\n    lastUpdated: isoTimestampSchema,\n    dailyApy: z.number().optional(),\n    dailyNetApy: z.number().optional(),\n    weeklyApy: z.number().optional(),\n    weeklyNetApy: z.number().optional(),\n    monthlyApy: z.number().optional(),\n    monthlyNetApy: z.number().optional(),\n    quarterlyApy: z.number().optional(),\n    quarterlyNetApy: z.number().optional(),\n    yearlyApy: z.number().optional(),\n    yearlyNetApy: z.number().optional(),\n    allTimeApy: z.number().optional(),\n    allTimeNetApy: z.number().optional(),\n    netApyWithoutRewards: z.number().optional(),\n    version: z.enum(['v1', 'v2']).optional(),\n    liquidity: nonEmptyStringSchema.optional(),\n    liquidityUsd: z.number().optional(),\n    idleAssetsUsd: z.number().optional(),\n    performanceFee: z.number().optional(),\n    managementFee: z.number().optional(),\n    maxRate: z.number().optional(),\n}).strict();\n/** Response shape for Morpho vault analytics. */\nexport const morphoVaultDataListSchema = z.object({\n    chain: evmChainSlugSchema,\n    count: z.number().int().nonnegative(),\n    vaults: z.array(morphoVaultDataItemSchema),\n}).strict();\n","import { z } from 'zod';\nimport { JSON_RPC_VERSION, MAX_JSON_RPC_BATCH_SIZE } from '../constants/json-rpc.js';\nexport const rpcIdSchema = z.union([z.string(), z.number(), z.null()]);\nexport const rpcRequestSchema = z.object({\n    method: z.string().min(1),\n    params: z.array(z.unknown()).optional(),\n    id: z.union([z.string(), z.number()]).optional(),\n}).strict();\nexport const rpcBatchRequestSchema = z\n    .array(rpcRequestSchema)\n    .min(1)\n    .max(MAX_JSON_RPC_BATCH_SIZE, `Maximum ${MAX_JSON_RPC_BATCH_SIZE} RPC requests per batch`);\nexport const rpcSuccessResponseSchema = z.object({\n    jsonrpc: z.literal(JSON_RPC_VERSION),\n    result: z.unknown(),\n    id: rpcIdSchema,\n}).strict();\nexport const rpcErrorResponseSchema = z.object({\n    jsonrpc: z.literal(JSON_RPC_VERSION),\n    error: z.object({\n        code: z.number().int(),\n        message: z.string().min(1),\n        data: z.unknown().optional(),\n    }).strict(),\n    id: rpcIdSchema,\n}).strict();\nexport const rpcResponseSchema = z.union([rpcSuccessResponseSchema, rpcErrorResponseSchema]);\nexport const rpcBatchResponseSchema = z.array(rpcResponseSchema);\n","import { z } from 'zod';\nimport { addressSchema, blockTagSchema } from './common.js';\n/** Use to validate ABI params. */\nexport const abiParamSchema = z.lazy(() => z.object({\n    name: z.string().optional(),\n    type: z.string().min(1),\n    components: z.array(abiParamSchema).optional(),\n    internalType: z.string().optional(),\n}).strict());\n/** Use to validate ABI entries for reads, sims, and multicalls. */\nexport const contractAbiFunctionSchema = z.object({\n    name: z.string().min(1),\n    type: z.enum(['function', 'constructor', 'receive', 'fallback', 'event', 'error']).optional(),\n    inputs: z.array(abiParamSchema).optional(),\n    outputs: z.array(abiParamSchema).optional(),\n    stateMutability: z.enum(['pure', 'view', 'nonpayable', 'payable']).optional(),\n}).strict();\n/** Use to validate full ABI inputs. */\nexport const contractAbiSchema = z.array(z.union([contractAbiFunctionSchema, z.string().min(1)]));\n/** Use to request one contract read. */\nexport const readContractParamsSchema = z.object({\n    address: addressSchema,\n    abi: contractAbiSchema,\n    functionName: z.string().min(1),\n    args: z.array(z.unknown()).optional(),\n    blockTag: blockTagSchema.optional(),\n}).strict();\n/** Use to request many contract reads in one call. */\nexport const multicallParamsSchema = z.object({\n    calls: z.array(readContractParamsSchema).min(1).max(50),\n}).strict();\n/** One result in a multicall response. */\nexport const multicallResultSchema = z.object({\n    status: z.enum(['success', 'error']),\n    result: z.unknown().optional(),\n    error: z.string().min(1).optional(),\n}).strict().refine((value) => (value.status === 'success' && value.result !== undefined) || (value.status === 'error' && value.error !== undefined), { message: 'Multicall results must include result for success or error for failure' });\n/** Response shape for multicalls. */\nexport const multicallDataSchema = z.array(multicallResultSchema);\n/** Use to simulate a contract call. */\nexport const simulateContractParamsSchema = readContractParamsSchema.extend({\n    from: addressSchema.optional(),\n    value: z.string().min(1).optional(),\n    gas: z.string().min(1).optional(),\n}).strict();\n/** Response shape for contract simulations. */\nexport const simulateContractResultSchema = z.object({\n    success: z.boolean(),\n    result: z.unknown().optional(),\n    error: z.string().min(1).optional(),\n    gasUsed: z.union([z.number().int().nonnegative(), z.string().regex(/^\\d+$/)]).optional(),\n}).strict().refine((value) => (value.success && value.error === undefined) || (!value.success && value.error !== undefined), { message: 'Simulate contract responses must include an error when unsuccessful' });\n/** Response shape for contract reads. */\nexport const contractReadResultSchema = z.unknown();\n","import { z } from 'zod';\nexport const solanaAddressSchema = z.string().regex(/^[1-9A-HJ-NP-Za-km-z]{32,44}$/, 'Expected a valid Solana base58 address');\n/** Use for Solana blockhashes — base58, same character set as addresses. */\nexport const solanaBlockhashSchema = z.string().regex(/^[1-9A-HJ-NP-Za-km-z]{32,44}$/, 'Expected a valid Solana base58 blockhash');\nexport const solanaCommitmentSchema = z.enum(['processed', 'confirmed', 'finalized']);\nexport const getSolanaBalanceParamsSchema = z.object({\n    address: solanaAddressSchema,\n}).strict();\nexport const getSolanaAccountInfoParamsSchema = z.object({\n    address: solanaAddressSchema,\n    encoding: z.enum(['base64', 'jsonParsed']).optional(),\n}).strict();\nexport const getSolanaTokenAccountsParamsSchema = z.object({\n    owner: solanaAddressSchema,\n    mint: solanaAddressSchema.optional(),\n    programId: solanaAddressSchema.optional(),\n}).strict();\nexport const getSolanaTransactionParamsSchema = z.object({\n    signature: z.string().min(1),\n}).strict();\nexport const getSolanaSignaturesParamsSchema = z.object({\n    address: solanaAddressSchema,\n    limit: z.number().int().positive().optional(),\n    before: z.string().min(1).optional(),\n    until: z.string().min(1).optional(),\n    commitment: solanaCommitmentSchema.optional(),\n}).strict();\nexport const getSolanaTokenSupplyParamsSchema = z.object({\n    mint: solanaAddressSchema,\n}).strict();\nexport const solanaAccountInfoSchema = z.object({\n    data: z.union([\n        z.tuple([z.string(), z.string()]),\n        z.object({ program: z.string().min(1), parsed: z.unknown() }).strict(),\n    ]),\n    executable: z.boolean(),\n    lamports: z.number().int().nonnegative(),\n    owner: solanaAddressSchema,\n    rentEpoch: z.number().int().nonnegative(),\n    space: z.number().int().nonnegative(),\n}).strict();\nexport const solanaBalanceDataSchema = z.object({\n    value: z.number().int().nonnegative(),\n}).strict();\nexport const solanaTokenAmountSchema = z.object({\n    amount: z.string().min(1),\n    decimals: z.number().int().nonnegative(),\n    uiAmount: z.union([z.number(), z.null()]),\n    uiAmountString: z.string().min(1),\n}).strict();\nexport const solanaTokenAccountSchema = z.object({\n    pubkey: solanaAddressSchema,\n    account: z.object({\n        data: z.object({\n            parsed: z.object({\n                info: z.object({\n                    mint: solanaAddressSchema,\n                    owner: solanaAddressSchema,\n                    tokenAmount: solanaTokenAmountSchema,\n                }).strict(),\n                type: z.string().min(1),\n            }).strict(),\n            program: z.string().min(1),\n            space: z.number().int().nonnegative(),\n        }).strict(),\n        executable: z.boolean(),\n        lamports: z.number().int().nonnegative(),\n        owner: solanaAddressSchema,\n        rentEpoch: z.number().int().nonnegative(),\n    }).strict(),\n}).strict();\nexport const solanaTokenAccountsDataSchema = z.object({\n    value: z.array(solanaTokenAccountSchema),\n}).strict();\nexport const solanaSignatureStatusSchema = z.object({\n    slot: z.number().int().nonnegative(),\n    confirmations: z.union([z.number().int().nonnegative(), z.null()]),\n    err: z.unknown(),\n    confirmationStatus: solanaCommitmentSchema,\n}).strict();\nexport const solanaTransactionDataSchema = z.object({\n    slot: z.number().int().nonnegative(),\n    blockTime: z.union([z.number().int(), z.null()]),\n    meta: z.union([\n        z.object({\n            err: z.unknown(),\n            fee: z.number().int().nonnegative(),\n            computeUnitsConsumed: z.number().int().nonnegative().optional(),\n            logMessages: z.array(z.string()).optional(),\n        }).strict(),\n        z.null(),\n    ]),\n    transaction: z.unknown(),\n}).strict();\nexport const solanaSignatureInfoSchema = z.object({\n    signature: z.string().min(1),\n    slot: z.number().int().nonnegative(),\n    err: z.unknown(),\n    memo: z.union([z.string(), z.null()]),\n    blockTime: z.union([z.number().int(), z.null()]),\n    confirmationStatus: z.string().min(1),\n}).strict();\nexport const solanaLatestBlockhashDataSchema = z.object({\n    blockhash: z.string().min(1),\n    lastValidBlockHeight: z.number().int().nonnegative(),\n}).strict();\nexport const solanaEpochInfoDataSchema = z.object({\n    epoch: z.number().int().nonnegative(),\n    slotIndex: z.number().int().nonnegative(),\n    slotsInEpoch: z.number().int().nonnegative(),\n    absoluteSlot: z.number().int().nonnegative(),\n    blockHeight: z.number().int().nonnegative(),\n}).strict();\nexport const solanaTokenSupplyDataSchema = solanaTokenAmountSchema;\n","import { z } from 'zod';\nimport { supportedChainSlugSchema } from './common.js';\nconst requiredStringSchema = z.string().min(1);\nexport const getProtocolsParamsSchema = z.object({\n    category: requiredStringSchema.optional(),\n    chain: requiredStringSchema.optional(),\n}).strict();\nexport const getRegistrySlugsParamsSchema = z.object({\n    category: requiredStringSchema.optional(),\n    chain: requiredStringSchema.optional(),\n}).strict();\nexport const registrySlugsDataSchema = z.array(requiredStringSchema);\nexport const getProtocolParamsSchema = z.object({\n    slug: requiredStringSchema,\n}).strict();\nexport const getRegistryContractsParamsSchema = z.object({\n    slug: requiredStringSchema,\n    chain: requiredStringSchema.optional(),\n}).strict();\nexport const getRegistryAddressParamsSchema = z.object({\n    slug: requiredStringSchema,\n    contract: requiredStringSchema,\n    chain: requiredStringSchema,\n}).strict();\nexport const registryCategorySchema = z.object({\n    name: requiredStringSchema,\n    slug: requiredStringSchema,\n}).strict();\nexport const registryChainSchema = z.object({\n    name: requiredStringSchema,\n    slug: supportedChainSlugSchema,\n}).strict();\nexport const protocolEntrySchema = z.object({\n    name: requiredStringSchema,\n    slug: requiredStringSchema,\n    url: requiredStringSchema,\n    category: requiredStringSchema,\n    description: requiredStringSchema,\n    version: requiredStringSchema.optional(),\n    chains: z.array(requiredStringSchema),\n}).strict();\nexport const protocolContractEntrySchema = z.object({\n    name: requiredStringSchema,\n    abi: requiredStringSchema.optional(),\n    address: requiredStringSchema.optional(),\n    addresses: z.record(z.string(), z.string()).optional(),\n}).strict();\nexport const protocolDetailSchema = protocolEntrySchema.extend({\n    contracts: z.record(z.string(), protocolContractEntrySchema),\n    hallmarks: z.array(z.tuple([requiredStringSchema, requiredStringSchema])).optional(),\n});\nexport const protocolContractsDataSchema = z.object({\n    protocol: requiredStringSchema,\n    chain: requiredStringSchema,\n    contracts: z.record(z.string(), protocolContractEntrySchema),\n}).strict();\nexport const protocolAddressDataSchema = z.object({\n    protocol: requiredStringSchema,\n    contract: requiredStringSchema,\n    chain: requiredStringSchema,\n    address: requiredStringSchema,\n}).strict();\n","import type { z } from 'zod';\nimport { ValidationError } from '../types/errors.js';\n\n/**\n * Parse `input` against an api-spec zod schema. On success returns the\n * validated/typed result. On failure converts the first ZodIssue into a\n * `ValidationError` with the issue's path as the field name.\n *\n * Single source of truth for input validation — reuses the same schemas\n * the server applies, so client-side validation can never drift from\n * server-side validation.\n */\nexport function parseParams<T>(schema: z.ZodType<T>, input: unknown): T {\n  const result = schema.safeParse(input);\n  if (!result.success) {\n    const issue = result.error.issues[0];\n    const field = issue.path.length > 0 ? issue.path.map(String).join('.') : 'params';\n    throw new ValidationError(field, issue.message);\n  }\n  return result.data;\n}\n\n/** Resolve an explicit chain or fall back to the configured default chain. */\nexport function resolveChain(chain?: string, defaultChain?: string): string {\n  const resolved = chain ?? defaultChain;\n  if (!resolved) {\n    throw new ValidationError('chain', 'No chain specified and no defaultChain configured');\n  }\n  return resolved;\n}\n","import type { HttpClient } from '../client.js';\nimport type { ChainRef } from '../internals/chain-ref.js';\nimport type { ChainSlug } from '../types/chains.js';\nimport { resolveChain } from '../internals/validation.js';\n\n/**\n * Base for namespaces whose methods accept an optional `chain` argument and\n * fall back to the SDK-wide default chain (`Spectrum.setChain` / config).\n *\n * Provides the shared `resolve()` helper so each namespace doesn't redeclare it.\n */\nexport abstract class ChainNamespace {\n  constructor(\n    protected readonly client: HttpClient,\n    protected readonly chainRef: ChainRef,\n  ) {}\n\n  protected resolve(chain?: ChainSlug): ChainSlug {\n    return resolveChain(chain, this.chainRef.current);\n  }\n}\n","import type { RequestOptions } from '../client.js';\nimport type { ChainSlug, EvmChainSlug, StarknetChainSlug } from '../types/chains.js';\nimport {\n  type BlockHeightData,\n  type GasComparisonData,\n  type BlockTransactionsData,\n  type GasEstimateData,\n  type BatchBlockResultsData,\n  type BatchTransactionResultsData,\n  type SimulateCallData,\n  type GetBlockByNumberParams,\n  type GetBlockByHashParams,\n  type GetTransactionByHashParams,\n  getBlockHeightParamsSchema,\n  compareGasParamsSchema,\n  getBlockTransactionsParamsSchema,\n  estimateGasParamsSchema,\n  getBlockByNumberParamsSchema,\n  getBlockByHashParamsSchema,\n  getTransactionByHashParamsSchema,\n  simulateCallParamsSchema,\n} from '@spectrum-nodes/api-spec/models';\nimport { parseParams } from '../internals/validation.js';\nimport { ChainNamespace } from './base.js';\n\n/** Block height and gas data */\nexport class CoreNamespace extends ChainNamespace {\n  /**\n   * Get the current block height for a chain.\n   */\n  async getBlockHeight(chain?: ChainSlug, options?: RequestOptions): Promise<BlockHeightData> {\n    const validated = parseParams(getBlockHeightParamsSchema, { chain: this.resolve(chain) });\n    return this.client.jsonRpc<BlockHeightData>('getBlockHeight', validated, options);\n  }\n\n  /**\n   * Get gas fee comparison across all EVM chains.\n   * Returns base fee, priority fee, and estimated USD cost per chain.\n   */\n  async getGasComparison(options?: RequestOptions): Promise<GasComparisonData> {\n    const validated = parseParams(compareGasParamsSchema, {});\n    return this.client.jsonRpc<GasComparisonData>('compareGas', validated, options);\n  }\n\n  /**\n   * Get all transactions in a specific block.\n   */\n  async getBlockTransactions(\n    chain: ChainSlug | undefined,\n    blockNumber: number,\n    options?: RequestOptions,\n  ): Promise<BlockTransactionsData> {\n    const validated = parseParams(getBlockTransactionsParamsSchema, {\n      chain: this.resolve(chain),\n      blockNumber,\n    });\n    return this.client.jsonRpc<BlockTransactionsData>('getBlockTransactions', validated, options);\n  }\n\n  /**\n   * Fetch one or more blocks by height across any supported chains in a single\n   * batch (max 50 items). Bitcoin is supported; its `block` field carries a\n   * Bitcoin block height (integer), and the response contains the full Bitcoin\n   * Core `getblock` payload — including a `confirmations` field that drifts\n   * over time as new tip blocks arrive.\n   */\n  async getBlockByNumber(\n    items: GetBlockByNumberParams,\n    options?: RequestOptions,\n  ): Promise<BatchBlockResultsData> {\n    const validated = parseParams(getBlockByNumberParamsSchema, items);\n    return this.client.jsonRpc<BatchBlockResultsData>('getBlockByNumber', validated, options);\n  }\n\n  /**\n   * Fetch one or more blocks by hash across any supported chains in a single\n   * batch (max 50 items). EVM and Solana chains use this method; Bitcoin's\n   * JSON-RPC handler accepts hashes too, but no test vector currently exercises\n   * it — Bitcoin block lookups generally go through `getBlockByNumber`.\n   */\n  async getBlockByHash(\n    items: GetBlockByHashParams,\n    options?: RequestOptions,\n  ): Promise<BatchBlockResultsData> {\n    const validated = parseParams(getBlockByHashParamsSchema, items);\n    return this.client.jsonRpc<BatchBlockResultsData>('getBlockByHash', validated, options);\n  }\n\n  /**\n   * Fetch one or more transactions by hash across any supported chains in a\n   * single batch (max 50 items). Same batch shape as `getBlockByHash` —\n   * pass an array of `{ chain, hash }` pairs.\n   */\n  async getTransactionByHash(\n    items: GetTransactionByHashParams,\n    options?: RequestOptions,\n  ): Promise<BatchTransactionResultsData> {\n    const validated = parseParams(getTransactionByHashParamsSchema, items);\n    return this.client.jsonRpc<BatchTransactionResultsData>(\n      'getTransactionByHash',\n      validated,\n      options,\n    );\n  }\n\n  /**\n   * Estimate gas (EVM) or fees (Starknet) for a transaction. EVM + Starknet.\n   */\n  async estimateGas(\n    chain: EvmChainSlug | StarknetChainSlug | undefined,\n    params: { to: string; from?: string; value?: string; data?: string },\n    options?: RequestOptions,\n  ): Promise<GasEstimateData> {\n    const validated = parseParams(estimateGasParamsSchema, {\n      chain: this.resolve(chain),\n      ...params,\n    });\n    return this.client.jsonRpc<GasEstimateData>('estimateGas', validated, options);\n  }\n\n  /**\n   * Simulate a read-only contract call without submitting a transaction.\n   *\n   * EVM chains return `{ chain, result }` (hex `eth_call` output). Starknet returns\n   * `{ chain, contractAddress, entryPointSelector, calldata, result }`, mapping `to` →\n   * contract address, `data` → entry-point selector, and `value` → a single calldata felt;\n   * for multi-felt calldata use `starknet.call(...)`. Other chain types are rejected by the server.\n   */\n  async simulateCall(\n    chain: EvmChainSlug | StarknetChainSlug | undefined,\n    params: {\n      to: string;\n      data: string;\n      from?: string;\n      value?: string;\n      block?: string;\n      blockHeight?: number;\n    },\n    options?: RequestOptions,\n  ): Promise<SimulateCallData> {\n    const validated = parseParams(simulateCallParamsSchema, {\n      chain: this.resolve(chain),\n      ...params,\n    });\n    return this.client.jsonRpc<SimulateCallData>('simulateCall', validated, options);\n  }\n}\n","import type { RequestOptions } from '../client.js';\nimport {\n  type BalanceData,\n  type TokenMetadataData,\n  type TokenAllowanceData,\n  getBalanceParamsSchema,\n  getTokenBalanceParamsSchema,\n  getTokenMetadataParamsSchema,\n  getTokenAllowanceParamsSchema,\n} from '@spectrum-nodes/api-spec/models';\nimport type { ChainSlug, EvmChainSlug, CosmosChainSlug, SolanaChainSlug } from '../types/chains.js';\nimport type { HistoricalQueryOptions } from '../types/client.js';\nimport { parseParams } from '../internals/validation.js';\nimport { splitHistoricalArgs } from '../internals/utils.js';\nimport { ChainNamespace } from './base.js';\n\n/** Token balances and metadata */\nexport class TokensNamespace extends ChainNamespace {\n  /**\n   * Get the native token balance for an address.\n   */\n  async getBalance(\n    chain: ChainSlug | undefined,\n    address: string,\n    paramsOrOptions?: HistoricalQueryOptions | RequestOptions,\n    options?: RequestOptions,\n  ): Promise<BalanceData> {\n    const { params, options: requestOptions } = splitHistoricalArgs(paramsOrOptions, options);\n    const validated = parseParams(getBalanceParamsSchema, {\n      chain: this.resolve(chain),\n      address,\n      blockHeight: params?.blockHeight,\n    });\n    return this.client.jsonRpc<BalanceData>('getBalance', validated, requestOptions);\n  }\n\n  /**\n   * Get a specific ERC-20/SPL token balance for an address.\n   */\n  async getTokenBalance(\n    chain: ChainSlug | undefined,\n    address: string,\n    token: string,\n    paramsOrOptions?: HistoricalQueryOptions | RequestOptions,\n    options?: RequestOptions,\n  ): Promise<BalanceData> {\n    const { params, options: requestOptions } = splitHistoricalArgs(paramsOrOptions, options);\n    const validated = parseParams(getTokenBalanceParamsSchema, {\n      chain: this.resolve(chain),\n      address,\n      token,\n      blockHeight: params?.blockHeight,\n    });\n    return this.client.jsonRpc<BalanceData>('getTokenBalance', validated, requestOptions);\n  }\n\n  /**\n   * Get token metadata. EVM chains return name/symbol/decimals/total supply; Cosmos\n   * chains return denom metadata (pass the denom as `tokenAddress`); Solana returns\n   * name/symbol/decimals/supply/uri from Metaplex or the Token-2022 extension.\n   */\n  async getMetadata(\n    chain: EvmChainSlug | CosmosChainSlug | SolanaChainSlug | undefined,\n    tokenAddress: string,\n    paramsOrOptions?: HistoricalQueryOptions | RequestOptions,\n    options?: RequestOptions,\n  ): Promise<TokenMetadataData> {\n    const { params, options: requestOptions } = splitHistoricalArgs(paramsOrOptions, options);\n    const validated = parseParams(getTokenMetadataParamsSchema, {\n      chain: this.resolve(chain),\n      address: tokenAddress,\n      blockHeight: params?.blockHeight,\n    });\n    return this.client.jsonRpc<TokenMetadataData>('getTokenMetadata', validated, {\n      ...requestOptions,\n      cacheTtl: requestOptions?.cacheTtl ?? 3600_000,\n    });\n  }\n\n\n  /** Get ERC-20 token allowance. EVM only. */\n  async getAllowance(\n    chain: EvmChainSlug | undefined,\n    tokenAddress: string,\n    params: { owner: string; spender: string; blockHeight?: number },\n    options?: RequestOptions,\n  ): Promise<TokenAllowanceData> {\n    const validated = parseParams(getTokenAllowanceParamsSchema, {\n      chain: this.resolve(chain),\n      address: tokenAddress,\n      owner: params.owner,\n      spender: params.spender,\n      blockHeight: params.blockHeight,\n    });\n    return this.client.jsonRpc<TokenAllowanceData>('getTokenAllowance', validated, options);\n  }\n}\n","import type { HttpClient, RequestOptions } from '../client.js';\nimport {\n  type YieldsData,\n  type PoolFilterParams,\n  type BestYieldsData,\n  type GetYieldsBalanceParams,\n  type GetYieldsPriceParams,\n  type GetYieldsPendleImpliedApyParams,\n  type PoolPriceData,\n  type PoolBalanceData,\n  type MorphoVaultsData,\n  type MorphoVaultDataList,\n  poolFilterParamsSchema,\n  getYieldsBestParamsSchema,\n  getYieldsBalanceParamsSchema,\n  getYieldsPriceParamsSchema,\n  getYieldsPendleImpliedApyParamsSchema,\n  getMorphoVaultsParamsSchema,\n  getMorphoVaultDataParamsSchema,\n} from '@spectrum-nodes/api-spec/models';\nimport type { StakingFilter, BestYieldsFilter } from '../types/index.js';\nimport { parseParams } from '../internals/validation.js';\n\n/** DeFi yield data — lending, vaults, staking, best yields */\nexport class YieldsNamespace {\n  constructor(private readonly client: HttpClient) {}\n\n  /**\n   * Get lending protocol yields (APY, TVL).\n   * Requires chain, protocol, and pool to be specified.\n   *\n   * Supported protocols: aave, compound, morpho, hyperlend\n   */\n  async getLending(filter?: PoolFilterParams, options?: RequestOptions): Promise<YieldsData> {\n    const validated = parseParams(poolFilterParamsSchema, {\n      chain: filter?.chain,\n      protocol: filter?.protocol,\n      pool: filter?.pool,\n      blockHeight: filter?.blockHeight,\n    });\n    return this.client.jsonRpc<YieldsData>('getYieldsLending', validated, options);\n  }\n\n  /**\n   * Get vault protocol yields (APY, TVL).\n   * Requires chain, protocol, and pool to be specified.\n   *\n   * Supported protocols: beefy, yearn, pendle, hyperliquid\n   */\n  async getVaults(filter?: PoolFilterParams, options?: RequestOptions): Promise<YieldsData> {\n    const validated = parseParams(poolFilterParamsSchema, {\n      chain: filter?.chain,\n      protocol: filter?.protocol,\n      pool: filter?.pool,\n      blockHeight: filter?.blockHeight,\n    });\n    return this.client.jsonRpc<YieldsData>('getYieldsVaults', validated, options);\n  }\n\n  /**\n   * Get staking yields across protocols and chains.\n   *\n   * Calls the `getYieldsBest` JSON-RPC method with `type=staking` for\n   * server-side filtering. Chain filtering is applied client-side after fetch.\n   *\n   * Sources: Lido, Rocket Pool, Jito, Marinade, BlazeStake\n   */\n  async getStaking(filter?: StakingFilter, options?: RequestOptions): Promise<BestYieldsData> {\n    const validated = parseParams(getYieldsBestParamsSchema, {\n      token: filter?.token,\n      type: 'staking',\n      limit: filter?.limit ?? 100,\n      blockHeight: filter?.blockHeight,\n    });\n    const result = await this.client.jsonRpc<BestYieldsData>('getYieldsBest', validated, options);\n\n    if (filter?.chain && Array.isArray(result.results)) {\n      return {\n        ...result,\n        results: result.results.filter((entry) => entry.chain === filter.chain),\n      };\n    }\n\n    return result;\n  }\n\n  /**\n   * Get the best yields across lending, vaults, and staking.\n   * Returns a ranked list sorted by total APY.\n   */\n  async getBest(filter?: BestYieldsFilter, options?: RequestOptions): Promise<BestYieldsData> {\n    const validated = parseParams(getYieldsBestParamsSchema, {\n      token: filter?.token,\n      minTvl: filter?.minTvl,\n      limit: filter?.limit,\n      type: filter?.type === 'all' ? undefined : filter?.type,\n      blockHeight: filter?.blockHeight,\n    });\n    return this.client.jsonRpc<BestYieldsData>('getYieldsBest', validated, options);\n  }\n\n  /**\n   * Get user balance in a specific yield pool.\n   * Requires chain, protocol, pool, and address.\n   */\n  async getBalance(\n    filter: GetYieldsBalanceParams,\n    options?: RequestOptions,\n  ): Promise<PoolBalanceData> {\n    const validated = parseParams(getYieldsBalanceParamsSchema, {\n      chain: filter.chain,\n      protocol: filter.protocol,\n      pool: filter.pool,\n      address: filter.address,\n      blockHeight: filter.blockHeight,\n    });\n    return this.client.jsonRpc<PoolBalanceData>('getYieldsBalance', validated, options);\n  }\n\n  /**\n   * Get pool price for a yield protocol.\n   * Supported protocols: aave, morpho, pendle, midas.\n   */\n  async getPrice(filter: GetYieldsPriceParams, options?: RequestOptions): Promise<PoolPriceData> {\n    const validated = parseParams(getYieldsPriceParamsSchema, {\n      chain: filter.chain,\n      protocol: filter.protocol,\n      pool: filter.pool,\n      blockHeight: filter.blockHeight,\n    });\n    return this.client.jsonRpc<PoolPriceData>('getYieldsPrice', validated, options);\n  }\n\n  /**\n   * Get Pendle implied APY for a user's position.\n   * Requires chain, pool, and address.\n   */\n  async getPendleImpliedApy(\n    filter: GetYieldsPendleImpliedApyParams,\n    options?: RequestOptions,\n  ): Promise<YieldsData> {\n    const validated = parseParams(getYieldsPendleImpliedApyParamsSchema, {\n      chain: filter.chain,\n      pool: filter.pool,\n      address: filter.address,\n      blockHeight: filter.blockHeight,\n    });\n    return this.client.jsonRpc<YieldsData>('getYieldsPendleImpliedApy', validated, options);\n  }\n\n  /**\n   * List all available Morpho vaults on a chain.\n   */\n  async getMorphoVaults(chain: string, options?: RequestOptions): Promise<MorphoVaultsData> {\n    const validated = parseParams(getMorphoVaultsParamsSchema, { chain });\n    return this.client.jsonRpc<MorphoVaultsData>('getMorphoVaults', validated, options);\n  }\n\n  /**\n   * Get detailed data for specific Morpho vaults (APY, TVL, fees, rewards).\n   * Maximum 50 vaults per request.\n   */\n  async getMorphoVaultData(\n    chain: string,\n    vaults: string[],\n    options?: RequestOptions,\n  ): Promise<MorphoVaultDataList> {\n    const validated = parseParams(getMorphoVaultDataParamsSchema, { chain, vaults });\n    return this.client.jsonRpc<MorphoVaultDataList>('getMorphoVaultData', validated, options);\n  }\n}\n","import type { HttpClient, RequestOptions } from '../client.js';\nimport type { HealthResponse } from '../types/index.js';\n\n/** Utility and infrastructure methods */\nexport class UtilsNamespace {\n  constructor(private readonly client: HttpClient) {}\n\n  /**\n   * Check API health status.\n   */\n  async health(options?: RequestOptions): Promise<HealthResponse> {\n    return this.client.jsonRpc<HealthResponse>('getHealth', {}, { ...options, cacheTtl: 0 });\n  }\n}\n","import type { HttpClient, RequestOptions } from '../client.js';\nimport {\n  type PriceData,\n  type PriceHistoryData,\n  type TopPricesData,\n  type TokenSearchData,\n  type TokenAddressesData,\n  getPriceParamsSchema,\n  getPriceHistoryParamsSchema,\n  getTopPricesParamsSchema,\n  searchTokensParamsSchema,\n  getTokenAddressesParamsSchema,\n} from '@spectrum-nodes/api-spec/models';\nimport { parseParams } from '../internals/validation.js';\n\n/** Token prices, price history, and token discovery */\nexport class PricesNamespace {\n  constructor(private readonly client: HttpClient) {}\n\n  /** Get current price for a token symbol. */\n  async getPrice(symbol: string, options?: RequestOptions): Promise<PriceData> {\n    const validated = parseParams(getPriceParamsSchema, { symbol });\n    return this.client.jsonRpc<PriceData>('getPrice', validated, options);\n  }\n\n  /** Get price history for a token symbol. */\n  async getPriceHistory(\n    symbol: string,\n    params?: { days?: number; currency?: string },\n    options?: RequestOptions,\n  ): Promise<PriceHistoryData> {\n    const validated = parseParams(getPriceHistoryParamsSchema, {\n      symbol,\n      days: params?.days,\n      currency: params?.currency,\n    });\n    return this.client.jsonRpc<PriceHistoryData>('getPriceHistory', validated, options);\n  }\n\n  /** Get top tokens by market cap. */\n  async getTopPrices(\n    params?: { limit?: number; currency?: string },\n    options?: RequestOptions,\n  ): Promise<TopPricesData> {\n    const validated = parseParams(getTopPricesParamsSchema, {\n      limit: params?.limit,\n      currency: params?.currency,\n    });\n    return this.client.jsonRpc<TopPricesData>('getTopPrices', validated, options);\n  }\n\n  /** Search for tokens by name or symbol. */\n  async searchTokens(\n    query: string,\n    params?: { limit?: number },\n    options?: RequestOptions,\n  ): Promise<TokenSearchData> {\n    const validated = parseParams(searchTokensParamsSchema, { q: query, limit: params?.limit });\n    return this.client.jsonRpc<TokenSearchData>('searchTokens', validated, options);\n  }\n\n  /** Get known contract addresses for a token symbol across chains. */\n  async getTokenAddresses(symbol: string, options?: RequestOptions): Promise<TokenAddressesData> {\n    const validated = parseParams(getTokenAddressesParamsSchema, { symbol });\n    return this.client.jsonRpc<TokenAddressesData>('getTokenAddresses', validated, options);\n  }\n}\n","import type { RequestOptions } from '../client.js';\nimport type { ChainSlug } from '../types/chains.js';\nimport type { HistoricalQueryOptions } from '../types/client.js';\nimport {\n  type SwapQuoteData,\n  type GetJupiterQuoteParams,\n  type GetJupiterPriceParams,\n  type JupiterQuoteData,\n  type JupiterPriceData,\n  type CurvePoolsData,\n  type CurveLlamaLendMarketsData,\n  type ApprovalsData,\n  type FundingRatesData,\n  type HyperliquidFundingData,\n  type DydxFundingData,\n  type AvantisVaultPriceData,\n  chainParamsSchema,\n  chainAddressParamsSchema,\n  getUniswapV2QuoteParamsSchema,\n  getUniswapV3QuoteParamsSchema,\n  getUniswapV4QuoteParamsSchema,\n  getJupiterQuoteParamsSchema,\n  getJupiterPriceParamsSchema,\n  getAvantisPriceParamsSchema,\n  getPendleV2InfoParamsSchema,\n  getApprovalsRevokeParamsSchema,\n  getFundingRatesParamsSchema,\n  getHyperliquidFundingParamsSchema,\n  getDydxFundingParamsSchema,\n} from '@spectrum-nodes/api-spec/models';\nimport type {\n  UniswapQuoteParams,\n  UniswapV4QuoteParams,\n  ProtocolPositionResult,\n  PendleInfoResult,\n  DefiSummaryResult,\n  RevokeTxResult,\n  DefiProtocolSlug,\n  AvantisVaultParams,\n} from '../types/index.js';\nimport { DEFI_POSITION_METHOD_BY_SLUG } from '@spectrum-nodes/api-spec/constants';\nimport { ValidationError } from '../types/errors.js';\nimport { parseParams } from '../internals/validation.js';\nimport { splitHistoricalArgs } from '../internals/utils.js';\nimport { ChainNamespace } from './base.js';\n\n/** DeFi protocol interactions — swaps, positions, approvals, funding rates */\nexport class DefiNamespace extends ChainNamespace {\n  private getPositionMethod(protocol: DefiProtocolSlug): string {\n    const method = (DEFI_POSITION_METHOD_BY_SLUG as Record<string, string>)[protocol];\n    if (!method) {\n      throw new ValidationError('protocol', `Unsupported protocol: ${protocol}`);\n    }\n    return method;\n  }\n\n  // --- Swap quotes ---\n\n  /** Get a Uniswap V3 swap quote. */\n  async getUniswapV3Quote(\n    chain: ChainSlug | undefined,\n    params: UniswapQuoteParams,\n    options?: RequestOptions,\n  ): Promise<SwapQuoteData> {\n    const validated = parseParams(getUniswapV3QuoteParamsSchema, {\n      chain: this.resolve(chain),\n      tokenIn: params.tokenIn,\n      tokenOut: params.tokenOut,\n      amount: params.amount,\n      fee: params.fee,\n      blockHeight: params.blockHeight,\n    });\n    return this.client.jsonRpc<SwapQuoteData>('getUniswapV3Quote', validated, options);\n  }\n\n  /** Get a Uniswap V2 swap quote. */\n  async getUniswapV2Quote(\n    chain: ChainSlug | undefined,\n    params: Omit<UniswapQuoteParams, 'fee'>,\n    options?: RequestOptions,\n  ): Promise<SwapQuoteData> {\n    const validated = parseParams(getUniswapV2QuoteParamsSchema, {\n      chain: this.resolve(chain),\n      tokenIn: params.tokenIn,\n      tokenOut: params.tokenOut,\n      amount: params.amount,\n      blockHeight: params.blockHeight,\n    });\n    return this.client.jsonRpc<SwapQuoteData>('getUniswapV2Quote', validated, options);\n  }\n\n  /** Get a Uniswap V4 swap quote. */\n  async getUniswapV4Quote(\n    chain: ChainSlug | undefined,\n    params: UniswapV4QuoteParams,\n    options?: RequestOptions,\n  ): Promise<SwapQuoteData> {\n    const validated = parseParams(getUniswapV4QuoteParamsSchema, {\n      chain: this.resolve(chain),\n      tokenIn: params.tokenIn,\n      tokenOut: params.tokenOut,\n      amount: params.amount,\n      fee: params.fee,\n      tickSpacing: params.tickSpacing,\n      blockHeight: params.blockHeight,\n    });\n    return this.client.jsonRpc<SwapQuoteData>('getUniswapV4Quote', validated, options);\n  }\n\n  /** Get a Jupiter swap quote (Solana only). */\n  async getJupiterQuote(\n    params: GetJupiterQuoteParams,\n    options?: RequestOptions,\n  ): Promise<JupiterQuoteData> {\n    const validated = parseParams(getJupiterQuoteParamsSchema, {\n      inputMint: params.inputMint,\n      outputMint: params.outputMint,\n      amount: params.amount,\n      slippageBps: params.slippageBps,\n    });\n    return this.client.jsonRpc<JupiterQuoteData>('getJupiterQuote', validated, options);\n  }\n\n  /** Get Jupiter price (Solana only). */\n  async getJupiterPrice(\n    params: GetJupiterPriceParams,\n    options?: RequestOptions,\n  ): Promise<JupiterPriceData> {\n    const validated = parseParams(getJupiterPriceParamsSchema, {\n      inputMint: params.inputMint,\n      outputMint: params.outputMint,\n    });\n    return this.client.jsonRpc<JupiterPriceData>('getJupiterPrice', validated, options);\n  }\n\n  // --- Protocol positions ---\n\n  /** Get a user's position in a specific DeFi protocol. */\n  async getPosition(\n    chain: ChainSlug | undefined,\n    protocol: DefiProtocolSlug,\n    address: string,\n    paramsOrOptions?: HistoricalQueryOptions | RequestOptions,\n    options?: RequestOptions,\n  ): Promise<ProtocolPositionResult> {\n    const { params, options: requestOptions } = splitHistoricalArgs(paramsOrOptions, options);\n    const method = this.getPositionMethod(protocol);\n    const validated = parseParams(chainAddressParamsSchema, {\n      chain: this.resolve(chain),\n      address,\n      blockHeight: params?.blockHeight,\n    });\n    return this.client.jsonRpc<ProtocolPositionResult>(method, validated, requestOptions);\n  }\n\n  // --- Curve ---\n\n  /** Get Curve pools for a chain. */\n  async getCurvePools(chain?: ChainSlug, options?: RequestOptions): Promise<CurvePoolsData> {\n    const validated = parseParams(chainParamsSchema, { chain: this.resolve(chain) });\n    return this.client.jsonRpc<CurvePoolsData>('getCurvePools', validated, options);\n  }\n\n  /** Get Curve LlamaLend markets. */\n  async getCurveLlamaLendMarkets(\n    chain?: ChainSlug,\n    params?: HistoricalQueryOptions,\n    options?: RequestOptions,\n  ): Promise<CurveLlamaLendMarketsData> {\n    const validated = parseParams(chainParamsSchema, {\n      chain: this.resolve(chain),\n      blockHeight: params?.blockHeight,\n    });\n    return this.client.jsonRpc<CurveLlamaLendMarketsData>(\n      'getCurveLlamaLendMarkets',\n      validated,\n      options,\n    );\n  }\n\n  /** Get Curve LlamaLend positions for an address. */\n  async getCurveLlamaLendPosition(\n    chain: ChainSlug | undefined,\n    address: string,\n    params?: HistoricalQueryOptions,\n    options?: RequestOptions,\n  ): Promise<ProtocolPositionResult> {\n    const validated = parseParams(chainAddressParamsSchema, {\n      chain: this.resolve(chain),\n      address,\n      blockHeight: params?.blockHeight,\n    });\n    return this.client.jsonRpc<ProtocolPositionResult>('getCurveLlamaLend', validated, options);\n  }\n\n  // --- Avantis ---\n\n  /**\n   * Get Avantis vault deposit and redemption prices.\n   * Returns both the gross share value (deposit) and net after fees (redemption).\n   */\n  async getAvantisPrice(\n    chain: ChainSlug | undefined,\n    params: AvantisVaultParams,\n    options?: RequestOptions,\n  ): Promise<AvantisVaultPriceData> {\n    const validated = parseParams(getAvantisPriceParamsSchema, {\n      chain: this.resolve(chain),\n      vault: params.vault,\n    });\n    return this.client.jsonRpc<AvantisVaultPriceData>('getAvantisPrice', validated, options);\n  }\n\n  // --- Pendle ---\n\n  /** Get Pendle V2 info for a chain. */\n  async getPendleInfo(chain?: ChainSlug, options?: RequestOptions): Promise<PendleInfoResult> {\n    const validated = parseParams(getPendleV2InfoParamsSchema, { chain: this.resolve(chain) });\n    return this.client.jsonRpc<PendleInfoResult>('getPendleV2Info', validated, options);\n  }\n\n  // --- Cross-protocol ---\n\n  /** Get DeFi summary for an address across all protocols on a chain. */\n  async getSummary(\n    chain: ChainSlug | undefined,\n    address: string,\n    options?: RequestOptions,\n  ): Promise<DefiSummaryResult> {\n    const validated = parseParams(chainAddressParamsSchema, {\n      chain: this.resolve(chain),\n      address,\n    });\n    return this.client.jsonRpc<DefiSummaryResult>('getDefiSummary', validated, options);\n  }\n\n  /** Get all token approvals for an address. */\n  async getApprovals(\n    chain: ChainSlug | undefined,\n    address: string,\n    paramsOrOptions?: HistoricalQueryOptions | RequestOptions,\n    options?: RequestOptions,\n  ): Promise<ApprovalsData> {\n    const { params, options: requestOptions } = splitHistoricalArgs(paramsOrOptions, options);\n    const validated = parseParams(chainAddressParamsSchema, {\n      chain: this.resolve(chain),\n      address,\n      blockHeight: params?.blockHeight,\n    });\n    return this.client.jsonRpc<ApprovalsData>('getApprovals', validated, requestOptions);\n  }\n\n  /** Get unsigned revoke transaction for a token approval. */\n  async getRevokeTransaction(\n    chain: ChainSlug | undefined,\n    address: string,\n    params: { token: string; spender: string },\n    options?: RequestOptions,\n  ): Promise<RevokeTxResult> {\n    const validated = parseParams(getApprovalsRevokeParamsSchema, {\n      chain: this.resolve(chain),\n      address,\n      token: params.token,\n      spender: params.spender,\n    });\n    return this.client.jsonRpc<RevokeTxResult>('getApprovalsRevoke', validated, options);\n  }\n\n  // --- Perps / Funding rates ---\n\n  /** Get funding rates across all perps protocols. */\n  /**\n   * Get the combined funding-rate overview across all perps providers.\n   *\n   * Returns the server's aggregate shape `{ hyperliquid, dydx, timestamp }` —\n   * one array per provider, not a flattened union. If you want a single flat\n   * list, splat in the caller: `[...res.hyperliquid, ...res.dydx]`.\n   */\n  async getAllFundingRates(options?: RequestOptions): Promise<FundingRatesData> {\n    const validated = parseParams(getFundingRatesParamsSchema, {});\n    return this.client.jsonRpc<FundingRatesData>('getFundingRates', validated, options);\n  }\n\n  /** Get Hyperliquid funding rate(s). */\n  async getHyperliquidFunding(\n    params?: { coin?: string },\n    options?: RequestOptions,\n  ): Promise<HyperliquidFundingData> {\n    const validated = parseParams(getHyperliquidFundingParamsSchema, { coin: params?.coin });\n    return this.client.jsonRpc<HyperliquidFundingData>('getHLFunding', validated, options);\n  }\n\n  /** Get dYdX funding rate(s). */\n  async getDydxFunding(\n    params?: { ticker?: string },\n    options?: RequestOptions,\n  ): Promise<DydxFundingData> {\n    const validated = parseParams(getDydxFundingParamsSchema, { ticker: params?.ticker });\n    return this.client.jsonRpc<DydxFundingData>('getDydxFunding', validated, options);\n  }\n}\n","import type { RequestOptions } from '../client.js';\nimport type { ChainSlug } from '../types/chains.js';\nimport type { HistoricalQueryOptions } from '../types/client.js';\nimport {\n  type NftTokenOwnerData,\n  getNftCollectionParamsSchema,\n  getNftBalanceParamsSchema,\n  getNftTokensParamsSchema,\n  getNftMetadataParamsSchema,\n  getNftTokenOwnerParamsSchema,\n  getNftErc1155BalanceParamsSchema,\n  getNftBatchBalanceParamsSchema,\n} from '@spectrum-nodes/api-spec/models';\nimport type {\n  NftCollectionResult,\n  NftBalanceResult,\n  NftTokensResult,\n  NftBatchBalanceResult,\n  NftTokenMetadataResult,\n} from '../types/index.js';\nimport { parseParams } from '../internals/validation.js';\nimport { splitHistoricalArgs } from '../internals/utils.js';\nimport { ChainNamespace } from './base.js';\n\n/** NFT collection data, balances, ownership, and metadata */\nexport class NftsNamespace extends ChainNamespace {\n  /** Get NFT collection info. */\n  async getCollection(\n    chain: ChainSlug | undefined,\n    contract: string,\n    paramsOrOptions?: HistoricalQueryOptions | RequestOptions,\n    options?: RequestOptions,\n  ): Promise<NftCollectionResult> {\n    const { params, options: requestOptions } = splitHistoricalArgs(paramsOrOptions, options);\n    const validated = parseParams(getNftCollectionParamsSchema, {\n      chain: this.resolve(chain),\n      contract,\n      blockHeight: params?.blockHeight,\n    });\n    return this.client.jsonRpc<NftCollectionResult>('getNftCollection', validated, requestOptions);\n  }\n\n  /** Get NFT balance (count) for an address. */\n  async getBalance(\n    chain: ChainSlug | undefined,\n    contract: string,\n    address: string,\n    paramsOrOptions?: HistoricalQueryOptions | RequestOptions,\n    options?: RequestOptions,\n  ): Promise<NftBalanceResult> {\n    const { params, options: requestOptions } = splitHistoricalArgs(paramsOrOptions, options);\n    const validated = parseParams(getNftBalanceParamsSchema, {\n      chain: this.resolve(chain),\n      contract,\n      address,\n      blockHeight: params?.blockHeight,\n    });\n    return this.client.jsonRpc<NftBalanceResult>('getNftBalance', validated, requestOptions);\n  }\n\n  /** Get token IDs owned by an address (ERC-721 Enumerable only). */\n  async getOwnedTokens(\n    chain: ChainSlug | undefined,\n    contract: string,\n    address: string,\n    paramsOrOptions?: HistoricalQueryOptions | RequestOptions,\n    options?: RequestOptions,\n  ): Promise<NftTokensResult> {\n    const { params, options: requestOptions } = splitHistoricalArgs(paramsOrOptions, options);\n    const validated = parseParams(getNftTokensParamsSchema, {\n      chain: this.resolve(chain),\n      contract,\n      address,\n      blockHeight: params?.blockHeight,\n    });\n    return this.client.jsonRpc<NftTokensResult>('getNftTokens', validated, requestOptions);\n  }\n\n  /** Batch balance query for ERC-1155 tokens. Max 100 pairs. */\n  async getBatchBalance(\n    chain: ChainSlug | undefined,\n    contract: string,\n    params: { addresses: string[]; tokenIds: string[] },\n    options?: RequestOptions,\n  ): Promise<NftBatchBalanceResult> {\n    const validated = parseParams(getNftBatchBalanceParamsSchema, {\n      chain: this.resolve(chain),\n      contract,\n      addresses: params.addresses,\n      tokenIds: params.tokenIds,\n    });\n    return this.client.jsonRpc<NftBatchBalanceResult>('getNftBatchBalance', validated, options);\n  }\n\n  /** Get ERC-1155 balance for a specific token ID. */\n  async getTokenBalance(\n    chain: ChainSlug | undefined,\n    contract: string,\n    address: string,\n    tokenId: string,\n    options?: RequestOptions,\n  ): Promise<NftBalanceResult> {\n    const validated = parseParams(getNftErc1155BalanceParamsSchema, {\n      chain: this.resolve(chain),\n      contract,\n      address,\n      tokenId,\n    });\n    return this.client.jsonRpc<NftBalanceResult>('getNftErc1155Balance', validated, options);\n  }\n\n  /** Get owner of a specific token ID. */\n  async getTokenOwner(\n    chain: ChainSlug | undefined,\n    contract: string,\n    tokenId: string,\n    options?: RequestOptions,\n  ): Promise<NftTokenOwnerData> {\n    const validated = parseParams(getNftTokenOwnerParamsSchema, {\n      chain: this.resolve(chain),\n      contract,\n      tokenId,\n    });\n    return this.client.jsonRpc<NftTokenOwnerData>('getNftTokenOwner', validated, options);\n  }\n\n  /** Get metadata for a specific token ID. */\n  async getTokenMetadata(\n    chain: ChainSlug | undefined,\n    contract: string,\n    tokenId: string,\n    paramsOrOptions?: HistoricalQueryOptions | RequestOptions,\n    options?: RequestOptions,\n  ): Promise<NftTokenMetadataResult> {\n    const { params, options: requestOptions } = splitHistoricalArgs(paramsOrOptions, options);\n    const validated = parseParams(getNftMetadataParamsSchema, {\n      chain: this.resolve(chain),\n      contract,\n      tokenId,\n      blockHeight: params?.blockHeight,\n    });\n    return this.client.jsonRpc<NftTokenMetadataResult>('getNftMetadata', validated, requestOptions);\n  }\n}\n","import type { HttpClient, RequestOptions } from '../client.js';\nimport {\n  type EnsResolveData,\n  type EnsReverseData,\n  resolveEnsParamsSchema,\n  reverseEnsParamsSchema,\n} from '@spectrum-nodes/api-spec/models';\nimport { parseParams } from '../internals/validation.js';\n\n/** ENS name resolution */\nexport class EnsNamespace {\n  constructor(private readonly client: HttpClient) {}\n\n  /** Resolve an ENS name to an address. */\n  async resolve(name: string, options?: RequestOptions): Promise<EnsResolveData> {\n    const validated = parseParams(resolveEnsParamsSchema, { name });\n    return this.client.jsonRpc<EnsResolveData>('resolveENS', validated, options);\n  }\n\n  /** Reverse lookup — get ENS name for an address. */\n  async reverse(address: string, options?: RequestOptions): Promise<EnsReverseData> {\n    const validated = parseParams(reverseEnsParamsSchema, { address });\n    return this.client.jsonRpc<EnsReverseData>('reverseENS', validated, options);\n  }\n}\n","import type { HttpClient, RequestOptions } from '../client.js';\nimport {\n  type ProtocolContractsData,\n  type ProtocolAddressData,\n  type RegistrySlugsData,\n  getProtocolsParamsSchema,\n  getProtocolParamsSchema,\n  getRegistryContractsParamsSchema,\n  getRegistryAddressParamsSchema,\n  getRegistrySlugsParamsSchema,\n} from '@spectrum-nodes/api-spec/models';\nimport type { ProtocolEntry } from '../types/index.js';\nimport { parseParams } from '../internals/validation.js';\n\n/** Protocol registry — protocols, contracts, chain metadata */\nexport class RegistryNamespace {\n  constructor(private readonly client: HttpClient) {}\n\n  /** List protocols, optionally filtered by category or chain. */\n  async getProtocols(\n    filter?: { category?: string; chain?: string },\n    options?: RequestOptions,\n  ): Promise<ProtocolEntry[]> {\n    const validated = parseParams(getProtocolsParamsSchema, {\n      category: filter?.category,\n      chain: filter?.chain,\n    });\n    return this.client.jsonRpc<ProtocolEntry[]>('getProtocols', validated, options);\n  }\n\n  /** Get full details for a protocol by slug. */\n  async getProtocol(slug: string, options?: RequestOptions): Promise<ProtocolEntry> {\n    const validated = parseParams(getProtocolParamsSchema, { slug });\n    return this.client.jsonRpc<ProtocolEntry>('getProtocol', validated, options);\n  }\n\n  async getRegistrySlugs(\n    filter?: { category?: string; chain?: string },\n    options?: RequestOptions,\n  ): Promise<RegistrySlugsData> {\n    const validated = parseParams(getRegistrySlugsParamsSchema, {\n      category: filter?.category,\n      chain: filter?.chain,\n    });\n    return this.client.jsonRpc<RegistrySlugsData>('getRegistrySlugs', validated, options);\n  }\n\n  /** Get contract ABIs and addresses for a protocol. */\n  async getProtocolContracts(\n    slug: string,\n    params?: { chain?: string },\n    options?: RequestOptions,\n  ): Promise<ProtocolContractsData> {\n    const validated = parseParams(getRegistryContractsParamsSchema, {\n      slug,\n      chain: params?.chain,\n    });\n    return this.client.jsonRpc<ProtocolContractsData>('getRegistryContracts', validated, options);\n  }\n\n  /** Resolve a specific contract address for a protocol on a chain. */\n  async getAddress(\n    slug: string,\n    contract: string,\n    chain: string,\n    options?: RequestOptions,\n  ): Promise<ProtocolAddressData> {\n    const validated = parseParams(getRegistryAddressParamsSchema, { slug, contract, chain });\n    return this.client.jsonRpc<ProtocolAddressData>('getRegistryAddress', validated, options);\n  }\n\n  /** Get all protocol categories. */\n  async getCategories(options?: RequestOptions): Promise<string[]> {\n    return this.client.jsonRpc<string[]>('getRegistryCategories', {}, options);\n  }\n\n  /** Get all supported chains. */\n  async getChains(options?: RequestOptions): Promise<unknown[]> {\n    return this.client.jsonRpc<unknown[]>('getRegistryChains', {}, options);\n  }\n}\n","import type { RequestOptions } from '../client.js';\nimport type { ChainSlug } from '../types/chains.js';\nimport {\n  type RpcRequest,\n  type RpcResponse,\n  rpcRequestSchema,\n  rpcBatchRequestSchema,\n} from '@spectrum-nodes/api-spec/models';\nimport { ValidationError, ApiError } from '../types/errors.js';\nimport { parseParams } from '../internals/validation.js';\nimport { ChainNamespace } from './base.js';\n\n/** Direct JSON-RPC proxy to chain nodes */\nexport class RpcNamespace extends ChainNamespace {\n  /**\n   * Send a raw JSON-RPC request to a chain's node.\n   * Proxies directly to the node — supports any standard JSON-RPC method\n   * (eth_*, trace_*, debug_*, net_*, web3_*, etc.)\n   */\n  async request(\n    chain: ChainSlug | undefined,\n    req: RpcRequest,\n    options?: RequestOptions,\n  ): Promise<RpcResponse> {\n    const resolvedChain = this.resolve(chain);\n    const validated = parseParams(rpcRequestSchema, req);\n\n    return this.client.rpcProxy(\n      resolvedChain,\n      { method: validated.method, params: validated.params ?? [], id: validated.id ?? 1 },\n      { ...options, cacheTtl: 0 },\n    ) as Promise<RpcResponse>;\n  }\n\n  /**\n   * Send a batch of JSON-RPC requests to a chain's node.\n   * Max size is enforced by the shared `MAX_JSON_RPC_BATCH_SIZE`.\n   */\n  async requestBatch(\n    chain: ChainSlug | undefined,\n    requests: RpcRequest[],\n    options?: RequestOptions,\n  ): Promise<RpcResponse[]> {\n    const resolvedChain = this.resolve(chain);\n    const validated = parseParams(rpcBatchRequestSchema, requests);\n\n    const finalRequests = validated.map((request, index) => ({\n      method: request.method,\n      params: request.params ?? [],\n      id: request.id ?? index + 1,\n    }));\n\n    const seenIds = new Set<unknown>();\n    for (const r of finalRequests) {\n      if (seenIds.has(r.id)) {\n        throw new ValidationError(\n          'requests',\n          `Duplicate id ${String(r.id)} in batch — ids must be unique`,\n        );\n      }\n      seenIds.add(r.id);\n    }\n\n    return this.client.rpcProxyBatch(resolvedChain, finalRequests, {\n      ...options,\n      cacheTtl: 0,\n    }) as Promise<RpcResponse[]>;\n  }\n\n  /**\n   * Shorthand: send a single RPC method and return just the result.\n   * Throws if the node returns an error.\n   */\n  async send<T = unknown>(\n    chain: ChainSlug | undefined,\n    method: string,\n    params?: unknown[],\n    options?: RequestOptions,\n  ): Promise<T> {\n    const response = await this.request(chain, { method, params }, options);\n\n    if ('error' in response && response.error) {\n      throw new ApiError(\n        `RPC error: ${response.error.message} (code: ${response.error.code})`,\n        502,\n        this.client.endpointUrl(),\n        response.error,\n      );\n    }\n\n    return (response as { result: T }).result;\n  }\n}\n","/**\n * ABI encoder/decoder powered by ethers.js.\n * Provides: encodeCall, decodeResult, parseHumanReadableAbi.\n *\n * Wraps ethers to (a) lowercase decoded addresses and (b) flatten ethers' Result\n * objects into plain JS arrays, so callers see consistent values.\n */\n\nimport { AbiCoder, Interface, FunctionFragment, type ParamType } from 'ethers';\nimport type { AbiParam } from '@spectrum-nodes/api-spec/models';\nimport { ValidationError } from '../types/errors.js';\n\n/** Internal normalized ABI function — api-spec's `ContractAbiFunction` has optional inputs/outputs. */\nexport interface AbiFunction {\n  name: string;\n  type?: 'function' | 'constructor' | 'receive' | 'fallback';\n  inputs: AbiParam[];\n  outputs: AbiParam[];\n  stateMutability?: string;\n}\n\n// --- Helpers ---\n\n/** Build canonical Solidity type string (tuple → (address,uint256)). */\nfunction canonicalType(param: AbiParam): string {\n  if (param.type === 'tuple' && param.components) {\n    return `(${param.components.map((c) => canonicalType(c)).join(',')})`;\n  }\n  if (param.type.startsWith('tuple[') && param.components) {\n    const suffix = param.type.slice(5);\n    return `(${param.components.map((c) => canonicalType(c)).join(',')})${suffix}`;\n  }\n  return param.type;\n}\n\n/** Convert AbiParam to ethers-compatible JSON ABI component. */\nfunction toJsonComponent(param: AbiParam): Record<string, unknown> {\n  const entry: Record<string, unknown> = {\n    type: param.type,\n    name: param.name ?? '',\n  };\n  if (param.components) {\n    entry.components = param.components.map(toJsonComponent);\n  }\n  return entry;\n}\n\n/** Convert AbiFunction to ethers-compatible JSON ABI entry. */\nfunction toJsonAbi(fn: AbiFunction): Record<string, unknown> {\n  return {\n    type: fn.type ?? 'function',\n    name: fn.name,\n    inputs: fn.inputs.map(toJsonComponent),\n    outputs: fn.outputs.map(toJsonComponent),\n    stateMutability: fn.stateMutability ?? 'nonpayable',\n  };\n}\n\n// --- Encoder ---\n\n/** ABI-encode a function call (0x + selector + encoded args). */\nexport function encodeCall(fn: AbiFunction, args: unknown[]): string {\n  const iface = new Interface([toJsonAbi(fn)]);\n  return iface.encodeFunctionData(fn.name, args);\n}\n\n// --- Decoder ---\n\n/** Normalize ethers Result values to plain JS types. */\nfunction normalizeDecoded(value: unknown, param: AbiParam): unknown {\n  /* v8 ignore start -- defensive nullish + rare tuple-as-bare-array path */\n  if (value === null || value === undefined) {\n    return value;\n  }\n  /* v8 ignore stop */\n\n  // Addresses → lowercase for consistency\n  if (param.type === 'address' && typeof value === 'string') {\n    return value.toLowerCase();\n  }\n\n  // Arrays\n  if (Array.isArray(value)) {\n    const arrayMatch = param.type.match(/^(.+?)(\\[\\d*\\])$/);\n    if (arrayMatch) {\n      const baseParam: AbiParam = { type: arrayMatch[1], components: param.components };\n      return value.map((v: unknown) => normalizeDecoded(v, baseParam));\n    }\n    // Tuple → plain array with normalized components\n    /* v8 ignore start -- ethers usually surfaces tuples via Result/arrayMatch paths */\n    if (param.type === 'tuple' && param.components) {\n      return param.components.map((c, i) => normalizeDecoded(value[i], c));\n    }\n    /* v8 ignore stop */\n  }\n\n  return value;\n}\n\n/** Decode ABI-encoded return data into an array of values. */\nexport function decodeResult(outputs: AbiParam[], data: string): unknown[] {\n  const hex = data.startsWith('0x') ? data : `0x${data}`;\n  if (hex.length <= 2) {\n    return [];\n  }\n\n  const types = outputs.map((o) => canonicalType(o));\n  const coder = AbiCoder.defaultAbiCoder();\n  const result = coder.decode(types, hex);\n\n  return outputs.map((output, i) => normalizeDecoded(result[i], output));\n}\n\n// --- Human-readable ABI parser ---\n\n/** Convert ethers ParamType back to our AbiParam format. */\nfunction fromParamType(pt: ParamType): AbiParam {\n  const result: AbiParam = { type: '' };\n\n  if (pt.arrayChildren) {\n    // Array type (dynamic or fixed)\n    const child = fromParamType(pt.arrayChildren);\n    const suffix = pt.arrayLength === -1 ? '[]' : `[${pt.arrayLength}]`;\n    if (child.type === 'tuple' && child.components) {\n      result.type = `tuple${suffix}`;\n      result.components = child.components;\n    } else {\n      result.type = child.type + suffix;\n    }\n  } else if (pt.components) {\n    // Tuple type\n    result.type = 'tuple';\n    result.components = pt.components.map((c) => fromParamType(c));\n  } else {\n    // Primitive type\n    result.type = pt.type;\n  }\n\n  if (pt.name) {\n    result.name = pt.name;\n  }\n\n  return result;\n}\n\n/**\n * Parse a human-readable ABI string into an AbiFunction.\n *\n * @example\n * parseHumanReadableAbi('function balanceOf(address owner) view returns (uint256)')\n */\nexport function parseHumanReadableAbi(sig: string): AbiFunction {\n  const trimmed = sig.trim();\n  if (!trimmed.match(/^function\\s+/)) {\n    throw new ValidationError('abi', `Cannot parse ABI signature: \"${sig}\"`);\n  }\n\n  let fragment: FunctionFragment;\n  try {\n    fragment = FunctionFragment.from(trimmed);\n  } catch {\n    throw new ValidationError('abi', `Cannot parse ABI signature: \"${sig}\"`);\n  }\n\n  const inputs = fragment.inputs.map((p) => fromParamType(p));\n  const outputs = fragment.outputs.map((p) => fromParamType(p));\n\n  return {\n    name: fragment.name,\n    type: 'function',\n    inputs,\n    outputs,\n    stateMutability: fragment.stateMutability,\n  };\n}\n","/**\n * Normalize a user-supplied block tag into the value `eth_call` /\n * `eth_estimateGas` expects: hex-encoded for numbers (`0x121eac0`),\n * passthrough for tag strings (`'latest'`, `'pending'`, `'earliest'`),\n * defaults to `'latest'` when omitted.\n */\nexport function normalizeBlockTag(tag: number | string | undefined): string {\n  if (tag === undefined) {\n    return 'latest';\n  }\n  return typeof tag === 'number' ? `0x${tag.toString(16)}` : tag;\n}\n","import type { RequestOptions } from '../client.js';\nimport type { ChainSlug, EvmChainSlug, StarknetChainSlug } from '../types/chains.js';\nimport type { HistoricalQueryOptions } from '../types/client.js';\nimport {\n  type ReadContractParams,\n  type SimulateContractParams,\n  type ContractAbiFunction,\n  type ContractCodeData,\n  readContractParamsSchema,\n  multicallParamsSchema,\n  simulateContractParamsSchema,\n  getCodeParamsSchema,\n} from '@spectrum-nodes/api-spec/models';\nimport type { MulticallResult, SimulateContractResult } from '../types/index.js';\nimport {\n  encodeCall,\n  decodeResult,\n  parseHumanReadableAbi,\n  type AbiFunction,\n} from '../internals/abi.js';\nimport { ValidationError, ApiError } from '../types/errors.js';\nimport { parseParams } from '../internals/validation.js';\nimport { splitHistoricalArgs } from '../internals/utils.js';\nimport { normalizeBlockTag } from '../internals/block-tag.js';\nimport { ChainNamespace } from './base.js';\n\n/**\n * `eth_call` / `eth_estimateGas` envelope returned via `rpcProxy`.\n *\n * This is a contracts-namespace narrowing of api-spec's `RpcResponse`\n * (which keeps `result` / `error.data` as `unknown` for the general\n * JSON-RPC case). Here we commit to the hex-string shape these specific\n * methods always return — `result` is the ABI-encoded hex output, and\n * `error.data` is hex-encoded revert data. `id` is only populated on\n * batch responses (single calls don't echo it back).\n */\ntype EthCallResponse = {\n  jsonrpc: string;\n  id?: number;\n  result?: string;\n  error?: { code: number; message: string; data?: string };\n};\n\n/** Smart contract read operations via RPC proxy */\nexport class ContractsNamespace extends ChainNamespace {\n  private async executeRpcBatch(\n    chain: string,\n    requests: Array<{ method: string; params: unknown[]; id: number }>,\n    options?: RequestOptions,\n  ): Promise<EthCallResponse[]> {\n    return this.client.rpcProxyBatch(chain, requests, { ...options, cacheTtl: 0 }) as Promise<\n      EthCallResponse[]\n    >;\n  }\n\n  /**\n   * Call a read-only (view/pure) function on a smart contract.\n   * ABI-encodes the call, sends eth_call via the RPC proxy, and decodes the result.\n   */\n  async readContract<T = unknown>(\n    chain: ChainSlug | undefined,\n    params: ReadContractParams,\n    options?: RequestOptions,\n  ): Promise<T> {\n    const resolvedChain = this.resolve(chain);\n    const validated = parseParams(readContractParamsSchema, params);\n\n    const fn = this.findFunction(validated.abi, validated.functionName);\n    const calldata = encodeCall(fn, validated.args ?? []);\n\n    const blockTag = normalizeBlockTag(validated.blockTag);\n\n    const response = (await this.client.rpcProxy(\n      resolvedChain,\n      { method: 'eth_call', params: [{ to: validated.address, data: calldata }, blockTag] },\n      { ...options, cacheTtl: 0 },\n    )) as EthCallResponse;\n\n    if (response.error) {\n      throw new ApiError(\n        `Contract call failed: ${response.error.message}`,\n        502,\n        this.client.endpointUrl(),\n        response.error,\n      );\n    }\n\n    if (!response.result || response.result === '0x') {\n      throw new ApiError(\n        'Contract call returned empty result (contract may not exist or function reverted)',\n        502,\n        this.client.endpointUrl(),\n      );\n    }\n\n    const decoded = decodeResult(fn.outputs, response.result);\n\n    if (fn.outputs.length === 1) {\n      return decoded[0] as T;\n    }\n    return decoded as T;\n  }\n\n  /**\n   * Execute multiple contract reads in a single batch RPC call.\n   */\n  async multicall(\n    chain: ChainSlug | undefined,\n    params: { calls: ReadContractParams[] },\n    options?: RequestOptions,\n  ): Promise<MulticallResult[]> {\n    const resolvedChain = this.resolve(chain);\n    const validated = parseParams(multicallParamsSchema, params);\n\n    const resolvedFns = validated.calls.map((call) =>\n      this.findFunction(call.abi, call.functionName),\n    );\n\n    const batchBody = validated.calls.map((call, i) => {\n      const calldata = encodeCall(resolvedFns[i], call.args ?? []);\n      const blockTag = normalizeBlockTag(call.blockTag);\n\n      return {\n        jsonrpc: '2.0' as const,\n        method: 'eth_call',\n        params: [{ to: call.address, data: calldata }, blockTag],\n        id: i + 1,\n      };\n    });\n\n    const responses = await this.executeRpcBatch(\n      resolvedChain,\n      batchBody.map((request) => ({\n        method: request.method,\n        params: request.params as unknown[],\n        id: request.id,\n      })),\n      options,\n    );\n\n    return validated.calls.map((_call, i) => {\n      const resp = responses.find((r) => r.id === i + 1);\n      if (!resp) {\n        return { status: 'error' as const, error: `No response for call ${i + 1}` };\n      }\n      if (resp.error) {\n        return { status: 'error' as const, error: resp.error.message };\n      }\n      if (!resp.result || resp.result === '0x') {\n        return { status: 'error' as const, error: 'Empty result' };\n      }\n      try {\n        const fn = resolvedFns[i];\n        const decoded = decodeResult(fn.outputs, resp.result);\n        const result = fn.outputs.length === 1 ? decoded[0] : decoded;\n        return { status: 'success' as const, result };\n      } catch (err) {\n        return { status: 'error' as const, error: (err as Error).message };\n      }\n    });\n  }\n\n  /**\n   * Simulate a contract write call without sending a transaction.\n   * Uses eth_call with full tx params to check if a write would succeed,\n   * and eth_estimateGas to estimate gas cost.\n   */\n  async simulateContract<T = unknown>(\n    chain: ChainSlug | undefined,\n    params: SimulateContractParams,\n    options?: RequestOptions,\n  ): Promise<SimulateContractResult<T>> {\n    const resolvedChain = this.resolve(chain);\n    const validated = parseParams(simulateContractParamsSchema, params);\n\n    const fn = this.findFunction(validated.abi, validated.functionName);\n    const calldata = encodeCall(fn, validated.args ?? []);\n\n    const blockTag = normalizeBlockTag(validated.blockTag);\n\n    const txObj: Record<string, string> = {\n      to: validated.address,\n      data: calldata,\n    };\n    if (validated.from) {\n      txObj.from = validated.from;\n    }\n    if (validated.value) {\n      txObj.value = validated.value;\n    }\n    if (validated.gas) {\n      txObj.gas = validated.gas;\n    }\n\n    const batchBody = [\n      { jsonrpc: '2.0', method: 'eth_call', params: [txObj, blockTag], id: 1 },\n      { jsonrpc: '2.0', method: 'eth_estimateGas', params: [txObj, blockTag], id: 2 },\n    ];\n\n    const responses = await this.executeRpcBatch(\n      resolvedChain,\n      batchBody.map((request) => ({\n        method: request.method,\n        params: request.params as unknown[],\n        id: request.id,\n      })),\n      options,\n    );\n\n    const callResponse = responses.find((r) => r.id === 1);\n    const gasResponse = responses.find((r) => r.id === 2);\n\n    if (!callResponse) {\n      throw new ApiError(\n        'simulateContract: missing eth_call response in batch reply',\n        502,\n        this.client.endpointUrl(),\n        responses,\n      );\n    }\n\n    if (callResponse.error) {\n      return {\n        success: false,\n        error: callResponse.error.data\n          ? `${callResponse.error.message} (data: ${callResponse.error.data})`\n          : callResponse.error.message,\n      };\n    }\n\n    let decoded: T | undefined;\n    if (callResponse.result && callResponse.result !== '0x' && fn.outputs.length > 0) {\n      const values = decodeResult(fn.outputs, callResponse.result);\n      decoded = (fn.outputs.length === 1 ? values[0] : values) as T;\n    }\n\n    let gasUsed: bigint | undefined;\n    if (gasResponse?.result) {\n      gasUsed = BigInt(gasResponse.result);\n    }\n\n    return {\n      success: true,\n      result: decoded,\n      gasUsed,\n    };\n  }\n\n  /**\n   * Check if an address is a contract and get its bytecode (Starknet: its class). EVM + Starknet.\n   */\n  async getCode(\n    chain: EvmChainSlug | StarknetChainSlug | undefined,\n    address: string,\n    paramsOrOptions?: HistoricalQueryOptions | RequestOptions,\n    options?: RequestOptions,\n  ): Promise<ContractCodeData> {\n    const { params, options: requestOptions } = splitHistoricalArgs(paramsOrOptions, options);\n    const validated = parseParams(getCodeParamsSchema, {\n      chain: this.resolve(chain),\n      address,\n      blockHeight: params?.blockHeight,\n    });\n    return this.client.jsonRpc<ContractCodeData>('getCode', validated, requestOptions);\n  }\n\n  private findFunction(abi: (ContractAbiFunction | string)[], functionName: string): AbiFunction {\n    for (const entry of abi) {\n      if (typeof entry === 'string') {\n        try {\n          const parsed = parseHumanReadableAbi(entry);\n          if (parsed.name === functionName) {\n            return parsed;\n          }\n        } catch {\n          // skip unparseable entries\n        }\n      } else if (\n        entry.name === functionName &&\n        (entry.type === 'function' || entry.type === undefined)\n      ) {\n        return {\n          name: entry.name,\n          inputs: entry.inputs ?? [],\n          outputs: entry.outputs ?? [],\n        };\n      }\n    }\n    throw new ValidationError('functionName', `Function \"${functionName}\" not found in ABI`);\n  }\n}\n","import type { HttpClient, RequestOptions } from '../client.js';\nimport {\n  type RpcResponse,\n  type SolanaAccountInfo,\n  type SolanaTransactionData,\n  type SolanaSignatureInfo,\n  getSolanaBalanceParamsSchema,\n  getSolanaAccountInfoParamsSchema,\n  getSolanaTokenAccountsParamsSchema,\n  getSolanaTransactionParamsSchema,\n  getSolanaSignaturesParamsSchema,\n  getSolanaTokenSupplyParamsSchema,\n  solanaBlockhashSchema,\n  rpcRequestSchema,\n} from '@spectrum-nodes/api-spec/models';\nimport { LAMPORTS_PER_SOL, SPL_TOKEN_PROGRAM_ID } from '@spectrum-nodes/api-spec/constants';\nimport { z } from 'zod';\nimport type { SolanaTokenAccountsResult, SignaturesFilter } from '../types/index.js';\nimport { ApiError } from '../types/errors.js';\nimport { parseParams } from '../internals/validation.js';\n\nconst blockhashWrapperSchema = z.object({ blockhash: solanaBlockhashSchema }).strict();\n\n/**\n * Solana-specific convenience methods.\n * All calls proxy through the Spectrum API JSON-RPC `rpcProxy` method.\n */\nexport class SolanaNamespace {\n  constructor(private readonly client: HttpClient) {}\n\n  // --- Convenience methods ---\n\n  /**\n   * Get the current slot (equivalent to block height).\n   */\n  async getSlot(options?: RequestOptions): Promise<number> {\n    return this.send<number>('getSlot', [], options);\n  }\n\n  /**\n   * Get the current block height.\n   */\n  async getBlockHeight(options?: RequestOptions): Promise<number> {\n    return this.send<number>('getBlockHeight', [], options);\n  }\n\n  /**\n   * Get SOL balance for an address in SOL (not lamports).\n   */\n  async getBalance(address: string, options?: RequestOptions): Promise<number> {\n    const validated = parseParams(getSolanaBalanceParamsSchema, { address });\n    const result = await this.send<{ value: number }>('getBalance', [validated.address], options);\n    return result.value / LAMPORTS_PER_SOL;\n  }\n\n  /**\n   * Get raw SOL balance in lamports.\n   */\n  async getBalanceLamports(address: string, options?: RequestOptions): Promise<number> {\n    const validated = parseParams(getSolanaBalanceParamsSchema, { address });\n    const result = await this.send<{ value: number }>('getBalance', [validated.address], options);\n    return result.value;\n  }\n\n  /**\n   * Get account info for a Solana address.\n   */\n  async getAccountInfo(\n    address: string,\n    encoding: 'base64' | 'jsonParsed' = 'jsonParsed',\n    options?: RequestOptions,\n  ): Promise<SolanaAccountInfo | null> {\n    const validated = parseParams(getSolanaAccountInfoParamsSchema, { address, encoding });\n    const result = await this.send<{ value: SolanaAccountInfo | null }>(\n      'getAccountInfo',\n      [validated.address, { encoding: validated.encoding }],\n      options,\n    );\n    return result.value;\n  }\n\n  /**\n   * Get all SPL token accounts for a wallet.\n   */\n  async getTokenAccountsByOwner(\n    owner: string,\n    opts?: { mint?: string; programId?: string },\n    options?: RequestOptions,\n  ): Promise<SolanaTokenAccountsResult['value']> {\n    const validated = parseParams(getSolanaTokenAccountsParamsSchema, {\n      owner,\n      mint: opts?.mint,\n      programId: opts?.mint ? undefined : (opts?.programId ?? SPL_TOKEN_PROGRAM_ID),\n    });\n    const filter = validated.mint ? { mint: validated.mint } : { programId: validated.programId };\n\n    const result = await this.send<SolanaTokenAccountsResult>(\n      'getTokenAccountsByOwner',\n      [validated.owner, filter, { encoding: 'jsonParsed' }],\n      options,\n    );\n    return result.value;\n  }\n\n  /**\n   * Get a confirmed transaction by signature.\n   */\n  async getTransaction(\n    signature: string,\n    options?: RequestOptions,\n  ): Promise<SolanaTransactionData | null> {\n    const validated = parseParams(getSolanaTransactionParamsSchema, { signature });\n    return this.send<SolanaTransactionData | null>(\n      'getTransaction',\n      [validated.signature, { encoding: 'jsonParsed', maxSupportedTransactionVersion: 0 }],\n      options,\n    );\n  }\n\n  /**\n   * Get recent transaction signatures for an address.\n   */\n  async getSignaturesForAddress(\n    address: string,\n    filter?: SignaturesFilter,\n    options?: RequestOptions,\n  ): Promise<SolanaSignatureInfo[]> {\n    const validated = parseParams(getSolanaSignaturesParamsSchema, {\n      address,\n      limit: filter?.limit,\n      before: filter?.before,\n      until: filter?.until,\n      commitment: filter?.commitment,\n    });\n    const { address: validAddress, ...rest } = validated;\n    const definedFilter = Object.fromEntries(\n      Object.entries(rest).filter(([, v]) => v !== undefined),\n    );\n    const params: unknown[] = [validAddress];\n    if (Object.keys(definedFilter).length > 0) {\n      params.push(definedFilter);\n    }\n    return this.send<SolanaSignatureInfo[]>('getSignaturesForAddress', params, options);\n  }\n\n  /**\n   * Get the latest blockhash.\n   */\n  async getLatestBlockhash(\n    options?: RequestOptions,\n  ): Promise<{ blockhash: string; lastValidBlockHeight: number }> {\n    const result = await this.send<{ value: { blockhash: string; lastValidBlockHeight: number } }>(\n      'getLatestBlockhash',\n      [],\n      options,\n    );\n    return result.value;\n  }\n\n  /**\n   * Get minimum balance required for rent exemption.\n   */\n  async getMinimumBalanceForRentExemption(\n    dataSize: number,\n    options?: RequestOptions,\n  ): Promise<number> {\n    return this.send<number>('getMinimumBalanceForRentExemption', [dataSize], options);\n  }\n\n  /**\n   * Check if a blockhash is still valid.\n   */\n  async isBlockhashValid(blockhash: string, options?: RequestOptions): Promise<boolean> {\n    const validated = parseParams(blockhashWrapperSchema, { blockhash });\n    const result = await this.send<{ value: boolean }>(\n      'isBlockhashValid',\n      [validated.blockhash],\n      options,\n    );\n    return result.value;\n  }\n\n  /**\n   * Get the current epoch info.\n   */\n  async getEpochInfo(options?: RequestOptions): Promise<{\n    epoch: number;\n    slotIndex: number;\n    slotsInEpoch: number;\n    absoluteSlot: number;\n    blockHeight: number;\n  }> {\n    return this.send('getEpochInfo', [], options);\n  }\n\n  /**\n   * Get token supply for an SPL token mint.\n   */\n  async getTokenSupply(\n    mint: string,\n    options?: RequestOptions,\n  ): Promise<{ amount: string; decimals: number; uiAmount: number; uiAmountString: string }> {\n    const validated = parseParams(getSolanaTokenSupplyParamsSchema, { mint });\n    const result = await this.send<{\n      value: { amount: string; decimals: number; uiAmount: number; uiAmountString: string };\n    }>('getTokenSupply', [validated.mint], options);\n    return result.value;\n  }\n\n  // --- Raw RPC access ---\n\n  /**\n   * Send any Solana JSON-RPC method directly.\n   */\n  async request(\n    req: { method: string; params?: unknown[] },\n    options?: RequestOptions,\n  ): Promise<RpcResponse> {\n    const validated = parseParams(rpcRequestSchema, { method: req.method, params: req.params });\n    return this.client.rpcProxy(\n      'solana',\n      { method: validated.method, params: validated.params ?? [], id: 1 },\n      { ...options, cacheTtl: 0 },\n    ) as Promise<RpcResponse>;\n  }\n\n  // --- Internal helpers ---\n\n  private async send<T>(method: string, params: unknown[], options?: RequestOptions): Promise<T> {\n    const response = (await this.client.rpcProxy(\n      'solana',\n      { method, params, id: 1 },\n      { ...options, cacheTtl: 0 },\n    )) as RpcResponse;\n\n    if ('error' in response && response.error) {\n      const err = response.error as { code: number; message: string };\n      throw new ApiError(\n        `Solana RPC error: ${err.message} (code: ${err.code})`,\n        502,\n        this.client.endpointUrl(),\n        response.error,\n      );\n    }\n\n    return (response as { result: T }).result;\n  }\n}\n","import type { RequestOptions } from '../client.js';\nimport {\n  type CosmosAccountData,\n  type CosmosDelegationsData,\n  type CosmosUnbondingDelegationsData,\n  type CosmosStakingRewardsData,\n  type CosmosValidatorsData,\n  type CosmosValidatorData,\n  type CosmosStakingPoolData,\n  type CosmosBlockResultsData,\n  type DenomSupplyData,\n  getAccountParamsSchema,\n  getDelegationsParamsSchema,\n  getUnbondingDelegationsParamsSchema,\n  getStakingRewardsParamsSchema,\n  getValidatorsParamsSchema,\n  getValidatorParamsSchema,\n  getStakingPoolParamsSchema,\n  getBlockResultsParamsSchema,\n  getDenomSupplyParamsSchema,\n} from '@spectrum-nodes/api-spec/models';\nimport type { CosmosChainSlug } from '../types/chains.js';\nimport { parseParams } from '../internals/validation.js';\nimport { ChainNamespace } from './base.js';\n\n// Cosmos SDK chain convenience methods, to interact with the Cosmos methods from the API.\nexport class CosmosNamespace extends ChainNamespace {\n  // Auth account info (account number, sequence, pubkey) for a bech32 address.\n  async getAccount(\n    chain: CosmosChainSlug | undefined,\n    address: string,\n    options?: RequestOptions,\n  ): Promise<CosmosAccountData> {\n    const validated = parseParams(getAccountParamsSchema, { chain: this.resolve(chain), address });\n    return this.client.jsonRpc<CosmosAccountData>('getAccount', validated, options);\n  }\n\n  // A delegator's active delegations, each with its current balance.\n  async getDelegations(\n    chain: CosmosChainSlug | undefined,\n    delegator: string,\n    options?: RequestOptions,\n  ): Promise<CosmosDelegationsData> {\n    const validated = parseParams(getDelegationsParamsSchema, {\n      chain: this.resolve(chain),\n      delegator,\n    });\n    return this.client.jsonRpc<CosmosDelegationsData>('getDelegations', validated, options);\n  }\n\n  // A delegator's in-progress unbonding delegations and their entries.\n  async getUnbondingDelegations(\n    chain: CosmosChainSlug | undefined,\n    delegator: string,\n    options?: RequestOptions,\n  ): Promise<CosmosUnbondingDelegationsData> {\n    const validated = parseParams(getUnbondingDelegationsParamsSchema, {\n      chain: this.resolve(chain),\n      delegator,\n    });\n    return this.client.jsonRpc<CosmosUnbondingDelegationsData>(\n      'getUnbondingDelegations',\n      validated,\n      options,\n    );\n  }\n\n  // A delegator's outstanding rewards per validator plus the total. cosmoshub, osmosis, axelar, agoric.\n  async getStakingRewards(\n    chain: CosmosChainSlug | undefined,\n    delegator: string,\n    options?: RequestOptions,\n  ): Promise<CosmosStakingRewardsData> {\n    const validated = parseParams(getStakingRewardsParamsSchema, {\n      chain: this.resolve(chain),\n      delegator,\n    });\n    return this.client.jsonRpc<CosmosStakingRewardsData>('getStakingRewards', validated, options);\n  }\n\n  // The chain's validator set.\n  async getValidators(\n    chain?: CosmosChainSlug,\n    options?: RequestOptions,\n  ): Promise<CosmosValidatorsData> {\n    const validated = parseParams(getValidatorsParamsSchema, { chain: this.resolve(chain) });\n    return this.client.jsonRpc<CosmosValidatorsData>('getValidators', validated, options);\n  }\n\n  // A single validator by its `cosmosvaloper...` operator address.\n  async getValidator(\n    chain: CosmosChainSlug | undefined,\n    validatorAddr: string,\n    options?: RequestOptions,\n  ): Promise<CosmosValidatorData> {\n    const validated = parseParams(getValidatorParamsSchema, {\n      chain: this.resolve(chain),\n      validatorAddr,\n    });\n    return this.client.jsonRpc<CosmosValidatorData>('getValidator', validated, options);\n  }\n\n  // The staking pool totals (bonded vs not-bonded tokens).\n  async getStakingPool(\n    chain?: CosmosChainSlug,\n    options?: RequestOptions,\n  ): Promise<CosmosStakingPoolData> {\n    const validated = parseParams(getStakingPoolParamsSchema, { chain: this.resolve(chain) });\n    return this.client.jsonRpc<CosmosStakingPoolData>('getStakingPool', validated, options);\n  }\n\n  // Total supply of a Cosmos denom (e.g. `uatom`, `uosmo`).\n  async getDenomSupply(\n    chain: CosmosChainSlug | undefined,\n    denom: string,\n    options?: RequestOptions,\n  ): Promise<DenomSupplyData> {\n    const validated = parseParams(getDenomSupplyParamsSchema, {\n      chain: this.resolve(chain),\n      denom,\n    });\n    return this.client.jsonRpc<DenomSupplyData>('getDenomSupply', validated, options);\n  }\n\n  // Tendermint `block_results` for a height (begin/end-block events, per-tx results, validator updates).\n  async getBlockResults(\n    chain: CosmosChainSlug | undefined,\n    block: number,\n    options?: RequestOptions,\n  ): Promise<CosmosBlockResultsData> {\n    const validated = parseParams(getBlockResultsParamsSchema, {\n      chain: this.resolve(chain),\n      block,\n    });\n    return this.client.jsonRpc<CosmosBlockResultsData>('getBlockResults', validated, options);\n  }\n}\n","import type { RequestOptions } from '../client.js';\nimport {\n  type PortfolioData,\n  type SolanaPortfolioData,\n  type LogsData,\n  type TransfersData,\n  type TraceTransactionData,\n  getLogsParamsSchema,\n  getTransfersParamsSchema,\n  getReceiptParamsSchema,\n  getPortfolioParamsSchema,\n  getChainHealthParamsSchema,\n  traceTransactionParamsSchema,\n} from '@spectrum-nodes/api-spec/models';\nimport type { ChainSlug, EvmChainSlug, StarknetChainSlug, SolanaChainSlug } from '../types/chains.js';\nimport type { HistoricalQueryOptions } from '../types/client.js';\nimport type {\n  ChainHealthResult,\n  LogsFilter,\n  TransfersFilter,\n  ReceiptResult,\n} from '../types/index.js';\nimport { parseParams } from '../internals/validation.js';\nimport { splitHistoricalArgs } from '../internals/utils.js';\nimport { ChainNamespace } from './base.js';\n\n/** Logs, transfers, receipts, portfolio, and chain health */\nexport class DataNamespace extends ChainNamespace {\n  /** Query event logs. EVM + Starknet. */\n  async getLogs(\n    chain: EvmChainSlug | StarknetChainSlug | undefined,\n    filter?: LogsFilter,\n    options?: RequestOptions,\n  ): Promise<LogsData> {\n    const validated = parseParams(getLogsParamsSchema, {\n      chain: this.resolve(chain),\n      address: filter?.address,\n      topic0: filter?.topic0,\n      fromBlock: filter?.fromBlock !== undefined ? String(filter.fromBlock) : undefined,\n      toBlock: filter?.toBlock !== undefined ? String(filter.toBlock) : undefined,\n      cursor: filter?.cursor,\n    });\n    return this.client.jsonRpc<LogsData>('getLogs', validated, options);\n  }\n\n  /** Get token transfers for an address. EVM only. */\n  async getTransfers(\n    chain: EvmChainSlug | undefined,\n    address: string,\n    filter?: TransfersFilter,\n    options?: RequestOptions,\n  ): Promise<TransfersData> {\n    const validated = parseParams(getTransfersParamsSchema, {\n      chain: this.resolve(chain),\n      address,\n      fromBlock: filter?.fromBlock !== undefined ? String(filter.fromBlock) : undefined,\n      toBlock: filter?.toBlock !== undefined ? String(filter.toBlock) : undefined,\n      cursor: filter?.cursor,\n    });\n    return this.client.jsonRpc<TransfersData>('getTransfers', validated, options);\n  }\n\n  /** Get a transaction receipt by hash. */\n  async getReceipt(\n    chain: ChainSlug | undefined,\n    hash: string,\n    options?: RequestOptions,\n  ): Promise<ReceiptResult> {\n    const validated = parseParams(getReceiptParamsSchema, { chain: this.resolve(chain), hash });\n    return this.client.jsonRpc<ReceiptResult>('getReceipt', validated, options);\n  }\n\n  /** Get portfolio for an address on a chain. EVM only. */\n  async getPortfolio(\n    chain: EvmChainSlug | SolanaChainSlug | undefined,\n    address: string,\n    paramsOrOptions?: HistoricalQueryOptions | RequestOptions,\n    options?: RequestOptions,\n  ): Promise<PortfolioData | SolanaPortfolioData> {\n    const { params, options: requestOptions } = splitHistoricalArgs(paramsOrOptions, options);\n    const validated = parseParams(getPortfolioParamsSchema, {\n      chain: this.resolve(chain),\n      address,\n      blockHeight: params?.blockHeight,\n    });\n    return this.client.jsonRpc<PortfolioData | SolanaPortfolioData>(\n      'getPortfolio',\n      validated,\n      requestOptions,\n    );\n  }\n\n  /** Get health status for a specific chain. */\n  async getChainHealth(chain?: ChainSlug, options?: RequestOptions): Promise<ChainHealthResult> {\n    const validated = parseParams(getChainHealthParamsSchema, { chain: this.resolve(chain) });\n    return this.client.jsonRpc<ChainHealthResult>('getChainHealth', validated, options);\n  }\n\n  /**\n   * Trace a transaction's internal execution. EVM + Starknet.\n   * Returns call traces showing internal calls, delegatecalls, and value transfers.\n   */\n  async traceTransaction(\n    chain: EvmChainSlug | StarknetChainSlug | undefined,\n    hash: string,\n    options?: RequestOptions,\n  ): Promise<TraceTransactionData> {\n    const validated = parseParams(traceTransactionParamsSchema, {\n      chain: this.resolve(chain),\n      hash,\n    });\n    return this.client.jsonRpc<TraceTransactionData>('traceTransaction', validated, options);\n  }\n}\n","import type { HttpClient, RequestOptions } from '../client.js';\nimport {\n  type GetMarketplaceContractParams,\n  type ListMarketplaceMethodsData,\n  type ListMarketplaceMethodsParams,\n  type MarketplaceContractData,\n  type MarketplaceMethodCallData,\n  type MarketplaceMethodCallParams,\n  getMarketplaceContractParamsSchema,\n  listMarketplaceMethodsParamsSchema,\n  marketplaceMethodCallParamsSchema,\n  marketplaceMethodNameSchema,\n} from '@spectrum-nodes/api-spec/models';\nimport { parseParams } from '../internals/validation.js';\n\n/** Marketplace custom ABI discovery, reads, and simulations */\nexport class MarketplaceNamespace {\n  constructor(private readonly client: HttpClient) {}\n\n  /** List published marketplace methods (functions and events). */\n  async listMethods(\n    params: ListMarketplaceMethodsParams = {},\n    options?: RequestOptions,\n  ): Promise<ListMarketplaceMethodsData> {\n    const validated = parseParams(listMarketplaceMethodsParamsSchema, params);\n    return this.client.jsonRpc<ListMarketplaceMethodsData>(\n      'listMarketplaceMethods',\n      validated,\n      options,\n    );\n  }\n\n  /** Fetch one marketplace contract and its deployments by app id. */\n  async getContract(appId: string, options?: RequestOptions): Promise<MarketplaceContractData> {\n    const validated = parseParams(getMarketplaceContractParamsSchema, {\n      appId,\n    } satisfies GetMarketplaceContractParams);\n    return this.client.jsonRpc<MarketplaceContractData>(\n      'getMarketplaceContract',\n      validated,\n      options,\n    );\n  }\n\n  /**\n   * Call a published marketplace method by its JSON-RPC name\n   * (`spectrum_<appId>_[<chain>_]<deploymentName>_<operation>_<abiName>`).\n   * Operation is `call` (eth_call), `simulateCall` (eth_simulateV1), `getLogs`,\n   * or reserved `write`. Concrete deployments resolve chain and address from\n   * the method name. Template methods (no chain segment) require `chain` and\n   * `address` in `params`.\n   */\n  async call(\n    method: string,\n    params: Partial<MarketplaceMethodCallParams> = {},\n    options?: RequestOptions,\n  ): Promise<MarketplaceMethodCallData> {\n    const methodName = parseParams(marketplaceMethodNameSchema, method);\n    const validated = parseParams(marketplaceMethodCallParamsSchema, params);\n    return this.client.jsonRpc<MarketplaceMethodCallData>(methodName, validated, options);\n  }\n}\n","import type { HttpClient, RequestOptions } from '../client.js';\nimport {\n  type GetNetworkCalendarData,\n  type GetNetworkCalendarParams,\n  getNetworkCalendarParamsSchema,\n} from '@spectrum-nodes/api-spec/models';\nimport { parseParams } from '../internals/validation.js';\n\n/** Approved network calendar entries (releases / upgrades). */\nexport class NetworkCalendarNamespace {\n  constructor(private readonly client: HttpClient) {}\n\n  /**\n   * List approved network calendar entries (releases / upgrades).\n   * Optional filters: `month` (`YYYY-MM`), `day` (`YYYY-MM-DD` or `\"today\"`),\n   * `chain` (network slug, e.g. `\"ethereum\"`).\n   */\n  async getNetworkCalendar(\n    params: GetNetworkCalendarParams = {},\n    options?: RequestOptions,\n  ): Promise<GetNetworkCalendarData> {\n    const validated = parseParams(getNetworkCalendarParamsSchema, params);\n    return this.client.jsonRpc<GetNetworkCalendarData>('getNetworkCalendar', validated, options);\n  }\n}\n","import type { ChainSlug } from '../types/chains.js';\n\n/** Shared mutable reference to the current default chain. */\nexport class ChainRef {\n  current?: ChainSlug;\n\n  constructor(initial?: ChainSlug) {\n    this.current = initial;\n  }\n}\n","import type { SpectrumConfig, ResolvedConfig } from '../types/config.js';\n\n/** Pull and trim the user-supplied `api` URL; returns undefined when missing or whitespace-only. */\nfunction getApiInput(config: SpectrumConfig): string | undefined {\n  return config.api?.trim();\n}\n\n/** Validate and normalize a full Spectrum API URL into `baseUrl`. The entire URL — including any path prefix — is preserved; endpoint paths are appended to it. */\nfunction parseApiInput(api: string): Pick<ResolvedConfig, 'baseUrl'> {\n  const trimmedApi = api.trim();\n\n  if (!/^https?:\\/\\//i.test(trimmedApi)) {\n    throw new Error('api must be a full URL');\n  }\n\n  return { baseUrl: new URL(trimmedApi).toString() };\n}\n\n/**\n * Validate user input and apply defaults to produce a `ResolvedConfig`.\n *\n * Throws:\n * - `Error('api is required')` if `api` is missing or blank\n * - `Error('api must be a full URL')` if `api` is not http/https\n */\nexport function resolveConfig(config: SpectrumConfig): ResolvedConfig {\n  const api = getApiInput(config);\n  if (!api) {\n    throw new Error('api is required');\n  }\n\n  const { baseUrl } = parseApiInput(api);\n\n  return {\n    baseUrl,\n    defaultChain: config.defaultChain,\n    timeout: config.timeout ?? 30_000,\n    retries: config.retries ?? 3,\n    cache: {\n      enabled: config.cache?.enabled ?? true,\n      ttl: config.cache?.ttl ?? 5_000,\n      maxEntries: config.cache?.maxEntries ?? 1024,\n      overrides: config.cache?.overrides ?? {},\n    },\n    logging: {\n      level: config.logging?.level ?? 'warn',\n    },\n    hooks: config.hooks ?? {},\n  };\n}\n","import type { SpectrumConfig } from './types/config.js';\nimport type { ChainSlug } from './types/chains.js';\nimport type { RequestOptions } from './types/client.js';\nimport type { JsonRpcRequest } from '@spectrum-nodes/api-spec/models';\nimport type { JsonRpcResponse } from './types/index.js';\nimport { MAX_JSON_RPC_BATCH_SIZE } from '@spectrum-nodes/api-spec/constants';\nimport { HttpClient } from './client.js';\nimport { CoreNamespace } from './namespaces/core.js';\nimport { TokensNamespace } from './namespaces/tokens.js';\nimport { YieldsNamespace } from './namespaces/yields.js';\nimport { UtilsNamespace } from './namespaces/utils.js';\nimport { PricesNamespace } from './namespaces/prices.js';\nimport { DefiNamespace } from './namespaces/defi.js';\nimport { NftsNamespace } from './namespaces/nfts.js';\nimport { EnsNamespace } from './namespaces/ens.js';\nimport { RegistryNamespace } from './namespaces/registry.js';\nimport { RpcNamespace } from './namespaces/rpc.js';\nimport { ContractsNamespace } from './namespaces/contracts.js';\nimport { SolanaNamespace } from './namespaces/solana.js';\nimport { CosmosNamespace } from './namespaces/cosmos.js';\nimport { DataNamespace } from './namespaces/data.js';\nimport { MarketplaceNamespace } from './namespaces/marketplace.js';\nimport { NetworkCalendarNamespace } from './namespaces/network-calendar.js';\nimport { ChainRef } from './internals/chain-ref.js';\nimport { resolveConfig } from './internals/config.js';\nimport { ValidationError } from './types/errors.js';\n\n/**\n * Top-level entry point for the Spectrum SDK.\n *\n * Holds a shared {@link HttpClient} + {@link ChainRef} and exposes typed\n * namespaces (`core`, `tokens`, `defi`, `cosmos`, `marketplace`, `networkCalendar`, …) plus low-level\n * escape hatches ({@link Spectrum.jsonRpc}, `rpc.*`).\n *\n * @example\n * const sdk = new Spectrum('https://spectrum-01.simplystaking.xyz/MY_KEY/');\n * const eth = await sdk.tokens.getBalance('ethereum', '0xd8dA...');\n */\nexport class Spectrum {\n  readonly core: CoreNamespace;\n  readonly tokens: TokensNamespace;\n  readonly yields: YieldsNamespace;\n  readonly utils: UtilsNamespace;\n  readonly prices: PricesNamespace;\n  readonly defi: DefiNamespace;\n  readonly nfts: NftsNamespace;\n  readonly ens: EnsNamespace;\n  readonly registry: RegistryNamespace;\n  readonly rpc: RpcNamespace;\n  readonly contracts: ContractsNamespace;\n  readonly solana: SolanaNamespace;\n  readonly cosmos: CosmosNamespace;\n  readonly data: DataNamespace;\n  readonly marketplace: MarketplaceNamespace;\n  readonly networkCalendar: NetworkCalendarNamespace;\n\n  private readonly client: HttpClient;\n  private readonly chainRef: ChainRef;\n\n  /**\n   * Build a new SDK instance.\n   *\n   * Accepts either a {@link SpectrumConfig} object or the bare api URL string\n   * as a shortcut (`new Spectrum(api)` ≡ `new Spectrum({ api })`).\n   *\n   * Throws if `api` is missing or isn't an http(s) URL.\n   */\n  constructor(config: SpectrumConfig | string) {\n    const cfg: SpectrumConfig = typeof config === 'string' ? { api: config } : config;\n    const resolvedConfig = resolveConfig(cfg);\n    this.client = new HttpClient(resolvedConfig);\n    this.chainRef = new ChainRef(resolvedConfig.defaultChain);\n\n    this.core = new CoreNamespace(this.client, this.chainRef);\n    this.tokens = new TokensNamespace(this.client, this.chainRef);\n    this.yields = new YieldsNamespace(this.client);\n    this.utils = new UtilsNamespace(this.client);\n    this.prices = new PricesNamespace(this.client);\n    this.defi = new DefiNamespace(this.client, this.chainRef);\n    this.nfts = new NftsNamespace(this.client, this.chainRef);\n    this.ens = new EnsNamespace(this.client);\n    this.registry = new RegistryNamespace(this.client);\n    this.rpc = new RpcNamespace(this.client, this.chainRef);\n    this.contracts = new ContractsNamespace(this.client, this.chainRef);\n    this.solana = new SolanaNamespace(this.client);\n    this.cosmos = new CosmosNamespace(this.client, this.chainRef);\n    this.data = new DataNamespace(this.client, this.chainRef);\n    this.marketplace = new MarketplaceNamespace(this.client);\n    this.networkCalendar = new NetworkCalendarNamespace(this.client);\n  }\n\n  /**\n   * Send a raw JSON-RPC request (or batch) to Spectrum's `POST /v1` endpoint.\n   *\n   * Escape hatch for cases the typed namespaces don't cover — e.g. calling a\n   * server method the SDK doesn't wrap yet. Batches are capped at\n   * `MAX_JSON_RPC_BATCH_SIZE` (50); larger batches throw {@link ValidationError}.\n   */\n  async jsonRpc(\n    request: JsonRpcRequest | JsonRpcRequest[],\n    options?: RequestOptions,\n  ): Promise<JsonRpcResponse | JsonRpcResponse[]> {\n    if (Array.isArray(request) && request.length > MAX_JSON_RPC_BATCH_SIZE) {\n      throw new ValidationError(\n        'request',\n        `Batch size exceeds maximum of ${MAX_JSON_RPC_BATCH_SIZE} requests`,\n      );\n    }\n\n    return this.client.post<JsonRpcResponse | JsonRpcResponse[]>(request, options);\n  }\n\n  /**\n   * Set the default chain used by methods called with `chain: undefined`.\n   * Returns `this` so calls can be chained, e.g. `new Spectrum(cfg).setChain('base')`.\n   */\n  setChain(chain: ChainSlug): this {\n    this.chainRef.current = chain;\n    return this;\n  }\n\n  /** Current default chain, or `undefined` if never configured. */\n  getChain(): ChainSlug | undefined {\n    return this.chainRef.current;\n  }\n\n  /** Drop every cached response. Use after writes that invalidate read state. */\n  clearCache(): void {\n    this.client.clearCache();\n  }\n}\n"]}