@dxfeed/dxlink-indichart
Version:
dxLink INDICHART for receiving candle and indicator data
108 lines (107 loc) • 4.52 kB
TypeScript
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;
}