tinkoff-invest-api
Version:
Node.js SDK for Tinkoff Invest API
38 lines • 2.17 kB
TypeScript
/**
* Класс подписки в стриме market.
* Позволяет ожидать результата подписки и вызывать обработчики для figi, заданных при подписке.
* See: https://github.com/vitalets/tinkoff-invest-api/issues/6
*/
import { Candle, CandleSubscription, InfoSubscription, LastPrice, LastPriceSubscription, MarketDataRequest, MarketDataResponse, OrderBook, OrderBookSubscription, SubscriptionAction, Trade, TradeSubscription, TradingStatus } from '../generated/marketdata.js';
type ResponseSubscription = CandleSubscription | TradeSubscription | OrderBookSubscription | LastPriceSubscription | InfoSubscription;
type ResponseData = Candle | Trade | OrderBook | LastPrice | TradingStatus;
type MarketSubscriptionOptions<S, D> = {
buildRequest: (subscriptionAction: SubscriptionAction) => MarketDataRequest;
buildResponse: (res: MarketDataResponse) => UniversalMarketResponse<S, D>;
dataHandler: (data: D) => unknown;
requestKeys: string[];
};
/**
* Универсальный ответ (одинаковые поля для разных типов подписок)
*/
export type UniversalMarketResponse<S, D> = {
trackingId?: string;
subscriptions?: S[];
subscriptionKeys?: string[];
data?: D;
dataKey?: string;
};
export declare class MarketSubscription<S extends ResponseSubscription, D extends ResponseData> {
protected options: MarketSubscriptionOptions<S, D>;
protected waitingStatusResolve?: () => unknown;
protected waitingStatusReject?: (error: Error) => unknown;
constructor(options: MarketSubscriptionOptions<S, D>);
getRequest(subscriptionAction: SubscriptionAction): MarketDataRequest;
handler(res: MarketDataResponse): void;
waitStatus(): Promise<void>;
protected statusHandler({ subscriptions, subscriptionKeys, trackingId }: UniversalMarketResponse<S, D>): void;
protected dataHandler({ data, dataKey }: UniversalMarketResponse<S, D>): void;
protected buildSubscriptionError(errorSubscriptions: S[], trackingId?: string): Error;
}
export {};
//# sourceMappingURL=market-subscription.d.ts.map