import type { IStockPrice, IStockDataRequest } from './stockprice.js'; export interface IStockProvider { name: string; priority: number; fetchData(request: IStockDataRequest): Promise; isAvailable(): Promise; supportsMarket?(market: string): boolean; supportsTicker?(ticker: string): boolean; readonly requiresAuth: boolean; readonly rateLimit?: { requestsPerMinute: number; requestsPerDay?: number; }; } export interface IProviderConfig { enabled: boolean; priority?: number; apiKey?: string; timeout?: number; retryAttempts?: number; retryDelay?: number; maxRecords?: number; // Maximum records to fetch per request (default: 10000) defaultIntradayLimit?: number; // Default limit for intraday requests without explicit limit (default: 1000) } export interface IProviderRegistry { register(provider: IStockProvider, config?: IProviderConfig): void; unregister(providerName: string): void; getProvider(name: string): IStockProvider | undefined; getAllProviders(): IStockProvider[]; getEnabledProviders(): IStockProvider[]; }