UNPKG

@fin.cx/opendata

Version:

A comprehensive TypeScript library for accessing business data and real-time financial information. Features include German company data management with MongoDB integration, JSONL bulk processing, automated Handelsregister interactions, and real-time stoc

78 lines (77 loc) 2.47 kB
import type { IStockProvider, IProviderConfig, IProviderRegistry } from './interfaces/provider.js'; import type { IStockPrice, IStockDataRequest } from './interfaces/stockprice.js'; interface ISimpleQuoteRequest { ticker: string; } interface ISimpleBatchRequest { tickers: string[]; } export declare class StockPriceService implements IProviderRegistry { private providers; private cache; private logger; private cacheConfig; constructor(cacheConfig?: { ttl?: number; maxEntries?: number; }); /** * Get data-type aware TTL for smart caching */ private getCacheTTL; /** * Convert interval to milliseconds */ private getIntervalMs; register(provider: IStockProvider, config?: IProviderConfig): void; unregister(providerName: string): void; getProvider(name: string): IStockProvider | undefined; getAllProviders(): IStockProvider[]; getEnabledProviders(): IStockProvider[]; /** * Convenience method: Get current price for a single ticker */ getPrice(request: ISimpleQuoteRequest): Promise<IStockPrice>; /** * Convenience method: Get current prices for multiple tickers */ getPrices(request: ISimpleBatchRequest): Promise<IStockPrice[]>; /** * New unified data fetching method supporting all request types */ getData(request: IStockDataRequest): Promise<IStockPrice | IStockPrice[]>; /** * Try incremental fetch: Only fetch NEW data since last cached timestamp * Returns merged result if successful, null if incremental fetch not applicable */ private tryIncrementalFetch; /** * Deduplicate array of prices by timestamp, keeping the latest data for each timestamp */ private deduplicateByTimestamp; /** * Get TTL based on request type and result */ private getRequestTTL; /** * Get human-readable description of request */ private getRequestDescription; checkProvidersHealth(): Promise<Map<string, boolean>>; getProviderStats(): Map<string, { successCount: number; errorCount: number; lastError?: string; lastErrorTime?: Date; }>; clearCache(): void; setCacheTTL(ttl: number): void; private fetchWithRetry; /** * New cache key generation for discriminated union requests */ private getDataCacheKey; private getFromCache; private addToCache; } export {};