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[];
|
||
|
}
|