/**
 * Base data source implementation
 */
import type { StockInfo, MarketOverview, HistoricalData, SectorPerformance, SearchResult, DataSourcePriority, DataSourceStats } from '../types';
export declare abstract class DataSource {
    protected name: string;
    protected priority: DataSourcePriority;
    protected timeout: number;
    protected stats: DataSourceStats;
    constructor(name: string, priority: DataSourcePriority, timeout?: number);
    abstract getStockInfo(ticker: string): Promise<StockInfo | null>;
    abstract getMarketOverview(): Promise<MarketOverview | null>;
    abstract getHistoricalData(ticker: string, period: string): Promise<HistoricalData | null>;
    abstract getSectorPerformance(): Promise<SectorPerformance | null>;
    abstract searchStocks(query: string): Promise<SearchResult[]>;
    protected makeRequest<T>(requestName: string, requestFn: () => Promise<T>): Promise<T | null>;
    private createTimeoutPromise;
    private updateStats;
    getStats(): DataSourceStats;
    getName(): string;
    getPriority(): DataSourcePriority;
    isHealthy(): boolean;
}
export declare class DataSourceManager {
    private sources;
    addSource(source: DataSource): void;
    getStockInfo(ticker: string): Promise<StockInfo | null>;
    getMarketOverview(): Promise<MarketOverview | null>;
    getHistoricalData(ticker: string, period: string): Promise<HistoricalData | null>;
    getSectorPerformance(): Promise<SectorPerformance | null>;
    searchStocks(query: string): Promise<SearchResult[]>;
    private tryDataSources;
    getStats(): Record<string, DataSourceStats>;
    getHealthySources(): DataSource[];
}
//# sourceMappingURL=base.d.ts.map