@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
TypeScript
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 {};