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