36 lines
1021 B
TypeScript
36 lines
1021 B
TypeScript
import type { IStockPrice, IStockQuoteRequest, IStockBatchQuoteRequest } from './stockprice.js';
|
|
|
|
export interface IStockProvider {
|
|
name: string;
|
|
priority: number;
|
|
|
|
fetchPrice(request: IStockQuoteRequest): Promise<IStockPrice>;
|
|
fetchPrices(request: IStockBatchQuoteRequest): Promise<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[];
|
|
} |