/** * Shared CoinGecko HTTP client + short-TTL cache. * * Carved out of the original `src/trading/data.ts` so every CoinGecko * fetcher (price, ohlcv, trending, markets) shares the same rate-limit * cooldown, user-agent, timeout, and in-memory cache. */ import type { ProviderError } from '../standard-models.js'; export declare const TICKER_TO_ID: Record; /** For tests + cache invalidation. */ export declare function clearIdResolutionCache(): void; /** * Resolve a ticker to its CoinGecko id. Synchronous — checks the static * map and the dynamic cache. Falls through to lowercase as a final guess. * * Use this from `transformData` (which is sync). Use `resolveProviderIdAsync` * from `fetchData` to populate the cache before the sync read happens. */ export declare function resolveProviderId(ticker: string): string; /** * Like `resolveProviderId`, but on a static-map miss, hits CoinGecko's * `/search?query=` to find the canonical id. Caches the result for 7 days * so `resolveProviderId` (sync) can read it back during `transformData`. * * Why not always async: `transformData` is part of the Fetcher contract * and is intentionally sync. `fetchData` is async, runs first, and is the * right place to do network resolution. The two share state via the cache. */ export declare function resolveProviderIdAsync(ticker: string): Promise; export declare function cached(key: string, ttlMs: number, fn: () => Promise): Promise; /** For tests: wipe every cached entry. */ export declare function clearCache(): void; export declare function coingeckoGet(path: string): Promise; export declare const TTL: { readonly price: number; readonly ohlcv: number; readonly trending: number; readonly markets: number; };