import type { IStockPrice, IStockQuoteRequest, IStockBatchQuoteRequest } from './stockprice.js'; export interface IStockProvider { name: string; priority: number; fetchPrice(request: IStockQuoteRequest): Promise; fetchPrices(request: IStockBatchQuoteRequest): 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; } export interface IProviderRegistry { register(provider: IStockProvider, config?: IProviderConfig): void; unregister(providerName: string): void; getProvider(name: string): IStockProvider | undefined; getAllProviders(): IStockProvider[]; getEnabledProviders(): IStockProvider[]; }