import { ApiEndpoints, Session } from '../session/session'; import { EndpointResponse } from '../delivery/endpoint-request'; import { ConfigEndpoint } from '../config'; import { PricingStreamEvents } from './pricing/stream'; import { HistoricalPricingStreamEvents } from './historical-pricing/stream'; import { StreamType, TimeSeriesStreamEvents } from './historical-pricing/time-series/stream'; export interface ContentDefinition { getData(session?: Session): Promise>; getInstrument?(): TParam; } export interface ContentProvider { readonly apiGroup: keyof ApiEndpoints; readonly endpointName: string; getEndpointPath(pathName: string): string; getEndpointConfig(): ConfigEndpoint | undefined; toContentResponse(endpointResponse: EndpointResponse, buildTable?: () => TTable): ContentResponse; } export interface ContentObjectResponse { raw: any; table?: TTable; [index: string]: any; } export type ContentResponse> = EndpointResponse; export interface ExtendedParams { extendedParams?: { [key: string]: any; }; } export interface StreamDefinition { getStream(session?: Session, api?: string): TStream; } export interface TableBuilder { build(data: TData): TTable; } export interface DataInterface { data: TData; headers: THeaders; } export interface TableInterface { [key: string]: TRow; } export type PossibleStreamEvents = PricingStreamEvents | HistoricalPricingStreamEvents | TimeSeriesStreamEvents; export interface BaseStream { onRefresh(cb: StreamEvents['Refresh']): this; onUpdate(cb: StreamEvents['Update']): this; onStatus(cb: StreamEvents['Status']): this; onComplete(cb: StreamEvents['Complete']): this; onError(cb: StreamEvents['error']): this; open(params?: OpenStreamParams): Promise; }