/** * Registry — Protocol discovery, contracts, chain metadata. * * Run: npx tsx examples/09-registry.ts */ import { Spectrum } from '@spectrumnodes/sdk'; const spectrum = new Spectrum({ api: process.env.SPECTRUM_API! }); async function main() { // --- getProtocols --- const protocols = await spectrum.registry.getProtocols({ category: 'lending' }); console.log('Lending protocols:'); for (const p of protocols) { console.log(` ${p.name} (${p.slug})`); } // --- getProtocol --- const aave = await spectrum.registry.getProtocol('aave-v3'); console.log(`\nAave V3: ${aave.name}`); console.log(` Category: ${aave.category}`); console.log(` Chains: ${aave.chains?.join(', ')}`); // --- getProtocolContracts --- const contracts = await spectrum.registry.getProtocolContracts('aave-v3', { chain: 'ethereum' }); const contractEntries = Object.entries(contracts.contracts); console.log(`\nAave V3 contracts on Ethereum: ${contractEntries.length}`); for (const [key, c] of contractEntries.slice(0, 3)) { console.log(` ${c.name}: ${c.address ?? key}`); } // --- getAddress --- const addr = await spectrum.registry.getAddress('aave-v3', 'pool', 'ethereum'); console.log(`\nAave V3 pool on Ethereum: ${addr.address}`); // --- getCategories --- const categories = await spectrum.registry.getCategories(); console.log(`\nAvailable categories: ${categories.join(', ')}`); // --- getChains --- const chains = await spectrum.registry.getChains(); console.log(`Available chains: ${chains.length}`); } main().catch(console.error);