UNPKG

@dxfeed/dxlink-indichart

Version:

dxLink INDICHART for receiving candle and indicator data

108 lines (107 loc) 4.52 kB
import { type DXLinkChannel, DXLinkChannelState, type DXLinkChannelStateChangeListener, type DXLinkClient, DXLinkLogLevel } from '@dxfeed/dxlink-core'; import { type DXLinkIndiChartCandle, type DXLinkIndiChartConfig, type DXLinkIndiChartIndicators, type DXLinkIndiChartIndicatorsParameters, type DXLinkIndiChartIndicatorsData, type DXLinkIndiChartSetup, type DXLinkIndiChartSubscription, type DXLinkIndiChartIndicatorsStates } from './messages'; export type DXLinkIndiChartDataListener = (candles: DXLinkIndiChartCandle[], indicators: DXLinkIndiChartIndicatorsData, reset: boolean, pending: boolean) => void; export type DXLinkIndiChartIndicatorsStateListener = (indicators: DXLinkIndiChartIndicatorsStates) => void; /** * dxLink Chart service. */ export interface DXLinkIndiChartRequester { /** * Unique identifier of the Chart channel. */ readonly id: number; /** * Get current channel of the Chart. * Note: inaproppriate usage of the channel can lead to unexpected behavior. * @see {DXLinkChannel} */ getChannel(): DXLinkChannel; setSubscription(subscription: DXLinkIndiChartSubscription, indicatorsParameters: DXLinkIndiChartIndicatorsParameters): void; setup(setup: DXLinkIndiChartSetup): void; getConfig(): DXLinkIndiChartConfig | null; getIndicators(): DXLinkIndiChartIndicatorsStates | null; /** * Add a listener for the Chart channel events received from the channel. */ addDataListener(listener: DXLinkIndiChartDataListener): void; /** * Remove a listener for the Chart channel events received from the channel. */ removeDataListener(listener: DXLinkIndiChartDataListener): void; /** * Add a listener for the Chart indicators state changes received from the channel. */ addIndicatorsStateChangeListener(listener: DXLinkIndiChartIndicatorsStateListener): void; /** * Remove a listener for the Chart indicators state changes received from the channel. */ removeIndicatorsStateChangeListener(listener: DXLinkIndiChartIndicatorsStateListener): void; /** * Close the Chart channel. */ close(): void; } /** * Options for the {@link DXLinkIndiChart} instance. */ export interface DXLinkIndiChartOptions { /** * Log level for the Chart. */ logLevel: DXLinkLogLevel; } /** * dxLink Indi Chart service implementation. */ export declare class DXLinkIndiChart implements DXLinkIndiChartRequester { /** * Unique identifier of the Chart channel. */ readonly id: number; private readonly dataListeners; private readonly indicatorsStateListeners; private readonly logger; private readonly channel; private lastSubscription; private lastSetup; private lastConfig; private indicators; /** * Allows to create {@link DXLinkIndiChart} instance with the specified {@link ChartContract} for the given {@link DXLinkWebSocketClient}. */ constructor(client: DXLinkClient, indicators: DXLinkIndiChartIndicators); getChannel: () => DXLinkChannel; getState: () => DXLinkChannelState; addStateChangeListener: (listener: DXLinkChannelStateChangeListener) => void; removeStateChangeListener: (listener: DXLinkChannelStateChangeListener) => void; addIndicatorsStateChangeListener: (listener: DXLinkIndiChartIndicatorsStateListener) => Set<DXLinkIndiChartIndicatorsStateListener>; removeIndicatorsStateChangeListener: (listener: DXLinkIndiChartIndicatorsStateListener) => boolean; setup: (setup: DXLinkIndiChartSetup) => void; getConfig: () => DXLinkIndiChartConfig | null; getIndicators: () => DXLinkIndiChartIndicatorsStates | null; close: () => void; setSubscription: (subscription: DXLinkIndiChartSubscription, indicatorsParameters: DXLinkIndiChartIndicatorsParameters) => void; removeIndicators: (indicators: string[]) => void; addDataListener: (listener: DXLinkIndiChartDataListener) => void; removeDataListener: (listener: DXLinkIndiChartDataListener) => void; /** * Process message received in the channel. */ private processMessage; /** * Process data received from the channel. */ private processData; /** * Process channel status changes from the channel. */ private processStatus; /** * Process error received from the channel. */ private processError; /** * Reconfigure the CHART channel after the channel re-open. */ private reconfigure; }