35 lines
930 B
TypeScript
35 lines
930 B
TypeScript
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;
|
|
}
|
|
|
|
export interface IProviderRegistry {
|
|
register(provider: IStockProvider, config?: IProviderConfig): void;
|
|
unregister(providerName: string): void;
|
|
getProvider(name: string): IStockProvider | undefined;
|
|
getAllProviders(): IStockProvider[];
|
|
getEnabledProviders(): IStockProvider[];
|
|
} |