import { LookupItem } from '@ghostfolio/api/app/symbol/interfaces/lookup-item.interface'; import { IDataProviderHistoricalResponse, IDataProviderResponse } from '@ghostfolio/api/services/interfaces/interfaces'; import { Granularity } from '@ghostfolio/common/types'; import { DataSource, SymbolProfile } from '@prisma/client'; export interface DataProviderInterface { canHandle(symbol: string): boolean; getAssetProfile(aSymbol: string): Promise>; getDividends({ from, granularity, symbol, to }: GetDividendsParams): Promise<{ [date: string]: IDataProviderHistoricalResponse; }>; getHistorical({ from, granularity, requestTimeout, symbol, to }: GetHistoricalParams): Promise<{ [symbol: string]: { [date: string]: IDataProviderHistoricalResponse }; }>; // TODO: Return only one symbol getMaxNumberOfSymbolsPerRequest?(): number; getName(): DataSource; getQuotes({ requestTimeout, symbols }: GetQuotesParams): Promise<{ [symbol: string]: IDataProviderResponse }>; getTestSymbol(): string; search({ includeIndices, query }: GetSearchParams): Promise<{ items: LookupItem[] }>; } export interface GetDividendsParams { from: Date; granularity?: Granularity; symbol: string; to: Date; } export interface GetHistoricalParams { from: Date; granularity?: Granularity; requestTimeout?: number; symbol: string; to: Date; } export interface GetQuotesParams { requestTimeout?: number; symbols: string[]; } export interface GetSearchParams { includeIndices?: boolean; query: string; }