import { Address } from '@hyperlane-xyz/utils'; import { ChainMetadata } from '../metadata/chainMetadataTypes.js'; import { ChainMap, ChainName } from '../types.js'; export interface TokenPriceGetter { getTokenPrice(chain: ChainName): Promise; getTokenExchangeRate(base: ChainName, quote: ChainName): Promise; } type TokenPriceCacheEntry = { price: number; timestamp: Date; }; declare class TokenPriceCache { protected cache: Map; protected freshSeconds: number; protected evictionSeconds: number; constructor(freshSeconds?: number, evictionSeconds?: number); put(id: string, price: number): void; isFresh(id: string): boolean; fetch(id: string): number; } export declare class CoinGeckoTokenPriceGetter implements TokenPriceGetter { protected cache: TokenPriceCache; protected apiKey?: string; protected sleepMsBetweenRequests: number; protected metadata: ChainMap; constructor({ chainMetadata, apiKey, expirySeconds, sleepMsBetweenRequests, }: { chainMetadata: ChainMap; apiKey?: string; expirySeconds?: number; sleepMsBetweenRequests?: number; }); getTokenPrice(chain: ChainName, currency?: string): Promise; getAllTokenPrices(currency?: string): Promise>; getTokenExchangeRate(base: ChainName, quote: ChainName, currency?: string): Promise; private getTokenPrices; getTokenPriceByIds(ids: string[], currency?: string): Promise; fetchPriceDataByContractAddress(chain: ChainName, contractAddress: Address): Promise; fetchPriceData(ids: string[], currency: string): Promise; private get; } export {}; //# sourceMappingURL=token-prices.d.ts.map